; LLVM IR from Dimandragon/non-parametric-dsp :: alglib-cpp/tests/test_c.ll (Z9testhqrndbPN11alglib_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_vector" = type { i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon }
%union.anon = type { ptr }
%"struct.alglib_impl::ae_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%union.anon.0 = type { ptr }
%"struct.alglib_impl::hqrndstate" = type { i64, i64, i64 }

@.str.2 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [22 x i8], align 1

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

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

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

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

declare noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef, ptr 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 zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef, double noundef) #1

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

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_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef, i64 noundef, i64 noundef, i64 noundef, ptr noundef, i1 noundef zeroext) #1

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

60:                                               ; preds = %113, %2
  %61 = load i64, ptr %14, align 8, !tbaa !13
  %62 = load i64, ptr %9, align 8, !tbaa !13
  %63 = icmp sle i64 %61, %62
  br i1 %63, label %64, label %116

64:                                               ; preds = %60
  %65 = load ptr, ptr %4, align 8, !tbaa !9
  %66 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 32000, ptr noundef %65)
  %67 = add nsw i64 1, %66
  store i64 %67, ptr %15, align 8, !tbaa !13
  %68 = load ptr, ptr %4, align 8, !tbaa !9
  %69 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 32000, ptr noundef %68)
  %70 = add nsw i64 1, %69
  store i64 %70, ptr %16, align 8, !tbaa !13
  %71 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL24testhqrndunit_unsetstatePN11alglib_impl10hqrndstateEPNS_8ae_stateE(ptr noundef %44, ptr noundef %71)
  %72 = load i64, ptr %15, align 8, !tbaa !13
  %73 = load i64, ptr %16, align 8, !tbaa !13
  %74 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl9hqrndseedEllPNS_10hqrndstateEPNS_8ae_stateE(i64 noundef %72, i64 noundef %73, ptr noundef %44, ptr noundef %74)
  %75 = load ptr, ptr %4, align 8, !tbaa !9
  %76 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef %44, i64 noundef 100, ptr noundef %75)
  store i64 %76, ptr %17, align 8, !tbaa !13
  %77 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL24testhqrndunit_unsetstatePN11alglib_impl10hqrndstateEPNS_8ae_stateE(ptr noundef %44, ptr noundef %77)
  %78 = load i64, ptr %15, align 8, !tbaa !13
  %79 = load i64, ptr %16, align 8, !tbaa !13
  %80 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl9hqrndseedEllPNS_10hqrndstateEPNS_8ae_stateE(i64 noundef %78, i64 noundef %79, ptr noundef %44, ptr noundef %80)
  %81 = load ptr, ptr %4, align 8, !tbaa !9
  %82 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef %44, i64 noundef 100, ptr noundef %81)
  store i64 %82, ptr %18, align 8, !tbaa !13
  %83 = load i8, ptr %32, align 1, !tbaa !5, !range !15, !noundef !16
  %84 = trunc i8 %83 to i1
  br i1 %84, label %89, label %85

85:                                               ; preds = %64
  %86 = load i64, ptr %17, align 8, !tbaa !13
  %87 = load i64, ptr %18, align 8, !tbaa !13
  %88 = icmp ne i64 %86, %87
  br label %89

89:                                               ; preds = %85, %64
  %90 = phi i1 [ true, %64 ], [ %88, %85 ]
  %91 = zext i1 %90 to i8
  store i8 %91, ptr %32, align 1, !tbaa !5
  %92 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL24testhqrndunit_unsetstatePN11alglib_impl10hqrndstateEPNS_8ae_stateE(ptr noundef %44, ptr noundef %92)
  %93 = load i64, ptr %15, align 8, !tbaa !13
  %94 = load i64, ptr %16, align 8, !tbaa !13
  %95 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl9hqrndseedEllPNS_10hqrndstateEPNS_8ae_stateE(i64 noundef %93, i64 noundef %94, ptr noundef %44, ptr noundef %95)
  %96 = load ptr, ptr %4, align 8, !tbaa !9
  %97 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %44, ptr noundef %96)
  store double %97, ptr %19, align 8, !tbaa !11
  %98 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL24testhqrndunit_unsetstatePN11alglib_impl10hqrndstateEPNS_8ae_stateE(ptr noundef %44, ptr noundef %98)
  %99 = load i64, ptr %15, align 8, !tbaa !13
  %100 = load i64, ptr %16, align 8, !tbaa !13
  %101 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl9hqrndseedEllPNS_10hqrndstateEPNS_8ae_stateE(i64 noundef %99, i64 noundef %100, ptr noundef %44, ptr noundef %101)
  %102 = load ptr, ptr %4, align 8, !tbaa !9
  %103 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %44, ptr noundef %102)
  store double %103, ptr %20, align 8, !tbaa !11
  %104 = load i8, ptr %32, align 1, !tbaa !5, !range !15, !noundef !16
  %105 = trunc i8 %104 to i1
  br i1 %105, label %110, label %106

106:                                              ; preds = %89
  %107 = load double, ptr %19, align 8, !tbaa !11
  %108 = load double, ptr %20, align 8, !tbaa !11
  %109 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %107, double noundef %108)
  br label %110

110:                                              ; preds = %106, %89
  %111 = phi i1 [ true, %89 ], [ %109, %106 ]
  %112 = zext i1 %111 to i8
  store i8 %112, ptr %32, align 1, !tbaa !5
  br label %113

113:                                              ; preds = %110
  %114 = load i64, ptr %14, align 8, !tbaa !13
  %115 = add nsw i64 %114, 1
  store i64 %115, ptr %14, align 8, !tbaa !13
  br label %60, !llvm.loop !17

116:                                              ; preds = %60
  %117 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL24testhqrndunit_unsetstatePN11alglib_impl10hqrndstateEPNS_8ae_stateE(ptr noundef %44, ptr noundef %117)
  %118 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14hqrndrandomizeEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %44, ptr noundef %118)
  store double 0.000000e+00, ptr %34, align 8, !tbaa !11
  store i64 0, ptr %11, align 8, !tbaa !13
  br label %119

119:                                              ; preds = %131, %116
  %120 = load i64, ptr %11, align 8, !tbaa !13
  %121 = load i64, ptr %7, align 8, !tbaa !13
  %122 = sub nsw i64 %121, 1
  %123 = icmp sle i64 %120, %122
  br i1 %123, label %124, label %134

124:                                              ; preds = %119
  %125 = load ptr, ptr %4, align 8, !tbaa !9
  %126 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %44, ptr noundef %125)
  %127 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %128 = load ptr, ptr %127, align 8, !tbaa !19
  %129 = load i64, ptr %11, align 8, !tbaa !13
  %130 = getelementptr inbounds double, ptr %128, i64 %129
  store double %126, ptr %130, align 8, !tbaa !11
  br label %131

131:                                              ; preds = %124
  %132 = load i64, ptr %11, align 8, !tbaa !13
  %133 = add nsw i64 %132, 1
  store i64 %133, ptr %11, align 8, !tbaa !13
  br label %119, !llvm.loop !20

134:                                              ; preds = %119
  store i64 0, ptr %11, align 8, !tbaa !13
  br label %135

135:                                              ; preds = %160, %134
  %136 = load i64, ptr %11, align 8, !tbaa !13
  %137 = load i64, ptr %7, align 8, !tbaa !13
  %138 = sub nsw i64 %137, 1
  %139 = icmp sle i64 %136, %138
  br i1 %139, label %140, label %163

140:                                              ; preds = %135
  %141 = load i8, ptr %33, align 1, !tbaa !5, !range !15, !noundef !16
  %142 = trunc i8 %141 to i1
  br i1 %142, label %157, label %143

143:                                              ; preds = %140
  %144 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %145 = load ptr, ptr %144, align 8, !tbaa !19
  %146 = load i64, ptr %11, align 8, !tbaa !13
  %147 = getelementptr inbounds double, ptr %145, i64 %146
  %148 = load double, ptr %147, align 8, !tbaa !11
  %149 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %148, double noundef 0.000000e+00)
  br i1 %149, label %157, label %150

150:                                              ; preds = %143
  %151 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %152 = load ptr, ptr %151, align 8, !tbaa !19
  %153 = load i64, ptr %11, align 8, !tbaa !13
  %154 = getelementptr inbounds double, ptr %152, i64 %153
  %155 = load double, ptr %154, align 8, !tbaa !11
  %156 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %155, double noundef 1.000000e+00)
  br label %157

157:                                              ; preds = %150, %143, %140
  %158 = phi i1 [ true, %143 ], [ true, %140 ], [ %156, %150 ]
  %159 = zext i1 %158 to i8
  store i8 %159, ptr %33, align 1, !tbaa !5
  br label %160

160:                                              ; preds = %157
  %161 = load i64, ptr %11, align 8, !tbaa !13
  %162 = add nsw i64 %161, 1
  store i64 %162, ptr %11, align 8, !tbaa !13
  br label %135, !llvm.loop !21

163:                                              ; preds = %135
  %164 = load i64, ptr %7, align 8, !tbaa !13
  %165 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL25testhqrndunit_calculatemvPKN11alglib_impl9ae_vectorElPdS3_S3_S3_PNS_8ae_stateE(ptr noundef %21, i64 noundef %164, ptr noundef %27, ptr noundef %28, ptr noundef %29, ptr noundef %30, ptr noundef %165)
  %166 = load double, ptr %28, align 8, !tbaa !11
  %167 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %166, double noundef 0.000000e+00)
  br i1 %167, label %168, label %178

168:                                              ; preds = %163
  %169 = load double, ptr %34, align 8, !tbaa !11
  %170 = load double, ptr %27, align 8, !tbaa !11
  %171 = fsub double %170, 5.000000e-01
  %172 = load double, ptr %28, align 8, !tbaa !11
  %173 = fdiv double %171, %172
  %174 = load ptr, ptr %4, align 8, !tbaa !9
  %175 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %173, ptr noundef %174)
  %176 = load ptr, ptr %4, align 8, !tbaa !9
  %177 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %169, double noundef %175, ptr noundef %176)
  store double %177, ptr %34, align 8, !tbaa !11
  br label %179

178:                                              ; preds = %163
  store i8 1, ptr %33, align 1, !tbaa !5
  br label %179

179:                                              ; preds = %178, %168
  %180 = load double, ptr %30, align 8, !tbaa !11
  %181 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %180, double noundef 0.000000e+00)
  br i1 %181, label %182, label %194

182:                                              ; preds = %179
  %183 = load double, ptr %34, align 8, !tbaa !11
  %184 = load double, ptr %29, align 8, !tbaa !11
  %185 = load ptr, ptr %4, align 8, !tbaa !9
  %186 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 0x3FB5555555555555, ptr noundef %185)
  %187 = fsub double %184, %186
  %188 = load double, ptr %30, align 8, !tbaa !11
  %189 = fdiv double %187, %188
  %190 = load ptr, ptr %4, align 8, !tbaa !9
  %191 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %189, ptr noundef %190)
  %192 = load ptr, ptr %4, align 8, !tbaa !9
  %193 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %183, double noundef %191, ptr noundef %192)
  store double %193, ptr %34, align 8, !tbaa !11
  br label %195

194:                                              ; preds = %179
  store i8 1, ptr %33, align 1, !tbaa !5
  br label %195

195:                                              ; preds = %194, %182
  %196 = load i8, ptr %33, align 1, !tbaa !5, !range !15, !noundef !16
  %197 = trunc i8 %196 to i1
  br i1 %197, label %202, label %198

198:                                              ; preds = %195
  %199 = load double, ptr %34, align 8, !tbaa !11
  %200 = load double, ptr %8, align 8, !tbaa !11
  %201 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %199, double noundef %200)
  br label %202

202:                                              ; preds = %198, %195
  %203 = phi i1 [ true, %195 ], [ %201, %198 ]
  %204 = zext i1 %203 to i8
  store i8 %204, ptr %33, align 1, !tbaa !5
  %205 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL24testhqrndunit_unsetstatePN11alglib_impl10hqrndstateEPNS_8ae_stateE(ptr noundef %44, ptr noundef %205)
  %206 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14hqrndrandomizeEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %44, ptr noundef %206)
  store double 0.000000e+00, ptr %36, align 8, !tbaa !11
  store i64 2, ptr %10, align 8, !tbaa !13
  br label %207

207:                                              ; preds = %301, %202
  %208 = load i64, ptr %10, align 8, !tbaa !13
  %209 = icmp sle i64 %208, 10
  br i1 %209, label %210, label %304

210:                                              ; preds = %207
  store i64 0, ptr %11, align 8, !tbaa !13
  br label %211

211:                                              ; preds = %225, %210
  %212 = load i64, ptr %11, align 8, !tbaa !13
  %213 = load i64, ptr %7, align 8, !tbaa !13
  %214 = sub nsw i64 %213, 1
  %215 = icmp sle i64 %212, %214
  br i1 %215, label %216, label %228

216:                                              ; preds = %211
  %217 = load i64, ptr %10, align 8, !tbaa !13
  %218 = load ptr, ptr %4, align 8, !tbaa !9
  %219 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef %44, i64 noundef %217, ptr noundef %218)
  %220 = sitofp i64 %219 to double
  %221 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %222 = load ptr, ptr %221, align 8, !tbaa !19
  %223 = load i64, ptr %11, align 8, !tbaa !13
  %224 = getelementptr inbounds double, ptr %222, i64 %223
  store double %220, ptr %224, align 8, !tbaa !11
  br label %225

225:                                              ; preds = %216
  %226 = load i64, ptr %11, align 8, !tbaa !13
  %227 = add nsw i64 %226, 1
  store i64 %227, ptr %11, align 8, !tbaa !13
  br label %211, !llvm.loop !22

228:                                              ; preds = %211
  store i64 0, ptr %11, align 8, !tbaa !13
  br label %229

229:                                              ; preds = %256, %228
  %230 = load i64, ptr %11, align 8, !tbaa !13
  %231 = load i64, ptr %7, align 8, !tbaa !13
  %232 = sub nsw i64 %231, 1
  %233 = icmp sle i64 %230, %232
  br i1 %233, label %234, label %259

234:                                              ; preds = %229
  %235 = load i8, ptr %35, align 1, !tbaa !5, !range !15, !noundef !16
  %236 = trunc i8 %235 to i1
  br i1 %236, label %253, label %237

237:                                              ; preds = %234
  %238 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %239 = load ptr, ptr %238, align 8, !tbaa !19
  %240 = load i64, ptr %11, align 8, !tbaa !13
  %241 = getelementptr inbounds double, ptr %239, i64 %240
  %242 = load double, ptr %241, align 8, !tbaa !11
  %243 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %242, double noundef 0.000000e+00)
  br i1 %243, label %253, label %244

244:                                              ; preds = %237
  %245 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %246 = load ptr, ptr %245, align 8, !tbaa !19
  %247 = load i64, ptr %11, align 8, !tbaa !13
  %248 = getelementptr inbounds double, ptr %246, i64 %247
  %249 = load double, ptr %248, align 8, !tbaa !11
  %250 = load i64, ptr %10, align 8, !tbaa !13
  %251 = sitofp i64 %250 to double
  %252 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %249, double noundef %251)
  br label %253

253:                                              ; preds = %244, %237, %234
  %254 = phi i1 [ true, %237 ], [ true, %234 ], [ %252, %244 ]
  %255 = zext i1 %254 to i8
  store i8 %255, ptr %35, align 1, !tbaa !5
  br label %256

256:                                              ; preds = %253
  %257 = load i64, ptr %11, align 8, !tbaa !13
  %258 = add nsw i64 %257, 1
  store i64 %258, ptr %11, align 8, !tbaa !13
  br label %229, !llvm.loop !23

259:                                              ; preds = %229
  %260 = load i64, ptr %7, align 8, !tbaa !13
  %261 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL25testhqrndunit_calculatemvPKN11alglib_impl9ae_vectorElPdS3_S3_S3_PNS_8ae_stateE(ptr noundef %21, i64 noundef %260, ptr noundef %27, ptr noundef %28, ptr noundef %29, ptr noundef %30, ptr noundef %261)
  %262 = load double, ptr %28, align 8, !tbaa !11
  %263 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %262, double noundef 0.000000e+00)
  br i1 %263, label %264, label %277

264:                                              ; preds = %259
  %265 = load double, ptr %36, align 8, !tbaa !11
  %266 = load double, ptr %27, align 8, !tbaa !11
  %267 = load i64, ptr %10, align 8, !tbaa !13
  %268 = sub nsw i64 %267, 1
  %269 = sitofp i64 %268 to double
  %270 = call double @llvm.fmuladd.f64(double -5.000000e-01, double %269, double %266)
  %271 = load double, ptr %28, align 8, !tbaa !11
  %272 = fdiv double %270, %271
  %273 = load ptr, ptr %4, align 8, !tbaa !9
  %274 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %272, ptr noundef %273)
  %275 = load ptr, ptr %4, align 8, !tbaa !9
  %276 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %265, double noundef %274, ptr noundef %275)
  store double %276, ptr %36, align 8, !tbaa !11
  br label %278

277:                                              ; preds = %259
  store i8 1, ptr %35, align 1, !tbaa !5
  br label %278

278:                                              ; preds = %277, %264
  %279 = load double, ptr %30, align 8, !tbaa !11
  %280 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %279, double noundef 0.000000e+00)
  br i1 %280, label %281, label %299

281:                                              ; preds = %278
  %282 = load double, ptr %36, align 8, !tbaa !11
  %283 = load double, ptr %29, align 8, !tbaa !11
  %284 = load i64, ptr %10, align 8, !tbaa !13
  %285 = sitofp i64 %284 to double
  %286 = load ptr, ptr %4, align 8, !tbaa !9
  %287 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %285, ptr noundef %286)
  %288 = fsub double %287, 1.000000e+00
  %289 = fdiv double %288, 1.200000e+01
  %290 = load ptr, ptr %4, align 8, !tbaa !9
  %291 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %289, ptr noundef %290)
  %292 = fsub double %283, %291
  %293 = load double, ptr %30, align 8, !tbaa !11
  %294 = fdiv double %292, %293
  %295 = load ptr, ptr %4, align 8, !tbaa !9
  %296 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %294, ptr noundef %295)
  %297 = load ptr, ptr %4, align 8, !tbaa !9
  %298 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %282, double noundef %296, ptr noundef %297)
  store double %298, ptr %36, align 8, !tbaa !11
  br label %300

299:                                              ; preds = %278
  store i8 1, ptr %35, align 1, !tbaa !5
  br label %300

300:                                              ; preds = %299, %281
  br label %301

301:                                              ; preds = %300
  %302 = load i64, ptr %10, align 8, !tbaa !13
  %303 = add nsw i64 %302, 1
  store i64 %303, ptr %10, align 8, !tbaa !13
  br label %207, !llvm.loop !24

304:                                              ; preds = %207
  %305 = load i8, ptr %35, align 1, !tbaa !5, !range !15, !noundef !16
  %306 = trunc i8 %305 to i1
  br i1 %306, label %311, label %307

307:                                              ; preds = %304
  %308 = load double, ptr %36, align 8, !tbaa !11
  %309 = load double, ptr %8, align 8, !tbaa !11
  %310 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %308, double noundef %309)
  br label %311

311:                                              ; preds = %307, %304
  %312 = phi i1 [ true, %304 ], [ %310, %307 ]
  %313 = zext i1 %312 to i8
  store i8 %313, ptr %35, align 1, !tbaa !5
  %314 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL24testhqrndunit_unsetstatePN11alglib_impl10hqrndstateEPNS_8ae_stateE(ptr noundef %44, ptr noundef %314)
  %315 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14hqrndrandomizeEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %44, ptr noundef %315)
  store double 0.000000e+00, ptr %36, align 8, !tbaa !11
  store i64 1431655708, ptr %10, align 8, !tbaa !13
  store i64 0, ptr %11, align 8, !tbaa !13
  br label %316

316:                                              ; preds = %330, %311
  %317 = load i64, ptr %11, align 8, !tbaa !13
  %318 = load i64, ptr %7, align 8, !tbaa !13
  %319 = sub nsw i64 %318, 1
  %320 = icmp sle i64 %317, %319
  br i1 %320, label %321, label %333

321:                                              ; preds = %316
  %322 = load i64, ptr %10, align 8, !tbaa !13
  %323 = load ptr, ptr %4, align 8, !tbaa !9
  %324 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef %44, i64 noundef %322, ptr noundef %323)
  %325 = sitofp i64 %324 to double
  %326 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %327 = load ptr, ptr %326, align 8, !tbaa !19
  %328 = load i64, ptr %11, align 8, !tbaa !13
  %329 = getelementptr inbounds double, ptr %327, i64 %328
  store double %325, ptr %329, align 8, !tbaa !11
  br label %330

330:                                              ; preds = %321
  %331 = load i64, ptr %11, align 8, !tbaa !13
  %332 = add nsw i64 %331, 1
  store i64 %332, ptr %11, align 8, !tbaa !13
  br label %316, !llvm.loop !25

333:                                              ; preds = %316
  store i64 0, ptr %11, align 8, !tbaa !13
  br label %334

334:                                              ; preds = %361, %333
  %335 = load i64, ptr %11, align 8, !tbaa !13
  %336 = load i64, ptr %7, align 8, !tbaa !13
  %337 = sub nsw i64 %336, 1
  %338 = icmp sle i64 %335, %337
  br i1 %338, label %339, label %364

339:                                              ; preds = %334
  %340 = load i8, ptr %35, align 1, !tbaa !5, !range !15, !noundef !16
  %341 = trunc i8 %340 to i1
  br i1 %341, label %358, label %342

342:                                              ; preds = %339
  %343 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %344 = load ptr, ptr %343, align 8, !tbaa !19
  %345 = load i64, ptr %11, align 8, !tbaa !13
  %346 = getelementptr inbounds double, ptr %344, i64 %345
  %347 = load double, ptr %346, align 8, !tbaa !11
  %348 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %347, double noundef 0.000000e+00)
  br i1 %348, label %358, label %349

349:                                              ; preds = %342
  %350 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %351 = load ptr, ptr %350, align 8, !tbaa !19
  %352 = load i64, ptr %11, align 8, !tbaa !13
  %353 = getelementptr inbounds double, ptr %351, i64 %352
  %354 = load double, ptr %353, align 8, !tbaa !11
  %355 = load i64, ptr %10, align 8, !tbaa !13
  %356 = sitofp i64 %355 to double
  %357 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %354, double noundef %356)
  br label %358

358:                                              ; preds = %349, %342, %339
  %359 = phi i1 [ true, %342 ], [ true, %339 ], [ %357, %349 ]
  %360 = zext i1 %359 to i8
  store i8 %360, ptr %35, align 1, !tbaa !5
  br label %361

361:                                              ; preds = %358
  %362 = load i64, ptr %11, align 8, !tbaa !13
  %363 = add nsw i64 %362, 1
  store i64 %363, ptr %11, align 8, !tbaa !13
  br label %334, !llvm.loop !26

364:                                              ; preds = %334
  %365 = load i64, ptr %7, align 8, !tbaa !13
  %366 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL25testhqrndunit_calculatemvPKN11alglib_impl9ae_vectorElPdS3_S3_S3_PNS_8ae_stateE(ptr noundef %21, i64 noundef %365, ptr noundef %27, ptr noundef %28, ptr noundef %29, ptr noundef %30, ptr noundef %366)
  %367 = load double, ptr %28, align 8, !tbaa !11
  %368 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %367, double noundef 0.000000e+00)
  br i1 %368, label %369, label %382

369:                                              ; preds = %364
  %370 = load double, ptr %36, align 8, !tbaa !11
  %371 = load double, ptr %27, align 8, !tbaa !11
  %372 = load i64, ptr %10, align 8, !tbaa !13
  %373 = sub nsw i64 %372, 1
  %374 = sitofp i64 %373 to double
  %375 = call double @llvm.fmuladd.f64(double -5.000000e-01, double %374, double %371)
  %376 = load double, ptr %28, align 8, !tbaa !11
  %377 = fdiv double %375, %376
  %378 = load ptr, ptr %4, align 8, !tbaa !9
  %379 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %377, ptr noundef %378)
  %380 = load ptr, ptr %4, align 8, !tbaa !9
  %381 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %370, double noundef %379, ptr noundef %380)
  store double %381, ptr %36, align 8, !tbaa !11
  br label %383

382:                                              ; preds = %364
  store i8 1, ptr %35, align 1, !tbaa !5
  br label %383

383:                                              ; preds = %382, %369
  %384 = load double, ptr %30, align 8, !tbaa !11
  %385 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %384, double noundef 0.000000e+00)
  br i1 %385, label %386, label %404

386:                                              ; preds = %383
  %387 = load double, ptr %36, align 8, !tbaa !11
  %388 = load double, ptr %29, align 8, !tbaa !11
  %389 = load i64, ptr %10, align 8, !tbaa !13
  %390 = sitofp i64 %389 to double
  %391 = load ptr, ptr %4, align 8, !tbaa !9
  %392 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %390, ptr noundef %391)
  %393 = fsub double %392, 1.000000e+00
  %394 = fdiv double %393, 1.200000e+01
  %395 = load ptr, ptr %4, align 8, !tbaa !9
  %396 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %394, ptr noundef %395)
  %397 = fsub double %388, %396
  %398 = load double, ptr %30, align 8, !tbaa !11
  %399 = fdiv double %397, %398
  %400 = load ptr, ptr %4, align 8, !tbaa !9
  %401 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %399, ptr noundef %400)
  %402 = load ptr, ptr %4, align 8, !tbaa !9
  %403 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %387, double noundef %401, ptr noundef %402)
  store double %403, ptr %36, align 8, !tbaa !11
  br label %405

404:                                              ; preds = %383
  store i8 1, ptr %35, align 1, !tbaa !5
  br label %405

405:                                              ; preds = %404, %386
  %406 = load i8, ptr %35, align 1, !tbaa !5, !range !15, !noundef !16
  %407 = trunc i8 %406 to i1
  br i1 %407, label %412, label %408

408:                                              ; preds = %405
  %409 = load double, ptr %36, align 8, !tbaa !11
  %410 = load double, ptr %8, align 8, !tbaa !11
  %411 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %409, double noundef %410)
  br label %412

412:                                              ; preds = %408, %405
  %413 = phi i1 [ true, %405 ], [ %411, %408 ]
  %414 = zext i1 %413 to i8
  store i8 %414, ptr %35, align 1, !tbaa !5
  %415 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL24testhqrndunit_unsetstatePN11alglib_impl10hqrndstateEPNS_8ae_stateE(ptr noundef %44, ptr noundef %415)
  %416 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14hqrndrandomizeEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %44, ptr noundef %416)
  store i64 0, ptr %11, align 8, !tbaa !13
  br label %417

417:                                              ; preds = %439, %412
  %418 = load i64, ptr %11, align 8, !tbaa !13
  %419 = load i64, ptr %7, align 8, !tbaa !13
  %420 = icmp slt i64 %418, %419
  br i1 %420, label %421, label %442

421:                                              ; preds = %417
  %422 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12hqrndnormal2EPNS_10hqrndstateEPdS2_PNS_8ae_stateE(ptr noundef %44, ptr noundef %19, ptr noundef %20, ptr noundef %422)
  %423 = load double, ptr %19, align 8, !tbaa !11
  %424 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %425 = load ptr, ptr %424, align 8, !tbaa !19
  %426 = load i64, ptr %11, align 8, !tbaa !13
  %427 = getelementptr inbounds double, ptr %425, i64 %426
  store double %423, ptr %427, align 8, !tbaa !11
  %428 = load i64, ptr %11, align 8, !tbaa !13
  %429 = add nsw i64 %428, 1
  %430 = load i64, ptr %7, align 8, !tbaa !13
  %431 = icmp slt i64 %429, %430
  br i1 %431, label %432, label %439

432:                                              ; preds = %421
  %433 = load double, ptr %20, align 8, !tbaa !11
  %434 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %435 = load ptr, ptr %434, align 8, !tbaa !19
  %436 = load i64, ptr %11, align 8, !tbaa !13
  %437 = add nsw i64 %436, 1
  %438 = getelementptr inbounds double, ptr %435, i64 %437
  store double %433, ptr %438, align 8, !tbaa !11
  br label %439

439:                                              ; preds = %432, %421
  %440 = load i64, ptr %11, align 8, !tbaa !13
  %441 = add nsw i64 %440, 2
  store i64 %441, ptr %11, align 8, !tbaa !13
  br label %417, !llvm.loop !27

442:                                              ; preds = %417
  store double 0.000000e+00, ptr %38, align 8, !tbaa !11
  %443 = load i64, ptr %7, align 8, !tbaa !13
  %444 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL25testhqrndunit_calculatemvPKN11alglib_impl9ae_vectorElPdS3_S3_S3_PNS_8ae_stateE(ptr noundef %21, i64 noundef %443, ptr noundef %27, ptr noundef %28, ptr noundef %29, ptr noundef %30, ptr noundef %444)
  %445 = load double, ptr %28, align 8, !tbaa !11
  %446 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %445, double noundef 0.000000e+00)
  br i1 %446, label %447, label %457

447:                                              ; preds = %442
  %448 = load double, ptr %38, align 8, !tbaa !11
  %449 = load double, ptr %27, align 8, !tbaa !11
  %450 = fsub double %449, 0.000000e+00
  %451 = load double, ptr %28, align 8, !tbaa !11
  %452 = fdiv double %450, %451
  %453 = load ptr, ptr %4, align 8, !tbaa !9
  %454 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %452, ptr noundef %453)
  %455 = load ptr, ptr %4, align 8, !tbaa !9
  %456 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %448, double noundef %454, ptr noundef %455)
  store double %456, ptr %38, align 8, !tbaa !11
  br label %458

457:                                              ; preds = %442
  store i8 1, ptr %37, align 1, !tbaa !5
  br label %458

458:                                              ; preds = %457, %447
  %459 = load double, ptr %30, align 8, !tbaa !11
  %460 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %459, double noundef 0.000000e+00)
  br i1 %460, label %461, label %471

461:                                              ; preds = %458
  %462 = load double, ptr %38, align 8, !tbaa !11
  %463 = load double, ptr %29, align 8, !tbaa !11
  %464 = fsub double %463, 1.000000e+00
  %465 = load double, ptr %30, align 8, !tbaa !11
  %466 = fdiv double %464, %465
  %467 = load ptr, ptr %4, align 8, !tbaa !9
  %468 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %466, ptr noundef %467)
  %469 = load ptr, ptr %4, align 8, !tbaa !9
  %470 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %462, double noundef %468, ptr noundef %469)
  store double %470, ptr %38, align 8, !tbaa !11
  br label %472

471:                                              ; preds = %458
  store i8 1, ptr %37, align 1, !tbaa !5
  br label %472

472:                                              ; preds = %471, %461
  %473 = load double, ptr %38, align 8, !tbaa !11
  %474 = load double, ptr %8, align 8, !tbaa !11
  %475 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %473, double noundef %474)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %37, i1 noundef zeroext %475, ptr noundef @.str.19, i32 noundef 5082, ptr noundef @.str.20)
  %476 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %21, i64 noundef 0, ptr noundef %476)
  %477 = load i64, ptr %7, align 8, !tbaa !13
  %478 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12hqrndnormalvEPNS_10hqrndstateElPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %44, i64 noundef %477, ptr noundef %21, ptr noundef %478)
  %479 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 0
  %480 = load i64, ptr %479, align 8, !tbaa !28
  %481 = load i64, ptr %7, align 8, !tbaa !13
  %482 = icmp ne i64 %480, %481
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %37, i1 noundef zeroext %482, ptr noundef @.str.19, i32 noundef 5085, ptr noundef @.str.21)
  %483 = load i64, ptr %7, align 8, !tbaa !13
  %484 = load ptr, ptr %4, align 8, !tbaa !9
  %485 = call noundef zeroext i1 @_ZN11alglib_impl14isfinitevectorEPKNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %21, i64 noundef %483, ptr noundef %484)
  %486 = xor i1 %485, true
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %37, i1 noundef zeroext %486, ptr noundef @.str.19, i32 noundef 5086, ptr noundef @.str.22)
  %487 = load i8, ptr %37, align 1, !tbaa !5, !range !15, !noundef !16
  %488 = trunc i8 %487 to i1
  br i1 %488, label %584, label %489

489:                                              ; preds = %472
  %490 = load i64, ptr %7, align 8, !tbaa !13
  %491 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL25testhqrndunit_calculatemvPKN11alglib_impl9ae_vectorElPdS3_S3_S3_PNS_8ae_stateE(ptr noundef %21, i64 noundef %490, ptr noundef %27, ptr noundef %28, ptr noundef %29, ptr noundef %30, ptr noundef %491)
  %492 = load double, ptr %28, align 8, !tbaa !11
  %493 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %492, double noundef 0.000000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %37, i1 noundef zeroext %493, ptr noundef @.str.19, i32 noundef 5094, ptr noundef @.str.23)
  %494 = load double, ptr %30, align 8, !tbaa !11
  %495 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %494, double noundef 0.000000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %37, i1 noundef zeroext %495, ptr noundef @.str.19, i32 noundef 5095, ptr noundef @.str.24)
  store double 0.000000e+00, ptr %38, align 8, !tbaa !11
  %496 = load double, ptr %38, align 8, !tbaa !11
  %497 = load double, ptr %27, align 8, !tbaa !11
  %498 = fsub double %497, 0.000000e+00
  %499 = load double, ptr %28, align 8, !tbaa !11
  %500 = load ptr, ptr %4, align 8, !tbaa !9
  %501 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %499, double noundef 1.000000e+00, ptr noundef %500)
  %502 = fdiv double %498, %501
  %503 = load ptr, ptr %4, align 8, !tbaa !9
  %504 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %502, ptr noundef %503)
  %505 = load ptr, ptr %4, align 8, !tbaa !9
  %506 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %496, double noundef %504, ptr noundef %505)
  store double %506, ptr %38, align 8, !tbaa !11
  %507 = load double, ptr %38, align 8, !tbaa !11
  %508 = load double, ptr %29, align 8, !tbaa !11
  %509 = fsub double %508, 1.000000e+00
  %510 = load double, ptr %30, align 8, !tbaa !11
  %511 = load ptr, ptr %4, align 8, !tbaa !9
  %512 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %510, double noundef 1.000000e+00, ptr noundef %511)
  %513 = fdiv 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 ptr, ptr %4, align 8, !tbaa !9
  %517 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %507, double noundef %515, ptr noundef %516)
  store double %517, ptr %38, align 8, !tbaa !11
  %518 = load double, ptr %38, align 8, !tbaa !11
  %519 = load double, ptr %8, align 8, !tbaa !11
  %520 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %518, double noundef %519)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %37, i1 noundef zeroext %520, ptr noundef @.str.19, i32 noundef 5099, ptr noundef @.str.25)
  %521 = load i64, ptr %7, align 8, !tbaa !13
  %522 = sub nsw i64 %521, 1
  %523 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %22, i64 noundef %522, ptr noundef %523)
  store i64 0, ptr %11, align 8, !tbaa !13
  br label %524

524:                                              ; preds = %546, %489
  %525 = load i64, ptr %11, align 8, !tbaa !13
  %526 = load i64, ptr %7, align 8, !tbaa !13
  %527 = sub nsw i64 %526, 2
  %528 = icmp sle i64 %525, %527
  br i1 %528, label %529, label %549

529:                                              ; preds = %524
  %530 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %531 = load ptr, ptr %530, align 8, !tbaa !19
  %532 = load i64, ptr %11, align 8, !tbaa !13
  %533 = add nsw i64 %532, 1
  %534 = getelementptr inbounds double, ptr %531, i64 %533
  %535 = load double, ptr %534, align 8, !tbaa !11
  %536 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %537 = load ptr, ptr %536, align 8, !tbaa !19
  %538 = load i64, ptr %11, align 8, !tbaa !13
  %539 = getelementptr inbounds double, ptr %537, i64 %538
  %540 = load double, ptr %539, align 8, !tbaa !11
  %541 = fsub double %535, %540
  %542 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %22, i32 0, i32 4
  %543 = load ptr, ptr %542, align 8, !tbaa !19
  %544 = load i64, ptr %11, align 8, !tbaa !13
  %545 = getelementptr inbounds double, ptr %543, i64 %544
  store double %541, ptr %545, align 8, !tbaa !11
  br label %546

546:                                              ; preds = %529
  %547 = load i64, ptr %11, align 8, !tbaa !13
  %548 = add nsw i64 %547, 1
  store i64 %548, ptr %11, align 8, !tbaa !13
  br label %524, !llvm.loop !31

549:                                              ; preds = %524
  %550 = load i64, ptr %7, align 8, !tbaa !13
  %551 = sub nsw i64 %550, 1
  %552 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL25testhqrndunit_calculatemvPKN11alglib_impl9ae_vectorElPdS3_S3_S3_PNS_8ae_stateE(ptr noundef %22, i64 noundef %551, ptr noundef %27, ptr noundef %28, ptr noundef %29, ptr noundef %30, ptr noundef %552)
  %553 = load double, ptr %28, align 8, !tbaa !11
  %554 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %553, double noundef 0.000000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %37, i1 noundef zeroext %554, ptr noundef @.str.19, i32 noundef 5110, ptr noundef @.str.26)
  %555 = load double, ptr %30, align 8, !tbaa !11
  %556 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %555, double noundef 0.000000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %37, i1 noundef zeroext %556, ptr noundef @.str.19, i32 noundef 5111, ptr noundef @.str.27)
  store double 0.000000e+00, ptr %38, align 8, !tbaa !11
  %557 = load double, ptr %38, align 8, !tbaa !11
  %558 = load double, ptr %27, align 8, !tbaa !11
  %559 = fsub double %558, 0.000000e+00
  %560 = load double, ptr %28, align 8, !tbaa !11
  %561 = load ptr, ptr %4, align 8, !tbaa !9
  %562 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %560, double noundef 1.000000e+00, ptr noundef %561)
  %563 = fdiv double %559, %562
  %564 = load ptr, ptr %4, align 8, !tbaa !9
  %565 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %563, ptr noundef %564)
  %566 = load ptr, ptr %4, align 8, !tbaa !9
  %567 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %557, double noundef %565, ptr noundef %566)
  store double %567, ptr %38, align 8, !tbaa !11
  %568 = load double, ptr %38, align 8, !tbaa !11
  %569 = load double, ptr %29, align 8, !tbaa !11
  %570 = load ptr, ptr %4, align 8, !tbaa !9
  %571 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 2.000000e+00, ptr noundef %570)
  %572 = fsub double %569, %571
  %573 = load double, ptr %30, align 8, !tbaa !11
  %574 = load ptr, ptr %4, align 8, !tbaa !9
  %575 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %573, double noundef 1.000000e+00, ptr noundef %574)
  %576 = fdiv double %572, %575
  %577 = load ptr, ptr %4, align 8, !tbaa !9
  %578 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %576, ptr noundef %577)
  %579 = load ptr, ptr %4, align 8, !tbaa !9
  %580 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %568, double noundef %578, ptr noundef %579)
  store double %580, ptr %38, align 8, !tbaa !11
  %581 = load double, ptr %38, align 8, !tbaa !11
  %582 = load double, ptr %8, align 8, !tbaa !11
  %583 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %581, double noundef %582)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %37, i1 noundef zeroext %583, ptr noundef @.str.19, i32 noundef 5115, ptr noundef @.str.28)
  br label %584

584:                                              ; preds = %549, %472
  %585 = load i64, ptr %7, align 8, !tbaa !13
  %586 = sitofp i64 %585 to double
  %587 = load ptr, ptr %4, align 8, !tbaa !9
  %588 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %586, ptr noundef %587)
  %589 = load ptr, ptr %4, align 8, !tbaa !9
  %590 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %588, ptr noundef %589)
  %591 = load ptr, ptr %4, align 8, !tbaa !9
  %592 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef %590, ptr noundef %591)
  %593 = add nsw i64 1, %592
  store i64 %593, ptr %24, align 8, !tbaa !13
  %594 = load i64, ptr %7, align 8, !tbaa !13
  %595 = load i64, ptr %24, align 8, !tbaa !13
  %596 = sdiv i64 %594, %595
  %597 = add nsw i64 1, %596
  store i64 %597, ptr %25, align 8, !tbaa !13
  %598 = load i64, ptr %24, align 8, !tbaa !13
  %599 = load i64, ptr %25, align 8, !tbaa !13
  %600 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12hqrndnormalmEPNS_10hqrndstateEllPNS_9ae_matrixEPNS_8ae_stateE(ptr noundef %44, i64 noundef %598, i64 noundef %599, ptr noundef %23, ptr noundef %600)
  %601 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %23, i32 0, i32 0
  %602 = load i64, ptr %601, align 8, !tbaa !32
  %603 = load i64, ptr %24, align 8, !tbaa !13
  %604 = icmp ne i64 %602, %603
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %37, i1 noundef zeroext %604, ptr noundef @.str.19, i32 noundef 5120, ptr noundef @.str.29)
  %605 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %23, i32 0, i32 1
  %606 = load i64, ptr %605, align 8, !tbaa !34
  %607 = load i64, ptr %25, align 8, !tbaa !13
  %608 = icmp ne i64 %606, %607
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %37, i1 noundef zeroext %608, ptr noundef @.str.19, i32 noundef 5121, ptr noundef @.str.30)
  %609 = load i64, ptr %24, align 8, !tbaa !13
  %610 = load i64, ptr %25, align 8, !tbaa !13
  %611 = load ptr, ptr %4, align 8, !tbaa !9
  %612 = call noundef zeroext i1 @_ZN11alglib_impl20apservisfinitematrixEPKNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %23, i64 noundef %609, i64 noundef %610, ptr noundef %611)
  %613 = xor i1 %612, true
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %37, i1 noundef zeroext %613, ptr noundef @.str.19, i32 noundef 5122, ptr noundef @.str.31)
  %614 = load i64, ptr %24, align 8, !tbaa !13
  %615 = load i64, ptr %25, align 8, !tbaa !13
  %616 = mul nsw i64 %614, %615
  %617 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %21, i64 noundef %616, ptr noundef %617)
  store i64 0, ptr %11, align 8, !tbaa !13
  br label %618

618:                                              ; preds = %650, %584
  %619 = load i64, ptr %11, align 8, !tbaa !13
  %620 = load i64, ptr %24, align 8, !tbaa !13
  %621 = sub nsw i64 %620, 1
  %622 = icmp sle i64 %619, %621
  br i1 %622, label %623, label %653

623:                                              ; preds = %618
  store i64 0, ptr %12, align 8, !tbaa !13
  br label %624

624:                                              ; preds = %646, %623
  %625 = load i64, ptr %12, align 8, !tbaa !13
  %626 = load i64, ptr %25, align 8, !tbaa !13
  %627 = sub nsw i64 %626, 1
  %628 = icmp sle i64 %625, %627
  br i1 %628, label %629, label %649

629:                                              ; preds = %624
  %630 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %23, i32 0, i32 6
  %631 = load ptr, ptr %630, align 8, !tbaa !19
  %632 = load i64, ptr %11, align 8, !tbaa !13
  %633 = getelementptr inbounds ptr, ptr %631, i64 %632
  %634 = load ptr, ptr %633, align 8, !tbaa !9
  %635 = load i64, ptr %12, align 8, !tbaa !13
  %636 = getelementptr inbounds double, ptr %634, i64 %635
  %637 = load double, ptr %636, align 8, !tbaa !11
  %638 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %639 = load ptr, ptr %638, align 8, !tbaa !19
  %640 = load i64, ptr %11, align 8, !tbaa !13
  %641 = load i64, ptr %25, align 8, !tbaa !13
  %642 = mul nsw i64 %640, %641
  %643 = load i64, ptr %12, align 8, !tbaa !13
  %644 = add nsw i64 %642, %643
  %645 = getelementptr inbounds double, ptr %639, i64 %644
  store double %637, ptr %645, align 8, !tbaa !11
  br label %646

646:                                              ; preds = %629
  %647 = load i64, ptr %12, align 8, !tbaa !13
  %648 = add nsw i64 %647, 1
  store i64 %648, ptr %12, align 8, !tbaa !13
  br label %624, !llvm.loop !35

649:                                              ; preds = %624
  br label %650

650:                                              ; preds = %649
  %651 = load i64, ptr %11, align 8, !tbaa !13
  %652 = add nsw i64 %651, 1
  store i64 %652, ptr %11, align 8, !tbaa !13
  br label %618, !llvm.loop !36

653:                                              ; preds = %618
  %654 = load i64, ptr %24, align 8, !tbaa !13
  %655 = load i64, ptr %25, align 8, !tbaa !13
  %656 = mul nsw i64 %654, %655
  %657 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL25testhqrndunit_calculatemvPKN11alglib_impl9ae_vectorElPdS3_S3_S3_PNS_8ae_stateE(ptr noundef %21, i64 noundef %656, ptr noundef %27, ptr noundef %28, ptr noundef %29, ptr noundef %30, ptr noundef %657)
  %658 = load double, ptr %28, align 8, !tbaa !11
  %659 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %658, double noundef 0.000000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %37, i1 noundef zeroext %659, ptr noundef @.str.19, i32 noundef 5132, ptr noundef @.str.32)
  %660 = load double, ptr %30, align 8, !tbaa !11
  %661 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %660, double noundef 0.000000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %37, i1 noundef zeroext %661, ptr noundef @.str.19, i32 noundef 5133, ptr noundef @.str.33)
  store double 0.000000e+00, ptr %38, align 8, !tbaa !11
  %662 = load double, ptr %38, align 8, !tbaa !11
  %663 = load double, ptr %27, align 8, !tbaa !11
  %664 = fsub double %663, 0.000000e+00
  %665 = load double, ptr %28, align 8, !tbaa !11
  %666 = load ptr, ptr %4, align 8, !tbaa !9
  %667 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %665, double noundef 1.000000e+00, ptr noundef %666)
  %668 = fdiv double %664, %667
  %669 = load ptr, ptr %4, align 8, !tbaa !9
  %670 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %668, ptr noundef %669)
  %671 = load ptr, ptr %4, align 8, !tbaa !9
  %672 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %662, double noundef %670, ptr noundef %671)
  store double %672, ptr %38, align 8, !tbaa !11
  %673 = load double, ptr %38, align 8, !tbaa !11
  %674 = load double, ptr %29, align 8, !tbaa !11
  %675 = fsub double %674, 1.000000e+00
  %676 = load double, ptr %30, align 8, !tbaa !11
  %677 = load ptr, ptr %4, align 8, !tbaa !9
  %678 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %676, double noundef 1.000000e+00, ptr noundef %677)
  %679 = fdiv double %675, %678
  %680 = load ptr, ptr %4, align 8, !tbaa !9
  %681 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %679, ptr noundef %680)
  %682 = load ptr, ptr %4, align 8, !tbaa !9
  %683 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %673, double noundef %681, ptr noundef %682)
  store double %683, ptr %38, align 8, !tbaa !11
  %684 = load double, ptr %38, align 8, !tbaa !11
  %685 = load double, ptr %8, align 8, !tbaa !11
  %686 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %684, double noundef %685)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %37, i1 noundef zeroext %686, ptr noundef @.str.19, i32 noundef 5137, ptr noundef @.str.34)
  %687 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL24testhqrndunit_unsetstatePN11alglib_impl10hqrndstateEPNS_8ae_stateE(ptr noundef %44, ptr noundef %687)
  %688 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14hqrndrandomizeEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %44, ptr noundef %688)
  store i64 1000000, ptr %10, align 8, !tbaa !13
  %689 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %26, i64 noundef 10, ptr noundef %689)
  store i64 0, ptr %11, align 8, !tbaa !13
  br label %690

690:                                              ; preds = %701, %653
  %691 = load i64, ptr %11, align 8, !tbaa !13
  %692 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %26, i32 0, i32 0
  %693 = load i64, ptr %692, align 8, !tbaa !28
  %694 = sub nsw i64 %693, 1
  %695 = icmp sle i64 %691, %694
  br i1 %695, label %696, label %704

696:                                              ; preds = %690
  %697 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %26, i32 0, i32 4
  %698 = load ptr, ptr %697, align 8, !tbaa !19
  %699 = load i64, ptr %11, align 8, !tbaa !13
  %700 = getelementptr inbounds i64, ptr %698, i64 %699
  store i64 0, ptr %700, align 8, !tbaa !13
  br label %701

701:                                              ; preds = %696
  %702 = load i64, ptr %11, align 8, !tbaa !13
  %703 = add nsw i64 %702, 1
  store i64 %703, ptr %11, align 8, !tbaa !13
  br label %690, !llvm.loop !37

704:                                              ; preds = %690
  store i64 0, ptr %14, align 8, !tbaa !13
  br label %705

705:                                              ; preds = %757, %704
  %706 = load i64, ptr %14, align 8, !tbaa !13
  %707 = load i64, ptr %10, align 8, !tbaa !13
  %708 = sub nsw i64 %707, 1
  %709 = icmp sle i64 %706, %708
  br i1 %709, label %710, label %760

710:                                              ; preds = %705
  %711 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl10hqrndunit2EPNS_10hqrndstateEPdS2_PNS_8ae_stateE(ptr noundef %44, ptr noundef %19, ptr noundef %20, ptr noundef %711)
  %712 = load double, ptr %19, align 8, !tbaa !11
  %713 = load double, ptr %19, align 8, !tbaa !11
  %714 = load double, ptr %20, align 8, !tbaa !11
  %715 = load double, ptr %20, align 8, !tbaa !11
  %716 = fmul double %714, %715
  %717 = call double @llvm.fmuladd.f64(double %712, double %713, double %716)
  %718 = fsub double %717, 1.000000e+00
  %719 = load ptr, ptr %4, align 8, !tbaa !9
  %720 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %718, ptr noundef %719)
  %721 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %720, double noundef 5.000000e-14)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %39, i1 noundef zeroext %721, ptr noundef @.str.19, i32 noundef 5153, ptr noundef @.str.35)
  %722 = load double, ptr %19, align 8, !tbaa !11
  %723 = load double, ptr %20, align 8, !tbaa !11
  %724 = load ptr, ptr %4, align 8, !tbaa !9
  %725 = call noundef double @_ZN11alglib_impl8ae_atan2EddPNS_8ae_stateE(double noundef %722, double noundef %723, ptr noundef %724)
  %726 = fadd double %725, 0x400921FB54442D18
  %727 = fdiv double %726, 0x401921FB54442D18
  %728 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %26, i32 0, i32 0
  %729 = load i64, ptr %728, align 8, !tbaa !28
  %730 = sitofp i64 %729 to double
  %731 = fmul double %727, %730
  %732 = load ptr, ptr %4, align 8, !tbaa !9
  %733 = call noundef i64 @_ZN11alglib_impl9ae_ifloorEdPNS_8ae_stateE(double noundef %731, ptr noundef %732)
  store i64 %733, ptr %13, align 8, !tbaa !13
  %734 = load i64, ptr %13, align 8, !tbaa !13
  %735 = icmp slt i64 %734, 0
  br i1 %735, label %736, label %737

736:                                              ; preds = %710
  store i64 0, ptr %13, align 8, !tbaa !13
  br label %737

737:                                              ; preds = %736, %710
  %738 = load i64, ptr %13, align 8, !tbaa !13
  %739 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %26, i32 0, i32 0
  %740 = load i64, ptr %739, align 8, !tbaa !28
  %741 = icmp sge i64 %738, %740
  br i1 %741, label %742, label %746

742:                                              ; preds = %737
  %743 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %26, i32 0, i32 0
  %744 = load i64, ptr %743, align 8, !tbaa !28
  %745 = sub nsw i64 %744, 1
  store i64 %745, ptr %13, align 8, !tbaa !13
  br label %746

746:                                              ; preds = %742, %737
  %747 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %26, i32 0, i32 4
  %748 = load ptr, ptr %747, align 8, !tbaa !19
  %749 = load i64, ptr %13, align 8, !tbaa !13
  %750 = getelementptr inbounds i64, ptr %748, i64 %749
  %751 = load i64, ptr %750, align 8, !tbaa !13
  %752 = add nsw i64 %751, 1
  %753 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %26, i32 0, i32 4
  %754 = load ptr, ptr %753, align 8, !tbaa !19
  %755 = load i64, ptr %13, align 8, !tbaa !13
  %756 = getelementptr inbounds i64, ptr %754, i64 %755
  store i64 %752, ptr %756, align 8, !tbaa !13
  br label %757

757:                                              ; preds = %746
  %758 = load i64, ptr %14, align 8, !tbaa !13
  %759 = add nsw i64 %758, 1
  store i64 %759, ptr %14, align 8, !tbaa !13
  br label %705, !llvm.loop !38

760:                                              ; preds = %705
  store i64 0, ptr %11, align 8, !tbaa !13
  br label %761

761:                                              ; preds = %799, %760
  %762 = load i64, ptr %11, align 8, !tbaa !13
  %763 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %26, i32 0, i32 0
  %764 = load i64, ptr %763, align 8, !tbaa !28
  %765 = sub nsw i64 %764, 1
  %766 = icmp sle i64 %762, %765
  br i1 %766, label %767, label %802

767:                                              ; preds = %761
  %768 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %26, i32 0, i32 4
  %769 = load ptr, ptr %768, align 8, !tbaa !19
  %770 = load i64, ptr %11, align 8, !tbaa !13
  %771 = getelementptr inbounds i64, ptr %769, i64 %770
  %772 = load i64, ptr %771, align 8, !tbaa !13
  %773 = sitofp i64 %772 to double
  %774 = load i64, ptr %10, align 8, !tbaa !13
  %775 = sitofp i64 %774 to double
  %776 = fmul double 9.000000e-01, %775
  %777 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %26, i32 0, i32 0
  %778 = load i64, ptr %777, align 8, !tbaa !28
  %779 = sitofp i64 %778 to double
  %780 = fdiv double %776, %779
  %781 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %773, double noundef %780)
  br i1 %781, label %797, label %782

782:                                              ; preds = %767
  %783 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %26, i32 0, i32 4
  %784 = load ptr, ptr %783, align 8, !tbaa !19
  %785 = load i64, ptr %11, align 8, !tbaa !13
  %786 = getelementptr inbounds i64, ptr %784, i64 %785
  %787 = load i64, ptr %786, align 8, !tbaa !13
  %788 = sitofp i64 %787 to double
  %789 = load i64, ptr %10, align 8, !tbaa !13
  %790 = sitofp i64 %789 to double
  %791 = fmul double 1.100000e+00, %790
  %792 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %26, i32 0, i32 0
  %793 = load i64, ptr %792, align 8, !tbaa !28
  %794 = sitofp i64 %793 to double
  %795 = fdiv double %791, %794
  %796 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %788, double noundef %795)
  br label %797

797:                                              ; preds = %782, %767
  %798 = phi i1 [ true, %767 ], [ %796, %782 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %39, i1 noundef zeroext %798, ptr noundef @.str.19, i32 noundef 5167, ptr noundef @.str.36)
  br label %799

799:                                              ; preds = %797
  %800 = load i64, ptr %11, align 8, !tbaa !13
  %801 = add nsw i64 %800, 1
  store i64 %801, ptr %11, align 8, !tbaa !13
  br label %761, !llvm.loop !39

802:                                              ; preds = %761
  %803 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL24testhqrndunit_unsetstatePN11alglib_impl10hqrndstateEPNS_8ae_stateE(ptr noundef %44, ptr noundef %803)
  %804 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14hqrndrandomizeEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %44, ptr noundef %804)
  store double 0.000000e+00, ptr %41, align 8, !tbaa !11
  %805 = load ptr, ptr %4, align 8, !tbaa !9
  %806 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %805)
  %807 = call double @llvm.fmuladd.f64(double 5.000000e+00, double %806, double 2.000000e+00)
  store double %807, ptr %31, align 8, !tbaa !11
  store i64 0, ptr %11, align 8, !tbaa !13
  br label %808

808:                                              ; preds = %821, %802
  %809 = load i64, ptr %11, align 8, !tbaa !13
  %810 = load i64, ptr %7, align 8, !tbaa !13
  %811 = sub nsw i64 %810, 1
  %812 = icmp sle i64 %809, %811
  br i1 %812, label %813, label %824

813:                                              ; preds = %808
  %814 = load double, ptr %31, align 8, !tbaa !11
  %815 = load ptr, ptr %4, align 8, !tbaa !9
  %816 = call noundef double @_ZN11alglib_impl16hqrndexponentialEPNS_10hqrndstateEdPNS_8ae_stateE(ptr noundef %44, double noundef %814, ptr noundef %815)
  %817 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %818 = load ptr, ptr %817, align 8, !tbaa !19
  %819 = load i64, ptr %11, align 8, !tbaa !13
  %820 = getelementptr inbounds double, ptr %818, i64 %819
  store double %816, ptr %820, align 8, !tbaa !11
  br label %821

821:                                              ; preds = %813
  %822 = load i64, ptr %11, align 8, !tbaa !13
  %823 = add nsw i64 %822, 1
  store i64 %823, ptr %11, align 8, !tbaa !13
  br label %808, !llvm.loop !40

824:                                              ; preds = %808
  store i64 0, ptr %11, align 8, !tbaa !13
  br label %825

825:                                              ; preds = %843, %824
  %826 = load i64, ptr %11, align 8, !tbaa !13
  %827 = load i64, ptr %7, align 8, !tbaa !13
  %828 = sub nsw i64 %827, 1
  %829 = icmp sle i64 %826, %828
  br i1 %829, label %830, label %846

830:                                              ; preds = %825
  %831 = load i8, ptr %35, align 1, !tbaa !5, !range !15, !noundef !16
  %832 = trunc i8 %831 to i1
  br i1 %832, label %840, label %833

833:                                              ; preds = %830
  %834 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %835 = load ptr, ptr %834, align 8, !tbaa !19
  %836 = load i64, ptr %11, align 8, !tbaa !13
  %837 = getelementptr inbounds double, ptr %835, i64 %836
  %838 = load double, ptr %837, align 8, !tbaa !11
  %839 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %838, double noundef 0.000000e+00)
  br label %840

840:                                              ; preds = %833, %830
  %841 = phi i1 [ true, %830 ], [ %839, %833 ]
  %842 = zext i1 %841 to i8
  store i8 %842, ptr %35, align 1, !tbaa !5
  br label %843

843:                                              ; preds = %840
  %844 = load i64, ptr %11, align 8, !tbaa !13
  %845 = add nsw i64 %844, 1
  store i64 %845, ptr %11, align 8, !tbaa !13
  br label %825, !llvm.loop !41

846:                                              ; preds = %825
  %847 = load i64, ptr %7, align 8, !tbaa !13
  %848 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL25testhqrndunit_calculatemvPKN11alglib_impl9ae_vectorElPdS3_S3_S3_PNS_8ae_stateE(ptr noundef %21, i64 noundef %847, ptr noundef %27, ptr noundef %28, ptr noundef %29, ptr noundef %30, ptr noundef %848)
  %849 = load double, ptr %28, align 8, !tbaa !11
  %850 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %849, double noundef 0.000000e+00)
  br i1 %850, label %851, label %863

851:                                              ; preds = %846
  %852 = load double, ptr %41, align 8, !tbaa !11
  %853 = load double, ptr %27, align 8, !tbaa !11
  %854 = load double, ptr %31, align 8, !tbaa !11
  %855 = fdiv double 1.000000e+00, %854
  %856 = fsub double %853, %855
  %857 = load double, ptr %28, align 8, !tbaa !11
  %858 = fdiv double %856, %857
  %859 = load ptr, ptr %4, align 8, !tbaa !9
  %860 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %858, ptr noundef %859)
  %861 = load ptr, ptr %4, align 8, !tbaa !9
  %862 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %852, double noundef %860, ptr noundef %861)
  store double %862, ptr %41, align 8, !tbaa !11
  br label %864

863:                                              ; preds = %846
  store i8 1, ptr %40, align 1, !tbaa !5
  br label %864

864:                                              ; preds = %863, %851
  %865 = load double, ptr %30, align 8, !tbaa !11
  %866 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %865, double noundef 0.000000e+00)
  br i1 %866, label %867, label %879

867:                                              ; preds = %864
  %868 = load double, ptr %41, align 8, !tbaa !11
  %869 = load double, ptr %29, align 8, !tbaa !11
  %870 = load double, ptr %31, align 8, !tbaa !11
  %871 = fdiv double 1.000000e+00, %870
  %872 = fsub double %869, %871
  %873 = load double, ptr %30, align 8, !tbaa !11
  %874 = fdiv double %872, %873
  %875 = load ptr, ptr %4, align 8, !tbaa !9
  %876 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %874, ptr noundef %875)
  %877 = load ptr, ptr %4, align 8, !tbaa !9
  %878 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %868, double noundef %876, ptr noundef %877)
  store double %878, ptr %41, align 8, !tbaa !11
  br label %880

879:                                              ; preds = %864
  store i8 1, ptr %40, align 1, !tbaa !5
  br label %880

880:                                              ; preds = %879, %867
  %881 = load i8, ptr %40, align 1, !tbaa !5, !range !15, !noundef !16
  %882 = trunc i8 %881 to i1
  br i1 %882, label %887, label %883

883:                                              ; preds = %880
  %884 = load double, ptr %41, align 8, !tbaa !11
  %885 = load double, ptr %8, align 8, !tbaa !11
  %886 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %884, double noundef %885)
  br label %887

887:                                              ; preds = %883, %880
  %888 = phi i1 [ true, %880 ], [ %886, %883 ]
  %889 = zext i1 %888 to i8
  store i8 %889, ptr %40, align 1, !tbaa !5
  %890 = load ptr, ptr %4, align 8, !tbaa !9
  %891 = call noundef zeroext i1 @_Z17hqrnddiscretetestbPN11alglib_impl8ae_stateE(i1 noundef zeroext true, ptr noundef %890)
  %892 = zext i1 %891 to i8
  store i8 %892, ptr %42, align 1, !tbaa !5
  %893 = load ptr, ptr %4, align 8, !tbaa !9
  %894 = call noundef zeroext i1 @_Z19hqrndcontinuoustestbPN11alglib_impl8ae_stateE(i1 noundef zeroext true, ptr noundef %893)
  %895 = zext i1 %894 to i8
  store i8 %895, ptr %43, align 1, !tbaa !5
  %896 = load i8, ptr %32, align 1, !tbaa !5, !range !15, !noundef !16
  %897 = trunc i8 %896 to i1
  br i1 %897, label %919, label %898

898:                                              ; preds = %887
  %899 = load i8, ptr %33, align 1, !tbaa !5, !range !15, !noundef !16
  %900 = trunc i8 %899 to i1
  br i1 %900, label %919, label %901

901:                                              ; preds = %898
  %902 = load i8, ptr %35, align 1, !tbaa !5, !range !15, !noundef !16
  %903 = trunc i8 %902 to i1
  br i1 %903, label %919, label %904

904:                                              ; preds = %901
  %905 = load i8, ptr %37, align 1, !tbaa !5, !range !15, !noundef !16
  %906 = trunc i8 %905 to i1
  br i1 %906, label %919, label %907

907:                                              ; preds = %904
  %908 = load i8, ptr %39, align 1, !tbaa !5, !range !15, !noundef !16
  %909 = trunc i8 %908 to i1
  br i1 %909, label %919, label %910

910:                                              ; preds = %907
  %911 = load i8, ptr %40, align 1, !tbaa !5, !range !15, !noundef !16
  %912 = trunc i8 %911 to i1
  br i1 %912, label %919, label %913

913:                                              ; preds = %910
  %914 = load i8, ptr %42, align 1, !tbaa !5, !range !15, !noundef !16
  %915 = trunc i8 %914 to i1
  br i1 %915, label %919, label %916

916:                                              ; preds = %913
  %917 = load i8, ptr %43, align 1, !tbaa !5, !range !15, !noundef !16
  %918 = trunc i8 %917 to i1
  br label %919

919:                                              ; preds = %916, %913, %910, %907, %904, %901, %898, %887
  %920 = phi i1 [ true, %913 ], [ true, %910 ], [ true, %907 ], [ true, %904 ], [ true, %901 ], [ true, %898 ], [ true, %887 ], [ %918, %916 ]
  %921 = zext i1 %920 to i8
  store i8 %921, ptr %6, align 1, !tbaa !5
  %922 = load i8, ptr %3, align 1, !tbaa !5, !range !15, !noundef !16
  %923 = trunc i8 %922 to i1
  br i1 %923, label %998, label %924

924:                                              ; preds = %919
  %925 = call i32 (ptr, ...) @printf(ptr noundef @.str.37)
  %926 = call i32 (ptr, ...) @printf(ptr noundef @.str.38)
  %927 = load i8, ptr %32, align 1, !tbaa !5, !range !15, !noundef !16
  %928 = trunc i8 %927 to i1
  br i1 %928, label %931, label %929

929:                                              ; preds = %924
  %930 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %933

931:                                              ; preds = %924
  %932 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %933

933:                                              ; preds = %931, %929
  %934 = call i32 (ptr, ...) @printf(ptr noundef @.str.39)
  %935 = load i8, ptr %33, align 1, !tbaa !5, !range !15, !noundef !16
  %936 = trunc i8 %935 to i1
  br i1 %936, label %939, label %937

937:                                              ; preds = %933
  %938 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %941

939:                                              ; preds = %933
  %940 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %941

941:                                              ; preds = %939, %937
  %942 = call i32 (ptr, ...) @printf(ptr noundef @.str.40)
  %943 = load i8, ptr %35, align 1, !tbaa !5, !range !15, !noundef !16
  %944 = trunc i8 %943 to i1
  br i1 %944, label %947, label %945

945:                                              ; preds = %941
  %946 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %949

947:                                              ; preds = %941
  %948 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %949

949:                                              ; preds = %947, %945
  %950 = call i32 (ptr, ...) @printf(ptr noundef @.str.41)
  %951 = load i8, ptr %37, align 1, !tbaa !5, !range !15, !noundef !16
  %952 = trunc i8 %951 to i1
  br i1 %952, label %955, label %953

953:                                              ; preds = %949
  %954 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %957

955:                                              ; preds = %949
  %956 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %957

957:                                              ; preds = %955, %953
  %958 = call i32 (ptr, ...) @printf(ptr noundef @.str.42)
  %959 = load i8, ptr %39, align 1, !tbaa !5, !range !15, !noundef !16
  %960 = trunc i8 %959 to i1
  br i1 %960, label %963, label %961

961:                                              ; preds = %957
  %962 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %965

963:                                              ; preds = %957
  %964 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %965

965:                                              ; preds = %963, %961
  %966 = call i32 (ptr, ...) @printf(ptr noundef @.str.43)
  %967 = load i8, ptr %40, align 1, !tbaa !5, !range !15, !noundef !16
  %968 = trunc i8 %967 to i1
  br i1 %968, label %971, label %969

969:                                              ; preds = %965
  %970 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %973

971:                                              ; preds = %965
  %972 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %973

973:                                              ; preds = %971, %969
  %974 = call i32 (ptr, ...) @printf(ptr noundef @.str.44)
  %975 = load i8, ptr %42, align 1, !tbaa !5, !range !15, !noundef !16
  %976 = trunc i8 %975 to i1
  br i1 %976, label %979, label %977

977:                                              ; preds = %973
  %978 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %981

979:                                              ; preds = %973
  %980 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %981

981:                                              ; preds = %979, %977
  %982 = call i32 (ptr, ...) @printf(ptr noundef @.str.45)
  %983 = load i8, ptr %43, align 1, !tbaa !5, !range !15, !noundef !16
  %984 = trunc i8 %983 to i1
  br i1 %984, label %987, label %985

985:                                              ; preds = %981
  %986 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %989

987:                                              ; preds = %981
  %988 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %989

989:                                              ; preds = %987, %985
  %990 = load i8, ptr %6, align 1, !tbaa !5, !range !15, !noundef !16
  %991 = trunc i8 %990 to i1
  br i1 %991, label %992, label %994

992:                                              ; preds = %989
  %993 = call i32 (ptr, ...) @printf(ptr noundef @.str.46)
  br label %996

994:                                              ; preds = %989
  %995 = call i32 (ptr, ...) @printf(ptr noundef @.str.47)
  br label %996

996:                                              ; preds = %994, %992
  %997 = call i32 (ptr, ...) @printf(ptr noundef @.str.17)
  br label %998

998:                                              ; preds = %996, %919
  %999 = load i8, ptr %6, align 1, !tbaa !5, !range !15, !noundef !16
  %1000 = trunc i8 %999 to i1
  %1001 = xor i1 %1000, true
  %1002 = zext i1 %1001 to i8
  store i8 %1002, ptr %45, align 1, !tbaa !5
  %1003 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1003)
  %1004 = load i8, ptr %45, align 1, !tbaa !5, !range !15, !noundef !16
  %1005 = trunc i8 %1004 to i1
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %44) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #6
  ret i1 %1005
}

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

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

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

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

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

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

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

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

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

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

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

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

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 void @_ZN11alglib_impl12hqrndnormal2EPNS_10hqrndstateEPdS2_PNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #1

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

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

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

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

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

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

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

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

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

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

declare noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef) #1

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z17hqrnddiscretetestbPN11alglib_impl8ae_stateE(i1 noundef zeroext, ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z19hqrndcontinuoustestbPN11alglib_impl8ae_stateE(i1 noundef zeroext, ptr noundef) #3

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


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

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

@.str.2 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [22 x i8], align 1

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

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) 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

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

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

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

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

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

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

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

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 #3

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z9testhqrndbPN11alglib_impl8ae_stateE(i1 noundef zeroext %0, ptr noundef %1) local_unnamed_addr #4 {
  %3 = alloca %"struct.alglib_impl::ae_frame", align 8
  %4 = alloca double, align 8
  %5 = alloca double, align 8
  %6 = alloca %"struct.alglib_impl::ae_vector", align 8
  %7 = alloca %"struct.alglib_impl::ae_vector", align 8
  %8 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %9 = alloca %"struct.alglib_impl::ae_vector", align 8
  %10 = alloca double, align 8
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  %14 = alloca i8, align 1
  %15 = alloca i8, align 1
  %16 = alloca %"struct.alglib_impl::hqrndstate", align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #8
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %6) #8
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %7) #8
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %8) #8
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %9) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %15) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #8
  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(64) %6, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %7, i8 0, i64 64, 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(24) %16, i8 0, i64 24, i1 false)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %6, 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 %7, 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 2, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl16_hqrndstate_initEPvPNS_8ae_stateEb(ptr noundef nonnull %16, ptr noundef %1, i1 noundef zeroext true)
  %17 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 100, ptr noundef %1)
  %18 = add nsw i64 %17, 100000
  store i8 0, ptr %14, align 1, !tbaa !5
  store i8 0, ptr %15, align 1, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %6, i64 noundef %18, ptr noundef %1)
  br label %19

19:                                               ; preds = %2, %33
  %.0318362 = phi i1 [ false, %2 ], [ %34, %33 ]
  %.0321361 = phi i64 [ 1, %2 ], [ %35, %33 ]
  %20 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 32000, ptr noundef %1)
  %21 = add nsw i64 %20, 1
  %22 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 32000, ptr noundef %1)
  %23 = add nsw i64 %22, 1
  call void @_ZL24testhqrndunit_unsetstatePN11alglib_impl10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  call void @_ZN11alglib_impl9hqrndseedEllPNS_10hqrndstateEPNS_8ae_stateE(i64 noundef %21, i64 noundef %23, ptr noundef nonnull %16, ptr noundef %1)
  %24 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef nonnull %16, i64 noundef 100, ptr noundef %1)
  call void @_ZL24testhqrndunit_unsetstatePN11alglib_impl10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  call void @_ZN11alglib_impl9hqrndseedEllPNS_10hqrndstateEPNS_8ae_stateE(i64 noundef %21, i64 noundef %23, ptr noundef nonnull %16, ptr noundef %1)
  %25 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef nonnull %16, i64 noundef 100, ptr noundef %1)
  %26 = icmp ne i64 %24, %25
  %27 = or i1 %.0318362, %26
  call void @_ZL24testhqrndunit_unsetstatePN11alglib_impl10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  call void @_ZN11alglib_impl9hqrndseedEllPNS_10hqrndstateEPNS_8ae_stateE(i64 noundef %21, i64 noundef %23, ptr noundef nonnull %16, ptr noundef %1)
  %28 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  store double %28, ptr %4, align 8, !tbaa !9
  call void @_ZL24testhqrndunit_unsetstatePN11alglib_impl10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  call void @_ZN11alglib_impl9hqrndseedEllPNS_10hqrndstateEPNS_8ae_stateE(i64 noundef %21, i64 noundef %23, ptr noundef nonnull %16, ptr noundef %1)
  %29 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  store double %29, ptr %5, align 8, !tbaa !9
  br i1 %27, label %33, label %30

30:                                               ; preds = %19
  %31 = load double, ptr %4, align 8, !tbaa !9
  %32 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %31, double noundef %29)
  br label %33

33:                                               ; preds = %30, %19
  %34 = phi i1 [ true, %19 ], [ %32, %30 ]
  %35 = add nuw nsw i64 %.0321361, 1
  %exitcond.not = icmp eq i64 %35, 51
  br i1 %exitcond.not, label %36, label %19, !llvm.loop !11

36:                                               ; preds = %33
  %37 = add i64 %17, 99999
  call void @_ZL24testhqrndunit_unsetstatePN11alglib_impl10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  call void @_ZN11alglib_impl14hqrndrandomizeEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  %.not363 = icmp slt i64 %17, -99999
  br i1 %.not363, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %36
  %38 = getelementptr inbounds i8, ptr %6, i64 56
  %smax = call i64 @llvm.smax.i64(i64 %37, i64 0)
  br label %40

.preheader360:                                    ; preds = %40
  br i1 %.not363, label %._crit_edge, label %.lr.ph368

.lr.ph368:                                        ; preds = %.preheader360
  %39 = getelementptr inbounds i8, ptr %6, i64 56
  %smax431 = call i64 @llvm.smax.i64(i64 %37, i64 0)
  br label %45

40:                                               ; preds = %.lr.ph, %40
  %.0293364 = phi i64 [ 0, %.lr.ph ], [ %44, %40 ]
  %41 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  %42 = load ptr, ptr %38, align 8, !tbaa !13
  %43 = getelementptr inbounds double, ptr %42, i64 %.0293364
  store double %41, ptr %43, align 8, !tbaa !9
  %44 = add nuw i64 %.0293364, 1
  %exitcond430.not = icmp eq i64 %.0293364, %smax
  br i1 %exitcond430.not, label %.preheader360, label %40, !llvm.loop !14

45:                                               ; preds = %.lr.ph368, %56
  %.1367 = phi i64 [ 0, %.lr.ph368 ], [ %58, %56 ]
  %.0315366 = phi i1 [ false, %.lr.ph368 ], [ %57, %56 ]
  br i1 %.0315366, label %56, label %46

46:                                               ; preds = %45
  %47 = load ptr, ptr %39, align 8, !tbaa !13
  %48 = getelementptr inbounds double, ptr %47, i64 %.1367
  %49 = load double, ptr %48, align 8, !tbaa !9
  %50 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %49, double noundef 0.000000e+00)
  br i1 %50, label %56, label %51

51:                                               ; preds = %46
  %52 = load ptr, ptr %39, align 8, !tbaa !13
  %53 = getelementptr inbounds double, ptr %52, i64 %.1367
  %54 = load double, ptr %53, align 8, !tbaa !9
  %55 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %54, double noundef 1.000000e+00)
  br label %56

56:                                               ; preds = %51, %46, %45
  %57 = phi i1 [ true, %46 ], [ true, %45 ], [ %55, %51 ]
  %58 = add nuw i64 %.1367, 1
  %exitcond432.not = icmp eq i64 %.1367, %smax431
  br i1 %exitcond432.not, label %._crit_edge, label %45, !llvm.loop !15

._crit_edge:                                      ; preds = %56, %36, %.preheader360
  %.0315.lcssa = phi i1 [ false, %.preheader360 ], [ false, %36 ], [ %57, %56 ]
  call void @_ZL25testhqrndunit_calculatemvPKN11alglib_impl9ae_vectorElPdS3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %6, i64 noundef %18, ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef %1)
  %59 = load double, ptr %11, align 8, !tbaa !9
  %60 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %59, double noundef 0.000000e+00)
  br i1 %60, label %61, label %68

61:                                               ; preds = %._crit_edge
  %62 = load double, ptr %10, align 8, !tbaa !9
  %63 = fadd double %62, -5.000000e-01
  %64 = load double, ptr %11, align 8, !tbaa !9
  %65 = fdiv double %63, %64
  %66 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %65, ptr noundef %1)
  %67 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef 0.000000e+00, double noundef %66, ptr noundef %1)
  br label %68

68:                                               ; preds = %._crit_edge, %61
  %.1316 = phi i1 [ %.0315.lcssa, %61 ], [ true, %._crit_edge ]
  %.0313 = phi double [ %67, %61 ], [ 0.000000e+00, %._crit_edge ]
  %69 = load double, ptr %13, align 8, !tbaa !9
  %70 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %69, double noundef 0.000000e+00)
  br i1 %70, label %71, label %.thread

71:                                               ; preds = %68
  %72 = load double, ptr %12, align 8, !tbaa !9
  %73 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 0x3FB5555555555555, ptr noundef %1)
  %74 = fsub double %72, %73
  %75 = load double, ptr %13, align 8, !tbaa !9
  %76 = fdiv double %74, %75
  %77 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %76, ptr noundef %1)
  %78 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.0313, double noundef %77, ptr noundef %1)
  br i1 %.1316, label %.thread, label %79

79:                                               ; preds = %71
  %80 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %78, double noundef 7.000000e+00)
  br label %.thread

.thread:                                          ; preds = %68, %79, %71
  %81 = phi i1 [ true, %71 ], [ %80, %79 ], [ true, %68 ]
  call void @_ZL24testhqrndunit_unsetstatePN11alglib_impl10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  call void @_ZN11alglib_impl14hqrndrandomizeEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  %82 = getelementptr inbounds i8, ptr %6, i64 56
  %smax433 = call i64 @llvm.smax.i64(i64 %37, i64 0)
  br label %.preheader359

.preheader359:                                    ; preds = %.thread, %131
  %.0380 = phi i64 [ 2, %.thread ], [ %132, %131 ]
  %.0300379 = phi double [ 0.000000e+00, %.thread ], [ %.2302, %131 ]
  %.0305378 = phi i8 [ 0, %.thread ], [ %.3308, %131 ]
  br i1 %.not363, label %._crit_edge376, label %.lr.ph371

.preheader358:                                    ; preds = %.lr.ph371
  br i1 %.not363, label %._crit_edge376, label %.lr.ph375

.lr.ph375:                                        ; preds = %.preheader358
  %83 = uitofp nneg i64 %.0380 to double
  br label %89

.lr.ph371:                                        ; preds = %.preheader359, %.lr.ph371
  %.2370 = phi i64 [ %88, %.lr.ph371 ], [ 0, %.preheader359 ]
  %84 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef nonnull %16, i64 noundef %.0380, ptr noundef %1)
  %85 = sitofp i64 %84 to double
  %86 = load ptr, ptr %82, align 8, !tbaa !13
  %87 = getelementptr inbounds double, ptr %86, i64 %.2370
  store double %85, ptr %87, align 8, !tbaa !9
  %88 = add nuw i64 %.2370, 1
  %exitcond434.not = icmp eq i64 %.2370, %smax433
  br i1 %exitcond434.not, label %.preheader358, label %.lr.ph371, !llvm.loop !16

89:                                               ; preds = %.lr.ph375, %101
  %.3374 = phi i64 [ 0, %.lr.ph375 ], [ %104, %101 ]
  %.1306373 = phi i8 [ %.0305378, %.lr.ph375 ], [ %103, %101 ]
  %90 = trunc nuw i8 %.1306373 to i1
  br i1 %90, label %101, label %91

91:                                               ; preds = %89
  %92 = load ptr, ptr %82, align 8, !tbaa !13
  %93 = getelementptr inbounds double, ptr %92, i64 %.3374
  %94 = load double, ptr %93, align 8, !tbaa !9
  %95 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %94, double noundef 0.000000e+00)
  br i1 %95, label %101, label %96

96:                                               ; preds = %91
  %97 = load ptr, ptr %82, align 8, !tbaa !13
  %98 = getelementptr inbounds double, ptr %97, i64 %.3374
  %99 = load double, ptr %98, align 8, !tbaa !9
  %100 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %99, double noundef %83)
  br label %101

101:                                              ; preds = %96, %91, %89
  %102 = phi i1 [ true, %91 ], [ true, %89 ], [ %100, %96 ]
  %103 = zext i1 %102 to i8
  %104 = add nuw i64 %.3374, 1
  %exitcond436.not = icmp eq i64 %.3374, %smax433
  br i1 %exitcond436.not, label %._crit_edge376, label %89, !llvm.loop !17

._crit_edge376:                                   ; preds = %101, %.preheader359, %.preheader358
  %.1306.lcssa = phi i8 [ %.0305378, %.preheader358 ], [ %.0305378, %.preheader359 ], [ %103, %101 ]
  call void @_ZL25testhqrndunit_calculatemvPKN11alglib_impl9ae_vectorElPdS3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %6, i64 noundef %18, ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef %1)
  %105 = load double, ptr %11, align 8, !tbaa !9
  %106 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %105, double noundef 0.000000e+00)
  br i1 %106, label %107, label %116

107:                                              ; preds = %._crit_edge376
  %108 = load double, ptr %10, align 8, !tbaa !9
  %109 = add nsw i64 %.0380, -1
  %110 = sitofp i64 %109 to double
  %111 = call double @llvm.fmuladd.f64(double %110, double -5.000000e-01, double %108)
  %112 = load double, ptr %11, align 8, !tbaa !9
  %113 = fdiv double %111, %112
  %114 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %113, ptr noundef %1)
  %115 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.0300379, double noundef %114, ptr noundef %1)
  br label %116

116:                                              ; preds = %._crit_edge376, %107
  %.2307 = phi i8 [ %.1306.lcssa, %107 ], [ 1, %._crit_edge376 ]
  %.1301 = phi double [ %115, %107 ], [ %.0300379, %._crit_edge376 ]
  %117 = load double, ptr %13, align 8, !tbaa !9
  %118 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %117, double noundef 0.000000e+00)
  br i1 %118, label %119, label %131

119:                                              ; preds = %116
  %120 = load double, ptr %12, align 8, !tbaa !9
  %121 = uitofp nneg i64 %.0380 to double
  %122 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %121, ptr noundef %1)
  %123 = fadd double %122, -1.000000e+00
  %124 = fdiv double %123, 1.200000e+01
  %125 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %124, ptr noundef %1)
  %126 = fsub double %120, %125
  %127 = load double, ptr %13, align 8, !tbaa !9
  %128 = fdiv double %126, %127
  %129 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %128, ptr noundef %1)
  %130 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.1301, double noundef %129, ptr noundef %1)
  br label %131

131:                                              ; preds = %116, %119
  %.3308 = phi i8 [ %.2307, %119 ], [ 1, %116 ]
  %.2302 = phi double [ %130, %119 ], [ %.1301, %116 ]
  %132 = add nuw nsw i64 %.0380, 1
  %exitcond437.not = icmp eq i64 %132, 11
  br i1 %exitcond437.not, label %133, label %.preheader359, !llvm.loop !18

133:                                              ; preds = %131
  %134 = trunc nuw i8 %.3308 to i1
  br i1 %134, label %137, label %135

135:                                              ; preds = %133
  %136 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %.2302, double noundef 7.000000e+00)
  br label %137

137:                                              ; preds = %135, %133
  %138 = phi i1 [ true, %133 ], [ %136, %135 ]
  call void @_ZL24testhqrndunit_unsetstatePN11alglib_impl10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  call void @_ZN11alglib_impl14hqrndrandomizeEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  br i1 %.not363, label %._crit_edge389, label %.lr.ph384

.preheader357:                                    ; preds = %.lr.ph384
  br i1 %.not363, label %._crit_edge389, label %.lr.ph388

.lr.ph384:                                        ; preds = %137, %.lr.ph384
  %.4382 = phi i64 [ %143, %.lr.ph384 ], [ 0, %137 ]
  %139 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef nonnull %16, i64 noundef 1431655708, ptr noundef %1)
  %140 = sitofp i64 %139 to double
  %141 = load ptr, ptr %82, align 8, !tbaa !13
  %142 = getelementptr inbounds double, ptr %141, i64 %.4382
  store double %140, ptr %142, align 8, !tbaa !9
  %143 = add nuw i64 %.4382, 1
  %exitcond439.not = icmp eq i64 %.4382, %smax433
  br i1 %exitcond439.not, label %.preheader357, label %.lr.ph384, !llvm.loop !19

.lr.ph388:                                        ; preds = %.preheader357, %154
  %.5387 = phi i64 [ %156, %154 ], [ 0, %.preheader357 ]
  %.4309.in386 = phi i1 [ %155, %154 ], [ %138, %.preheader357 ]
  br i1 %.4309.in386, label %154, label %144

144:                                              ; preds = %.lr.ph388
  %145 = load ptr, ptr %82, align 8, !tbaa !13
  %146 = getelementptr inbounds double, ptr %145, i64 %.5387
  %147 = load double, ptr %146, align 8, !tbaa !9
  %148 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %147, double noundef 0.000000e+00)
  br i1 %148, label %154, label %149

149:                                              ; preds = %144
  %150 = load ptr, ptr %82, align 8, !tbaa !13
  %151 = getelementptr inbounds double, ptr %150, i64 %.5387
  %152 = load double, ptr %151, align 8, !tbaa !9
  %153 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %152, double noundef 0x41D5555547000000)
  br label %154

154:                                              ; preds = %149, %144, %.lr.ph388
  %155 = phi i1 [ true, %144 ], [ true, %.lr.ph388 ], [ %153, %149 ]
  %156 = add nuw i64 %.5387, 1
  %exitcond441.not = icmp eq i64 %.5387, %smax433
  br i1 %exitcond441.not, label %._crit_edge389, label %.lr.ph388, !llvm.loop !20

._crit_edge389:                                   ; preds = %154, %137, %.preheader357
  %.4309.in.lcssa = phi i1 [ %138, %.preheader357 ], [ %138, %137 ], [ %155, %154 ]
  call void @_ZL25testhqrndunit_calculatemvPKN11alglib_impl9ae_vectorElPdS3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %6, i64 noundef %18, ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef %1)
  %157 = load double, ptr %11, align 8, !tbaa !9
  %158 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %157, double noundef 0.000000e+00)
  br i1 %158, label %159, label %166

159:                                              ; preds = %._crit_edge389
  %160 = load double, ptr %10, align 8, !tbaa !9
  %161 = fadd double %160, 0xC1C5555546C00000
  %162 = load double, ptr %11, align 8, !tbaa !9
  %163 = fdiv double %161, %162
  %164 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %163, ptr noundef %1)
  %165 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef 0.000000e+00, double noundef %164, ptr noundef %1)
  br label %166

166:                                              ; preds = %._crit_edge389, %159
  %.5310 = phi i1 [ %.4309.in.lcssa, %159 ], [ true, %._crit_edge389 ]
  %.3303 = phi double [ %165, %159 ], [ 0.000000e+00, %._crit_edge389 ]
  %167 = load double, ptr %13, align 8, !tbaa !9
  %168 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %167, double noundef 0.000000e+00)
  br i1 %168, label %169, label %.thread348

169:                                              ; preds = %166
  %170 = load double, ptr %12, align 8, !tbaa !9
  %171 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef 0x41D5555547000000, ptr noundef %1)
  %172 = fadd double %171, -1.000000e+00
  %173 = fdiv double %172, 1.200000e+01
  %174 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %173, ptr noundef %1)
  %175 = fsub double %170, %174
  %176 = load double, ptr %13, align 8, !tbaa !9
  %177 = fdiv double %175, %176
  %178 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %177, ptr noundef %1)
  %179 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.3303, double noundef %178, ptr noundef %1)
  br i1 %.5310, label %.thread348, label %180

180:                                              ; preds = %169
  %181 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %179, double noundef 7.000000e+00)
  br label %.thread348

.thread348:                                       ; preds = %166, %180, %169
  %182 = phi i1 [ true, %169 ], [ %181, %180 ], [ true, %166 ]
  call void @_ZL24testhqrndunit_unsetstatePN11alglib_impl10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  call void @_ZN11alglib_impl14hqrndrandomizeEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  %183 = icmp sgt i64 %17, -100000
  br i1 %183, label %.lr.ph392, label %._crit_edge393

.lr.ph392:                                        ; preds = %.thread348, %193
  %.6391 = phi i64 [ %194, %193 ], [ 0, %.thread348 ]
  call void @_ZN11alglib_impl12hqrndnormal2EPNS_10hqrndstateEPdS2_PNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %1)
  %184 = load double, ptr %4, align 8, !tbaa !9
  %185 = load ptr, ptr %82, align 8, !tbaa !13
  %186 = getelementptr inbounds double, ptr %185, i64 %.6391
  store double %184, ptr %186, align 8, !tbaa !9
  %187 = or disjoint i64 %.6391, 1
  %188 = icmp slt i64 %187, %18
  br i1 %188, label %189, label %193

189:                                              ; preds = %.lr.ph392
  %190 = load double, ptr %5, align 8, !tbaa !9
  %191 = load ptr, ptr %82, align 8, !tbaa !13
  %192 = getelementptr inbounds double, ptr %191, i64 %187
  store double %190, ptr %192, align 8, !tbaa !9
  br label %193

193:                                              ; preds = %189, %.lr.ph392
  %194 = add nuw nsw i64 %.6391, 2
  %195 = icmp slt i64 %194, %18
  br i1 %195, label %.lr.ph392, label %._crit_edge393, !llvm.loop !21

._crit_edge393:                                   ; preds = %193, %.thread348
  call void @_ZL25testhqrndunit_calculatemvPKN11alglib_impl9ae_vectorElPdS3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %6, i64 noundef %18, ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef %1)
  %196 = load double, ptr %11, align 8, !tbaa !9
  %197 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %196, double noundef 0.000000e+00)
  br i1 %197, label %198, label %204

198:                                              ; preds = %._crit_edge393
  %199 = load double, ptr %10, align 8, !tbaa !9
  %200 = load double, ptr %11, align 8, !tbaa !9
  %201 = fdiv double %199, %200
  %202 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %201, ptr noundef %1)
  %203 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef 0.000000e+00, double noundef %202, ptr noundef %1)
  br label %205

204:                                              ; preds = %._crit_edge393
  store i8 1, ptr %14, align 1, !tbaa !5
  br label %205

205:                                              ; preds = %204, %198
  %.0298 = phi double [ %203, %198 ], [ 0.000000e+00, %204 ]
  %206 = load double, ptr %13, align 8, !tbaa !9
  %207 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %206, double noundef 0.000000e+00)
  br i1 %207, label %208, label %215

208:                                              ; preds = %205
  %209 = load double, ptr %12, align 8, !tbaa !9
  %210 = fadd double %209, -1.000000e+00
  %211 = load double, ptr %13, align 8, !tbaa !9
  %212 = fdiv double %210, %211
  %213 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %212, ptr noundef %1)
  %214 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.0298, double noundef %213, ptr noundef %1)
  br label %216

215:                                              ; preds = %205
  store i8 1, ptr %14, align 1, !tbaa !5
  br label %216

216:                                              ; preds = %215, %208
  %.1299 = phi double [ %214, %208 ], [ %.0298, %215 ]
  %217 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %.1299, double noundef 7.000000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %14, i1 noundef zeroext %217, ptr noundef nonnull @.str.19, i32 noundef 5082, ptr noundef nonnull @.str.20)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %6, i64 noundef 0, ptr noundef %1)
  call void @_ZN11alglib_impl12hqrndnormalvEPNS_10hqrndstateElPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %16, i64 noundef %18, ptr noundef nonnull %6, ptr noundef %1)
  %218 = load i64, ptr %6, align 8, !tbaa !22
  %219 = icmp ne i64 %218, %18
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %14, i1 noundef zeroext %219, ptr noundef nonnull @.str.19, i32 noundef 5085, ptr noundef nonnull @.str.21)
  %220 = call noundef zeroext i1 @_ZN11alglib_impl14isfinitevectorEPKNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %6, i64 noundef %18, ptr noundef %1)
  %221 = xor i1 %220, true
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %14, i1 noundef zeroext %221, ptr noundef nonnull @.str.19, i32 noundef 5086, ptr noundef nonnull @.str.22)
  %222 = load i8, ptr %14, align 1, !tbaa !5, !range !27, !noundef !28
  %223 = trunc nuw i8 %222 to i1
  br i1 %223, label %295, label %224

224:                                              ; preds = %216
  call void @_ZL25testhqrndunit_calculatemvPKN11alglib_impl9ae_vectorElPdS3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %6, i64 noundef %18, ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef %1)
  %225 = load double, ptr %11, align 8, !tbaa !9
  %226 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %225, double noundef 0.000000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %14, i1 noundef zeroext %226, ptr noundef nonnull @.str.19, i32 noundef 5094, ptr noundef nonnull @.str.23)
  %227 = load double, ptr %13, align 8, !tbaa !9
  %228 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %227, double noundef 0.000000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %14, i1 noundef zeroext %228, ptr noundef nonnull @.str.19, i32 noundef 5095, ptr noundef nonnull @.str.24)
  %229 = load double, ptr %10, align 8, !tbaa !9
  %230 = load double, ptr %11, align 8, !tbaa !9
  %231 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %230, double noundef 1.000000e+00, ptr noundef %1)
  %232 = fdiv double %229, %231
  %233 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %232, ptr noundef %1)
  %234 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef 0.000000e+00, double noundef %233, ptr noundef %1)
  %235 = load double, ptr %12, align 8, !tbaa !9
  %236 = fadd double %235, -1.000000e+00
  %237 = load double, ptr %13, align 8, !tbaa !9
  %238 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %237, double noundef 1.000000e+00, ptr noundef %1)
  %239 = fdiv double %236, %238
  %240 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %239, ptr noundef %1)
  %241 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %234, double noundef %240, ptr noundef %1)
  %242 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %241, double noundef 7.000000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %14, i1 noundef zeroext %242, ptr noundef nonnull @.str.19, i32 noundef 5099, ptr noundef nonnull @.str.25)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %37, ptr noundef %1)
  %.not331394 = icmp slt i64 %17, -99998
  br i1 %.not331394, label %._crit_edge398, label %.lr.ph397

.lr.ph397:                                        ; preds = %224
  %243 = add i64 %17, 99998
  %244 = getelementptr inbounds i8, ptr %7, i64 56
  %smax442 = call i64 @llvm.smax.i64(i64 %243, i64 0)
  %245 = icmp slt i64 %243, 1
  br i1 %245, label %._crit_edge398.loopexit.unr-lcssa, label %.lr.ph397.new

.lr.ph397.new:                                    ; preds = %.lr.ph397
  %246 = add nuw i64 %smax442, 1
  %unroll_iter = and i64 %246, -2
  br label %247

247:                                              ; preds = %247, %.lr.ph397.new
  %.7395 = phi i64 [ 0, %.lr.ph397.new ], [ %258, %247 ]
  %niter = phi i64 [ 0, %.lr.ph397.new ], [ %niter.next.1, %247 ]
  %248 = load ptr, ptr %82, align 8, !tbaa !13
  %249 = or disjoint i64 %.7395, 1
  %250 = getelementptr inbounds double, ptr %248, i64 %249
  %251 = load double, ptr %250, align 8, !tbaa !9
  %252 = getelementptr inbounds double, ptr %248, i64 %.7395
  %253 = load double, ptr %252, align 8, !tbaa !9
  %254 = fsub double %251, %253
  %255 = load ptr, ptr %244, align 8, !tbaa !13
  %256 = getelementptr inbounds double, ptr %255, i64 %.7395
  store double %254, ptr %256, align 8, !tbaa !9
  %257 = load ptr, ptr %82, align 8, !tbaa !13
  %258 = add nuw nsw i64 %.7395, 2
  %259 = getelementptr inbounds double, ptr %257, i64 %258
  %260 = load double, ptr %259, align 8, !tbaa !9
  %261 = getelementptr inbounds double, ptr %257, i64 %249
  %262 = load double, ptr %261, align 8, !tbaa !9
  %263 = fsub double %260, %262
  %264 = load ptr, ptr %244, align 8, !tbaa !13
  %265 = getelementptr inbounds double, ptr %264, i64 %249
  store double %263, ptr %265, align 8, !tbaa !9
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge398.loopexit.unr-lcssa, label %247, !llvm.loop !29

._crit_edge398.loopexit.unr-lcssa:                ; preds = %247, %.lr.ph397
  %.7395.unr = phi i64 [ 0, %.lr.ph397 ], [ %258, %247 ]
  %266 = and i64 %smax442, 1
  %lcmp.mod.not.not = icmp eq i64 %266, 0
  br i1 %lcmp.mod.not.not, label %._crit_edge398.loopexit.epilog-lcssa, label %._crit_edge398

._crit_edge398.loopexit.epilog-lcssa:             ; preds = %._crit_edge398.loopexit.unr-lcssa
  %267 = load ptr, ptr %82, align 8, !tbaa !13
  %268 = getelementptr double, ptr %267, i64 %.7395.unr
  %269 = getelementptr i8, ptr %268, i64 8
  %270 = load double, ptr %269, align 8, !tbaa !9
  %271 = getelementptr inbounds double, ptr %267, i64 %.7395.unr
  %272 = load double, ptr %271, align 8, !tbaa !9
  %273 = fsub double %270, %272
  %274 = load ptr, ptr %244, align 8, !tbaa !13
  %275 = getelementptr inbounds double, ptr %274, i64 %.7395.unr
  store double %273, ptr %275, align 8, !tbaa !9
  br label %._crit_edge398

._crit_edge398:                                   ; preds = %._crit_edge398.loopexit.epilog-lcssa, %._crit_edge398.loopexit.unr-lcssa, %224
  call void @_ZL25testhqrndunit_calculatemvPKN11alglib_impl9ae_vectorElPdS3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %37, ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef %1)
  %276 = load double, ptr %11, align 8, !tbaa !9
  %277 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %276, double noundef 0.000000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %14, i1 noundef zeroext %277, ptr noundef nonnull @.str.19, i32 noundef 5110, ptr noundef nonnull @.str.26)
  %278 = load double, ptr %13, align 8, !tbaa !9
  %279 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %278, double noundef 0.000000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %14, i1 noundef zeroext %279, ptr noundef nonnull @.str.19, i32 noundef 5111, ptr noundef nonnull @.str.27)
  %280 = load double, ptr %10, align 8, !tbaa !9
  %281 = load double, ptr %11, align 8, !tbaa !9
  %282 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %281, double noundef 1.000000e+00, ptr noundef %1)
  %283 = fdiv double %280, %282
  %284 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %283, ptr noundef %1)
  %285 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef 0.000000e+00, double noundef %284, ptr noundef %1)
  %286 = load double, ptr %12, align 8, !tbaa !9
  %287 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 2.000000e+00, ptr noundef %1)
  %288 = fsub double %286, %287
  %289 = load double, ptr %13, align 8, !tbaa !9
  %290 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %289, double noundef 1.000000e+00, ptr noundef %1)
  %291 = fdiv double %288, %290
  %292 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %291, ptr noundef %1)
  %293 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %285, double noundef %292, ptr noundef %1)
  %294 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %293, double noundef 7.000000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %14, i1 noundef zeroext %294, ptr noundef nonnull @.str.19, i32 noundef 5115, ptr noundef nonnull @.str.28)
  br label %295

295:                                              ; preds = %._crit_edge398, %216
  %296 = sitofp i64 %18 to double
  %297 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %296, ptr noundef %1)
  %298 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %297, ptr noundef %1)
  %299 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef %298, ptr noundef %1)
  %300 = add nsw i64 %299, 1
  %301 = sdiv i64 %18, %300
  %302 = add nsw i64 %301, 1
  call void @_ZN11alglib_impl12hqrndnormalmEPNS_10hqrndstateEllPNS_9ae_matrixEPNS_8ae_stateE(ptr noundef nonnull %16, i64 noundef %300, i64 noundef %302, ptr noundef nonnull %8, ptr noundef %1)
  %303 = load i64, ptr %8, align 8, !tbaa !30
  %304 = icmp ne i64 %303, %300
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %14, i1 noundef zeroext %304, ptr noundef nonnull @.str.19, i32 noundef 5120, ptr noundef nonnull @.str.29)
  %305 = getelementptr inbounds i8, ptr %8, i64 8
  %306 = load i64, ptr %305, align 8, !tbaa !32
  %307 = icmp ne i64 %306, %302
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %14, i1 noundef zeroext %307, ptr noundef nonnull @.str.19, i32 noundef 5121, ptr noundef nonnull @.str.30)
  %308 = call noundef zeroext i1 @_ZN11alglib_impl20apservisfinitematrixEPKNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %300, i64 noundef %302, ptr noundef %1)
  %309 = xor i1 %308, true
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %14, i1 noundef zeroext %309, ptr noundef nonnull @.str.19, i32 noundef 5122, ptr noundef nonnull @.str.31)
  %310 = mul nsw i64 %302, %300
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %6, i64 noundef %310, ptr noundef %1)
  %.not332403 = icmp slt i64 %299, 0
  br i1 %.not332403, label %._crit_edge405, label %.preheader356.lr.ph

.preheader356.lr.ph:                              ; preds = %295
  %.not338399 = icmp slt i64 %301, 0
  %311 = getelementptr inbounds i8, ptr %8, i64 72
  br i1 %.not338399, label %._crit_edge405, label %.preheader356.preheader

.preheader356.preheader:                          ; preds = %.preheader356.lr.ph
  %312 = add nuw i64 %301, 1
  %313 = icmp eq i64 %301, 0
  %unroll_iter473 = and i64 %312, -2
  %314 = and i64 %301, 1
  %lcmp.mod472.not.not = icmp eq i64 %314, 0
  br label %.preheader356

.preheader356:                                    ; preds = %.preheader356.preheader, %._crit_edge402
  %.8404 = phi i64 [ %342, %._crit_edge402 ], [ 0, %.preheader356.preheader ]
  %315 = mul nuw nsw i64 %.8404, %302
  br i1 %313, label %._crit_edge402.unr-lcssa, label %.preheader356.new

.preheader356.new:                                ; preds = %.preheader356, %.preheader356.new
  %.0319400 = phi i64 [ %333, %.preheader356.new ], [ 0, %.preheader356 ]
  %niter474 = phi i64 [ %niter474.next.1, %.preheader356.new ], [ 0, %.preheader356 ]
  %316 = load ptr, ptr %311, align 8, !tbaa !13
  %317 = getelementptr inbounds ptr, ptr %316, i64 %.8404
  %318 = load ptr, ptr %317, align 8, !tbaa !33
  %319 = getelementptr inbounds double, ptr %318, i64 %.0319400
  %320 = load double, ptr %319, align 8, !tbaa !9
  %321 = load ptr, ptr %82, align 8, !tbaa !13
  %322 = getelementptr double, ptr %321, i64 %315
  %323 = getelementptr double, ptr %322, i64 %.0319400
  store double %320, ptr %323, align 8, !tbaa !9
  %324 = or disjoint i64 %.0319400, 1
  %325 = load ptr, ptr %311, align 8, !tbaa !13
  %326 = getelementptr inbounds ptr, ptr %325, i64 %.8404
  %327 = load ptr, ptr %326, align 8, !tbaa !33
  %328 = getelementptr inbounds double, ptr %327, i64 %324
  %329 = load double, ptr %328, align 8, !tbaa !9
  %330 = load ptr, ptr %82, align 8, !tbaa !13
  %331 = getelementptr double, ptr %330, i64 %315
  %332 = getelementptr double, ptr %331, i64 %324
  store double %329, ptr %332, align 8, !tbaa !9
  %333 = add nuw i64 %.0319400, 2
  %niter474.next.1 = add i64 %niter474, 2
  %niter474.ncmp.1 = icmp eq i64 %niter474.next.1, %unroll_iter473
  br i1 %niter474.ncmp.1, label %._crit_edge402.unr-lcssa, label %.preheader356.new, !llvm.loop !34

._crit_edge402.unr-lcssa:                         ; preds = %.preheader356.new, %.preheader356
  %.0319400.unr = phi i64 [ 0, %.preheader356 ], [ %333, %.preheader356.new ]
  br i1 %lcmp.mod472.not.not, label %._crit_edge402.epilog-lcssa, label %._crit_edge402

._crit_edge402.epilog-lcssa:                      ; preds = %._crit_edge402.unr-lcssa
  %334 = load ptr, ptr %311, align 8, !tbaa !13
  %335 = getelementptr inbounds ptr, ptr %334, i64 %.8404
  %336 = load ptr, ptr %335, align 8, !tbaa !33
  %337 = getelementptr inbounds double, ptr %336, i64 %.0319400.unr
  %338 = load double, ptr %337, align 8, !tbaa !9
  %339 = load ptr, ptr %82, align 8, !tbaa !13
  %340 = getelementptr double, ptr %339, i64 %315
  %341 = getelementptr double, ptr %340, i64 %.0319400.unr
  store double %338, ptr %341, align 8, !tbaa !9
  br label %._crit_edge402

._crit_edge402:                                   ; preds = %._crit_edge402.unr-lcssa, %._crit_edge402.epilog-lcssa
  %342 = add nuw i64 %.8404, 1
  %exitcond445.not = icmp eq i64 %.8404, %299
  br i1 %exitcond445.not, label %._crit_edge405, label %.preheader356, !llvm.loop !35

._crit_edge405:                                   ; preds = %._crit_edge402, %.preheader356.lr.ph, %295
  call void @_ZL25testhqrndunit_calculatemvPKN11alglib_impl9ae_vectorElPdS3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %6, i64 noundef %310, ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef %1)
  %343 = load double, ptr %11, align 8, !tbaa !9
  %344 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %343, double noundef 0.000000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %14, i1 noundef zeroext %344, ptr noundef nonnull @.str.19, i32 noundef 5132, ptr noundef nonnull @.str.32)
  %345 = load double, ptr %13, align 8, !tbaa !9
  %346 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %345, double noundef 0.000000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %14, i1 noundef zeroext %346, ptr noundef nonnull @.str.19, i32 noundef 5133, ptr noundef nonnull @.str.33)
  %347 = load double, ptr %10, align 8, !tbaa !9
  %348 = load double, ptr %11, align 8, !tbaa !9
  %349 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %348, double noundef 1.000000e+00, ptr noundef %1)
  %350 = fdiv double %347, %349
  %351 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %350, ptr noundef %1)
  %352 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef 0.000000e+00, double noundef %351, ptr noundef %1)
  %353 = load double, ptr %12, align 8, !tbaa !9
  %354 = fadd double %353, -1.000000e+00
  %355 = load double, ptr %13, align 8, !tbaa !9
  %356 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %355, double noundef 1.000000e+00, ptr noundef %1)
  %357 = fdiv double %354, %356
  %358 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %357, ptr noundef %1)
  %359 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %352, double noundef %358, ptr noundef %1)
  %360 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %359, double noundef 7.000000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %14, i1 noundef zeroext %360, ptr noundef nonnull @.str.19, i32 noundef 5137, ptr noundef nonnull @.str.34)
  call void @_ZL24testhqrndunit_unsetstatePN11alglib_impl10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  call void @_ZN11alglib_impl14hqrndrandomizeEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef 10, ptr noundef %1)
  %361 = load i64, ptr %9, align 8, !tbaa !22
  %.not333.not406 = icmp sgt i64 %361, 0
  br i1 %.not333.not406, label %.lr.ph409, label %.preheader355

.lr.ph409:                                        ; preds = %._crit_edge405
  %362 = getelementptr inbounds i8, ptr %9, i64 56
  br label %364

.preheader355:                                    ; preds = %364, %._crit_edge405
  %363 = getelementptr inbounds i8, ptr %9, i64 56
  br label %370

364:                                              ; preds = %.lr.ph409, %364
  %.9407 = phi i64 [ 0, %.lr.ph409 ], [ %367, %364 ]
  %365 = load ptr, ptr %362, align 8, !tbaa !13
  %366 = getelementptr inbounds i64, ptr %365, i64 %.9407
  store i64 0, ptr %366, align 8, !tbaa !36
  %367 = add nuw nsw i64 %.9407, 1
  %368 = load i64, ptr %9, align 8, !tbaa !22
  %.not333.not = icmp slt i64 %367, %368
  br i1 %.not333.not, label %364, label %.preheader355, !llvm.loop !37

.preheader354:                                    ; preds = %370
  %369 = load i64, ptr %9, align 8, !tbaa !22
  %.not334.not411 = icmp sgt i64 %369, 0
  br i1 %.not334.not411, label %.lr.ph413, label %._crit_edge414

370:                                              ; preds = %.preheader355, %370
  %.1322410 = phi i64 [ 0, %.preheader355 ], [ %393, %370 ]
  call void @_ZN11alglib_impl10hqrndunit2EPNS_10hqrndstateEPdS2_PNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %1)
  %371 = load double, ptr %4, align 8, !tbaa !9
  %372 = load double, ptr %5, align 8, !tbaa !9
  %373 = fmul double %372, %372
  %374 = call double @llvm.fmuladd.f64(double %371, double %371, double %373)
  %375 = fadd double %374, -1.000000e+00
  %376 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %375, ptr noundef %1)
  %377 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %376, double noundef 5.000000e-14)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %15, i1 noundef zeroext %377, ptr noundef nonnull @.str.19, i32 noundef 5153, ptr noundef nonnull @.str.35)
  %378 = load double, ptr %4, align 8, !tbaa !9
  %379 = load double, ptr %5, align 8, !tbaa !9
  %380 = call noundef double @_ZN11alglib_impl8ae_atan2EddPNS_8ae_stateE(double noundef %378, double noundef %379, ptr noundef %1)
  %381 = fadd double %380, 0x400921FB54442D18
  %382 = fdiv double %381, 0x401921FB54442D18
  %383 = load i64, ptr %9, align 8, !tbaa !22
  %384 = sitofp i64 %383 to double
  %385 = fmul double %382, %384
  %386 = call noundef i64 @_ZN11alglib_impl9ae_ifloorEdPNS_8ae_stateE(double noundef %385, ptr noundef %1)
  %spec.store.select = call i64 @llvm.smax.i64(i64 %386, i64 0)
  %387 = load i64, ptr %9, align 8, !tbaa !22
  %.not337 = icmp slt i64 %spec.store.select, %387
  %388 = add nsw i64 %387, -1
  %spec.select = select i1 %.not337, i64 %spec.store.select, i64 %388
  %389 = load ptr, ptr %363, align 8, !tbaa !13
  %390 = getelementptr inbounds i64, ptr %389, i64 %spec.select
  %391 = load i64, ptr %390, align 8, !tbaa !36
  %392 = add nsw i64 %391, 1
  store i64 %392, ptr %390, align 8, !tbaa !36
  %393 = add nuw nsw i64 %.1322410, 1
  %exitcond446.not = icmp eq i64 %393, 1000000
  br i1 %exitcond446.not, label %.preheader354, label %370, !llvm.loop !38

.lr.ph413:                                        ; preds = %.preheader354, %411
  %394 = phi i64 [ %414, %411 ], [ %369, %.preheader354 ]
  %.10412 = phi i64 [ %413, %411 ], [ 0, %.preheader354 ]
  %395 = load ptr, ptr %363, align 8, !tbaa !13
  %396 = getelementptr inbounds i64, ptr %395, i64 %.10412
  %397 = load i64, ptr %396, align 8, !tbaa !36
  %398 = sitofp i64 %397 to double
  %399 = sitofp i64 %394 to double
  %400 = fdiv double 9.000000e+05, %399
  %401 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %398, double noundef %400)
  br i1 %401, label %411, label %402

402:                                              ; preds = %.lr.ph413
  %403 = load ptr, ptr %363, align 8, !tbaa !13
  %404 = getelementptr inbounds i64, ptr %403, i64 %.10412
  %405 = load i64, ptr %404, align 8, !tbaa !36
  %406 = sitofp i64 %405 to double
  %407 = load i64, ptr %9, align 8, !tbaa !22
  %408 = sitofp i64 %407 to double
  %409 = fdiv double 1.100000e+06, %408
  %410 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %406, double noundef %409)
  br label %411

411:                                              ; preds = %402, %.lr.ph413
  %412 = phi i1 [ true, %.lr.ph413 ], [ %410, %402 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %15, i1 noundef zeroext %412, ptr noundef nonnull @.str.19, i32 noundef 5167, ptr noundef nonnull @.str.36)
  %413 = add nuw nsw i64 %.10412, 1
  %414 = load i64, ptr %9, align 8, !tbaa !22
  %.not334.not = icmp slt i64 %413, %414
  br i1 %.not334.not, label %.lr.ph413, label %._crit_edge414, !llvm.loop !39

._crit_edge414:                                   ; preds = %411, %.preheader354
  call void @_ZL24testhqrndunit_unsetstatePN11alglib_impl10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  call void @_ZN11alglib_impl14hqrndrandomizeEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  %415 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %416 = call double @llvm.fmuladd.f64(double %415, double 5.000000e+00, double 2.000000e+00)
  br i1 %.not363, label %._crit_edge423, label %.lr.ph418

.preheader:                                       ; preds = %.lr.ph418
  br i1 %.not363, label %._crit_edge423, label %.lr.ph422

.lr.ph418:                                        ; preds = %._crit_edge414, %.lr.ph418
  %.11416 = phi i64 [ %420, %.lr.ph418 ], [ 0, %._crit_edge414 ]
  %417 = call noundef double @_ZN11alglib_impl16hqrndexponentialEPNS_10hqrndstateEdPNS_8ae_stateE(ptr noundef nonnull %16, double noundef %416, ptr noundef %1)
  %418 = load ptr, ptr %82, align 8, !tbaa !13
  %419 = getelementptr inbounds double, ptr %418, i64 %.11416
  store double %417, ptr %419, align 8, !tbaa !9
  %420 = add nuw i64 %.11416, 1
  %exitcond448.not = icmp eq i64 %.11416, %smax433
  br i1 %exitcond448.not, label %.preheader, label %.lr.ph418, !llvm.loop !40

.lr.ph422:                                        ; preds = %.preheader, %426
  %.12421 = phi i64 [ %428, %426 ], [ 0, %.preheader ]
  %.7312.in420 = phi i1 [ %427, %426 ], [ %182, %.preheader ]
  br i1 %.7312.in420, label %426, label %421

421:                                              ; preds = %.lr.ph422
  %422 = load ptr, ptr %82, align 8, !tbaa !13
  %423 = getelementptr inbounds double, ptr %422, i64 %.12421
  %424 = load double, ptr %423, align 8, !tbaa !9
  %425 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %424, double noundef 0.000000e+00)
  br label %426

426:                                              ; preds = %421, %.lr.ph422
  %427 = phi i1 [ true, %.lr.ph422 ], [ %425, %421 ]
  %428 = add nuw i64 %.12421, 1
  %exitcond450.not = icmp eq i64 %.12421, %smax433
  br i1 %exitcond450.not, label %._crit_edge423, label %.lr.ph422, !llvm.loop !41

._crit_edge423:                                   ; preds = %426, %._crit_edge414, %.preheader
  %.7312.in.lcssa = phi i1 [ %182, %.preheader ], [ %182, %._crit_edge414 ], [ %427, %426 ]
  call void @_ZL25testhqrndunit_calculatemvPKN11alglib_impl9ae_vectorElPdS3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %6, i64 noundef %18, ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef %1)
  %429 = load double, ptr %11, align 8, !tbaa !9
  %430 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %429, double noundef 0.000000e+00)
  br i1 %430, label %431, label %439

431:                                              ; preds = %._crit_edge423
  %432 = load double, ptr %10, align 8, !tbaa !9
  %433 = fdiv double 1.000000e+00, %416
  %434 = fsub double %432, %433
  %435 = load double, ptr %11, align 8, !tbaa !9
  %436 = fdiv double %434, %435
  %437 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %436, ptr noundef %1)
  %438 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef 0.000000e+00, double noundef %437, ptr noundef %1)
  br label %439

439:                                              ; preds = %._crit_edge423, %431
  %.0294 = phi double [ %438, %431 ], [ 0.000000e+00, %._crit_edge423 ]
  %440 = load double, ptr %13, align 8, !tbaa !9
  %441 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %440, double noundef 0.000000e+00)
  br i1 %441, label %442, label %.thread351

442:                                              ; preds = %439
  %443 = load double, ptr %12, align 8, !tbaa !9
  %444 = fdiv double 1.000000e+00, %416
  %445 = fsub double %443, %444
  %446 = load double, ptr %13, align 8, !tbaa !9
  %447 = fdiv double %445, %446
  %448 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %447, ptr noundef %1)
  %449 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.0294, double noundef %448, ptr noundef %1)
  br i1 %430, label %450, label %.thread351

450:                                              ; preds = %442
  %451 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %449, double noundef 7.000000e+00)
  br label %.thread351

.thread351:                                       ; preds = %439, %450, %442
  %452 = phi i1 [ true, %442 ], [ %451, %450 ], [ true, %439 ]
  %453 = call noundef zeroext i1 @_Z17hqrnddiscretetestbPN11alglib_impl8ae_stateE(i1 noundef zeroext true, ptr noundef %1)
  %454 = call noundef zeroext i1 @_Z19hqrndcontinuoustestbPN11alglib_impl8ae_stateE(i1 noundef zeroext true, ptr noundef %1)
  %brmerge = or i1 %34, %81
  %brmerge341 = or i1 %brmerge, %.7312.in.lcssa
  br i1 %brmerge341, label %461, label %455

455:                                              ; preds = %.thread351
  %456 = load i8, ptr %14, align 1, !tbaa !5, !range !27, !noundef !28
  %457 = trunc nuw i8 %456 to i1
  %458 = load i8, ptr %15, align 1, !range !27
  %459 = trunc nuw i8 %458 to i1
  %brmerge342 = or i1 %452, %459
  %or.cond = select i1 %457, i1 true, i1 %brmerge342
  %460 = or i1 %454, %or.cond
  %spec.select345 = or i1 %453, %460
  br label %461

461:                                              ; preds = %455, %.thread351
  %462 = phi i1 [ true, %.thread351 ], [ %spec.select345, %455 ]
  br i1 %0, label %487, label %463

463:                                              ; preds = %461
  %464 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.37)
  %465 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.38)
  %.str.2..str.3 = select i1 %34, ptr @.str.2, ptr @.str.3
  %466 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.2..str.3)
  %467 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.39)
  %.str.2.sink455 = select i1 %81, ptr @.str.2, ptr @.str.3
  %468 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.2.sink455)
  %469 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40)
  %.str.2.sink456 = select i1 %.7312.in.lcssa, ptr @.str.2, ptr @.str.3
  %470 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.2.sink456)
  %471 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.41)
  %472 = load i8, ptr %14, align 1, !tbaa !5, !range !27, !noundef !28
  %473 = trunc nuw i8 %472 to i1
  %.str.2.sink457 = select i1 %473, ptr @.str.2, ptr @.str.3
  %474 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.2.sink457)
  %475 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.42)
  %476 = load i8, ptr %15, align 1, !tbaa !5, !range !27, !noundef !28
  %477 = trunc nuw i8 %476 to i1
  %.str.2.sink458 = select i1 %477, ptr @.str.2, ptr @.str.3
  %478 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.2.sink458)
  %479 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.43)
  %.str.2.sink459 = select i1 %452, ptr @.str.2, ptr @.str.3
  %480 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.2.sink459)
  %481 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.44)
  %.str.2.sink460 = select i1 %453, ptr @.str.2, ptr @.str.3
  %482 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.2.sink460)
  %483 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.45)
  %.str.2.sink461 = select i1 %454, ptr @.str.2, ptr @.str.3
  %484 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.2.sink461)
  %.str.47.sink = select i1 %462, ptr @.str.46, ptr @.str.47
  %485 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.47.sink)
  %486 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.17)
  br label %487

487:                                              ; preds = %463, %461
  %488 = xor i1 %462, true
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #8
  ret i1 %488
}

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL24testhqrndunit_unsetstatePN11alglib_impl10hqrndstateEPNS_8ae_stateE(ptr noundef, ptr noundef) local_unnamed_addr #6

declare void @_ZN11alglib_impl9hqrndseedEllPNS_10hqrndstateEPNS_8ae_stateE(i64 noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #3

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

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

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

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

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

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

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

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

declare void @_ZN11alglib_impl12hqrndnormal2EPNS_10hqrndstateEPdS2_PNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

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

declare void @_ZN11alglib_impl12hqrndnormalvEPNS_10hqrndstateElPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare noundef zeroext i1 @_ZN11alglib_impl14isfinitevectorEPKNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #3

declare noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef, double noundef, ptr noundef) local_unnamed_addr #3

declare noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef, ptr noundef) local_unnamed_addr #3

declare void @_ZN11alglib_impl12hqrndnormalmEPNS_10hqrndstateEllPNS_9ae_matrixEPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare noundef zeroext i1 @_ZN11alglib_impl20apservisfinitematrixEPKNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #3

declare void @_ZN11alglib_impl10hqrndunit2EPNS_10hqrndstateEPdS2_PNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare noundef i64 @_ZN11alglib_impl9ae_ifloorEdPNS_8ae_stateE(double noundef, ptr noundef) local_unnamed_addr #3

declare noundef double @_ZN11alglib_impl8ae_atan2EddPNS_8ae_stateE(double noundef, double noundef, ptr noundef) local_unnamed_addr #3

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

declare noundef double @_ZN11alglib_impl16hqrndexponentialEPNS_10hqrndstateEdPNS_8ae_stateE(ptr noundef, double noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z17hqrnddiscretetestbPN11alglib_impl8ae_stateE(i1 noundef zeroext, ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z19hqrndcontinuoustestbPN11alglib_impl8ae_stateE(i1 noundef zeroext, ptr noundef) local_unnamed_addr #4

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) local_unnamed_addr #3

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

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


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