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

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

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

@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.533 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.534 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.535 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.536 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.537 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.538 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.539 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.540 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.541 = external hidden unnamed_addr constant [42 x i8], align 1

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

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

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

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

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

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

declare i32 @printf(ptr noundef, ...) #1

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) #1

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

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

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

declare noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef) #1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z10testlinregbPN11alglib_impl8ae_stateE(i1 noundef zeroext %0, ptr noundef %1) #4 {
  %3 = alloca i8, align 1
  %4 = alloca ptr, align 8
  %5 = alloca %"struct.alglib_impl::ae_frame", align 8
  %6 = alloca double, align 8
  %7 = alloca i64, align 8
  %8 = alloca i64, align 8
  %9 = alloca i64, align 8
  %10 = alloca double, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  %14 = alloca i64, align 8
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca i64, align 8
  %26 = alloca i64, 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_vector", align 8
  %30 = alloca %"struct.alglib_impl::ae_vector", align 8
  %31 = alloca %"struct.alglib_impl::ae_vector", align 8
  %32 = alloca %"struct.alglib_impl::ae_vector", 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 %"struct.alglib_impl::ae_vector", align 8
  %38 = alloca %"struct.alglib_impl::linearmodel", align 8
  %39 = alloca %"struct.alglib_impl::linearmodel", align 8
  %40 = alloca %"struct.alglib_impl::linearmodel", align 8
  %41 = alloca %"struct.alglib_impl::ae_vector", align 8
  %42 = alloca %"struct.alglib_impl::ae_vector", align 8
  %43 = alloca double, align 8
  %44 = alloca double, align 8
  %45 = alloca i8, align 1
  %46 = alloca double, align 8
  %47 = alloca double, align 8
  %48 = alloca double, align 8
  %49 = alloca double, align 8
  %50 = alloca double, align 8
  %51 = alloca double, align 8
  %52 = alloca double, align 8
  %53 = alloca double, align 8
  %54 = alloca double, align 8
  %55 = alloca double, align 8
  %56 = alloca double, align 8
  %57 = alloca double, align 8
  %58 = alloca double, align 8
  %59 = alloca i64, align 8
  %60 = alloca %"struct.alglib_impl::ae_vector", align 8
  %61 = alloca %"struct.alglib_impl::ae_vector", align 8
  %62 = alloca %"struct.alglib_impl::ae_vector", align 8
  %63 = alloca %"struct.alglib_impl::lrreport", align 8
  %64 = alloca %"struct.alglib_impl::lrreport", align 8
  %65 = alloca double, align 8
  %66 = alloca double, align 8
  %67 = alloca double, align 8
  %68 = alloca double, align 8
  %69 = alloca double, align 8
  %70 = alloca double, align 8
  %71 = alloca double, align 8
  %72 = alloca double, align 8
  %73 = alloca double, align 8
  %74 = alloca double, align 8
  %75 = alloca double, align 8
  %76 = alloca i8, align 1
  %77 = alloca double, align 8
  %78 = alloca double, align 8
  %79 = alloca double, align 8
  %80 = alloca double, align 8
  %81 = alloca double, align 8
  %82 = alloca double, align 8
  %83 = alloca double, align 8
  %84 = alloca double, align 8
  %85 = alloca double, align 8
  %86 = alloca i8, align 1
  %87 = alloca i8, align 1
  %88 = alloca i8, align 1
  %89 = alloca i8, align 1
  %90 = alloca i8, align 1
  %91 = alloca i8, align 1
  %92 = alloca i8, align 1
  %93 = alloca i8, align 1
  %94 = alloca i8, align 1
  %95 = zext i1 %0 to i8
  store i8 %95, ptr %3, align 1, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %5) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.start.p0(i64 80, ptr %27) #5
  call void @llvm.lifetime.start.p0(i64 80, ptr %28) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %29) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %30) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %31) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %32) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %33) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %34) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %35) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %36) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %37) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %38) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %39) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %40) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %41) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %42) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %60) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %61) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %62) #5
  call void @llvm.lifetime.start.p0(i64 200, ptr %63) #5
  call void @llvm.lifetime.start.p0(i64 200, ptr %64) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %76) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %86) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %87) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %88) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %90) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %91) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %92) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %93) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %94) #5
  %96 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %96, ptr noundef %5)
  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 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %30, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %31, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %32, i8 0, i64 64, 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)
  call void @llvm.memset.p0.i64(ptr align 8 %37, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %38, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %39, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %40, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %41, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %42, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %60, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %61, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %62, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %63, i8 0, i64 200, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %64, i8 0, i64 200, i1 false)
  %97 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %27, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %97, i1 noundef zeroext true)
  %98 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %28, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %98, i1 noundef zeroext true)
  %99 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %29, i64 noundef 0, i64 noundef 3, ptr noundef %99, i1 noundef zeroext true)
  %100 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %30, i64 noundef 0, i64 noundef 3, ptr noundef %100, i1 noundef zeroext true)
  %101 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %31, i64 noundef 0, i64 noundef 3, ptr noundef %101, i1 noundef zeroext true)
  %102 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %32, i64 noundef 0, i64 noundef 3, ptr noundef %102, i1 noundef zeroext true)
  %103 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %33, i64 noundef 0, i64 noundef 3, ptr noundef %103, i1 noundef zeroext true)
  %104 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %34, i64 noundef 0, i64 noundef 3, ptr noundef %104, i1 noundef zeroext true)
  %105 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %35, i64 noundef 0, i64 noundef 3, ptr noundef %105, i1 noundef zeroext true)
  %106 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %36, i64 noundef 0, i64 noundef 3, ptr noundef %106, i1 noundef zeroext true)
  %107 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %37, i64 noundef 0, i64 noundef 3, ptr noundef %107, i1 noundef zeroext true)
  %108 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl17_linearmodel_initEPvPNS_8ae_stateEb(ptr noundef %38, ptr noundef %108, i1 noundef zeroext true)
  %109 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl17_linearmodel_initEPvPNS_8ae_stateEb(ptr noundef %39, ptr noundef %109, i1 noundef zeroext true)
  %110 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl17_linearmodel_initEPvPNS_8ae_stateEb(ptr noundef %40, ptr noundef %110, i1 noundef zeroext true)
  %111 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %41, i64 noundef 0, i64 noundef 3, ptr noundef %111, i1 noundef zeroext true)
  %112 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %42, i64 noundef 0, i64 noundef 3, ptr noundef %112, i1 noundef zeroext true)
  %113 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %60, i64 noundef 0, i64 noundef 3, ptr noundef %113, i1 noundef zeroext true)
  %114 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %61, i64 noundef 0, i64 noundef 3, ptr noundef %114, i1 noundef zeroext true)
  %115 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %62, i64 noundef 0, i64 noundef 3, ptr noundef %115, i1 noundef zeroext true)
  %116 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14_lrreport_initEPvPNS_8ae_stateEb(ptr noundef %63, ptr noundef %116, i1 noundef zeroext true)
  %117 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14_lrreport_initEPvPNS_8ae_stateEb(ptr noundef %64, ptr noundef %117, i1 noundef zeroext true)
  store i64 40, ptr %7, align 8, !tbaa !11
  store i64 3, ptr %8, align 8, !tbaa !11
  store i64 1000, ptr %9, align 8, !tbaa !11
  store double 7.000000e+00, ptr %6, align 8, !tbaa !13
  store double 5.000000e-10, ptr %10, align 8, !tbaa !13
  store i8 0, ptr %87, align 1, !tbaa !5
  store i8 0, ptr %86, align 1, !tbaa !5
  store i8 0, ptr %88, align 1, !tbaa !5
  store i8 0, ptr %89, align 1, !tbaa !5
  store i8 0, ptr %90, align 1, !tbaa !5
  store i8 0, ptr %91, align 1, !tbaa !5
  store i8 0, ptr %92, align 1, !tbaa !5
  store i8 0, ptr %93, align 1, !tbaa !5
  store i64 5, ptr %59, align 8, !tbaa !11
  %118 = load i64, ptr %59, align 8, !tbaa !11
  %119 = sub nsw i64 %118, 1
  %120 = add nsw i64 %119, 1
  %121 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %60, i64 noundef %120, ptr noundef %121)
  %122 = load i64, ptr %59, align 8, !tbaa !11
  %123 = sub nsw i64 %122, 1
  %124 = add nsw i64 %123, 1
  %125 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %61, i64 noundef %124, ptr noundef %125)
  %126 = load i64, ptr %59, align 8, !tbaa !11
  %127 = sub nsw i64 %126, 1
  %128 = add nsw i64 %127, 1
  %129 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %62, i64 noundef %128, ptr noundef %129)
  %130 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %60, i32 0, i32 4
  %131 = load ptr, ptr %130, align 8, !tbaa !15
  %132 = getelementptr inbounds double, ptr %131, i64 0
  store double 5.000000e-01, ptr %132, align 8, !tbaa !13
  %133 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %60, i32 0, i32 4
  %134 = load ptr, ptr %133, align 8, !tbaa !15
  %135 = getelementptr inbounds double, ptr %134, i64 1
  store double 2.500000e-01, ptr %135, align 8, !tbaa !13
  %136 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %60, i32 0, i32 4
  %137 = load ptr, ptr %136, align 8, !tbaa !15
  %138 = getelementptr inbounds double, ptr %137, i64 2
  store double 1.000000e-01, ptr %138, align 8, !tbaa !13
  %139 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %60, i32 0, i32 4
  %140 = load ptr, ptr %139, align 8, !tbaa !15
  %141 = getelementptr inbounds double, ptr %140, i64 3
  store double 5.000000e-02, ptr %141, align 8, !tbaa !13
  %142 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %60, i32 0, i32 4
  %143 = load ptr, ptr %142, align 8, !tbaa !15
  %144 = getelementptr inbounds double, ptr %143, i64 4
  store double 2.500000e-02, ptr %144, align 8, !tbaa !13
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %145

145:                                              ; preds = %172, %2
  %146 = load i64, ptr %12, align 8, !tbaa !11
  %147 = load i64, ptr %59, align 8, !tbaa !11
  %148 = sub nsw i64 %147, 1
  %149 = icmp sle i64 %146, %148
  br i1 %149, label %150, label %175

150:                                              ; preds = %145
  %151 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %60, i32 0, i32 4
  %152 = load ptr, ptr %151, align 8, !tbaa !15
  %153 = load i64, ptr %12, align 8, !tbaa !11
  %154 = getelementptr inbounds double, ptr %152, i64 %153
  %155 = load double, ptr %154, align 8, !tbaa !13
  %156 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %60, i32 0, i32 4
  %157 = load ptr, ptr %156, align 8, !tbaa !15
  %158 = load i64, ptr %12, align 8, !tbaa !11
  %159 = getelementptr inbounds double, ptr %157, i64 %158
  %160 = load double, ptr %159, align 8, !tbaa !13
  %161 = fsub double 1.000000e+00, %160
  %162 = fmul double %155, %161
  %163 = load i64, ptr %9, align 8, !tbaa !11
  %164 = sitofp i64 %163 to double
  %165 = fdiv double %162, %164
  %166 = load ptr, ptr %4, align 8, !tbaa !9
  %167 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %165, ptr noundef %166)
  %168 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %62, i32 0, i32 4
  %169 = load ptr, ptr %168, align 8, !tbaa !15
  %170 = load i64, ptr %12, align 8, !tbaa !11
  %171 = getelementptr inbounds double, ptr %169, i64 %170
  store double %167, ptr %171, align 8, !tbaa !13
  br label %172

172:                                              ; preds = %150
  %173 = load i64, ptr %12, align 8, !tbaa !11
  %174 = add nsw i64 %173, 1
  store i64 %174, ptr %12, align 8, !tbaa !11
  br label %145, !llvm.loop !16

175:                                              ; preds = %145
  %176 = load i64, ptr %9, align 8, !tbaa !11
  %177 = sub nsw i64 %176, 1
  %178 = add nsw i64 %177, 1
  %179 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %33, i64 noundef %178, ptr noundef %179)
  %180 = load i64, ptr %9, align 8, !tbaa !11
  %181 = sub nsw i64 %180, 1
  %182 = add nsw i64 %181, 1
  %183 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %34, i64 noundef %182, ptr noundef %183)
  store i64 2, ptr %11, align 8, !tbaa !11
  br label %184

184:                                              ; preds = %671, %175
  %185 = load i64, ptr %11, align 8, !tbaa !11
  %186 = load i64, ptr %7, align 8, !tbaa !11
  %187 = icmp sle i64 %185, %186
  br i1 %187, label %188, label %674

188:                                              ; preds = %184
  %189 = load i64, ptr %11, align 8, !tbaa !11
  %190 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL33testlinregunit_generaterandomtaskddbddddlPN11alglib_impl9ae_matrixEPNS_9ae_vectorEPNS_8ae_stateE(double noundef -1.000000e+00, double noundef 1.000000e+00, i1 noundef zeroext false, double noundef -1.000000e+00, double noundef 1.000000e+00, double noundef 1.000000e+00, double noundef 2.000000e+00, i64 noundef %189, ptr noundef %27, ptr noundef %29, ptr noundef %190)
  %191 = load i64, ptr %11, align 8, !tbaa !11
  %192 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl7lrlinesEPNS_9ae_matrixEPNS_9ae_vectorElPlPdS5_S5_S5_S5_S5_S5_PNS_8ae_stateE(ptr noundef %27, ptr noundef %29, i64 noundef %191, ptr noundef %25, ptr noundef %50, ptr noundef %51, ptr noundef %52, ptr noundef %53, ptr noundef %56, ptr noundef %57, ptr noundef %58, ptr noundef %192)
  %193 = load i8, ptr %86, align 1, !tbaa !5, !range !18, !noundef !19
  %194 = trunc i8 %193 to i1
  br i1 %194, label %198, label %195

195:                                              ; preds = %188
  %196 = load i64, ptr %25, align 8, !tbaa !11
  %197 = icmp ne i64 %196, 1
  br label %198

198:                                              ; preds = %195, %188
  %199 = phi i1 [ true, %188 ], [ %197, %195 ]
  %200 = zext i1 %199 to i8
  store i8 %200, ptr %86, align 1, !tbaa !5
  %201 = load i64, ptr %11, align 8, !tbaa !11
  %202 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL33testlinregunit_generaterandomtaskddbddddlPN11alglib_impl9ae_matrixEPNS_9ae_vectorEPNS_8ae_stateE(double noundef 1.000000e+00, double noundef 1.000000e+00, i1 noundef zeroext false, double noundef -1.000000e+00, double noundef 1.000000e+00, double noundef 1.000000e+00, double noundef 2.000000e+00, i64 noundef %201, ptr noundef %27, ptr noundef %29, ptr noundef %202)
  %203 = load i64, ptr %11, align 8, !tbaa !11
  %204 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl7lrlinesEPNS_9ae_matrixEPNS_9ae_vectorElPlPdS5_S5_S5_S5_S5_S5_PNS_8ae_stateE(ptr noundef %27, ptr noundef %29, i64 noundef %203, ptr noundef %25, ptr noundef %50, ptr noundef %51, ptr noundef %52, ptr noundef %53, ptr noundef %56, ptr noundef %57, ptr noundef %58, ptr noundef %204)
  %205 = load i8, ptr %86, align 1, !tbaa !5, !range !18, !noundef !19
  %206 = trunc i8 %205 to i1
  br i1 %206, label %210, label %207

207:                                              ; preds = %198
  %208 = load i64, ptr %25, align 8, !tbaa !11
  %209 = icmp ne i64 %208, -3
  br label %210

210:                                              ; preds = %207, %198
  %211 = phi i1 [ true, %198 ], [ %209, %207 ]
  %212 = zext i1 %211 to i8
  store i8 %212, ptr %86, align 1, !tbaa !5
  %213 = load i64, ptr %11, align 8, !tbaa !11
  %214 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL33testlinregunit_generaterandomtaskddbddddlPN11alglib_impl9ae_matrixEPNS_9ae_vectorEPNS_8ae_stateE(double noundef -1.000000e+00, double noundef 1.000000e+00, i1 noundef zeroext false, double noundef -1.000000e+00, double noundef 1.000000e+00, double noundef -1.000000e+00, double noundef -1.000000e+00, i64 noundef %213, ptr noundef %27, ptr noundef %29, ptr noundef %214)
  %215 = load i64, ptr %11, align 8, !tbaa !11
  %216 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl7lrlinesEPNS_9ae_matrixEPNS_9ae_vectorElPlPdS5_S5_S5_S5_S5_S5_PNS_8ae_stateE(ptr noundef %27, ptr noundef %29, i64 noundef %215, ptr noundef %25, ptr noundef %50, ptr noundef %51, ptr noundef %52, ptr noundef %53, ptr noundef %56, ptr noundef %57, ptr noundef %58, ptr noundef %216)
  %217 = load i8, ptr %86, align 1, !tbaa !5, !range !18, !noundef !19
  %218 = trunc i8 %217 to i1
  br i1 %218, label %222, label %219

219:                                              ; preds = %210
  %220 = load i64, ptr %25, align 8, !tbaa !11
  %221 = icmp ne i64 %220, -2
  br label %222

222:                                              ; preds = %219, %210
  %223 = phi i1 [ true, %210 ], [ %221, %219 ]
  %224 = zext i1 %223 to i8
  store i8 %224, ptr %86, align 1, !tbaa !5
  %225 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL33testlinregunit_generaterandomtaskddbddddlPN11alglib_impl9ae_matrixEPNS_9ae_vectorEPNS_8ae_stateE(double noundef -1.000000e+00, double noundef 1.000000e+00, i1 noundef zeroext false, double noundef -1.000000e+00, double noundef 1.000000e+00, double noundef 2.000000e+00, double noundef 1.000000e+00, i64 noundef 2, ptr noundef %27, ptr noundef %29, ptr noundef %225)
  %226 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl7lrlinesEPNS_9ae_matrixEPNS_9ae_vectorElPlPdS5_S5_S5_S5_S5_S5_PNS_8ae_stateE(ptr noundef %27, ptr noundef %29, i64 noundef 1, ptr noundef %25, ptr noundef %50, ptr noundef %51, ptr noundef %52, ptr noundef %53, ptr noundef %56, ptr noundef %57, ptr noundef %58, ptr noundef %226)
  %227 = load i8, ptr %86, align 1, !tbaa !5, !range !18, !noundef !19
  %228 = trunc i8 %227 to i1
  br i1 %228, label %232, label %229

229:                                              ; preds = %222
  %230 = load i64, ptr %25, align 8, !tbaa !11
  %231 = icmp ne i64 %230, -1
  br label %232

232:                                              ; preds = %229, %222
  %233 = phi i1 [ true, %222 ], [ %231, %229 ]
  %234 = zext i1 %233 to i8
  store i8 %234, ptr %86, align 1, !tbaa !5
  store i64 1, ptr %16, align 8, !tbaa !11
  br label %235

235:                                              ; preds = %667, %232
  %236 = load i64, ptr %16, align 8, !tbaa !11
  %237 = load i64, ptr %8, align 8, !tbaa !11
  %238 = icmp sle i64 %236, %237
  br i1 %238, label %239, label %670

239:                                              ; preds = %235
  %240 = load ptr, ptr %4, align 8, !tbaa !9
  %241 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %240)
  %242 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %241, double -1.000000e+00)
  store double %242, ptr %46, align 8, !tbaa !13
  %243 = load ptr, ptr %4, align 8, !tbaa !9
  %244 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %243)
  %245 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %244, double -1.000000e+00)
  store double %245, ptr %47, align 8, !tbaa !13
  %246 = load double, ptr %46, align 8, !tbaa !13
  %247 = load double, ptr %47, align 8, !tbaa !13
  %248 = load ptr, ptr %4, align 8, !tbaa !9
  %249 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %248)
  %250 = fmul double -5.000000e+00, %249
  %251 = load ptr, ptr %4, align 8, !tbaa !9
  %252 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %251)
  %253 = fmul double 5.000000e+00, %252
  %254 = load ptr, ptr %4, align 8, !tbaa !9
  %255 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %254)
  %256 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %255, double noundef 5.000000e-01)
  %257 = load i64, ptr %11, align 8, !tbaa !11
  %258 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL27testlinregunit_generatetaskddddbddlPN11alglib_impl9ae_matrixEPNS_9ae_vectorEPNS_8ae_stateE(double noundef %246, double noundef %247, double noundef %250, double noundef %253, i1 noundef zeroext %256, double noundef 1.000000e+00, double noundef 1.000000e+00, i64 noundef %257, ptr noundef %27, ptr noundef %29, ptr noundef %258)
  %259 = load i64, ptr %11, align 8, !tbaa !11
  %260 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl7lrlinesEPNS_9ae_matrixEPNS_9ae_vectorElPlPdS5_S5_S5_S5_S5_S5_PNS_8ae_stateE(ptr noundef %27, ptr noundef %29, i64 noundef %259, ptr noundef %25, ptr noundef %50, ptr noundef %51, ptr noundef %52, ptr noundef %53, ptr noundef %56, ptr noundef %57, ptr noundef %58, ptr noundef %260)
  %261 = load i64, ptr %11, align 8, !tbaa !11
  %262 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl6lrlineEPNS_9ae_matrixElPlPdS3_PNS_8ae_stateE(ptr noundef %27, i64 noundef %261, ptr noundef %26, ptr noundef %54, ptr noundef %55, ptr noundef %262)
  %263 = load i64, ptr %25, align 8, !tbaa !11
  %264 = icmp ne i64 %263, 1
  br i1 %264, label %268, label %265

265:                                              ; preds = %239
  %266 = load i64, ptr %26, align 8, !tbaa !11
  %267 = icmp ne i64 %266, 1
  br i1 %267, label %268, label %269

268:                                              ; preds = %265, %239
  store i8 1, ptr %86, align 1, !tbaa !5
  br label %291

269:                                              ; preds = %265
  %270 = load i8, ptr %87, align 1, !tbaa !5, !range !18, !noundef !19
  %271 = trunc i8 %270 to i1
  br i1 %271, label %288, label %272

272:                                              ; preds = %269
  %273 = load double, ptr %50, align 8, !tbaa !13
  %274 = load double, ptr %54, align 8, !tbaa !13
  %275 = fsub double %273, %274
  %276 = load ptr, ptr %4, align 8, !tbaa !9
  %277 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %275, ptr noundef %276)
  %278 = load double, ptr %10, align 8, !tbaa !13
  %279 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %277, double noundef %278)
  br i1 %279, label %288, label %280

280:                                              ; preds = %272
  %281 = load double, ptr %51, align 8, !tbaa !13
  %282 = load double, ptr %55, align 8, !tbaa !13
  %283 = fsub double %281, %282
  %284 = load ptr, ptr %4, align 8, !tbaa !9
  %285 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %283, ptr noundef %284)
  %286 = load double, ptr %10, align 8, !tbaa !13
  %287 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %285, double noundef %286)
  br label %288

288:                                              ; preds = %280, %272, %269
  %289 = phi i1 [ true, %272 ], [ true, %269 ], [ %287, %280 ]
  %290 = zext i1 %289 to i8
  store i8 %290, ptr %87, align 1, !tbaa !5
  br label %291

291:                                              ; preds = %288, %268
  %292 = load ptr, ptr %4, align 8, !tbaa !9
  %293 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %292)
  %294 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %293, double -1.000000e+00)
  store double %294, ptr %46, align 8, !tbaa !13
  %295 = load ptr, ptr %4, align 8, !tbaa !9
  %296 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %295)
  %297 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %296, double -1.000000e+00)
  store double %297, ptr %47, align 8, !tbaa !13
  %298 = load double, ptr %46, align 8, !tbaa !13
  %299 = load double, ptr %47, align 8, !tbaa !13
  %300 = load ptr, ptr %4, align 8, !tbaa !9
  %301 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %300)
  %302 = fmul double -5.000000e+00, %301
  %303 = load ptr, ptr %4, align 8, !tbaa !9
  %304 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %303)
  %305 = fmul double 5.000000e+00, %304
  %306 = load i64, ptr %11, align 8, !tbaa !11
  %307 = icmp sgt i64 %306, 4
  %308 = load i64, ptr %11, align 8, !tbaa !11
  %309 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL27testlinregunit_generatetaskddddbddlPN11alglib_impl9ae_matrixEPNS_9ae_vectorEPNS_8ae_stateE(double noundef %298, double noundef %299, double noundef %302, double noundef %305, i1 noundef zeroext %307, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef %308, ptr noundef %27, ptr noundef %29, ptr noundef %309)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %310

310:                                              ; preds = %323, %291
  %311 = load i64, ptr %12, align 8, !tbaa !11
  %312 = load i64, ptr %11, align 8, !tbaa !11
  %313 = sub nsw i64 %312, 1
  %314 = icmp sle i64 %311, %313
  br i1 %314, label %315, label %326

315:                                              ; preds = %310
  %316 = load ptr, ptr %4, align 8, !tbaa !9
  %317 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %316)
  %318 = fadd double 1.000000e+00, %317
  %319 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %320 = load ptr, ptr %319, align 8, !tbaa !15
  %321 = load i64, ptr %12, align 8, !tbaa !11
  %322 = getelementptr inbounds double, ptr %320, i64 %321
  store double %318, ptr %322, align 8, !tbaa !13
  br label %323

323:                                              ; preds = %315
  %324 = load i64, ptr %12, align 8, !tbaa !11
  %325 = add nsw i64 %324, 1
  store i64 %325, ptr %12, align 8, !tbaa !11
  br label %310, !llvm.loop !20

326:                                              ; preds = %310
  %327 = load i64, ptr %11, align 8, !tbaa !11
  %328 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl7lrlinesEPNS_9ae_matrixEPNS_9ae_vectorElPlPdS5_S5_S5_S5_S5_S5_PNS_8ae_stateE(ptr noundef %27, ptr noundef %29, i64 noundef %327, ptr noundef %25, ptr noundef %50, ptr noundef %51, ptr noundef %52, ptr noundef %53, ptr noundef %56, ptr noundef %57, ptr noundef %58, ptr noundef %328)
  %329 = load i64, ptr %25, align 8, !tbaa !11
  %330 = icmp ne i64 %329, 1
  br i1 %330, label %331, label %332

331:                                              ; preds = %326
  store i8 1, ptr %86, align 1, !tbaa !5
  br label %352

332:                                              ; preds = %326
  %333 = load i8, ptr %87, align 1, !tbaa !5, !range !18, !noundef !19
  %334 = trunc i8 %333 to i1
  br i1 %334, label %349, label %335

335:                                              ; preds = %332
  %336 = load double, ptr %50, align 8, !tbaa !13
  %337 = load double, ptr %46, align 8, !tbaa !13
  %338 = fsub double %336, %337
  %339 = load ptr, ptr %4, align 8, !tbaa !9
  %340 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %338, ptr noundef %339)
  %341 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %340, double noundef 1.000000e-03)
  br i1 %341, label %349, label %342

342:                                              ; preds = %335
  %343 = load double, ptr %51, align 8, !tbaa !13
  %344 = load double, ptr %47, align 8, !tbaa !13
  %345 = fsub double %343, %344
  %346 = load ptr, ptr %4, align 8, !tbaa !9
  %347 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %345, ptr noundef %346)
  %348 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %347, double noundef 1.000000e-03)
  br label %349

349:                                              ; preds = %342, %335, %332
  %350 = phi i1 [ true, %335 ], [ true, %332 ], [ %348, %342 ]
  %351 = zext i1 %350 to i8
  store i8 %351, ptr %87, align 1, !tbaa !5
  br label %352

352:                                              ; preds = %349, %331
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %353

353:                                              ; preds = %363, %352
  %354 = load i64, ptr %12, align 8, !tbaa !11
  %355 = load i64, ptr %59, align 8, !tbaa !11
  %356 = sub nsw i64 %355, 1
  %357 = icmp sle i64 %354, %356
  br i1 %357, label %358, label %366

358:                                              ; preds = %353
  %359 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %61, i32 0, i32 4
  %360 = load ptr, ptr %359, align 8, !tbaa !15
  %361 = load i64, ptr %12, align 8, !tbaa !11
  %362 = getelementptr inbounds double, ptr %360, i64 %361
  store double 0.000000e+00, ptr %362, align 8, !tbaa !13
  br label %363

363:                                              ; preds = %358
  %364 = load i64, ptr %12, align 8, !tbaa !11
  %365 = add nsw i64 %364, 1
  store i64 %365, ptr %12, align 8, !tbaa !11
  br label %353, !llvm.loop !21

366:                                              ; preds = %353
  %367 = load ptr, ptr %4, align 8, !tbaa !9
  %368 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %367)
  %369 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %368, double -1.000000e+00)
  store double %369, ptr %46, align 8, !tbaa !13
  %370 = load ptr, ptr %4, align 8, !tbaa !9
  %371 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %370)
  %372 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %371, double -1.000000e+00)
  store double %372, ptr %47, align 8, !tbaa !13
  %373 = load double, ptr %46, align 8, !tbaa !13
  %374 = load double, ptr %47, align 8, !tbaa !13
  %375 = load ptr, ptr %4, align 8, !tbaa !9
  %376 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %375)
  %377 = fmul double -5.000000e+00, %376
  %378 = load ptr, ptr %4, align 8, !tbaa !9
  %379 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %378)
  %380 = fmul double 5.000000e+00, %379
  %381 = load i64, ptr %11, align 8, !tbaa !11
  %382 = icmp sgt i64 %381, 4
  %383 = load i64, ptr %11, align 8, !tbaa !11
  %384 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL27testlinregunit_generatetaskddddbddlPN11alglib_impl9ae_matrixEPNS_9ae_vectorEPNS_8ae_stateE(double noundef %373, double noundef %374, double noundef %377, double noundef %380, i1 noundef zeroext %382, double noundef 1.000000e+00, double noundef 2.000000e+00, i64 noundef %383, ptr noundef %27, ptr noundef %29, ptr noundef %384)
  %385 = load i64, ptr %11, align 8, !tbaa !11
  %386 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl7lrlinesEPNS_9ae_matrixEPNS_9ae_vectorElPlPdS5_S5_S5_S5_S5_S5_PNS_8ae_stateE(ptr noundef %27, ptr noundef %29, i64 noundef %385, ptr noundef %25, ptr noundef %50, ptr noundef %51, ptr noundef %52, ptr noundef %53, ptr noundef %56, ptr noundef %57, ptr noundef %58, ptr noundef %386)
  %387 = load i64, ptr %25, align 8, !tbaa !11
  %388 = icmp ne i64 %387, 1
  br i1 %388, label %389, label %390

389:                                              ; preds = %366
  store i8 1, ptr %86, align 1, !tbaa !5
  br label %667

390:                                              ; preds = %366
  %391 = load double, ptr %52, align 8, !tbaa !13
  store double %391, ptr %48, align 8, !tbaa !13
  %392 = load double, ptr %53, align 8, !tbaa !13
  store double %392, ptr %49, align 8, !tbaa !13
  store i64 0, ptr %17, align 8, !tbaa !11
  br label %393

393:                                              ; preds = %451, %390
  %394 = load i64, ptr %17, align 8, !tbaa !11
  %395 = load i64, ptr %9, align 8, !tbaa !11
  %396 = sub nsw i64 %395, 1
  %397 = icmp sle i64 %394, %396
  br i1 %397, label %398, label %454

398:                                              ; preds = %393
  %399 = load double, ptr %46, align 8, !tbaa !13
  %400 = load double, ptr %47, align 8, !tbaa !13
  %401 = load i64, ptr %11, align 8, !tbaa !11
  %402 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL28testlinregunit_filltaskwithyddlPN11alglib_impl9ae_matrixEPNS_9ae_vectorEPNS_8ae_stateE(double noundef %399, double noundef %400, i64 noundef %401, ptr noundef %27, ptr noundef %29, ptr noundef %402)
  %403 = load i64, ptr %11, align 8, !tbaa !11
  %404 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl7lrlinesEPNS_9ae_matrixEPNS_9ae_vectorElPlPdS5_S5_S5_S5_S5_S5_PNS_8ae_stateE(ptr noundef %27, ptr noundef %29, i64 noundef %403, ptr noundef %25, ptr noundef %50, ptr noundef %51, ptr noundef %52, ptr noundef %53, ptr noundef %56, ptr noundef %57, ptr noundef %58, ptr noundef %404)
  %405 = load i64, ptr %25, align 8, !tbaa !11
  %406 = icmp ne i64 %405, 1
  br i1 %406, label %407, label %408

407:                                              ; preds = %398
  store i8 1, ptr %86, align 1, !tbaa !5
  br label %451

408:                                              ; preds = %398
  %409 = load double, ptr %50, align 8, !tbaa !13
  %410 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %33, i32 0, i32 4
  %411 = load ptr, ptr %410, align 8, !tbaa !15
  %412 = load i64, ptr %17, align 8, !tbaa !11
  %413 = getelementptr inbounds double, ptr %411, i64 %412
  store double %409, ptr %413, align 8, !tbaa !13
  %414 = load double, ptr %51, align 8, !tbaa !13
  %415 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %34, i32 0, i32 4
  %416 = load ptr, ptr %415, align 8, !tbaa !15
  %417 = load i64, ptr %17, align 8, !tbaa !11
  %418 = getelementptr inbounds double, ptr %416, i64 %417
  store double %414, ptr %418, align 8, !tbaa !13
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %419

419:                                              ; preds = %447, %408
  %420 = load i64, ptr %12, align 8, !tbaa !11
  %421 = load i64, ptr %59, align 8, !tbaa !11
  %422 = sub nsw i64 %421, 1
  %423 = icmp sle i64 %420, %422
  br i1 %423, label %424, label %450

424:                                              ; preds = %419
  %425 = load double, ptr %58, align 8, !tbaa !13
  %426 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %60, i32 0, i32 4
  %427 = load ptr, ptr %426, align 8, !tbaa !15
  %428 = load i64, ptr %12, align 8, !tbaa !11
  %429 = getelementptr inbounds double, ptr %427, i64 %428
  %430 = load double, ptr %429, align 8, !tbaa !13
  %431 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %425, double noundef %430)
  br i1 %431, label %432, label %446

432:                                              ; preds = %424
  %433 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %61, i32 0, i32 4
  %434 = load ptr, ptr %433, align 8, !tbaa !15
  %435 = load i64, ptr %12, align 8, !tbaa !11
  %436 = getelementptr inbounds double, ptr %434, i64 %435
  %437 = load double, ptr %436, align 8, !tbaa !13
  %438 = load i64, ptr %9, align 8, !tbaa !11
  %439 = sitofp i64 %438 to double
  %440 = fdiv double 1.000000e+00, %439
  %441 = fadd double %437, %440
  %442 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %61, i32 0, i32 4
  %443 = load ptr, ptr %442, align 8, !tbaa !15
  %444 = load i64, ptr %12, align 8, !tbaa !11
  %445 = getelementptr inbounds double, ptr %443, i64 %444
  store double %441, ptr %445, align 8, !tbaa !13
  br label %446

446:                                              ; preds = %432, %424
  br label %447

447:                                              ; preds = %446
  %448 = load i64, ptr %12, align 8, !tbaa !11
  %449 = add nsw i64 %448, 1
  store i64 %449, ptr %12, align 8, !tbaa !11
  br label %419, !llvm.loop !22

450:                                              ; preds = %419
  br label %451

451:                                              ; preds = %450, %407
  %452 = load i64, ptr %17, align 8, !tbaa !11
  %453 = add nsw i64 %452, 1
  store i64 %453, ptr %17, align 8, !tbaa !11
  br label %393, !llvm.loop !23

454:                                              ; preds = %393
  %455 = load i64, ptr %9, align 8, !tbaa !11
  %456 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL26testlinregunit_calculatemvPN11alglib_impl9ae_vectorElPdS2_S2_S2_PNS_8ae_stateE(ptr noundef %33, i64 noundef %455, ptr noundef %82, ptr noundef %83, ptr noundef %84, ptr noundef %85, ptr noundef %456)
  %457 = load i8, ptr %87, align 1, !tbaa !5, !range !18, !noundef !19
  %458 = trunc i8 %457 to i1
  br i1 %458, label %469, label %459

459:                                              ; preds = %454
  %460 = load double, ptr %82, align 8, !tbaa !13
  %461 = load double, ptr %46, align 8, !tbaa !13
  %462 = fsub double %460, %461
  %463 = load ptr, ptr %4, align 8, !tbaa !9
  %464 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %462, ptr noundef %463)
  %465 = load double, ptr %83, align 8, !tbaa !13
  %466 = fdiv double %464, %465
  %467 = load double, ptr %6, align 8, !tbaa !13
  %468 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %466, double noundef %467)
  br label %469

469:                                              ; preds = %459, %454
  %470 = phi i1 [ true, %454 ], [ %468, %459 ]
  %471 = zext i1 %470 to i8
  store i8 %471, ptr %87, align 1, !tbaa !5
  %472 = load i8, ptr %87, align 1, !tbaa !5, !range !18, !noundef !19
  %473 = trunc i8 %472 to i1
  br i1 %473, label %486, label %474

474:                                              ; preds = %469
  %475 = load double, ptr %84, align 8, !tbaa !13
  %476 = load double, ptr %48, align 8, !tbaa !13
  %477 = load ptr, ptr %4, align 8, !tbaa !9
  %478 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %476, ptr noundef %477)
  %479 = fsub double %475, %478
  %480 = load ptr, ptr %4, align 8, !tbaa !9
  %481 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %479, ptr noundef %480)
  %482 = load double, ptr %85, align 8, !tbaa !13
  %483 = fdiv double %481, %482
  %484 = load double, ptr %6, align 8, !tbaa !13
  %485 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %483, double noundef %484)
  br label %486

486:                                              ; preds = %474, %469
  %487 = phi i1 [ true, %469 ], [ %485, %474 ]
  %488 = zext i1 %487 to i8
  store i8 %488, ptr %87, align 1, !tbaa !5
  %489 = load i64, ptr %9, align 8, !tbaa !11
  %490 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL26testlinregunit_calculatemvPN11alglib_impl9ae_vectorElPdS2_S2_S2_PNS_8ae_stateE(ptr noundef %34, i64 noundef %489, ptr noundef %82, ptr noundef %83, ptr noundef %84, ptr noundef %85, ptr noundef %490)
  %491 = load i8, ptr %87, align 1, !tbaa !5, !range !18, !noundef !19
  %492 = trunc i8 %491 to i1
  br i1 %492, label %503, label %493

493:                                              ; preds = %486
  %494 = load double, ptr %82, align 8, !tbaa !13
  %495 = load double, ptr %47, align 8, !tbaa !13
  %496 = fsub double %494, %495
  %497 = load ptr, ptr %4, align 8, !tbaa !9
  %498 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %496, ptr noundef %497)
  %499 = load double, ptr %83, align 8, !tbaa !13
  %500 = fdiv double %498, %499
  %501 = load double, ptr %6, align 8, !tbaa !13
  %502 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %500, double noundef %501)
  br label %503

503:                                              ; preds = %493, %486
  %504 = phi i1 [ true, %486 ], [ %502, %493 ]
  %505 = zext i1 %504 to i8
  store i8 %505, ptr %87, align 1, !tbaa !5
  %506 = load i8, ptr %87, align 1, !tbaa !5, !range !18, !noundef !19
  %507 = trunc i8 %506 to i1
  br i1 %507, label %520, label %508

508:                                              ; preds = %503
  %509 = load double, ptr %84, align 8, !tbaa !13
  %510 = load double, ptr %49, align 8, !tbaa !13
  %511 = load ptr, ptr %4, align 8, !tbaa !9
  %512 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %510, ptr noundef %511)
  %513 = fsub double %509, %512
  %514 = load ptr, ptr %4, align 8, !tbaa !9
  %515 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %513, ptr noundef %514)
  %516 = load double, ptr %85, align 8, !tbaa !13
  %517 = fdiv double %515, %516
  %518 = load double, ptr %6, align 8, !tbaa !13
  %519 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %517, double noundef %518)
  br label %520

520:                                              ; preds = %508, %503
  %521 = phi i1 [ true, %503 ], [ %519, %508 ]
  %522 = zext i1 %521 to i8
  store i8 %522, ptr %87, align 1, !tbaa !5
  %523 = load i64, ptr %11, align 8, !tbaa !11
  %524 = icmp sgt i64 %523, 2
  br i1 %524, label %525, label %559

525:                                              ; preds = %520
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %526

526:                                              ; preds = %555, %525
  %527 = load i64, ptr %12, align 8, !tbaa !11
  %528 = load i64, ptr %59, align 8, !tbaa !11
  %529 = sub nsw i64 %528, 1
  %530 = icmp sle i64 %527, %529
  br i1 %530, label %531, label %558

531:                                              ; preds = %526
  %532 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %60, i32 0, i32 4
  %533 = load ptr, ptr %532, align 8, !tbaa !15
  %534 = load i64, ptr %12, align 8, !tbaa !11
  %535 = getelementptr inbounds double, ptr %533, i64 %534
  %536 = load double, ptr %535, align 8, !tbaa !13
  %537 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %61, i32 0, i32 4
  %538 = load ptr, ptr %537, align 8, !tbaa !15
  %539 = load i64, ptr %12, align 8, !tbaa !11
  %540 = getelementptr inbounds double, ptr %538, i64 %539
  %541 = load double, ptr %540, align 8, !tbaa !13
  %542 = fsub double %536, %541
  %543 = load ptr, ptr %4, align 8, !tbaa !9
  %544 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %542, ptr noundef %543)
  %545 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %62, i32 0, i32 4
  %546 = load ptr, ptr %545, align 8, !tbaa !15
  %547 = load i64, ptr %12, align 8, !tbaa !11
  %548 = getelementptr inbounds double, ptr %546, i64 %547
  %549 = load double, ptr %548, align 8, !tbaa !13
  %550 = fdiv double %544, %549
  %551 = load double, ptr %6, align 8, !tbaa !13
  %552 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %550, double noundef %551)
  br i1 %552, label %553, label %554

553:                                              ; preds = %531
  store i8 1, ptr %87, align 1, !tbaa !5
  br label %554

554:                                              ; preds = %553, %531
  br label %555

555:                                              ; preds = %554
  %556 = load i64, ptr %12, align 8, !tbaa !11
  %557 = add nsw i64 %556, 1
  store i64 %557, ptr %12, align 8, !tbaa !11
  br label %526, !llvm.loop !24

558:                                              ; preds = %526
  br label %559

559:                                              ; preds = %558, %520
  %560 = load i64, ptr %11, align 8, !tbaa !11
  %561 = icmp sgt i64 %560, 2
  br i1 %561, label %562, label %666

562:                                              ; preds = %559
  %563 = load double, ptr %46, align 8, !tbaa !13
  %564 = load double, ptr %47, align 8, !tbaa !13
  %565 = load ptr, ptr %4, align 8, !tbaa !9
  %566 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %565)
  %567 = fmul double -5.000000e+00, %566
  %568 = load ptr, ptr %4, align 8, !tbaa !9
  %569 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %568)
  %570 = fmul double 5.000000e+00, %569
  %571 = load i64, ptr %11, align 8, !tbaa !11
  %572 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL27testlinregunit_generatetaskddddbddlPN11alglib_impl9ae_matrixEPNS_9ae_vectorEPNS_8ae_stateE(double noundef %563, double noundef %564, double noundef %567, double noundef %570, i1 noundef zeroext false, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef %571, ptr noundef %27, ptr noundef %29, ptr noundef %572)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %573

573:                                              ; preds = %586, %562
  %574 = load i64, ptr %12, align 8, !tbaa !11
  %575 = load i64, ptr %11, align 8, !tbaa !11
  %576 = sub nsw i64 %575, 1
  %577 = icmp sle i64 %574, %576
  br i1 %577, label %578, label %589

578:                                              ; preds = %573
  %579 = load ptr, ptr %4, align 8, !tbaa !9
  %580 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %579)
  %581 = fadd double 1.000000e+00, %580
  %582 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %583 = load ptr, ptr %582, align 8, !tbaa !15
  %584 = load i64, ptr %12, align 8, !tbaa !11
  %585 = getelementptr inbounds double, ptr %583, i64 %584
  store double %581, ptr %585, align 8, !tbaa !13
  br label %586

586:                                              ; preds = %578
  %587 = load i64, ptr %12, align 8, !tbaa !11
  %588 = add nsw i64 %587, 1
  store i64 %588, ptr %12, align 8, !tbaa !11
  br label %573, !llvm.loop !25

589:                                              ; preds = %573
  %590 = load i64, ptr %11, align 8, !tbaa !11
  %591 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl7lrlinesEPNS_9ae_matrixEPNS_9ae_vectorElPlPdS5_S5_S5_S5_S5_S5_PNS_8ae_stateE(ptr noundef %27, ptr noundef %29, i64 noundef %590, ptr noundef %25, ptr noundef %50, ptr noundef %51, ptr noundef %52, ptr noundef %53, ptr noundef %56, ptr noundef %57, ptr noundef %58, ptr noundef %591)
  %592 = load i64, ptr %25, align 8, !tbaa !11
  %593 = icmp ne i64 %592, 1
  br i1 %593, label %594, label %595

594:                                              ; preds = %589
  store i8 1, ptr %86, align 1, !tbaa !5
  br label %667

595:                                              ; preds = %589
  %596 = load i8, ptr %87, align 1, !tbaa !5, !range !18, !noundef !19
  %597 = trunc i8 %596 to i1
  br i1 %597, label %601, label %598

598:                                              ; preds = %595
  %599 = load double, ptr %58, align 8, !tbaa !13
  %600 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %599, double noundef 0x3FEFF7CED916872B)
  br label %601

601:                                              ; preds = %598, %595
  %602 = phi i1 [ true, %595 ], [ %600, %598 ]
  %603 = zext i1 %602 to i8
  store i8 %603, ptr %87, align 1, !tbaa !5
  %604 = load ptr, ptr %4, align 8, !tbaa !9
  %605 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %604)
  %606 = fmul double -5.000000e+00, %605
  %607 = load ptr, ptr %4, align 8, !tbaa !9
  %608 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %607)
  %609 = fmul double 5.000000e+00, %608
  %610 = load i64, ptr %11, align 8, !tbaa !11
  %611 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL27testlinregunit_generatetaskddddbddlPN11alglib_impl9ae_matrixEPNS_9ae_vectorEPNS_8ae_stateE(double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef %606, double noundef %609, i1 noundef zeroext false, double noundef 1.000000e+00, double noundef 1.000000e+00, i64 noundef %610, ptr noundef %27, ptr noundef %29, ptr noundef %611)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %612

612:                                              ; preds = %636, %601
  %613 = load i64, ptr %12, align 8, !tbaa !11
  %614 = load i64, ptr %11, align 8, !tbaa !11
  %615 = sub nsw i64 %614, 1
  %616 = icmp sle i64 %613, %615
  br i1 %616, label %617, label %639

617:                                              ; preds = %612
  %618 = load i64, ptr %12, align 8, !tbaa !11
  %619 = srem i64 %618, 2
  %620 = icmp eq i64 %619, 0
  br i1 %620, label %621, label %628

621:                                              ; preds = %617
  %622 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %623 = load ptr, ptr %622, align 8, !tbaa !15
  %624 = load i64, ptr %12, align 8, !tbaa !11
  %625 = getelementptr inbounds ptr, ptr %623, i64 %624
  %626 = load ptr, ptr %625, align 8, !tbaa !9
  %627 = getelementptr inbounds double, ptr %626, i64 1
  store double 5.000000e+00, ptr %627, align 8, !tbaa !13
  br label %635

628:                                              ; preds = %617
  %629 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %630 = load ptr, ptr %629, align 8, !tbaa !15
  %631 = load i64, ptr %12, align 8, !tbaa !11
  %632 = getelementptr inbounds ptr, ptr %630, i64 %631
  %633 = load ptr, ptr %632, align 8, !tbaa !9
  %634 = getelementptr inbounds double, ptr %633, i64 1
  store double -5.000000e+00, ptr %634, align 8, !tbaa !13
  br label %635

635:                                              ; preds = %628, %621
  br label %636

636:                                              ; preds = %635
  %637 = load i64, ptr %12, align 8, !tbaa !11
  %638 = add nsw i64 %637, 1
  store i64 %638, ptr %12, align 8, !tbaa !11
  br label %612, !llvm.loop !26

639:                                              ; preds = %612
  %640 = load i64, ptr %11, align 8, !tbaa !11
  %641 = srem i64 %640, 2
  %642 = icmp ne i64 %641, 0
  br i1 %642, label %643, label %651

643:                                              ; preds = %639
  %644 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %645 = load ptr, ptr %644, align 8, !tbaa !15
  %646 = load i64, ptr %11, align 8, !tbaa !11
  %647 = sub nsw i64 %646, 1
  %648 = getelementptr inbounds ptr, ptr %645, i64 %647
  %649 = load ptr, ptr %648, align 8, !tbaa !9
  %650 = getelementptr inbounds double, ptr %649, i64 1
  store double 0.000000e+00, ptr %650, align 8, !tbaa !13
  br label %651

651:                                              ; preds = %643, %639
  %652 = load i64, ptr %11, align 8, !tbaa !11
  %653 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl7lrlinesEPNS_9ae_matrixEPNS_9ae_vectorElPlPdS5_S5_S5_S5_S5_S5_PNS_8ae_stateE(ptr noundef %27, ptr noundef %29, i64 noundef %652, ptr noundef %25, ptr noundef %50, ptr noundef %51, ptr noundef %52, ptr noundef %53, ptr noundef %56, ptr noundef %57, ptr noundef %58, ptr noundef %653)
  %654 = load i64, ptr %25, align 8, !tbaa !11
  %655 = icmp ne i64 %654, 1
  br i1 %655, label %656, label %657

656:                                              ; preds = %651
  store i8 1, ptr %86, align 1, !tbaa !5
  br label %667

657:                                              ; preds = %651
  %658 = load i8, ptr %87, align 1, !tbaa !5, !range !18, !noundef !19
  %659 = trunc i8 %658 to i1
  br i1 %659, label %663, label %660

660:                                              ; preds = %657
  %661 = load double, ptr %58, align 8, !tbaa !13
  %662 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %661, double noundef 1.000000e-03)
  br label %663

663:                                              ; preds = %660, %657
  %664 = phi i1 [ true, %657 ], [ %662, %660 ]
  %665 = zext i1 %664 to i8
  store i8 %665, ptr %87, align 1, !tbaa !5
  br label %666

666:                                              ; preds = %663, %559
  br label %667

667:                                              ; preds = %666, %656, %594, %389
  %668 = load i64, ptr %16, align 8, !tbaa !11
  %669 = add nsw i64 %668, 1
  store i64 %669, ptr %16, align 8, !tbaa !11
  br label %235, !llvm.loop !27

670:                                              ; preds = %235
  br label %671

671:                                              ; preds = %670
  %672 = load i64, ptr %11, align 8, !tbaa !11
  %673 = add nsw i64 %672, 1
  store i64 %673, ptr %11, align 8, !tbaa !11
  br label %184, !llvm.loop !28

674:                                              ; preds = %184
  store i64 3, ptr %11, align 8, !tbaa !11
  br label %675

675:                                              ; preds = %881, %674
  %676 = load i64, ptr %11, align 8, !tbaa !11
  %677 = load i64, ptr %7, align 8, !tbaa !11
  %678 = icmp sle i64 %676, %677
  br i1 %678, label %679, label %884

679:                                              ; preds = %675
  %680 = load i64, ptr %11, align 8, !tbaa !11
  %681 = sub nsw i64 %680, 1
  %682 = add nsw i64 %681, 1
  %683 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %29, i64 noundef %682, ptr noundef %683)
  %684 = load i64, ptr %11, align 8, !tbaa !11
  %685 = sub nsw i64 %684, 1
  %686 = add nsw i64 %685, 1
  %687 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %27, i64 noundef %686, i64 noundef 2, ptr noundef %687)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %688

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

693:                                              ; preds = %688
  %694 = load ptr, ptr %4, align 8, !tbaa !9
  %695 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %694)
  %696 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %695, double -1.000000e+00)
  %697 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %698 = load ptr, ptr %697, align 8, !tbaa !15
  %699 = load i64, ptr %12, align 8, !tbaa !11
  %700 = getelementptr inbounds ptr, ptr %698, i64 %699
  %701 = load ptr, ptr %700, align 8, !tbaa !9
  %702 = getelementptr inbounds double, ptr %701, i64 0
  store double %696, ptr %702, align 8, !tbaa !13
  %703 = load ptr, ptr %4, align 8, !tbaa !9
  %704 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %703)
  %705 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %704, double -1.000000e+00)
  %706 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %707 = load ptr, ptr %706, align 8, !tbaa !15
  %708 = load i64, ptr %12, align 8, !tbaa !11
  %709 = getelementptr inbounds ptr, ptr %707, i64 %708
  %710 = load ptr, ptr %709, align 8, !tbaa !9
  %711 = getelementptr inbounds double, ptr %710, i64 1
  store double %705, ptr %711, align 8, !tbaa !13
  %712 = load ptr, ptr %4, align 8, !tbaa !9
  %713 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %712)
  %714 = fadd double 1.000000e+00, %713
  %715 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %716 = load ptr, ptr %715, align 8, !tbaa !15
  %717 = load i64, ptr %12, align 8, !tbaa !11
  %718 = getelementptr inbounds double, ptr %716, i64 %717
  store double %714, ptr %718, align 8, !tbaa !13
  br label %719

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

722:                                              ; preds = %688
  %723 = load i64, ptr %11, align 8, !tbaa !11
  %724 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl8lrbuildsEPNS_9ae_matrixEPNS_9ae_vectorEllPlPNS_11linearmodelEPNS_8lrreportEPNS_8ae_stateE(ptr noundef %27, ptr noundef %29, i64 noundef %723, i64 noundef 1, ptr noundef %25, ptr noundef %39, ptr noundef %63, ptr noundef %724)
  %725 = load i64, ptr %25, align 8, !tbaa !11
  %726 = icmp ne i64 %725, 1
  br i1 %726, label %727, label %728

727:                                              ; preds = %722
  store i8 1, ptr %92, align 1, !tbaa !5
  br label %881

728:                                              ; preds = %722
  %729 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl8lrunpackEPNS_11linearmodelEPNS_9ae_vectorEPlPNS_8ae_stateE(ptr noundef %39, ptr noundef %37, ptr noundef %15, ptr noundef %729)
  %730 = load i64, ptr %11, align 8, !tbaa !11
  %731 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl7lrlinesEPNS_9ae_matrixEPNS_9ae_vectorElPlPdS5_S5_S5_S5_S5_S5_PNS_8ae_stateE(ptr noundef %27, ptr noundef %29, i64 noundef %730, ptr noundef %26, ptr noundef %50, ptr noundef %51, ptr noundef %52, ptr noundef %53, ptr noundef %56, ptr noundef %57, ptr noundef %58, ptr noundef %731)
  %732 = load i8, ptr %89, align 1, !tbaa !5, !range !18, !noundef !19
  %733 = trunc i8 %732 to i1
  br i1 %733, label %745, label %734

734:                                              ; preds = %728
  %735 = load double, ptr %50, align 8, !tbaa !13
  %736 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %37, i32 0, i32 4
  %737 = load ptr, ptr %736, align 8, !tbaa !15
  %738 = getelementptr inbounds double, ptr %737, i64 1
  %739 = load double, ptr %738, align 8, !tbaa !13
  %740 = fsub double %735, %739
  %741 = load ptr, ptr %4, align 8, !tbaa !9
  %742 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %740, ptr noundef %741)
  %743 = load double, ptr %10, align 8, !tbaa !13
  %744 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %742, double noundef %743)
  br label %745

745:                                              ; preds = %734, %728
  %746 = phi i1 [ true, %728 ], [ %744, %734 ]
  %747 = zext i1 %746 to i8
  store i8 %747, ptr %89, align 1, !tbaa !5
  %748 = load i8, ptr %89, align 1, !tbaa !5, !range !18, !noundef !19
  %749 = trunc i8 %748 to i1
  br i1 %749, label %761, label %750

750:                                              ; preds = %745
  %751 = load double, ptr %51, align 8, !tbaa !13
  %752 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %37, i32 0, i32 4
  %753 = load ptr, ptr %752, align 8, !tbaa !15
  %754 = getelementptr inbounds double, ptr %753, i64 0
  %755 = load double, ptr %754, align 8, !tbaa !13
  %756 = fsub double %751, %755
  %757 = load ptr, ptr %4, align 8, !tbaa !9
  %758 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %756, ptr noundef %757)
  %759 = load double, ptr %10, align 8, !tbaa !13
  %760 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %758, double noundef %759)
  br label %761

761:                                              ; preds = %750, %745
  %762 = phi i1 [ true, %745 ], [ %760, %750 ]
  %763 = zext i1 %762 to i8
  store i8 %763, ptr %89, align 1, !tbaa !5
  %764 = load i8, ptr %88, align 1, !tbaa !5, !range !18, !noundef !19
  %765 = trunc i8 %764 to i1
  br i1 %765, label %780, label %766

766:                                              ; preds = %761
  %767 = load double, ptr %52, align 8, !tbaa !13
  %768 = getelementptr inbounds %"struct.alglib_impl::lrreport", ptr %63, i32 0, i32 0
  %769 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %768, i32 0, i32 6
  %770 = load ptr, ptr %769, align 8, !tbaa !15
  %771 = getelementptr inbounds ptr, ptr %770, i64 1
  %772 = load ptr, ptr %771, align 8, !tbaa !9
  %773 = getelementptr inbounds double, ptr %772, i64 1
  %774 = load double, ptr %773, align 8, !tbaa !13
  %775 = fsub double %767, %774
  %776 = load ptr, ptr %4, align 8, !tbaa !9
  %777 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %775, ptr noundef %776)
  %778 = load double, ptr %10, align 8, !tbaa !13
  %779 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %777, double noundef %778)
  br label %780

780:                                              ; preds = %766, %761
  %781 = phi i1 [ true, %761 ], [ %779, %766 ]
  %782 = zext i1 %781 to i8
  store i8 %782, ptr %88, align 1, !tbaa !5
  %783 = load i8, ptr %88, align 1, !tbaa !5, !range !18, !noundef !19
  %784 = trunc i8 %783 to i1
  br i1 %784, label %799, label %785

785:                                              ; preds = %780
  %786 = load double, ptr %53, align 8, !tbaa !13
  %787 = getelementptr inbounds %"struct.alglib_impl::lrreport", ptr %63, i32 0, i32 0
  %788 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %787, i32 0, i32 6
  %789 = load ptr, ptr %788, align 8, !tbaa !15
  %790 = getelementptr inbounds ptr, ptr %789, i64 0
  %791 = load ptr, ptr %790, align 8, !tbaa !9
  %792 = getelementptr inbounds double, ptr %791, i64 0
  %793 = load double, ptr %792, align 8, !tbaa !13
  %794 = fsub double %786, %793
  %795 = load ptr, ptr %4, align 8, !tbaa !9
  %796 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %794, ptr noundef %795)
  %797 = load double, ptr %10, align 8, !tbaa !13
  %798 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %796, double noundef %797)
  br label %799

799:                                              ; preds = %785, %780
  %800 = phi i1 [ true, %780 ], [ %798, %785 ]
  %801 = zext i1 %800 to i8
  store i8 %801, ptr %88, align 1, !tbaa !5
  %802 = load i8, ptr %88, align 1, !tbaa !5, !range !18, !noundef !19
  %803 = trunc i8 %802 to i1
  br i1 %803, label %818, label %804

804:                                              ; preds = %799
  %805 = load double, ptr %56, align 8, !tbaa !13
  %806 = getelementptr inbounds %"struct.alglib_impl::lrreport", ptr %63, i32 0, i32 0
  %807 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %806, i32 0, i32 6
  %808 = load ptr, ptr %807, align 8, !tbaa !15
  %809 = getelementptr inbounds ptr, ptr %808, i64 1
  %810 = load ptr, ptr %809, align 8, !tbaa !9
  %811 = getelementptr inbounds double, ptr %810, i64 0
  %812 = load double, ptr %811, align 8, !tbaa !13
  %813 = fsub double %805, %812
  %814 = load ptr, ptr %4, align 8, !tbaa !9
  %815 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %813, ptr noundef %814)
  %816 = load double, ptr %10, align 8, !tbaa !13
  %817 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %815, double noundef %816)
  br label %818

818:                                              ; preds = %804, %799
  %819 = phi i1 [ true, %799 ], [ %817, %804 ]
  %820 = zext i1 %819 to i8
  store i8 %820, ptr %88, align 1, !tbaa !5
  %821 = load i8, ptr %88, align 1, !tbaa !5, !range !18, !noundef !19
  %822 = trunc i8 %821 to i1
  br i1 %822, label %837, label %823

823:                                              ; preds = %818
  %824 = load double, ptr %56, align 8, !tbaa !13
  %825 = getelementptr inbounds %"struct.alglib_impl::lrreport", ptr %63, i32 0, i32 0
  %826 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %825, i32 0, i32 6
  %827 = load ptr, ptr %826, align 8, !tbaa !15
  %828 = getelementptr inbounds ptr, ptr %827, i64 0
  %829 = load ptr, ptr %828, align 8, !tbaa !9
  %830 = getelementptr inbounds double, ptr %829, i64 1
  %831 = load double, ptr %830, align 8, !tbaa !13
  %832 = fsub double %824, %831
  %833 = load ptr, ptr %4, align 8, !tbaa !9
  %834 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %832, ptr noundef %833)
  %835 = load double, ptr %10, align 8, !tbaa !13
  %836 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %834, double noundef %835)
  br label %837

837:                                              ; preds = %823, %818
  %838 = phi i1 [ true, %818 ], [ %836, %823 ]
  %839 = zext i1 %838 to i8
  store i8 %839, ptr %88, align 1, !tbaa !5
  %840 = load i64, ptr %11, align 8, !tbaa !11
  %841 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl7lrbuildEPNS_9ae_matrixEllPlPNS_11linearmodelEPNS_8lrreportEPNS_8ae_stateE(ptr noundef %27, i64 noundef %840, i64 noundef 1, ptr noundef %25, ptr noundef %39, ptr noundef %63, ptr noundef %841)
  %842 = load i64, ptr %25, align 8, !tbaa !11
  %843 = icmp ne i64 %842, 1
  br i1 %843, label %844, label %845

844:                                              ; preds = %837
  store i8 1, ptr %92, align 1, !tbaa !5
  br label %881

845:                                              ; preds = %837
  %846 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl8lrunpackEPNS_11linearmodelEPNS_9ae_vectorEPlPNS_8ae_stateE(ptr noundef %39, ptr noundef %37, ptr noundef %15, ptr noundef %846)
  %847 = load i64, ptr %11, align 8, !tbaa !11
  %848 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl6lrlineEPNS_9ae_matrixElPlPdS3_PNS_8ae_stateE(ptr noundef %27, i64 noundef %847, ptr noundef %26, ptr noundef %50, ptr noundef %51, ptr noundef %848)
  %849 = load i8, ptr %89, align 1, !tbaa !5, !range !18, !noundef !19
  %850 = trunc i8 %849 to i1
  br i1 %850, label %862, label %851

851:                                              ; preds = %845
  %852 = load double, ptr %50, align 8, !tbaa !13
  %853 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %37, i32 0, i32 4
  %854 = load ptr, ptr %853, align 8, !tbaa !15
  %855 = getelementptr inbounds double, ptr %854, i64 1
  %856 = load double, ptr %855, align 8, !tbaa !13
  %857 = fsub double %852, %856
  %858 = load ptr, ptr %4, align 8, !tbaa !9
  %859 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %857, ptr noundef %858)
  %860 = load double, ptr %10, align 8, !tbaa !13
  %861 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %859, double noundef %860)
  br label %862

862:                                              ; preds = %851, %845
  %863 = phi i1 [ true, %845 ], [ %861, %851 ]
  %864 = zext i1 %863 to i8
  store i8 %864, ptr %89, align 1, !tbaa !5
  %865 = load i8, ptr %89, align 1, !tbaa !5, !range !18, !noundef !19
  %866 = trunc i8 %865 to i1
  br i1 %866, label %878, label %867

867:                                              ; preds = %862
  %868 = load double, ptr %51, align 8, !tbaa !13
  %869 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %37, i32 0, i32 4
  %870 = load ptr, ptr %869, align 8, !tbaa !15
  %871 = getelementptr inbounds double, ptr %870, i64 0
  %872 = load double, ptr %871, align 8, !tbaa !13
  %873 = fsub double %868, %872
  %874 = load ptr, ptr %4, align 8, !tbaa !9
  %875 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %873, ptr noundef %874)
  %876 = load double, ptr %10, align 8, !tbaa !13
  %877 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %875, double noundef %876)
  br label %878

878:                                              ; preds = %867, %862
  %879 = phi i1 [ true, %862 ], [ %877, %867 ]
  %880 = zext i1 %879 to i8
  store i8 %880, ptr %89, align 1, !tbaa !5
  br label %881

881:                                              ; preds = %878, %844, %727
  %882 = load i64, ptr %11, align 8, !tbaa !11
  %883 = add nsw i64 %882, 1
  store i64 %883, ptr %11, align 8, !tbaa !11
  br label %675, !llvm.loop !30

884:                                              ; preds = %675
  %885 = load ptr, ptr %4, align 8, !tbaa !9
  %886 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 3000, ptr noundef %885)
  %887 = add nsw i64 1000, %886
  store i64 %887, ptr %11, align 8, !tbaa !11
  %888 = load ptr, ptr %4, align 8, !tbaa !9
  %889 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %888)
  %890 = call double @llvm.fmuladd.f64(double %889, double 1.900000e+00, double 1.000000e-01)
  store double %890, ptr %81, align 8, !tbaa !13
  %891 = load i64, ptr %11, align 8, !tbaa !11
  %892 = sub nsw i64 %891, 1
  %893 = add nsw i64 %892, 1
  %894 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %27, i64 noundef %893, i64 noundef 2, ptr noundef %894)
  %895 = load i64, ptr %11, align 8, !tbaa !11
  %896 = sub nsw i64 %895, 1
  %897 = add nsw i64 %896, 1
  %898 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %29, i64 noundef %897, ptr noundef %898)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %899

899:                                              ; preds = %937, %884
  %900 = load i64, ptr %12, align 8, !tbaa !11
  %901 = load i64, ptr %11, align 8, !tbaa !11
  %902 = sub nsw i64 %901, 1
  %903 = icmp sle i64 %900, %902
  br i1 %903, label %904, label %940

904:                                              ; preds = %899
  %905 = load ptr, ptr %4, align 8, !tbaa !9
  %906 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %905)
  %907 = call double @llvm.fmuladd.f64(double 1.500000e+00, double %906, double -5.000000e-01)
  %908 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %909 = load ptr, ptr %908, align 8, !tbaa !15
  %910 = load i64, ptr %12, align 8, !tbaa !11
  %911 = getelementptr inbounds ptr, ptr %909, i64 %910
  %912 = load ptr, ptr %911, align 8, !tbaa !9
  %913 = getelementptr inbounds double, ptr %912, i64 0
  store double %907, ptr %913, align 8, !tbaa !13
  %914 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %915 = load ptr, ptr %914, align 8, !tbaa !15
  %916 = load i64, ptr %12, align 8, !tbaa !11
  %917 = getelementptr inbounds ptr, ptr %915, i64 %916
  %918 = load ptr, ptr %917, align 8, !tbaa !9
  %919 = getelementptr inbounds double, ptr %918, i64 0
  %920 = load double, ptr %919, align 8, !tbaa !13
  %921 = call double @llvm.fmuladd.f64(double 1.200000e+00, double %920, double -3.000000e-01)
  %922 = load double, ptr %81, align 8, !tbaa !13
  %923 = load ptr, ptr %4, align 8, !tbaa !9
  %924 = call noundef double @_ZL29testlinregunit_generatenormalddPN11alglib_impl8ae_stateE(double noundef 0.000000e+00, double noundef %922, ptr noundef %923)
  %925 = fadd double %921, %924
  %926 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %927 = load ptr, ptr %926, align 8, !tbaa !15
  %928 = load i64, ptr %12, align 8, !tbaa !11
  %929 = getelementptr inbounds ptr, ptr %927, i64 %928
  %930 = load ptr, ptr %929, align 8, !tbaa !9
  %931 = getelementptr inbounds double, ptr %930, i64 1
  store double %925, ptr %931, align 8, !tbaa !13
  %932 = load double, ptr %81, align 8, !tbaa !13
  %933 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %934 = load ptr, ptr %933, align 8, !tbaa !15
  %935 = load i64, ptr %12, align 8, !tbaa !11
  %936 = getelementptr inbounds double, ptr %934, i64 %935
  store double %932, ptr %936, align 8, !tbaa !13
  br label %937

937:                                              ; preds = %904
  %938 = load i64, ptr %12, align 8, !tbaa !11
  %939 = add nsw i64 %938, 1
  store i64 %939, ptr %12, align 8, !tbaa !11
  br label %899, !llvm.loop !31

940:                                              ; preds = %899
  %941 = load i64, ptr %11, align 8, !tbaa !11
  %942 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl7lrbuildEPNS_9ae_matrixEllPlPNS_11linearmodelEPNS_8lrreportEPNS_8ae_stateE(ptr noundef %27, i64 noundef %941, i64 noundef 1, ptr noundef %25, ptr noundef %39, ptr noundef %63, ptr noundef %942)
  %943 = load i64, ptr %11, align 8, !tbaa !11
  %944 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl7lrlinesEPNS_9ae_matrixEPNS_9ae_vectorElPlPdS5_S5_S5_S5_S5_S5_PNS_8ae_stateE(ptr noundef %27, ptr noundef %29, i64 noundef %943, ptr noundef %26, ptr noundef %50, ptr noundef %51, ptr noundef %52, ptr noundef %53, ptr noundef %56, ptr noundef %57, ptr noundef %58, ptr noundef %944)
  %945 = load i64, ptr %25, align 8, !tbaa !11
  %946 = icmp ne i64 %945, 1
  br i1 %946, label %950, label %947

947:                                              ; preds = %940
  %948 = load i64, ptr %26, align 8, !tbaa !11
  %949 = icmp ne i64 %948, 1
  br i1 %949, label %950, label %951

950:                                              ; preds = %947, %940
  store i8 1, ptr %92, align 1, !tbaa !5
  br label %1040

951:                                              ; preds = %947
  %952 = load i8, ptr %88, align 1, !tbaa !5, !range !18, !noundef !19
  %953 = trunc i8 %952 to i1
  br i1 %953, label %971, label %954

954:                                              ; preds = %951
  %955 = getelementptr inbounds %"struct.alglib_impl::lrreport", ptr %63, i32 0, i32 0
  %956 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %955, i32 0, i32 6
  %957 = load ptr, ptr %956, align 8, !tbaa !15
  %958 = getelementptr inbounds ptr, ptr %957, i64 0
  %959 = load ptr, ptr %958, align 8, !tbaa !9
  %960 = getelementptr inbounds double, ptr %959, i64 0
  %961 = load double, ptr %960, align 8, !tbaa !13
  %962 = load double, ptr %53, align 8, !tbaa !13
  %963 = fdiv double %961, %962
  %964 = load ptr, ptr %4, align 8, !tbaa !9
  %965 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef %963, ptr noundef %964)
  %966 = load ptr, ptr %4, align 8, !tbaa !9
  %967 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %965, ptr noundef %966)
  %968 = load ptr, ptr %4, align 8, !tbaa !9
  %969 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 1.200000e+00, ptr noundef %968)
  %970 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %967, double noundef %969)
  br label %971

971:                                              ; preds = %954, %951
  %972 = phi i1 [ true, %951 ], [ %970, %954 ]
  %973 = zext i1 %972 to i8
  store i8 %973, ptr %88, align 1, !tbaa !5
  %974 = load i8, ptr %88, align 1, !tbaa !5, !range !18, !noundef !19
  %975 = trunc i8 %974 to i1
  br i1 %975, label %993, label %976

976:                                              ; preds = %971
  %977 = getelementptr inbounds %"struct.alglib_impl::lrreport", ptr %63, i32 0, i32 0
  %978 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %977, i32 0, i32 6
  %979 = load ptr, ptr %978, align 8, !tbaa !15
  %980 = getelementptr inbounds ptr, ptr %979, i64 1
  %981 = load ptr, ptr %980, align 8, !tbaa !9
  %982 = getelementptr inbounds double, ptr %981, i64 1
  %983 = load double, ptr %982, align 8, !tbaa !13
  %984 = load double, ptr %52, align 8, !tbaa !13
  %985 = fdiv double %983, %984
  %986 = load ptr, ptr %4, align 8, !tbaa !9
  %987 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef %985, ptr noundef %986)
  %988 = load ptr, ptr %4, align 8, !tbaa !9
  %989 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %987, ptr noundef %988)
  %990 = load ptr, ptr %4, align 8, !tbaa !9
  %991 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 1.200000e+00, ptr noundef %990)
  %992 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %989, double noundef %991)
  br label %993

993:                                              ; preds = %976, %971
  %994 = phi i1 [ true, %971 ], [ %992, %976 ]
  %995 = zext i1 %994 to i8
  store i8 %995, ptr %88, align 1, !tbaa !5
  %996 = load i8, ptr %88, align 1, !tbaa !5, !range !18, !noundef !19
  %997 = trunc i8 %996 to i1
  br i1 %997, label %1015, label %998

998:                                              ; preds = %993
  %999 = getelementptr inbounds %"struct.alglib_impl::lrreport", ptr %63, i32 0, i32 0
  %1000 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %999, i32 0, i32 6
  %1001 = load ptr, ptr %1000, align 8, !tbaa !15
  %1002 = getelementptr inbounds ptr, ptr %1001, i64 0
  %1003 = load ptr, ptr %1002, align 8, !tbaa !9
  %1004 = getelementptr inbounds double, ptr %1003, i64 1
  %1005 = load double, ptr %1004, align 8, !tbaa !13
  %1006 = load double, ptr %56, align 8, !tbaa !13
  %1007 = fdiv double %1005, %1006
  %1008 = load ptr, ptr %4, align 8, !tbaa !9
  %1009 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef %1007, ptr noundef %1008)
  %1010 = load ptr, ptr %4, align 8, !tbaa !9
  %1011 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1009, ptr noundef %1010)
  %1012 = load ptr, ptr %4, align 8, !tbaa !9
  %1013 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 1.200000e+00, ptr noundef %1012)
  %1014 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1011, double noundef %1013)
  br label %1015

1015:                                             ; preds = %998, %993
  %1016 = phi i1 [ true, %993 ], [ %1014, %998 ]
  %1017 = zext i1 %1016 to i8
  store i8 %1017, ptr %88, align 1, !tbaa !5
  %1018 = load i8, ptr %88, align 1, !tbaa !5, !range !18, !noundef !19
  %1019 = trunc i8 %1018 to i1
  br i1 %1019, label %1037, label %1020

1020:                                             ; preds = %1015
  %1021 = getelementptr inbounds %"struct.alglib_impl::lrreport", ptr %63, i32 0, i32 0
  %1022 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1021, i32 0, i32 6
  %1023 = load ptr, ptr %1022, align 8, !tbaa !15
  %1024 = getelementptr inbounds ptr, ptr %1023, i64 1
  %1025 = load ptr, ptr %1024, align 8, !tbaa !9
  %1026 = getelementptr inbounds double, ptr %1025, i64 0
  %1027 = load double, ptr %1026, align 8, !tbaa !13
  %1028 = load double, ptr %56, align 8, !tbaa !13
  %1029 = fdiv double %1027, %1028
  %1030 = load ptr, ptr %4, align 8, !tbaa !9
  %1031 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef %1029, ptr noundef %1030)
  %1032 = load ptr, ptr %4, align 8, !tbaa !9
  %1033 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1031, ptr noundef %1032)
  %1034 = load ptr, ptr %4, align 8, !tbaa !9
  %1035 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 1.200000e+00, ptr noundef %1034)
  %1036 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1033, double noundef %1035)
  br label %1037

1037:                                             ; preds = %1020, %1015
  %1038 = phi i1 [ true, %1015 ], [ %1036, %1020 ]
  %1039 = zext i1 %1038 to i8
  store i8 %1039, ptr %88, align 1, !tbaa !5
  br label %1040

1040:                                             ; preds = %1037, %950
  store i64 0, ptr %21, align 8, !tbaa !11
  store i64 -1, ptr %22, align 8, !tbaa !11
  store i64 0, ptr %23, align 8, !tbaa !11
  store i64 -1, ptr %24, align 8, !tbaa !11
  store i64 0, ptr %20, align 8, !tbaa !11
  br label %1041

1041:                                             ; preds = %2339, %1040
  %1042 = load i64, ptr %20, align 8, !tbaa !11
  %1043 = icmp sle i64 %1042, 1
  br i1 %1043, label %1044, label %2342

1044:                                             ; preds = %1041
  store i64 0, ptr %19, align 8, !tbaa !11
  br label %1045

1045:                                             ; preds = %2335, %1044
  %1046 = load i64, ptr %19, align 8, !tbaa !11
  %1047 = icmp sle i64 %1046, 3
  br i1 %1047, label %1048, label %2338

1048:                                             ; preds = %1045
  %1049 = load i64, ptr %19, align 8, !tbaa !11
  %1050 = icmp eq i64 %1049, 0
  br i1 %1050, label %1051, label %1052

1051:                                             ; preds = %1048
  store i64 1, ptr %21, align 8, !tbaa !11
  store i64 3, ptr %22, align 8, !tbaa !11
  br label %1052

1052:                                             ; preds = %1051, %1048
  %1053 = load i64, ptr %19, align 8, !tbaa !11
  %1054 = icmp eq i64 %1053, 1
  br i1 %1054, label %1055, label %1056

1055:                                             ; preds = %1052
  store i64 9, ptr %21, align 8, !tbaa !11
  store i64 9, ptr %22, align 8, !tbaa !11
  br label %1056

1056:                                             ; preds = %1055, %1052
  %1057 = load i64, ptr %19, align 8, !tbaa !11
  %1058 = icmp eq i64 %1057, 2
  br i1 %1058, label %1062, label %1059

1059:                                             ; preds = %1056
  %1060 = load i64, ptr %19, align 8, !tbaa !11
  %1061 = icmp eq i64 %1060, 3
  br i1 %1061, label %1062, label %1063

1062:                                             ; preds = %1059, %1056
  store i64 9, ptr %21, align 8, !tbaa !11
  store i64 9, ptr %22, align 8, !tbaa !11
  br label %1063

1063:                                             ; preds = %1062, %1059
  %1064 = load i64, ptr %21, align 8, !tbaa !11
  store i64 %1064, ptr %18, align 8, !tbaa !11
  br label %1065

1065:                                             ; preds = %2331, %1063
  %1066 = load i64, ptr %18, align 8, !tbaa !11
  %1067 = load i64, ptr %22, align 8, !tbaa !11
  %1068 = icmp sle i64 %1066, %1067
  br i1 %1068, label %1069, label %2334

1069:                                             ; preds = %1065
  %1070 = load i64, ptr %19, align 8, !tbaa !11
  %1071 = icmp eq i64 %1070, 0
  br i1 %1071, label %1072, label %1077

1072:                                             ; preds = %1069
  %1073 = load i64, ptr %18, align 8, !tbaa !11
  %1074 = add nsw i64 %1073, 3
  store i64 %1074, ptr %23, align 8, !tbaa !11
  %1075 = load i64, ptr %18, align 8, !tbaa !11
  %1076 = add nsw i64 %1075, 20
  store i64 %1076, ptr %24, align 8, !tbaa !11
  br label %1077

1077:                                             ; preds = %1072, %1069
  %1078 = load i64, ptr %19, align 8, !tbaa !11
  %1079 = icmp eq i64 %1078, 1
  br i1 %1079, label %1080, label %1085

1080:                                             ; preds = %1077
  %1081 = load ptr, ptr %4, align 8, !tbaa !9
  %1082 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 70, ptr noundef %1081)
  %1083 = add nsw i64 70, %1082
  store i64 %1083, ptr %23, align 8, !tbaa !11
  %1084 = load i64, ptr %23, align 8, !tbaa !11
  store i64 %1084, ptr %24, align 8, !tbaa !11
  br label %1085

1085:                                             ; preds = %1080, %1077
  %1086 = load i64, ptr %19, align 8, !tbaa !11
  %1087 = icmp eq i64 %1086, 2
  br i1 %1087, label %1091, label %1088

1088:                                             ; preds = %1085
  %1089 = load i64, ptr %19, align 8, !tbaa !11
  %1090 = icmp eq i64 %1089, 3
  br i1 %1090, label %1091, label %1093

1091:                                             ; preds = %1088, %1085
  store i64 100, ptr %23, align 8, !tbaa !11
  %1092 = load i64, ptr %23, align 8, !tbaa !11
  store i64 %1092, ptr %24, align 8, !tbaa !11
  br label %1093

1093:                                             ; preds = %1091, %1088
  %1094 = load i64, ptr %23, align 8, !tbaa !11
  store i64 %1094, ptr %11, align 8, !tbaa !11
  br label %1095

1095:                                             ; preds = %2327, %1093
  %1096 = load i64, ptr %11, align 8, !tbaa !11
  %1097 = load i64, ptr %24, align 8, !tbaa !11
  %1098 = icmp sle i64 %1096, %1097
  br i1 %1098, label %1099, label %2330

1099:                                             ; preds = %1095
  %1100 = load i64, ptr %11, align 8, !tbaa !11
  %1101 = sub nsw i64 %1100, 1
  %1102 = add nsw i64 %1101, 1
  %1103 = load i64, ptr %18, align 8, !tbaa !11
  %1104 = add nsw i64 %1103, 1
  %1105 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %27, i64 noundef %1102, i64 noundef %1104, ptr noundef %1105)
  %1106 = load i64, ptr %11, align 8, !tbaa !11
  %1107 = sub nsw i64 %1106, 1
  %1108 = add nsw i64 %1107, 1
  %1109 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %36, i64 noundef %1108, ptr noundef %1109)
  %1110 = load i64, ptr %11, align 8, !tbaa !11
  %1111 = sub nsw i64 %1110, 1
  %1112 = add nsw i64 %1111, 1
  %1113 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %29, i64 noundef %1112, ptr noundef %1113)
  store double 1.000000e-03, ptr %80, align 8, !tbaa !13
  store double 2.000000e-01, ptr %79, align 8, !tbaa !13
  %1114 = load i64, ptr %19, align 8, !tbaa !11
  %1115 = icmp eq i64 %1114, 0
  br i1 %1115, label %1116, label %1225

1116:                                             ; preds = %1099
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %1117

1117:                                             ; preds = %1132, %1116
  %1118 = load i64, ptr %12, align 8, !tbaa !11
  %1119 = load i64, ptr %11, align 8, !tbaa !11
  %1120 = sub nsw i64 %1119, 1
  %1121 = icmp sle i64 %1118, %1120
  br i1 %1121, label %1122, label %1135

1122:                                             ; preds = %1117
  %1123 = load ptr, ptr %4, align 8, !tbaa !9
  %1124 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1123)
  %1125 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %1124, double -1.000000e+00)
  %1126 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %1127 = load ptr, ptr %1126, align 8, !tbaa !15
  %1128 = load i64, ptr %12, align 8, !tbaa !11
  %1129 = getelementptr inbounds ptr, ptr %1127, i64 %1128
  %1130 = load ptr, ptr %1129, align 8, !tbaa !9
  %1131 = getelementptr inbounds double, ptr %1130, i64 0
  store double %1125, ptr %1131, align 8, !tbaa !13
  br label %1132

1132:                                             ; preds = %1122
  %1133 = load i64, ptr %12, align 8, !tbaa !11
  %1134 = add nsw i64 %1133, 1
  store i64 %1134, ptr %12, align 8, !tbaa !11
  br label %1117, !llvm.loop !32

1135:                                             ; preds = %1117
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %1136

1136:                                             ; preds = %1176, %1135
  %1137 = load i64, ptr %12, align 8, !tbaa !11
  %1138 = load i64, ptr %11, align 8, !tbaa !11
  %1139 = sub nsw i64 %1138, 1
  %1140 = icmp sle i64 %1137, %1139
  br i1 %1140, label %1141, label %1179

1141:                                             ; preds = %1136
  store i64 1, ptr %13, align 8, !tbaa !11
  br label %1142

1142:                                             ; preds = %1172, %1141
  %1143 = load i64, ptr %13, align 8, !tbaa !11
  %1144 = load i64, ptr %18, align 8, !tbaa !11
  %1145 = sub nsw i64 %1144, 1
  %1146 = icmp sle i64 %1143, %1145
  br i1 %1146, label %1147, label %1175

1147:                                             ; preds = %1142
  %1148 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %1149 = load ptr, ptr %1148, align 8, !tbaa !15
  %1150 = load i64, ptr %12, align 8, !tbaa !11
  %1151 = getelementptr inbounds ptr, ptr %1149, i64 %1150
  %1152 = load ptr, ptr %1151, align 8, !tbaa !9
  %1153 = getelementptr inbounds double, ptr %1152, i64 0
  %1154 = load double, ptr %1153, align 8, !tbaa !13
  %1155 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %1156 = load ptr, ptr %1155, align 8, !tbaa !15
  %1157 = load i64, ptr %12, align 8, !tbaa !11
  %1158 = getelementptr inbounds ptr, ptr %1156, i64 %1157
  %1159 = load ptr, ptr %1158, align 8, !tbaa !9
  %1160 = load i64, ptr %13, align 8, !tbaa !11
  %1161 = sub nsw i64 %1160, 1
  %1162 = getelementptr inbounds double, ptr %1159, i64 %1161
  %1163 = load double, ptr %1162, align 8, !tbaa !13
  %1164 = fmul double %1154, %1163
  %1165 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %1166 = load ptr, ptr %1165, align 8, !tbaa !15
  %1167 = load i64, ptr %12, align 8, !tbaa !11
  %1168 = getelementptr inbounds ptr, ptr %1166, i64 %1167
  %1169 = load ptr, ptr %1168, align 8, !tbaa !9
  %1170 = load i64, ptr %13, align 8, !tbaa !11
  %1171 = getelementptr inbounds double, ptr %1169, i64 %1170
  store double %1164, ptr %1171, align 8, !tbaa !13
  br label %1172

1172:                                             ; preds = %1147
  %1173 = load i64, ptr %13, align 8, !tbaa !11
  %1174 = add nsw i64 %1173, 1
  store i64 %1174, ptr %13, align 8, !tbaa !11
  br label %1142, !llvm.loop !33

1175:                                             ; preds = %1142
  br label %1176

1176:                                             ; preds = %1175
  %1177 = load i64, ptr %12, align 8, !tbaa !11
  %1178 = add nsw i64 %1177, 1
  store i64 %1178, ptr %12, align 8, !tbaa !11
  br label %1136, !llvm.loop !34

1179:                                             ; preds = %1136
  %1180 = load ptr, ptr %4, align 8, !tbaa !9
  %1181 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1180)
  %1182 = fmul double %1181, 0x400921FB54442D18
  store double %1182, ptr %77, align 8, !tbaa !13
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %1183

1183:                                             ; preds = %1221, %1179
  %1184 = load i64, ptr %12, align 8, !tbaa !11
  %1185 = load i64, ptr %11, align 8, !tbaa !11
  %1186 = sub nsw i64 %1185, 1
  %1187 = icmp sle i64 %1184, %1186
  br i1 %1187, label %1188, label %1224

1188:                                             ; preds = %1183
  %1189 = load double, ptr %77, align 8, !tbaa !13
  %1190 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %1191 = load ptr, ptr %1190, align 8, !tbaa !15
  %1192 = load i64, ptr %12, align 8, !tbaa !11
  %1193 = getelementptr inbounds ptr, ptr %1191, i64 %1192
  %1194 = load ptr, ptr %1193, align 8, !tbaa !9
  %1195 = getelementptr inbounds double, ptr %1194, i64 0
  %1196 = load double, ptr %1195, align 8, !tbaa !13
  %1197 = fadd double %1196, 1.000000e+00
  %1198 = call double @llvm.fmuladd.f64(double 0x3FF921FB54442D18, double %1197, double %1189)
  %1199 = load ptr, ptr %4, align 8, !tbaa !9
  %1200 = call noundef double @_ZN11alglib_impl6ae_sinEdPNS_8ae_stateE(double noundef %1198, ptr noundef %1199)
  %1201 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %36, i32 0, i32 4
  %1202 = load ptr, ptr %1201, align 8, !tbaa !15
  %1203 = load i64, ptr %12, align 8, !tbaa !11
  %1204 = getelementptr inbounds double, ptr %1202, i64 %1203
  store double %1200, ptr %1204, align 8, !tbaa !13
  %1205 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %36, i32 0, i32 4
  %1206 = load ptr, ptr %1205, align 8, !tbaa !15
  %1207 = load i64, ptr %12, align 8, !tbaa !11
  %1208 = getelementptr inbounds double, ptr %1206, i64 %1207
  %1209 = load double, ptr %1208, align 8, !tbaa !13
  %1210 = load double, ptr %79, align 8, !tbaa !13
  %1211 = load ptr, ptr %4, align 8, !tbaa !9
  %1212 = call noundef double @_ZL29testlinregunit_generatenormalddPN11alglib_impl8ae_stateE(double noundef 0.000000e+00, double noundef 1.000000e+00, ptr noundef %1211)
  %1213 = call double @llvm.fmuladd.f64(double %1210, double %1212, double %1209)
  %1214 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %1215 = load ptr, ptr %1214, align 8, !tbaa !15
  %1216 = load i64, ptr %12, align 8, !tbaa !11
  %1217 = getelementptr inbounds ptr, ptr %1215, i64 %1216
  %1218 = load ptr, ptr %1217, align 8, !tbaa !9
  %1219 = load i64, ptr %18, align 8, !tbaa !11
  %1220 = getelementptr inbounds double, ptr %1218, i64 %1219
  store double %1213, ptr %1220, align 8, !tbaa !13
  br label %1221

1221:                                             ; preds = %1188
  %1222 = load i64, ptr %12, align 8, !tbaa !11
  %1223 = add nsw i64 %1222, 1
  store i64 %1223, ptr %12, align 8, !tbaa !11
  br label %1183, !llvm.loop !35

1224:                                             ; preds = %1183
  br label %1225

1225:                                             ; preds = %1224, %1099
  %1226 = load i64, ptr %19, align 8, !tbaa !11
  %1227 = icmp eq i64 %1226, 1
  br i1 %1227, label %1228, label %1344

1228:                                             ; preds = %1225
  %1229 = load i64, ptr %18, align 8, !tbaa !11
  %1230 = icmp eq i64 %1229, 9
  %1231 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1230, ptr noundef @.str.26, ptr noundef %1231)
  %1232 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %33, i64 noundef 9, ptr noundef %1232)
  %1233 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %33, i32 0, i32 4
  %1234 = load ptr, ptr %1233, align 8, !tbaa !15
  %1235 = getelementptr inbounds double, ptr %1234, i64 0
  store double 1.000000e+00, ptr %1235, align 8, !tbaa !13
  %1236 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %33, i32 0, i32 4
  %1237 = load ptr, ptr %1236, align 8, !tbaa !15
  %1238 = getelementptr inbounds double, ptr %1237, i64 1
  store double 2.000000e+00, ptr %1238, align 8, !tbaa !13
  %1239 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %33, i32 0, i32 4
  %1240 = load ptr, ptr %1239, align 8, !tbaa !15
  %1241 = getelementptr inbounds double, ptr %1240, i64 2
  store double 3.000000e+00, ptr %1241, align 8, !tbaa !13
  %1242 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %33, i32 0, i32 4
  %1243 = load ptr, ptr %1242, align 8, !tbaa !15
  %1244 = getelementptr inbounds double, ptr %1243, i64 3
  store double 2.500000e-01, ptr %1244, align 8, !tbaa !13
  %1245 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %33, i32 0, i32 4
  %1246 = load ptr, ptr %1245, align 8, !tbaa !15
  %1247 = getelementptr inbounds double, ptr %1246, i64 4
  store double 5.000000e-01, ptr %1247, align 8, !tbaa !13
  %1248 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %33, i32 0, i32 4
  %1249 = load ptr, ptr %1248, align 8, !tbaa !15
  %1250 = getelementptr inbounds double, ptr %1249, i64 5
  store double 7.500000e-01, ptr %1250, align 8, !tbaa !13
  %1251 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %33, i32 0, i32 4
  %1252 = load ptr, ptr %1251, align 8, !tbaa !15
  %1253 = getelementptr inbounds double, ptr %1252, i64 6
  store double 6.000000e-02, ptr %1253, align 8, !tbaa !13
  %1254 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %33, i32 0, i32 4
  %1255 = load ptr, ptr %1254, align 8, !tbaa !15
  %1256 = getelementptr inbounds double, ptr %1255, i64 7
  store double 1.200000e-01, ptr %1256, align 8, !tbaa !13
  %1257 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %33, i32 0, i32 4
  %1258 = load ptr, ptr %1257, align 8, !tbaa !15
  %1259 = getelementptr inbounds double, ptr %1258, i64 8
  store double 1.800000e-01, ptr %1259, align 8, !tbaa !13
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %1260

1260:                                             ; preds = %1340, %1228
  %1261 = load i64, ptr %12, align 8, !tbaa !11
  %1262 = load i64, ptr %11, align 8, !tbaa !11
  %1263 = sub nsw i64 %1262, 1
  %1264 = icmp sle i64 %1261, %1263
  br i1 %1264, label %1265, label %1343

1265:                                             ; preds = %1260
  store i64 0, ptr %13, align 8, !tbaa !11
  br label %1266

1266:                                             ; preds = %1279, %1265
  %1267 = load i64, ptr %13, align 8, !tbaa !11
  %1268 = load i64, ptr %18, align 8, !tbaa !11
  %1269 = sub nsw i64 %1268, 1
  %1270 = icmp sle i64 %1267, %1269
  br i1 %1270, label %1271, label %1282

1271:                                             ; preds = %1266
  %1272 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %1273 = load ptr, ptr %1272, align 8, !tbaa !15
  %1274 = load i64, ptr %12, align 8, !tbaa !11
  %1275 = getelementptr inbounds ptr, ptr %1273, i64 %1274
  %1276 = load ptr, ptr %1275, align 8, !tbaa !9
  %1277 = load i64, ptr %13, align 8, !tbaa !11
  %1278 = getelementptr inbounds double, ptr %1276, i64 %1277
  store double 0.000000e+00, ptr %1278, align 8, !tbaa !13
  br label %1279

1279:                                             ; preds = %1271
  %1280 = load i64, ptr %13, align 8, !tbaa !11
  %1281 = add nsw i64 %1280, 1
  store i64 %1281, ptr %13, align 8, !tbaa !11
  br label %1266, !llvm.loop !36

1282:                                             ; preds = %1266
  %1283 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %1284 = load ptr, ptr %1283, align 8, !tbaa !15
  %1285 = load i64, ptr %12, align 8, !tbaa !11
  %1286 = getelementptr inbounds ptr, ptr %1284, i64 %1285
  %1287 = load ptr, ptr %1286, align 8, !tbaa !9
  %1288 = load i64, ptr %12, align 8, !tbaa !11
  %1289 = srem i64 %1288, 3
  %1290 = add nsw i64 0, %1289
  %1291 = getelementptr inbounds double, ptr %1287, i64 %1290
  store double 1.000000e+00, ptr %1291, align 8, !tbaa !13
  %1292 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %1293 = load ptr, ptr %1292, align 8, !tbaa !15
  %1294 = load i64, ptr %12, align 8, !tbaa !11
  %1295 = getelementptr inbounds ptr, ptr %1293, i64 %1294
  %1296 = load ptr, ptr %1295, align 8, !tbaa !9
  %1297 = load i64, ptr %12, align 8, !tbaa !11
  %1298 = sdiv i64 %1297, 3
  %1299 = srem i64 %1298, 3
  %1300 = add nsw i64 3, %1299
  %1301 = getelementptr inbounds double, ptr %1296, i64 %1300
  store double 1.000000e+00, ptr %1301, align 8, !tbaa !13
  %1302 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %1303 = load ptr, ptr %1302, align 8, !tbaa !15
  %1304 = load i64, ptr %12, align 8, !tbaa !11
  %1305 = getelementptr inbounds ptr, ptr %1303, i64 %1304
  %1306 = load ptr, ptr %1305, align 8, !tbaa !9
  %1307 = load i64, ptr %12, align 8, !tbaa !11
  %1308 = sdiv i64 %1307, 9
  %1309 = srem i64 %1308, 3
  %1310 = add nsw i64 6, %1309
  %1311 = getelementptr inbounds double, ptr %1306, i64 %1310
  store double 1.000000e+00, ptr %1311, align 8, !tbaa !13
  %1312 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %1313 = load ptr, ptr %1312, align 8, !tbaa !15
  %1314 = load i64, ptr %12, align 8, !tbaa !11
  %1315 = getelementptr inbounds ptr, ptr %1313, i64 %1314
  %1316 = load ptr, ptr %1315, align 8, !tbaa !9
  %1317 = getelementptr inbounds double, ptr %1316, i64 0
  %1318 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %33, i32 0, i32 4
  %1319 = load ptr, ptr %1318, align 8, !tbaa !15
  %1320 = getelementptr inbounds double, ptr %1319, i64 0
  %1321 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef 8)
  %1322 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %1317, i64 noundef 1, ptr noundef %1320, i64 noundef 1, i64 noundef %1321)
  store double %1322, ptr %68, align 8, !tbaa !13
  %1323 = load double, ptr %68, align 8, !tbaa !13
  %1324 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %36, i32 0, i32 4
  %1325 = load ptr, ptr %1324, align 8, !tbaa !15
  %1326 = load i64, ptr %12, align 8, !tbaa !11
  %1327 = getelementptr inbounds double, ptr %1325, i64 %1326
  store double %1323, ptr %1327, align 8, !tbaa !13
  %1328 = load double, ptr %68, align 8, !tbaa !13
  %1329 = load double, ptr %79, align 8, !tbaa !13
  %1330 = load ptr, ptr %4, align 8, !tbaa !9
  %1331 = call noundef double @_ZL29testlinregunit_generatenormalddPN11alglib_impl8ae_stateE(double noundef 0.000000e+00, double noundef 1.000000e+00, ptr noundef %1330)
  %1332 = call double @llvm.fmuladd.f64(double %1329, double %1331, double %1328)
  %1333 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %1334 = load ptr, ptr %1333, align 8, !tbaa !15
  %1335 = load i64, ptr %12, align 8, !tbaa !11
  %1336 = getelementptr inbounds ptr, ptr %1334, i64 %1335
  %1337 = load ptr, ptr %1336, align 8, !tbaa !9
  %1338 = load i64, ptr %18, align 8, !tbaa !11
  %1339 = getelementptr inbounds double, ptr %1337, i64 %1338
  store double %1332, ptr %1339, align 8, !tbaa !13
  br label %1340

1340:                                             ; preds = %1282
  %1341 = load i64, ptr %12, align 8, !tbaa !11
  %1342 = add nsw i64 %1341, 1
  store i64 %1342, ptr %12, align 8, !tbaa !11
  br label %1260, !llvm.loop !37

1343:                                             ; preds = %1260
  br label %1344

1344:                                             ; preds = %1343, %1225
  %1345 = load i64, ptr %19, align 8, !tbaa !11
  %1346 = icmp eq i64 %1345, 2
  br i1 %1346, label %1350, label %1347

1347:                                             ; preds = %1344
  %1348 = load i64, ptr %19, align 8, !tbaa !11
  %1349 = icmp eq i64 %1348, 3
  br i1 %1349, label %1350, label %1455

1350:                                             ; preds = %1347, %1344
  %1351 = load i64, ptr %18, align 8, !tbaa !11
  %1352 = icmp eq i64 %1351, 9
  %1353 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1352, ptr noundef @.str.26, ptr noundef %1353)
  %1354 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %33, i64 noundef 9, ptr noundef %1354)
  %1355 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %33, i32 0, i32 4
  %1356 = load ptr, ptr %1355, align 8, !tbaa !15
  %1357 = getelementptr inbounds double, ptr %1356, i64 0
  store double 1.000000e+00, ptr %1357, align 8, !tbaa !13
  %1358 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %33, i32 0, i32 4
  %1359 = load ptr, ptr %1358, align 8, !tbaa !15
  %1360 = getelementptr inbounds double, ptr %1359, i64 1
  store double -2.000000e+00, ptr %1360, align 8, !tbaa !13
  %1361 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %33, i32 0, i32 4
  %1362 = load ptr, ptr %1361, align 8, !tbaa !15
  %1363 = getelementptr inbounds double, ptr %1362, i64 2
  store double 3.000000e+00, ptr %1363, align 8, !tbaa !13
  %1364 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %33, i32 0, i32 4
  %1365 = load ptr, ptr %1364, align 8, !tbaa !15
  %1366 = getelementptr inbounds double, ptr %1365, i64 3
  store double 2.500000e-01, ptr %1366, align 8, !tbaa !13
  %1367 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %33, i32 0, i32 4
  %1368 = load ptr, ptr %1367, align 8, !tbaa !15
  %1369 = getelementptr inbounds double, ptr %1368, i64 4
  store double -5.000000e-01, ptr %1369, align 8, !tbaa !13
  %1370 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %33, i32 0, i32 4
  %1371 = load ptr, ptr %1370, align 8, !tbaa !15
  %1372 = getelementptr inbounds double, ptr %1371, i64 5
  store double 7.500000e-01, ptr %1372, align 8, !tbaa !13
  %1373 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %33, i32 0, i32 4
  %1374 = load ptr, ptr %1373, align 8, !tbaa !15
  %1375 = getelementptr inbounds double, ptr %1374, i64 6
  store double -6.000000e-02, ptr %1375, align 8, !tbaa !13
  %1376 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %33, i32 0, i32 4
  %1377 = load ptr, ptr %1376, align 8, !tbaa !15
  %1378 = getelementptr inbounds double, ptr %1377, i64 7
  store double 1.200000e-01, ptr %1378, align 8, !tbaa !13
  %1379 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %33, i32 0, i32 4
  %1380 = load ptr, ptr %1379, align 8, !tbaa !15
  %1381 = getelementptr inbounds double, ptr %1380, i64 8
  store double -1.800000e-01, ptr %1381, align 8, !tbaa !13
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %1382

1382:                                             ; preds = %1451, %1350
  %1383 = load i64, ptr %12, align 8, !tbaa !11
  %1384 = load i64, ptr %11, align 8, !tbaa !11
  %1385 = sub nsw i64 %1384, 1
  %1386 = icmp sle i64 %1383, %1385
  br i1 %1386, label %1387, label %1454

1387:                                             ; preds = %1382
  store i64 0, ptr %13, align 8, !tbaa !11
  br label %1388

1388:                                             ; preds = %1419, %1387
  %1389 = load i64, ptr %13, align 8, !tbaa !11
  %1390 = load i64, ptr %18, align 8, !tbaa !11
  %1391 = sub nsw i64 %1390, 1
  %1392 = icmp sle i64 %1389, %1391
  br i1 %1392, label %1393, label %1422

1393:                                             ; preds = %1388
  %1394 = load i64, ptr %19, align 8, !tbaa !11
  %1395 = icmp eq i64 %1394, 2
  br i1 %1395, label %1396, label %1407

1396:                                             ; preds = %1393
  %1397 = load ptr, ptr %4, align 8, !tbaa !9
  %1398 = call noundef double @_ZL29testlinregunit_generatenormalddPN11alglib_impl8ae_stateE(double noundef 0.000000e+00, double noundef 3.000000e+00, ptr noundef %1397)
  %1399 = fadd double 1.000000e+00, %1398
  %1400 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %1401 = load ptr, ptr %1400, align 8, !tbaa !15
  %1402 = load i64, ptr %12, align 8, !tbaa !11
  %1403 = getelementptr inbounds ptr, ptr %1401, i64 %1402
  %1404 = load ptr, ptr %1403, align 8, !tbaa !9
  %1405 = load i64, ptr %13, align 8, !tbaa !11
  %1406 = getelementptr inbounds double, ptr %1404, i64 %1405
  store double %1399, ptr %1406, align 8, !tbaa !13
  br label %1418

1407:                                             ; preds = %1393
  %1408 = load ptr, ptr %4, align 8, !tbaa !9
  %1409 = call noundef double @_ZL29testlinregunit_generatenormalddPN11alglib_impl8ae_stateE(double noundef 0.000000e+00, double noundef 5.000000e-02, ptr noundef %1408)
  %1410 = fadd double 1.000000e+00, %1409
  %1411 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %1412 = load ptr, ptr %1411, align 8, !tbaa !15
  %1413 = load i64, ptr %12, align 8, !tbaa !11
  %1414 = getelementptr inbounds ptr, ptr %1412, i64 %1413
  %1415 = load ptr, ptr %1414, align 8, !tbaa !9
  %1416 = load i64, ptr %13, align 8, !tbaa !11
  %1417 = getelementptr inbounds double, ptr %1415, i64 %1416
  store double %1410, ptr %1417, align 8, !tbaa !13
  br label %1418

1418:                                             ; preds = %1407, %1396
  br label %1419

1419:                                             ; preds = %1418
  %1420 = load i64, ptr %13, align 8, !tbaa !11
  %1421 = add nsw i64 %1420, 1
  store i64 %1421, ptr %13, align 8, !tbaa !11
  br label %1388, !llvm.loop !38

1422:                                             ; preds = %1388
  %1423 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %1424 = load ptr, ptr %1423, align 8, !tbaa !15
  %1425 = load i64, ptr %12, align 8, !tbaa !11
  %1426 = getelementptr inbounds ptr, ptr %1424, i64 %1425
  %1427 = load ptr, ptr %1426, align 8, !tbaa !9
  %1428 = getelementptr inbounds double, ptr %1427, i64 0
  %1429 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %33, i32 0, i32 4
  %1430 = load ptr, ptr %1429, align 8, !tbaa !15
  %1431 = getelementptr inbounds double, ptr %1430, i64 0
  %1432 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef 8)
  %1433 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %1428, i64 noundef 1, ptr noundef %1431, i64 noundef 1, i64 noundef %1432)
  store double %1433, ptr %68, align 8, !tbaa !13
  %1434 = load double, ptr %68, align 8, !tbaa !13
  %1435 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %36, i32 0, i32 4
  %1436 = load ptr, ptr %1435, align 8, !tbaa !15
  %1437 = load i64, ptr %12, align 8, !tbaa !11
  %1438 = getelementptr inbounds double, ptr %1436, i64 %1437
  store double %1434, ptr %1438, align 8, !tbaa !13
  %1439 = load double, ptr %68, align 8, !tbaa !13
  %1440 = load double, ptr %79, align 8, !tbaa !13
  %1441 = load ptr, ptr %4, align 8, !tbaa !9
  %1442 = call noundef double @_ZL29testlinregunit_generatenormalddPN11alglib_impl8ae_stateE(double noundef 0.000000e+00, double noundef 1.000000e+00, ptr noundef %1441)
  %1443 = call double @llvm.fmuladd.f64(double %1440, double %1442, double %1439)
  %1444 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %1445 = load ptr, ptr %1444, align 8, !tbaa !15
  %1446 = load i64, ptr %12, align 8, !tbaa !11
  %1447 = getelementptr inbounds ptr, ptr %1445, i64 %1446
  %1448 = load ptr, ptr %1447, align 8, !tbaa !9
  %1449 = load i64, ptr %18, align 8, !tbaa !11
  %1450 = getelementptr inbounds double, ptr %1448, i64 %1449
  store double %1443, ptr %1450, align 8, !tbaa !13
  br label %1451

1451:                                             ; preds = %1422
  %1452 = load i64, ptr %12, align 8, !tbaa !11
  %1453 = add nsw i64 %1452, 1
  store i64 %1453, ptr %12, align 8, !tbaa !11
  br label %1382, !llvm.loop !39

1454:                                             ; preds = %1382
  br label %1455

1455:                                             ; preds = %1454, %1347
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %1456

1456:                                             ; preds = %1469, %1455
  %1457 = load i64, ptr %12, align 8, !tbaa !11
  %1458 = load i64, ptr %11, align 8, !tbaa !11
  %1459 = sub nsw i64 %1458, 1
  %1460 = icmp sle i64 %1457, %1459
  br i1 %1460, label %1461, label %1472

1461:                                             ; preds = %1456
  %1462 = load ptr, ptr %4, align 8, !tbaa !9
  %1463 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1462)
  %1464 = fadd double 1.000000e+00, %1463
  %1465 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %1466 = load ptr, ptr %1465, align 8, !tbaa !15
  %1467 = load i64, ptr %12, align 8, !tbaa !11
  %1468 = getelementptr inbounds double, ptr %1466, i64 %1467
  store double %1464, ptr %1468, align 8, !tbaa !13
  br label %1469

1469:                                             ; preds = %1461
  %1470 = load i64, ptr %12, align 8, !tbaa !11
  %1471 = add nsw i64 %1470, 1
  store i64 %1471, ptr %12, align 8, !tbaa !11
  br label %1456, !llvm.loop !40

1472:                                             ; preds = %1456
  %1473 = load i64, ptr %20, align 8, !tbaa !11
  %1474 = icmp eq i64 %1473, 0
  br i1 %1474, label %1475, label %1479

1475:                                             ; preds = %1472
  %1476 = load i64, ptr %11, align 8, !tbaa !11
  %1477 = load i64, ptr %18, align 8, !tbaa !11
  %1478 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl8lrbuildsEPNS_9ae_matrixEPNS_9ae_vectorEllPlPNS_11linearmodelEPNS_8lrreportEPNS_8ae_stateE(ptr noundef %27, ptr noundef %29, i64 noundef %1476, i64 noundef %1477, ptr noundef %25, ptr noundef %39, ptr noundef %63, ptr noundef %1478)
  br label %1483

1479:                                             ; preds = %1472
  %1480 = load i64, ptr %11, align 8, !tbaa !11
  %1481 = load i64, ptr %18, align 8, !tbaa !11
  %1482 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl9lrbuildzsEPNS_9ae_matrixEPNS_9ae_vectorEllPlPNS_11linearmodelEPNS_8lrreportEPNS_8ae_stateE(ptr noundef %27, ptr noundef %29, i64 noundef %1480, i64 noundef %1481, ptr noundef %25, ptr noundef %39, ptr noundef %63, ptr noundef %1482)
  br label %1483

1483:                                             ; preds = %1479, %1475
  %1484 = load i64, ptr %25, align 8, !tbaa !11
  %1485 = icmp ne i64 %1484, 1
  br i1 %1485, label %1486, label %1487

1486:                                             ; preds = %1483
  store i8 1, ptr %92, align 1, !tbaa !5
  br label %2327

1487:                                             ; preds = %1483
  %1488 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl8lrunpackEPNS_11linearmodelEPNS_9ae_vectorEPlPNS_8ae_stateE(ptr noundef %39, ptr noundef %37, ptr noundef %15, ptr noundef %1488)
  %1489 = load i64, ptr %18, align 8, !tbaa !11
  %1490 = sub nsw i64 %1489, 1
  %1491 = add nsw i64 %1490, 1
  %1492 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %32, i64 noundef %1491, ptr noundef %1492)
  %1493 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %37, i32 0, i32 4
  %1494 = load ptr, ptr %1493, align 8, !tbaa !15
  %1495 = load i64, ptr %18, align 8, !tbaa !11
  %1496 = getelementptr inbounds double, ptr %1494, i64 %1495
  %1497 = load double, ptr %1496, align 8, !tbaa !13
  store double %1497, ptr %68, align 8, !tbaa !13
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %1498

1498:                                             ; preds = %1523, %1487
  %1499 = load i64, ptr %12, align 8, !tbaa !11
  %1500 = load i64, ptr %18, align 8, !tbaa !11
  %1501 = sub nsw i64 %1500, 1
  %1502 = icmp sle i64 %1499, %1501
  br i1 %1502, label %1503, label %1526

1503:                                             ; preds = %1498
  %1504 = load ptr, ptr %4, align 8, !tbaa !9
  %1505 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1504)
  %1506 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %1505, double -1.000000e+00)
  %1507 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %32, i32 0, i32 4
  %1508 = load ptr, ptr %1507, align 8, !tbaa !15
  %1509 = load i64, ptr %12, align 8, !tbaa !11
  %1510 = getelementptr inbounds double, ptr %1508, i64 %1509
  store double %1506, ptr %1510, align 8, !tbaa !13
  %1511 = load double, ptr %68, align 8, !tbaa !13
  %1512 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %37, i32 0, i32 4
  %1513 = load ptr, ptr %1512, align 8, !tbaa !15
  %1514 = load i64, ptr %12, align 8, !tbaa !11
  %1515 = getelementptr inbounds double, ptr %1513, i64 %1514
  %1516 = load double, ptr %1515, align 8, !tbaa !13
  %1517 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %32, i32 0, i32 4
  %1518 = load ptr, ptr %1517, align 8, !tbaa !15
  %1519 = load i64, ptr %12, align 8, !tbaa !11
  %1520 = getelementptr inbounds double, ptr %1518, i64 %1519
  %1521 = load double, ptr %1520, align 8, !tbaa !13
  %1522 = call double @llvm.fmuladd.f64(double %1516, double %1521, double %1511)
  store double %1522, ptr %68, align 8, !tbaa !13
  br label %1523

1523:                                             ; preds = %1503
  %1524 = load i64, ptr %12, align 8, !tbaa !11
  %1525 = add nsw i64 %1524, 1
  store i64 %1525, ptr %12, align 8, !tbaa !11
  br label %1498, !llvm.loop !41

1526:                                             ; preds = %1498
  %1527 = load i8, ptr %91, align 1, !tbaa !5, !range !18, !noundef !19
  %1528 = trunc i8 %1527 to i1
  br i1 %1528, label %1544, label %1529

1529:                                             ; preds = %1526
  %1530 = load double, ptr %68, align 8, !tbaa !13
  %1531 = load ptr, ptr %4, align 8, !tbaa !9
  %1532 = call noundef double @_ZN11alglib_impl9lrprocessEPNS_11linearmodelEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %39, ptr noundef %32, ptr noundef %1531)
  %1533 = fsub double %1530, %1532
  %1534 = load ptr, ptr %4, align 8, !tbaa !9
  %1535 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1533, ptr noundef %1534)
  %1536 = load double, ptr %68, align 8, !tbaa !13
  %1537 = load ptr, ptr %4, align 8, !tbaa !9
  %1538 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1536, ptr noundef %1537)
  %1539 = load ptr, ptr %4, align 8, !tbaa !9
  %1540 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1538, double noundef 1.000000e+00, ptr noundef %1539)
  %1541 = fdiv double %1535, %1540
  %1542 = load double, ptr %10, align 8, !tbaa !13
  %1543 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1541, double noundef %1542)
  br label %1544

1544:                                             ; preds = %1529, %1526
  %1545 = phi i1 [ true, %1526 ], [ %1543, %1529 ]
  %1546 = zext i1 %1545 to i8
  store i8 %1546, ptr %91, align 1, !tbaa !5
  %1547 = load i64, ptr %18, align 8, !tbaa !11
  %1548 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl6lrpackEPNS_9ae_vectorElPNS_11linearmodelEPNS_8ae_stateE(ptr noundef %37, i64 noundef %1547, ptr noundef %40, ptr noundef %1548)
  %1549 = load i64, ptr %18, align 8, !tbaa !11
  %1550 = sub nsw i64 %1549, 1
  %1551 = add nsw i64 %1550, 1
  %1552 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %32, i64 noundef %1551, ptr noundef %1552)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %1553

1553:                                             ; preds = %1566, %1544
  %1554 = load i64, ptr %12, align 8, !tbaa !11
  %1555 = load i64, ptr %18, align 8, !tbaa !11
  %1556 = sub nsw i64 %1555, 1
  %1557 = icmp sle i64 %1554, %1556
  br i1 %1557, label %1558, label %1569

1558:                                             ; preds = %1553
  %1559 = load ptr, ptr %4, align 8, !tbaa !9
  %1560 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1559)
  %1561 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %1560, double -1.000000e+00)
  %1562 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %32, i32 0, i32 4
  %1563 = load ptr, ptr %1562, align 8, !tbaa !15
  %1564 = load i64, ptr %12, align 8, !tbaa !11
  %1565 = getelementptr inbounds double, ptr %1563, i64 %1564
  store double %1561, ptr %1565, align 8, !tbaa !13
  br label %1566

1566:                                             ; preds = %1558
  %1567 = load i64, ptr %12, align 8, !tbaa !11
  %1568 = add nsw i64 %1567, 1
  store i64 %1568, ptr %12, align 8, !tbaa !11
  br label %1553, !llvm.loop !42

1569:                                             ; preds = %1553
  %1570 = load ptr, ptr %4, align 8, !tbaa !9
  %1571 = call noundef double @_ZN11alglib_impl9lrprocessEPNS_11linearmodelEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %39, ptr noundef %32, ptr noundef %1570)
  store double %1571, ptr %68, align 8, !tbaa !13
  %1572 = load i8, ptr %91, align 1, !tbaa !5, !range !18, !noundef !19
  %1573 = trunc i8 %1572 to i1
  br i1 %1573, label %1587, label %1574

1574:                                             ; preds = %1569
  %1575 = load double, ptr %68, align 8, !tbaa !13
  %1576 = load ptr, ptr %4, align 8, !tbaa !9
  %1577 = call noundef double @_ZN11alglib_impl9lrprocessEPNS_11linearmodelEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %40, ptr noundef %32, ptr noundef %1576)
  %1578 = fsub double %1575, %1577
  %1579 = load ptr, ptr %4, align 8, !tbaa !9
  %1580 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1578, ptr noundef %1579)
  %1581 = load double, ptr %68, align 8, !tbaa !13
  %1582 = load ptr, ptr %4, align 8, !tbaa !9
  %1583 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1581, ptr noundef %1582)
  %1584 = fdiv double %1580, %1583
  %1585 = load double, ptr %10, align 8, !tbaa !13
  %1586 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1584, double noundef %1585)
  br label %1587

1587:                                             ; preds = %1574, %1569
  %1588 = phi i1 [ true, %1569 ], [ %1586, %1574 ]
  %1589 = zext i1 %1588 to i8
  store i8 %1589, ptr %91, align 1, !tbaa !5
  store i64 0, ptr %14, align 8, !tbaa !11
  br label %1590

1590:                                             ; preds = %1737, %1587
  %1591 = load i64, ptr %14, align 8, !tbaa !11
  %1592 = load i64, ptr %18, align 8, !tbaa !11
  %1593 = icmp sle i64 %1591, %1592
  br i1 %1593, label %1594, label %1740

1594:                                             ; preds = %1590
  %1595 = load i64, ptr %20, align 8, !tbaa !11
  %1596 = icmp eq i64 %1595, 1
  br i1 %1596, label %1597, label %1602

1597:                                             ; preds = %1594
  %1598 = load i64, ptr %14, align 8, !tbaa !11
  %1599 = load i64, ptr %18, align 8, !tbaa !11
  %1600 = icmp eq i64 %1598, %1599
  br i1 %1600, label %1601, label %1602

1601:                                             ; preds = %1597
  br label %1737

1602:                                             ; preds = %1597, %1594
  store double 0.000000e+00, ptr %65, align 8, !tbaa !13
  store double 0.000000e+00, ptr %66, align 8, !tbaa !13
  store double 0.000000e+00, ptr %67, align 8, !tbaa !13
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %1603

1603:                                             ; preds = %1720, %1602
  %1604 = load i64, ptr %12, align 8, !tbaa !11
  %1605 = load i64, ptr %11, align 8, !tbaa !11
  %1606 = sub nsw i64 %1605, 1
  %1607 = icmp sle i64 %1604, %1606
  br i1 %1607, label %1608, label %1723

1608:                                             ; preds = %1603
  %1609 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %37, i32 0, i32 4
  %1610 = load ptr, ptr %1609, align 8, !tbaa !15
  %1611 = load i64, ptr %18, align 8, !tbaa !11
  %1612 = getelementptr inbounds double, ptr %1610, i64 %1611
  %1613 = load double, ptr %1612, align 8, !tbaa !13
  store double %1613, ptr %68, align 8, !tbaa !13
  store i64 0, ptr %13, align 8, !tbaa !11
  br label %1614

1614:                                             ; preds = %1635, %1608
  %1615 = load i64, ptr %13, align 8, !tbaa !11
  %1616 = load i64, ptr %18, align 8, !tbaa !11
  %1617 = sub nsw i64 %1616, 1
  %1618 = icmp sle i64 %1615, %1617
  br i1 %1618, label %1619, label %1638

1619:                                             ; preds = %1614
  %1620 = load double, ptr %68, align 8, !tbaa !13
  %1621 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %1622 = load ptr, ptr %1621, align 8, !tbaa !15
  %1623 = load i64, ptr %12, align 8, !tbaa !11
  %1624 = getelementptr inbounds ptr, ptr %1622, i64 %1623
  %1625 = load ptr, ptr %1624, align 8, !tbaa !9
  %1626 = load i64, ptr %13, align 8, !tbaa !11
  %1627 = getelementptr inbounds double, ptr %1625, i64 %1626
  %1628 = load double, ptr %1627, align 8, !tbaa !13
  %1629 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %37, i32 0, i32 4
  %1630 = load ptr, ptr %1629, align 8, !tbaa !15
  %1631 = load i64, ptr %13, align 8, !tbaa !11
  %1632 = getelementptr inbounds double, ptr %1630, i64 %1631
  %1633 = load double, ptr %1632, align 8, !tbaa !13
  %1634 = call double @llvm.fmuladd.f64(double %1628, double %1633, double %1620)
  store double %1634, ptr %68, align 8, !tbaa !13
  br label %1635

1635:                                             ; preds = %1619
  %1636 = load i64, ptr %13, align 8, !tbaa !11
  %1637 = add nsw i64 %1636, 1
  store i64 %1637, ptr %13, align 8, !tbaa !11
  br label %1614, !llvm.loop !43

1638:                                             ; preds = %1614
  %1639 = load double, ptr %65, align 8, !tbaa !13
  %1640 = load double, ptr %68, align 8, !tbaa !13
  %1641 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %1642 = load ptr, ptr %1641, align 8, !tbaa !15
  %1643 = load i64, ptr %12, align 8, !tbaa !11
  %1644 = getelementptr inbounds ptr, ptr %1642, i64 %1643
  %1645 = load ptr, ptr %1644, align 8, !tbaa !9
  %1646 = load i64, ptr %18, align 8, !tbaa !11
  %1647 = getelementptr inbounds double, ptr %1645, i64 %1646
  %1648 = load double, ptr %1647, align 8, !tbaa !13
  %1649 = fsub double %1640, %1648
  %1650 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %1651 = load ptr, ptr %1650, align 8, !tbaa !15
  %1652 = load i64, ptr %12, align 8, !tbaa !11
  %1653 = getelementptr inbounds double, ptr %1651, i64 %1652
  %1654 = load double, ptr %1653, align 8, !tbaa !13
  %1655 = fdiv double %1649, %1654
  %1656 = load ptr, ptr %4, align 8, !tbaa !9
  %1657 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1655, ptr noundef %1656)
  %1658 = fadd double %1639, %1657
  store double %1658, ptr %65, align 8, !tbaa !13
  %1659 = load i64, ptr %14, align 8, !tbaa !11
  %1660 = load i64, ptr %18, align 8, !tbaa !11
  %1661 = icmp slt i64 %1659, %1660
  br i1 %1661, label %1662, label %1671

1662:                                             ; preds = %1638
  %1663 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %1664 = load ptr, ptr %1663, align 8, !tbaa !15
  %1665 = load i64, ptr %12, align 8, !tbaa !11
  %1666 = getelementptr inbounds ptr, ptr %1664, i64 %1665
  %1667 = load ptr, ptr %1666, align 8, !tbaa !9
  %1668 = load i64, ptr %14, align 8, !tbaa !11
  %1669 = getelementptr inbounds double, ptr %1667, i64 %1668
  %1670 = load double, ptr %1669, align 8, !tbaa !13
  store double %1670, ptr %69, align 8, !tbaa !13
  br label %1672

1671:                                             ; preds = %1638
  store double 1.000000e+00, ptr %69, align 8, !tbaa !13
  br label %1672

1672:                                             ; preds = %1671, %1662
  %1673 = load double, ptr %66, align 8, !tbaa !13
  %1674 = load double, ptr %68, align 8, !tbaa !13
  %1675 = load double, ptr %69, align 8, !tbaa !13
  %1676 = load double, ptr %80, align 8, !tbaa !13
  %1677 = call double @llvm.fmuladd.f64(double %1675, double %1676, double %1674)
  %1678 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %1679 = load ptr, ptr %1678, align 8, !tbaa !15
  %1680 = load i64, ptr %12, align 8, !tbaa !11
  %1681 = getelementptr inbounds ptr, ptr %1679, i64 %1680
  %1682 = load ptr, ptr %1681, align 8, !tbaa !9
  %1683 = load i64, ptr %18, align 8, !tbaa !11
  %1684 = getelementptr inbounds double, ptr %1682, i64 %1683
  %1685 = load double, ptr %1684, align 8, !tbaa !13
  %1686 = fsub double %1677, %1685
  %1687 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %1688 = load ptr, ptr %1687, align 8, !tbaa !15
  %1689 = load i64, ptr %12, align 8, !tbaa !11
  %1690 = getelementptr inbounds double, ptr %1688, i64 %1689
  %1691 = load double, ptr %1690, align 8, !tbaa !13
  %1692 = fdiv double %1686, %1691
  %1693 = load ptr, ptr %4, align 8, !tbaa !9
  %1694 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1692, ptr noundef %1693)
  %1695 = fadd double %1673, %1694
  store double %1695, ptr %66, align 8, !tbaa !13
  %1696 = load double, ptr %67, align 8, !tbaa !13
  %1697 = load double, ptr %68, align 8, !tbaa !13
  %1698 = load double, ptr %69, align 8, !tbaa !13
  %1699 = load double, ptr %80, align 8, !tbaa !13
  %1700 = fneg double %1698
  %1701 = call double @llvm.fmuladd.f64(double %1700, double %1699, double %1697)
  %1702 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %1703 = load ptr, ptr %1702, align 8, !tbaa !15
  %1704 = load i64, ptr %12, align 8, !tbaa !11
  %1705 = getelementptr inbounds ptr, ptr %1703, i64 %1704
  %1706 = load ptr, ptr %1705, align 8, !tbaa !9
  %1707 = load i64, ptr %18, align 8, !tbaa !11
  %1708 = getelementptr inbounds double, ptr %1706, i64 %1707
  %1709 = load double, ptr %1708, align 8, !tbaa !13
  %1710 = fsub double %1701, %1709
  %1711 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %1712 = load ptr, ptr %1711, align 8, !tbaa !15
  %1713 = load i64, ptr %12, align 8, !tbaa !11
  %1714 = getelementptr inbounds double, ptr %1712, i64 %1713
  %1715 = load double, ptr %1714, align 8, !tbaa !13
  %1716 = fdiv double %1710, %1715
  %1717 = load ptr, ptr %4, align 8, !tbaa !9
  %1718 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1716, ptr noundef %1717)
  %1719 = fadd double %1696, %1718
  store double %1719, ptr %67, align 8, !tbaa !13
  br label %1720

1720:                                             ; preds = %1672
  %1721 = load i64, ptr %12, align 8, !tbaa !11
  %1722 = add nsw i64 %1721, 1
  store i64 %1722, ptr %12, align 8, !tbaa !11
  br label %1603, !llvm.loop !44

1723:                                             ; preds = %1603
  %1724 = load i8, ptr %89, align 1, !tbaa !5, !range !18, !noundef !19
  %1725 = trunc i8 %1724 to i1
  br i1 %1725, label %1734, label %1726

1726:                                             ; preds = %1723
  %1727 = load double, ptr %65, align 8, !tbaa !13
  %1728 = load double, ptr %66, align 8, !tbaa !13
  %1729 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1727, double noundef %1728)
  br i1 %1729, label %1734, label %1730

1730:                                             ; preds = %1726
  %1731 = load double, ptr %65, align 8, !tbaa !13
  %1732 = load double, ptr %67, align 8, !tbaa !13
  %1733 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1731, double noundef %1732)
  br label %1734

1734:                                             ; preds = %1730, %1726, %1723
  %1735 = phi i1 [ true, %1726 ], [ true, %1723 ], [ %1733, %1730 ]
  %1736 = zext i1 %1735 to i8
  store i8 %1736, ptr %89, align 1, !tbaa !5
  br label %1737

1737:                                             ; preds = %1734, %1601
  %1738 = load i64, ptr %14, align 8, !tbaa !11
  %1739 = add nsw i64 %1738, 1
  store i64 %1739, ptr %14, align 8, !tbaa !11
  br label %1590, !llvm.loop !45

1740:                                             ; preds = %1590
  %1741 = load i64, ptr %9, align 8, !tbaa !11
  %1742 = sub nsw i64 %1741, 1
  %1743 = add nsw i64 %1742, 1
  %1744 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %33, i64 noundef %1743, ptr noundef %1744)
  %1745 = load i64, ptr %18, align 8, !tbaa !11
  %1746 = add nsw i64 %1745, 1
  %1747 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %34, i64 noundef %1746, ptr noundef %1747)
  %1748 = load i64, ptr %18, align 8, !tbaa !11
  %1749 = add nsw i64 %1748, 1
  %1750 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %35, i64 noundef %1749, ptr noundef %1750)
  %1751 = load i64, ptr %11, align 8, !tbaa !11
  %1752 = sub nsw i64 %1751, 1
  %1753 = add nsw i64 %1752, 1
  %1754 = load i64, ptr %18, align 8, !tbaa !11
  %1755 = add nsw i64 %1754, 1
  %1756 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %28, i64 noundef %1753, i64 noundef %1755, ptr noundef %1756)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %1757

1757:                                             ; preds = %1768, %1740
  %1758 = load i64, ptr %12, align 8, !tbaa !11
  %1759 = load i64, ptr %18, align 8, !tbaa !11
  %1760 = icmp sle i64 %1758, %1759
  br i1 %1760, label %1761, label %1771

1761:                                             ; preds = %1757
  %1762 = load ptr, ptr %4, align 8, !tbaa !9
  %1763 = call noundef double @_ZL29testlinregunit_generatenormalddPN11alglib_impl8ae_stateE(double noundef 0.000000e+00, double noundef 1.000000e+00, ptr noundef %1762)
  %1764 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %34, i32 0, i32 4
  %1765 = load ptr, ptr %1764, align 8, !tbaa !15
  %1766 = load i64, ptr %12, align 8, !tbaa !11
  %1767 = getelementptr inbounds double, ptr %1765, i64 %1766
  store double %1763, ptr %1767, align 8, !tbaa !13
  br label %1768

1768:                                             ; preds = %1761
  %1769 = load i64, ptr %12, align 8, !tbaa !11
  %1770 = add nsw i64 %1769, 1
  store i64 %1770, ptr %12, align 8, !tbaa !11
  br label %1757, !llvm.loop !46

1771:                                             ; preds = %1757
  store i64 0, ptr %17, align 8, !tbaa !11
  br label %1772

1772:                                             ; preds = %1857, %1771
  %1773 = load i64, ptr %17, align 8, !tbaa !11
  %1774 = load i64, ptr %9, align 8, !tbaa !11
  %1775 = sub nsw i64 %1774, 1
  %1776 = icmp sle i64 %1773, %1775
  br i1 %1776, label %1777, label %1860

1777:                                             ; preds = %1772
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %1778

1778:                                             ; preds = %1819, %1777
  %1779 = load i64, ptr %12, align 8, !tbaa !11
  %1780 = load i64, ptr %11, align 8, !tbaa !11
  %1781 = sub nsw i64 %1780, 1
  %1782 = icmp sle i64 %1779, %1781
  br i1 %1782, label %1783, label %1822

1783:                                             ; preds = %1778
  %1784 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %28, i32 0, i32 6
  %1785 = load ptr, ptr %1784, align 8, !tbaa !15
  %1786 = load i64, ptr %12, align 8, !tbaa !11
  %1787 = getelementptr inbounds ptr, ptr %1785, i64 %1786
  %1788 = load ptr, ptr %1787, align 8, !tbaa !9
  %1789 = getelementptr inbounds double, ptr %1788, i64 0
  %1790 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %1791 = load ptr, ptr %1790, align 8, !tbaa !15
  %1792 = load i64, ptr %12, align 8, !tbaa !11
  %1793 = getelementptr inbounds ptr, ptr %1791, i64 %1792
  %1794 = load ptr, ptr %1793, align 8, !tbaa !9
  %1795 = getelementptr inbounds double, ptr %1794, i64 0
  %1796 = load i64, ptr %18, align 8, !tbaa !11
  %1797 = sub nsw i64 %1796, 1
  %1798 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1797)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1789, i64 noundef 1, ptr noundef %1795, i64 noundef 1, i64 noundef %1798)
  %1799 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %36, i32 0, i32 4
  %1800 = load ptr, ptr %1799, align 8, !tbaa !15
  %1801 = load i64, ptr %12, align 8, !tbaa !11
  %1802 = getelementptr inbounds double, ptr %1800, i64 %1801
  %1803 = load double, ptr %1802, align 8, !tbaa !13
  %1804 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %1805 = load ptr, ptr %1804, align 8, !tbaa !15
  %1806 = load i64, ptr %12, align 8, !tbaa !11
  %1807 = getelementptr inbounds double, ptr %1805, i64 %1806
  %1808 = load double, ptr %1807, align 8, !tbaa !13
  %1809 = load ptr, ptr %4, align 8, !tbaa !9
  %1810 = call noundef double @_ZL29testlinregunit_generatenormalddPN11alglib_impl8ae_stateE(double noundef 0.000000e+00, double noundef 1.000000e+00, ptr noundef %1809)
  %1811 = call double @llvm.fmuladd.f64(double %1808, double %1810, double %1803)
  %1812 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %28, i32 0, i32 6
  %1813 = load ptr, ptr %1812, align 8, !tbaa !15
  %1814 = load i64, ptr %12, align 8, !tbaa !11
  %1815 = getelementptr inbounds ptr, ptr %1813, i64 %1814
  %1816 = load ptr, ptr %1815, align 8, !tbaa !9
  %1817 = load i64, ptr %18, align 8, !tbaa !11
  %1818 = getelementptr inbounds double, ptr %1816, i64 %1817
  store double %1811, ptr %1818, align 8, !tbaa !13
  br label %1819

1819:                                             ; preds = %1783
  %1820 = load i64, ptr %12, align 8, !tbaa !11
  %1821 = add nsw i64 %1820, 1
  store i64 %1821, ptr %12, align 8, !tbaa !11
  br label %1778, !llvm.loop !47

1822:                                             ; preds = %1778
  %1823 = load i64, ptr %20, align 8, !tbaa !11
  %1824 = icmp eq i64 %1823, 0
  br i1 %1824, label %1825, label %1829

1825:                                             ; preds = %1822
  %1826 = load i64, ptr %11, align 8, !tbaa !11
  %1827 = load i64, ptr %18, align 8, !tbaa !11
  %1828 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl8lrbuildsEPNS_9ae_matrixEPNS_9ae_vectorEllPlPNS_11linearmodelEPNS_8lrreportEPNS_8ae_stateE(ptr noundef %28, ptr noundef %29, i64 noundef %1826, i64 noundef %1827, ptr noundef %25, ptr noundef %39, ptr noundef %64, ptr noundef %1828)
  br label %1833

1829:                                             ; preds = %1822
  %1830 = load i64, ptr %11, align 8, !tbaa !11
  %1831 = load i64, ptr %18, align 8, !tbaa !11
  %1832 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl9lrbuildzsEPNS_9ae_matrixEPNS_9ae_vectorEllPlPNS_11linearmodelEPNS_8lrreportEPNS_8ae_stateE(ptr noundef %28, ptr noundef %29, i64 noundef %1830, i64 noundef %1831, ptr noundef %25, ptr noundef %39, ptr noundef %64, ptr noundef %1832)
  br label %1833

1833:                                             ; preds = %1829, %1825
  %1834 = load i64, ptr %25, align 8, !tbaa !11
  %1835 = icmp ne i64 %1834, 1
  br i1 %1835, label %1836, label %1841

1836:                                             ; preds = %1833
  %1837 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %33, i32 0, i32 4
  %1838 = load ptr, ptr %1837, align 8, !tbaa !15
  %1839 = load i64, ptr %17, align 8, !tbaa !11
  %1840 = getelementptr inbounds double, ptr %1838, i64 %1839
  store double 0.000000e+00, ptr %1840, align 8, !tbaa !13
  store i8 1, ptr %92, align 1, !tbaa !5
  br label %1857

1841:                                             ; preds = %1833
  %1842 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl8lrunpackEPNS_11linearmodelEPNS_9ae_vectorEPlPNS_8ae_stateE(ptr noundef %39, ptr noundef %31, ptr noundef %15, ptr noundef %1842)
  %1843 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %34, i32 0, i32 4
  %1844 = load ptr, ptr %1843, align 8, !tbaa !15
  %1845 = getelementptr inbounds double, ptr %1844, i64 0
  %1846 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %31, i32 0, i32 4
  %1847 = load ptr, ptr %1846, align 8, !tbaa !15
  %1848 = getelementptr inbounds double, ptr %1847, i64 0
  %1849 = load i64, ptr %18, align 8, !tbaa !11
  %1850 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1849)
  %1851 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %1845, i64 noundef 1, ptr noundef %1848, i64 noundef 1, i64 noundef %1850)
  store double %1851, ptr %68, align 8, !tbaa !13
  %1852 = load double, ptr %68, align 8, !tbaa !13
  %1853 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %33, i32 0, i32 4
  %1854 = load ptr, ptr %1853, align 8, !tbaa !15
  %1855 = load i64, ptr %17, align 8, !tbaa !11
  %1856 = getelementptr inbounds double, ptr %1854, i64 %1855
  store double %1852, ptr %1856, align 8, !tbaa !13
  br label %1857

1857:                                             ; preds = %1841, %1836
  %1858 = load i64, ptr %17, align 8, !tbaa !11
  %1859 = add nsw i64 %1858, 1
  store i64 %1859, ptr %17, align 8, !tbaa !11
  br label %1772, !llvm.loop !48

1860:                                             ; preds = %1772
  %1861 = load i64, ptr %9, align 8, !tbaa !11
  %1862 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL26testlinregunit_calculatemvPN11alglib_impl9ae_vectorElPdS2_S2_S2_PNS_8ae_stateE(ptr noundef %33, i64 noundef %1861, ptr noundef %82, ptr noundef %83, ptr noundef %84, ptr noundef %85, ptr noundef %1862)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %1863

1863:                                             ; preds = %1889, %1860
  %1864 = load i64, ptr %12, align 8, !tbaa !11
  %1865 = load i64, ptr %18, align 8, !tbaa !11
  %1866 = icmp sle i64 %1864, %1865
  br i1 %1866, label %1867, label %1892

1867:                                             ; preds = %1863
  %1868 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %34, i32 0, i32 4
  %1869 = load ptr, ptr %1868, align 8, !tbaa !15
  %1870 = getelementptr inbounds double, ptr %1869, i64 0
  %1871 = getelementptr inbounds %"struct.alglib_impl::lrreport", ptr %63, i32 0, i32 0
  %1872 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1871, i32 0, i32 6
  %1873 = load ptr, ptr %1872, align 8, !tbaa !15
  %1874 = getelementptr inbounds ptr, ptr %1873, i64 0
  %1875 = load ptr, ptr %1874, align 8, !tbaa !9
  %1876 = load i64, ptr %12, align 8, !tbaa !11
  %1877 = getelementptr inbounds double, ptr %1875, i64 %1876
  %1878 = getelementptr inbounds %"struct.alglib_impl::lrreport", ptr %63, i32 0, i32 0
  %1879 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1878, i32 0, i32 2
  %1880 = load i64, ptr %1879, align 8, !tbaa !49
  %1881 = load i64, ptr %18, align 8, !tbaa !11
  %1882 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1881)
  %1883 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %1870, i64 noundef 1, ptr noundef %1877, i64 noundef %1880, i64 noundef %1882)
  store double %1883, ptr %68, align 8, !tbaa !13
  %1884 = load double, ptr %68, align 8, !tbaa !13
  %1885 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %35, i32 0, i32 4
  %1886 = load ptr, ptr %1885, align 8, !tbaa !15
  %1887 = load i64, ptr %12, align 8, !tbaa !11
  %1888 = getelementptr inbounds double, ptr %1886, i64 %1887
  store double %1884, ptr %1888, align 8, !tbaa !13
  br label %1889

1889:                                             ; preds = %1867
  %1890 = load i64, ptr %12, align 8, !tbaa !11
  %1891 = add nsw i64 %1890, 1
  store i64 %1891, ptr %12, align 8, !tbaa !11
  br label %1863, !llvm.loop !54

1892:                                             ; preds = %1863
  %1893 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %35, i32 0, i32 4
  %1894 = load ptr, ptr %1893, align 8, !tbaa !15
  %1895 = getelementptr inbounds double, ptr %1894, i64 0
  %1896 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %34, i32 0, i32 4
  %1897 = load ptr, ptr %1896, align 8, !tbaa !15
  %1898 = getelementptr inbounds double, ptr %1897, i64 0
  %1899 = load i64, ptr %18, align 8, !tbaa !11
  %1900 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1899)
  %1901 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %1895, i64 noundef 1, ptr noundef %1898, i64 noundef 1, i64 noundef %1900)
  store double %1901, ptr %68, align 8, !tbaa !13
  %1902 = load i8, ptr %88, align 1, !tbaa !5, !range !18, !noundef !19
  %1903 = trunc i8 %1902 to i1
  br i1 %1903, label %1916, label %1904

1904:                                             ; preds = %1892
  %1905 = load double, ptr %68, align 8, !tbaa !13
  %1906 = load ptr, ptr %4, align 8, !tbaa !9
  %1907 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %1905, ptr noundef %1906)
  %1908 = load double, ptr %84, align 8, !tbaa !13
  %1909 = fsub double %1907, %1908
  %1910 = load double, ptr %85, align 8, !tbaa !13
  %1911 = fdiv double %1909, %1910
  %1912 = load ptr, ptr %4, align 8, !tbaa !9
  %1913 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1911, ptr noundef %1912)
  %1914 = load double, ptr %6, align 8, !tbaa !13
  %1915 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %1913, double noundef %1914)
  br label %1916

1916:                                             ; preds = %1904, %1892
  %1917 = phi i1 [ true, %1892 ], [ %1915, %1904 ]
  %1918 = zext i1 %1917 to i8
  store i8 %1918, ptr %88, align 1, !tbaa !5
  store double 0.000000e+00, ptr %70, align 8, !tbaa !13
  store double 0.000000e+00, ptr %71, align 8, !tbaa !13
  store double 0.000000e+00, ptr %72, align 8, !tbaa !13
  store double 0.000000e+00, ptr %73, align 8, !tbaa !13
  store double 0.000000e+00, ptr %74, align 8, !tbaa !13
  store double 0.000000e+00, ptr %75, align 8, !tbaa !13
  %1919 = load i64, ptr %11, align 8, !tbaa !11
  %1920 = sub nsw i64 %1919, 2
  %1921 = add nsw i64 %1920, 1
  %1922 = load i64, ptr %18, align 8, !tbaa !11
  %1923 = add nsw i64 %1922, 1
  %1924 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %28, i64 noundef %1921, i64 noundef %1923, ptr noundef %1924)
  %1925 = load i64, ptr %11, align 8, !tbaa !11
  %1926 = sub nsw i64 %1925, 2
  %1927 = add nsw i64 %1926, 1
  %1928 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %30, i64 noundef %1927, ptr noundef %1928)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %1929

1929:                                             ; preds = %1960, %1916
  %1930 = load i64, ptr %12, align 8, !tbaa !11
  %1931 = load i64, ptr %11, align 8, !tbaa !11
  %1932 = sub nsw i64 %1931, 2
  %1933 = icmp sle i64 %1930, %1932
  br i1 %1933, label %1934, label %1963

1934:                                             ; preds = %1929
  %1935 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %28, i32 0, i32 6
  %1936 = load ptr, ptr %1935, align 8, !tbaa !15
  %1937 = load i64, ptr %12, align 8, !tbaa !11
  %1938 = getelementptr inbounds ptr, ptr %1936, i64 %1937
  %1939 = load ptr, ptr %1938, align 8, !tbaa !9
  %1940 = getelementptr inbounds double, ptr %1939, i64 0
  %1941 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %1942 = load ptr, ptr %1941, align 8, !tbaa !15
  %1943 = load i64, ptr %12, align 8, !tbaa !11
  %1944 = add nsw i64 %1943, 1
  %1945 = getelementptr inbounds ptr, ptr %1942, i64 %1944
  %1946 = load ptr, ptr %1945, align 8, !tbaa !9
  %1947 = getelementptr inbounds double, ptr %1946, i64 0
  %1948 = load i64, ptr %18, align 8, !tbaa !11
  %1949 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1948)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1940, i64 noundef 1, ptr noundef %1947, i64 noundef 1, i64 noundef %1949)
  %1950 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %1951 = load ptr, ptr %1950, align 8, !tbaa !15
  %1952 = load i64, ptr %12, align 8, !tbaa !11
  %1953 = add nsw i64 %1952, 1
  %1954 = getelementptr inbounds double, ptr %1951, i64 %1953
  %1955 = load double, ptr %1954, align 8, !tbaa !13
  %1956 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %30, i32 0, i32 4
  %1957 = load ptr, ptr %1956, align 8, !tbaa !15
  %1958 = load i64, ptr %12, align 8, !tbaa !11
  %1959 = getelementptr inbounds double, ptr %1957, i64 %1958
  store double %1955, ptr %1959, align 8, !tbaa !13
  br label %1960

1960:                                             ; preds = %1934
  %1961 = load i64, ptr %12, align 8, !tbaa !11
  %1962 = add nsw i64 %1961, 1
  store i64 %1962, ptr %12, align 8, !tbaa !11
  br label %1929, !llvm.loop !55

1963:                                             ; preds = %1929
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %1964

1964:                                             ; preds = %2184, %1963
  %1965 = load i64, ptr %12, align 8, !tbaa !11
  %1966 = load i64, ptr %11, align 8, !tbaa !11
  %1967 = sub nsw i64 %1966, 1
  %1968 = icmp sle i64 %1965, %1967
  br i1 %1968, label %1969, label %2187

1969:                                             ; preds = %1964
  %1970 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %1971 = load ptr, ptr %1970, align 8, !tbaa !15
  %1972 = load i64, ptr %12, align 8, !tbaa !11
  %1973 = getelementptr inbounds ptr, ptr %1971, i64 %1972
  %1974 = load ptr, ptr %1973, align 8, !tbaa !9
  %1975 = getelementptr inbounds double, ptr %1974, i64 0
  %1976 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %37, i32 0, i32 4
  %1977 = load ptr, ptr %1976, align 8, !tbaa !15
  %1978 = getelementptr inbounds double, ptr %1977, i64 0
  %1979 = load i64, ptr %18, align 8, !tbaa !11
  %1980 = sub nsw i64 %1979, 1
  %1981 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1980)
  %1982 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %1975, i64 noundef 1, ptr noundef %1978, i64 noundef 1, i64 noundef %1981)
  store double %1982, ptr %68, align 8, !tbaa !13
  %1983 = load double, ptr %68, align 8, !tbaa !13
  %1984 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %37, i32 0, i32 4
  %1985 = load ptr, ptr %1984, align 8, !tbaa !15
  %1986 = load i64, ptr %18, align 8, !tbaa !11
  %1987 = getelementptr inbounds double, ptr %1985, i64 %1986
  %1988 = load double, ptr %1987, align 8, !tbaa !13
  %1989 = fadd double %1983, %1988
  store double %1989, ptr %68, align 8, !tbaa !13
  %1990 = load double, ptr %73, align 8, !tbaa !13
  %1991 = load double, ptr %68, align 8, !tbaa !13
  %1992 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %1993 = load ptr, ptr %1992, align 8, !tbaa !15
  %1994 = load i64, ptr %12, align 8, !tbaa !11
  %1995 = getelementptr inbounds ptr, ptr %1993, i64 %1994
  %1996 = load ptr, ptr %1995, align 8, !tbaa !9
  %1997 = load i64, ptr %18, align 8, !tbaa !11
  %1998 = getelementptr inbounds double, ptr %1996, i64 %1997
  %1999 = load double, ptr %1998, align 8, !tbaa !13
  %2000 = fsub double %1991, %1999
  %2001 = load ptr, ptr %4, align 8, !tbaa !9
  %2002 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %2000, ptr noundef %2001)
  %2003 = fadd double %1990, %2002
  store double %2003, ptr %73, align 8, !tbaa !13
  %2004 = load double, ptr %74, align 8, !tbaa !13
  %2005 = load double, ptr %68, align 8, !tbaa !13
  %2006 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %2007 = load ptr, ptr %2006, align 8, !tbaa !15
  %2008 = load i64, ptr %12, align 8, !tbaa !11
  %2009 = getelementptr inbounds ptr, ptr %2007, i64 %2008
  %2010 = load ptr, ptr %2009, align 8, !tbaa !9
  %2011 = load i64, ptr %18, align 8, !tbaa !11
  %2012 = getelementptr inbounds double, ptr %2010, i64 %2011
  %2013 = load double, ptr %2012, align 8, !tbaa !13
  %2014 = fsub double %2005, %2013
  %2015 = load ptr, ptr %4, align 8, !tbaa !9
  %2016 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2014, ptr noundef %2015)
  %2017 = fadd double %2004, %2016
  store double %2017, ptr %74, align 8, !tbaa !13
  %2018 = load double, ptr %75, align 8, !tbaa !13
  %2019 = load double, ptr %68, align 8, !tbaa !13
  %2020 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %2021 = load ptr, ptr %2020, align 8, !tbaa !15
  %2022 = load i64, ptr %12, align 8, !tbaa !11
  %2023 = getelementptr inbounds ptr, ptr %2021, i64 %2022
  %2024 = load ptr, ptr %2023, align 8, !tbaa !9
  %2025 = load i64, ptr %18, align 8, !tbaa !11
  %2026 = getelementptr inbounds double, ptr %2024, i64 %2025
  %2027 = load double, ptr %2026, align 8, !tbaa !13
  %2028 = fsub double %2019, %2027
  %2029 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %2030 = load ptr, ptr %2029, align 8, !tbaa !15
  %2031 = load i64, ptr %12, align 8, !tbaa !11
  %2032 = getelementptr inbounds ptr, ptr %2030, i64 %2031
  %2033 = load ptr, ptr %2032, align 8, !tbaa !9
  %2034 = load i64, ptr %18, align 8, !tbaa !11
  %2035 = getelementptr inbounds double, ptr %2033, i64 %2034
  %2036 = load double, ptr %2035, align 8, !tbaa !13
  %2037 = fdiv double %2028, %2036
  %2038 = load ptr, ptr %4, align 8, !tbaa !9
  %2039 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2037, ptr noundef %2038)
  %2040 = fadd double %2018, %2039
  store double %2040, ptr %75, align 8, !tbaa !13
  store i8 1, ptr %76, align 1, !tbaa !5
  store i64 0, ptr %14, align 8, !tbaa !11
  br label %2041

2041:                                             ; preds = %2058, %1969
  %2042 = load i64, ptr %14, align 8, !tbaa !11
  %2043 = getelementptr inbounds %"struct.alglib_impl::lrreport", ptr %63, i32 0, i32 7
  %2044 = load i64, ptr %2043, align 8, !tbaa !56
  %2045 = sub nsw i64 %2044, 1
  %2046 = icmp sle i64 %2042, %2045
  br i1 %2046, label %2047, label %2061

2047:                                             ; preds = %2041
  %2048 = getelementptr inbounds %"struct.alglib_impl::lrreport", ptr %63, i32 0, i32 8
  %2049 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2048, i32 0, i32 4
  %2050 = load ptr, ptr %2049, align 8, !tbaa !15
  %2051 = load i64, ptr %14, align 8, !tbaa !11
  %2052 = getelementptr inbounds i64, ptr %2050, i64 %2051
  %2053 = load i64, ptr %2052, align 8, !tbaa !11
  %2054 = load i64, ptr %12, align 8, !tbaa !11
  %2055 = icmp eq i64 %2053, %2054
  br i1 %2055, label %2056, label %2057

2056:                                             ; preds = %2047
  store i8 0, ptr %76, align 1, !tbaa !5
  br label %2057

2057:                                             ; preds = %2056, %2047
  br label %2058

2058:                                             ; preds = %2057
  %2059 = load i64, ptr %14, align 8, !tbaa !11
  %2060 = add nsw i64 %2059, 1
  store i64 %2060, ptr %14, align 8, !tbaa !11
  br label %2041, !llvm.loop !57

2061:                                             ; preds = %2041
  %2062 = load i8, ptr %76, align 1, !tbaa !5, !range !18, !noundef !19
  %2063 = trunc i8 %2062 to i1
  br i1 %2063, label %2064, label %2154

2064:                                             ; preds = %2061
  %2065 = load i64, ptr %20, align 8, !tbaa !11
  %2066 = icmp eq i64 %2065, 0
  br i1 %2066, label %2067, label %2072

2067:                                             ; preds = %2064
  %2068 = load i64, ptr %11, align 8, !tbaa !11
  %2069 = sub nsw i64 %2068, 1
  %2070 = load i64, ptr %18, align 8, !tbaa !11
  %2071 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl8lrbuildsEPNS_9ae_matrixEPNS_9ae_vectorEllPlPNS_11linearmodelEPNS_8lrreportEPNS_8ae_stateE(ptr noundef %28, ptr noundef %30, i64 noundef %2069, i64 noundef %2070, ptr noundef %26, ptr noundef %39, ptr noundef %64, ptr noundef %2071)
  br label %2077

2072:                                             ; preds = %2064
  %2073 = load i64, ptr %11, align 8, !tbaa !11
  %2074 = sub nsw i64 %2073, 1
  %2075 = load i64, ptr %18, align 8, !tbaa !11
  %2076 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl9lrbuildzsEPNS_9ae_matrixEPNS_9ae_vectorEllPlPNS_11linearmodelEPNS_8lrreportEPNS_8ae_stateE(ptr noundef %28, ptr noundef %30, i64 noundef %2074, i64 noundef %2075, ptr noundef %26, ptr noundef %39, ptr noundef %64, ptr noundef %2076)
  br label %2077

2077:                                             ; preds = %2072, %2067
  %2078 = load i64, ptr %26, align 8, !tbaa !11
  %2079 = icmp ne i64 %2078, 1
  br i1 %2079, label %2080, label %2081

2080:                                             ; preds = %2077
  store i8 1, ptr %92, align 1, !tbaa !5
  br label %2184

2081:                                             ; preds = %2077
  %2082 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl8lrunpackEPNS_11linearmodelEPNS_9ae_vectorEPlPNS_8ae_stateE(ptr noundef %39, ptr noundef %31, ptr noundef %15, ptr noundef %2082)
  %2083 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %2084 = load ptr, ptr %2083, align 8, !tbaa !15
  %2085 = load i64, ptr %12, align 8, !tbaa !11
  %2086 = getelementptr inbounds ptr, ptr %2084, i64 %2085
  %2087 = load ptr, ptr %2086, align 8, !tbaa !9
  %2088 = getelementptr inbounds double, ptr %2087, i64 0
  %2089 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %31, i32 0, i32 4
  %2090 = load ptr, ptr %2089, align 8, !tbaa !15
  %2091 = getelementptr inbounds double, ptr %2090, i64 0
  %2092 = load i64, ptr %18, align 8, !tbaa !11
  %2093 = sub nsw i64 %2092, 1
  %2094 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2093)
  %2095 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %2088, i64 noundef 1, ptr noundef %2091, i64 noundef 1, i64 noundef %2094)
  store double %2095, ptr %68, align 8, !tbaa !13
  %2096 = load double, ptr %68, align 8, !tbaa !13
  %2097 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %31, i32 0, i32 4
  %2098 = load ptr, ptr %2097, align 8, !tbaa !15
  %2099 = load i64, ptr %18, align 8, !tbaa !11
  %2100 = getelementptr inbounds double, ptr %2098, i64 %2099
  %2101 = load double, ptr %2100, align 8, !tbaa !13
  %2102 = fadd double %2096, %2101
  store double %2102, ptr %68, align 8, !tbaa !13
  %2103 = load double, ptr %70, align 8, !tbaa !13
  %2104 = load double, ptr %68, align 8, !tbaa !13
  %2105 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %2106 = load ptr, ptr %2105, align 8, !tbaa !15
  %2107 = load i64, ptr %12, align 8, !tbaa !11
  %2108 = getelementptr inbounds ptr, ptr %2106, i64 %2107
  %2109 = load ptr, ptr %2108, align 8, !tbaa !9
  %2110 = load i64, ptr %18, align 8, !tbaa !11
  %2111 = getelementptr inbounds double, ptr %2109, i64 %2110
  %2112 = load double, ptr %2111, align 8, !tbaa !13
  %2113 = fsub double %2104, %2112
  %2114 = load ptr, ptr %4, align 8, !tbaa !9
  %2115 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %2113, ptr noundef %2114)
  %2116 = fadd double %2103, %2115
  store double %2116, ptr %70, align 8, !tbaa !13
  %2117 = load double, ptr %71, align 8, !tbaa !13
  %2118 = load double, ptr %68, align 8, !tbaa !13
  %2119 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %2120 = load ptr, ptr %2119, align 8, !tbaa !15
  %2121 = load i64, ptr %12, align 8, !tbaa !11
  %2122 = getelementptr inbounds ptr, ptr %2120, i64 %2121
  %2123 = load ptr, ptr %2122, align 8, !tbaa !9
  %2124 = load i64, ptr %18, align 8, !tbaa !11
  %2125 = getelementptr inbounds double, ptr %2123, i64 %2124
  %2126 = load double, ptr %2125, align 8, !tbaa !13
  %2127 = fsub double %2118, %2126
  %2128 = load ptr, ptr %4, align 8, !tbaa !9
  %2129 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2127, ptr noundef %2128)
  %2130 = fadd double %2117, %2129
  store double %2130, ptr %71, align 8, !tbaa !13
  %2131 = load double, ptr %72, align 8, !tbaa !13
  %2132 = load double, ptr %68, align 8, !tbaa !13
  %2133 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %2134 = load ptr, ptr %2133, align 8, !tbaa !15
  %2135 = load i64, ptr %12, align 8, !tbaa !11
  %2136 = getelementptr inbounds ptr, ptr %2134, i64 %2135
  %2137 = load ptr, ptr %2136, align 8, !tbaa !9
  %2138 = load i64, ptr %18, align 8, !tbaa !11
  %2139 = getelementptr inbounds double, ptr %2137, i64 %2138
  %2140 = load double, ptr %2139, align 8, !tbaa !13
  %2141 = fsub double %2132, %2140
  %2142 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %2143 = load ptr, ptr %2142, align 8, !tbaa !15
  %2144 = load i64, ptr %12, align 8, !tbaa !11
  %2145 = getelementptr inbounds ptr, ptr %2143, i64 %2144
  %2146 = load ptr, ptr %2145, align 8, !tbaa !9
  %2147 = load i64, ptr %18, align 8, !tbaa !11
  %2148 = getelementptr inbounds double, ptr %2146, i64 %2147
  %2149 = load double, ptr %2148, align 8, !tbaa !13
  %2150 = fdiv double %2141, %2149
  %2151 = load ptr, ptr %4, align 8, !tbaa !9
  %2152 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2150, ptr noundef %2151)
  %2153 = fadd double %2131, %2152
  store double %2153, ptr %72, align 8, !tbaa !13
  br label %2154

2154:                                             ; preds = %2081, %2061
  %2155 = load i64, ptr %12, align 8, !tbaa !11
  %2156 = load i64, ptr %11, align 8, !tbaa !11
  %2157 = sub nsw i64 %2156, 1
  %2158 = icmp ne i64 %2155, %2157
  br i1 %2158, label %2159, label %2183

2159:                                             ; preds = %2154
  %2160 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %28, i32 0, i32 6
  %2161 = load ptr, ptr %2160, align 8, !tbaa !15
  %2162 = load i64, ptr %12, align 8, !tbaa !11
  %2163 = getelementptr inbounds ptr, ptr %2161, i64 %2162
  %2164 = load ptr, ptr %2163, align 8, !tbaa !9
  %2165 = getelementptr inbounds double, ptr %2164, i64 0
  %2166 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %2167 = load ptr, ptr %2166, align 8, !tbaa !15
  %2168 = load i64, ptr %12, align 8, !tbaa !11
  %2169 = getelementptr inbounds ptr, ptr %2167, i64 %2168
  %2170 = load ptr, ptr %2169, align 8, !tbaa !9
  %2171 = getelementptr inbounds double, ptr %2170, i64 0
  %2172 = load i64, ptr %18, align 8, !tbaa !11
  %2173 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2172)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %2165, i64 noundef 1, ptr noundef %2171, i64 noundef 1, i64 noundef %2173)
  %2174 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %2175 = load ptr, ptr %2174, align 8, !tbaa !15
  %2176 = load i64, ptr %12, align 8, !tbaa !11
  %2177 = getelementptr inbounds double, ptr %2175, i64 %2176
  %2178 = load double, ptr %2177, align 8, !tbaa !13
  %2179 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %30, i32 0, i32 4
  %2180 = load ptr, ptr %2179, align 8, !tbaa !15
  %2181 = load i64, ptr %12, align 8, !tbaa !11
  %2182 = getelementptr inbounds double, ptr %2180, i64 %2181
  store double %2178, ptr %2182, align 8, !tbaa !13
  br label %2183

2183:                                             ; preds = %2159, %2154
  br label %2184

2184:                                             ; preds = %2183, %2080
  %2185 = load i64, ptr %12, align 8, !tbaa !11
  %2186 = add nsw i64 %2185, 1
  store i64 %2186, ptr %12, align 8, !tbaa !11
  br label %1964, !llvm.loop !58

2187:                                             ; preds = %1964
  %2188 = load double, ptr %70, align 8, !tbaa !13
  %2189 = load i64, ptr %11, align 8, !tbaa !11
  %2190 = getelementptr inbounds %"struct.alglib_impl::lrreport", ptr %63, i32 0, i32 7
  %2191 = load i64, ptr %2190, align 8, !tbaa !56
  %2192 = sub nsw i64 %2189, %2191
  %2193 = sitofp i64 %2192 to double
  %2194 = fdiv double %2188, %2193
  %2195 = load ptr, ptr %4, align 8, !tbaa !9
  %2196 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %2194, ptr noundef %2195)
  store double %2196, ptr %70, align 8, !tbaa !13
  %2197 = load double, ptr %71, align 8, !tbaa !13
  %2198 = load i64, ptr %11, align 8, !tbaa !11
  %2199 = getelementptr inbounds %"struct.alglib_impl::lrreport", ptr %63, i32 0, i32 7
  %2200 = load i64, ptr %2199, align 8, !tbaa !56
  %2201 = sub nsw i64 %2198, %2200
  %2202 = sitofp i64 %2201 to double
  %2203 = fdiv double %2197, %2202
  store double %2203, ptr %71, align 8, !tbaa !13
  %2204 = load double, ptr %72, align 8, !tbaa !13
  %2205 = load i64, ptr %11, align 8, !tbaa !11
  %2206 = getelementptr inbounds %"struct.alglib_impl::lrreport", ptr %63, i32 0, i32 7
  %2207 = load i64, ptr %2206, align 8, !tbaa !56
  %2208 = sub nsw i64 %2205, %2207
  %2209 = sitofp i64 %2208 to double
  %2210 = fdiv double %2204, %2209
  store double %2210, ptr %72, align 8, !tbaa !13
  %2211 = load double, ptr %73, align 8, !tbaa !13
  %2212 = load i64, ptr %11, align 8, !tbaa !11
  %2213 = sitofp i64 %2212 to double
  %2214 = fdiv double %2211, %2213
  %2215 = load ptr, ptr %4, align 8, !tbaa !9
  %2216 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %2214, ptr noundef %2215)
  store double %2216, ptr %73, align 8, !tbaa !13
  %2217 = load double, ptr %74, align 8, !tbaa !13
  %2218 = load i64, ptr %11, align 8, !tbaa !11
  %2219 = sitofp i64 %2218 to double
  %2220 = fdiv double %2217, %2219
  store double %2220, ptr %74, align 8, !tbaa !13
  %2221 = load double, ptr %75, align 8, !tbaa !13
  %2222 = load i64, ptr %11, align 8, !tbaa !11
  %2223 = sitofp i64 %2222 to double
  %2224 = fdiv double %2221, %2223
  store double %2224, ptr %75, align 8, !tbaa !13
  %2225 = load i8, ptr %90, align 1, !tbaa !5, !range !18, !noundef !19
  %2226 = trunc i8 %2225 to i1
  br i1 %2226, label %2239, label %2227

2227:                                             ; preds = %2187
  %2228 = getelementptr inbounds %"struct.alglib_impl::lrreport", ptr %63, i32 0, i32 4
  %2229 = load double, ptr %2228, align 8, !tbaa !59
  %2230 = load double, ptr %70, align 8, !tbaa !13
  %2231 = fdiv double %2229, %2230
  %2232 = load ptr, ptr %4, align 8, !tbaa !9
  %2233 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef %2231, ptr noundef %2232)
  %2234 = load ptr, ptr %4, align 8, !tbaa !9
  %2235 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2233, ptr noundef %2234)
  %2236 = load ptr, ptr %4, align 8, !tbaa !9
  %2237 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 1.000010e+00, ptr noundef %2236)
  %2238 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2235, double noundef %2237)
  br label %2239

2239:                                             ; preds = %2227, %2187
  %2240 = phi i1 [ true, %2187 ], [ %2238, %2227 ]
  %2241 = zext i1 %2240 to i8
  store i8 %2241, ptr %90, align 1, !tbaa !5
  %2242 = load i8, ptr %90, align 1, !tbaa !5, !range !18, !noundef !19
  %2243 = trunc i8 %2242 to i1
  br i1 %2243, label %2256, label %2244

2244:                                             ; preds = %2239
  %2245 = getelementptr inbounds %"struct.alglib_impl::lrreport", ptr %63, i32 0, i32 5
  %2246 = load double, ptr %2245, align 8, !tbaa !60
  %2247 = load double, ptr %71, align 8, !tbaa !13
  %2248 = fdiv double %2246, %2247
  %2249 = load ptr, ptr %4, align 8, !tbaa !9
  %2250 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef %2248, ptr noundef %2249)
  %2251 = load ptr, ptr %4, align 8, !tbaa !9
  %2252 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2250, ptr noundef %2251)
  %2253 = load ptr, ptr %4, align 8, !tbaa !9
  %2254 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 1.000010e+00, ptr noundef %2253)
  %2255 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2252, double noundef %2254)
  br label %2256

2256:                                             ; preds = %2244, %2239
  %2257 = phi i1 [ true, %2239 ], [ %2255, %2244 ]
  %2258 = zext i1 %2257 to i8
  store i8 %2258, ptr %90, align 1, !tbaa !5
  %2259 = load i8, ptr %90, align 1, !tbaa !5, !range !18, !noundef !19
  %2260 = trunc i8 %2259 to i1
  br i1 %2260, label %2273, label %2261

2261:                                             ; preds = %2256
  %2262 = getelementptr inbounds %"struct.alglib_impl::lrreport", ptr %63, i32 0, i32 6
  %2263 = load double, ptr %2262, align 8, !tbaa !61
  %2264 = load double, ptr %72, align 8, !tbaa !13
  %2265 = fdiv double %2263, %2264
  %2266 = load ptr, ptr %4, align 8, !tbaa !9
  %2267 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef %2265, ptr noundef %2266)
  %2268 = load ptr, ptr %4, align 8, !tbaa !9
  %2269 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2267, ptr noundef %2268)
  %2270 = load ptr, ptr %4, align 8, !tbaa !9
  %2271 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 1.000010e+00, ptr noundef %2270)
  %2272 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2269, double noundef %2271)
  br label %2273

2273:                                             ; preds = %2261, %2256
  %2274 = phi i1 [ true, %2256 ], [ %2272, %2261 ]
  %2275 = zext i1 %2274 to i8
  store i8 %2275, ptr %90, align 1, !tbaa !5
  %2276 = load i8, ptr %90, align 1, !tbaa !5, !range !18, !noundef !19
  %2277 = trunc i8 %2276 to i1
  br i1 %2277, label %2290, label %2278

2278:                                             ; preds = %2273
  %2279 = getelementptr inbounds %"struct.alglib_impl::lrreport", ptr %63, i32 0, i32 1
  %2280 = load double, ptr %2279, align 8, !tbaa !62
  %2281 = load double, ptr %73, align 8, !tbaa !13
  %2282 = fdiv double %2280, %2281
  %2283 = load ptr, ptr %4, align 8, !tbaa !9
  %2284 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef %2282, ptr noundef %2283)
  %2285 = load ptr, ptr %4, align 8, !tbaa !9
  %2286 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2284, ptr noundef %2285)
  %2287 = load ptr, ptr %4, align 8, !tbaa !9
  %2288 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 1.000010e+00, ptr noundef %2287)
  %2289 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2286, double noundef %2288)
  br label %2290

2290:                                             ; preds = %2278, %2273
  %2291 = phi i1 [ true, %2273 ], [ %2289, %2278 ]
  %2292 = zext i1 %2291 to i8
  store i8 %2292, ptr %90, align 1, !tbaa !5
  %2293 = load i8, ptr %90, align 1, !tbaa !5, !range !18, !noundef !19
  %2294 = trunc i8 %2293 to i1
  br i1 %2294, label %2307, label %2295

2295:                                             ; preds = %2290
  %2296 = getelementptr inbounds %"struct.alglib_impl::lrreport", ptr %63, i32 0, i32 2
  %2297 = load double, ptr %2296, align 8, !tbaa !63
  %2298 = load double, ptr %74, align 8, !tbaa !13
  %2299 = fdiv double %2297, %2298
  %2300 = load ptr, ptr %4, align 8, !tbaa !9
  %2301 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef %2299, ptr noundef %2300)
  %2302 = load ptr, ptr %4, align 8, !tbaa !9
  %2303 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2301, ptr noundef %2302)
  %2304 = load ptr, ptr %4, align 8, !tbaa !9
  %2305 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 1.000010e+00, ptr noundef %2304)
  %2306 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2303, double noundef %2305)
  br label %2307

2307:                                             ; preds = %2295, %2290
  %2308 = phi i1 [ true, %2290 ], [ %2306, %2295 ]
  %2309 = zext i1 %2308 to i8
  store i8 %2309, ptr %90, align 1, !tbaa !5
  %2310 = load i8, ptr %90, align 1, !tbaa !5, !range !18, !noundef !19
  %2311 = trunc i8 %2310 to i1
  br i1 %2311, label %2324, label %2312

2312:                                             ; preds = %2307
  %2313 = getelementptr inbounds %"struct.alglib_impl::lrreport", ptr %63, i32 0, i32 3
  %2314 = load double, ptr %2313, align 8, !tbaa !64
  %2315 = load double, ptr %75, align 8, !tbaa !13
  %2316 = fdiv double %2314, %2315
  %2317 = load ptr, ptr %4, align 8, !tbaa !9
  %2318 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef %2316, ptr noundef %2317)
  %2319 = load ptr, ptr %4, align 8, !tbaa !9
  %2320 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2318, ptr noundef %2319)
  %2321 = load ptr, ptr %4, align 8, !tbaa !9
  %2322 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 1.000010e+00, ptr noundef %2321)
  %2323 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2320, double noundef %2322)
  br label %2324

2324:                                             ; preds = %2312, %2307
  %2325 = phi i1 [ true, %2307 ], [ %2323, %2312 ]
  %2326 = zext i1 %2325 to i8
  store i8 %2326, ptr %90, align 1, !tbaa !5
  br label %2327

2327:                                             ; preds = %2324, %1486
  %2328 = load i64, ptr %11, align 8, !tbaa !11
  %2329 = add nsw i64 %2328, 1
  store i64 %2329, ptr %11, align 8, !tbaa !11
  br label %1095, !llvm.loop !65

2330:                                             ; preds = %1095
  br label %2331

2331:                                             ; preds = %2330
  %2332 = load i64, ptr %18, align 8, !tbaa !11
  %2333 = add nsw i64 %2332, 1
  store i64 %2333, ptr %18, align 8, !tbaa !11
  br label %1065, !llvm.loop !66

2334:                                             ; preds = %1065
  br label %2335

2335:                                             ; preds = %2334
  %2336 = load i64, ptr %19, align 8, !tbaa !11
  %2337 = add nsw i64 %2336, 1
  store i64 %2337, ptr %19, align 8, !tbaa !11
  br label %1045, !llvm.loop !67

2338:                                             ; preds = %1045
  br label %2339

2339:                                             ; preds = %2338
  %2340 = load i64, ptr %20, align 8, !tbaa !11
  %2341 = add nsw i64 %2340, 1
  store i64 %2341, ptr %20, align 8, !tbaa !11
  br label %1041, !llvm.loop !68

2342:                                             ; preds = %1041
  store i64 1, ptr %16, align 8, !tbaa !11
  br label %2343

2343:                                             ; preds = %2612, %2342
  %2344 = load i64, ptr %16, align 8, !tbaa !11
  %2345 = icmp sle i64 %2344, 50
  br i1 %2345, label %2346, label %2615

2346:                                             ; preds = %2343
  store i64 2, ptr %11, align 8, !tbaa !11
  br label %2347

2347:                                             ; preds = %2354, %2346
  %2348 = load ptr, ptr %4, align 8, !tbaa !9
  %2349 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %2348)
  %2350 = fadd double %2349, 1.000000e-01
  store double %2350, ptr %79, align 8, !tbaa !13
  %2351 = load ptr, ptr %4, align 8, !tbaa !9
  %2352 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %2351)
  %2353 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %2352, double -1.000000e+00)
  store double %2353, ptr %78, align 8, !tbaa !13
  br label %2354

2354:                                             ; preds = %2347
  %2355 = load double, ptr %79, align 8, !tbaa !13
  %2356 = load double, ptr %78, align 8, !tbaa !13
  %2357 = fsub double %2355, %2356
  %2358 = load ptr, ptr %4, align 8, !tbaa !9
  %2359 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2357, ptr noundef %2358)
  %2360 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %2359, double noundef 5.000000e-02)
  br i1 %2360, label %2347, label %2361, !llvm.loop !69

2361:                                             ; preds = %2354
  %2362 = load i64, ptr %11, align 8, !tbaa !11
  %2363 = mul nsw i64 3, %2362
  %2364 = sub nsw i64 %2363, 1
  %2365 = add nsw i64 %2364, 1
  %2366 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %27, i64 noundef %2365, i64 noundef 2, ptr noundef %2366)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %2367

2367:                                             ; preds = %2434, %2361
  %2368 = load i64, ptr %12, align 8, !tbaa !11
  %2369 = load i64, ptr %11, align 8, !tbaa !11
  %2370 = sub nsw i64 %2369, 1
  %2371 = icmp sle i64 %2368, %2370
  br i1 %2371, label %2372, label %2437

2372:                                             ; preds = %2367
  %2373 = load i64, ptr %12, align 8, !tbaa !11
  %2374 = sitofp i64 %2373 to double
  %2375 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %2376 = load ptr, ptr %2375, align 8, !tbaa !15
  %2377 = load i64, ptr %12, align 8, !tbaa !11
  %2378 = mul nsw i64 3, %2377
  %2379 = add nsw i64 %2378, 0
  %2380 = getelementptr inbounds ptr, ptr %2376, i64 %2379
  %2381 = load ptr, ptr %2380, align 8, !tbaa !9
  %2382 = getelementptr inbounds double, ptr %2381, i64 0
  store double %2374, ptr %2382, align 8, !tbaa !13
  %2383 = load i64, ptr %12, align 8, !tbaa !11
  %2384 = sitofp i64 %2383 to double
  %2385 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %2386 = load ptr, ptr %2385, align 8, !tbaa !15
  %2387 = load i64, ptr %12, align 8, !tbaa !11
  %2388 = mul nsw i64 3, %2387
  %2389 = add nsw i64 %2388, 1
  %2390 = getelementptr inbounds ptr, ptr %2386, i64 %2389
  %2391 = load ptr, ptr %2390, align 8, !tbaa !9
  %2392 = getelementptr inbounds double, ptr %2391, i64 0
  store double %2384, ptr %2392, align 8, !tbaa !13
  %2393 = load i64, ptr %12, align 8, !tbaa !11
  %2394 = sitofp i64 %2393 to double
  %2395 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %2396 = load ptr, ptr %2395, align 8, !tbaa !15
  %2397 = load i64, ptr %12, align 8, !tbaa !11
  %2398 = mul nsw i64 3, %2397
  %2399 = add nsw i64 %2398, 2
  %2400 = getelementptr inbounds ptr, ptr %2396, i64 %2399
  %2401 = load ptr, ptr %2400, align 8, !tbaa !9
  %2402 = getelementptr inbounds double, ptr %2401, i64 0
  store double %2394, ptr %2402, align 8, !tbaa !13
  %2403 = load double, ptr %78, align 8, !tbaa !13
  %2404 = load double, ptr %79, align 8, !tbaa !13
  %2405 = fsub double %2403, %2404
  %2406 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %2407 = load ptr, ptr %2406, align 8, !tbaa !15
  %2408 = load i64, ptr %12, align 8, !tbaa !11
  %2409 = mul nsw i64 3, %2408
  %2410 = add nsw i64 %2409, 0
  %2411 = getelementptr inbounds ptr, ptr %2407, i64 %2410
  %2412 = load ptr, ptr %2411, align 8, !tbaa !9
  %2413 = getelementptr inbounds double, ptr %2412, i64 1
  store double %2405, ptr %2413, align 8, !tbaa !13
  %2414 = load double, ptr %78, align 8, !tbaa !13
  %2415 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %2416 = load ptr, ptr %2415, align 8, !tbaa !15
  %2417 = load i64, ptr %12, align 8, !tbaa !11
  %2418 = mul nsw i64 3, %2417
  %2419 = add nsw i64 %2418, 1
  %2420 = getelementptr inbounds ptr, ptr %2416, i64 %2419
  %2421 = load ptr, ptr %2420, align 8, !tbaa !9
  %2422 = getelementptr inbounds double, ptr %2421, i64 1
  store double %2414, ptr %2422, align 8, !tbaa !13
  %2423 = load double, ptr %78, align 8, !tbaa !13
  %2424 = load double, ptr %79, align 8, !tbaa !13
  %2425 = fadd double %2423, %2424
  %2426 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %2427 = load ptr, ptr %2426, align 8, !tbaa !15
  %2428 = load i64, ptr %12, align 8, !tbaa !11
  %2429 = mul nsw i64 3, %2428
  %2430 = add nsw i64 %2429, 2
  %2431 = getelementptr inbounds ptr, ptr %2427, i64 %2430
  %2432 = load ptr, ptr %2431, align 8, !tbaa !9
  %2433 = getelementptr inbounds double, ptr %2432, i64 1
  store double %2425, ptr %2433, align 8, !tbaa !13
  br label %2434

2434:                                             ; preds = %2372
  %2435 = load i64, ptr %12, align 8, !tbaa !11
  %2436 = add nsw i64 %2435, 1
  store i64 %2436, ptr %12, align 8, !tbaa !11
  br label %2367, !llvm.loop !70

2437:                                             ; preds = %2367
  %2438 = load i64, ptr %11, align 8, !tbaa !11
  %2439 = mul nsw i64 3, %2438
  %2440 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl7lrbuildEPNS_9ae_matrixEllPlPNS_11linearmodelEPNS_8lrreportEPNS_8ae_stateE(ptr noundef %27, i64 noundef %2439, i64 noundef 1, ptr noundef %25, ptr noundef %39, ptr noundef %63, ptr noundef %2440)
  %2441 = load i64, ptr %25, align 8, !tbaa !11
  %2442 = icmp eq i64 %2441, 1
  br i1 %2442, label %2443, label %2518

2443:                                             ; preds = %2437
  %2444 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl8lrunpackEPNS_11linearmodelEPNS_9ae_vectorEPlPNS_8ae_stateE(ptr noundef %39, ptr noundef %37, ptr noundef %15, ptr noundef %2444)
  %2445 = load i64, ptr %11, align 8, !tbaa !11
  %2446 = mul nsw i64 3, %2445
  %2447 = load ptr, ptr %4, align 8, !tbaa !9
  %2448 = call noundef double @_ZN11alglib_impl10lrrmserrorEPNS_11linearmodelEPNS_9ae_matrixElPNS_8ae_stateE(ptr noundef %39, ptr noundef %27, i64 noundef %2446, ptr noundef %2447)
  store double %2448, ptr %68, align 8, !tbaa !13
  %2449 = load i8, ptr %91, align 1, !tbaa !5, !range !18, !noundef !19
  %2450 = trunc i8 %2449 to i1
  br i1 %2450, label %2462, label %2451

2451:                                             ; preds = %2443
  %2452 = load double, ptr %68, align 8, !tbaa !13
  %2453 = load double, ptr %79, align 8, !tbaa !13
  %2454 = load ptr, ptr %4, align 8, !tbaa !9
  %2455 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 0x3FE5555555555555, ptr noundef %2454)
  %2456 = fneg double %2453
  %2457 = call double @llvm.fmuladd.f64(double %2456, double %2455, double %2452)
  %2458 = load ptr, ptr %4, align 8, !tbaa !9
  %2459 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2457, ptr noundef %2458)
  %2460 = load double, ptr %10, align 8, !tbaa !13
  %2461 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2459, double noundef %2460)
  br label %2462

2462:                                             ; preds = %2451, %2443
  %2463 = phi i1 [ true, %2443 ], [ %2461, %2451 ]
  %2464 = zext i1 %2463 to i8
  store i8 %2464, ptr %91, align 1, !tbaa !5
  %2465 = load i64, ptr %11, align 8, !tbaa !11
  %2466 = mul nsw i64 3, %2465
  %2467 = load ptr, ptr %4, align 8, !tbaa !9
  %2468 = call noundef double @_ZN11alglib_impl10lravgerrorEPNS_11linearmodelEPNS_9ae_matrixElPNS_8ae_stateE(ptr noundef %39, ptr noundef %27, i64 noundef %2466, ptr noundef %2467)
  store double %2468, ptr %68, align 8, !tbaa !13
  %2469 = load i8, ptr %91, align 1, !tbaa !5, !range !18, !noundef !19
  %2470 = trunc i8 %2469 to i1
  br i1 %2470, label %2480, label %2471

2471:                                             ; preds = %2462
  %2472 = load double, ptr %68, align 8, !tbaa !13
  %2473 = load double, ptr %79, align 8, !tbaa !13
  %2474 = fneg double %2473
  %2475 = call double @llvm.fmuladd.f64(double %2474, double 0x3FE5555555555555, double %2472)
  %2476 = load ptr, ptr %4, align 8, !tbaa !9
  %2477 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2475, ptr noundef %2476)
  %2478 = load double, ptr %10, align 8, !tbaa !13
  %2479 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2477, double noundef %2478)
  br label %2480

2480:                                             ; preds = %2471, %2462
  %2481 = phi i1 [ true, %2462 ], [ %2479, %2471 ]
  %2482 = zext i1 %2481 to i8
  store i8 %2482, ptr %91, align 1, !tbaa !5
  %2483 = load i64, ptr %11, align 8, !tbaa !11
  %2484 = mul nsw i64 3, %2483
  %2485 = load ptr, ptr %4, align 8, !tbaa !9
  %2486 = call noundef double @_ZN11alglib_impl13lravgrelerrorEPNS_11linearmodelEPNS_9ae_matrixElPNS_8ae_stateE(ptr noundef %39, ptr noundef %27, i64 noundef %2484, ptr noundef %2485)
  store double %2486, ptr %68, align 8, !tbaa !13
  %2487 = load double, ptr %79, align 8, !tbaa !13
  %2488 = load double, ptr %78, align 8, !tbaa !13
  %2489 = load double, ptr %79, align 8, !tbaa !13
  %2490 = fsub double %2488, %2489
  %2491 = fdiv double %2487, %2490
  %2492 = load ptr, ptr %4, align 8, !tbaa !9
  %2493 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2491, ptr noundef %2492)
  %2494 = load double, ptr %79, align 8, !tbaa !13
  %2495 = load double, ptr %78, align 8, !tbaa !13
  %2496 = load double, ptr %79, align 8, !tbaa !13
  %2497 = fadd double %2495, %2496
  %2498 = fdiv double %2494, %2497
  %2499 = load ptr, ptr %4, align 8, !tbaa !9
  %2500 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2498, ptr noundef %2499)
  %2501 = fadd double %2493, %2500
  %2502 = fdiv double %2501, 3.000000e+00
  store double %2502, ptr %69, align 8, !tbaa !13
  %2503 = load i8, ptr %91, align 1, !tbaa !5, !range !18, !noundef !19
  %2504 = trunc i8 %2503 to i1
  br i1 %2504, label %2515, label %2505

2505:                                             ; preds = %2480
  %2506 = load double, ptr %68, align 8, !tbaa !13
  %2507 = load double, ptr %69, align 8, !tbaa !13
  %2508 = fsub double %2506, %2507
  %2509 = load ptr, ptr %4, align 8, !tbaa !9
  %2510 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2508, ptr noundef %2509)
  %2511 = load double, ptr %10, align 8, !tbaa !13
  %2512 = load double, ptr %69, align 8, !tbaa !13
  %2513 = fmul double %2511, %2512
  %2514 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2510, double noundef %2513)
  br label %2515

2515:                                             ; preds = %2505, %2480
  %2516 = phi i1 [ true, %2480 ], [ %2514, %2505 ]
  %2517 = zext i1 %2516 to i8
  store i8 %2517, ptr %91, align 1, !tbaa !5
  br label %2519

2518:                                             ; preds = %2437
  store i8 1, ptr %91, align 1, !tbaa !5
  br label %2519

2519:                                             ; preds = %2518, %2515
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %2520

2520:                                             ; preds = %2583, %2519
  %2521 = load i64, ptr %12, align 8, !tbaa !11
  %2522 = load i64, ptr %11, align 8, !tbaa !11
  %2523 = sub nsw i64 %2522, 1
  %2524 = icmp sle i64 %2521, %2523
  br i1 %2524, label %2525, label %2586

2525:                                             ; preds = %2520
  %2526 = load i64, ptr %12, align 8, !tbaa !11
  %2527 = sitofp i64 %2526 to double
  %2528 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %2529 = load ptr, ptr %2528, align 8, !tbaa !15
  %2530 = load i64, ptr %12, align 8, !tbaa !11
  %2531 = mul nsw i64 3, %2530
  %2532 = add nsw i64 %2531, 0
  %2533 = getelementptr inbounds ptr, ptr %2529, i64 %2532
  %2534 = load ptr, ptr %2533, align 8, !tbaa !9
  %2535 = getelementptr inbounds double, ptr %2534, i64 0
  store double %2527, ptr %2535, align 8, !tbaa !13
  %2536 = load i64, ptr %12, align 8, !tbaa !11
  %2537 = sitofp i64 %2536 to double
  %2538 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %2539 = load ptr, ptr %2538, align 8, !tbaa !15
  %2540 = load i64, ptr %12, align 8, !tbaa !11
  %2541 = mul nsw i64 3, %2540
  %2542 = add nsw i64 %2541, 1
  %2543 = getelementptr inbounds ptr, ptr %2539, i64 %2542
  %2544 = load ptr, ptr %2543, align 8, !tbaa !9
  %2545 = getelementptr inbounds double, ptr %2544, i64 0
  store double %2537, ptr %2545, align 8, !tbaa !13
  %2546 = load i64, ptr %12, align 8, !tbaa !11
  %2547 = sitofp i64 %2546 to double
  %2548 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %2549 = load ptr, ptr %2548, align 8, !tbaa !15
  %2550 = load i64, ptr %12, align 8, !tbaa !11
  %2551 = mul nsw i64 3, %2550
  %2552 = add nsw i64 %2551, 2
  %2553 = getelementptr inbounds ptr, ptr %2549, i64 %2552
  %2554 = load ptr, ptr %2553, align 8, !tbaa !9
  %2555 = getelementptr inbounds double, ptr %2554, i64 0
  store double %2547, ptr %2555, align 8, !tbaa !13
  %2556 = load double, ptr %79, align 8, !tbaa !13
  %2557 = fneg double %2556
  %2558 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %2559 = load ptr, ptr %2558, align 8, !tbaa !15
  %2560 = load i64, ptr %12, align 8, !tbaa !11
  %2561 = mul nsw i64 3, %2560
  %2562 = add nsw i64 %2561, 0
  %2563 = getelementptr inbounds ptr, ptr %2559, i64 %2562
  %2564 = load ptr, ptr %2563, align 8, !tbaa !9
  %2565 = getelementptr inbounds double, ptr %2564, i64 1
  store double %2557, ptr %2565, align 8, !tbaa !13
  %2566 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %2567 = load ptr, ptr %2566, align 8, !tbaa !15
  %2568 = load i64, ptr %12, align 8, !tbaa !11
  %2569 = mul nsw i64 3, %2568
  %2570 = add nsw i64 %2569, 1
  %2571 = getelementptr inbounds ptr, ptr %2567, i64 %2570
  %2572 = load ptr, ptr %2571, align 8, !tbaa !9
  %2573 = getelementptr inbounds double, ptr %2572, i64 1
  store double 0.000000e+00, ptr %2573, align 8, !tbaa !13
  %2574 = load double, ptr %79, align 8, !tbaa !13
  %2575 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %2576 = load ptr, ptr %2575, align 8, !tbaa !15
  %2577 = load i64, ptr %12, align 8, !tbaa !11
  %2578 = mul nsw i64 3, %2577
  %2579 = add nsw i64 %2578, 2
  %2580 = getelementptr inbounds ptr, ptr %2576, i64 %2579
  %2581 = load ptr, ptr %2580, align 8, !tbaa !9
  %2582 = getelementptr inbounds double, ptr %2581, i64 1
  store double %2574, ptr %2582, align 8, !tbaa !13
  br label %2583

2583:                                             ; preds = %2525
  %2584 = load i64, ptr %12, align 8, !tbaa !11
  %2585 = add nsw i64 %2584, 1
  store i64 %2585, ptr %12, align 8, !tbaa !11
  br label %2520, !llvm.loop !71

2586:                                             ; preds = %2520
  %2587 = load i64, ptr %11, align 8, !tbaa !11
  %2588 = mul nsw i64 3, %2587
  %2589 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl7lrbuildEPNS_9ae_matrixEllPlPNS_11linearmodelEPNS_8lrreportEPNS_8ae_stateE(ptr noundef %27, i64 noundef %2588, i64 noundef 1, ptr noundef %25, ptr noundef %39, ptr noundef %63, ptr noundef %2589)
  %2590 = load i64, ptr %25, align 8, !tbaa !11
  %2591 = icmp eq i64 %2590, 1
  br i1 %2591, label %2592, label %2610

2592:                                             ; preds = %2586
  %2593 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl8lrunpackEPNS_11linearmodelEPNS_9ae_vectorEPlPNS_8ae_stateE(ptr noundef %39, ptr noundef %37, ptr noundef %15, ptr noundef %2593)
  %2594 = load i64, ptr %11, align 8, !tbaa !11
  %2595 = mul nsw i64 3, %2594
  %2596 = load ptr, ptr %4, align 8, !tbaa !9
  %2597 = call noundef double @_ZN11alglib_impl13lravgrelerrorEPNS_11linearmodelEPNS_9ae_matrixElPNS_8ae_stateE(ptr noundef %39, ptr noundef %27, i64 noundef %2595, ptr noundef %2596)
  store double %2597, ptr %68, align 8, !tbaa !13
  %2598 = load i8, ptr %91, align 1, !tbaa !5, !range !18, !noundef !19
  %2599 = trunc i8 %2598 to i1
  br i1 %2599, label %2607, label %2600

2600:                                             ; preds = %2592
  %2601 = load double, ptr %68, align 8, !tbaa !13
  %2602 = fsub double %2601, 1.000000e+00
  %2603 = load ptr, ptr %4, align 8, !tbaa !9
  %2604 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2602, ptr noundef %2603)
  %2605 = load double, ptr %10, align 8, !tbaa !13
  %2606 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2604, double noundef %2605)
  br label %2607

2607:                                             ; preds = %2600, %2592
  %2608 = phi i1 [ true, %2592 ], [ %2606, %2600 ]
  %2609 = zext i1 %2608 to i8
  store i8 %2609, ptr %91, align 1, !tbaa !5
  br label %2611

2610:                                             ; preds = %2586
  store i8 1, ptr %91, align 1, !tbaa !5
  br label %2611

2611:                                             ; preds = %2610, %2607
  br label %2612

2612:                                             ; preds = %2611
  %2613 = load i64, ptr %16, align 8, !tbaa !11
  %2614 = add nsw i64 %2613, 1
  store i64 %2614, ptr %16, align 8, !tbaa !11
  br label %2343, !llvm.loop !72

2615:                                             ; preds = %2343
  store i64 1, ptr %16, align 8, !tbaa !11
  br label %2616

2616:                                             ; preds = %2721, %2615
  %2617 = load i64, ptr %16, align 8, !tbaa !11
  %2618 = icmp sle i64 %2617, 10
  br i1 %2618, label %2619, label %2724

2619:                                             ; preds = %2616
  %2620 = load ptr, ptr %4, align 8, !tbaa !9
  %2621 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 5, ptr noundef %2620)
  %2622 = add nsw i64 1, %2621
  store i64 %2622, ptr %18, align 8, !tbaa !11
  %2623 = load ptr, ptr %4, align 8, !tbaa !9
  %2624 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 10, ptr noundef %2623)
  %2625 = add nsw i64 10, %2624
  store i64 %2625, ptr %11, align 8, !tbaa !11
  %2626 = load i64, ptr %11, align 8, !tbaa !11
  %2627 = sub nsw i64 %2626, 1
  %2628 = add nsw i64 %2627, 1
  %2629 = load i64, ptr %18, align 8, !tbaa !11
  %2630 = add nsw i64 %2629, 1
  %2631 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %27, i64 noundef %2628, i64 noundef %2630, ptr noundef %2631)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %2632

2632:                                             ; preds = %2657, %2619
  %2633 = load i64, ptr %12, align 8, !tbaa !11
  %2634 = load i64, ptr %11, align 8, !tbaa !11
  %2635 = sub nsw i64 %2634, 1
  %2636 = icmp sle i64 %2633, %2635
  br i1 %2636, label %2637, label %2660

2637:                                             ; preds = %2632
  store i64 0, ptr %13, align 8, !tbaa !11
  br label %2638

2638:                                             ; preds = %2653, %2637
  %2639 = load i64, ptr %13, align 8, !tbaa !11
  %2640 = load i64, ptr %18, align 8, !tbaa !11
  %2641 = icmp sle i64 %2639, %2640
  br i1 %2641, label %2642, label %2656

2642:                                             ; preds = %2638
  %2643 = load ptr, ptr %4, align 8, !tbaa !9
  %2644 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %2643)
  %2645 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %2644, double -1.000000e+00)
  %2646 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %2647 = load ptr, ptr %2646, align 8, !tbaa !15
  %2648 = load i64, ptr %12, align 8, !tbaa !11
  %2649 = getelementptr inbounds ptr, ptr %2647, i64 %2648
  %2650 = load ptr, ptr %2649, align 8, !tbaa !9
  %2651 = load i64, ptr %13, align 8, !tbaa !11
  %2652 = getelementptr inbounds double, ptr %2650, i64 %2651
  store double %2645, ptr %2652, align 8, !tbaa !13
  br label %2653

2653:                                             ; preds = %2642
  %2654 = load i64, ptr %13, align 8, !tbaa !11
  %2655 = add nsw i64 %2654, 1
  store i64 %2655, ptr %13, align 8, !tbaa !11
  br label %2638, !llvm.loop !73

2656:                                             ; preds = %2638
  br label %2657

2657:                                             ; preds = %2656
  %2658 = load i64, ptr %12, align 8, !tbaa !11
  %2659 = add nsw i64 %2658, 1
  store i64 %2659, ptr %12, align 8, !tbaa !11
  br label %2632, !llvm.loop !74

2660:                                             ; preds = %2632
  %2661 = load i64, ptr %11, align 8, !tbaa !11
  %2662 = load i64, ptr %18, align 8, !tbaa !11
  %2663 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl7lrbuildEPNS_9ae_matrixEllPlPNS_11linearmodelEPNS_8lrreportEPNS_8ae_stateE(ptr noundef %27, i64 noundef %2661, i64 noundef %2662, ptr noundef %25, ptr noundef %38, ptr noundef %63, ptr noundef %2663)
  %2664 = load i64, ptr %25, align 8, !tbaa !11
  %2665 = icmp slt i64 %2664, 0
  br i1 %2665, label %2666, label %2667

2666:                                             ; preds = %2660
  store i8 1, ptr %91, align 1, !tbaa !5
  br label %2724

2667:                                             ; preds = %2660
  %2668 = load i64, ptr %18, align 8, !tbaa !11
  %2669 = sub nsw i64 %2668, 1
  %2670 = add nsw i64 %2669, 1
  %2671 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %41, i64 noundef %2670, ptr noundef %2671)
  %2672 = load i64, ptr %18, align 8, !tbaa !11
  %2673 = sub nsw i64 %2672, 1
  %2674 = add nsw i64 %2673, 1
  %2675 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %42, i64 noundef %2674, ptr noundef %2675)
  %2676 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL22testlinregunit_unsetlrPN11alglib_impl11linearmodelEPNS_8ae_stateE(ptr noundef %39, ptr noundef %2676)
  %2677 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl6lrcopyEPNS_11linearmodelES1_PNS_8ae_stateE(ptr noundef %38, ptr noundef %39, ptr noundef %2677)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %2678

2678:                                             ; preds = %2700, %2667
  %2679 = load i64, ptr %12, align 8, !tbaa !11
  %2680 = load i64, ptr %18, align 8, !tbaa !11
  %2681 = sub nsw i64 %2680, 1
  %2682 = icmp sle i64 %2679, %2681
  br i1 %2682, label %2683, label %2703

2683:                                             ; preds = %2678
  %2684 = load ptr, ptr %4, align 8, !tbaa !9
  %2685 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %2684)
  %2686 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %2685, double -1.000000e+00)
  %2687 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %41, i32 0, i32 4
  %2688 = load ptr, ptr %2687, align 8, !tbaa !15
  %2689 = load i64, ptr %12, align 8, !tbaa !11
  %2690 = getelementptr inbounds double, ptr %2688, i64 %2689
  store double %2686, ptr %2690, align 8, !tbaa !13
  %2691 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %41, i32 0, i32 4
  %2692 = load ptr, ptr %2691, align 8, !tbaa !15
  %2693 = load i64, ptr %12, align 8, !tbaa !11
  %2694 = getelementptr inbounds double, ptr %2692, i64 %2693
  %2695 = load double, ptr %2694, align 8, !tbaa !13
  %2696 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %42, i32 0, i32 4
  %2697 = load ptr, ptr %2696, align 8, !tbaa !15
  %2698 = load i64, ptr %12, align 8, !tbaa !11
  %2699 = getelementptr inbounds double, ptr %2697, i64 %2698
  store double %2695, ptr %2699, align 8, !tbaa !13
  br label %2700

2700:                                             ; preds = %2683
  %2701 = load i64, ptr %12, align 8, !tbaa !11
  %2702 = add nsw i64 %2701, 1
  store i64 %2702, ptr %12, align 8, !tbaa !11
  br label %2678, !llvm.loop !75

2703:                                             ; preds = %2678
  %2704 = load ptr, ptr %4, align 8, !tbaa !9
  %2705 = call noundef double @_ZN11alglib_impl9lrprocessEPNS_11linearmodelEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %38, ptr noundef %41, ptr noundef %2704)
  store double %2705, ptr %43, align 8, !tbaa !13
  %2706 = load ptr, ptr %4, align 8, !tbaa !9
  %2707 = call noundef double @_ZN11alglib_impl9lrprocessEPNS_11linearmodelEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %39, ptr noundef %42, ptr noundef %2706)
  store double %2707, ptr %44, align 8, !tbaa !13
  %2708 = load double, ptr %43, align 8, !tbaa !13
  %2709 = load double, ptr %44, align 8, !tbaa !13
  %2710 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %2708, double noundef %2709)
  %2711 = zext i1 %2710 to i8
  store i8 %2711, ptr %45, align 1, !tbaa !5
  %2712 = load i8, ptr %91, align 1, !tbaa !5, !range !18, !noundef !19
  %2713 = trunc i8 %2712 to i1
  br i1 %2713, label %2718, label %2714

2714:                                             ; preds = %2703
  %2715 = load i8, ptr %45, align 1, !tbaa !5, !range !18, !noundef !19
  %2716 = trunc i8 %2715 to i1
  %2717 = xor i1 %2716, true
  br label %2718

2718:                                             ; preds = %2714, %2703
  %2719 = phi i1 [ true, %2703 ], [ %2717, %2714 ]
  %2720 = zext i1 %2719 to i8
  store i8 %2720, ptr %91, align 1, !tbaa !5
  br label %2721

2721:                                             ; preds = %2718
  %2722 = load i64, ptr %16, align 8, !tbaa !11
  %2723 = add nsw i64 %2722, 1
  store i64 %2723, ptr %16, align 8, !tbaa !11
  br label %2616, !llvm.loop !76

2724:                                             ; preds = %2666, %2616
  %2725 = load i8, ptr %87, align 1, !tbaa !5, !range !18, !noundef !19
  %2726 = trunc i8 %2725 to i1
  br i1 %2726, label %2745, label %2727

2727:                                             ; preds = %2724
  %2728 = load i8, ptr %86, align 1, !tbaa !5, !range !18, !noundef !19
  %2729 = trunc i8 %2728 to i1
  br i1 %2729, label %2745, label %2730

2730:                                             ; preds = %2727
  %2731 = load i8, ptr %89, align 1, !tbaa !5, !range !18, !noundef !19
  %2732 = trunc i8 %2731 to i1
  br i1 %2732, label %2745, label %2733

2733:                                             ; preds = %2730
  %2734 = load i8, ptr %88, align 1, !tbaa !5, !range !18, !noundef !19
  %2735 = trunc i8 %2734 to i1
  br i1 %2735, label %2745, label %2736

2736:                                             ; preds = %2733
  %2737 = load i8, ptr %90, align 1, !tbaa !5, !range !18, !noundef !19
  %2738 = trunc i8 %2737 to i1
  br i1 %2738, label %2745, label %2739

2739:                                             ; preds = %2736
  %2740 = load i8, ptr %91, align 1, !tbaa !5, !range !18, !noundef !19
  %2741 = trunc i8 %2740 to i1
  br i1 %2741, label %2745, label %2742

2742:                                             ; preds = %2739
  %2743 = load i8, ptr %92, align 1, !tbaa !5, !range !18, !noundef !19
  %2744 = trunc i8 %2743 to i1
  br label %2745

2745:                                             ; preds = %2742, %2739, %2736, %2733, %2730, %2727, %2724
  %2746 = phi i1 [ true, %2739 ], [ true, %2736 ], [ true, %2733 ], [ true, %2730 ], [ true, %2727 ], [ true, %2724 ], [ %2744, %2742 ]
  %2747 = zext i1 %2746 to i8
  store i8 %2747, ptr %93, align 1, !tbaa !5
  %2748 = load i8, ptr %3, align 1, !tbaa !5, !range !18, !noundef !19
  %2749 = trunc i8 %2748 to i1
  br i1 %2749, label %2836, label %2750

2750:                                             ; preds = %2745
  %2751 = call i32 (ptr, ...) @printf(ptr noundef @.str.533)
  %2752 = call i32 (ptr, ...) @printf(ptr noundef @.str.534)
  %2753 = load i8, ptr %87, align 1, !tbaa !5, !range !18, !noundef !19
  %2754 = trunc i8 %2753 to i1
  br i1 %2754, label %2757, label %2755

2755:                                             ; preds = %2750
  %2756 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %2759

2757:                                             ; preds = %2750
  %2758 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %2759

2759:                                             ; preds = %2757, %2755
  %2760 = call i32 (ptr, ...) @printf(ptr noundef @.str.535)
  %2761 = load i8, ptr %86, align 1, !tbaa !5, !range !18, !noundef !19
  %2762 = trunc i8 %2761 to i1
  br i1 %2762, label %2765, label %2763

2763:                                             ; preds = %2759
  %2764 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %2767

2765:                                             ; preds = %2759
  %2766 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %2767

2767:                                             ; preds = %2765, %2763
  %2768 = call i32 (ptr, ...) @printf(ptr noundef @.str.536)
  %2769 = load i8, ptr %89, align 1, !tbaa !5, !range !18, !noundef !19
  %2770 = trunc i8 %2769 to i1
  br i1 %2770, label %2785, label %2771

2771:                                             ; preds = %2767
  %2772 = load i8, ptr %88, align 1, !tbaa !5, !range !18, !noundef !19
  %2773 = trunc i8 %2772 to i1
  br i1 %2773, label %2785, label %2774

2774:                                             ; preds = %2771
  %2775 = load i8, ptr %90, align 1, !tbaa !5, !range !18, !noundef !19
  %2776 = trunc i8 %2775 to i1
  br i1 %2776, label %2785, label %2777

2777:                                             ; preds = %2774
  %2778 = load i8, ptr %91, align 1, !tbaa !5, !range !18, !noundef !19
  %2779 = trunc i8 %2778 to i1
  br i1 %2779, label %2785, label %2780

2780:                                             ; preds = %2777
  %2781 = load i8, ptr %92, align 1, !tbaa !5, !range !18, !noundef !19
  %2782 = trunc i8 %2781 to i1
  br i1 %2782, label %2785, label %2783

2783:                                             ; preds = %2780
  %2784 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %2787

2785:                                             ; preds = %2780, %2777, %2774, %2771, %2767
  %2786 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %2787

2787:                                             ; preds = %2785, %2783
  %2788 = call i32 (ptr, ...) @printf(ptr noundef @.str.537)
  %2789 = load i8, ptr %89, align 1, !tbaa !5, !range !18, !noundef !19
  %2790 = trunc i8 %2789 to i1
  br i1 %2790, label %2793, label %2791

2791:                                             ; preds = %2787
  %2792 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %2795

2793:                                             ; preds = %2787
  %2794 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %2795

2795:                                             ; preds = %2793, %2791
  %2796 = call i32 (ptr, ...) @printf(ptr noundef @.str.538)
  %2797 = load i8, ptr %88, align 1, !tbaa !5, !range !18, !noundef !19
  %2798 = trunc i8 %2797 to i1
  br i1 %2798, label %2801, label %2799

2799:                                             ; preds = %2795
  %2800 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %2803

2801:                                             ; preds = %2795
  %2802 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %2803

2803:                                             ; preds = %2801, %2799
  %2804 = call i32 (ptr, ...) @printf(ptr noundef @.str.539)
  %2805 = load i8, ptr %90, align 1, !tbaa !5, !range !18, !noundef !19
  %2806 = trunc i8 %2805 to i1
  br i1 %2806, label %2809, label %2807

2807:                                             ; preds = %2803
  %2808 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %2811

2809:                                             ; preds = %2803
  %2810 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %2811

2811:                                             ; preds = %2809, %2807
  %2812 = call i32 (ptr, ...) @printf(ptr noundef @.str.540)
  %2813 = load i8, ptr %92, align 1, !tbaa !5, !range !18, !noundef !19
  %2814 = trunc i8 %2813 to i1
  br i1 %2814, label %2817, label %2815

2815:                                             ; preds = %2811
  %2816 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %2819

2817:                                             ; preds = %2811
  %2818 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %2819

2819:                                             ; preds = %2817, %2815
  %2820 = call i32 (ptr, ...) @printf(ptr noundef @.str.541)
  %2821 = load i8, ptr %91, align 1, !tbaa !5, !range !18, !noundef !19
  %2822 = trunc i8 %2821 to i1
  br i1 %2822, label %2825, label %2823

2823:                                             ; preds = %2819
  %2824 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %2827

2825:                                             ; preds = %2819
  %2826 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %2827

2827:                                             ; preds = %2825, %2823
  %2828 = load i8, ptr %93, align 1, !tbaa !5, !range !18, !noundef !19
  %2829 = trunc i8 %2828 to i1
  br i1 %2829, label %2830, label %2832

2830:                                             ; preds = %2827
  %2831 = call i32 (ptr, ...) @printf(ptr noundef @.str.20)
  br label %2834

2832:                                             ; preds = %2827
  %2833 = call i32 (ptr, ...) @printf(ptr noundef @.str.21)
  br label %2834

2834:                                             ; preds = %2832, %2830
  %2835 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %2836

2836:                                             ; preds = %2834, %2745
  %2837 = load i8, ptr %93, align 1, !tbaa !5, !range !18, !noundef !19
  %2838 = trunc i8 %2837 to i1
  %2839 = xor i1 %2838, true
  %2840 = zext i1 %2839 to i8
  store i8 %2840, ptr %94, align 1, !tbaa !5
  %2841 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %2841)
  %2842 = load i8, ptr %94, align 1, !tbaa !5, !range !18, !noundef !19
  %2843 = trunc i8 %2842 to i1
  call void @llvm.lifetime.end.p0(i64 1, ptr %94) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %92) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %91) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %87) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 200, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 200, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 80, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 80, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #5
  ret i1 %2843
}

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL33testlinregunit_generaterandomtaskddbddddlPN11alglib_impl9ae_matrixEPNS_9ae_vectorEPNS_8ae_stateE(double noundef, double noundef, i1 noundef zeroext, double noundef, double noundef, double noundef, double noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) #4

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL27testlinregunit_generatetaskddddbddlPN11alglib_impl9ae_matrixEPNS_9ae_vectorEPNS_8ae_stateE(double noundef, double noundef, double noundef, double noundef, i1 noundef zeroext, double noundef, double noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) #4

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL28testlinregunit_filltaskwithyddlPN11alglib_impl9ae_matrixEPNS_9ae_vectorEPNS_8ae_stateE(double noundef, double noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) #4

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef double @_ZL29testlinregunit_generatenormalddPN11alglib_impl8ae_stateE(double noundef, double noundef, ptr noundef) #4

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

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

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

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

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

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { 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 #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 = !{!"bool", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"double", !7, i64 0}
!15 = !{!7, !7, i64 0}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = !{i8 0, i8 2}
!19 = !{}
!20 = distinct !{!20, !17}
!21 = distinct !{!21, !17}
!22 = distinct !{!22, !17}
!23 = distinct !{!23, !17}
!24 = distinct !{!24, !17}
!25 = distinct !{!25, !17}
!26 = distinct !{!26, !17}
!27 = distinct !{!27, !17}
!28 = distinct !{!28, !17}
!29 = distinct !{!29, !17}
!30 = distinct !{!30, !17}
!31 = distinct !{!31, !17}
!32 = distinct !{!32, !17}
!33 = distinct !{!33, !17}
!34 = distinct !{!34, !17}
!35 = distinct !{!35, !17}
!36 = distinct !{!36, !17}
!37 = distinct !{!37, !17}
!38 = distinct !{!38, !17}
!39 = distinct !{!39, !17}
!40 = distinct !{!40, !17}
!41 = distinct !{!41, !17}
!42 = distinct !{!42, !17}
!43 = distinct !{!43, !17}
!44 = distinct !{!44, !17}
!45 = distinct !{!45, !17}
!46 = distinct !{!46, !17}
!47 = distinct !{!47, !17}
!48 = distinct !{!48, !17}
!49 = !{!50, !12, i64 16}
!50 = !{!"_ZTSN11alglib_impl8lrreportE", !51, i64 0, !14, i64 80, !14, i64 88, !14, i64 96, !14, i64 104, !14, i64 112, !14, i64 120, !12, i64 128, !53, i64 136}
!51 = !{!"_ZTSN11alglib_impl9ae_matrixE", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !6, i64 32, !52, i64 40, !7, i64 72}
!52 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24}
!53 = !{!"_ZTSN11alglib_impl9ae_vectorE", !12, i64 0, !12, i64 8, !6, i64 16, !52, i64 24, !7, i64 56}
!54 = distinct !{!54, !17}
!55 = distinct !{!55, !17}
!56 = !{!50, !12, i64 128}
!57 = distinct !{!57, !17}
!58 = distinct !{!58, !17}
!59 = !{!50, !14, i64 104}
!60 = !{!50, !14, i64 112}
!61 = !{!50, !14, i64 120}
!62 = !{!50, !14, i64 80}
!63 = !{!50, !14, i64 88}
!64 = !{!50, !14, i64 96}
!65 = distinct !{!65, !17}
!66 = distinct !{!66, !17}
!67 = distinct !{!67, !17}
!68 = distinct !{!68, !17}
!69 = distinct !{!69, !17}
!70 = distinct !{!70, !17}
!71 = distinct !{!71, !17}
!72 = distinct !{!72, !17}
!73 = distinct !{!73, !17}
!74 = distinct !{!74, !17}
!75 = distinct !{!75, !17}
!76 = distinct !{!76, !17}


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

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

@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.533 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.534 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.535 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.536 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.537 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.538 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.539 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.540 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.541 = external hidden unnamed_addr constant [42 x i8], align 1

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

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

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

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

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

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

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #3

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) local_unnamed_addr #1

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

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

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

declare noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef) local_unnamed_addr #1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z10testlinregbPN11alglib_impl8ae_stateE(i1 noundef zeroext %0, ptr noundef %1) local_unnamed_addr #5 {
  %3 = alloca %"struct.alglib_impl::ae_frame", align 8
  %4 = alloca i64, align 8
  %5 = alloca i64, align 8
  %6 = alloca i64, align 8
  %7 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %8 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %9 = alloca %"struct.alglib_impl::ae_vector", align 8
  %10 = alloca %"struct.alglib_impl::ae_vector", align 8
  %11 = alloca %"struct.alglib_impl::ae_vector", align 8
  %12 = alloca %"struct.alglib_impl::ae_vector", align 8
  %13 = alloca %"struct.alglib_impl::ae_vector", align 8
  %14 = alloca %"struct.alglib_impl::ae_vector", align 8
  %15 = alloca %"struct.alglib_impl::ae_vector", align 8
  %16 = alloca %"struct.alglib_impl::ae_vector", align 8
  %17 = alloca %"struct.alglib_impl::ae_vector", align 8
  %18 = alloca %"struct.alglib_impl::linearmodel", align 8
  %19 = alloca %"struct.alglib_impl::linearmodel", align 8
  %20 = alloca %"struct.alglib_impl::linearmodel", align 8
  %21 = alloca %"struct.alglib_impl::ae_vector", align 8
  %22 = alloca %"struct.alglib_impl::ae_vector", align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca %"struct.alglib_impl::ae_vector", 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::lrreport", align 8
  %36 = alloca %"struct.alglib_impl::lrreport", align 8
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca double, align 8
  %40 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #7
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %7) #7
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %8) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %9) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %10) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %11) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %12) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %13) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %14) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %15) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %16) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %17) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %19) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %20) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %21) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %32) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %33) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %34) #7
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %35) #7
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %36) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #7
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %1, ptr noundef nonnull %3)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %7, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %8, i8 0, i64 80, 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(64) %10, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %11, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %12, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %13, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %14, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %15, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %16, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %17, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %18, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %19, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %20, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %21, i8 0, i64 64, 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) %32, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %33, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %34, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(200) %35, i8 0, i64 200, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(200) %36, i8 0, i64 200, i1 false)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %7, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %8, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %9, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %10, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %11, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %12, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %13, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %14, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %15, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %16, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %17, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl17_linearmodel_initEPvPNS_8ae_stateEb(ptr noundef nonnull %18, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl17_linearmodel_initEPvPNS_8ae_stateEb(ptr noundef nonnull %19, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl17_linearmodel_initEPvPNS_8ae_stateEb(ptr noundef nonnull %20, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %21, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %22, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %32, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %33, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %34, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14_lrreport_initEPvPNS_8ae_stateEb(ptr noundef nonnull %35, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14_lrreport_initEPvPNS_8ae_stateEb(ptr noundef nonnull %36, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %32, i64 noundef 5, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %33, i64 noundef 5, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %34, i64 noundef 5, ptr noundef %1)
  %41 = getelementptr inbounds i8, ptr %32, i64 56
  %42 = load ptr, ptr %41, align 8, !tbaa !5
  store double 5.000000e-01, ptr %42, align 8, !tbaa !8
  %43 = load ptr, ptr %41, align 8, !tbaa !5
  %44 = getelementptr inbounds i8, ptr %43, i64 8
  store double 2.500000e-01, ptr %44, align 8, !tbaa !8
  %45 = load ptr, ptr %41, align 8, !tbaa !5
  %46 = getelementptr inbounds i8, ptr %45, i64 16
  store double 1.000000e-01, ptr %46, align 8, !tbaa !8
  %47 = load ptr, ptr %41, align 8, !tbaa !5
  %48 = getelementptr inbounds i8, ptr %47, i64 24
  store double 5.000000e-02, ptr %48, align 8, !tbaa !8
  %49 = load ptr, ptr %41, align 8, !tbaa !5
  %50 = getelementptr inbounds i8, ptr %49, i64 32
  store double 2.500000e-02, ptr %50, align 8, !tbaa !8
  %51 = getelementptr inbounds i8, ptr %34, i64 56
  %52 = load ptr, ptr %41, align 8, !tbaa !5
  %53 = load double, ptr %52, align 8, !tbaa !8
  %54 = fsub double 1.000000e+00, %53
  %55 = fmul double %53, %54
  %56 = fdiv double %55, 1.000000e+03
  %57 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %56, ptr noundef %1)
  %58 = load ptr, ptr %51, align 8, !tbaa !5
  store double %57, ptr %58, align 8, !tbaa !8
  %59 = load ptr, ptr %41, align 8, !tbaa !5
  %60 = getelementptr inbounds i8, ptr %59, i64 8
  %61 = load double, ptr %60, align 8, !tbaa !8
  %62 = fsub double 1.000000e+00, %61
  %63 = fmul double %61, %62
  %64 = fdiv double %63, 1.000000e+03
  %65 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %64, ptr noundef %1)
  %66 = load ptr, ptr %51, align 8, !tbaa !5
  %67 = getelementptr inbounds i8, ptr %66, i64 8
  store double %65, ptr %67, align 8, !tbaa !8
  %68 = load ptr, ptr %41, align 8, !tbaa !5
  %69 = getelementptr inbounds i8, ptr %68, i64 16
  %70 = load double, ptr %69, align 8, !tbaa !8
  %71 = fsub double 1.000000e+00, %70
  %72 = fmul double %70, %71
  %73 = fdiv double %72, 1.000000e+03
  %74 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %73, ptr noundef %1)
  %75 = load ptr, ptr %51, align 8, !tbaa !5
  %76 = getelementptr inbounds i8, ptr %75, i64 16
  store double %74, ptr %76, align 8, !tbaa !8
  %77 = load ptr, ptr %41, align 8, !tbaa !5
  %78 = getelementptr inbounds i8, ptr %77, i64 24
  %79 = load double, ptr %78, align 8, !tbaa !8
  %80 = fsub double 1.000000e+00, %79
  %81 = fmul double %79, %80
  %82 = fdiv double %81, 1.000000e+03
  %83 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %82, ptr noundef %1)
  %84 = load ptr, ptr %51, align 8, !tbaa !5
  %85 = getelementptr inbounds i8, ptr %84, i64 24
  store double %83, ptr %85, align 8, !tbaa !8
  %86 = load ptr, ptr %41, align 8, !tbaa !5
  %87 = getelementptr inbounds i8, ptr %86, i64 32
  %88 = load double, ptr %87, align 8, !tbaa !8
  %89 = fsub double 1.000000e+00, %88
  %90 = fmul double %88, %89
  %91 = fdiv double %90, 1.000000e+03
  %92 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %91, ptr noundef %1)
  %93 = load ptr, ptr %51, align 8, !tbaa !5
  %94 = getelementptr inbounds i8, ptr %93, i64 32
  store double %92, ptr %94, align 8, !tbaa !8
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %13, i64 noundef 1000, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %14, i64 noundef 1000, ptr noundef %1)
  %95 = getelementptr inbounds i8, ptr %9, i64 56
  %96 = getelementptr inbounds i8, ptr %33, i64 56
  %97 = getelementptr inbounds i8, ptr %13, i64 56
  %98 = getelementptr inbounds i8, ptr %14, i64 56
  %99 = getelementptr inbounds i8, ptr %7, i64 72
  br label %102

.preheader1037:                                   ; preds = %425
  %100 = getelementptr inbounds i8, ptr %17, i64 56
  %101 = getelementptr inbounds i8, ptr %35, i64 72
  br label %427

102:                                              ; preds = %2, %425
  %indvar = phi i64 [ 0, %2 ], [ %indvar.next, %425 ]
  %.01056 = phi i64 [ 2, %2 ], [ %426, %425 ]
  %.08601055 = phi i8 [ 0, %2 ], [ %.7867, %425 ]
  %.08681054 = phi i8 [ 0, %2 ], [ %.6874, %425 ]
  call void @_ZL33testlinregunit_generaterandomtaskddbddddlPN11alglib_impl9ae_matrixEPNS_9ae_vectorEPNS_8ae_stateE(double noundef -1.000000e+00, double noundef 1.000000e+00, i1 noundef zeroext false, double noundef -1.000000e+00, double noundef 1.000000e+00, double noundef 1.000000e+00, double noundef 2.000000e+00, i64 noundef %.01056, ptr noundef nonnull %7, ptr noundef nonnull %9, ptr noundef %1)
  call void @_ZN11alglib_impl7lrlinesEPNS_9ae_matrixEPNS_9ae_vectorElPlPdS5_S5_S5_S5_S5_S5_PNS_8ae_stateE(ptr noundef nonnull %7, ptr noundef nonnull %9, i64 noundef %.01056, ptr noundef nonnull %5, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef nonnull %29, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef %1)
  %103 = trunc nuw i8 %.08681054 to i1
  %104 = load i64, ptr %5, align 8
  %105 = icmp ne i64 %104, 1
  %106 = select i1 %103, i1 true, i1 %105
  call void @_ZL33testlinregunit_generaterandomtaskddbddddlPN11alglib_impl9ae_matrixEPNS_9ae_vectorEPNS_8ae_stateE(double noundef 1.000000e+00, double noundef 1.000000e+00, i1 noundef zeroext false, double noundef -1.000000e+00, double noundef 1.000000e+00, double noundef 1.000000e+00, double noundef 2.000000e+00, i64 noundef %.01056, ptr noundef nonnull %7, ptr noundef nonnull %9, ptr noundef %1)
  call void @_ZN11alglib_impl7lrlinesEPNS_9ae_matrixEPNS_9ae_vectorElPlPdS5_S5_S5_S5_S5_S5_PNS_8ae_stateE(ptr noundef nonnull %7, ptr noundef nonnull %9, i64 noundef %.01056, ptr noundef nonnull %5, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef nonnull %29, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef %1)
  %107 = load i64, ptr %5, align 8
  %108 = icmp ne i64 %107, -3
  %109 = select i1 %106, i1 true, i1 %108
  call void @_ZL33testlinregunit_generaterandomtaskddbddddlPN11alglib_impl9ae_matrixEPNS_9ae_vectorEPNS_8ae_stateE(double noundef -1.000000e+00, double noundef 1.000000e+00, i1 noundef zeroext false, double noundef -1.000000e+00, double noundef 1.000000e+00, double noundef -1.000000e+00, double noundef -1.000000e+00, i64 noundef %.01056, ptr noundef nonnull %7, ptr noundef nonnull %9, ptr noundef %1)
  call void @_ZN11alglib_impl7lrlinesEPNS_9ae_matrixEPNS_9ae_vectorElPlPdS5_S5_S5_S5_S5_S5_PNS_8ae_stateE(ptr noundef nonnull %7, ptr noundef nonnull %9, i64 noundef %.01056, ptr noundef nonnull %5, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef nonnull %29, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef %1)
  %110 = load i64, ptr %5, align 8
  %111 = icmp ne i64 %110, -2
  %112 = select i1 %109, i1 true, i1 %111
  call void @_ZL33testlinregunit_generaterandomtaskddbddddlPN11alglib_impl9ae_matrixEPNS_9ae_vectorEPNS_8ae_stateE(double noundef -1.000000e+00, double noundef 1.000000e+00, i1 noundef zeroext false, double noundef -1.000000e+00, double noundef 1.000000e+00, double noundef 2.000000e+00, double noundef 1.000000e+00, i64 noundef 2, ptr noundef nonnull %7, ptr noundef nonnull %9, ptr noundef %1)
  call void @_ZN11alglib_impl7lrlinesEPNS_9ae_matrixEPNS_9ae_vectorElPlPdS5_S5_S5_S5_S5_S5_PNS_8ae_stateE(ptr noundef nonnull %7, ptr noundef nonnull %9, i64 noundef 1, ptr noundef nonnull %5, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef nonnull %29, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef %1)
  %113 = load i64, ptr %5, align 8
  %114 = icmp ne i64 %113, -1
  %115 = select i1 %112, i1 true, i1 %114
  %116 = zext i1 %115 to i8
  %117 = icmp ugt i64 %.01056, 4
  %118 = icmp ugt i64 %.01056, 2
  %119 = and i64 %.01056, 1
  %.not986 = icmp eq i64 %119, 0
  %xtraiter = and i64 %.01056, 1
  %120 = icmp eq i64 %indvar, -1
  %unroll_iter = and i64 %.01056, 9223372036854775806
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br label %121

121:                                              ; preds = %102, %.thread
  %.18611053 = phi i8 [ %.08601055, %102 ], [ %.7867, %.thread ]
  %.18691052 = phi i8 [ %116, %102 ], [ %.6874, %.thread ]
  %.08941051 = phi i64 [ 1, %102 ], [ %424, %.thread ]
  %122 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %123 = call double @llvm.fmuladd.f64(double %122, double 2.000000e+00, double -1.000000e+00)
  %124 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %125 = call double @llvm.fmuladd.f64(double %124, double 2.000000e+00, double -1.000000e+00)
  %126 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %127 = fmul double %126, -5.000000e+00
  %128 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %129 = fmul double %128, 5.000000e+00
  %130 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %131 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %130, double noundef 5.000000e-01)
  call void @_ZL27testlinregunit_generatetaskddddbddlPN11alglib_impl9ae_matrixEPNS_9ae_vectorEPNS_8ae_stateE(double noundef %123, double noundef %125, double noundef %127, double noundef %129, i1 noundef zeroext %131, double noundef 1.000000e+00, double noundef 1.000000e+00, i64 noundef %.01056, ptr noundef nonnull %7, ptr noundef nonnull %9, ptr noundef %1)
  call void @_ZN11alglib_impl7lrlinesEPNS_9ae_matrixEPNS_9ae_vectorElPlPdS5_S5_S5_S5_S5_S5_PNS_8ae_stateE(ptr noundef nonnull %7, ptr noundef nonnull %9, i64 noundef %.01056, ptr noundef nonnull %5, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef nonnull %29, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef %1)
  call void @_ZN11alglib_impl6lrlineEPNS_9ae_matrixElPlPdS3_PNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %.01056, ptr noundef nonnull %6, ptr noundef nonnull %27, ptr noundef nonnull %28, ptr noundef %1)
  %132 = load i64, ptr %5, align 8, !tbaa !10
  %133 = icmp ne i64 %132, 1
  %134 = load i64, ptr %6, align 8
  %135 = icmp ne i64 %134, 1
  %or.cond = select i1 %133, i1 true, i1 %135
  br i1 %or.cond, label %153, label %136

136:                                              ; preds = %121
  %137 = trunc nuw i8 %.18611053 to i1
  br i1 %137, label %150, label %138

138:                                              ; preds = %136
  %139 = load double, ptr %23, align 8, !tbaa !8
  %140 = load double, ptr %27, align 8, !tbaa !8
  %141 = fsub double %139, %140
  %142 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %141, ptr noundef %1)
  %143 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %142, double noundef 5.000000e-10)
  br i1 %143, label %150, label %144

144:                                              ; preds = %138
  %145 = load double, ptr %24, align 8, !tbaa !8
  %146 = load double, ptr %28, align 8, !tbaa !8
  %147 = fsub double %145, %146
  %148 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %147, ptr noundef %1)
  %149 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %148, double noundef 5.000000e-10)
  br label %150

150:                                              ; preds = %144, %138, %136
  %151 = phi i1 [ true, %138 ], [ true, %136 ], [ %149, %144 ]
  %152 = zext i1 %151 to i8
  br label %153

153:                                              ; preds = %121, %150
  %.2870 = phi i8 [ %.18691052, %150 ], [ 1, %121 ]
  %.2862 = phi i8 [ %152, %150 ], [ %.18611053, %121 ]
  %154 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %155 = call double @llvm.fmuladd.f64(double %154, double 2.000000e+00, double -1.000000e+00)
  %156 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %157 = call double @llvm.fmuladd.f64(double %156, double 2.000000e+00, double -1.000000e+00)
  %158 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %159 = fmul double %158, -5.000000e+00
  %160 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %161 = fmul double %160, 5.000000e+00
  call void @_ZL27testlinregunit_generatetaskddddbddlPN11alglib_impl9ae_matrixEPNS_9ae_vectorEPNS_8ae_stateE(double noundef %155, double noundef %157, double noundef %159, double noundef %161, i1 noundef zeroext %117, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef %.01056, ptr noundef nonnull %7, ptr noundef nonnull %9, ptr noundef %1)
  br label %162

162:                                              ; preds = %153, %162
  %.18761042 = phi i64 [ 0, %153 ], [ %167, %162 ]
  %163 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %164 = fadd double %163, 1.000000e+00
  %165 = load ptr, ptr %95, align 8, !tbaa !5
  %166 = getelementptr inbounds double, ptr %165, i64 %.18761042
  store double %164, ptr %166, align 8, !tbaa !8
  %167 = add nuw nsw i64 %.18761042, 1
  %exitcond.not = icmp eq i64 %167, %.01056
  br i1 %exitcond.not, label %168, label %162, !llvm.loop !12

168:                                              ; preds = %162
  call void @_ZN11alglib_impl7lrlinesEPNS_9ae_matrixEPNS_9ae_vectorElPlPdS5_S5_S5_S5_S5_S5_PNS_8ae_stateE(ptr noundef nonnull %7, ptr noundef nonnull %9, i64 noundef %.01056, ptr noundef nonnull %5, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef nonnull %29, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef %1)
  %169 = load i64, ptr %5, align 8, !tbaa !10
  %.not981 = icmp eq i64 %169, 1
  br i1 %.not981, label %170, label %185

170:                                              ; preds = %168
  %171 = trunc nuw i8 %.2862 to i1
  br i1 %171, label %182, label %172

172:                                              ; preds = %170
  %173 = load double, ptr %23, align 8, !tbaa !8
  %174 = fsub double %173, %155
  %175 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %174, ptr noundef %1)
  %176 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %175, double noundef 1.000000e-03)
  br i1 %176, label %182, label %177

177:                                              ; preds = %172
  %178 = load double, ptr %24, align 8, !tbaa !8
  %179 = fsub double %178, %157
  %180 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %179, ptr noundef %1)
  %181 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %180, double noundef 1.000000e-03)
  br label %182

182:                                              ; preds = %177, %172, %170
  %183 = phi i1 [ true, %172 ], [ true, %170 ], [ %181, %177 ]
  %184 = zext i1 %183 to i8
  br label %185

185:                                              ; preds = %168, %182
  %.3871 = phi i8 [ %.2870, %182 ], [ 1, %168 ]
  %.3863 = phi i8 [ %184, %182 ], [ %.2862, %168 ]
  %186 = load ptr, ptr %96, align 8, !tbaa !5
  store double 0.000000e+00, ptr %186, align 8, !tbaa !8
  %187 = load ptr, ptr %96, align 8, !tbaa !5
  %188 = getelementptr inbounds i8, ptr %187, i64 8
  store double 0.000000e+00, ptr %188, align 8, !tbaa !8
  %189 = load ptr, ptr %96, align 8, !tbaa !5
  %190 = getelementptr inbounds i8, ptr %189, i64 16
  store double 0.000000e+00, ptr %190, align 8, !tbaa !8
  %191 = load ptr, ptr %96, align 8, !tbaa !5
  %192 = getelementptr inbounds i8, ptr %191, i64 24
  store double 0.000000e+00, ptr %192, align 8, !tbaa !8
  %193 = load ptr, ptr %96, align 8, !tbaa !5
  %194 = getelementptr inbounds i8, ptr %193, i64 32
  store double 0.000000e+00, ptr %194, align 8, !tbaa !8
  %195 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %196 = call double @llvm.fmuladd.f64(double %195, double 2.000000e+00, double -1.000000e+00)
  %197 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %198 = call double @llvm.fmuladd.f64(double %197, double 2.000000e+00, double -1.000000e+00)
  %199 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %200 = fmul double %199, -5.000000e+00
  %201 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %202 = fmul double %201, 5.000000e+00
  call void @_ZL27testlinregunit_generatetaskddddbddlPN11alglib_impl9ae_matrixEPNS_9ae_vectorEPNS_8ae_stateE(double noundef %196, double noundef %198, double noundef %200, double noundef %202, i1 noundef zeroext %117, double noundef 1.000000e+00, double noundef 2.000000e+00, i64 noundef %.01056, ptr noundef nonnull %7, ptr noundef nonnull %9, ptr noundef %1)
  call void @_ZN11alglib_impl7lrlinesEPNS_9ae_matrixEPNS_9ae_vectorElPlPdS5_S5_S5_S5_S5_S5_PNS_8ae_stateE(ptr noundef nonnull %7, ptr noundef nonnull %9, i64 noundef %.01056, ptr noundef nonnull %5, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef nonnull %29, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef %1)
  %203 = load i64, ptr %5, align 8, !tbaa !10
  %.not982 = icmp eq i64 %203, 1
  br i1 %.not982, label %204, label %.thread

204:                                              ; preds = %185
  %205 = load double, ptr %25, align 8, !tbaa !8
  %206 = load double, ptr %26, align 8, !tbaa !8
  br label %207

207:                                              ; preds = %204, %.loopexit1038
  %.48721046 = phi i8 [ %.3871, %204 ], [ %.5873, %.loopexit1038 ]
  %.09171045 = phi i64 [ 0, %204 ], [ %268, %.loopexit1038 ]
  call void @_ZL28testlinregunit_filltaskwithyddlPN11alglib_impl9ae_matrixEPNS_9ae_vectorEPNS_8ae_stateE(double noundef %196, double noundef %198, i64 noundef %.01056, ptr noundef nonnull %7, ptr noundef nonnull %9, ptr noundef %1)
  call void @_ZN11alglib_impl7lrlinesEPNS_9ae_matrixEPNS_9ae_vectorElPlPdS5_S5_S5_S5_S5_S5_PNS_8ae_stateE(ptr noundef nonnull %7, ptr noundef nonnull %9, i64 noundef %.01056, ptr noundef nonnull %5, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef nonnull %29, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef %1)
  %208 = load i64, ptr %5, align 8, !tbaa !10
  %.not988 = icmp eq i64 %208, 1
  br i1 %.not988, label %209, label %.loopexit1038

209:                                              ; preds = %207
  %210 = load double, ptr %23, align 8, !tbaa !8
  %211 = load ptr, ptr %97, align 8, !tbaa !5
  %212 = getelementptr inbounds double, ptr %211, i64 %.09171045
  store double %210, ptr %212, align 8, !tbaa !8
  %213 = load double, ptr %24, align 8, !tbaa !8
  %214 = load ptr, ptr %98, align 8, !tbaa !5
  %215 = getelementptr inbounds double, ptr %214, i64 %.09171045
  store double %213, ptr %215, align 8, !tbaa !8
  %216 = load double, ptr %31, align 8, !tbaa !8
  %217 = load ptr, ptr %41, align 8, !tbaa !5
  %218 = load double, ptr %217, align 8, !tbaa !8
  %219 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %216, double noundef %218)
  br i1 %219, label %220, label %224

220:                                              ; preds = %209
  %221 = load ptr, ptr %96, align 8, !tbaa !5
  %222 = load double, ptr %221, align 8, !tbaa !8
  %223 = fadd double %222, 1.000000e-03
  store double %223, ptr %221, align 8, !tbaa !8
  br label %224

224:                                              ; preds = %209, %220
  %225 = load double, ptr %31, align 8, !tbaa !8
  %226 = load ptr, ptr %41, align 8, !tbaa !5
  %227 = getelementptr inbounds i8, ptr %226, i64 8
  %228 = load double, ptr %227, align 8, !tbaa !8
  %229 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %225, double noundef %228)
  br i1 %229, label %230, label %235

230:                                              ; preds = %224
  %231 = load ptr, ptr %96, align 8, !tbaa !5
  %232 = getelementptr inbounds i8, ptr %231, i64 8
  %233 = load double, ptr %232, align 8, !tbaa !8
  %234 = fadd double %233, 1.000000e-03
  store double %234, ptr %232, align 8, !tbaa !8
  br label %235

235:                                              ; preds = %230, %224
  %236 = load double, ptr %31, align 8, !tbaa !8
  %237 = load ptr, ptr %41, align 8, !tbaa !5
  %238 = getelementptr inbounds i8, ptr %237, i64 16
  %239 = load double, ptr %238, align 8, !tbaa !8
  %240 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %236, double noundef %239)
  br i1 %240, label %241, label %246

241:                                              ; preds = %235
  %242 = load ptr, ptr %96, align 8, !tbaa !5
  %243 = getelementptr inbounds i8, ptr %242, i64 16
  %244 = load double, ptr %243, align 8, !tbaa !8
  %245 = fadd double %244, 1.000000e-03
  store double %245, ptr %243, align 8, !tbaa !8
  br label %246

246:                                              ; preds = %241, %235
  %247 = load double, ptr %31, align 8, !tbaa !8
  %248 = load ptr, ptr %41, align 8, !tbaa !5
  %249 = getelementptr inbounds i8, ptr %248, i64 24
  %250 = load double, ptr %249, align 8, !tbaa !8
  %251 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %247, double noundef %250)
  br i1 %251, label %252, label %257

252:                                              ; preds = %246
  %253 = load ptr, ptr %96, align 8, !tbaa !5
  %254 = getelementptr inbounds i8, ptr %253, i64 24
  %255 = load double, ptr %254, align 8, !tbaa !8
  %256 = fadd double %255, 1.000000e-03
  store double %256, ptr %254, align 8, !tbaa !8
  br label %257

257:                                              ; preds = %252, %246
  %258 = load double, ptr %31, align 8, !tbaa !8
  %259 = load ptr, ptr %41, align 8, !tbaa !5
  %260 = getelementptr inbounds i8, ptr %259, i64 32
  %261 = load double, ptr %260, align 8, !tbaa !8
  %262 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %258, double noundef %261)
  br i1 %262, label %263, label %.loopexit1038

263:                                              ; preds = %257
  %264 = load ptr, ptr %96, align 8, !tbaa !5
  %265 = getelementptr inbounds i8, ptr %264, i64 32
  %266 = load double, ptr %265, align 8, !tbaa !8
  %267 = fadd double %266, 1.000000e-03
  store double %267, ptr %265, align 8, !tbaa !8
  br label %.loopexit1038

.loopexit1038:                                    ; preds = %257, %263, %207
  %.5873 = phi i8 [ 1, %207 ], [ %.48721046, %263 ], [ %.48721046, %257 ]
  %268 = add nuw nsw i64 %.09171045, 1
  %exitcond1270.not = icmp eq i64 %268, 1000
  br i1 %exitcond1270.not, label %269, label %207, !llvm.loop !14

269:                                              ; preds = %.loopexit1038
  call void @_ZL26testlinregunit_calculatemvPN11alglib_impl9ae_vectorElPdS2_S2_S2_PNS_8ae_stateE(ptr noundef nonnull %13, i64 noundef 1000, ptr noundef nonnull %37, ptr noundef nonnull %38, ptr noundef nonnull %39, ptr noundef nonnull %40, ptr noundef %1)
  %270 = trunc nuw i8 %.3863 to i1
  br i1 %270, label %.critedge989, label %271

271:                                              ; preds = %269
  %272 = load double, ptr %37, align 8, !tbaa !8
  %273 = fsub double %272, %196
  %274 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %273, ptr noundef %1)
  %275 = load double, ptr %38, align 8, !tbaa !8
  %276 = fdiv double %274, %275
  %277 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %276, double noundef 7.000000e+00)
  br i1 %277, label %.critedge989, label %.critedge

.critedge:                                        ; preds = %271
  %278 = load double, ptr %39, align 8, !tbaa !8
  %279 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %205, ptr noundef %1)
  %280 = fsub double %278, %279
  %281 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %280, ptr noundef %1)
  %282 = load double, ptr %40, align 8, !tbaa !8
  %283 = fdiv double %281, %282
  %284 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %283, double noundef 7.000000e+00)
  call void @_ZL26testlinregunit_calculatemvPN11alglib_impl9ae_vectorElPdS2_S2_S2_PNS_8ae_stateE(ptr noundef nonnull %14, i64 noundef 1000, ptr noundef nonnull %37, ptr noundef nonnull %38, ptr noundef nonnull %39, ptr noundef nonnull %40, ptr noundef %1)
  br i1 %284, label %.critedge991, label %285

285:                                              ; preds = %.critedge
  %286 = load double, ptr %37, align 8, !tbaa !8
  %287 = fsub double %286, %198
  %288 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %287, ptr noundef %1)
  %289 = load double, ptr %38, align 8, !tbaa !8
  %290 = fdiv double %288, %289
  %291 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %290, double noundef 7.000000e+00)
  br i1 %291, label %.critedge991, label %292

.critedge989:                                     ; preds = %269, %271
  call void @_ZL26testlinregunit_calculatemvPN11alglib_impl9ae_vectorElPdS2_S2_S2_PNS_8ae_stateE(ptr noundef nonnull %14, i64 noundef 1000, ptr noundef nonnull %37, ptr noundef nonnull %38, ptr noundef nonnull %39, ptr noundef nonnull %40, ptr noundef %1)
  br label %.critedge991

292:                                              ; preds = %285
  %293 = load double, ptr %39, align 8, !tbaa !8
  %294 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %206, ptr noundef %1)
  %295 = fsub double %293, %294
  %296 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %295, ptr noundef %1)
  %297 = load double, ptr %40, align 8, !tbaa !8
  %298 = fdiv double %296, %297
  %299 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %298, double noundef 7.000000e+00)
  br label %.critedge991

.critedge991:                                     ; preds = %.critedge, %.critedge989, %292, %285
  %300 = phi i1 [ true, %285 ], [ %299, %292 ], [ true, %.critedge989 ], [ true, %.critedge ]
  %301 = zext i1 %300 to i8
  br i1 %118, label %.preheader1039.preheader, label %.thread

.preheader1039.preheader:                         ; preds = %.critedge991
  %302 = load ptr, ptr %41, align 8, !tbaa !5
  %303 = load double, ptr %302, align 8, !tbaa !8
  %304 = load ptr, ptr %96, align 8, !tbaa !5
  %305 = load double, ptr %304, align 8, !tbaa !8
  %306 = fsub double %303, %305
  %307 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %306, ptr noundef %1)
  %308 = load ptr, ptr %51, align 8, !tbaa !5
  %309 = load double, ptr %308, align 8, !tbaa !8
  %310 = fdiv double %307, %309
  %311 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %310, double noundef 7.000000e+00)
  %312 = load ptr, ptr %41, align 8, !tbaa !5
  %313 = getelementptr inbounds i8, ptr %312, i64 8
  %314 = load double, ptr %313, align 8, !tbaa !8
  %315 = load ptr, ptr %96, align 8, !tbaa !5
  %316 = getelementptr inbounds i8, ptr %315, i64 8
  %317 = load double, ptr %316, align 8, !tbaa !8
  %318 = fsub double %314, %317
  %319 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %318, ptr noundef %1)
  %320 = load ptr, ptr %51, align 8, !tbaa !5
  %321 = getelementptr inbounds i8, ptr %320, i64 8
  %322 = load double, ptr %321, align 8, !tbaa !8
  %323 = fdiv double %319, %322
  %324 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %323, double noundef 7.000000e+00)
  %325 = load ptr, ptr %41, align 8, !tbaa !5
  %326 = getelementptr inbounds i8, ptr %325, i64 16
  %327 = load double, ptr %326, align 8, !tbaa !8
  %328 = load ptr, ptr %96, align 8, !tbaa !5
  %329 = getelementptr inbounds i8, ptr %328, i64 16
  %330 = load double, ptr %329, align 8, !tbaa !8
  %331 = fsub double %327, %330
  %332 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %331, ptr noundef %1)
  %333 = load ptr, ptr %51, align 8, !tbaa !5
  %334 = getelementptr inbounds i8, ptr %333, i64 16
  %335 = load double, ptr %334, align 8, !tbaa !8
  %336 = fdiv double %332, %335
  %337 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %336, double noundef 7.000000e+00)
  %338 = load ptr, ptr %41, align 8, !tbaa !5
  %339 = getelementptr inbounds i8, ptr %338, i64 24
  %340 = load double, ptr %339, align 8, !tbaa !8
  %341 = load ptr, ptr %96, align 8, !tbaa !5
  %342 = getelementptr inbounds i8, ptr %341, i64 24
  %343 = load double, ptr %342, align 8, !tbaa !8
  %344 = fsub double %340, %343
  %345 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %344, ptr noundef %1)
  %346 = load ptr, ptr %51, align 8, !tbaa !5
  %347 = getelementptr inbounds i8, ptr %346, i64 24
  %348 = load double, ptr %347, align 8, !tbaa !8
  %349 = fdiv double %345, %348
  %350 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %349, double noundef 7.000000e+00)
  %351 = load ptr, ptr %41, align 8, !tbaa !5
  %352 = getelementptr inbounds i8, ptr %351, i64 32
  %353 = load double, ptr %352, align 8, !tbaa !8
  %354 = load ptr, ptr %96, align 8, !tbaa !5
  %355 = getelementptr inbounds i8, ptr %354, i64 32
  %356 = load double, ptr %355, align 8, !tbaa !8
  %357 = fsub double %353, %356
  %358 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %357, ptr noundef %1)
  %359 = load ptr, ptr %51, align 8, !tbaa !5
  %360 = getelementptr inbounds i8, ptr %359, i64 32
  %361 = load double, ptr %360, align 8, !tbaa !8
  %362 = fdiv double %358, %361
  %363 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %362, double noundef 7.000000e+00)
  %364 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %365 = fmul double %364, -5.000000e+00
  %366 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %367 = fmul double %366, 5.000000e+00
  call void @_ZL27testlinregunit_generatetaskddddbddlPN11alglib_impl9ae_matrixEPNS_9ae_vectorEPNS_8ae_stateE(double noundef %196, double noundef %198, double noundef %365, double noundef %367, i1 noundef zeroext false, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef %.01056, ptr noundef nonnull %7, ptr noundef nonnull %9, ptr noundef %1)
  br label %368

368:                                              ; preds = %.preheader1039.preheader, %368
  %.58801049 = phi i64 [ 0, %.preheader1039.preheader ], [ %373, %368 ]
  %369 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %370 = fadd double %369, 1.000000e+00
  %371 = load ptr, ptr %95, align 8, !tbaa !5
  %372 = getelementptr inbounds double, ptr %371, i64 %.58801049
  store double %370, ptr %372, align 8, !tbaa !8
  %373 = add nuw nsw i64 %.58801049, 1
  %exitcond1272.not = icmp eq i64 %373, %.01056
  br i1 %exitcond1272.not, label %374, label %368, !llvm.loop !15

374:                                              ; preds = %368
  %375 = or i1 %324, %311
  %376 = or i1 %337, %375
  %377 = or i1 %350, %376
  %378 = or i1 %363, %377
  %spec.select.4 = select i1 %378, i8 1, i8 %301
  call void @_ZN11alglib_impl7lrlinesEPNS_9ae_matrixEPNS_9ae_vectorElPlPdS5_S5_S5_S5_S5_S5_PNS_8ae_stateE(ptr noundef nonnull %7, ptr noundef nonnull %9, i64 noundef %.01056, ptr noundef nonnull %5, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef nonnull %29, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef %1)
  %379 = load i64, ptr %5, align 8, !tbaa !10
  %.not984 = icmp eq i64 %379, 1
  br i1 %.not984, label %380, label %.thread

380:                                              ; preds = %374
  %381 = trunc nuw i8 %spec.select.4 to i1
  br i1 %381, label %385, label %382

382:                                              ; preds = %380
  %383 = load double, ptr %31, align 8, !tbaa !8
  %384 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %383, double noundef 0x3FEFF7CED916872B)
  br label %385

385:                                              ; preds = %382, %380
  %386 = phi i1 [ true, %380 ], [ %384, %382 ]
  %387 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %388 = fmul double %387, -5.000000e+00
  %389 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %390 = fmul double %389, 5.000000e+00
  call void @_ZL27testlinregunit_generatetaskddddbddlPN11alglib_impl9ae_matrixEPNS_9ae_vectorEPNS_8ae_stateE(double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef %388, double noundef %390, i1 noundef zeroext false, double noundef 1.000000e+00, double noundef 1.000000e+00, i64 noundef %.01056, ptr noundef nonnull %7, ptr noundef nonnull %9, ptr noundef %1)
  br i1 %120, label %.unr-lcssa, label %.new

.new:                                             ; preds = %385, %.new
  %.68811050 = phi i64 [ %400, %.new ], [ 0, %385 ]
  %niter = phi i64 [ %niter.next.1, %.new ], [ 0, %385 ]
  %391 = load ptr, ptr %99, align 8, !tbaa !5
  %392 = getelementptr inbounds ptr, ptr %391, i64 %.68811050
  %393 = load ptr, ptr %392, align 8, !tbaa !16
  %394 = getelementptr inbounds i8, ptr %393, i64 8
  store double 5.000000e+00, ptr %394, align 8, !tbaa !8
  %395 = or disjoint i64 %.68811050, 1
  %396 = load ptr, ptr %99, align 8, !tbaa !5
  %397 = getelementptr inbounds ptr, ptr %396, i64 %395
  %398 = load ptr, ptr %397, align 8, !tbaa !16
  %399 = getelementptr inbounds i8, ptr %398, i64 8
  store double -5.000000e+00, ptr %399, align 8, !tbaa !8
  %400 = add nuw nsw i64 %.68811050, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %.unr-lcssa, label %.new, !llvm.loop !18

.unr-lcssa:                                       ; preds = %.new, %385
  %.68811050.unr = phi i64 [ 0, %385 ], [ %400, %.new ]
  br i1 %lcmp.mod.not, label %407, label %.epilog-lcssa

.epilog-lcssa:                                    ; preds = %.unr-lcssa
  %401 = and i64 %.68811050.unr, 1
  %402 = icmp eq i64 %401, 0
  %403 = load ptr, ptr %99, align 8, !tbaa !5
  %404 = getelementptr inbounds ptr, ptr %403, i64 %.68811050.unr
  %405 = load ptr, ptr %404, align 8, !tbaa !16
  %406 = getelementptr inbounds i8, ptr %405, i64 8
  %..epil = select i1 %402, double 5.000000e+00, double -5.000000e+00
  store double %..epil, ptr %406, align 8, !tbaa !8
  br label %407

407:                                              ; preds = %.unr-lcssa, %.epilog-lcssa
  %408 = zext i1 %386 to i8
  br i1 %.not986, label %415, label %409

409:                                              ; preds = %407
  %410 = load ptr, ptr %99, align 8, !tbaa !5
  %411 = getelementptr ptr, ptr %410, i64 %.01056
  %412 = getelementptr i8, ptr %411, i64 -8
  %413 = load ptr, ptr %412, align 8, !tbaa !16
  %414 = getelementptr inbounds i8, ptr %413, i64 8
  store double 0.000000e+00, ptr %414, align 8, !tbaa !8
  br label %415

415:                                              ; preds = %409, %407
  call void @_ZN11alglib_impl7lrlinesEPNS_9ae_matrixEPNS_9ae_vectorElPlPdS5_S5_S5_S5_S5_S5_PNS_8ae_stateE(ptr noundef nonnull %7, ptr noundef nonnull %9, i64 noundef %.01056, ptr noundef nonnull %5, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef nonnull %29, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef %1)
  %416 = load i64, ptr %5, align 8, !tbaa !10
  %.not987 = icmp eq i64 %416, 1
  br i1 %.not987, label %417, label %.thread

417:                                              ; preds = %415
  br i1 %386, label %421, label %418

418:                                              ; preds = %417
  %419 = load double, ptr %31, align 8, !tbaa !8
  %420 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %419, double noundef 1.000000e-03)
  br label %421

421:                                              ; preds = %418, %417
  %422 = phi i1 [ true, %417 ], [ %420, %418 ]
  %423 = zext i1 %422 to i8
  br label %.thread

.thread:                                          ; preds = %.critedge991, %415, %374, %185, %421
  %.6874 = phi i8 [ %.5873, %421 ], [ 1, %185 ], [ 1, %374 ], [ 1, %415 ], [ %.5873, %.critedge991 ]
  %.7867 = phi i8 [ %423, %421 ], [ %.3863, %185 ], [ %spec.select.4, %374 ], [ %408, %415 ], [ %301, %.critedge991 ]
  %424 = add nuw nsw i64 %.08941051, 1
  %exitcond1274.not = icmp eq i64 %424, 4
  br i1 %exitcond1274.not, label %425, label %121, !llvm.loop !19

425:                                              ; preds = %.thread
  %426 = add nuw nsw i64 %.01056, 1
  %exitcond1275.not = icmp eq i64 %426, 41
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond1275.not, label %.preheader1037, label %102, !llvm.loop !20

427:                                              ; preds = %.preheader1037, %522
  %.11061 = phi i64 [ 3, %.preheader1037 ], [ %523, %522 ]
  %.08251060 = phi i8 [ 0, %.preheader1037 ], [ %.1826, %522 ]
  %.08431059 = phi i8 [ 0, %.preheader1037 ], [ %.1844, %522 ]
  %.08521058 = phi i8 [ 0, %.preheader1037 ], [ %.1853, %522 ]
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.11061, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %.11061, i64 noundef 2, ptr noundef %1)
  br label %428

428:                                              ; preds = %427, %428
  %.78821057 = phi i64 [ 0, %427 ], [ %444, %428 ]
  %429 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %430 = call double @llvm.fmuladd.f64(double %429, double 2.000000e+00, double -1.000000e+00)
  %431 = load ptr, ptr %99, align 8, !tbaa !5
  %432 = getelementptr inbounds ptr, ptr %431, i64 %.78821057
  %433 = load ptr, ptr %432, align 8, !tbaa !16
  store double %430, ptr %433, align 8, !tbaa !8
  %434 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %435 = call double @llvm.fmuladd.f64(double %434, double 2.000000e+00, double -1.000000e+00)
  %436 = load ptr, ptr %99, align 8, !tbaa !5
  %437 = getelementptr inbounds ptr, ptr %436, i64 %.78821057
  %438 = load ptr, ptr %437, align 8, !tbaa !16
  %439 = getelementptr inbounds i8, ptr %438, i64 8
  store double %435, ptr %439, align 8, !tbaa !8
  %440 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %441 = fadd double %440, 1.000000e+00
  %442 = load ptr, ptr %95, align 8, !tbaa !5
  %443 = getelementptr inbounds double, ptr %442, i64 %.78821057
  store double %441, ptr %443, align 8, !tbaa !8
  %444 = add nuw nsw i64 %.78821057, 1
  %exitcond1276.not = icmp eq i64 %444, %.11061
  br i1 %exitcond1276.not, label %445, label %428, !llvm.loop !21

445:                                              ; preds = %428
  call void @_ZN11alglib_impl8lrbuildsEPNS_9ae_matrixEPNS_9ae_vectorEllPlPNS_11linearmodelEPNS_8lrreportEPNS_8ae_stateE(ptr noundef nonnull %7, ptr noundef nonnull %9, i64 noundef %.11061, i64 noundef 1, ptr noundef nonnull %5, ptr noundef nonnull %19, ptr noundef nonnull %35, ptr noundef %1)
  %446 = load i64, ptr %5, align 8, !tbaa !10
  %.not978 = icmp eq i64 %446, 1
  br i1 %.not978, label %447, label %522

447:                                              ; preds = %445
  call void @_ZN11alglib_impl8lrunpackEPNS_11linearmodelEPNS_9ae_vectorEPlPNS_8ae_stateE(ptr noundef nonnull %19, ptr noundef nonnull %17, ptr noundef nonnull %4, ptr noundef %1)
  call void @_ZN11alglib_impl7lrlinesEPNS_9ae_matrixEPNS_9ae_vectorElPlPdS5_S5_S5_S5_S5_S5_PNS_8ae_stateE(ptr noundef nonnull %7, ptr noundef nonnull %9, i64 noundef %.11061, ptr noundef nonnull %6, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef nonnull %29, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef %1)
  %448 = trunc nuw i8 %.08431059 to i1
  br i1 %448, label %.critedge993, label %449

449:                                              ; preds = %447
  %450 = load double, ptr %23, align 8, !tbaa !8
  %451 = load ptr, ptr %100, align 8, !tbaa !5
  %452 = getelementptr inbounds i8, ptr %451, i64 8
  %453 = load double, ptr %452, align 8, !tbaa !8
  %454 = fsub double %450, %453
  %455 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %454, ptr noundef %1)
  %456 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %455, double noundef 5.000000e-10)
  br i1 %456, label %.critedge993, label %457

457:                                              ; preds = %449
  %458 = load double, ptr %24, align 8, !tbaa !8
  %459 = load ptr, ptr %100, align 8, !tbaa !5
  %460 = load double, ptr %459, align 8, !tbaa !8
  %461 = fsub double %458, %460
  %462 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %461, ptr noundef %1)
  %463 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %462, double noundef 5.000000e-10)
  br label %.critedge993

.critedge993:                                     ; preds = %447, %457, %449
  %464 = phi i1 [ true, %449 ], [ %463, %457 ], [ true, %447 ]
  %465 = zext i1 %464 to i8
  %466 = trunc nuw i8 %.08521058 to i1
  br i1 %466, label %.critedge997, label %467

467:                                              ; preds = %.critedge993
  %468 = load double, ptr %25, align 8, !tbaa !8
  %469 = load ptr, ptr %101, align 8, !tbaa !5
  %470 = getelementptr inbounds i8, ptr %469, i64 8
  %471 = load ptr, ptr %470, align 8, !tbaa !16
  %472 = getelementptr inbounds i8, ptr %471, i64 8
  %473 = load double, ptr %472, align 8, !tbaa !8
  %474 = fsub double %468, %473
  %475 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %474, ptr noundef %1)
  %476 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %475, double noundef 5.000000e-10)
  br i1 %476, label %.critedge997, label %.critedge995

.critedge995:                                     ; preds = %467
  %477 = load double, ptr %26, align 8, !tbaa !8
  %478 = load ptr, ptr %101, align 8, !tbaa !5
  %479 = load ptr, ptr %478, align 8, !tbaa !16
  %480 = load double, ptr %479, align 8, !tbaa !8
  %481 = fsub double %477, %480
  %482 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %481, ptr noundef %1)
  %483 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %482, double noundef 5.000000e-10)
  br i1 %483, label %.critedge997, label %.critedge996

.critedge996:                                     ; preds = %.critedge995
  %484 = load double, ptr %29, align 8, !tbaa !8
  %485 = load ptr, ptr %101, align 8, !tbaa !5
  %486 = getelementptr inbounds i8, ptr %485, i64 8
  %487 = load ptr, ptr %486, align 8, !tbaa !16
  %488 = load double, ptr %487, align 8, !tbaa !8
  %489 = fsub double %484, %488
  %490 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %489, ptr noundef %1)
  %491 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %490, double noundef 5.000000e-10)
  br i1 %491, label %.critedge997, label %492

492:                                              ; preds = %.critedge996
  %493 = load double, ptr %29, align 8, !tbaa !8
  %494 = load ptr, ptr %101, align 8, !tbaa !5
  %495 = load ptr, ptr %494, align 8, !tbaa !16
  %496 = getelementptr inbounds i8, ptr %495, i64 8
  %497 = load double, ptr %496, align 8, !tbaa !8
  %498 = fsub double %493, %497
  %499 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %498, ptr noundef %1)
  %500 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %499, double noundef 5.000000e-10)
  br label %.critedge997

.critedge997:                                     ; preds = %.critedge995, %.critedge993, %467, %492, %.critedge996
  %501 = phi i1 [ true, %.critedge996 ], [ %500, %492 ], [ true, %467 ], [ true, %.critedge993 ], [ true, %.critedge995 ]
  %502 = zext i1 %501 to i8
  call void @_ZN11alglib_impl7lrbuildEPNS_9ae_matrixEllPlPNS_11linearmodelEPNS_8lrreportEPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %.11061, i64 noundef 1, ptr noundef nonnull %5, ptr noundef nonnull %19, ptr noundef nonnull %35, ptr noundef %1)
  %503 = load i64, ptr %5, align 8, !tbaa !10
  %.not979 = icmp eq i64 %503, 1
  br i1 %.not979, label %504, label %522

504:                                              ; preds = %.critedge997
  call void @_ZN11alglib_impl8lrunpackEPNS_11linearmodelEPNS_9ae_vectorEPlPNS_8ae_stateE(ptr noundef nonnull %19, ptr noundef nonnull %17, ptr noundef nonnull %4, ptr noundef %1)
  call void @_ZN11alglib_impl6lrlineEPNS_9ae_matrixElPlPdS3_PNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %.11061, ptr noundef nonnull %6, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef %1)
  br i1 %464, label %.critedge999, label %505

505:                                              ; preds = %504
  %506 = load double, ptr %23, align 8, !tbaa !8
  %507 = load ptr, ptr %100, align 8, !tbaa !5
  %508 = getelementptr inbounds i8, ptr %507, i64 8
  %509 = load double, ptr %508, align 8, !tbaa !8
  %510 = fsub double %506, %509
  %511 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %510, ptr noundef %1)
  %512 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %511, double noundef 5.000000e-10)
  br i1 %512, label %.critedge999, label %513

513:                                              ; preds = %505
  %514 = load double, ptr %24, align 8, !tbaa !8
  %515 = load ptr, ptr %100, align 8, !tbaa !5
  %516 = load double, ptr %515, align 8, !tbaa !8
  %517 = fsub double %514, %516
  %518 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %517, ptr noundef %1)
  %519 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %518, double noundef 5.000000e-10)
  br label %.critedge999

.critedge999:                                     ; preds = %504, %513, %505
  %520 = phi i1 [ true, %505 ], [ %519, %513 ], [ true, %504 ]
  %521 = zext i1 %520 to i8
  br label %522

522:                                              ; preds = %.critedge997, %445, %.critedge999
  %.1853 = phi i8 [ %502, %.critedge999 ], [ %.08521058, %445 ], [ %502, %.critedge997 ]
  %.1844 = phi i8 [ %521, %.critedge999 ], [ %.08431059, %445 ], [ %465, %.critedge997 ]
  %.1826 = phi i8 [ %.08251060, %.critedge999 ], [ 1, %445 ], [ 1, %.critedge997 ]
  %523 = add nuw nsw i64 %.11061, 1
  %exitcond1277.not = icmp eq i64 %523, 41
  br i1 %exitcond1277.not, label %524, label %427, !llvm.loop !22

524:                                              ; preds = %522
  %525 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 3000, ptr noundef %1)
  %526 = add nsw i64 %525, 1000
  %527 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %528 = call double @llvm.fmuladd.f64(double %527, double 1.900000e+00, double 1.000000e-01)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %526, i64 noundef 2, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %526, ptr noundef %1)
  %.not1062 = icmp slt i64 %525, -999
  br i1 %.not1062, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %524
  %529 = add i64 %525, 999
  %smax = call i64 @llvm.smax.i64(i64 %529, i64 0)
  br label %530

530:                                              ; preds = %.lr.ph, %530
  %.88831063 = phi i64 [ 0, %.lr.ph ], [ %549, %530 ]
  %531 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %532 = call double @llvm.fmuladd.f64(double %531, double 1.500000e+00, double -5.000000e-01)
  %533 = load ptr, ptr %99, align 8, !tbaa !5
  %534 = getelementptr inbounds ptr, ptr %533, i64 %.88831063
  %535 = load ptr, ptr %534, align 8, !tbaa !16
  store double %532, ptr %535, align 8, !tbaa !8
  %536 = load ptr, ptr %99, align 8, !tbaa !5
  %537 = getelementptr inbounds ptr, ptr %536, i64 %.88831063
  %538 = load ptr, ptr %537, align 8, !tbaa !16
  %539 = load double, ptr %538, align 8, !tbaa !8
  %540 = call double @llvm.fmuladd.f64(double %539, double 1.200000e+00, double -3.000000e-01)
  %541 = call noundef double @_ZL29testlinregunit_generatenormalddPN11alglib_impl8ae_stateE(double noundef 0.000000e+00, double noundef %528, ptr noundef %1)
  %542 = fadd double %540, %541
  %543 = load ptr, ptr %99, align 8, !tbaa !5
  %544 = getelementptr inbounds ptr, ptr %543, i64 %.88831063
  %545 = load ptr, ptr %544, align 8, !tbaa !16
  %546 = getelementptr inbounds i8, ptr %545, i64 8
  store double %542, ptr %546, align 8, !tbaa !8
  %547 = load ptr, ptr %95, align 8, !tbaa !5
  %548 = getelementptr inbounds double, ptr %547, i64 %.88831063
  store double %528, ptr %548, align 8, !tbaa !8
  %549 = add nuw i64 %.88831063, 1
  %exitcond1278.not = icmp eq i64 %.88831063, %smax
  br i1 %exitcond1278.not, label %._crit_edge, label %530, !llvm.loop !23

._crit_edge:                                      ; preds = %530, %524
  call void @_ZN11alglib_impl7lrbuildEPNS_9ae_matrixEllPlPNS_11linearmodelEPNS_8lrreportEPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %526, i64 noundef 1, ptr noundef nonnull %5, ptr noundef nonnull %19, ptr noundef nonnull %35, ptr noundef %1)
  call void @_ZN11alglib_impl7lrlinesEPNS_9ae_matrixEPNS_9ae_vectorElPlPdS5_S5_S5_S5_S5_S5_PNS_8ae_stateE(ptr noundef nonnull %7, ptr noundef nonnull %9, i64 noundef %526, ptr noundef nonnull %6, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef nonnull %29, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef %1)
  %550 = load i64, ptr %5, align 8, !tbaa !10
  %551 = icmp ne i64 %550, 1
  %552 = load i64, ptr %6, align 8
  %553 = icmp ne i64 %552, 1
  %or.cond3 = select i1 %551, i1 true, i1 %553
  br i1 %or.cond3, label %.critedge1003, label %554

554:                                              ; preds = %._crit_edge
  %555 = trunc nuw i8 %.1853 to i1
  br i1 %555, label %.critedge1003, label %556

556:                                              ; preds = %554
  %557 = load ptr, ptr %101, align 8, !tbaa !5
  %558 = load ptr, ptr %557, align 8, !tbaa !16
  %559 = load double, ptr %558, align 8, !tbaa !8
  %560 = load double, ptr %26, align 8, !tbaa !8
  %561 = fdiv double %559, %560
  %562 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef %561, ptr noundef %1)
  %563 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %562, ptr noundef %1)
  %564 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 1.200000e+00, ptr noundef %1)
  %565 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %563, double noundef %564)
  br i1 %565, label %.critedge1003, label %.critedge1001

.critedge1001:                                    ; preds = %556
  %566 = load ptr, ptr %101, align 8, !tbaa !5
  %567 = getelementptr inbounds i8, ptr %566, i64 8
  %568 = load ptr, ptr %567, align 8, !tbaa !16
  %569 = getelementptr inbounds i8, ptr %568, i64 8
  %570 = load double, ptr %569, align 8, !tbaa !8
  %571 = load double, ptr %25, align 8, !tbaa !8
  %572 = fdiv double %570, %571
  %573 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef %572, ptr noundef %1)
  %574 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %573, ptr noundef %1)
  %575 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 1.200000e+00, ptr noundef %1)
  %576 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %574, double noundef %575)
  br i1 %576, label %.critedge1003, label %.critedge1002

.critedge1002:                                    ; preds = %.critedge1001
  %577 = load ptr, ptr %101, align 8, !tbaa !5
  %578 = load ptr, ptr %577, align 8, !tbaa !16
  %579 = getelementptr inbounds i8, ptr %578, i64 8
  %580 = load double, ptr %579, align 8, !tbaa !8
  %581 = load double, ptr %29, align 8, !tbaa !8
  %582 = fdiv double %580, %581
  %583 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef %582, ptr noundef %1)
  %584 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %583, ptr noundef %1)
  %585 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 1.200000e+00, ptr noundef %1)
  %586 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %584, double noundef %585)
  br i1 %586, label %.critedge1003, label %587

587:                                              ; preds = %.critedge1002
  %588 = load ptr, ptr %101, align 8, !tbaa !5
  %589 = getelementptr inbounds i8, ptr %588, i64 8
  %590 = load ptr, ptr %589, align 8, !tbaa !16
  %591 = load double, ptr %590, align 8, !tbaa !8
  %592 = load double, ptr %29, align 8, !tbaa !8
  %593 = fdiv double %591, %592
  %594 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef %593, ptr noundef %1)
  %595 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %594, ptr noundef %1)
  %596 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 1.200000e+00, ptr noundef %1)
  %597 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %595, double noundef %596)
  %598 = zext i1 %597 to i8
  br label %.critedge1003

.critedge1003:                                    ; preds = %.critedge1002, %587, %556, %554, %.critedge1001, %._crit_edge
  %.2854 = phi i8 [ %.1853, %._crit_edge ], [ 1, %.critedge1002 ], [ %598, %587 ], [ 1, %556 ], [ 1, %554 ], [ 1, %.critedge1001 ]
  %.2827 = phi i8 [ 1, %._crit_edge ], [ %.1826, %.critedge1002 ], [ %.1826, %587 ], [ %.1826, %556 ], [ %.1826, %554 ], [ %.1826, %.critedge1001 ]
  %599 = getelementptr inbounds i8, ptr %16, i64 56
  %600 = getelementptr inbounds i8, ptr %12, i64 56
  %601 = getelementptr inbounds i8, ptr %8, i64 72
  %602 = getelementptr inbounds i8, ptr %11, i64 56
  %603 = getelementptr inbounds i8, ptr %35, i64 16
  %604 = getelementptr inbounds i8, ptr %15, i64 56
  %605 = getelementptr inbounds i8, ptr %10, i64 56
  %606 = getelementptr inbounds i8, ptr %35, i64 128
  %607 = getelementptr inbounds i8, ptr %35, i64 192
  %608 = getelementptr inbounds i8, ptr %35, i64 104
  %609 = getelementptr inbounds i8, ptr %35, i64 112
  %610 = getelementptr inbounds i8, ptr %35, i64 120
  %611 = getelementptr inbounds i8, ptr %35, i64 80
  %612 = getelementptr inbounds i8, ptr %35, i64 88
  %613 = getelementptr inbounds i8, ptr %35, i64 96
  br label %.preheader1036

.preheader1036:                                   ; preds = %.critedge1003, %1263
  %.31233 = phi i8 [ %.2827, %.critedge1003 ], [ %.5.lcssa, %1263 ]
  %.08281232 = phi i8 [ 0, %.critedge1003 ], [ %.2830.lcssa, %1263 ]
  %.08381231 = phi i8 [ 0, %.critedge1003 ], [ %.2840.lcssa, %1263 ]
  %.28451230 = phi i8 [ %.1844, %.critedge1003 ], [ %.4847.lcssa, %1263 ]
  %.38551229 = phi i8 [ %.2854, %.critedge1003 ], [ %.5857.lcssa, %1263 ]
  %614 = phi i1 [ true, %.critedge1003 ], [ false, %1263 ]
  %615 = phi i1 [ false, %.critedge1003 ], [ true, %1263 ]
  %.09221227 = phi i64 [ 0, %.critedge1003 ], [ %.4926, %1263 ]
  %.09271226 = phi i64 [ -1, %.critedge1003 ], [ %.4931, %1263 ]
  %.09321225 = phi i64 [ -1, %.critedge1003 ], [ %.2934.lcssa, %1263 ]
  %.09381224 = phi i64 [ 0, %.critedge1003 ], [ %.2940.lcssa, %1263 ]
  br label %616

616:                                              ; preds = %.preheader1036, %._crit_edge1206
  %.41223 = phi i8 [ %.31233, %.preheader1036 ], [ %.5.lcssa, %._crit_edge1206 ]
  %.18291222 = phi i8 [ %.08281232, %.preheader1036 ], [ %.2830.lcssa, %._crit_edge1206 ]
  %.18391221 = phi i8 [ %.08381231, %.preheader1036 ], [ %.2840.lcssa, %._crit_edge1206 ]
  %.38461220 = phi i8 [ %.28451230, %.preheader1036 ], [ %.4847.lcssa, %._crit_edge1206 ]
  %.48561219 = phi i8 [ %.38551229, %.preheader1036 ], [ %.5857.lcssa, %._crit_edge1206 ]
  %.09201218 = phi i64 [ 0, %.preheader1036 ], [ %1262, %._crit_edge1206 ]
  %.19231217 = phi i64 [ %.09221227, %.preheader1036 ], [ %.4926, %._crit_edge1206 ]
  %.19281216 = phi i64 [ %.09271226, %.preheader1036 ], [ %.4931, %._crit_edge1206 ]
  %.19331215 = phi i64 [ %.09321225, %.preheader1036 ], [ %.2934.lcssa, %._crit_edge1206 ]
  %.19391214 = phi i64 [ %.09381224, %.preheader1036 ], [ %.2940.lcssa, %._crit_edge1206 ]
  %617 = icmp eq i64 %.09201218, 0
  %spec.select1004 = select i1 %617, i64 3, i64 %.19281216
  %spec.select1005 = select i1 %617, i64 1, i64 %.19231217
  %618 = icmp eq i64 %.09201218, 1
  %.3930 = select i1 %618, i64 9, i64 %spec.select1004
  %.3925 = select i1 %618, i64 9, i64 %spec.select1005
  %619 = icmp eq i64 %.09201218, 2
  %or.cond5.not = icmp ult i64 %.09201218, 2
  %.4931 = select i1 %or.cond5.not, i64 %.3930, i64 9
  %.4926 = select i1 %or.cond5.not, i64 %.3925, i64 9
  %.not9511195 = icmp sgt i64 %.4926, %.4931
  br i1 %.not9511195, label %._crit_edge1206, label %.lr.ph1205.preheader

.lr.ph1205.preheader:                             ; preds = %616
  %620 = add i64 %.4926, -1
  %621 = add i64 %.4926, -2
  br label %.lr.ph1205

.lr.ph1205:                                       ; preds = %.lr.ph1205.preheader, %._crit_edge1189
  %indvar1375 = phi i64 [ 0, %.lr.ph1205.preheader ], [ %indvar.next1376, %._crit_edge1189 ]
  %indvars.iv.in = phi i64 [ %.4926, %.lr.ph1205.preheader ], [ %indvars.iv, %._crit_edge1189 ]
  %.51203 = phi i8 [ %.41223, %.lr.ph1205.preheader ], [ %.6.lcssa, %._crit_edge1189 ]
  %.28301202 = phi i8 [ %.18291222, %.lr.ph1205.preheader ], [ %.3831.lcssa, %._crit_edge1189 ]
  %.28401201 = phi i8 [ %.18391221, %.lr.ph1205.preheader ], [ %.3841.lcssa, %._crit_edge1189 ]
  %.48471200 = phi i8 [ %.38461220, %.lr.ph1205.preheader ], [ %.5848.lcssa, %._crit_edge1189 ]
  %.58571199 = phi i8 [ %.48561219, %.lr.ph1205.preheader ], [ %.6858.lcssa, %._crit_edge1189 ]
  %.09191198 = phi i64 [ %.4926, %.lr.ph1205.preheader ], [ %.pre1320, %._crit_edge1189 ]
  %.29341197 = phi i64 [ %.19331215, %.lr.ph1205.preheader ], [ %spec.select1007, %._crit_edge1189 ]
  %.29401196 = phi i64 [ %.19391214, %.lr.ph1205.preheader ], [ %spec.select1006, %._crit_edge1189 ]
  %622 = add i64 %620, %indvar1375
  %623 = add i64 %620, %indvar1375
  %624 = add i64 %620, %indvar1375
  %indvars.iv = add i64 %indvars.iv.in, 1
  %625 = add nsw i64 %.09191198, 3
  %626 = add nsw i64 %.09191198, 20
  %.3941 = select i1 %617, i64 %625, i64 %.29401196
  %.3935 = select i1 %617, i64 %626, i64 %.29341197
  br i1 %618, label %627, label %630

627:                                              ; preds = %.lr.ph1205
  %628 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 70, ptr noundef %1)
  %629 = add nsw i64 %628, 70
  br label %630

630:                                              ; preds = %627, %.lr.ph1205
  %.4942 = phi i64 [ %629, %627 ], [ %.3941, %.lr.ph1205 ]
  %.4936 = phi i64 [ %629, %627 ], [ %.3935, %.lr.ph1205 ]
  %spec.select1006 = select i1 %or.cond5.not, i64 %.4942, i64 100
  %spec.select1007 = select i1 %or.cond5.not, i64 %.4936, i64 100
  %.not9521179 = icmp sgt i64 %spec.select1006, %spec.select1007
  %.pre1320 = add i64 %.09191198, 1
  br i1 %.not9521179, label %._crit_edge1189, label %.lr.ph1188

.lr.ph1188:                                       ; preds = %630
  %.not976.not1067 = icmp sgt i64 %.09191198, 1
  %631 = icmp eq i64 %.09191198, 9
  %.not975.not1078 = icmp sgt i64 %.09191198, 0
  %632 = add nsw i64 %.09191198, -1
  %.not9621126 = icmp slt i64 %.09191198, 0
  %633 = add i64 %spec.select1006, -1
  %xtraiter1377 = and i64 %624, 1
  %634 = sub i64 0, %indvar1375
  %635 = icmp eq i64 %621, %634
  %unroll_iter1379 = and i64 %624, -2
  %lcmp.mod1378.not = icmp eq i64 %xtraiter1377, 0
  %xtraiter1381 = and i64 %.09191198, 3
  %636 = icmp ult i64 %623, 3
  %unroll_iter1383 = and i64 %.09191198, 9223372036854775804
  %lcmp.mod1382.not = icmp eq i64 %xtraiter1381, 0
  %xtraiter1386 = and i64 %.09191198, 3
  %637 = icmp ult i64 %622, 3
  %unroll_iter1390 = and i64 %.09191198, 9223372036854775804
  %lcmp.mod1388.not = icmp eq i64 %xtraiter1386, 0
  br label %638

638:                                              ; preds = %.lr.ph1188, %1260
  %indvars.iv1299 = phi i64 [ %633, %.lr.ph1188 ], [ %indvars.iv.next1300, %1260 ]
  %.21185 = phi i64 [ %spec.select1006, %.lr.ph1188 ], [ %1261, %1260 ]
  %.61184 = phi i8 [ %.51203, %.lr.ph1188 ], [ %.11, %1260 ]
  %.38311183 = phi i8 [ %.28301202, %.lr.ph1188 ], [ %.4832, %1260 ]
  %.38411182 = phi i8 [ %.28401201, %.lr.ph1188 ], [ %.4842, %1260 ]
  %.58481181 = phi i8 [ %.48471200, %.lr.ph1188 ], [ %.8851, %1260 ]
  %.68581180 = phi i8 [ %.58571199, %.lr.ph1188 ], [ %.7859, %1260 ]
  %639 = add nsw i64 %.21185, -1
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %.21185, i64 noundef %.pre1320, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %16, i64 noundef %.21185, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.21185, ptr noundef %1)
  br i1 %617, label %.preheader1035, label %.loopexit1033

.preheader1035:                                   ; preds = %638
  %.not953.not1064 = icmp sgt i64 %.21185, 0
  br i1 %.not953.not1064, label %.lr.ph1066, label %._crit_edge1073.thread

.preheader1034:                                   ; preds = %.lr.ph1066
  br i1 %.not953.not1064, label %.preheader1029, label %._crit_edge1073.thread

.lr.ph1066:                                       ; preds = %.preheader1035, %.lr.ph1066
  %.98841065 = phi i64 [ %645, %.lr.ph1066 ], [ 0, %.preheader1035 ]
  %640 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %641 = call double @llvm.fmuladd.f64(double %640, double 2.000000e+00, double -1.000000e+00)
  %642 = load ptr, ptr %99, align 8, !tbaa !5
  %643 = getelementptr inbounds ptr, ptr %642, i64 %.98841065
  %644 = load ptr, ptr %643, align 8, !tbaa !16
  store double %641, ptr %644, align 8, !tbaa !8
  %645 = add nuw nsw i64 %.98841065, 1
  %exitcond1279.not = icmp eq i64 %645, %.21185
  br i1 %exitcond1279.not, label %.preheader1034, label %.lr.ph1066, !llvm.loop !24

.preheader1029:                                   ; preds = %.preheader1034, %._crit_edge1070
  %.108851072 = phi i64 [ %671, %._crit_edge1070 ], [ 0, %.preheader1034 ]
  br i1 %.not976.not1067, label %.lr.ph1069.preheader, label %._crit_edge1070

.lr.ph1069.preheader:                             ; preds = %.preheader1029
  br i1 %635, label %._crit_edge1070.loopexit.unr-lcssa, label %.lr.ph1069

.lr.ph1069:                                       ; preds = %.lr.ph1069.preheader, %.lr.ph1069
  %.08871068 = phi i64 [ %662, %.lr.ph1069 ], [ 1, %.lr.ph1069.preheader ]
  %niter1380 = phi i64 [ %niter1380.next.1, %.lr.ph1069 ], [ 0, %.lr.ph1069.preheader ]
  %646 = load ptr, ptr %99, align 8, !tbaa !5
  %647 = getelementptr inbounds ptr, ptr %646, i64 %.108851072
  %648 = load ptr, ptr %647, align 8, !tbaa !16
  %649 = load double, ptr %648, align 8, !tbaa !8
  %650 = getelementptr double, ptr %648, i64 %.08871068
  %651 = getelementptr i8, ptr %650, i64 -8
  %652 = load double, ptr %651, align 8, !tbaa !8
  %653 = fmul double %649, %652
  store double %653, ptr %650, align 8, !tbaa !8
  %654 = load ptr, ptr %99, align 8, !tbaa !5
  %655 = getelementptr inbounds ptr, ptr %654, i64 %.108851072
  %656 = load ptr, ptr %655, align 8, !tbaa !16
  %657 = load double, ptr %656, align 8, !tbaa !8
  %658 = getelementptr double, ptr %656, i64 %.08871068
  %659 = getelementptr i8, ptr %658, i64 8
  %660 = load double, ptr %658, align 8, !tbaa !8
  %661 = fmul double %657, %660
  store double %661, ptr %659, align 8, !tbaa !8
  %662 = add nuw nsw i64 %.08871068, 2
  %niter1380.next.1 = add i64 %niter1380, 2
  %niter1380.ncmp.1 = icmp eq i64 %niter1380.next.1, %unroll_iter1379
  br i1 %niter1380.ncmp.1, label %._crit_edge1070.loopexit.unr-lcssa, label %.lr.ph1069, !llvm.loop !25

._crit_edge1070.loopexit.unr-lcssa:               ; preds = %.lr.ph1069, %.lr.ph1069.preheader
  %.08871068.unr = phi i64 [ 1, %.lr.ph1069.preheader ], [ %662, %.lr.ph1069 ]
  br i1 %lcmp.mod1378.not, label %._crit_edge1070, label %.lr.ph1069.epil

.lr.ph1069.epil:                                  ; preds = %._crit_edge1070.loopexit.unr-lcssa
  %663 = load ptr, ptr %99, align 8, !tbaa !5
  %664 = getelementptr inbounds ptr, ptr %663, i64 %.108851072
  %665 = load ptr, ptr %664, align 8, !tbaa !16
  %666 = load double, ptr %665, align 8, !tbaa !8
  %667 = getelementptr double, ptr %665, i64 %.08871068.unr
  %668 = getelementptr i8, ptr %667, i64 -8
  %669 = load double, ptr %668, align 8, !tbaa !8
  %670 = fmul double %666, %669
  store double %670, ptr %667, align 8, !tbaa !8
  br label %._crit_edge1070

._crit_edge1070:                                  ; preds = %.lr.ph1069.epil, %._crit_edge1070.loopexit.unr-lcssa, %.preheader1029
  %671 = add nuw nsw i64 %.108851072, 1
  %exitcond1281.not = icmp eq i64 %671, %.21185
  br i1 %exitcond1281.not, label %._crit_edge1073, label %.preheader1029, !llvm.loop !26

._crit_edge1073.thread:                           ; preds = %.preheader1034, %.preheader1035
  %672 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  br label %.loopexit1033

._crit_edge1073:                                  ; preds = %._crit_edge1070
  %673 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %674 = fmul double %673, 0x400921FB54442D18
  br i1 %.not953.not1064, label %.lr.ph1077, label %.loopexit1033

.lr.ph1077:                                       ; preds = %._crit_edge1073, %.lr.ph1077
  %.118861075 = phi i64 [ %693, %.lr.ph1077 ], [ 0, %._crit_edge1073 ]
  %675 = load ptr, ptr %99, align 8, !tbaa !5
  %676 = getelementptr inbounds ptr, ptr %675, i64 %.118861075
  %677 = load ptr, ptr %676, align 8, !tbaa !16
  %678 = load double, ptr %677, align 8, !tbaa !8
  %679 = fadd double %678, 1.000000e+00
  %680 = call double @llvm.fmuladd.f64(double %679, double 0x3FF921FB54442D18, double %674)
  %681 = call noundef double @_ZN11alglib_impl6ae_sinEdPNS_8ae_stateE(double noundef %680, ptr noundef %1)
  %682 = load ptr, ptr %599, align 8, !tbaa !5
  %683 = getelementptr inbounds double, ptr %682, i64 %.118861075
  store double %681, ptr %683, align 8, !tbaa !8
  %684 = load ptr, ptr %599, align 8, !tbaa !5
  %685 = getelementptr inbounds double, ptr %684, i64 %.118861075
  %686 = load double, ptr %685, align 8, !tbaa !8
  %687 = call noundef double @_ZL29testlinregunit_generatenormalddPN11alglib_impl8ae_stateE(double noundef 0.000000e+00, double noundef 1.000000e+00, ptr noundef %1)
  %688 = call double @llvm.fmuladd.f64(double %687, double 2.000000e-01, double %686)
  %689 = load ptr, ptr %99, align 8, !tbaa !5
  %690 = getelementptr inbounds ptr, ptr %689, i64 %.118861075
  %691 = load ptr, ptr %690, align 8, !tbaa !16
  %692 = getelementptr inbounds double, ptr %691, i64 %.09191198
  store double %688, ptr %692, align 8, !tbaa !8
  %693 = add nuw nsw i64 %.118861075, 1
  %exitcond1282.not = icmp eq i64 %693, %.21185
  br i1 %exitcond1282.not, label %.loopexit1033, label %.lr.ph1077, !llvm.loop !27

.loopexit1033:                                    ; preds = %.lr.ph1077, %._crit_edge1073.thread, %._crit_edge1073, %638
  br i1 %618, label %694, label %.loopexit1032

694:                                              ; preds = %.loopexit1033
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %631, ptr noundef nonnull @.str.26, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %13, i64 noundef 9, ptr noundef %1)
  %695 = load ptr, ptr %97, align 8, !tbaa !5
  store double 1.000000e+00, ptr %695, align 8, !tbaa !8
  %696 = load ptr, ptr %97, align 8, !tbaa !5
  %697 = getelementptr inbounds i8, ptr %696, i64 8
  store double 2.000000e+00, ptr %697, align 8, !tbaa !8
  %698 = load ptr, ptr %97, align 8, !tbaa !5
  %699 = getelementptr inbounds i8, ptr %698, i64 16
  store double 3.000000e+00, ptr %699, align 8, !tbaa !8
  %700 = load ptr, ptr %97, align 8, !tbaa !5
  %701 = getelementptr inbounds i8, ptr %700, i64 24
  store double 2.500000e-01, ptr %701, align 8, !tbaa !8
  %702 = load ptr, ptr %97, align 8, !tbaa !5
  %703 = getelementptr inbounds i8, ptr %702, i64 32
  store double 5.000000e-01, ptr %703, align 8, !tbaa !8
  %704 = load ptr, ptr %97, align 8, !tbaa !5
  %705 = getelementptr inbounds i8, ptr %704, i64 40
  store double 7.500000e-01, ptr %705, align 8, !tbaa !8
  %706 = load ptr, ptr %97, align 8, !tbaa !5
  %707 = getelementptr inbounds i8, ptr %706, i64 48
  store double 6.000000e-02, ptr %707, align 8, !tbaa !8
  %708 = load ptr, ptr %97, align 8, !tbaa !5
  %709 = getelementptr inbounds i8, ptr %708, i64 56
  store double 1.200000e-01, ptr %709, align 8, !tbaa !8
  %710 = load ptr, ptr %97, align 8, !tbaa !5
  %711 = getelementptr inbounds i8, ptr %710, i64 64
  store double 1.800000e-01, ptr %711, align 8, !tbaa !8
  %.not956.not1082 = icmp sgt i64 %.21185, 0
  br i1 %.not956.not1082, label %.preheader1028, label %._crit_edge1095

.preheader1028:                                   ; preds = %694, %._crit_edge1081
  %.121083 = phi i64 [ %770, %._crit_edge1081 ], [ 0, %694 ]
  br i1 %.not975.not1078, label %.lr.ph1080.preheader, label %._crit_edge1081

.lr.ph1080.preheader:                             ; preds = %.preheader1028
  br i1 %636, label %._crit_edge1081.loopexit.unr-lcssa, label %.lr.ph1080

.lr.ph1080:                                       ; preds = %.lr.ph1080.preheader, %.lr.ph1080
  %.18881079 = phi i64 [ %731, %.lr.ph1080 ], [ 0, %.lr.ph1080.preheader ]
  %niter1384 = phi i64 [ %niter1384.next.3, %.lr.ph1080 ], [ 0, %.lr.ph1080.preheader ]
  %712 = load ptr, ptr %99, align 8, !tbaa !5
  %713 = getelementptr inbounds ptr, ptr %712, i64 %.121083
  %714 = load ptr, ptr %713, align 8, !tbaa !16
  %715 = getelementptr inbounds double, ptr %714, i64 %.18881079
  store double 0.000000e+00, ptr %715, align 8, !tbaa !8
  %716 = or disjoint i64 %.18881079, 1
  %717 = load ptr, ptr %99, align 8, !tbaa !5
  %718 = getelementptr inbounds ptr, ptr %717, i64 %.121083
  %719 = load ptr, ptr %718, align 8, !tbaa !16
  %720 = getelementptr inbounds double, ptr %719, i64 %716
  store double 0.000000e+00, ptr %720, align 8, !tbaa !8
  %721 = or disjoint i64 %.18881079, 2
  %722 = load ptr, ptr %99, align 8, !tbaa !5
  %723 = getelementptr inbounds ptr, ptr %722, i64 %.121083
  %724 = load ptr, ptr %723, align 8, !tbaa !16
  %725 = getelementptr inbounds double, ptr %724, i64 %721
  store double 0.000000e+00, ptr %725, align 8, !tbaa !8
  %726 = or disjoint i64 %.18881079, 3
  %727 = load ptr, ptr %99, align 8, !tbaa !5
  %728 = getelementptr inbounds ptr, ptr %727, i64 %.121083
  %729 = load ptr, ptr %728, align 8, !tbaa !16
  %730 = getelementptr inbounds double, ptr %729, i64 %726
  store double 0.000000e+00, ptr %730, align 8, !tbaa !8
  %731 = add nuw nsw i64 %.18881079, 4
  %niter1384.next.3 = add i64 %niter1384, 4
  %niter1384.ncmp.3 = icmp eq i64 %niter1384.next.3, %unroll_iter1383
  br i1 %niter1384.ncmp.3, label %._crit_edge1081.loopexit.unr-lcssa, label %.lr.ph1080, !llvm.loop !28

._crit_edge1081.loopexit.unr-lcssa:               ; preds = %.lr.ph1080, %.lr.ph1080.preheader
  %.18881079.unr = phi i64 [ 0, %.lr.ph1080.preheader ], [ %731, %.lr.ph1080 ]
  br i1 %lcmp.mod1382.not, label %._crit_edge1081, label %.lr.ph1080.epil

.lr.ph1080.epil:                                  ; preds = %._crit_edge1081.loopexit.unr-lcssa, %.lr.ph1080.epil
  %.18881079.epil = phi i64 [ %736, %.lr.ph1080.epil ], [ %.18881079.unr, %._crit_edge1081.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph1080.epil ], [ 0, %._crit_edge1081.loopexit.unr-lcssa ]
  %732 = load ptr, ptr %99, align 8, !tbaa !5
  %733 = getelementptr inbounds ptr, ptr %732, i64 %.121083
  %734 = load ptr, ptr %733, align 8, !tbaa !16
  %735 = getelementptr inbounds double, ptr %734, i64 %.18881079.epil
  store double 0.000000e+00, ptr %735, align 8, !tbaa !8
  %736 = add nuw nsw i64 %.18881079.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter1381
  br i1 %epil.iter.cmp.not, label %._crit_edge1081, label %.lr.ph1080.epil, !llvm.loop !29

._crit_edge1081:                                  ; preds = %._crit_edge1081.loopexit.unr-lcssa, %.lr.ph1080.epil, %.preheader1028
  %737 = load ptr, ptr %99, align 8, !tbaa !5
  %738 = getelementptr inbounds ptr, ptr %737, i64 %.121083
  %739 = load ptr, ptr %738, align 8, !tbaa !16
  %740 = urem i64 %.121083, 3
  %741 = getelementptr inbounds double, ptr %739, i64 %740
  store double 1.000000e+00, ptr %741, align 8, !tbaa !8
  %742 = load ptr, ptr %99, align 8, !tbaa !5
  %743 = getelementptr inbounds ptr, ptr %742, i64 %.121083
  %744 = load ptr, ptr %743, align 8, !tbaa !16
  %745 = udiv i64 %.121083, 3
  %746 = urem i64 %745, 3
  %747 = getelementptr inbounds double, ptr %744, i64 %746
  %748 = getelementptr inbounds i8, ptr %747, i64 24
  store double 1.000000e+00, ptr %748, align 8, !tbaa !8
  %749 = load ptr, ptr %99, align 8, !tbaa !5
  %750 = getelementptr inbounds ptr, ptr %749, i64 %.121083
  %751 = load ptr, ptr %750, align 8, !tbaa !16
  %752 = udiv i64 %.121083, 9
  %753 = urem i64 %752, 3
  %754 = getelementptr inbounds double, ptr %751, i64 %753
  %755 = getelementptr inbounds i8, ptr %754, i64 48
  store double 1.000000e+00, ptr %755, align 8, !tbaa !8
  %756 = load ptr, ptr %99, align 8, !tbaa !5
  %757 = getelementptr inbounds ptr, ptr %756, i64 %.121083
  %758 = load ptr, ptr %757, align 8, !tbaa !16
  %759 = load ptr, ptr %97, align 8, !tbaa !5
  %760 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef 8)
  %761 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %758, i64 noundef 1, ptr noundef %759, i64 noundef 1, i64 noundef %760)
  %762 = load ptr, ptr %599, align 8, !tbaa !5
  %763 = getelementptr inbounds double, ptr %762, i64 %.121083
  store double %761, ptr %763, align 8, !tbaa !8
  %764 = call noundef double @_ZL29testlinregunit_generatenormalddPN11alglib_impl8ae_stateE(double noundef 0.000000e+00, double noundef 1.000000e+00, ptr noundef %1)
  %765 = call double @llvm.fmuladd.f64(double %764, double 2.000000e-01, double %761)
  %766 = load ptr, ptr %99, align 8, !tbaa !5
  %767 = getelementptr inbounds ptr, ptr %766, i64 %.121083
  %768 = load ptr, ptr %767, align 8, !tbaa !16
  %769 = getelementptr inbounds double, ptr %768, i64 %.09191198
  store double %765, ptr %769, align 8, !tbaa !8
  %770 = add nuw nsw i64 %.121083, 1
  %exitcond1284.not = icmp eq i64 %770, %.21185
  br i1 %exitcond1284.not, label %.loopexit1032, label %.preheader1028, !llvm.loop !31

.loopexit1032:                                    ; preds = %._crit_edge1081, %.loopexit1033
  br i1 %or.cond5.not, label %.loopexit, label %771

771:                                              ; preds = %.loopexit1032
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %631, ptr noundef nonnull @.str.26, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %13, i64 noundef 9, ptr noundef %1)
  %772 = load ptr, ptr %97, align 8, !tbaa !5
  store double 1.000000e+00, ptr %772, align 8, !tbaa !8
  %773 = load ptr, ptr %97, align 8, !tbaa !5
  %774 = getelementptr inbounds i8, ptr %773, i64 8
  store double -2.000000e+00, ptr %774, align 8, !tbaa !8
  %775 = load ptr, ptr %97, align 8, !tbaa !5
  %776 = getelementptr inbounds i8, ptr %775, i64 16
  store double 3.000000e+00, ptr %776, align 8, !tbaa !8
  %777 = load ptr, ptr %97, align 8, !tbaa !5
  %778 = getelementptr inbounds i8, ptr %777, i64 24
  store double 2.500000e-01, ptr %778, align 8, !tbaa !8
  %779 = load ptr, ptr %97, align 8, !tbaa !5
  %780 = getelementptr inbounds i8, ptr %779, i64 32
  store double -5.000000e-01, ptr %780, align 8, !tbaa !8
  %781 = load ptr, ptr %97, align 8, !tbaa !5
  %782 = getelementptr inbounds i8, ptr %781, i64 40
  store double 7.500000e-01, ptr %782, align 8, !tbaa !8
  %783 = load ptr, ptr %97, align 8, !tbaa !5
  %784 = getelementptr inbounds i8, ptr %783, i64 48
  store double -6.000000e-02, ptr %784, align 8, !tbaa !8
  %785 = load ptr, ptr %97, align 8, !tbaa !5
  %786 = getelementptr inbounds i8, ptr %785, i64 56
  store double 1.200000e-01, ptr %786, align 8, !tbaa !8
  %787 = load ptr, ptr %97, align 8, !tbaa !5
  %788 = getelementptr inbounds i8, ptr %787, i64 64
  store double -1.800000e-01, ptr %788, align 8, !tbaa !8
  %.not957.not1088 = icmp sgt i64 %.21185, 0
  br i1 %.not957.not1088, label %.preheader1027, label %._crit_edge1095

.preheader1027:                                   ; preds = %771, %._crit_edge1087
  %.131089 = phi i64 [ %817, %._crit_edge1087 ], [ 0, %771 ]
  br i1 %.not975.not1078, label %.lr.ph1086, label %._crit_edge1087

.lr.ph1086:                                       ; preds = %.preheader1027
  br i1 %619, label %.lr.ph1086.split.us, label %.lr.ph1086.split

.lr.ph1086.split.us:                              ; preds = %.lr.ph1086, %.lr.ph1086.split.us
  %.28891085.us = phi i64 [ %795, %.lr.ph1086.split.us ], [ 0, %.lr.ph1086 ]
  %789 = call noundef double @_ZL29testlinregunit_generatenormalddPN11alglib_impl8ae_stateE(double noundef 0.000000e+00, double noundef 3.000000e+00, ptr noundef %1)
  %790 = fadd double %789, 1.000000e+00
  %791 = load ptr, ptr %99, align 8, !tbaa !5
  %792 = getelementptr inbounds ptr, ptr %791, i64 %.131089
  %793 = load ptr, ptr %792, align 8, !tbaa !16
  %794 = getelementptr inbounds double, ptr %793, i64 %.28891085.us
  store double %790, ptr %794, align 8, !tbaa !8
  %795 = add nuw nsw i64 %.28891085.us, 1
  %exitcond1286.not = icmp eq i64 %795, %.09191198
  br i1 %exitcond1286.not, label %._crit_edge1087, label %.lr.ph1086.split.us, !llvm.loop !32

.lr.ph1086.split:                                 ; preds = %.lr.ph1086, %.lr.ph1086.split
  %.28891085 = phi i64 [ %802, %.lr.ph1086.split ], [ 0, %.lr.ph1086 ]
  %796 = call noundef double @_ZL29testlinregunit_generatenormalddPN11alglib_impl8ae_stateE(double noundef 0.000000e+00, double noundef 5.000000e-02, ptr noundef %1)
  %797 = fadd double %796, 1.000000e+00
  %798 = load ptr, ptr %99, align 8, !tbaa !5
  %799 = getelementptr inbounds ptr, ptr %798, i64 %.131089
  %800 = load ptr, ptr %799, align 8, !tbaa !16
  %801 = getelementptr inbounds double, ptr %800, i64 %.28891085
  store double %797, ptr %801, align 8, !tbaa !8
  %802 = add nuw nsw i64 %.28891085, 1
  %exitcond1285.not = icmp eq i64 %802, %.09191198
  br i1 %exitcond1285.not, label %._crit_edge1087, label %.lr.ph1086.split, !llvm.loop !32

._crit_edge1087:                                  ; preds = %.lr.ph1086.split, %.lr.ph1086.split.us, %.preheader1027
  %803 = load ptr, ptr %99, align 8, !tbaa !5
  %804 = getelementptr inbounds ptr, ptr %803, i64 %.131089
  %805 = load ptr, ptr %804, align 8, !tbaa !16
  %806 = load ptr, ptr %97, align 8, !tbaa !5
  %807 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef 8)
  %808 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %805, i64 noundef 1, ptr noundef %806, i64 noundef 1, i64 noundef %807)
  %809 = load ptr, ptr %599, align 8, !tbaa !5
  %810 = getelementptr inbounds double, ptr %809, i64 %.131089
  store double %808, ptr %810, align 8, !tbaa !8
  %811 = call noundef double @_ZL29testlinregunit_generatenormalddPN11alglib_impl8ae_stateE(double noundef 0.000000e+00, double noundef 1.000000e+00, ptr noundef %1)
  %812 = call double @llvm.fmuladd.f64(double %811, double 2.000000e-01, double %808)
  %813 = load ptr, ptr %99, align 8, !tbaa !5
  %814 = getelementptr inbounds ptr, ptr %813, i64 %.131089
  %815 = load ptr, ptr %814, align 8, !tbaa !16
  %816 = getelementptr inbounds double, ptr %815, i64 %.09191198
  store double %812, ptr %816, align 8, !tbaa !8
  %817 = add nuw nsw i64 %.131089, 1
  %exitcond1287.not = icmp eq i64 %817, %.21185
  br i1 %exitcond1287.not, label %.loopexit, label %.preheader1027, !llvm.loop !33

.loopexit:                                        ; preds = %._crit_edge1087, %.loopexit1032
  %.not958.not1091 = icmp sgt i64 %.21185, 0
  br i1 %.not958.not1091, label %.lr.ph1094, label %._crit_edge1095

.lr.ph1094:                                       ; preds = %.loopexit, %.lr.ph1094
  %.141092 = phi i64 [ %822, %.lr.ph1094 ], [ 0, %.loopexit ]
  %818 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %819 = fadd double %818, 1.000000e+00
  %820 = load ptr, ptr %95, align 8, !tbaa !5
  %821 = getelementptr inbounds double, ptr %820, i64 %.141092
  store double %819, ptr %821, align 8, !tbaa !8
  %822 = add nuw nsw i64 %.141092, 1
  %exitcond1288.not = icmp eq i64 %822, %.21185
  br i1 %exitcond1288.not, label %._crit_edge1095, label %.lr.ph1094, !llvm.loop !34

._crit_edge1095:                                  ; preds = %.lr.ph1094, %694, %771, %.loopexit
  %.not958.not10911323 = phi i1 [ false, %.loopexit ], [ false, %771 ], [ false, %694 ], [ %.not958.not1091, %.lr.ph1094 ]
  br i1 %614, label %823, label %824

823:                                              ; preds = %._crit_edge1095
  call void @_ZN11alglib_impl8lrbuildsEPNS_9ae_matrixEPNS_9ae_vectorEllPlPNS_11linearmodelEPNS_8lrreportEPNS_8ae_stateE(ptr noundef nonnull %7, ptr noundef nonnull %9, i64 noundef %.21185, i64 noundef %.09191198, ptr noundef nonnull %5, ptr noundef nonnull %19, ptr noundef nonnull %35, ptr noundef %1)
  br label %825

824:                                              ; preds = %._crit_edge1095
  call void @_ZN11alglib_impl9lrbuildzsEPNS_9ae_matrixEPNS_9ae_vectorEllPlPNS_11linearmodelEPNS_8lrreportEPNS_8ae_stateE(ptr noundef nonnull %7, ptr noundef nonnull %9, i64 noundef %.21185, i64 noundef %.09191198, ptr noundef nonnull %5, ptr noundef nonnull %19, ptr noundef nonnull %35, ptr noundef %1)
  br label %825

825:                                              ; preds = %824, %823
  %826 = load i64, ptr %5, align 8, !tbaa !10
  %.not959 = icmp eq i64 %826, 1
  br i1 %.not959, label %827, label %1260

827:                                              ; preds = %825
  call void @_ZN11alglib_impl8lrunpackEPNS_11linearmodelEPNS_9ae_vectorEPlPNS_8ae_stateE(ptr noundef nonnull %19, ptr noundef nonnull %17, ptr noundef nonnull %4, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %.09191198, ptr noundef %1)
  %828 = load ptr, ptr %100, align 8, !tbaa !5
  %829 = getelementptr inbounds double, ptr %828, i64 %.09191198
  %830 = load double, ptr %829, align 8, !tbaa !8
  br i1 %.not975.not1078, label %.lr.ph1100, label %._crit_edge1101

.lr.ph1100:                                       ; preds = %827, %.lr.ph1100
  %.151098 = phi i64 [ %842, %.lr.ph1100 ], [ 0, %827 ]
  %.09121097 = phi double [ %841, %.lr.ph1100 ], [ %830, %827 ]
  %831 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %832 = call double @llvm.fmuladd.f64(double %831, double 2.000000e+00, double -1.000000e+00)
  %833 = load ptr, ptr %600, align 8, !tbaa !5
  %834 = getelementptr inbounds double, ptr %833, i64 %.151098
  store double %832, ptr %834, align 8, !tbaa !8
  %835 = load ptr, ptr %100, align 8, !tbaa !5
  %836 = getelementptr inbounds double, ptr %835, i64 %.151098
  %837 = load double, ptr %836, align 8, !tbaa !8
  %838 = load ptr, ptr %600, align 8, !tbaa !5
  %839 = getelementptr inbounds double, ptr %838, i64 %.151098
  %840 = load double, ptr %839, align 8, !tbaa !8
  %841 = call double @llvm.fmuladd.f64(double %837, double %840, double %.09121097)
  %842 = add nuw nsw i64 %.151098, 1
  %exitcond1289.not = icmp eq i64 %842, %.09191198
  br i1 %exitcond1289.not, label %._crit_edge1101, label %.lr.ph1100, !llvm.loop !35

._crit_edge1101:                                  ; preds = %.lr.ph1100, %827
  %.0912.lcssa = phi double [ %830, %827 ], [ %841, %.lr.ph1100 ]
  %843 = trunc nuw i8 %.38311183 to i1
  br i1 %843, label %852, label %844

844:                                              ; preds = %._crit_edge1101
  %845 = call noundef double @_ZN11alglib_impl9lrprocessEPNS_11linearmodelEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %19, ptr noundef nonnull %12, ptr noundef %1)
  %846 = fsub double %.0912.lcssa, %845
  %847 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %846, ptr noundef %1)
  %848 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %.0912.lcssa, ptr noundef %1)
  %849 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %848, double noundef 1.000000e+00, ptr noundef %1)
  %850 = fdiv double %847, %849
  %851 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %850, double noundef 5.000000e-10)
  br label %852

852:                                              ; preds = %844, %._crit_edge1101
  %853 = phi i1 [ true, %._crit_edge1101 ], [ %851, %844 ]
  call void @_ZN11alglib_impl6lrpackEPNS_9ae_vectorElPNS_11linearmodelEPNS_8ae_stateE(ptr noundef nonnull %17, i64 noundef %.09191198, ptr noundef nonnull %20, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %.09191198, ptr noundef %1)
  br i1 %.not975.not1078, label %.lr.ph1105, label %._crit_edge1106

.lr.ph1105:                                       ; preds = %852, %.lr.ph1105
  %.161103 = phi i64 [ %858, %.lr.ph1105 ], [ 0, %852 ]
  %854 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %855 = call double @llvm.fmuladd.f64(double %854, double 2.000000e+00, double -1.000000e+00)
  %856 = load ptr, ptr %600, align 8, !tbaa !5
  %857 = getelementptr inbounds double, ptr %856, i64 %.161103
  store double %855, ptr %857, align 8, !tbaa !8
  %858 = add nuw nsw i64 %.161103, 1
  %exitcond1290.not = icmp eq i64 %858, %.09191198
  br i1 %exitcond1290.not, label %._crit_edge1106, label %.lr.ph1105, !llvm.loop !36

._crit_edge1106:                                  ; preds = %.lr.ph1105, %852
  %859 = call noundef double @_ZN11alglib_impl9lrprocessEPNS_11linearmodelEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %19, ptr noundef nonnull %12, ptr noundef %1)
  br i1 %853, label %867, label %860

860:                                              ; preds = %._crit_edge1106
  %861 = call noundef double @_ZN11alglib_impl9lrprocessEPNS_11linearmodelEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %20, ptr noundef nonnull %12, ptr noundef %1)
  %862 = fsub double %859, %861
  %863 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %862, ptr noundef %1)
  %864 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %859, ptr noundef %1)
  %865 = fdiv double %863, %864
  %866 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %865, double noundef 5.000000e-10)
  br label %867

867:                                              ; preds = %860, %._crit_edge1106
  %868 = phi i1 [ true, %._crit_edge1106 ], [ %866, %860 ]
  %869 = zext i1 %868 to i8
  br i1 %.not9621126, label %._crit_edge1133, label %.lr.ph1132

.lr.ph1132:                                       ; preds = %867, %1007
  %.68491130 = phi i8 [ %.7850, %1007 ], [ %.58481181, %867 ]
  %.08921127 = phi i64 [ %1008, %1007 ], [ 0, %867 ]
  %870 = icmp eq i64 %.08921127, %.09191198
  %or.cond1008 = and i1 %615, %870
  br i1 %or.cond1008, label %1007, label %.preheader1026

.preheader1026:                                   ; preds = %.lr.ph1132
  br i1 %.not958.not10911323, label %.lr.ph1119, label %._crit_edge1120

.lr.ph1119:                                       ; preds = %.preheader1026
  %871 = icmp slt i64 %.08921127, %.09191198
  br i1 %.not975.not1078, label %.lr.ph1111.us, label %.lr.ph1119.split

.lr.ph1111.us:                                    ; preds = %.lr.ph1119, %._crit_edge1112.us._crit_edge
  %.171118.us = phi i64 [ %907, %._crit_edge1112.us._crit_edge ], [ 0, %.lr.ph1119 ]
  %.09161115.us = phi double [ %946, %._crit_edge1112.us._crit_edge ], [ 0.000000e+00, %.lr.ph1119 ]
  %872 = phi <2 x double> [ %906, %._crit_edge1112.us._crit_edge ], [ zeroinitializer, %.lr.ph1119 ]
  %873 = load ptr, ptr %100, align 8, !tbaa !5
  %874 = getelementptr inbounds double, ptr %873, i64 %.09191198
  %875 = load double, ptr %874, align 8, !tbaa !8
  %876 = load ptr, ptr %99, align 8, !tbaa !5
  %877 = getelementptr inbounds ptr, ptr %876, i64 %.171118.us
  %878 = load ptr, ptr %877, align 8, !tbaa !16
  br i1 %637, label %._crit_edge1112.us.unr-lcssa, label %.lr.ph1111.us.new

879:                                              ; preds = %._crit_edge1112.us
  %880 = getelementptr inbounds double, ptr %948, i64 %.08921127
  %881 = load double, ptr %880, align 8, !tbaa !8
  br label %._crit_edge1112.us._crit_edge

._crit_edge1112.us._crit_edge:                    ; preds = %._crit_edge1112.us, %879
  %.0911.us = phi double [ %881, %879 ], [ 1.000000e+00, %._crit_edge1112.us ]
  %882 = call double @llvm.fmuladd.f64(double %.0911.us, double 1.000000e-03, double %.lcssa1369)
  %883 = getelementptr inbounds double, ptr %948, i64 %.09191198
  %884 = load double, ptr %883, align 8, !tbaa !8
  %885 = fsub double %882, %884
  %886 = load ptr, ptr %95, align 8, !tbaa !5
  %887 = getelementptr inbounds double, ptr %886, i64 %.171118.us
  %888 = load double, ptr %887, align 8, !tbaa !8
  %889 = fdiv double %885, %888
  %890 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %889, ptr noundef %1)
  %891 = fneg double %.0911.us
  %892 = call double @llvm.fmuladd.f64(double %891, double 1.000000e-03, double %.lcssa1369)
  %893 = load ptr, ptr %99, align 8, !tbaa !5
  %894 = getelementptr inbounds ptr, ptr %893, i64 %.171118.us
  %895 = load ptr, ptr %894, align 8, !tbaa !16
  %896 = getelementptr inbounds double, ptr %895, i64 %.09191198
  %897 = load double, ptr %896, align 8, !tbaa !8
  %898 = fsub double %892, %897
  %899 = load ptr, ptr %95, align 8, !tbaa !5
  %900 = getelementptr inbounds double, ptr %899, i64 %.171118.us
  %901 = load double, ptr %900, align 8, !tbaa !8
  %902 = fdiv double %898, %901
  %903 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %902, ptr noundef %1)
  %904 = insertelement <2 x double> poison, double %890, i64 0
  %905 = insertelement <2 x double> %904, double %903, i64 1
  %906 = fadd <2 x double> %872, %905
  %907 = add nuw nsw i64 %.171118.us, 1
  %exitcond1293.not = icmp eq i64 %907, %.21185
  br i1 %exitcond1293.not, label %._crit_edge1120, label %.lr.ph1111.us, !llvm.loop !37

.lr.ph1111.us.new:                                ; preds = %.lr.ph1111.us, %.lr.ph1111.us.new
  %.38901109.us = phi i64 [ %931, %.lr.ph1111.us.new ], [ 0, %.lr.ph1111.us ]
  %.19131108.us = phi double [ %930, %.lr.ph1111.us.new ], [ %875, %.lr.ph1111.us ]
  %niter1391 = phi i64 [ %niter1391.next.3, %.lr.ph1111.us.new ], [ 0, %.lr.ph1111.us ]
  %908 = getelementptr inbounds double, ptr %878, i64 %.38901109.us
  %909 = load double, ptr %908, align 8, !tbaa !8
  %910 = getelementptr inbounds double, ptr %873, i64 %.38901109.us
  %911 = load double, ptr %910, align 8, !tbaa !8
  %912 = call double @llvm.fmuladd.f64(double %909, double %911, double %.19131108.us)
  %913 = or disjoint i64 %.38901109.us, 1
  %914 = getelementptr inbounds double, ptr %878, i64 %913
  %915 = load double, ptr %914, align 8, !tbaa !8
  %916 = getelementptr inbounds double, ptr %873, i64 %913
  %917 = load double, ptr %916, align 8, !tbaa !8
  %918 = call double @llvm.fmuladd.f64(double %915, double %917, double %912)
  %919 = or disjoint i64 %.38901109.us, 2
  %920 = getelementptr inbounds double, ptr %878, i64 %919
  %921 = load double, ptr %920, align 8, !tbaa !8
  %922 = getelementptr inbounds double, ptr %873, i64 %919
  %923 = load double, ptr %922, align 8, !tbaa !8
  %924 = call double @llvm.fmuladd.f64(double %921, double %923, double %918)
  %925 = or disjoint i64 %.38901109.us, 3
  %926 = getelementptr inbounds double, ptr %878, i64 %925
  %927 = load double, ptr %926, align 8, !tbaa !8
  %928 = getelementptr inbounds double, ptr %873, i64 %925
  %929 = load double, ptr %928, align 8, !tbaa !8
  %930 = call double @llvm.fmuladd.f64(double %927, double %929, double %924)
  %931 = add nuw nsw i64 %.38901109.us, 4
  %niter1391.next.3 = add i64 %niter1391, 4
  %niter1391.ncmp.3 = icmp eq i64 %niter1391.next.3, %unroll_iter1390
  br i1 %niter1391.ncmp.3, label %._crit_edge1112.us.unr-lcssa, label %.lr.ph1111.us.new, !llvm.loop !38

._crit_edge1112.us.unr-lcssa:                     ; preds = %.lr.ph1111.us.new, %.lr.ph1111.us
  %.lcssa1369.ph = phi double [ poison, %.lr.ph1111.us ], [ %930, %.lr.ph1111.us.new ]
  %.38901109.us.unr = phi i64 [ 0, %.lr.ph1111.us ], [ %931, %.lr.ph1111.us.new ]
  %.19131108.us.unr = phi double [ %875, %.lr.ph1111.us ], [ %930, %.lr.ph1111.us.new ]
  br i1 %lcmp.mod1388.not, label %._crit_edge1112.us, label %.epil.preheader1385

.epil.preheader1385:                              ; preds = %._crit_edge1112.us.unr-lcssa, %.epil.preheader1385
  %.38901109.us.epil = phi i64 [ %937, %.epil.preheader1385 ], [ %.38901109.us.unr, %._crit_edge1112.us.unr-lcssa ]
  %.19131108.us.epil = phi double [ %936, %.epil.preheader1385 ], [ %.19131108.us.unr, %._crit_edge1112.us.unr-lcssa ]
  %epil.iter1387 = phi i64 [ %epil.iter1387.next, %.epil.preheader1385 ], [ 0, %._crit_edge1112.us.unr-lcssa ]
  %932 = getelementptr inbounds double, ptr %878, i64 %.38901109.us.epil
  %933 = load double, ptr %932, align 8, !tbaa !8
  %934 = getelementptr inbounds double, ptr %873, i64 %.38901109.us.epil
  %935 = load double, ptr %934, align 8, !tbaa !8
  %936 = call double @llvm.fmuladd.f64(double %933, double %935, double %.19131108.us.epil)
  %937 = add nuw nsw i64 %.38901109.us.epil, 1
  %epil.iter1387.next = add i64 %epil.iter1387, 1
  %epil.iter1387.cmp.not = icmp eq i64 %epil.iter1387.next, %xtraiter1386
  br i1 %epil.iter1387.cmp.not, label %._crit_edge1112.us, label %.epil.preheader1385, !llvm.loop !39

._crit_edge1112.us:                               ; preds = %.epil.preheader1385, %._crit_edge1112.us.unr-lcssa
  %.lcssa1369 = phi double [ %.lcssa1369.ph, %._crit_edge1112.us.unr-lcssa ], [ %936, %.epil.preheader1385 ]
  %938 = getelementptr inbounds double, ptr %878, i64 %.09191198
  %939 = load double, ptr %938, align 8, !tbaa !8
  %940 = fsub double %.lcssa1369, %939
  %941 = load ptr, ptr %95, align 8, !tbaa !5
  %942 = getelementptr inbounds double, ptr %941, i64 %.171118.us
  %943 = load double, ptr %942, align 8, !tbaa !8
  %944 = fdiv double %940, %943
  %945 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %944, ptr noundef %1)
  %946 = fadd double %.09161115.us, %945
  %.pre1314 = load ptr, ptr %99, align 8, !tbaa !5
  %947 = getelementptr inbounds ptr, ptr %.pre1314, i64 %.171118.us
  %948 = load ptr, ptr %947, align 8, !tbaa !16
  br i1 %871, label %879, label %._crit_edge1112.us._crit_edge

.lr.ph1119.split:                                 ; preds = %.lr.ph1119, %.lr.ph1119.split._crit_edge
  %.171118 = phi i64 [ %995, %.lr.ph1119.split._crit_edge ], [ 0, %.lr.ph1119 ]
  %.09161115 = phi double [ %964, %.lr.ph1119.split._crit_edge ], [ 0.000000e+00, %.lr.ph1119 ]
  %949 = phi <2 x double> [ %994, %.lr.ph1119.split._crit_edge ], [ zeroinitializer, %.lr.ph1119 ]
  %950 = load ptr, ptr %100, align 8, !tbaa !5
  %951 = getelementptr inbounds double, ptr %950, i64 %.09191198
  %952 = load double, ptr %951, align 8, !tbaa !8
  %953 = load ptr, ptr %99, align 8, !tbaa !5
  %954 = getelementptr inbounds ptr, ptr %953, i64 %.171118
  %955 = load ptr, ptr %954, align 8, !tbaa !16
  %956 = getelementptr inbounds double, ptr %955, i64 %.09191198
  %957 = load double, ptr %956, align 8, !tbaa !8
  %958 = fsub double %952, %957
  %959 = load ptr, ptr %95, align 8, !tbaa !5
  %960 = getelementptr inbounds double, ptr %959, i64 %.171118
  %961 = load double, ptr %960, align 8, !tbaa !8
  %962 = fdiv double %958, %961
  %963 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %962, ptr noundef %1)
  %964 = fadd double %.09161115, %963
  %.pre = load ptr, ptr %99, align 8, !tbaa !5
  %965 = getelementptr inbounds ptr, ptr %.pre, i64 %.171118
  %966 = load ptr, ptr %965, align 8, !tbaa !16
  br i1 %871, label %967, label %.lr.ph1119.split._crit_edge

967:                                              ; preds = %.lr.ph1119.split
  %968 = getelementptr inbounds double, ptr %966, i64 %.08921127
  %969 = load double, ptr %968, align 8, !tbaa !8
  br label %.lr.ph1119.split._crit_edge

.lr.ph1119.split._crit_edge:                      ; preds = %.lr.ph1119.split, %967
  %.0911 = phi double [ %969, %967 ], [ 1.000000e+00, %.lr.ph1119.split ]
  %970 = call double @llvm.fmuladd.f64(double %.0911, double 1.000000e-03, double %952)
  %971 = getelementptr inbounds double, ptr %966, i64 %.09191198
  %972 = load double, ptr %971, align 8, !tbaa !8
  %973 = fsub double %970, %972
  %974 = load ptr, ptr %95, align 8, !tbaa !5
  %975 = getelementptr inbounds double, ptr %974, i64 %.171118
  %976 = load double, ptr %975, align 8, !tbaa !8
  %977 = fdiv double %973, %976
  %978 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %977, ptr noundef %1)
  %979 = fneg double %.0911
  %980 = call double @llvm.fmuladd.f64(double %979, double 1.000000e-03, double %952)
  %981 = load ptr, ptr %99, align 8, !tbaa !5
  %982 = getelementptr inbounds ptr, ptr %981, i64 %.171118
  %983 = load ptr, ptr %982, align 8, !tbaa !16
  %984 = getelementptr inbounds double, ptr %983, i64 %.09191198
  %985 = load double, ptr %984, align 8, !tbaa !8
  %986 = fsub double %980, %985
  %987 = load ptr, ptr %95, align 8, !tbaa !5
  %988 = getelementptr inbounds double, ptr %987, i64 %.171118
  %989 = load double, ptr %988, align 8, !tbaa !8
  %990 = fdiv double %986, %989
  %991 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %990, ptr noundef %1)
  %992 = insertelement <2 x double> poison, double %978, i64 0
  %993 = insertelement <2 x double> %992, double %991, i64 1
  %994 = fadd <2 x double> %949, %993
  %995 = add nuw nsw i64 %.171118, 1
  %exitcond1291.not = icmp eq i64 %995, %.21185
  br i1 %exitcond1291.not, label %._crit_edge1120, label %.lr.ph1119.split, !llvm.loop !37

._crit_edge1120:                                  ; preds = %.lr.ph1119.split._crit_edge, %._crit_edge1112.us._crit_edge, %.preheader1026
  %.0916.lcssa = phi double [ 0.000000e+00, %.preheader1026 ], [ %946, %._crit_edge1112.us._crit_edge ], [ %964, %.lr.ph1119.split._crit_edge ]
  %996 = phi <2 x double> [ zeroinitializer, %.preheader1026 ], [ %906, %._crit_edge1112.us._crit_edge ], [ %994, %.lr.ph1119.split._crit_edge ]
  %997 = trunc nuw i8 %.68491130 to i1
  br i1 %997, label %1004, label %998

998:                                              ; preds = %._crit_edge1120
  %999 = extractelement <2 x double> %996, i64 0
  %1000 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %.0916.lcssa, double noundef %999)
  br i1 %1000, label %1004, label %1001

1001:                                             ; preds = %998
  %1002 = extractelement <2 x double> %996, i64 1
  %1003 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %.0916.lcssa, double noundef %1002)
  br label %1004

1004:                                             ; preds = %1001, %998, %._crit_edge1120
  %1005 = phi i1 [ true, %998 ], [ true, %._crit_edge1120 ], [ %1003, %1001 ]
  %1006 = zext i1 %1005 to i8
  br label %1007

1007:                                             ; preds = %.lr.ph1132, %1004
  %.7850 = phi i8 [ %1006, %1004 ], [ %.68491130, %.lr.ph1132 ]
  %1008 = add nuw i64 %.08921127, 1
  %exitcond1294.not = icmp eq i64 %.08921127, %indvars.iv.in
  br i1 %exitcond1294.not, label %._crit_edge1133, label %.lr.ph1132, !llvm.loop !40

._crit_edge1133:                                  ; preds = %1007, %867
  %.6849.lcssa = phi i8 [ %.58481181, %867 ], [ %.7850, %1007 ]
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %13, i64 noundef 1000, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %14, i64 noundef %.pre1320, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %15, i64 noundef %.pre1320, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.21185, i64 noundef %.pre1320, ptr noundef %1)
  br i1 %.not9621126, label %.preheader1025.preheader, label %.lr.ph1138

.lr.ph1138:                                       ; preds = %._crit_edge1133, %.lr.ph1138
  %.181136 = phi i64 [ %1012, %.lr.ph1138 ], [ 0, %._crit_edge1133 ]
  %1009 = call noundef double @_ZL29testlinregunit_generatenormalddPN11alglib_impl8ae_stateE(double noundef 0.000000e+00, double noundef 1.000000e+00, ptr noundef %1)
  %1010 = load ptr, ptr %98, align 8, !tbaa !5
  %1011 = getelementptr inbounds double, ptr %1010, i64 %.181136
  store double %1009, ptr %1011, align 8, !tbaa !8
  %1012 = add nuw i64 %.181136, 1
  %exitcond1295.not = icmp eq i64 %.181136, %indvars.iv.in
  br i1 %exitcond1295.not, label %.preheader1025.preheader, label %.lr.ph1138, !llvm.loop !41

.preheader1025.preheader:                         ; preds = %.lr.ph1138, %._crit_edge1133
  br label %.preheader1025

.preheader1025:                                   ; preds = %.preheader1025.preheader, %1042
  %.71144 = phi i8 [ %.8, %1042 ], [ %.61184, %.preheader1025.preheader ]
  %.19181143 = phi i64 [ %1045, %1042 ], [ 0, %.preheader1025.preheader ]
  br i1 %.not958.not10911323, label %.lr.ph1141, label %._crit_edge1142

.lr.ph1141:                                       ; preds = %.preheader1025, %.lr.ph1141
  %.191140 = phi i64 [ %1032, %.lr.ph1141 ], [ 0, %.preheader1025 ]
  %1013 = load ptr, ptr %601, align 8, !tbaa !5
  %1014 = getelementptr inbounds ptr, ptr %1013, i64 %.191140
  %1015 = load ptr, ptr %1014, align 8, !tbaa !16
  %1016 = load ptr, ptr %99, align 8, !tbaa !5
  %1017 = getelementptr inbounds ptr, ptr %1016, i64 %.191140
  %1018 = load ptr, ptr %1017, align 8, !tbaa !16
  %1019 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %632)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1015, i64 noundef 1, ptr noundef %1018, i64 noundef 1, i64 noundef %1019)
  %1020 = load ptr, ptr %599, align 8, !tbaa !5
  %1021 = getelementptr inbounds double, ptr %1020, i64 %.191140
  %1022 = load double, ptr %1021, align 8, !tbaa !8
  %1023 = load ptr, ptr %95, align 8, !tbaa !5
  %1024 = getelementptr inbounds double, ptr %1023, i64 %.191140
  %1025 = load double, ptr %1024, align 8, !tbaa !8
  %1026 = call noundef double @_ZL29testlinregunit_generatenormalddPN11alglib_impl8ae_stateE(double noundef 0.000000e+00, double noundef 1.000000e+00, ptr noundef %1)
  %1027 = call double @llvm.fmuladd.f64(double %1025, double %1026, double %1022)
  %1028 = load ptr, ptr %601, align 8, !tbaa !5
  %1029 = getelementptr inbounds ptr, ptr %1028, i64 %.191140
  %1030 = load ptr, ptr %1029, align 8, !tbaa !16
  %1031 = getelementptr inbounds double, ptr %1030, i64 %.09191198
  store double %1027, ptr %1031, align 8, !tbaa !8
  %1032 = add nuw nsw i64 %.191140, 1
  %exitcond1296.not = icmp eq i64 %1032, %.21185
  br i1 %exitcond1296.not, label %._crit_edge1142, label %.lr.ph1141, !llvm.loop !42

._crit_edge1142:                                  ; preds = %.lr.ph1141, %.preheader1025
  br i1 %614, label %1033, label %1034

1033:                                             ; preds = %._crit_edge1142
  call void @_ZN11alglib_impl8lrbuildsEPNS_9ae_matrixEPNS_9ae_vectorEllPlPNS_11linearmodelEPNS_8lrreportEPNS_8ae_stateE(ptr noundef nonnull %8, ptr noundef nonnull %9, i64 noundef %.21185, i64 noundef %.09191198, ptr noundef nonnull %5, ptr noundef nonnull %19, ptr noundef nonnull %36, ptr noundef %1)
  br label %1035

1034:                                             ; preds = %._crit_edge1142
  call void @_ZN11alglib_impl9lrbuildzsEPNS_9ae_matrixEPNS_9ae_vectorEllPlPNS_11linearmodelEPNS_8lrreportEPNS_8ae_stateE(ptr noundef nonnull %8, ptr noundef nonnull %9, i64 noundef %.21185, i64 noundef %.09191198, ptr noundef nonnull %5, ptr noundef nonnull %19, ptr noundef nonnull %36, ptr noundef %1)
  br label %1035

1035:                                             ; preds = %1034, %1033
  %1036 = load i64, ptr %5, align 8, !tbaa !10
  %.not971 = icmp eq i64 %1036, 1
  br i1 %.not971, label %1037, label %1042

1037:                                             ; preds = %1035
  call void @_ZN11alglib_impl8lrunpackEPNS_11linearmodelEPNS_9ae_vectorEPlPNS_8ae_stateE(ptr noundef nonnull %19, ptr noundef nonnull %11, ptr noundef nonnull %4, ptr noundef %1)
  %1038 = load ptr, ptr %98, align 8, !tbaa !5
  %1039 = load ptr, ptr %602, align 8, !tbaa !5
  %1040 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %.09191198)
  %1041 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %1038, i64 noundef 1, ptr noundef %1039, i64 noundef 1, i64 noundef %1040)
  br label %1042

1042:                                             ; preds = %1035, %1037
  %.sink1338 = phi double [ %1041, %1037 ], [ 0.000000e+00, %1035 ]
  %.8 = phi i8 [ %.71144, %1037 ], [ 1, %1035 ]
  %1043 = load ptr, ptr %97, align 8, !tbaa !5
  %1044 = getelementptr inbounds double, ptr %1043, i64 %.19181143
  store double %.sink1338, ptr %1044, align 8, !tbaa !8
  %1045 = add nuw nsw i64 %.19181143, 1
  %exitcond1297.not = icmp eq i64 %1045, 1000
  br i1 %exitcond1297.not, label %1046, label %.preheader1025, !llvm.loop !43

1046:                                             ; preds = %1042
  call void @_ZL26testlinregunit_calculatemvPN11alglib_impl9ae_vectorElPdS2_S2_S2_PNS_8ae_stateE(ptr noundef nonnull %13, i64 noundef 1000, ptr noundef nonnull %37, ptr noundef nonnull %38, ptr noundef nonnull %39, ptr noundef nonnull %40, ptr noundef %1)
  br i1 %.not9621126, label %._crit_edge1149, label %.lr.ph1148

.lr.ph1148:                                       ; preds = %1046, %.lr.ph1148
  %.201146 = phi i64 [ %1056, %.lr.ph1148 ], [ 0, %1046 ]
  %1047 = load ptr, ptr %98, align 8, !tbaa !5
  %1048 = load ptr, ptr %101, align 8, !tbaa !5
  %1049 = load ptr, ptr %1048, align 8, !tbaa !16
  %1050 = getelementptr inbounds double, ptr %1049, i64 %.201146
  %1051 = load i64, ptr %603, align 8, !tbaa !44
  %1052 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %.09191198)
  %1053 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %1047, i64 noundef 1, ptr noundef %1050, i64 noundef %1051, i64 noundef %1052)
  %1054 = load ptr, ptr %604, align 8, !tbaa !5
  %1055 = getelementptr inbounds double, ptr %1054, i64 %.201146
  store double %1053, ptr %1055, align 8, !tbaa !8
  %1056 = add nuw i64 %.201146, 1
  %exitcond1298.not = icmp eq i64 %.201146, %indvars.iv.in
  br i1 %exitcond1298.not, label %._crit_edge1149, label %.lr.ph1148, !llvm.loop !50

._crit_edge1149:                                  ; preds = %.lr.ph1148, %1046
  %1057 = load ptr, ptr %604, align 8, !tbaa !5
  %1058 = load ptr, ptr %98, align 8, !tbaa !5
  %1059 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %.09191198)
  %1060 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %1057, i64 noundef 1, ptr noundef %1058, i64 noundef 1, i64 noundef %1059)
  %1061 = trunc nuw i8 %.68581180 to i1
  br i1 %1061, label %1070, label %1062

1062:                                             ; preds = %._crit_edge1149
  %1063 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %1060, ptr noundef %1)
  %1064 = load double, ptr %39, align 8, !tbaa !8
  %1065 = fsub double %1063, %1064
  %1066 = load double, ptr %40, align 8, !tbaa !8
  %1067 = fdiv double %1065, %1066
  %1068 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1067, ptr noundef %1)
  %1069 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %1068, double noundef 7.000000e+00)
  br label %1070

1070:                                             ; preds = %1062, %._crit_edge1149
  %1071 = phi i1 [ true, %._crit_edge1149 ], [ %1069, %1062 ]
  %1072 = zext i1 %1071 to i8
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %639, i64 noundef %.pre1320, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %10, i64 noundef %639, ptr noundef %1)
  %.not9651150 = icmp slt i64 %.21185, 2
  br i1 %.not9651150, label %.preheader1030, label %.lr.ph1153

.preheader1030:                                   ; preds = %.lr.ph1153, %1070
  br i1 %.not958.not10911323, label %.lr.ph1170, label %._crit_edge1171

.lr.ph1153:                                       ; preds = %1070, %.lr.ph1153
  %.211151 = phi i64 [ %1077, %.lr.ph1153 ], [ 0, %1070 ]
  %1073 = load ptr, ptr %601, align 8, !tbaa !5
  %1074 = getelementptr inbounds ptr, ptr %1073, i64 %.211151
  %1075 = load ptr, ptr %1074, align 8, !tbaa !16
  %1076 = load ptr, ptr %99, align 8, !tbaa !5
  %1077 = add nuw nsw i64 %.211151, 1
  %1078 = getelementptr inbounds ptr, ptr %1076, i64 %1077
  %1079 = load ptr, ptr %1078, align 8, !tbaa !16
  %1080 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %.09191198)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1075, i64 noundef 1, ptr noundef %1079, i64 noundef 1, i64 noundef %1080)
  %1081 = load ptr, ptr %95, align 8, !tbaa !5
  %1082 = getelementptr inbounds double, ptr %1081, i64 %1077
  %1083 = load double, ptr %1082, align 8, !tbaa !8
  %1084 = load ptr, ptr %605, align 8, !tbaa !5
  %1085 = getelementptr inbounds double, ptr %1084, i64 %.211151
  store double %1083, ptr %1085, align 8, !tbaa !8
  %exitcond1301.not = icmp eq i64 %1077, %indvars.iv1299
  br i1 %exitcond1301.not, label %.preheader1030, label %.lr.ph1153, !llvm.loop !51

.lr.ph1170:                                       ; preds = %.preheader1030, %1202
  %.91169 = phi i8 [ %.10, %1202 ], [ %.8, %.preheader1030 ]
  %.221168 = phi i64 [ %1203, %1202 ], [ 0, %.preheader1030 ]
  %.08991167 = phi double [ %1120, %1202 ], [ 0.000000e+00, %.preheader1030 ]
  %.09001166 = phi double [ %1111, %1202 ], [ 0.000000e+00, %.preheader1030 ]
  %.09011165 = phi double [ %1103, %1202 ], [ 0.000000e+00, %.preheader1030 ]
  %.09021164 = phi double [ %.2904, %1202 ], [ 0.000000e+00, %.preheader1030 ]
  %.09051163 = phi double [ %.2907, %1202 ], [ 0.000000e+00, %.preheader1030 ]
  %.09081162 = phi double [ %.2910, %1202 ], [ 0.000000e+00, %.preheader1030 ]
  %1086 = load ptr, ptr %99, align 8, !tbaa !5
  %1087 = getelementptr inbounds ptr, ptr %1086, i64 %.221168
  %1088 = load ptr, ptr %1087, align 8, !tbaa !16
  %1089 = load ptr, ptr %100, align 8, !tbaa !5
  %1090 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %632)
  %1091 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %1088, i64 noundef 1, ptr noundef %1089, i64 noundef 1, i64 noundef %1090)
  %1092 = load ptr, ptr %100, align 8, !tbaa !5
  %1093 = getelementptr inbounds double, ptr %1092, i64 %.09191198
  %1094 = load double, ptr %1093, align 8, !tbaa !8
  %1095 = fadd double %1091, %1094
  %1096 = load ptr, ptr %99, align 8, !tbaa !5
  %1097 = getelementptr inbounds ptr, ptr %1096, i64 %.221168
  %1098 = load ptr, ptr %1097, align 8, !tbaa !16
  %1099 = getelementptr inbounds double, ptr %1098, i64 %.09191198
  %1100 = load double, ptr %1099, align 8, !tbaa !8
  %1101 = fsub double %1095, %1100
  %1102 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1101, ptr noundef %1)
  %1103 = fadd double %.09011165, %1102
  %1104 = load ptr, ptr %99, align 8, !tbaa !5
  %1105 = getelementptr inbounds ptr, ptr %1104, i64 %.221168
  %1106 = load ptr, ptr %1105, align 8, !tbaa !16
  %1107 = getelementptr inbounds double, ptr %1106, i64 %.09191198
  %1108 = load double, ptr %1107, align 8, !tbaa !8
  %1109 = fsub double %1095, %1108
  %1110 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1109, ptr noundef %1)
  %1111 = fadd double %.09001166, %1110
  %1112 = load ptr, ptr %99, align 8, !tbaa !5
  %1113 = getelementptr inbounds ptr, ptr %1112, i64 %.221168
  %1114 = load ptr, ptr %1113, align 8, !tbaa !16
  %1115 = getelementptr inbounds double, ptr %1114, i64 %.09191198
  %1116 = load double, ptr %1115, align 8, !tbaa !8
  %1117 = fsub double %1095, %1116
  %1118 = fdiv double %1117, %1116
  %1119 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1118, ptr noundef %1)
  %1120 = fadd double %.08991167, %1119
  %1121 = load i64, ptr %606, align 8, !tbaa !52
  %.not967.not1154 = icmp sgt i64 %1121, 0
  br i1 %.not967.not1154, label %.lr.ph1158, label %.critedge1252

.lr.ph1158:                                       ; preds = %.lr.ph1170
  %1122 = load ptr, ptr %607, align 8, !tbaa !5
  %xtraiter1393 = and i64 %1121, 3
  %1123 = icmp ult i64 %1121, 4
  br i1 %1123, label %._crit_edge1159.unr-lcssa, label %.lr.ph1158.new

.lr.ph1158.new:                                   ; preds = %.lr.ph1158
  %unroll_iter1397 = and i64 %1121, 9223372036854775804
  br label %1124

1124:                                             ; preds = %1124, %.lr.ph1158.new
  %.18931156 = phi i64 [ 0, %.lr.ph1158.new ], [ %1143, %1124 ]
  %.08971155 = phi i1 [ true, %.lr.ph1158.new ], [ %spec.select1009.3, %1124 ]
  %niter1398 = phi i64 [ 0, %.lr.ph1158.new ], [ %niter1398.next.3, %1124 ]
  %1125 = getelementptr inbounds i64, ptr %1122, i64 %.18931156
  %1126 = load i64, ptr %1125, align 8, !tbaa !10
  %1127 = icmp ne i64 %1126, %.221168
  %1128 = or disjoint i64 %.18931156, 1
  %1129 = getelementptr inbounds i64, ptr %1122, i64 %1128
  %1130 = load i64, ptr %1129, align 8, !tbaa !10
  %1131 = icmp ne i64 %1130, %.221168
  %1132 = or disjoint i64 %.18931156, 2
  %1133 = getelementptr inbounds i64, ptr %1122, i64 %1132
  %1134 = load i64, ptr %1133, align 8, !tbaa !10
  %1135 = icmp ne i64 %1134, %.221168
  %1136 = or disjoint i64 %.18931156, 3
  %1137 = getelementptr inbounds i64, ptr %1122, i64 %1136
  %1138 = load i64, ptr %1137, align 8, !tbaa !10
  %1139 = icmp ne i64 %1138, %.221168
  %1140 = select i1 %1139, i1 %1135, i1 false
  %1141 = select i1 %1140, i1 %1131, i1 false
  %1142 = select i1 %1141, i1 %1127, i1 false
  %spec.select1009.3 = select i1 %1142, i1 %.08971155, i1 false
  %1143 = add nuw nsw i64 %.18931156, 4
  %niter1398.next.3 = add i64 %niter1398, 4
  %niter1398.ncmp.3 = icmp eq i64 %niter1398.next.3, %unroll_iter1397
  br i1 %niter1398.ncmp.3, label %._crit_edge1159.unr-lcssa, label %1124, !llvm.loop !53

._crit_edge1159.unr-lcssa:                        ; preds = %1124, %.lr.ph1158
  %spec.select1009.lcssa.ph = phi i1 [ poison, %.lr.ph1158 ], [ %spec.select1009.3, %1124 ]
  %.18931156.unr = phi i64 [ 0, %.lr.ph1158 ], [ %1143, %1124 ]
  %.08971155.unr = phi i1 [ true, %.lr.ph1158 ], [ %spec.select1009.3, %1124 ]
  %lcmp.mod1395.not = icmp eq i64 %xtraiter1393, 0
  br i1 %lcmp.mod1395.not, label %._crit_edge1159, label %.epil.preheader1392

.epil.preheader1392:                              ; preds = %._crit_edge1159.unr-lcssa, %.epil.preheader1392
  %.18931156.epil = phi i64 [ %1147, %.epil.preheader1392 ], [ %.18931156.unr, %._crit_edge1159.unr-lcssa ]
  %.08971155.epil = phi i1 [ %spec.select1009.epil, %.epil.preheader1392 ], [ %.08971155.unr, %._crit_edge1159.unr-lcssa ]
  %epil.iter1394 = phi i64 [ %epil.iter1394.next, %.epil.preheader1392 ], [ 0, %._crit_edge1159.unr-lcssa ]
  %1144 = getelementptr inbounds i64, ptr %1122, i64 %.18931156.epil
  %1145 = load i64, ptr %1144, align 8, !tbaa !10
  %1146 = icmp ne i64 %1145, %.221168
  %spec.select1009.epil = select i1 %1146, i1 %.08971155.epil, i1 false
  %1147 = add nuw nsw i64 %.18931156.epil, 1
  %epil.iter1394.next = add i64 %epil.iter1394, 1
  %epil.iter1394.cmp.not = icmp eq i64 %epil.iter1394.next, %xtraiter1393
  br i1 %epil.iter1394.cmp.not, label %._crit_edge1159, label %.epil.preheader1392, !llvm.loop !54

._crit_edge1159:                                  ; preds = %.epil.preheader1392, %._crit_edge1159.unr-lcssa
  %spec.select1009.lcssa = phi i1 [ %spec.select1009.lcssa.ph, %._crit_edge1159.unr-lcssa ], [ %spec.select1009.epil, %.epil.preheader1392 ]
  br i1 %spec.select1009.lcssa, label %.critedge1252, label %1188

.critedge1252:                                    ; preds = %.lr.ph1170, %._crit_edge1159
  br i1 %614, label %1148, label %1149

1148:                                             ; preds = %.critedge1252
  call void @_ZN11alglib_impl8lrbuildsEPNS_9ae_matrixEPNS_9ae_vectorEllPlPNS_11linearmodelEPNS_8lrreportEPNS_8ae_stateE(ptr noundef nonnull %8, ptr noundef nonnull %10, i64 noundef %639, i64 noundef %.09191198, ptr noundef nonnull %6, ptr noundef nonnull %19, ptr noundef nonnull %36, ptr noundef %1)
  br label %1150

1149:                                             ; preds = %.critedge1252
  call void @_ZN11alglib_impl9lrbuildzsEPNS_9ae_matrixEPNS_9ae_vectorEllPlPNS_11linearmodelEPNS_8lrreportEPNS_8ae_stateE(ptr noundef nonnull %8, ptr noundef nonnull %10, i64 noundef %639, i64 noundef %.09191198, ptr noundef nonnull %6, ptr noundef nonnull %19, ptr noundef nonnull %36, ptr noundef %1)
  br label %1150

1150:                                             ; preds = %1149, %1148
  %1151 = load i64, ptr %6, align 8, !tbaa !10
  %.not968 = icmp eq i64 %1151, 1
  br i1 %.not968, label %1152, label %1202

1152:                                             ; preds = %1150
  call void @_ZN11alglib_impl8lrunpackEPNS_11linearmodelEPNS_9ae_vectorEPlPNS_8ae_stateE(ptr noundef nonnull %19, ptr noundef nonnull %11, ptr noundef nonnull %4, ptr noundef %1)
  %1153 = load ptr, ptr %99, align 8, !tbaa !5
  %1154 = getelementptr inbounds ptr, ptr %1153, i64 %.221168
  %1155 = load ptr, ptr %1154, align 8, !tbaa !16
  %1156 = load ptr, ptr %602, align 8, !tbaa !5
  %1157 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %632)
  %1158 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %1155, i64 noundef 1, ptr noundef %1156, i64 noundef 1, i64 noundef %1157)
  %1159 = load ptr, ptr %602, align 8, !tbaa !5
  %1160 = getelementptr inbounds double, ptr %1159, i64 %.09191198
  %1161 = load double, ptr %1160, align 8, !tbaa !8
  %1162 = fadd double %1158, %1161
  %1163 = load ptr, ptr %99, align 8, !tbaa !5
  %1164 = getelementptr inbounds ptr, ptr %1163, i64 %.221168
  %1165 = load ptr, ptr %1164, align 8, !tbaa !16
  %1166 = getelementptr inbounds double, ptr %1165, i64 %.09191198
  %1167 = load double, ptr %1166, align 8, !tbaa !8
  %1168 = fsub double %1162, %1167
  %1169 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1168, ptr noundef %1)
  %1170 = fadd double %.09081162, %1169
  %1171 = load ptr, ptr %99, align 8, !tbaa !5
  %1172 = getelementptr inbounds ptr, ptr %1171, i64 %.221168
  %1173 = load ptr, ptr %1172, align 8, !tbaa !16
  %1174 = getelementptr inbounds double, ptr %1173, i64 %.09191198
  %1175 = load double, ptr %1174, align 8, !tbaa !8
  %1176 = fsub double %1162, %1175
  %1177 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1176, ptr noundef %1)
  %1178 = fadd double %.09051163, %1177
  %1179 = load ptr, ptr %99, align 8, !tbaa !5
  %1180 = getelementptr inbounds ptr, ptr %1179, i64 %.221168
  %1181 = load ptr, ptr %1180, align 8, !tbaa !16
  %1182 = getelementptr inbounds double, ptr %1181, i64 %.09191198
  %1183 = load double, ptr %1182, align 8, !tbaa !8
  %1184 = fsub double %1162, %1183
  %1185 = fdiv double %1184, %1183
  %1186 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1185, ptr noundef %1)
  %1187 = fadd double %.09021164, %1186
  br label %1188

1188:                                             ; preds = %1152, %._crit_edge1159
  %.1909 = phi double [ %1170, %1152 ], [ %.09081162, %._crit_edge1159 ]
  %.1906 = phi double [ %1178, %1152 ], [ %.09051163, %._crit_edge1159 ]
  %.1903 = phi double [ %1187, %1152 ], [ %.09021164, %._crit_edge1159 ]
  %.not969 = icmp eq i64 %.221168, %639
  br i1 %.not969, label %1202, label %1189

1189:                                             ; preds = %1188
  %1190 = load ptr, ptr %601, align 8, !tbaa !5
  %1191 = getelementptr inbounds ptr, ptr %1190, i64 %.221168
  %1192 = load ptr, ptr %1191, align 8, !tbaa !16
  %1193 = load ptr, ptr %99, align 8, !tbaa !5
  %1194 = getelementptr inbounds ptr, ptr %1193, i64 %.221168
  %1195 = load ptr, ptr %1194, align 8, !tbaa !16
  %1196 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %.09191198)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1192, i64 noundef 1, ptr noundef %1195, i64 noundef 1, i64 noundef %1196)
  %1197 = load ptr, ptr %95, align 8, !tbaa !5
  %1198 = getelementptr inbounds double, ptr %1197, i64 %.221168
  %1199 = load double, ptr %1198, align 8, !tbaa !8
  %1200 = load ptr, ptr %605, align 8, !tbaa !5
  %1201 = getelementptr inbounds double, ptr %1200, i64 %.221168
  store double %1199, ptr %1201, align 8, !tbaa !8
  br label %1202

1202:                                             ; preds = %1150, %1188, %1189
  %.2910 = phi double [ %.1909, %1189 ], [ %.1909, %1188 ], [ %.09081162, %1150 ]
  %.2907 = phi double [ %.1906, %1189 ], [ %.1906, %1188 ], [ %.09051163, %1150 ]
  %.2904 = phi double [ %.1903, %1189 ], [ %.1903, %1188 ], [ %.09021164, %1150 ]
  %.10 = phi i8 [ %.91169, %1189 ], [ %.91169, %1188 ], [ 1, %1150 ]
  %1203 = add nuw nsw i64 %.221168, 1
  %exitcond1303.not = icmp eq i64 %1203, %.21185
  br i1 %exitcond1303.not, label %._crit_edge1171, label %.lr.ph1170, !llvm.loop !55

._crit_edge1171:                                  ; preds = %1202, %.preheader1030
  %.0908.lcssa = phi double [ 0.000000e+00, %.preheader1030 ], [ %.2910, %1202 ]
  %.0905.lcssa = phi double [ 0.000000e+00, %.preheader1030 ], [ %.2907, %1202 ]
  %.0902.lcssa = phi double [ 0.000000e+00, %.preheader1030 ], [ %.2904, %1202 ]
  %.0901.lcssa = phi double [ 0.000000e+00, %.preheader1030 ], [ %1103, %1202 ]
  %.0900.lcssa = phi double [ 0.000000e+00, %.preheader1030 ], [ %1111, %1202 ]
  %.0899.lcssa = phi double [ 0.000000e+00, %.preheader1030 ], [ %1120, %1202 ]
  %.9.lcssa = phi i8 [ %.8, %.preheader1030 ], [ %.10, %1202 ]
  %1204 = load i64, ptr %606, align 8, !tbaa !52
  %1205 = sub nsw i64 %.21185, %1204
  %1206 = sitofp i64 %1205 to double
  %1207 = fdiv double %.0908.lcssa, %1206
  %1208 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %1207, ptr noundef %1)
  %1209 = load i64, ptr %606, align 8, !tbaa !52
  %1210 = sub nsw i64 %.21185, %1209
  %1211 = sitofp i64 %1210 to double
  %1212 = fdiv double %.0905.lcssa, %1211
  %1213 = fdiv double %.0902.lcssa, %1211
  %1214 = sitofp i64 %.21185 to double
  %1215 = fdiv double %.0901.lcssa, %1214
  %1216 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %1215, ptr noundef %1)
  %1217 = fdiv double %.0900.lcssa, %1214
  %1218 = fdiv double %.0899.lcssa, %1214
  %1219 = trunc nuw i8 %.38411182 to i1
  br i1 %1219, label %.critedge1015, label %1220

1220:                                             ; preds = %._crit_edge1171
  %1221 = load double, ptr %608, align 8, !tbaa !56
  %1222 = fdiv double %1221, %1208
  %1223 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef %1222, ptr noundef %1)
  %1224 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1223, ptr noundef %1)
  %1225 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 1.000010e+00, ptr noundef %1)
  %1226 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1224, double noundef %1225)
  br i1 %1226, label %.critedge1015, label %.critedge1011

.critedge1011:                                    ; preds = %1220
  %1227 = load double, ptr %609, align 8, !tbaa !57
  %1228 = fdiv double %1227, %1212
  %1229 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef %1228, ptr noundef %1)
  %1230 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1229, ptr noundef %1)
  %1231 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 1.000010e+00, ptr noundef %1)
  %1232 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1230, double noundef %1231)
  br i1 %1232, label %.critedge1015, label %.critedge1012

.critedge1012:                                    ; preds = %.critedge1011
  %1233 = load double, ptr %610, align 8, !tbaa !58
  %1234 = fdiv double %1233, %1213
  %1235 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef %1234, ptr noundef %1)
  %1236 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1235, ptr noundef %1)
  %1237 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 1.000010e+00, ptr noundef %1)
  %1238 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1236, double noundef %1237)
  br i1 %1238, label %.critedge1015, label %.critedge1013

.critedge1013:                                    ; preds = %.critedge1012
  %1239 = load double, ptr %611, align 8, !tbaa !59
  %1240 = fdiv double %1239, %1216
  %1241 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef %1240, ptr noundef %1)
  %1242 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1241, ptr noundef %1)
  %1243 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 1.000010e+00, ptr noundef %1)
  %1244 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1242, double noundef %1243)
  br i1 %1244, label %.critedge1015, label %.critedge1014

.critedge1014:                                    ; preds = %.critedge1013
  %1245 = load double, ptr %612, align 8, !tbaa !60
  %1246 = fdiv double %1245, %1217
  %1247 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef %1246, ptr noundef %1)
  %1248 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1247, ptr noundef %1)
  %1249 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 1.000010e+00, ptr noundef %1)
  %1250 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1248, double noundef %1249)
  br i1 %1250, label %.critedge1015, label %1251

1251:                                             ; preds = %.critedge1014
  %1252 = load double, ptr %613, align 8, !tbaa !61
  %1253 = fdiv double %1252, %1218
  %1254 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef %1253, ptr noundef %1)
  %1255 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1254, ptr noundef %1)
  %1256 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 1.000010e+00, ptr noundef %1)
  %1257 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1255, double noundef %1256)
  br label %.critedge1015

.critedge1015:                                    ; preds = %.critedge1013, %.critedge1011, %._crit_edge1171, %1220, %.critedge1012, %1251, %.critedge1014
  %1258 = phi i1 [ true, %.critedge1014 ], [ %1257, %1251 ], [ true, %.critedge1012 ], [ true, %1220 ], [ true, %._crit_edge1171 ], [ true, %.critedge1011 ], [ true, %.critedge1013 ]
  %1259 = zext i1 %1258 to i8
  br label %1260

1260:                                             ; preds = %825, %.critedge1015
  %.7859 = phi i8 [ %1072, %.critedge1015 ], [ %.68581180, %825 ]
  %.8851 = phi i8 [ %.6849.lcssa, %.critedge1015 ], [ %.58481181, %825 ]
  %.4842 = phi i8 [ %1259, %.critedge1015 ], [ %.38411182, %825 ]
  %.4832 = phi i8 [ %869, %.critedge1015 ], [ %.38311183, %825 ]
  %.11 = phi i8 [ %.9.lcssa, %.critedge1015 ], [ 1, %825 ]
  %1261 = add i64 %.21185, 1
  %indvars.iv.next1300 = add i64 %indvars.iv1299, 1
  %exitcond1304.not = icmp eq i64 %.21185, %spec.select1007
  br i1 %exitcond1304.not, label %._crit_edge1189, label %638, !llvm.loop !62

._crit_edge1189:                                  ; preds = %1260, %630
  %.6858.lcssa = phi i8 [ %.58571199, %630 ], [ %.7859, %1260 ]
  %.5848.lcssa = phi i8 [ %.48471200, %630 ], [ %.8851, %1260 ]
  %.3841.lcssa = phi i8 [ %.28401201, %630 ], [ %.4842, %1260 ]
  %.3831.lcssa = phi i8 [ %.28301202, %630 ], [ %.4832, %1260 ]
  %.6.lcssa = phi i8 [ %.51203, %630 ], [ %.11, %1260 ]
  %exitcond1305.not = icmp eq i64 %.09191198, %.4931
  %indvar.next1376 = add i64 %indvar1375, 1
  br i1 %exitcond1305.not, label %._crit_edge1206, label %.lr.ph1205, !llvm.loop !63

._crit_edge1206:                                  ; preds = %._crit_edge1189, %616
  %.2940.lcssa = phi i64 [ %.19391214, %616 ], [ %spec.select1006, %._crit_edge1189 ]
  %.2934.lcssa = phi i64 [ %.19331215, %616 ], [ %spec.select1007, %._crit_edge1189 ]
  %.5857.lcssa = phi i8 [ %.48561219, %616 ], [ %.6858.lcssa, %._crit_edge1189 ]
  %.4847.lcssa = phi i8 [ %.38461220, %616 ], [ %.5848.lcssa, %._crit_edge1189 ]
  %.2840.lcssa = phi i8 [ %.18391221, %616 ], [ %.3841.lcssa, %._crit_edge1189 ]
  %.2830.lcssa = phi i8 [ %.18291222, %616 ], [ %.3831.lcssa, %._crit_edge1189 ]
  %.5.lcssa = phi i8 [ %.41223, %616 ], [ %.6.lcssa, %._crit_edge1189 ]
  %1262 = add nuw nsw i64 %.09201218, 1
  %exitcond1306.not = icmp eq i64 %1262, 4
  br i1 %exitcond1306.not, label %1263, label %616, !llvm.loop !64

1263:                                             ; preds = %._crit_edge1206
  br i1 %614, label %.preheader1036, label %.preheader1023, !llvm.loop !65

.preheader1023:                                   ; preds = %1263, %1402
  %.58331237 = phi i8 [ %.7835, %1402 ], [ %.2830.lcssa, %1263 ]
  %.18951236 = phi i64 [ %1403, %1402 ], [ 1, %1263 ]
  br label %1267

.preheader1022:                                   ; preds = %1402
  %1264 = getelementptr inbounds i8, ptr %21, i64 56
  %1265 = getelementptr inbounds i8, ptr %22, i64 56
  %1266 = trunc nuw i8 %.7835 to i1
  br label %1404

1267:                                             ; preds = %.preheader1023, %1267
  %1268 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %1269 = fadd double %1268, 1.000000e-01
  %1270 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %1271 = call double @llvm.fmuladd.f64(double %1270, double 2.000000e+00, double -1.000000e+00)
  %1272 = fsub double %1269, %1271
  %1273 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1272, ptr noundef %1)
  %1274 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %1273, double noundef 5.000000e-02)
  br i1 %1274, label %1267, label %1275, !llvm.loop !66

1275:                                             ; preds = %1267
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef 6, i64 noundef 2, ptr noundef %1)
  %1276 = fsub double %1271, %1269
  %1277 = fadd double %1269, %1271
  %1278 = load ptr, ptr %99, align 8, !tbaa !5
  %1279 = load ptr, ptr %1278, align 8, !tbaa !16
  store double 0.000000e+00, ptr %1279, align 8, !tbaa !8
  %1280 = load ptr, ptr %99, align 8, !tbaa !5
  %1281 = getelementptr inbounds i8, ptr %1280, i64 8
  %1282 = load ptr, ptr %1281, align 8, !tbaa !16
  store double 0.000000e+00, ptr %1282, align 8, !tbaa !8
  %1283 = load ptr, ptr %99, align 8, !tbaa !5
  %1284 = getelementptr inbounds i8, ptr %1283, i64 16
  %1285 = load ptr, ptr %1284, align 8, !tbaa !16
  store double 0.000000e+00, ptr %1285, align 8, !tbaa !8
  %1286 = load ptr, ptr %99, align 8, !tbaa !5
  %1287 = load ptr, ptr %1286, align 8, !tbaa !16
  %1288 = getelementptr inbounds i8, ptr %1287, i64 8
  store double %1276, ptr %1288, align 8, !tbaa !8
  %1289 = load ptr, ptr %99, align 8, !tbaa !5
  %1290 = getelementptr inbounds i8, ptr %1289, i64 8
  %1291 = load ptr, ptr %1290, align 8, !tbaa !16
  %1292 = getelementptr inbounds i8, ptr %1291, i64 8
  store double %1271, ptr %1292, align 8, !tbaa !8
  %1293 = load ptr, ptr %99, align 8, !tbaa !5
  %1294 = getelementptr inbounds i8, ptr %1293, i64 16
  %1295 = load ptr, ptr %1294, align 8, !tbaa !16
  %1296 = getelementptr inbounds i8, ptr %1295, i64 8
  store double %1277, ptr %1296, align 8, !tbaa !8
  %1297 = load ptr, ptr %99, align 8, !tbaa !5
  %1298 = getelementptr inbounds i8, ptr %1297, i64 24
  %1299 = load ptr, ptr %1298, align 8, !tbaa !16
  store double 1.000000e+00, ptr %1299, align 8, !tbaa !8
  %1300 = load ptr, ptr %99, align 8, !tbaa !5
  %1301 = getelementptr inbounds i8, ptr %1300, i64 32
  %1302 = load ptr, ptr %1301, align 8, !tbaa !16
  store double 1.000000e+00, ptr %1302, align 8, !tbaa !8
  %1303 = load ptr, ptr %99, align 8, !tbaa !5
  %1304 = getelementptr inbounds i8, ptr %1303, i64 40
  %1305 = load ptr, ptr %1304, align 8, !tbaa !16
  store double 1.000000e+00, ptr %1305, align 8, !tbaa !8
  %1306 = load ptr, ptr %99, align 8, !tbaa !5
  %1307 = getelementptr inbounds i8, ptr %1306, i64 24
  %1308 = load ptr, ptr %1307, align 8, !tbaa !16
  %1309 = getelementptr inbounds i8, ptr %1308, i64 8
  store double %1276, ptr %1309, align 8, !tbaa !8
  %1310 = load ptr, ptr %99, align 8, !tbaa !5
  %1311 = getelementptr inbounds i8, ptr %1310, i64 32
  %1312 = load ptr, ptr %1311, align 8, !tbaa !16
  %1313 = getelementptr inbounds i8, ptr %1312, i64 8
  store double %1271, ptr %1313, align 8, !tbaa !8
  %1314 = load ptr, ptr %99, align 8, !tbaa !5
  %1315 = getelementptr inbounds i8, ptr %1314, i64 40
  %1316 = load ptr, ptr %1315, align 8, !tbaa !16
  %1317 = getelementptr inbounds i8, ptr %1316, i64 8
  store double %1277, ptr %1317, align 8, !tbaa !8
  call void @_ZN11alglib_impl7lrbuildEPNS_9ae_matrixEllPlPNS_11linearmodelEPNS_8lrreportEPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef 6, i64 noundef 1, ptr noundef nonnull %5, ptr noundef nonnull %19, ptr noundef nonnull %35, ptr noundef %1)
  %1318 = load i64, ptr %5, align 8, !tbaa !10
  %1319 = icmp eq i64 %1318, 1
  br i1 %1319, label %1320, label %1349

1320:                                             ; preds = %1275
  call void @_ZN11alglib_impl8lrunpackEPNS_11linearmodelEPNS_9ae_vectorEPlPNS_8ae_stateE(ptr noundef nonnull %19, ptr noundef nonnull %17, ptr noundef nonnull %4, ptr noundef %1)
  %1321 = call noundef double @_ZN11alglib_impl10lrrmserrorEPNS_11linearmodelEPNS_9ae_matrixElPNS_8ae_stateE(ptr noundef nonnull %19, ptr noundef nonnull %7, i64 noundef 6, ptr noundef %1)
  %1322 = trunc nuw i8 %.58331237 to i1
  br i1 %1322, label %.thread1018, label %1324

.thread1018:                                      ; preds = %1320
  %1323 = call noundef double @_ZN11alglib_impl10lravgerrorEPNS_11linearmodelEPNS_9ae_matrixElPNS_8ae_stateE(ptr noundef nonnull %19, ptr noundef nonnull %7, i64 noundef 6, ptr noundef %1)
  br label %1335

1324:                                             ; preds = %1320
  %1325 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 0x3FE5555555555555, ptr noundef %1)
  %1326 = fneg double %1269
  %1327 = call double @llvm.fmuladd.f64(double %1326, double %1325, double %1321)
  %1328 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1327, ptr noundef %1)
  %1329 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1328, double noundef 5.000000e-10)
  %1330 = call noundef double @_ZN11alglib_impl10lravgerrorEPNS_11linearmodelEPNS_9ae_matrixElPNS_8ae_stateE(ptr noundef nonnull %19, ptr noundef nonnull %7, i64 noundef 6, ptr noundef %1)
  br i1 %1329, label %1335, label %1331

1331:                                             ; preds = %1324
  %1332 = call double @llvm.fmuladd.f64(double %1326, double 0x3FE5555555555555, double %1330)
  %1333 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1332, ptr noundef %1)
  %1334 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1333, double noundef 5.000000e-10)
  br label %1335

1335:                                             ; preds = %.thread1018, %1331, %1324
  %1336 = phi i1 [ true, %1324 ], [ %1334, %1331 ], [ true, %.thread1018 ]
  %1337 = call noundef double @_ZN11alglib_impl13lravgrelerrorEPNS_11linearmodelEPNS_9ae_matrixElPNS_8ae_stateE(ptr noundef nonnull %19, ptr noundef nonnull %7, i64 noundef 6, ptr noundef %1)
  %1338 = fdiv double %1269, %1276
  %1339 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1338, ptr noundef %1)
  %1340 = fdiv double %1269, %1277
  %1341 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1340, ptr noundef %1)
  br i1 %1336, label %1349, label %1342

1342:                                             ; preds = %1335
  %1343 = fadd double %1339, %1341
  %1344 = fdiv double %1343, 3.000000e+00
  %1345 = fsub double %1337, %1344
  %1346 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1345, ptr noundef %1)
  %1347 = fmul double %1344, 5.000000e-10
  %1348 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1346, double noundef %1347)
  br label %1349

1349:                                             ; preds = %1275, %1335, %1342
  %.6834 = phi i1 [ true, %1335 ], [ %1348, %1342 ], [ true, %1275 ]
  %1350 = fneg double %1269
  %1351 = load ptr, ptr %99, align 8, !tbaa !5
  %1352 = load ptr, ptr %1351, align 8, !tbaa !16
  store double 0.000000e+00, ptr %1352, align 8, !tbaa !8
  %1353 = load ptr, ptr %99, align 8, !tbaa !5
  %1354 = getelementptr inbounds i8, ptr %1353, i64 8
  %1355 = load ptr, ptr %1354, align 8, !tbaa !16
  store double 0.000000e+00, ptr %1355, align 8, !tbaa !8
  %1356 = load ptr, ptr %99, align 8, !tbaa !5
  %1357 = getelementptr inbounds i8, ptr %1356, i64 16
  %1358 = load ptr, ptr %1357, align 8, !tbaa !16
  store double 0.000000e+00, ptr %1358, align 8, !tbaa !8
  %1359 = load ptr, ptr %99, align 8, !tbaa !5
  %1360 = load ptr, ptr %1359, align 8, !tbaa !16
  %1361 = getelementptr inbounds i8, ptr %1360, i64 8
  store double %1350, ptr %1361, align 8, !tbaa !8
  %1362 = load ptr, ptr %99, align 8, !tbaa !5
  %1363 = getelementptr inbounds i8, ptr %1362, i64 8
  %1364 = load ptr, ptr %1363, align 8, !tbaa !16
  %1365 = getelementptr inbounds i8, ptr %1364, i64 8
  store double 0.000000e+00, ptr %1365, align 8, !tbaa !8
  %1366 = load ptr, ptr %99, align 8, !tbaa !5
  %1367 = getelementptr inbounds i8, ptr %1366, i64 16
  %1368 = load ptr, ptr %1367, align 8, !tbaa !16
  %1369 = getelementptr inbounds i8, ptr %1368, i64 8
  store double %1269, ptr %1369, align 8, !tbaa !8
  %1370 = load ptr, ptr %99, align 8, !tbaa !5
  %1371 = getelementptr inbounds i8, ptr %1370, i64 24
  %1372 = load ptr, ptr %1371, align 8, !tbaa !16
  store double 1.000000e+00, ptr %1372, align 8, !tbaa !8
  %1373 = load ptr, ptr %99, align 8, !tbaa !5
  %1374 = getelementptr inbounds i8, ptr %1373, i64 32
  %1375 = load ptr, ptr %1374, align 8, !tbaa !16
  store double 1.000000e+00, ptr %1375, align 8, !tbaa !8
  %1376 = load ptr, ptr %99, align 8, !tbaa !5
  %1377 = getelementptr inbounds i8, ptr %1376, i64 40
  %1378 = load ptr, ptr %1377, align 8, !tbaa !16
  store double 1.000000e+00, ptr %1378, align 8, !tbaa !8
  %1379 = load ptr, ptr %99, align 8, !tbaa !5
  %1380 = getelementptr inbounds i8, ptr %1379, i64 24
  %1381 = load ptr, ptr %1380, align 8, !tbaa !16
  %1382 = getelementptr inbounds i8, ptr %1381, i64 8
  store double %1350, ptr %1382, align 8, !tbaa !8
  %1383 = load ptr, ptr %99, align 8, !tbaa !5
  %1384 = getelementptr inbounds i8, ptr %1383, i64 32
  %1385 = load ptr, ptr %1384, align 8, !tbaa !16
  %1386 = getelementptr inbounds i8, ptr %1385, i64 8
  store double 0.000000e+00, ptr %1386, align 8, !tbaa !8
  %1387 = load ptr, ptr %99, align 8, !tbaa !5
  %1388 = getelementptr inbounds i8, ptr %1387, i64 40
  %1389 = load ptr, ptr %1388, align 8, !tbaa !16
  %1390 = getelementptr inbounds i8, ptr %1389, i64 8
  store double %1269, ptr %1390, align 8, !tbaa !8
  call void @_ZN11alglib_impl7lrbuildEPNS_9ae_matrixEllPlPNS_11linearmodelEPNS_8lrreportEPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef 6, i64 noundef 1, ptr noundef nonnull %5, ptr noundef nonnull %19, ptr noundef nonnull %35, ptr noundef %1)
  %1391 = load i64, ptr %5, align 8, !tbaa !10
  %1392 = icmp eq i64 %1391, 1
  br i1 %1392, label %1393, label %1402

1393:                                             ; preds = %1349
  call void @_ZN11alglib_impl8lrunpackEPNS_11linearmodelEPNS_9ae_vectorEPlPNS_8ae_stateE(ptr noundef nonnull %19, ptr noundef nonnull %17, ptr noundef nonnull %4, ptr noundef %1)
  %1394 = call noundef double @_ZN11alglib_impl13lravgrelerrorEPNS_11linearmodelEPNS_9ae_matrixElPNS_8ae_stateE(ptr noundef nonnull %19, ptr noundef nonnull %7, i64 noundef 6, ptr noundef %1)
  br i1 %.6834, label %1399, label %1395

1395:                                             ; preds = %1393
  %1396 = fadd double %1394, -1.000000e+00
  %1397 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1396, ptr noundef %1)
  %1398 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1397, double noundef 5.000000e-10)
  br label %1399

1399:                                             ; preds = %1395, %1393
  %1400 = phi i1 [ true, %1393 ], [ %1398, %1395 ]
  %1401 = zext i1 %1400 to i8
  br label %1402

1402:                                             ; preds = %1349, %1399
  %.7835 = phi i8 [ %1401, %1399 ], [ 1, %1349 ]
  %1403 = add nuw nsw i64 %.18951236, 1
  %exitcond1307.not = icmp eq i64 %1403, 51
  br i1 %exitcond1307.not, label %.preheader1022, label %.preheader1023, !llvm.loop !67

1404:                                             ; preds = %.preheader1022, %._crit_edge1249
  %.88361251 = phi i1 [ %1266, %.preheader1022 ], [ %1437, %._crit_edge1249 ]
  %.28961250 = phi i64 [ 1, %.preheader1022 ], [ %1438, %._crit_edge1249 ]
  %1405 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 5, ptr noundef %1)
  %1406 = add i64 %1405, 1
  %1407 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 10, ptr noundef %1)
  %1408 = add nsw i64 %1407, 10
  %1409 = add i64 %1405, 2
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %1408, i64 noundef %1409, ptr noundef %1)
  %.not9481242 = icmp slt i64 %1407, -9
  %.not9501238 = icmp slt i64 %1405, -1
  %or.cond1341 = or i1 %.not9481242, %.not9501238
  br i1 %or.cond1341, label %._crit_edge1244, label %.preheader.preheader

.preheader.preheader:                             ; preds = %1404
  %1410 = add i64 %1407, 9
  %smax1309 = call i64 @llvm.smax.i64(i64 %1410, i64 0)
  br label %.preheader

.preheader:                                       ; preds = %.preheader.preheader, %._crit_edge1241
  %.251243 = phi i64 [ %1419, %._crit_edge1241 ], [ 0, %.preheader.preheader ]
  br label %1411

1411:                                             ; preds = %.preheader, %1411
  %.48911239 = phi i64 [ 0, %.preheader ], [ %1418, %1411 ]
  %1412 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %1413 = call double @llvm.fmuladd.f64(double %1412, double 2.000000e+00, double -1.000000e+00)
  %1414 = load ptr, ptr %99, align 8, !tbaa !5
  %1415 = getelementptr inbounds ptr, ptr %1414, i64 %.251243
  %1416 = load ptr, ptr %1415, align 8, !tbaa !16
  %1417 = getelementptr inbounds double, ptr %1416, i64 %.48911239
  store double %1413, ptr %1417, align 8, !tbaa !8
  %1418 = add nuw i64 %.48911239, 1
  %exitcond1308 = icmp eq i64 %1418, %1409
  br i1 %exitcond1308, label %._crit_edge1241, label %1411, !llvm.loop !68

._crit_edge1241:                                  ; preds = %1411
  %1419 = add nuw i64 %.251243, 1
  %exitcond1310.not = icmp eq i64 %.251243, %smax1309
  br i1 %exitcond1310.not, label %._crit_edge1244, label %.preheader, !llvm.loop !69

._crit_edge1244:                                  ; preds = %._crit_edge1241, %1404
  call void @_ZN11alglib_impl7lrbuildEPNS_9ae_matrixEllPlPNS_11linearmodelEPNS_8lrreportEPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %1408, i64 noundef %1406, ptr noundef nonnull %5, ptr noundef nonnull %18, ptr noundef nonnull %35, ptr noundef %1)
  %1420 = load i64, ptr %5, align 8, !tbaa !10
  %1421 = icmp slt i64 %1420, 0
  br i1 %1421, label %1439, label %1422

1422:                                             ; preds = %._crit_edge1244
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %21, i64 noundef %1406, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %22, i64 noundef %1406, ptr noundef %1)
  call void @_ZL22testlinregunit_unsetlrPN11alglib_impl11linearmodelEPNS_8ae_stateE(ptr noundef nonnull %19, ptr noundef %1)
  call void @_ZN11alglib_impl6lrcopyEPNS_11linearmodelES1_PNS_8ae_stateE(ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef %1)
  %.not9491245 = icmp slt i64 %1405, 0
  br i1 %.not9491245, label %._crit_edge1249, label %.lr.ph1248

.lr.ph1248:                                       ; preds = %1422, %.lr.ph1248
  %.261246 = phi i64 [ %1432, %.lr.ph1248 ], [ 0, %1422 ]
  %1423 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %1424 = call double @llvm.fmuladd.f64(double %1423, double 2.000000e+00, double -1.000000e+00)
  %1425 = load ptr, ptr %1264, align 8, !tbaa !5
  %1426 = getelementptr inbounds double, ptr %1425, i64 %.261246
  store double %1424, ptr %1426, align 8, !tbaa !8
  %1427 = load ptr, ptr %1264, align 8, !tbaa !5
  %1428 = getelementptr inbounds double, ptr %1427, i64 %.261246
  %1429 = load double, ptr %1428, align 8, !tbaa !8
  %1430 = load ptr, ptr %1265, align 8, !tbaa !5
  %1431 = getelementptr inbounds double, ptr %1430, i64 %.261246
  store double %1429, ptr %1431, align 8, !tbaa !8
  %1432 = add nuw i64 %.261246, 1
  %exitcond1311.not = icmp eq i64 %.261246, %1405
  br i1 %exitcond1311.not, label %._crit_edge1249, label %.lr.ph1248, !llvm.loop !70

._crit_edge1249:                                  ; preds = %.lr.ph1248, %1422
  %1433 = call noundef double @_ZN11alglib_impl9lrprocessEPNS_11linearmodelEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %18, ptr noundef nonnull %21, ptr noundef %1)
  %1434 = call noundef double @_ZN11alglib_impl9lrprocessEPNS_11linearmodelEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %19, ptr noundef nonnull %22, ptr noundef %1)
  %1435 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1433, double noundef %1434)
  %1436 = xor i1 %1435, true
  %1437 = or i1 %.88361251, %1436
  %1438 = add nuw nsw i64 %.28961250, 1
  %exitcond1312.not = icmp eq i64 %1438, 11
  br i1 %exitcond1312.not, label %1439, label %1404, !llvm.loop !71

1439:                                             ; preds = %._crit_edge1244, %._crit_edge1249
  %.9837 = phi i1 [ %1437, %._crit_edge1249 ], [ true, %._crit_edge1244 ]
  %1440 = trunc nuw i8 %.7867 to i1
  br i1 %1440, label %1451, label %1441

1441:                                             ; preds = %1439
  %1442 = trunc nuw i8 %.6874 to i1
  br i1 %1442, label %1451, label %1443

1443:                                             ; preds = %1441
  %1444 = trunc nuw i8 %.4847.lcssa to i1
  br i1 %1444, label %1451, label %1445

1445:                                             ; preds = %1443
  %1446 = trunc nuw i8 %.5857.lcssa to i1
  br i1 %1446, label %1451, label %1447

1447:                                             ; preds = %1445
  %1448 = trunc nuw i8 %.2840.lcssa to i1
  br i1 %1448, label %1451, label %1449

1449:                                             ; preds = %1447
  %1450 = trunc nuw i8 %.5.lcssa to i1
  %spec.select1016 = select i1 %.9837, i1 true, i1 %1450
  br label %1451

1451:                                             ; preds = %1449, %1447, %1445, %1443, %1441, %1439
  %1452 = phi i1 [ true, %1447 ], [ true, %1445 ], [ true, %1443 ], [ true, %1441 ], [ true, %1439 ], [ %spec.select1016, %1449 ]
  br i1 %0, label %1491, label %1453

1453:                                             ; preds = %1451
  %1454 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.533)
  %1455 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.534)
  %.str.7..str.6 = select i1 %1440, ptr @.str.7, ptr @.str.6
  %1456 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.7..str.6)
  %1457 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.535)
  %1458 = trunc nuw i8 %.6874 to i1
  %.str.7.sink1342 = select i1 %1458, ptr @.str.7, ptr @.str.6
  %1459 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.7.sink1342)
  %1460 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.536)
  %1461 = trunc nuw i8 %.4847.lcssa to i1
  br i1 %1461, label %1469, label %1462

1462:                                             ; preds = %1453
  %1463 = trunc nuw i8 %.5857.lcssa to i1
  %1464 = trunc nuw i8 %.2840.lcssa to i1
  %1465 = select i1 %1463, i1 true, i1 %1464
  %or.cond1347 = select i1 %1465, i1 true, i1 %.9837
  br i1 %or.cond1347, label %1468, label %1466

1466:                                             ; preds = %1462
  %1467 = trunc nuw i8 %.5.lcssa to i1
  br i1 %1467, label %1468, label %.thread1019

1468:                                             ; preds = %1462, %1466
  br label %.thread1019

1469:                                             ; preds = %1453
  %1470 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.7)
  %1471 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.537)
  %.pre1319 = trunc nuw i8 %.5857.lcssa to i1
  %1472 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.7)
  %1473 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.538)
  br i1 %.pre1319, label %1478, label %1479

.thread1019:                                      ; preds = %1466, %1468
  %.str.6.sink = phi ptr [ @.str.7, %1468 ], [ @.str.6, %1466 ]
  %1474 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink)
  %1475 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.537)
  %1476 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.6)
  %1477 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.538)
  br i1 %1463, label %1478, label %1479

1478:                                             ; preds = %1469, %.thread1019
  br label %1479

1479:                                             ; preds = %.thread1019, %1469, %1478
  %.str.7.sink1343 = phi ptr [ @.str.7, %1478 ], [ @.str.6, %1469 ], [ @.str.6, %.thread1019 ]
  %1480 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.7.sink1343)
  %1481 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.539)
  %1482 = trunc nuw i8 %.2840.lcssa to i1
  %.str.7..str.61348 = select i1 %1482, ptr @.str.7, ptr @.str.6
  %1483 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.7..str.61348)
  %1484 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.540)
  %1485 = trunc nuw i8 %.5.lcssa to i1
  %.str.7.sink1345 = select i1 %1485, ptr @.str.7, ptr @.str.6
  %1486 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.7.sink1345)
  %1487 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.541)
  %.str.7.sink1346 = select i1 %.9837, ptr @.str.7, ptr @.str.6
  %1488 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.7.sink1346)
  %.str.21.sink = select i1 %1452, ptr @.str.20, ptr @.str.21
  %1489 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.21.sink)
  %1490 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3)
  br label %1491

1491:                                             ; preds = %1479, %1451
  %1492 = xor i1 %1452, true
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #7
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %36) #7
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %34) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #7
  ret i1 %1492
}

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL28testlinregunit_filltaskwithyddlPN11alglib_impl9ae_matrixEPNS_9ae_vectorEPNS_8ae_stateE(double noundef, double noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef double @_ZL29testlinregunit_generatenormalddPN11alglib_impl8ae_stateE(double noundef, double noundef, ptr noundef) local_unnamed_addr #5

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

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

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

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

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

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

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #3 = { nofree nounwind "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 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { 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 #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { 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 = !{!"double", !6, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"long", !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 = !{!"any pointer", !6, i64 0}
!18 = distinct !{!18, !13}
!19 = distinct !{!19, !13}
!20 = distinct !{!20, !13}
!21 = distinct !{!21, !13}
!22 = distinct !{!22, !13}
!23 = distinct !{!23, !13}
!24 = distinct !{!24, !13}
!25 = distinct !{!25, !13}
!26 = distinct !{!26, !13}
!27 = distinct !{!27, !13}
!28 = distinct !{!28, !13}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.unroll.disable"}
!31 = distinct !{!31, !13}
!32 = distinct !{!32, !13}
!33 = distinct !{!33, !13}
!34 = distinct !{!34, !13}
!35 = distinct !{!35, !13}
!36 = distinct !{!36, !13}
!37 = distinct !{!37, !13}
!38 = distinct !{!38, !13}
!39 = distinct !{!39, !30}
!40 = distinct !{!40, !13}
!41 = distinct !{!41, !13}
!42 = distinct !{!42, !13}
!43 = distinct !{!43, !13}
!44 = !{!45, !11, i64 16}
!45 = !{!"_ZTSN11alglib_impl8lrreportE", !46, i64 0, !9, i64 80, !9, i64 88, !9, i64 96, !9, i64 104, !9, i64 112, !9, i64 120, !11, i64 128, !49, i64 136}
!46 = !{!"_ZTSN11alglib_impl9ae_matrixE", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !47, i64 32, !48, i64 40, !6, i64 72}
!47 = !{!"bool", !6, i64 0}
!48 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !17, i64 0, !17, i64 8, !17, i64 16, !17, i64 24}
!49 = !{!"_ZTSN11alglib_impl9ae_vectorE", !11, i64 0, !11, i64 8, !47, i64 16, !48, i64 24, !6, i64 56}
!50 = distinct !{!50, !13}
!51 = distinct !{!51, !13}
!52 = !{!45, !11, i64 128}
!53 = distinct !{!53, !13}
!54 = distinct !{!54, !30}
!55 = distinct !{!55, !13}
!56 = !{!45, !9, i64 104}
!57 = !{!45, !9, i64 112}
!58 = !{!45, !9, i64 120}
!59 = !{!45, !9, i64 80}
!60 = !{!45, !9, i64 88}
!61 = !{!45, !9, i64 96}
!62 = distinct !{!62, !13}
!63 = distinct !{!63, !13}
!64 = distinct !{!64, !13}
!65 = distinct !{!65, !13}
!66 = distinct !{!66, !13}
!67 = distinct !{!67, !13}
!68 = distinct !{!68, !13}
!69 = distinct !{!69, !13}
!70 = distinct !{!70, !13}
!71 = distinct !{!71, !13}


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