; LLVM IR from Dimandragon/non-parametric-dsp :: alglib-cpp/tests/test_c.ll (Z8testconvbPN11alglib_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::hqrndstate" = type { i64, i64, i64 }
%"struct.alglib_impl::ae_complex" = type { double, double }

@.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.15 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.735 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.948 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.949 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.950 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.951 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.952 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.953 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.954 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.955 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.956 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.957 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.958 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.959 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.960 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.961 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.962 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.963 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.964 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.965 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.966 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.967 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.968 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.969 = external hidden unnamed_addr constant [43 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_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 void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext, ptr noundef, ptr 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_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) #3

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

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

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

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

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

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

declare noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef) #1

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) #1

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #4

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

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

declare { double, double } @_ZN11alglib_impl8ae_c_subENS_10ae_complexES0_(double, double, double, double) #1

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

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

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

63:                                               ; preds = %566, %2
  %64 = load i64, ptr %6, align 8, !tbaa !11
  %65 = load i64, ptr %20, align 8, !tbaa !11
  %66 = icmp sle i64 %64, %65
  br i1 %66, label %67, label %569

67:                                               ; preds = %63
  store i64 1, ptr %7, align 8, !tbaa !11
  br label %68

68:                                               ; preds = %562, %67
  %69 = load i64, ptr %7, align 8, !tbaa !11
  %70 = load i64, ptr %20, align 8, !tbaa !11
  %71 = icmp sle i64 %69, %70
  br i1 %71, label %72, label %565

72:                                               ; preds = %68
  store i64 0, ptr %11, align 8, !tbaa !11
  br label %73

73:                                               ; preds = %558, %72
  %74 = load i64, ptr %11, align 8, !tbaa !11
  %75 = icmp sle i64 %74, 1
  br i1 %75, label %76, label %561

76:                                               ; preds = %73
  store i64 -3, ptr %10, align 8, !tbaa !11
  br label %77

77:                                               ; preds = %554, %76
  %78 = load i64, ptr %10, align 8, !tbaa !11
  %79 = icmp sle i64 %78, 1
  br i1 %79, label %80, label %557

80:                                               ; preds = %77
  %81 = load i64, ptr %11, align 8, !tbaa !11
  %82 = icmp ne i64 %81, 0
  br i1 %82, label %83, label %91

83:                                               ; preds = %80
  %84 = load i64, ptr %6, align 8, !tbaa !11
  %85 = load i64, ptr %7, align 8, !tbaa !11
  %86 = icmp slt i64 %84, %85
  br i1 %86, label %87, label %91

87:                                               ; preds = %83
  %88 = load i64, ptr %10, align 8, !tbaa !11
  %89 = icmp ne i64 %88, -3
  br i1 %89, label %90, label %91

90:                                               ; preds = %87
  br label %554

91:                                               ; preds = %87, %83, %80
  %92 = load i64, ptr %6, align 8, !tbaa !11
  %93 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %16, i64 noundef %92, ptr noundef %93)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %94

94:                                               ; preds = %116, %91
  %95 = load i64, ptr %8, align 8, !tbaa !11
  %96 = load i64, ptr %6, align 8, !tbaa !11
  %97 = sub nsw i64 %96, 1
  %98 = icmp sle i64 %95, %97
  br i1 %98, label %99, label %119

99:                                               ; preds = %94
  %100 = load ptr, ptr %4, align 8, !tbaa !9
  %101 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %100)
  %102 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %101, double -1.000000e+00)
  %103 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %104 = load ptr, ptr %103, align 8, !tbaa !15
  %105 = load i64, ptr %8, align 8, !tbaa !11
  %106 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %104, i64 %105
  %107 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %106, i32 0, i32 0
  store double %102, ptr %107, align 8, !tbaa !16
  %108 = load ptr, ptr %4, align 8, !tbaa !9
  %109 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %108)
  %110 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %109, double -1.000000e+00)
  %111 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %112 = load ptr, ptr %111, align 8, !tbaa !15
  %113 = load i64, ptr %8, align 8, !tbaa !11
  %114 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %112, i64 %113
  %115 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %114, i32 0, i32 1
  store double %110, ptr %115, align 8, !tbaa !18
  br label %116

116:                                              ; preds = %99
  %117 = load i64, ptr %8, align 8, !tbaa !11
  %118 = add nsw i64 %117, 1
  store i64 %118, ptr %8, align 8, !tbaa !11
  br label %94, !llvm.loop !19

119:                                              ; preds = %94
  %120 = load i64, ptr %7, align 8, !tbaa !11
  %121 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %17, i64 noundef %120, ptr noundef %121)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %122

122:                                              ; preds = %144, %119
  %123 = load i64, ptr %8, align 8, !tbaa !11
  %124 = load i64, ptr %7, align 8, !tbaa !11
  %125 = sub nsw i64 %124, 1
  %126 = icmp sle i64 %123, %125
  br i1 %126, label %127, label %147

127:                                              ; preds = %122
  %128 = load ptr, ptr %4, align 8, !tbaa !9
  %129 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %128)
  %130 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %129, double -1.000000e+00)
  %131 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %132 = load ptr, ptr %131, align 8, !tbaa !15
  %133 = load i64, ptr %8, align 8, !tbaa !11
  %134 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %132, i64 %133
  %135 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %134, i32 0, i32 0
  store double %130, ptr %135, align 8, !tbaa !16
  %136 = load ptr, ptr %4, align 8, !tbaa !9
  %137 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %136)
  %138 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %137, double -1.000000e+00)
  %139 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %140 = load ptr, ptr %139, align 8, !tbaa !15
  %141 = load i64, ptr %8, align 8, !tbaa !11
  %142 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %140, i64 %141
  %143 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %142, i32 0, i32 1
  store double %138, ptr %143, align 8, !tbaa !18
  br label %144

144:                                              ; preds = %127
  %145 = load i64, ptr %8, align 8, !tbaa !11
  %146 = add nsw i64 %145, 1
  store i64 %146, ptr %8, align 8, !tbaa !11
  br label %122, !llvm.loop !21

147:                                              ; preds = %122
  %148 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %18, i64 noundef 1, ptr noundef %148)
  %149 = load i64, ptr %10, align 8, !tbaa !11
  %150 = icmp eq i64 %149, -3
  br i1 %150, label %151, label %226

151:                                              ; preds = %147
  %152 = load i64, ptr %11, align 8, !tbaa !11
  %153 = icmp eq i64 %152, 0
  br i1 %153, label %154, label %194

154:                                              ; preds = %151
  %155 = load ptr, ptr %4, align 8, !tbaa !9
  %156 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %31, ptr noundef %155)
  %157 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %156, double noundef 0.000000e+00)
  br i1 %157, label %158, label %169

158:                                              ; preds = %154
  %159 = load i64, ptr %6, align 8, !tbaa !11
  %160 = load i64, ptr %7, align 8, !tbaa !11
  %161 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl7convc1dEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef %16, i64 noundef %159, ptr noundef %17, i64 noundef %160, ptr noundef %18, ptr noundef %161)
  %162 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 0
  %163 = load i64, ptr %162, align 8, !tbaa !22
  %164 = load i64, ptr %7, align 8, !tbaa !11
  %165 = load i64, ptr %6, align 8, !tbaa !11
  %166 = add nsw i64 %164, %165
  %167 = sub nsw i64 %166, 1
  %168 = icmp ne i64 %163, %167
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %26, i1 noundef zeroext %168, ptr noundef @.str.19, i32 noundef 125213, ptr noundef @.str.948)
  br label %193

169:                                              ; preds = %154
  %170 = load i64, ptr %7, align 8, !tbaa !11
  %171 = load i64, ptr %6, align 8, !tbaa !11
  %172 = add nsw i64 %170, %171
  %173 = sub nsw i64 %172, 1
  %174 = mul nsw i64 2, %173
  %175 = add nsw i64 %174, 5
  %176 = load ptr, ptr %4, align 8, !tbaa !9
  %177 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef %31, i64 noundef %175, ptr noundef %176)
  store i64 %177, ptr %9, align 8, !tbaa !11
  %178 = load i64, ptr %9, align 8, !tbaa !11
  %179 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %18, i64 noundef %178, ptr noundef %179)
  %180 = load i64, ptr %6, align 8, !tbaa !11
  %181 = load i64, ptr %7, align 8, !tbaa !11
  %182 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl10convc1dbufEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef %16, i64 noundef %180, ptr noundef %17, i64 noundef %181, ptr noundef %18, ptr noundef %182)
  %183 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 0
  %184 = load i64, ptr %183, align 8, !tbaa !22
  %185 = load i64, ptr %7, align 8, !tbaa !11
  %186 = load i64, ptr %6, align 8, !tbaa !11
  %187 = add nsw i64 %185, %186
  %188 = sub nsw i64 %187, 1
  %189 = load i64, ptr %9, align 8, !tbaa !11
  %190 = load ptr, ptr %4, align 8, !tbaa !9
  %191 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %188, i64 noundef %189, ptr noundef %190)
  %192 = icmp ne i64 %184, %191
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %26, i1 noundef zeroext %192, ptr noundef @.str.19, i32 noundef 125220, ptr noundef @.str.949)
  br label %193

193:                                              ; preds = %169, %158
  br label %225

194:                                              ; preds = %151
  %195 = load ptr, ptr %4, align 8, !tbaa !9
  %196 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %31, ptr noundef %195)
  %197 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %196, double noundef 0.000000e+00)
  br i1 %197, label %198, label %206

198:                                              ; preds = %194
  %199 = load i64, ptr %6, align 8, !tbaa !11
  %200 = load i64, ptr %7, align 8, !tbaa !11
  %201 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15convc1dcircularEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef %16, i64 noundef %199, ptr noundef %17, i64 noundef %200, ptr noundef %18, ptr noundef %201)
  %202 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 0
  %203 = load i64, ptr %202, align 8, !tbaa !22
  %204 = load i64, ptr %6, align 8, !tbaa !11
  %205 = icmp ne i64 %203, %204
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %26, i1 noundef zeroext %205, ptr noundef @.str.19, i32 noundef 125228, ptr noundef @.str.950)
  br label %224

206:                                              ; preds = %194
  %207 = load i64, ptr %6, align 8, !tbaa !11
  %208 = mul nsw i64 2, %207
  %209 = add nsw i64 %208, 5
  %210 = load ptr, ptr %4, align 8, !tbaa !9
  %211 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef %31, i64 noundef %209, ptr noundef %210)
  store i64 %211, ptr %9, align 8, !tbaa !11
  %212 = load i64, ptr %9, align 8, !tbaa !11
  %213 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %18, i64 noundef %212, ptr noundef %213)
  %214 = load i64, ptr %6, align 8, !tbaa !11
  %215 = load i64, ptr %7, align 8, !tbaa !11
  %216 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl18convc1dcircularbufEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef %16, i64 noundef %214, ptr noundef %17, i64 noundef %215, ptr noundef %18, ptr noundef %216)
  %217 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 0
  %218 = load i64, ptr %217, align 8, !tbaa !22
  %219 = load i64, ptr %6, align 8, !tbaa !11
  %220 = load i64, ptr %9, align 8, !tbaa !11
  %221 = load ptr, ptr %4, align 8, !tbaa !9
  %222 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %219, i64 noundef %220, ptr noundef %221)
  %223 = icmp ne i64 %218, %222
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %26, i1 noundef zeroext %223, ptr noundef @.str.19, i32 noundef 125235, ptr noundef @.str.951)
  br label %224

224:                                              ; preds = %206, %198
  br label %225

225:                                              ; preds = %224, %193
  br label %246

226:                                              ; preds = %147
  %227 = load i64, ptr %6, align 8, !tbaa !11
  %228 = load i64, ptr %7, align 8, !tbaa !11
  %229 = icmp sge i64 %227, %228
  br i1 %229, label %230, label %237

230:                                              ; preds = %226
  %231 = load i64, ptr %6, align 8, !tbaa !11
  %232 = load i64, ptr %7, align 8, !tbaa !11
  %233 = load i64, ptr %11, align 8, !tbaa !11
  %234 = icmp ne i64 %233, 0
  %235 = load i64, ptr %10, align 8, !tbaa !11
  %236 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl8convc1dxEPKNS_9ae_vectorElS2_lbllPS0_PNS_8ae_stateE(ptr noundef %16, i64 noundef %231, ptr noundef %17, i64 noundef %232, i1 noundef zeroext %234, i64 noundef %235, i64 noundef 0, ptr noundef %18, ptr noundef %236)
  br label %245

237:                                              ; preds = %226
  %238 = load i64, ptr %11, align 8, !tbaa !11
  %239 = icmp eq i64 %238, 0
  %240 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %239, ptr noundef @.str.952, ptr noundef %240)
  %241 = load i64, ptr %7, align 8, !tbaa !11
  %242 = load i64, ptr %6, align 8, !tbaa !11
  %243 = load i64, ptr %10, align 8, !tbaa !11
  %244 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl8convc1dxEPKNS_9ae_vectorElS2_lbllPS0_PNS_8ae_stateE(ptr noundef %17, i64 noundef %241, ptr noundef %16, i64 noundef %242, i1 noundef zeroext false, i64 noundef %243, i64 noundef 0, ptr noundef %18, ptr noundef %244)
  br label %245

245:                                              ; preds = %237, %230
  br label %246

246:                                              ; preds = %245, %225
  %247 = load i64, ptr %11, align 8, !tbaa !11
  %248 = icmp eq i64 %247, 0
  br i1 %248, label %249, label %253

249:                                              ; preds = %246
  %250 = load i64, ptr %6, align 8, !tbaa !11
  %251 = load i64, ptr %7, align 8, !tbaa !11
  %252 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testconvunit_refconvc1dPKN11alglib_impl9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef %16, i64 noundef %250, ptr noundef %17, i64 noundef %251, ptr noundef %19, ptr noundef %252)
  br label %257

253:                                              ; preds = %246
  %254 = load i64, ptr %6, align 8, !tbaa !11
  %255 = load i64, ptr %7, align 8, !tbaa !11
  %256 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL31testconvunit_refconvc1dcircularPKN11alglib_impl9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef %16, i64 noundef %254, ptr noundef %17, i64 noundef %255, ptr noundef %19, ptr noundef %256)
  br label %257

257:                                              ; preds = %253, %249
  %258 = load i64, ptr %11, align 8, !tbaa !11
  %259 = icmp eq i64 %258, 0
  br i1 %259, label %260, label %303

260:                                              ; preds = %257
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %261

261:                                              ; preds = %299, %260
  %262 = load i64, ptr %8, align 8, !tbaa !11
  %263 = load i64, ptr %6, align 8, !tbaa !11
  %264 = load i64, ptr %7, align 8, !tbaa !11
  %265 = add nsw i64 %263, %264
  %266 = sub nsw i64 %265, 2
  %267 = icmp sle i64 %262, %266
  br i1 %267, label %268, label %302

268:                                              ; preds = %261
  %269 = load double, ptr %21, align 8, !tbaa !13
  %270 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %271 = load ptr, ptr %270, align 8, !tbaa !15
  %272 = load i64, ptr %8, align 8, !tbaa !11
  %273 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %271, i64 %272
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %34, ptr align 8 %273, i64 16, i1 false), !tbaa.struct !25
  %274 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %19, i32 0, i32 4
  %275 = load ptr, ptr %274, align 8, !tbaa !15
  %276 = load i64, ptr %8, align 8, !tbaa !11
  %277 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %275, i64 %276
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %35, ptr align 8 %277, i64 16, i1 false), !tbaa.struct !25
  %278 = getelementptr inbounds { double, double }, ptr %34, i32 0, i32 0
  %279 = load double, ptr %278, align 8
  %280 = getelementptr inbounds { double, double }, ptr %34, i32 0, i32 1
  %281 = load double, ptr %280, align 8
  %282 = getelementptr inbounds { double, double }, ptr %35, i32 0, i32 0
  %283 = load double, ptr %282, align 8
  %284 = getelementptr inbounds { double, double }, ptr %35, i32 0, i32 1
  %285 = load double, ptr %284, align 8
  %286 = call { double, double } @_ZN11alglib_impl8ae_c_subENS_10ae_complexES0_(double %279, double %281, double %283, double %285)
  %287 = getelementptr inbounds { double, double }, ptr %33, i32 0, i32 0
  %288 = extractvalue { double, double } %286, 0
  store double %288, ptr %287, align 8
  %289 = getelementptr inbounds { double, double }, ptr %33, i32 0, i32 1
  %290 = extractvalue { double, double } %286, 1
  store double %290, ptr %289, align 8
  %291 = load ptr, ptr %4, align 8, !tbaa !9
  %292 = getelementptr inbounds { double, double }, ptr %33, i32 0, i32 0
  %293 = load double, ptr %292, align 8
  %294 = getelementptr inbounds { double, double }, ptr %33, i32 0, i32 1
  %295 = load double, ptr %294, align 8
  %296 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %293, double %295, ptr noundef %291)
  %297 = load ptr, ptr %4, align 8, !tbaa !9
  %298 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %269, double noundef %296, ptr noundef %297)
  store double %298, ptr %21, align 8, !tbaa !13
  br label %299

299:                                              ; preds = %268
  %300 = load i64, ptr %8, align 8, !tbaa !11
  %301 = add nsw i64 %300, 1
  store i64 %301, ptr %8, align 8, !tbaa !11
  br label %261, !llvm.loop !26

302:                                              ; preds = %261
  br label %344

303:                                              ; preds = %257
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %304

304:                                              ; preds = %340, %303
  %305 = load i64, ptr %8, align 8, !tbaa !11
  %306 = load i64, ptr %6, align 8, !tbaa !11
  %307 = sub nsw i64 %306, 1
  %308 = icmp sle i64 %305, %307
  br i1 %308, label %309, label %343

309:                                              ; preds = %304
  %310 = load double, ptr %21, align 8, !tbaa !13
  %311 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %312 = load ptr, ptr %311, align 8, !tbaa !15
  %313 = load i64, ptr %8, align 8, !tbaa !11
  %314 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %312, i64 %313
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %37, ptr align 8 %314, i64 16, i1 false), !tbaa.struct !25
  %315 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %19, i32 0, i32 4
  %316 = load ptr, ptr %315, align 8, !tbaa !15
  %317 = load i64, ptr %8, align 8, !tbaa !11
  %318 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %316, i64 %317
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %38, ptr align 8 %318, i64 16, i1 false), !tbaa.struct !25
  %319 = getelementptr inbounds { double, double }, ptr %37, i32 0, i32 0
  %320 = load double, ptr %319, align 8
  %321 = getelementptr inbounds { double, double }, ptr %37, i32 0, i32 1
  %322 = load double, ptr %321, align 8
  %323 = getelementptr inbounds { double, double }, ptr %38, i32 0, i32 0
  %324 = load double, ptr %323, align 8
  %325 = getelementptr inbounds { double, double }, ptr %38, i32 0, i32 1
  %326 = load double, ptr %325, align 8
  %327 = call { double, double } @_ZN11alglib_impl8ae_c_subENS_10ae_complexES0_(double %320, double %322, double %324, double %326)
  %328 = getelementptr inbounds { double, double }, ptr %36, i32 0, i32 0
  %329 = extractvalue { double, double } %327, 0
  store double %329, ptr %328, align 8
  %330 = getelementptr inbounds { double, double }, ptr %36, i32 0, i32 1
  %331 = extractvalue { double, double } %327, 1
  store double %331, ptr %330, align 8
  %332 = load ptr, ptr %4, align 8, !tbaa !9
  %333 = getelementptr inbounds { double, double }, ptr %36, i32 0, i32 0
  %334 = load double, ptr %333, align 8
  %335 = getelementptr inbounds { double, double }, ptr %36, i32 0, i32 1
  %336 = load double, ptr %335, align 8
  %337 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %334, double %336, ptr noundef %332)
  %338 = load ptr, ptr %4, align 8, !tbaa !9
  %339 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %310, double noundef %337, ptr noundef %338)
  store double %339, ptr %21, align 8, !tbaa !13
  br label %340

340:                                              ; preds = %309
  %341 = load i64, ptr %8, align 8, !tbaa !11
  %342 = add nsw i64 %341, 1
  store i64 %342, ptr %8, align 8, !tbaa !11
  br label %304, !llvm.loop !27

343:                                              ; preds = %304
  br label %344

344:                                              ; preds = %343, %302
  %345 = load i64, ptr %6, align 8, !tbaa !11
  %346 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %12, i64 noundef %345, ptr noundef %346)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %347

347:                                              ; preds = %360, %344
  %348 = load i64, ptr %8, align 8, !tbaa !11
  %349 = load i64, ptr %6, align 8, !tbaa !11
  %350 = sub nsw i64 %349, 1
  %351 = icmp sle i64 %348, %350
  br i1 %351, label %352, label %363

352:                                              ; preds = %347
  %353 = load ptr, ptr %4, align 8, !tbaa !9
  %354 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %353)
  %355 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %354, double -1.000000e+00)
  %356 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %12, i32 0, i32 4
  %357 = load ptr, ptr %356, align 8, !tbaa !15
  %358 = load i64, ptr %8, align 8, !tbaa !11
  %359 = getelementptr inbounds double, ptr %357, i64 %358
  store double %355, ptr %359, align 8, !tbaa !13
  br label %360

360:                                              ; preds = %352
  %361 = load i64, ptr %8, align 8, !tbaa !11
  %362 = add nsw i64 %361, 1
  store i64 %362, ptr %8, align 8, !tbaa !11
  br label %347, !llvm.loop !28

363:                                              ; preds = %347
  %364 = load i64, ptr %7, align 8, !tbaa !11
  %365 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %13, i64 noundef %364, ptr noundef %365)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %366

366:                                              ; preds = %379, %363
  %367 = load i64, ptr %8, align 8, !tbaa !11
  %368 = load i64, ptr %7, align 8, !tbaa !11
  %369 = sub nsw i64 %368, 1
  %370 = icmp sle i64 %367, %369
  br i1 %370, label %371, label %382

371:                                              ; preds = %366
  %372 = load ptr, ptr %4, align 8, !tbaa !9
  %373 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %372)
  %374 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %373, double -1.000000e+00)
  %375 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %13, i32 0, i32 4
  %376 = load ptr, ptr %375, align 8, !tbaa !15
  %377 = load i64, ptr %8, align 8, !tbaa !11
  %378 = getelementptr inbounds double, ptr %376, i64 %377
  store double %374, ptr %378, align 8, !tbaa !13
  br label %379

379:                                              ; preds = %371
  %380 = load i64, ptr %8, align 8, !tbaa !11
  %381 = add nsw i64 %380, 1
  store i64 %381, ptr %8, align 8, !tbaa !11
  br label %366, !llvm.loop !29

382:                                              ; preds = %366
  %383 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %14, i64 noundef 1, ptr noundef %383)
  %384 = load i64, ptr %10, align 8, !tbaa !11
  %385 = icmp eq i64 %384, -3
  br i1 %385, label %386, label %464

386:                                              ; preds = %382
  %387 = load i64, ptr %11, align 8, !tbaa !11
  %388 = icmp eq i64 %387, 0
  br i1 %388, label %389, label %430

389:                                              ; preds = %386
  %390 = load i64, ptr %6, align 8, !tbaa !11
  %391 = load i64, ptr %7, align 8, !tbaa !11
  %392 = add nsw i64 %390, %391
  %393 = mul nsw i64 2, %392
  %394 = add nsw i64 %393, 5
  %395 = load ptr, ptr %4, align 8, !tbaa !9
  %396 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef %31, i64 noundef %394, ptr noundef %395)
  store i64 %396, ptr %9, align 8, !tbaa !11
  %397 = load ptr, ptr %4, align 8, !tbaa !9
  %398 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %31, ptr noundef %397)
  %399 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %398, double noundef 0.000000e+00)
  br i1 %399, label %400, label %413

400:                                              ; preds = %389
  %401 = load i64, ptr %9, align 8, !tbaa !11
  %402 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %14, i64 noundef %401, ptr noundef %402)
  %403 = load i64, ptr %6, align 8, !tbaa !11
  %404 = load i64, ptr %7, align 8, !tbaa !11
  %405 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl7convr1dEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef %12, i64 noundef %403, ptr noundef %13, i64 noundef %404, ptr noundef %14, ptr noundef %405)
  %406 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 0
  %407 = load i64, ptr %406, align 8, !tbaa !22
  %408 = load i64, ptr %6, align 8, !tbaa !11
  %409 = load i64, ptr %7, align 8, !tbaa !11
  %410 = add nsw i64 %408, %409
  %411 = sub nsw i64 %410, 1
  %412 = icmp ne i64 %407, %411
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %27, i1 noundef zeroext %412, ptr noundef @.str.19, i32 noundef 125315, ptr noundef @.str.953)
  br label %429

413:                                              ; preds = %389
  %414 = load i64, ptr %9, align 8, !tbaa !11
  %415 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %14, i64 noundef %414, ptr noundef %415)
  %416 = load i64, ptr %6, align 8, !tbaa !11
  %417 = load i64, ptr %7, align 8, !tbaa !11
  %418 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl10convr1dbufEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef %12, i64 noundef %416, ptr noundef %13, i64 noundef %417, ptr noundef %14, ptr noundef %418)
  %419 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 0
  %420 = load i64, ptr %419, align 8, !tbaa !22
  %421 = load i64, ptr %6, align 8, !tbaa !11
  %422 = load i64, ptr %7, align 8, !tbaa !11
  %423 = add nsw i64 %421, %422
  %424 = sub nsw i64 %423, 1
  %425 = load i64, ptr %9, align 8, !tbaa !11
  %426 = load ptr, ptr %4, align 8, !tbaa !9
  %427 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %424, i64 noundef %425, ptr noundef %426)
  %428 = icmp ne i64 %420, %427
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %27, i1 noundef zeroext %428, ptr noundef @.str.19, i32 noundef 125321, ptr noundef @.str.954)
  br label %429

429:                                              ; preds = %413, %400
  br label %463

430:                                              ; preds = %386
  %431 = load i64, ptr %6, align 8, !tbaa !11
  %432 = mul nsw i64 2, %431
  %433 = add nsw i64 %432, 5
  %434 = load ptr, ptr %4, align 8, !tbaa !9
  %435 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef %31, i64 noundef %433, ptr noundef %434)
  store i64 %435, ptr %9, align 8, !tbaa !11
  %436 = load ptr, ptr %4, align 8, !tbaa !9
  %437 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %31, ptr noundef %436)
  %438 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %437, double noundef 0.000000e+00)
  br i1 %438, label %439, label %449

439:                                              ; preds = %430
  %440 = load i64, ptr %9, align 8, !tbaa !11
  %441 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %14, i64 noundef %440, ptr noundef %441)
  %442 = load i64, ptr %6, align 8, !tbaa !11
  %443 = load i64, ptr %7, align 8, !tbaa !11
  %444 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15convr1dcircularEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef %12, i64 noundef %442, ptr noundef %13, i64 noundef %443, ptr noundef %14, ptr noundef %444)
  %445 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 0
  %446 = load i64, ptr %445, align 8, !tbaa !22
  %447 = load i64, ptr %6, align 8, !tbaa !11
  %448 = icmp ne i64 %446, %447
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %27, i1 noundef zeroext %448, ptr noundef @.str.19, i32 noundef 125331, ptr noundef @.str.955)
  br label %462

449:                                              ; preds = %430
  %450 = load i64, ptr %9, align 8, !tbaa !11
  %451 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %14, i64 noundef %450, ptr noundef %451)
  %452 = load i64, ptr %6, align 8, !tbaa !11
  %453 = load i64, ptr %7, align 8, !tbaa !11
  %454 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl18convr1dcircularbufEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef %12, i64 noundef %452, ptr noundef %13, i64 noundef %453, ptr noundef %14, ptr noundef %454)
  %455 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 0
  %456 = load i64, ptr %455, align 8, !tbaa !22
  %457 = load i64, ptr %6, align 8, !tbaa !11
  %458 = load i64, ptr %9, align 8, !tbaa !11
  %459 = load ptr, ptr %4, align 8, !tbaa !9
  %460 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %457, i64 noundef %458, ptr noundef %459)
  %461 = icmp ne i64 %456, %460
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %27, i1 noundef zeroext %461, ptr noundef @.str.19, i32 noundef 125337, ptr noundef @.str.956)
  br label %462

462:                                              ; preds = %449, %439
  br label %463

463:                                              ; preds = %462, %429
  br label %483

464:                                              ; preds = %382
  %465 = load i64, ptr %6, align 8, !tbaa !11
  %466 = load i64, ptr %7, align 8, !tbaa !11
  %467 = icmp sge i64 %465, %466
  br i1 %467, label %468, label %475

468:                                              ; preds = %464
  %469 = load i64, ptr %6, align 8, !tbaa !11
  %470 = load i64, ptr %7, align 8, !tbaa !11
  %471 = load i64, ptr %11, align 8, !tbaa !11
  %472 = icmp ne i64 %471, 0
  %473 = load i64, ptr %10, align 8, !tbaa !11
  %474 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl8convr1dxEPKNS_9ae_vectorElS2_lbllPS0_PNS_8ae_stateE(ptr noundef %12, i64 noundef %469, ptr noundef %13, i64 noundef %470, i1 noundef zeroext %472, i64 noundef %473, i64 noundef 0, ptr noundef %14, ptr noundef %474)
  br label %482

475:                                              ; preds = %464
  %476 = load i64, ptr %7, align 8, !tbaa !11
  %477 = load i64, ptr %6, align 8, !tbaa !11
  %478 = load i64, ptr %11, align 8, !tbaa !11
  %479 = icmp ne i64 %478, 0
  %480 = load i64, ptr %10, align 8, !tbaa !11
  %481 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl8convr1dxEPKNS_9ae_vectorElS2_lbllPS0_PNS_8ae_stateE(ptr noundef %13, i64 noundef %476, ptr noundef %12, i64 noundef %477, i1 noundef zeroext %479, i64 noundef %480, i64 noundef 0, ptr noundef %14, ptr noundef %481)
  br label %482

482:                                              ; preds = %475, %468
  br label %483

483:                                              ; preds = %482, %463
  %484 = load i64, ptr %11, align 8, !tbaa !11
  %485 = icmp eq i64 %484, 0
  br i1 %485, label %486, label %490

486:                                              ; preds = %483
  %487 = load i64, ptr %6, align 8, !tbaa !11
  %488 = load i64, ptr %7, align 8, !tbaa !11
  %489 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testconvunit_refconvr1dPKN11alglib_impl9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef %12, i64 noundef %487, ptr noundef %13, i64 noundef %488, ptr noundef %15, ptr noundef %489)
  br label %494

490:                                              ; preds = %483
  %491 = load i64, ptr %6, align 8, !tbaa !11
  %492 = load i64, ptr %7, align 8, !tbaa !11
  %493 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL31testconvunit_refconvr1dcircularPKN11alglib_impl9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef %12, i64 noundef %491, ptr noundef %13, i64 noundef %492, ptr noundef %15, ptr noundef %493)
  br label %494

494:                                              ; preds = %490, %486
  %495 = load i64, ptr %11, align 8, !tbaa !11
  %496 = icmp eq i64 %495, 0
  br i1 %496, label %497, label %526

497:                                              ; preds = %494
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %498

498:                                              ; preds = %522, %497
  %499 = load i64, ptr %8, align 8, !tbaa !11
  %500 = load i64, ptr %6, align 8, !tbaa !11
  %501 = load i64, ptr %7, align 8, !tbaa !11
  %502 = add nsw i64 %500, %501
  %503 = sub nsw i64 %502, 2
  %504 = icmp sle i64 %499, %503
  br i1 %504, label %505, label %525

505:                                              ; preds = %498
  %506 = load double, ptr %22, align 8, !tbaa !13
  %507 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %508 = load ptr, ptr %507, align 8, !tbaa !15
  %509 = load i64, ptr %8, align 8, !tbaa !11
  %510 = getelementptr inbounds double, ptr %508, i64 %509
  %511 = load double, ptr %510, align 8, !tbaa !13
  %512 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %513 = load ptr, ptr %512, align 8, !tbaa !15
  %514 = load i64, ptr %8, align 8, !tbaa !11
  %515 = getelementptr inbounds double, ptr %513, i64 %514
  %516 = load double, ptr %515, align 8, !tbaa !13
  %517 = fsub double %511, %516
  %518 = load ptr, ptr %4, align 8, !tbaa !9
  %519 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %517, ptr noundef %518)
  %520 = load ptr, ptr %4, align 8, !tbaa !9
  %521 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %506, double noundef %519, ptr noundef %520)
  store double %521, ptr %22, align 8, !tbaa !13
  br label %522

522:                                              ; preds = %505
  %523 = load i64, ptr %8, align 8, !tbaa !11
  %524 = add nsw i64 %523, 1
  store i64 %524, ptr %8, align 8, !tbaa !11
  br label %498, !llvm.loop !30

525:                                              ; preds = %498
  br label %553

526:                                              ; preds = %494
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %527

527:                                              ; preds = %549, %526
  %528 = load i64, ptr %8, align 8, !tbaa !11
  %529 = load i64, ptr %6, align 8, !tbaa !11
  %530 = sub nsw i64 %529, 1
  %531 = icmp sle i64 %528, %530
  br i1 %531, label %532, label %552

532:                                              ; preds = %527
  %533 = load double, ptr %22, align 8, !tbaa !13
  %534 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %535 = load ptr, ptr %534, align 8, !tbaa !15
  %536 = load i64, ptr %8, align 8, !tbaa !11
  %537 = getelementptr inbounds double, ptr %535, i64 %536
  %538 = load double, ptr %537, align 8, !tbaa !13
  %539 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %540 = load ptr, ptr %539, align 8, !tbaa !15
  %541 = load i64, ptr %8, align 8, !tbaa !11
  %542 = getelementptr inbounds double, ptr %540, i64 %541
  %543 = load double, ptr %542, align 8, !tbaa !13
  %544 = fsub double %538, %543
  %545 = load ptr, ptr %4, align 8, !tbaa !9
  %546 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %544, ptr noundef %545)
  %547 = load ptr, ptr %4, align 8, !tbaa !9
  %548 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %533, double noundef %546, ptr noundef %547)
  store double %548, ptr %22, align 8, !tbaa !13
  br label %549

549:                                              ; preds = %532
  %550 = load i64, ptr %8, align 8, !tbaa !11
  %551 = add nsw i64 %550, 1
  store i64 %551, ptr %8, align 8, !tbaa !11
  br label %527, !llvm.loop !31

552:                                              ; preds = %527
  br label %553

553:                                              ; preds = %552, %525
  br label %554

554:                                              ; preds = %553, %90
  %555 = load i64, ptr %10, align 8, !tbaa !11
  %556 = add nsw i64 %555, 1
  store i64 %556, ptr %10, align 8, !tbaa !11
  br label %77, !llvm.loop !32

557:                                              ; preds = %77
  br label %558

558:                                              ; preds = %557
  %559 = load i64, ptr %11, align 8, !tbaa !11
  %560 = add nsw i64 %559, 1
  store i64 %560, ptr %11, align 8, !tbaa !11
  br label %73, !llvm.loop !33

561:                                              ; preds = %73
  br label %562

562:                                              ; preds = %561
  %563 = load i64, ptr %7, align 8, !tbaa !11
  %564 = add nsw i64 %563, 1
  store i64 %564, ptr %7, align 8, !tbaa !11
  br label %68, !llvm.loop !34

565:                                              ; preds = %68
  br label %566

566:                                              ; preds = %565
  %567 = load i64, ptr %6, align 8, !tbaa !11
  %568 = add nsw i64 %567, 1
  store i64 %568, ptr %6, align 8, !tbaa !11
  br label %63, !llvm.loop !35

569:                                              ; preds = %63
  %570 = load i8, ptr %26, align 1, !tbaa !5, !range !36, !noundef !37
  %571 = trunc i8 %570 to i1
  br i1 %571, label %576, label %572

572:                                              ; preds = %569
  %573 = load double, ptr %21, align 8, !tbaa !13
  %574 = load double, ptr %25, align 8, !tbaa !13
  %575 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %573, double noundef %574)
  br label %576

576:                                              ; preds = %572, %569
  %577 = phi i1 [ true, %569 ], [ %575, %572 ]
  %578 = zext i1 %577 to i8
  store i8 %578, ptr %26, align 1, !tbaa !5
  %579 = load i8, ptr %27, align 1, !tbaa !5, !range !36, !noundef !37
  %580 = trunc i8 %579 to i1
  br i1 %580, label %585, label %581

581:                                              ; preds = %576
  %582 = load double, ptr %22, align 8, !tbaa !13
  %583 = load double, ptr %25, align 8, !tbaa !13
  %584 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %582, double noundef %583)
  br label %585

585:                                              ; preds = %581, %576
  %586 = phi i1 [ true, %576 ], [ %584, %581 ]
  %587 = zext i1 %586 to i8
  store i8 %587, ptr %27, align 1, !tbaa !5
  store double 0.000000e+00, ptr %23, align 8, !tbaa !13
  store double 0.000000e+00, ptr %24, align 8, !tbaa !13
  store i64 1, ptr %6, align 8, !tbaa !11
  br label %588

588:                                              ; preds = %979, %585
  %589 = load i64, ptr %6, align 8, !tbaa !11
  %590 = load i64, ptr %20, align 8, !tbaa !11
  %591 = icmp sle i64 %589, %590
  br i1 %591, label %592, label %982

592:                                              ; preds = %588
  store i64 1, ptr %7, align 8, !tbaa !11
  br label %593

593:                                              ; preds = %975, %592
  %594 = load i64, ptr %7, align 8, !tbaa !11
  %595 = load i64, ptr %20, align 8, !tbaa !11
  %596 = icmp sle i64 %594, %595
  br i1 %596, label %597, label %978

597:                                              ; preds = %593
  %598 = load i64, ptr %6, align 8, !tbaa !11
  %599 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %16, i64 noundef %598, ptr noundef %599)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %600

600:                                              ; preds = %622, %597
  %601 = load i64, ptr %8, align 8, !tbaa !11
  %602 = load i64, ptr %6, align 8, !tbaa !11
  %603 = sub nsw i64 %602, 1
  %604 = icmp sle i64 %601, %603
  br i1 %604, label %605, label %625

605:                                              ; preds = %600
  %606 = load ptr, ptr %4, align 8, !tbaa !9
  %607 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %606)
  %608 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %607, double -1.000000e+00)
  %609 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %610 = load ptr, ptr %609, align 8, !tbaa !15
  %611 = load i64, ptr %8, align 8, !tbaa !11
  %612 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %610, i64 %611
  %613 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %612, i32 0, i32 0
  store double %608, ptr %613, align 8, !tbaa !16
  %614 = load ptr, ptr %4, align 8, !tbaa !9
  %615 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %614)
  %616 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %615, double -1.000000e+00)
  %617 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %618 = load ptr, ptr %617, align 8, !tbaa !15
  %619 = load i64, ptr %8, align 8, !tbaa !11
  %620 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %618, i64 %619
  %621 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %620, i32 0, i32 1
  store double %616, ptr %621, align 8, !tbaa !18
  br label %622

622:                                              ; preds = %605
  %623 = load i64, ptr %8, align 8, !tbaa !11
  %624 = add nsw i64 %623, 1
  store i64 %624, ptr %8, align 8, !tbaa !11
  br label %600, !llvm.loop !38

625:                                              ; preds = %600
  %626 = load i64, ptr %7, align 8, !tbaa !11
  %627 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %17, i64 noundef %626, ptr noundef %627)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %628

628:                                              ; preds = %650, %625
  %629 = load i64, ptr %8, align 8, !tbaa !11
  %630 = load i64, ptr %7, align 8, !tbaa !11
  %631 = sub nsw i64 %630, 1
  %632 = icmp sle i64 %629, %631
  br i1 %632, label %633, label %653

633:                                              ; preds = %628
  %634 = load ptr, ptr %4, align 8, !tbaa !9
  %635 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %634)
  %636 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %635, double -1.000000e+00)
  %637 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %638 = load ptr, ptr %637, align 8, !tbaa !15
  %639 = load i64, ptr %8, align 8, !tbaa !11
  %640 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %638, i64 %639
  %641 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %640, i32 0, i32 0
  store double %636, ptr %641, align 8, !tbaa !16
  %642 = load ptr, ptr %4, align 8, !tbaa !9
  %643 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %642)
  %644 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %643, double -1.000000e+00)
  %645 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %646 = load ptr, ptr %645, align 8, !tbaa !15
  %647 = load i64, ptr %8, align 8, !tbaa !11
  %648 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %646, i64 %647
  %649 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %648, i32 0, i32 1
  store double %644, ptr %649, align 8, !tbaa !18
  br label %650

650:                                              ; preds = %633
  %651 = load i64, ptr %8, align 8, !tbaa !11
  %652 = add nsw i64 %651, 1
  store i64 %652, ptr %8, align 8, !tbaa !11
  br label %628, !llvm.loop !39

653:                                              ; preds = %628
  %654 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %19, i64 noundef 1, ptr noundef %654)
  %655 = load i64, ptr %6, align 8, !tbaa !11
  %656 = load i64, ptr %7, align 8, !tbaa !11
  %657 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl7convc1dEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef %16, i64 noundef %655, ptr noundef %17, i64 noundef %656, ptr noundef %19, ptr noundef %657)
  %658 = load ptr, ptr %4, align 8, !tbaa !9
  %659 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %31, ptr noundef %658)
  %660 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %659, double noundef 0.000000e+00)
  br i1 %660, label %661, label %673

661:                                              ; preds = %653
  %662 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %18, i64 noundef 1, ptr noundef %662)
  %663 = load i64, ptr %6, align 8, !tbaa !11
  %664 = load i64, ptr %7, align 8, !tbaa !11
  %665 = add nsw i64 %663, %664
  %666 = sub nsw i64 %665, 1
  %667 = load i64, ptr %7, align 8, !tbaa !11
  %668 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl10convc1dinvEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef %19, i64 noundef %666, ptr noundef %17, i64 noundef %667, ptr noundef %18, ptr noundef %668)
  %669 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 0
  %670 = load i64, ptr %669, align 8, !tbaa !22
  %671 = load i64, ptr %6, align 8, !tbaa !11
  %672 = icmp ne i64 %670, %671
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %28, i1 noundef zeroext %672, ptr noundef @.str.19, i32 noundef 125421, ptr noundef @.str.957)
  br label %694

673:                                              ; preds = %653
  %674 = load i64, ptr %6, align 8, !tbaa !11
  %675 = mul nsw i64 2, %674
  %676 = add nsw i64 %675, 5
  %677 = load ptr, ptr %4, align 8, !tbaa !9
  %678 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef %31, i64 noundef %676, ptr noundef %677)
  store i64 %678, ptr %9, align 8, !tbaa !11
  %679 = load i64, ptr %9, align 8, !tbaa !11
  %680 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %18, i64 noundef %679, ptr noundef %680)
  %681 = load i64, ptr %6, align 8, !tbaa !11
  %682 = load i64, ptr %7, align 8, !tbaa !11
  %683 = add nsw i64 %681, %682
  %684 = sub nsw i64 %683, 1
  %685 = load i64, ptr %7, align 8, !tbaa !11
  %686 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13convc1dinvbufEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef %19, i64 noundef %684, ptr noundef %17, i64 noundef %685, ptr noundef %18, ptr noundef %686)
  %687 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 0
  %688 = load i64, ptr %687, align 8, !tbaa !22
  %689 = load i64, ptr %6, align 8, !tbaa !11
  %690 = load i64, ptr %9, align 8, !tbaa !11
  %691 = load ptr, ptr %4, align 8, !tbaa !9
  %692 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %689, i64 noundef %690, ptr noundef %691)
  %693 = icmp ne i64 %688, %692
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %28, i1 noundef zeroext %693, ptr noundef @.str.19, i32 noundef 125428, ptr noundef @.str.958)
  br label %694

694:                                              ; preds = %673, %661
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %695

695:                                              ; preds = %731, %694
  %696 = load i64, ptr %8, align 8, !tbaa !11
  %697 = load i64, ptr %6, align 8, !tbaa !11
  %698 = sub nsw i64 %697, 1
  %699 = icmp sle i64 %696, %698
  br i1 %699, label %700, label %734

700:                                              ; preds = %695
  %701 = load double, ptr %23, align 8, !tbaa !13
  %702 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %703 = load ptr, ptr %702, align 8, !tbaa !15
  %704 = load i64, ptr %8, align 8, !tbaa !11
  %705 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %703, i64 %704
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %40, ptr align 8 %705, i64 16, i1 false), !tbaa.struct !25
  %706 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %707 = load ptr, ptr %706, align 8, !tbaa !15
  %708 = load i64, ptr %8, align 8, !tbaa !11
  %709 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %707, i64 %708
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %41, ptr align 8 %709, i64 16, i1 false), !tbaa.struct !25
  %710 = getelementptr inbounds { double, double }, ptr %40, i32 0, i32 0
  %711 = load double, ptr %710, align 8
  %712 = getelementptr inbounds { double, double }, ptr %40, i32 0, i32 1
  %713 = load double, ptr %712, align 8
  %714 = getelementptr inbounds { double, double }, ptr %41, i32 0, i32 0
  %715 = load double, ptr %714, align 8
  %716 = getelementptr inbounds { double, double }, ptr %41, i32 0, i32 1
  %717 = load double, ptr %716, align 8
  %718 = call { double, double } @_ZN11alglib_impl8ae_c_subENS_10ae_complexES0_(double %711, double %713, double %715, double %717)
  %719 = getelementptr inbounds { double, double }, ptr %39, i32 0, i32 0
  %720 = extractvalue { double, double } %718, 0
  store double %720, ptr %719, align 8
  %721 = getelementptr inbounds { double, double }, ptr %39, i32 0, i32 1
  %722 = extractvalue { double, double } %718, 1
  store double %722, ptr %721, align 8
  %723 = load ptr, ptr %4, align 8, !tbaa !9
  %724 = getelementptr inbounds { double, double }, ptr %39, i32 0, i32 0
  %725 = load double, ptr %724, align 8
  %726 = getelementptr inbounds { double, double }, ptr %39, i32 0, i32 1
  %727 = load double, ptr %726, align 8
  %728 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %725, double %727, ptr noundef %723)
  %729 = load ptr, ptr %4, align 8, !tbaa !9
  %730 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %701, double noundef %728, ptr noundef %729)
  store double %730, ptr %23, align 8, !tbaa !13
  br label %731

731:                                              ; preds = %700
  %732 = load i64, ptr %8, align 8, !tbaa !11
  %733 = add nsw i64 %732, 1
  store i64 %733, ptr %8, align 8, !tbaa !11
  br label %695, !llvm.loop !40

734:                                              ; preds = %695
  %735 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %19, i64 noundef 1, ptr noundef %735)
  %736 = load i64, ptr %6, align 8, !tbaa !11
  %737 = load i64, ptr %7, align 8, !tbaa !11
  %738 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15convc1dcircularEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef %16, i64 noundef %736, ptr noundef %17, i64 noundef %737, ptr noundef %19, ptr noundef %738)
  %739 = load ptr, ptr %4, align 8, !tbaa !9
  %740 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %31, ptr noundef %739)
  %741 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %740, double noundef 0.000000e+00)
  br i1 %741, label %742, label %751

742:                                              ; preds = %734
  %743 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %18, i64 noundef 1, ptr noundef %743)
  %744 = load i64, ptr %6, align 8, !tbaa !11
  %745 = load i64, ptr %7, align 8, !tbaa !11
  %746 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl18convc1dcircularinvEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef %19, i64 noundef %744, ptr noundef %17, i64 noundef %745, ptr noundef %18, ptr noundef %746)
  %747 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 0
  %748 = load i64, ptr %747, align 8, !tbaa !22
  %749 = load i64, ptr %6, align 8, !tbaa !11
  %750 = icmp ne i64 %748, %749
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %28, i1 noundef zeroext %750, ptr noundef @.str.19, i32 noundef 125440, ptr noundef @.str.959)
  br label %769

751:                                              ; preds = %734
  %752 = load i64, ptr %6, align 8, !tbaa !11
  %753 = mul nsw i64 2, %752
  %754 = add nsw i64 %753, 5
  %755 = load ptr, ptr %4, align 8, !tbaa !9
  %756 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef %31, i64 noundef %754, ptr noundef %755)
  store i64 %756, ptr %9, align 8, !tbaa !11
  %757 = load i64, ptr %9, align 8, !tbaa !11
  %758 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %18, i64 noundef %757, ptr noundef %758)
  %759 = load i64, ptr %6, align 8, !tbaa !11
  %760 = load i64, ptr %7, align 8, !tbaa !11
  %761 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl21convc1dcircularinvbufEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef %19, i64 noundef %759, ptr noundef %17, i64 noundef %760, ptr noundef %18, ptr noundef %761)
  %762 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 0
  %763 = load i64, ptr %762, align 8, !tbaa !22
  %764 = load i64, ptr %6, align 8, !tbaa !11
  %765 = load i64, ptr %9, align 8, !tbaa !11
  %766 = load ptr, ptr %4, align 8, !tbaa !9
  %767 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %764, i64 noundef %765, ptr noundef %766)
  %768 = icmp ne i64 %763, %767
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %28, i1 noundef zeroext %768, ptr noundef @.str.19, i32 noundef 125447, ptr noundef @.str.960)
  br label %769

769:                                              ; preds = %751, %742
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %770

770:                                              ; preds = %806, %769
  %771 = load i64, ptr %8, align 8, !tbaa !11
  %772 = load i64, ptr %6, align 8, !tbaa !11
  %773 = sub nsw i64 %772, 1
  %774 = icmp sle i64 %771, %773
  br i1 %774, label %775, label %809

775:                                              ; preds = %770
  %776 = load double, ptr %23, align 8, !tbaa !13
  %777 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %778 = load ptr, ptr %777, align 8, !tbaa !15
  %779 = load i64, ptr %8, align 8, !tbaa !11
  %780 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %778, i64 %779
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %43, ptr align 8 %780, i64 16, i1 false), !tbaa.struct !25
  %781 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %782 = load ptr, ptr %781, align 8, !tbaa !15
  %783 = load i64, ptr %8, align 8, !tbaa !11
  %784 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %782, i64 %783
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %44, ptr align 8 %784, i64 16, i1 false), !tbaa.struct !25
  %785 = getelementptr inbounds { double, double }, ptr %43, i32 0, i32 0
  %786 = load double, ptr %785, align 8
  %787 = getelementptr inbounds { double, double }, ptr %43, i32 0, i32 1
  %788 = load double, ptr %787, align 8
  %789 = getelementptr inbounds { double, double }, ptr %44, i32 0, i32 0
  %790 = load double, ptr %789, align 8
  %791 = getelementptr inbounds { double, double }, ptr %44, i32 0, i32 1
  %792 = load double, ptr %791, align 8
  %793 = call { double, double } @_ZN11alglib_impl8ae_c_subENS_10ae_complexES0_(double %786, double %788, double %790, double %792)
  %794 = getelementptr inbounds { double, double }, ptr %42, i32 0, i32 0
  %795 = extractvalue { double, double } %793, 0
  store double %795, ptr %794, align 8
  %796 = getelementptr inbounds { double, double }, ptr %42, i32 0, i32 1
  %797 = extractvalue { double, double } %793, 1
  store double %797, ptr %796, align 8
  %798 = load ptr, ptr %4, align 8, !tbaa !9
  %799 = getelementptr inbounds { double, double }, ptr %42, i32 0, i32 0
  %800 = load double, ptr %799, align 8
  %801 = getelementptr inbounds { double, double }, ptr %42, i32 0, i32 1
  %802 = load double, ptr %801, align 8
  %803 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %800, double %802, ptr noundef %798)
  %804 = load ptr, ptr %4, align 8, !tbaa !9
  %805 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %776, double noundef %803, ptr noundef %804)
  store double %805, ptr %23, align 8, !tbaa !13
  br label %806

806:                                              ; preds = %775
  %807 = load i64, ptr %8, align 8, !tbaa !11
  %808 = add nsw i64 %807, 1
  store i64 %808, ptr %8, align 8, !tbaa !11
  br label %770, !llvm.loop !41

809:                                              ; preds = %770
  %810 = load i64, ptr %6, align 8, !tbaa !11
  %811 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %12, i64 noundef %810, ptr noundef %811)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %812

812:                                              ; preds = %825, %809
  %813 = load i64, ptr %8, align 8, !tbaa !11
  %814 = load i64, ptr %6, align 8, !tbaa !11
  %815 = sub nsw i64 %814, 1
  %816 = icmp sle i64 %813, %815
  br i1 %816, label %817, label %828

817:                                              ; preds = %812
  %818 = load ptr, ptr %4, align 8, !tbaa !9
  %819 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %818)
  %820 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %819, double -1.000000e+00)
  %821 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %12, i32 0, i32 4
  %822 = load ptr, ptr %821, align 8, !tbaa !15
  %823 = load i64, ptr %8, align 8, !tbaa !11
  %824 = getelementptr inbounds double, ptr %822, i64 %823
  store double %820, ptr %824, align 8, !tbaa !13
  br label %825

825:                                              ; preds = %817
  %826 = load i64, ptr %8, align 8, !tbaa !11
  %827 = add nsw i64 %826, 1
  store i64 %827, ptr %8, align 8, !tbaa !11
  br label %812, !llvm.loop !42

828:                                              ; preds = %812
  %829 = load i64, ptr %7, align 8, !tbaa !11
  %830 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %13, i64 noundef %829, ptr noundef %830)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %831

831:                                              ; preds = %844, %828
  %832 = load i64, ptr %8, align 8, !tbaa !11
  %833 = load i64, ptr %7, align 8, !tbaa !11
  %834 = sub nsw i64 %833, 1
  %835 = icmp sle i64 %832, %834
  br i1 %835, label %836, label %847

836:                                              ; preds = %831
  %837 = load ptr, ptr %4, align 8, !tbaa !9
  %838 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %837)
  %839 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %838, double -1.000000e+00)
  %840 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %13, i32 0, i32 4
  %841 = load ptr, ptr %840, align 8, !tbaa !15
  %842 = load i64, ptr %8, align 8, !tbaa !11
  %843 = getelementptr inbounds double, ptr %841, i64 %842
  store double %839, ptr %843, align 8, !tbaa !13
  br label %844

844:                                              ; preds = %836
  %845 = load i64, ptr %8, align 8, !tbaa !11
  %846 = add nsw i64 %845, 1
  store i64 %846, ptr %8, align 8, !tbaa !11
  br label %831, !llvm.loop !43

847:                                              ; preds = %831
  %848 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %15, i64 noundef 1, ptr noundef %848)
  %849 = load i64, ptr %6, align 8, !tbaa !11
  %850 = load i64, ptr %7, align 8, !tbaa !11
  %851 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl7convr1dEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef %12, i64 noundef %849, ptr noundef %13, i64 noundef %850, ptr noundef %15, ptr noundef %851)
  %852 = load i64, ptr %6, align 8, !tbaa !11
  %853 = mul nsw i64 2, %852
  %854 = add nsw i64 %853, 5
  %855 = load ptr, ptr %4, align 8, !tbaa !9
  %856 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef %31, i64 noundef %854, ptr noundef %855)
  store i64 %856, ptr %9, align 8, !tbaa !11
  %857 = load i64, ptr %9, align 8, !tbaa !11
  %858 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %14, i64 noundef %857, ptr noundef %858)
  %859 = load ptr, ptr %4, align 8, !tbaa !9
  %860 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %31, ptr noundef %859)
  %861 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %860, double noundef 0.000000e+00)
  br i1 %861, label %862, label %873

862:                                              ; preds = %847
  %863 = load i64, ptr %6, align 8, !tbaa !11
  %864 = load i64, ptr %7, align 8, !tbaa !11
  %865 = add nsw i64 %863, %864
  %866 = sub nsw i64 %865, 1
  %867 = load i64, ptr %7, align 8, !tbaa !11
  %868 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl10convr1dinvEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef %15, i64 noundef %866, ptr noundef %13, i64 noundef %867, ptr noundef %14, ptr noundef %868)
  %869 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 0
  %870 = load i64, ptr %869, align 8, !tbaa !22
  %871 = load i64, ptr %6, align 8, !tbaa !11
  %872 = icmp ne i64 %870, %871
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %29, i1 noundef zeroext %872, ptr noundef @.str.19, i32 noundef 125474, ptr noundef @.str.961)
  br label %887

873:                                              ; preds = %847
  %874 = load i64, ptr %6, align 8, !tbaa !11
  %875 = load i64, ptr %7, align 8, !tbaa !11
  %876 = add nsw i64 %874, %875
  %877 = sub nsw i64 %876, 1
  %878 = load i64, ptr %7, align 8, !tbaa !11
  %879 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13convr1dinvbufEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef %15, i64 noundef %877, ptr noundef %13, i64 noundef %878, ptr noundef %14, ptr noundef %879)
  %880 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 0
  %881 = load i64, ptr %880, align 8, !tbaa !22
  %882 = load i64, ptr %6, align 8, !tbaa !11
  %883 = load i64, ptr %9, align 8, !tbaa !11
  %884 = load ptr, ptr %4, align 8, !tbaa !9
  %885 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %882, i64 noundef %883, ptr noundef %884)
  %886 = icmp ne i64 %881, %885
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %29, i1 noundef zeroext %886, ptr noundef @.str.19, i32 noundef 125479, ptr noundef @.str.962)
  br label %887

887:                                              ; preds = %873, %862
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %888

888:                                              ; preds = %910, %887
  %889 = load i64, ptr %8, align 8, !tbaa !11
  %890 = load i64, ptr %6, align 8, !tbaa !11
  %891 = sub nsw i64 %890, 1
  %892 = icmp sle i64 %889, %891
  br i1 %892, label %893, label %913

893:                                              ; preds = %888
  %894 = load double, ptr %24, align 8, !tbaa !13
  %895 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %896 = load ptr, ptr %895, align 8, !tbaa !15
  %897 = load i64, ptr %8, align 8, !tbaa !11
  %898 = getelementptr inbounds double, ptr %896, i64 %897
  %899 = load double, ptr %898, align 8, !tbaa !13
  %900 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %12, i32 0, i32 4
  %901 = load ptr, ptr %900, align 8, !tbaa !15
  %902 = load i64, ptr %8, align 8, !tbaa !11
  %903 = getelementptr inbounds double, ptr %901, i64 %902
  %904 = load double, ptr %903, align 8, !tbaa !13
  %905 = fsub double %899, %904
  %906 = load ptr, ptr %4, align 8, !tbaa !9
  %907 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %905, ptr noundef %906)
  %908 = load ptr, ptr %4, align 8, !tbaa !9
  %909 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %894, double noundef %907, ptr noundef %908)
  store double %909, ptr %24, align 8, !tbaa !13
  br label %910

910:                                              ; preds = %893
  %911 = load i64, ptr %8, align 8, !tbaa !11
  %912 = add nsw i64 %911, 1
  store i64 %912, ptr %8, align 8, !tbaa !11
  br label %888, !llvm.loop !44

913:                                              ; preds = %888
  %914 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %14, i64 noundef 1, ptr noundef %914)
  %915 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %15, i64 noundef 1, ptr noundef %915)
  %916 = load i64, ptr %6, align 8, !tbaa !11
  %917 = load i64, ptr %7, align 8, !tbaa !11
  %918 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15convr1dcircularEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef %12, i64 noundef %916, ptr noundef %13, i64 noundef %917, ptr noundef %15, ptr noundef %918)
  %919 = load i64, ptr %6, align 8, !tbaa !11
  %920 = mul nsw i64 2, %919
  %921 = add nsw i64 %920, 5
  %922 = load ptr, ptr %4, align 8, !tbaa !9
  %923 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef %31, i64 noundef %921, ptr noundef %922)
  store i64 %923, ptr %9, align 8, !tbaa !11
  %924 = load i64, ptr %9, align 8, !tbaa !11
  %925 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %14, i64 noundef %924, ptr noundef %925)
  %926 = load ptr, ptr %4, align 8, !tbaa !9
  %927 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %31, ptr noundef %926)
  %928 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %927, double noundef 0.000000e+00)
  br i1 %928, label %929, label %937

929:                                              ; preds = %913
  %930 = load i64, ptr %6, align 8, !tbaa !11
  %931 = load i64, ptr %7, align 8, !tbaa !11
  %932 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl18convr1dcircularinvEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef %15, i64 noundef %930, ptr noundef %13, i64 noundef %931, ptr noundef %14, ptr noundef %932)
  %933 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 0
  %934 = load i64, ptr %933, align 8, !tbaa !22
  %935 = load i64, ptr %6, align 8, !tbaa !11
  %936 = icmp ne i64 %934, %935
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %29, i1 noundef zeroext %936, ptr noundef @.str.19, i32 noundef 125493, ptr noundef @.str.963)
  br label %948

937:                                              ; preds = %913
  %938 = load i64, ptr %6, align 8, !tbaa !11
  %939 = load i64, ptr %7, align 8, !tbaa !11
  %940 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl21convr1dcircularinvbufEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef %15, i64 noundef %938, ptr noundef %13, i64 noundef %939, ptr noundef %14, ptr noundef %940)
  %941 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 0
  %942 = load i64, ptr %941, align 8, !tbaa !22
  %943 = load i64, ptr %6, align 8, !tbaa !11
  %944 = load i64, ptr %9, align 8, !tbaa !11
  %945 = load ptr, ptr %4, align 8, !tbaa !9
  %946 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %943, i64 noundef %944, ptr noundef %945)
  %947 = icmp ne i64 %942, %946
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %29, i1 noundef zeroext %947, ptr noundef @.str.19, i32 noundef 125498, ptr noundef @.str.964)
  br label %948

948:                                              ; preds = %937, %929
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %949

949:                                              ; preds = %971, %948
  %950 = load i64, ptr %8, align 8, !tbaa !11
  %951 = load i64, ptr %6, align 8, !tbaa !11
  %952 = sub nsw i64 %951, 1
  %953 = icmp sle i64 %950, %952
  br i1 %953, label %954, label %974

954:                                              ; preds = %949
  %955 = load double, ptr %24, align 8, !tbaa !13
  %956 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %957 = load ptr, ptr %956, align 8, !tbaa !15
  %958 = load i64, ptr %8, align 8, !tbaa !11
  %959 = getelementptr inbounds double, ptr %957, i64 %958
  %960 = load double, ptr %959, align 8, !tbaa !13
  %961 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %12, i32 0, i32 4
  %962 = load ptr, ptr %961, align 8, !tbaa !15
  %963 = load i64, ptr %8, align 8, !tbaa !11
  %964 = getelementptr inbounds double, ptr %962, i64 %963
  %965 = load double, ptr %964, align 8, !tbaa !13
  %966 = fsub double %960, %965
  %967 = load ptr, ptr %4, align 8, !tbaa !9
  %968 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %966, ptr noundef %967)
  %969 = load ptr, ptr %4, align 8, !tbaa !9
  %970 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %955, double noundef %968, ptr noundef %969)
  store double %970, ptr %24, align 8, !tbaa !13
  br label %971

971:                                              ; preds = %954
  %972 = load i64, ptr %8, align 8, !tbaa !11
  %973 = add nsw i64 %972, 1
  store i64 %973, ptr %8, align 8, !tbaa !11
  br label %949, !llvm.loop !45

974:                                              ; preds = %949
  br label %975

975:                                              ; preds = %974
  %976 = load i64, ptr %7, align 8, !tbaa !11
  %977 = add nsw i64 %976, 1
  store i64 %977, ptr %7, align 8, !tbaa !11
  br label %593, !llvm.loop !46

978:                                              ; preds = %593
  br label %979

979:                                              ; preds = %978
  %980 = load i64, ptr %6, align 8, !tbaa !11
  %981 = add nsw i64 %980, 1
  store i64 %981, ptr %6, align 8, !tbaa !11
  br label %588, !llvm.loop !47

982:                                              ; preds = %588
  %983 = load i8, ptr %28, align 1, !tbaa !5, !range !36, !noundef !37
  %984 = trunc i8 %983 to i1
  br i1 %984, label %989, label %985

985:                                              ; preds = %982
  %986 = load double, ptr %23, align 8, !tbaa !13
  %987 = load double, ptr %25, align 8, !tbaa !13
  %988 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %986, double noundef %987)
  br label %989

989:                                              ; preds = %985, %982
  %990 = phi i1 [ true, %982 ], [ %988, %985 ]
  %991 = zext i1 %990 to i8
  store i8 %991, ptr %28, align 1, !tbaa !5
  %992 = load i8, ptr %29, align 1, !tbaa !5, !range !36, !noundef !37
  %993 = trunc i8 %992 to i1
  br i1 %993, label %998, label %994

994:                                              ; preds = %989
  %995 = load double, ptr %24, align 8, !tbaa !13
  %996 = load double, ptr %25, align 8, !tbaa !13
  %997 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %995, double noundef %996)
  br label %998

998:                                              ; preds = %994, %989
  %999 = phi i1 [ true, %989 ], [ %997, %994 ]
  %1000 = zext i1 %999 to i8
  store i8 %1000, ptr %29, align 1, !tbaa !5
  %1001 = load i8, ptr %26, align 1, !tbaa !5, !range !36, !noundef !37
  %1002 = trunc i8 %1001 to i1
  br i1 %1002, label %1012, label %1003

1003:                                             ; preds = %998
  %1004 = load i8, ptr %27, align 1, !tbaa !5, !range !36, !noundef !37
  %1005 = trunc i8 %1004 to i1
  br i1 %1005, label %1012, label %1006

1006:                                             ; preds = %1003
  %1007 = load i8, ptr %28, align 1, !tbaa !5, !range !36, !noundef !37
  %1008 = trunc i8 %1007 to i1
  br i1 %1008, label %1012, label %1009

1009:                                             ; preds = %1006
  %1010 = load i8, ptr %29, align 1, !tbaa !5, !range !36, !noundef !37
  %1011 = trunc i8 %1010 to i1
  br label %1012

1012:                                             ; preds = %1009, %1006, %1003, %998
  %1013 = phi i1 [ true, %1006 ], [ true, %1003 ], [ true, %998 ], [ %1011, %1009 ]
  %1014 = zext i1 %1013 to i8
  store i8 %1014, ptr %30, align 1, !tbaa !5
  %1015 = load i8, ptr %3, align 1, !tbaa !5, !range !36, !noundef !37
  %1016 = trunc i8 %1015 to i1
  br i1 %1016, label %1066, label %1017

1017:                                             ; preds = %1012
  %1018 = call i32 (ptr, ...) @printf(ptr noundef @.str.965)
  %1019 = call i32 (ptr, ...) @printf(ptr noundef @.str.735)
  %1020 = load i8, ptr %30, align 1, !tbaa !5, !range !36, !noundef !37
  %1021 = trunc i8 %1020 to i1
  br i1 %1021, label %1022, label %1024

1022:                                             ; preds = %1017
  %1023 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1026

1024:                                             ; preds = %1017
  %1025 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1026

1026:                                             ; preds = %1024, %1022
  %1027 = call i32 (ptr, ...) @printf(ptr noundef @.str.966)
  %1028 = load i8, ptr %26, align 1, !tbaa !5, !range !36, !noundef !37
  %1029 = trunc i8 %1028 to i1
  br i1 %1029, label %1030, label %1032

1030:                                             ; preds = %1026
  %1031 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1034

1032:                                             ; preds = %1026
  %1033 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1034

1034:                                             ; preds = %1032, %1030
  %1035 = call i32 (ptr, ...) @printf(ptr noundef @.str.967)
  %1036 = load i8, ptr %27, align 1, !tbaa !5, !range !36, !noundef !37
  %1037 = trunc i8 %1036 to i1
  br i1 %1037, label %1038, label %1040

1038:                                             ; preds = %1034
  %1039 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1042

1040:                                             ; preds = %1034
  %1041 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1042

1042:                                             ; preds = %1040, %1038
  %1043 = call i32 (ptr, ...) @printf(ptr noundef @.str.968)
  %1044 = load i8, ptr %28, align 1, !tbaa !5, !range !36, !noundef !37
  %1045 = trunc i8 %1044 to i1
  br i1 %1045, label %1046, label %1048

1046:                                             ; preds = %1042
  %1047 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1050

1048:                                             ; preds = %1042
  %1049 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1050

1050:                                             ; preds = %1048, %1046
  %1051 = call i32 (ptr, ...) @printf(ptr noundef @.str.969)
  %1052 = load i8, ptr %29, align 1, !tbaa !5, !range !36, !noundef !37
  %1053 = trunc i8 %1052 to i1
  br i1 %1053, label %1054, label %1056

1054:                                             ; preds = %1050
  %1055 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1058

1056:                                             ; preds = %1050
  %1057 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1058

1058:                                             ; preds = %1056, %1054
  %1059 = load i8, ptr %30, align 1, !tbaa !5, !range !36, !noundef !37
  %1060 = trunc i8 %1059 to i1
  br i1 %1060, label %1061, label %1063

1061:                                             ; preds = %1058
  %1062 = call i32 (ptr, ...) @printf(ptr noundef @.str.15)
  br label %1065

1063:                                             ; preds = %1058
  %1064 = call i32 (ptr, ...) @printf(ptr noundef @.str.16)
  br label %1065

1065:                                             ; preds = %1063, %1061
  br label %1066

1066:                                             ; preds = %1065, %1012
  %1067 = load i8, ptr %30, align 1, !tbaa !5, !range !36, !noundef !37
  %1068 = trunc i8 %1067 to i1
  %1069 = xor i1 %1068, true
  %1070 = zext i1 %1069 to i8
  store i8 %1070, ptr %32, align 1, !tbaa !5
  %1071 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1071)
  %1072 = load i8, ptr %32, align 1, !tbaa !5, !range !36, !noundef !37
  %1073 = trunc i8 %1072 to i1
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 1, 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 8, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 64, 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 8, ptr %6) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #6
  ret i1 %1073
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind }

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

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


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

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

@.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.15 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.735 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.948 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.949 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.950 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.951 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.952 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.953 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.954 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.955 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.956 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.957 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.958 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.959 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.960 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.961 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.962 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.963 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.964 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.965 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.966 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.967 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.968 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.969 = external hidden unnamed_addr constant [43 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_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 void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext, ptr noundef, ptr 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_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) #4

declare void @_ZN11alglib_impl16_hqrndstate_initEPvPNS_8ae_stateEb(ptr noundef, ptr noundef, i1 noundef zeroext) 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

declare noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef, i64 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_greaterEdd(double noundef, double 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 noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef) local_unnamed_addr #3

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) local_unnamed_addr #3

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

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

declare { double, double } @_ZN11alglib_impl8ae_c_subENS_10ae_complexES0_(double, double, double, double) local_unnamed_addr #3

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z8testconvbPN11alglib_impl8ae_stateE(i1 noundef zeroext %0, ptr noundef %1) local_unnamed_addr #5 {
  %3 = alloca %"struct.alglib_impl::ae_frame", align 8
  %4 = alloca %"struct.alglib_impl::ae_vector", align 8
  %5 = alloca %"struct.alglib_impl::ae_vector", 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_vector", align 8
  %9 = alloca %"struct.alglib_impl::ae_vector", align 8
  %10 = alloca %"struct.alglib_impl::ae_vector", align 8
  %11 = alloca %"struct.alglib_impl::ae_vector", align 8
  %12 = alloca i8, align 1
  %13 = alloca i8, align 1
  %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) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %4) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %5) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %6) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %7) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %8) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %15) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #6
  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) %4, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %5, i8 0, i64 64, i1 false)
  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(64) %8, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %9, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %10, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %11, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %16, i8 0, i64 24, i1 false)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %4, 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 %5, 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 %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_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %8, i64 noundef 0, i64 noundef 4, 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 4, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %10, i64 noundef 0, i64 noundef 4, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %11, i64 noundef 0, i64 noundef 4, 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)
  call void @_ZN11alglib_impl14hqrndrandomizeEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  %17 = call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef 3.200000e+01, double noundef 1.500000e+00, ptr noundef %1)
  %18 = fmul double %17, 1.000000e+05
  store i8 0, ptr %12, align 1, !tbaa !5
  store i8 0, ptr %13, align 1, !tbaa !5
  store i8 0, ptr %14, align 1, !tbaa !5
  store i8 0, ptr %15, align 1, !tbaa !5
  %19 = getelementptr inbounds i8, ptr %8, i64 56
  %20 = getelementptr inbounds i8, ptr %9, i64 56
  %21 = getelementptr inbounds i8, ptr %10, i64 56
  %22 = getelementptr inbounds i8, ptr %11, i64 56
  %23 = getelementptr inbounds i8, ptr %4, i64 56
  %24 = getelementptr inbounds i8, ptr %5, i64 56
  %25 = getelementptr inbounds i8, ptr %6, i64 56
  %26 = getelementptr inbounds i8, ptr %7, i64 56
  br label %.preheader463

.preheader463:                                    ; preds = %2, %178
  %indvars.iv532 = phi i64 [ 33, %2 ], [ %indvars.iv.next533, %178 ]
  %.0495 = phi i64 [ 1, %2 ], [ %179, %178 ]
  %.0405494 = phi double [ 0.000000e+00, %2 ], [ %.7412, %178 ]
  %.0413493 = phi double [ 0.000000e+00, %2 ], [ %.6419, %178 ]
  %27 = shl nuw nsw i64 %.0495, 1
  %28 = add nuw nsw i64 %27, 5
  %29 = add nsw i64 %.0495, -1
  br label %.preheader462

.preheader462:                                    ; preds = %.preheader463, %176
  %indvars.iv = phi i64 [ %.0495, %.preheader463 ], [ %indvars.iv.next, %176 ]
  %.0399492 = phi i64 [ 1, %.preheader463 ], [ %177, %176 ]
  %.1406491 = phi double [ %.0405494, %.preheader463 ], [ %.7412, %176 ]
  %.1414490 = phi double [ %.0413493, %.preheader463 ], [ %.6419, %176 ]
  %30 = icmp ult i64 %.0495, %.0399492
  %31 = add nuw nsw i64 %29, %.0399492
  %32 = shl nsw i64 %31, 1
  %33 = add nuw nsw i64 %32, 5
  %34 = add nuw nsw i64 %.0399492, %.0495
  %35 = shl nuw nsw i64 %34, 1
  %36 = add nuw nsw i64 %35, 5
  %37 = add nsw i64 %34, -1
  br label %.preheader461

.preheader461:                                    ; preds = %.preheader462, %175
  %38 = phi i1 [ false, %.preheader462 ], [ true, %175 ]
  %39 = phi i1 [ true, %.preheader462 ], [ false, %175 ]
  %.2407488 = phi double [ %.1406491, %.preheader462 ], [ %.7412, %175 ]
  %.2415487 = phi double [ %.1414490, %.preheader462 ], [ %.6419, %175 ]
  br label %40

40:                                               ; preds = %.preheader461, %.loopexit
  %.0403482 = phi i64 [ -3, %.preheader461 ], [ %174, %.loopexit ]
  %.3408481 = phi double [ %.2407488, %.preheader461 ], [ %.7412, %.loopexit ]
  %.3416480 = phi double [ %.2415487, %.preheader461 ], [ %.6419, %.loopexit ]
  %41 = icmp ne i64 %.0403482, -3
  %or.cond = and i1 %30, %41
  %or.cond514 = and i1 %38, %or.cond
  br i1 %or.cond514, label %.loopexit, label %42

42:                                               ; preds = %40
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.0495, ptr noundef %1)
  br label %43

43:                                               ; preds = %42, %43
  %.0401464 = phi i64 [ 0, %42 ], [ %52, %43 ]
  %44 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %45 = call double @llvm.fmuladd.f64(double %44, double 2.000000e+00, double -1.000000e+00)
  %46 = load ptr, ptr %19, align 8, !tbaa !9
  %47 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %46, i64 %.0401464
  store double %45, ptr %47, align 8, !tbaa !10
  %48 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %49 = call double @llvm.fmuladd.f64(double %48, double 2.000000e+00, double -1.000000e+00)
  %50 = load ptr, ptr %19, align 8, !tbaa !9
  %51 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %50, i64 %.0401464, i32 1
  store double %49, ptr %51, align 8, !tbaa !13
  %52 = add nuw nsw i64 %.0401464, 1
  %exitcond.not = icmp eq i64 %52, %.0495
  br i1 %exitcond.not, label %53, label %43, !llvm.loop !14

53:                                               ; preds = %43
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.0399492, ptr noundef %1)
  br label %54

54:                                               ; preds = %53, %54
  %.1402465 = phi i64 [ 0, %53 ], [ %63, %54 ]
  %55 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %56 = call double @llvm.fmuladd.f64(double %55, double 2.000000e+00, double -1.000000e+00)
  %57 = load ptr, ptr %20, align 8, !tbaa !9
  %58 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %57, i64 %.1402465
  store double %56, ptr %58, align 8, !tbaa !10
  %59 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %60 = call double @llvm.fmuladd.f64(double %59, double 2.000000e+00, double -1.000000e+00)
  %61 = load ptr, ptr %20, align 8, !tbaa !9
  %62 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %61, i64 %.1402465, i32 1
  store double %60, ptr %62, align 8, !tbaa !13
  %63 = add nuw nsw i64 %.1402465, 1
  %exitcond524.not = icmp eq i64 %63, %.0399492
  br i1 %exitcond524.not, label %64, label %54, !llvm.loop !16

64:                                               ; preds = %54
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %10, i64 noundef 1, ptr noundef %1)
  %65 = icmp eq i64 %.0403482, -3
  br i1 %65, label %66, label %87

66:                                               ; preds = %64
  %67 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  %68 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %67, double noundef 0.000000e+00)
  br i1 %39, label %69, label %78

69:                                               ; preds = %66
  br i1 %68, label %70, label %73

70:                                               ; preds = %69
  call void @_ZN11alglib_impl7convc1dEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.0495, ptr noundef nonnull %9, i64 noundef %.0399492, ptr noundef nonnull %10, ptr noundef %1)
  %71 = load i64, ptr %10, align 8, !tbaa !17
  %72 = icmp ne i64 %71, %31
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %12, i1 noundef zeroext %72, ptr noundef nonnull @.str.19, i32 noundef 125213, ptr noundef nonnull @.str.948)
  br label %.lr.ph.preheader

73:                                               ; preds = %69
  %74 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef nonnull %16, i64 noundef %33, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %10, i64 noundef %74, ptr noundef %1)
  call void @_ZN11alglib_impl10convc1dbufEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.0495, ptr noundef nonnull %9, i64 noundef %.0399492, ptr noundef nonnull %10, ptr noundef %1)
  %75 = load i64, ptr %10, align 8, !tbaa !17
  %76 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %31, i64 noundef %74, ptr noundef %1)
  %77 = icmp ne i64 %75, %76
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %12, i1 noundef zeroext %77, ptr noundef nonnull @.str.19, i32 noundef 125220, ptr noundef nonnull @.str.949)
  br label %.lr.ph.preheader

78:                                               ; preds = %66
  br i1 %68, label %79, label %82

79:                                               ; preds = %78
  call void @_ZN11alglib_impl15convc1dcircularEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.0495, ptr noundef nonnull %9, i64 noundef %.0399492, ptr noundef nonnull %10, ptr noundef %1)
  %80 = load i64, ptr %10, align 8, !tbaa !17
  %81 = icmp ne i64 %80, %.0495
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %12, i1 noundef zeroext %81, ptr noundef nonnull @.str.19, i32 noundef 125228, ptr noundef nonnull @.str.950)
  br label %.preheader459

82:                                               ; preds = %78
  %83 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef nonnull %16, i64 noundef %28, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %10, i64 noundef %83, ptr noundef %1)
  call void @_ZN11alglib_impl18convc1dcircularbufEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.0495, ptr noundef nonnull %9, i64 noundef %.0399492, ptr noundef nonnull %10, ptr noundef %1)
  %84 = load i64, ptr %10, align 8, !tbaa !17
  %85 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %.0495, i64 noundef %83, ptr noundef %1)
  %86 = icmp ne i64 %84, %85
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %12, i1 noundef zeroext %86, ptr noundef nonnull @.str.19, i32 noundef 125235, ptr noundef nonnull @.str.951)
  br label %.preheader459

87:                                               ; preds = %64
  br i1 %30, label %89, label %88

88:                                               ; preds = %87
  call void @_ZN11alglib_impl8convc1dxEPKNS_9ae_vectorElS2_lbllPS0_PNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.0495, ptr noundef nonnull %9, i64 noundef %.0399492, i1 noundef zeroext %38, i64 noundef %.0403482, i64 noundef 0, ptr noundef nonnull %10, ptr noundef %1)
  br label %90

89:                                               ; preds = %87
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %39, ptr noundef nonnull @.str.952, ptr noundef %1)
  call void @_ZN11alglib_impl8convc1dxEPKNS_9ae_vectorElS2_lbllPS0_PNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.0399492, ptr noundef nonnull %8, i64 noundef %.0495, i1 noundef zeroext false, i64 noundef %.0403482, i64 noundef 0, ptr noundef nonnull %10, ptr noundef %1)
  br label %90

.preheader459:                                    ; preds = %79, %82, %90
  call void @_ZL31testconvunit_refconvc1dcircularPKN11alglib_impl9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.0495, ptr noundef nonnull %9, i64 noundef %.0399492, ptr noundef nonnull %11, ptr noundef %1)
  br label %101

90:                                               ; preds = %88, %89
  br i1 %39, label %.lr.ph.preheader, label %.preheader459

.lr.ph.preheader:                                 ; preds = %90, %70, %73
  call void @_ZL23testconvunit_refconvc1dPKN11alglib_impl9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.0495, ptr noundef nonnull %9, i64 noundef %.0399492, ptr noundef nonnull %11, ptr noundef %1)
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %.2470 = phi i64 [ %100, %.lr.ph ], [ 0, %.lr.ph.preheader ]
  %.4409469 = phi double [ %99, %.lr.ph ], [ %.3408481, %.lr.ph.preheader ]
  %91 = load ptr, ptr %21, align 8, !tbaa !9
  %92 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %91, i64 %.2470
  %.sroa.020.0.copyload = load double, ptr %92, align 8, !tbaa !22
  %.sroa.221.0..sroa_idx = getelementptr inbounds i8, ptr %92, i64 8
  %.sroa.221.0.copyload = load double, ptr %.sroa.221.0..sroa_idx, align 8, !tbaa !22
  %93 = load ptr, ptr %22, align 8, !tbaa !9
  %94 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %93, i64 %.2470
  %.sroa.018.0.copyload = load double, ptr %94, align 8, !tbaa !22
  %.sroa.219.0..sroa_idx = getelementptr inbounds i8, ptr %94, i64 8
  %.sroa.219.0.copyload = load double, ptr %.sroa.219.0..sroa_idx, align 8, !tbaa !22
  %95 = call { double, double } @_ZN11alglib_impl8ae_c_subENS_10ae_complexES0_(double %.sroa.020.0.copyload, double %.sroa.221.0.copyload, double %.sroa.018.0.copyload, double %.sroa.219.0.copyload)
  %96 = extractvalue { double, double } %95, 0
  %97 = extractvalue { double, double } %95, 1
  %98 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %96, double %97, ptr noundef %1)
  %99 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.4409469, double noundef %98, ptr noundef %1)
  %100 = add nuw nsw i64 %.2470, 1
  %exitcond526.not = icmp eq i64 %100, %indvars.iv
  br i1 %exitcond526.not, label %.loopexit458, label %.lr.ph, !llvm.loop !23

101:                                              ; preds = %.preheader459, %101
  %.3467 = phi i64 [ 0, %.preheader459 ], [ %111, %101 ]
  %.5410466 = phi double [ %.3408481, %.preheader459 ], [ %110, %101 ]
  %102 = load ptr, ptr %21, align 8, !tbaa !9
  %103 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %102, i64 %.3467
  %.sroa.014.0.copyload = load double, ptr %103, align 8, !tbaa !22
  %.sroa.215.0..sroa_idx = getelementptr inbounds i8, ptr %103, i64 8
  %.sroa.215.0.copyload = load double, ptr %.sroa.215.0..sroa_idx, align 8, !tbaa !22
  %104 = load ptr, ptr %22, align 8, !tbaa !9
  %105 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %104, i64 %.3467
  %.sroa.012.0.copyload = load double, ptr %105, align 8, !tbaa !22
  %.sroa.213.0..sroa_idx = getelementptr inbounds i8, ptr %105, i64 8
  %.sroa.213.0.copyload = load double, ptr %.sroa.213.0..sroa_idx, align 8, !tbaa !22
  %106 = call { double, double } @_ZN11alglib_impl8ae_c_subENS_10ae_complexES0_(double %.sroa.014.0.copyload, double %.sroa.215.0.copyload, double %.sroa.012.0.copyload, double %.sroa.213.0.copyload)
  %107 = extractvalue { double, double } %106, 0
  %108 = extractvalue { double, double } %106, 1
  %109 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %107, double %108, ptr noundef %1)
  %110 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.5410466, double noundef %109, ptr noundef %1)
  %111 = add nuw nsw i64 %.3467, 1
  %exitcond525.not = icmp eq i64 %111, %.0495
  br i1 %exitcond525.not, label %.loopexit458, label %101, !llvm.loop !24

.loopexit458:                                     ; preds = %101, %.lr.ph
  %112 = phi i1 [ true, %.lr.ph ], [ false, %101 ]
  %.6411 = phi double [ %99, %.lr.ph ], [ %110, %101 ]
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %.0495, ptr noundef %1)
  br label %113

113:                                              ; preds = %.loopexit458, %113
  %.4471 = phi i64 [ 0, %.loopexit458 ], [ %118, %113 ]
  %114 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %115 = call double @llvm.fmuladd.f64(double %114, double 2.000000e+00, double -1.000000e+00)
  %116 = load ptr, ptr %23, align 8, !tbaa !9
  %117 = getelementptr inbounds double, ptr %116, i64 %.4471
  store double %115, ptr %117, align 8, !tbaa !22
  %118 = add nuw nsw i64 %.4471, 1
  %exitcond527.not = icmp eq i64 %118, %.0495
  br i1 %exitcond527.not, label %119, label %113, !llvm.loop !25

119:                                              ; preds = %113
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %5, i64 noundef %.0399492, ptr noundef %1)
  br label %120

120:                                              ; preds = %119, %120
  %.5472 = phi i64 [ 0, %119 ], [ %125, %120 ]
  %121 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %122 = call double @llvm.fmuladd.f64(double %121, double 2.000000e+00, double -1.000000e+00)
  %123 = load ptr, ptr %24, align 8, !tbaa !9
  %124 = getelementptr inbounds double, ptr %123, i64 %.5472
  store double %122, ptr %124, align 8, !tbaa !22
  %125 = add nuw nsw i64 %.5472, 1
  %exitcond528.not = icmp eq i64 %125, %.0399492
  br i1 %exitcond528.not, label %126, label %120, !llvm.loop !26

126:                                              ; preds = %120
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %6, i64 noundef 1, ptr noundef %1)
  br i1 %65, label %127, label %150

127:                                              ; preds = %126
  br i1 %112, label %128, label %139

128:                                              ; preds = %127
  %129 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef nonnull %16, i64 noundef %36, ptr noundef %1)
  %130 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  %131 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %130, double noundef 0.000000e+00)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %6, i64 noundef %129, ptr noundef %1)
  br i1 %131, label %132, label %135

132:                                              ; preds = %128
  call void @_ZN11alglib_impl7convr1dEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %.0495, ptr noundef nonnull %5, i64 noundef %.0399492, ptr noundef nonnull %6, ptr noundef %1)
  %133 = load i64, ptr %6, align 8, !tbaa !17
  %134 = icmp ne i64 %133, %37
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %13, i1 noundef zeroext %134, ptr noundef nonnull @.str.19, i32 noundef 125315, ptr noundef nonnull @.str.953)
  br label %.lr.ph478.preheader

135:                                              ; preds = %128
  call void @_ZN11alglib_impl10convr1dbufEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %.0495, ptr noundef nonnull %5, i64 noundef %.0399492, ptr noundef nonnull %6, ptr noundef %1)
  %136 = load i64, ptr %6, align 8, !tbaa !17
  %137 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %37, i64 noundef %129, ptr noundef %1)
  %138 = icmp ne i64 %136, %137
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %13, i1 noundef zeroext %138, ptr noundef nonnull @.str.19, i32 noundef 125321, ptr noundef nonnull @.str.954)
  br label %.lr.ph478.preheader

139:                                              ; preds = %127
  %140 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef nonnull %16, i64 noundef %28, ptr noundef %1)
  %141 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  %142 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %141, double noundef 0.000000e+00)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %6, i64 noundef %140, ptr noundef %1)
  br i1 %142, label %143, label %146

143:                                              ; preds = %139
  call void @_ZN11alglib_impl15convr1dcircularEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %.0495, ptr noundef nonnull %5, i64 noundef %.0399492, ptr noundef nonnull %6, ptr noundef %1)
  %144 = load i64, ptr %6, align 8, !tbaa !17
  %145 = icmp ne i64 %144, %.0495
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %13, i1 noundef zeroext %145, ptr noundef nonnull @.str.19, i32 noundef 125331, ptr noundef nonnull @.str.955)
  br label %.preheader455.preheader

146:                                              ; preds = %139
  call void @_ZN11alglib_impl18convr1dcircularbufEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %.0495, ptr noundef nonnull %5, i64 noundef %.0399492, ptr noundef nonnull %6, ptr noundef %1)
  %147 = load i64, ptr %6, align 8, !tbaa !17
  %148 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %.0495, i64 noundef %140, ptr noundef %1)
  %149 = icmp ne i64 %147, %148
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %13, i1 noundef zeroext %149, ptr noundef nonnull @.str.19, i32 noundef 125337, ptr noundef nonnull @.str.956)
  br label %.preheader455.preheader

150:                                              ; preds = %126
  br i1 %30, label %152, label %151

151:                                              ; preds = %150
  call void @_ZN11alglib_impl8convr1dxEPKNS_9ae_vectorElS2_lbllPS0_PNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %.0495, ptr noundef nonnull %5, i64 noundef %.0399492, i1 noundef zeroext %38, i64 noundef %.0403482, i64 noundef 0, ptr noundef nonnull %6, ptr noundef %1)
  br label %153

152:                                              ; preds = %150
  call void @_ZN11alglib_impl8convr1dxEPKNS_9ae_vectorElS2_lbllPS0_PNS_8ae_stateE(ptr noundef nonnull %5, i64 noundef %.0399492, ptr noundef nonnull %4, i64 noundef %.0495, i1 noundef zeroext %38, i64 noundef %.0403482, i64 noundef 0, ptr noundef nonnull %6, ptr noundef %1)
  br label %153

153:                                              ; preds = %151, %152
  br i1 %112, label %.lr.ph478.preheader, label %.preheader455.preheader

.preheader455.preheader:                          ; preds = %143, %146, %153
  call void @_ZL31testconvunit_refconvr1dcircularPKN11alglib_impl9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %.0495, ptr noundef nonnull %5, i64 noundef %.0399492, ptr noundef nonnull %7, ptr noundef %1)
  br label %.preheader455

.lr.ph478.preheader:                              ; preds = %132, %135, %153
  call void @_ZL23testconvunit_refconvr1dPKN11alglib_impl9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %.0495, ptr noundef nonnull %5, i64 noundef %.0399492, ptr noundef nonnull %7, ptr noundef %1)
  br label %.lr.ph478

.lr.ph478:                                        ; preds = %.lr.ph478.preheader, %.lr.ph478
  %.6477 = phi i64 [ %163, %.lr.ph478 ], [ 0, %.lr.ph478.preheader ]
  %.4417476 = phi double [ %162, %.lr.ph478 ], [ %.3416480, %.lr.ph478.preheader ]
  %154 = load ptr, ptr %25, align 8, !tbaa !9
  %155 = getelementptr inbounds double, ptr %154, i64 %.6477
  %156 = load double, ptr %155, align 8, !tbaa !22
  %157 = load ptr, ptr %26, align 8, !tbaa !9
  %158 = getelementptr inbounds double, ptr %157, i64 %.6477
  %159 = load double, ptr %158, align 8, !tbaa !22
  %160 = fsub double %156, %159
  %161 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %160, ptr noundef %1)
  %162 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.4417476, double noundef %161, ptr noundef %1)
  %163 = add nuw nsw i64 %.6477, 1
  %exitcond530.not = icmp eq i64 %163, %indvars.iv
  br i1 %exitcond530.not, label %.loopexit, label %.lr.ph478, !llvm.loop !27

.preheader455:                                    ; preds = %.preheader455.preheader, %.preheader455
  %.7474 = phi i64 [ %173, %.preheader455 ], [ 0, %.preheader455.preheader ]
  %.5418473 = phi double [ %172, %.preheader455 ], [ %.3416480, %.preheader455.preheader ]
  %164 = load ptr, ptr %25, align 8, !tbaa !9
  %165 = getelementptr inbounds double, ptr %164, i64 %.7474
  %166 = load double, ptr %165, align 8, !tbaa !22
  %167 = load ptr, ptr %26, align 8, !tbaa !9
  %168 = getelementptr inbounds double, ptr %167, i64 %.7474
  %169 = load double, ptr %168, align 8, !tbaa !22
  %170 = fsub double %166, %169
  %171 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %170, ptr noundef %1)
  %172 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.5418473, double noundef %171, ptr noundef %1)
  %173 = add nuw nsw i64 %.7474, 1
  %exitcond529.not = icmp eq i64 %173, %.0495
  br i1 %exitcond529.not, label %.loopexit, label %.preheader455, !llvm.loop !28

.loopexit:                                        ; preds = %.preheader455, %.lr.ph478, %40
  %.6419 = phi double [ %.3416480, %40 ], [ %162, %.lr.ph478 ], [ %172, %.preheader455 ]
  %.7412 = phi double [ %.3408481, %40 ], [ %.6411, %.lr.ph478 ], [ %.6411, %.preheader455 ]
  %174 = add nsw i64 %.0403482, 1
  %exitcond531.not = icmp eq i64 %174, 2
  br i1 %exitcond531.not, label %175, label %40, !llvm.loop !29

175:                                              ; preds = %.loopexit
  br i1 %39, label %.preheader461, label %176, !llvm.loop !30

176:                                              ; preds = %175
  %177 = add nuw nsw i64 %.0399492, 1
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond534.not = icmp eq i64 %indvars.iv.next, %indvars.iv532
  br i1 %exitcond534.not, label %178, label %.preheader462, !llvm.loop !31

178:                                              ; preds = %176
  %179 = add nuw nsw i64 %.0495, 1
  %indvars.iv.next533 = add nuw nsw i64 %indvars.iv532, 1
  %exitcond535.not = icmp eq i64 %indvars.iv.next533, 65
  br i1 %exitcond535.not, label %180, label %.preheader463, !llvm.loop !32

180:                                              ; preds = %178
  %181 = fmul double %18, 5.000000e-16
  %182 = load i8, ptr %12, align 1, !tbaa !5, !range !33, !noundef !34
  %183 = trunc nuw i8 %182 to i1
  br i1 %183, label %187, label %184

184:                                              ; preds = %180
  %185 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %.7412, double noundef %181)
  %186 = zext i1 %185 to i8
  br label %187

187:                                              ; preds = %184, %180
  %188 = phi i8 [ 1, %180 ], [ %186, %184 ]
  store i8 %188, ptr %12, align 1, !tbaa !5
  %189 = load i8, ptr %13, align 1, !tbaa !5, !range !33, !noundef !34
  %190 = trunc nuw i8 %189 to i1
  br i1 %190, label %194, label %191

191:                                              ; preds = %187
  %192 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %.6419, double noundef %181)
  %193 = zext i1 %192 to i8
  br label %194

194:                                              ; preds = %191, %187
  %195 = phi i8 [ 1, %187 ], [ %193, %191 ]
  store i8 %195, ptr %13, align 1, !tbaa !5
  br label %.preheader

.preheader:                                       ; preds = %194, %328
  %.1513 = phi i64 [ 1, %194 ], [ %329, %328 ]
  %.0420512 = phi double [ 0.000000e+00, %194 ], [ %265, %328 ]
  %.0424511 = phi double [ 0.000000e+00, %194 ], [ %324, %328 ]
  %196 = shl nuw nsw i64 %.1513, 1
  %197 = add nuw nsw i64 %196, 5
  %198 = add nsw i64 %.1513, -1
  br label %199

199:                                              ; preds = %.preheader, %326
  %.1400510 = phi i64 [ 1, %.preheader ], [ %327, %326 ]
  %.1421509 = phi double [ %.0420512, %.preheader ], [ %265, %326 ]
  %.1425508 = phi double [ %.0424511, %.preheader ], [ %324, %326 ]
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.1513, ptr noundef %1)
  br label %200

200:                                              ; preds = %199, %200
  %.8496 = phi i64 [ 0, %199 ], [ %209, %200 ]
  %201 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %202 = call double @llvm.fmuladd.f64(double %201, double 2.000000e+00, double -1.000000e+00)
  %203 = load ptr, ptr %19, align 8, !tbaa !9
  %204 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %203, i64 %.8496
  store double %202, ptr %204, align 8, !tbaa !10
  %205 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %206 = call double @llvm.fmuladd.f64(double %205, double 2.000000e+00, double -1.000000e+00)
  %207 = load ptr, ptr %19, align 8, !tbaa !9
  %208 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %207, i64 %.8496, i32 1
  store double %206, ptr %208, align 8, !tbaa !13
  %209 = add nuw nsw i64 %.8496, 1
  %exitcond536.not = icmp eq i64 %209, %.1513
  br i1 %exitcond536.not, label %210, label %200, !llvm.loop !35

210:                                              ; preds = %200
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.1400510, ptr noundef %1)
  br label %211

211:                                              ; preds = %210, %211
  %.9497 = phi i64 [ 0, %210 ], [ %220, %211 ]
  %212 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %213 = call double @llvm.fmuladd.f64(double %212, double 2.000000e+00, double -1.000000e+00)
  %214 = load ptr, ptr %20, align 8, !tbaa !9
  %215 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %214, i64 %.9497
  store double %213, ptr %215, align 8, !tbaa !10
  %216 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %217 = call double @llvm.fmuladd.f64(double %216, double 2.000000e+00, double -1.000000e+00)
  %218 = load ptr, ptr %20, align 8, !tbaa !9
  %219 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %218, i64 %.9497, i32 1
  store double %217, ptr %219, align 8, !tbaa !13
  %220 = add nuw nsw i64 %.9497, 1
  %exitcond537.not = icmp eq i64 %220, %.1400510
  br i1 %exitcond537.not, label %221, label %211, !llvm.loop !36

221:                                              ; preds = %211
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef 1, ptr noundef %1)
  call void @_ZN11alglib_impl7convc1dEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.1513, ptr noundef nonnull %9, i64 noundef %.1400510, ptr noundef nonnull %11, ptr noundef %1)
  %222 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  %223 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %222, double noundef 0.000000e+00)
  br i1 %223, label %224, label %228

224:                                              ; preds = %221
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %10, i64 noundef 1, ptr noundef %1)
  %225 = add nuw nsw i64 %198, %.1400510
  call void @_ZN11alglib_impl10convc1dinvEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %225, ptr noundef nonnull %9, i64 noundef %.1400510, ptr noundef nonnull %10, ptr noundef %1)
  %226 = load i64, ptr %10, align 8, !tbaa !17
  %227 = icmp ne i64 %226, %.1513
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %14, i1 noundef zeroext %227, ptr noundef nonnull @.str.19, i32 noundef 125421, ptr noundef nonnull @.str.957)
  br label %.preheader572

228:                                              ; preds = %221
  %229 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef nonnull %16, i64 noundef %197, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %10, i64 noundef %229, ptr noundef %1)
  %230 = add nuw nsw i64 %198, %.1400510
  call void @_ZN11alglib_impl13convc1dinvbufEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %230, ptr noundef nonnull %9, i64 noundef %.1400510, ptr noundef nonnull %10, ptr noundef %1)
  %231 = load i64, ptr %10, align 8, !tbaa !17
  %232 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %.1513, i64 noundef %229, ptr noundef %1)
  %233 = icmp ne i64 %231, %232
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %14, i1 noundef zeroext %233, ptr noundef nonnull @.str.19, i32 noundef 125428, ptr noundef nonnull @.str.958)
  br label %.preheader572

.preheader572:                                    ; preds = %228, %224
  br label %234

234:                                              ; preds = %.preheader572, %234
  %.10499 = phi i64 [ %244, %234 ], [ 0, %.preheader572 ]
  %.2422498 = phi double [ %243, %234 ], [ %.1421509, %.preheader572 ]
  %235 = load ptr, ptr %21, align 8, !tbaa !9
  %236 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %235, i64 %.10499
  %.sroa.08.0.copyload = load double, ptr %236, align 8, !tbaa !22
  %.sroa.29.0..sroa_idx = getelementptr inbounds i8, ptr %236, i64 8
  %.sroa.29.0.copyload = load double, ptr %.sroa.29.0..sroa_idx, align 8, !tbaa !22
  %237 = load ptr, ptr %19, align 8, !tbaa !9
  %238 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %237, i64 %.10499
  %.sroa.06.0.copyload = load double, ptr %238, align 8, !tbaa !22
  %.sroa.27.0..sroa_idx = getelementptr inbounds i8, ptr %238, i64 8
  %.sroa.27.0.copyload = load double, ptr %.sroa.27.0..sroa_idx, align 8, !tbaa !22
  %239 = call { double, double } @_ZN11alglib_impl8ae_c_subENS_10ae_complexES0_(double %.sroa.08.0.copyload, double %.sroa.29.0.copyload, double %.sroa.06.0.copyload, double %.sroa.27.0.copyload)
  %240 = extractvalue { double, double } %239, 0
  %241 = extractvalue { double, double } %239, 1
  %242 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %240, double %241, ptr noundef %1)
  %243 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.2422498, double noundef %242, ptr noundef %1)
  %244 = add nuw nsw i64 %.10499, 1
  %exitcond538.not = icmp eq i64 %244, %.1513
  br i1 %exitcond538.not, label %245, label %234, !llvm.loop !37

245:                                              ; preds = %234
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef 1, ptr noundef %1)
  call void @_ZN11alglib_impl15convc1dcircularEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.1513, ptr noundef nonnull %9, i64 noundef %.1400510, ptr noundef nonnull %11, ptr noundef %1)
  %246 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  %247 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %246, double noundef 0.000000e+00)
  br i1 %247, label %248, label %251

248:                                              ; preds = %245
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %10, i64 noundef 1, ptr noundef %1)
  call void @_ZN11alglib_impl18convc1dcircularinvEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %.1513, ptr noundef nonnull %9, i64 noundef %.1400510, ptr noundef nonnull %10, ptr noundef %1)
  %249 = load i64, ptr %10, align 8, !tbaa !17
  %250 = icmp ne i64 %249, %.1513
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %14, i1 noundef zeroext %250, ptr noundef nonnull @.str.19, i32 noundef 125440, ptr noundef nonnull @.str.959)
  br label %.preheader571

251:                                              ; preds = %245
  %252 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef nonnull %16, i64 noundef %197, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %10, i64 noundef %252, ptr noundef %1)
  call void @_ZN11alglib_impl21convc1dcircularinvbufEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %.1513, ptr noundef nonnull %9, i64 noundef %.1400510, ptr noundef nonnull %10, ptr noundef %1)
  %253 = load i64, ptr %10, align 8, !tbaa !17
  %254 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %.1513, i64 noundef %252, ptr noundef %1)
  %255 = icmp ne i64 %253, %254
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %14, i1 noundef zeroext %255, ptr noundef nonnull @.str.19, i32 noundef 125447, ptr noundef nonnull @.str.960)
  br label %.preheader571

.preheader571:                                    ; preds = %251, %248
  br label %256

256:                                              ; preds = %.preheader571, %256
  %.11501 = phi i64 [ %266, %256 ], [ 0, %.preheader571 ]
  %.3423500 = phi double [ %265, %256 ], [ %243, %.preheader571 ]
  %257 = load ptr, ptr %21, align 8, !tbaa !9
  %258 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %257, i64 %.11501
  %.sroa.02.0.copyload = load double, ptr %258, align 8, !tbaa !22
  %.sroa.23.0..sroa_idx = getelementptr inbounds i8, ptr %258, i64 8
  %.sroa.23.0.copyload = load double, ptr %.sroa.23.0..sroa_idx, align 8, !tbaa !22
  %259 = load ptr, ptr %19, align 8, !tbaa !9
  %260 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %259, i64 %.11501
  %.sroa.0.0.copyload = load double, ptr %260, align 8, !tbaa !22
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %260, i64 8
  %.sroa.2.0.copyload = load double, ptr %.sroa.2.0..sroa_idx, align 8, !tbaa !22
  %261 = call { double, double } @_ZN11alglib_impl8ae_c_subENS_10ae_complexES0_(double %.sroa.02.0.copyload, double %.sroa.23.0.copyload, double %.sroa.0.0.copyload, double %.sroa.2.0.copyload)
  %262 = extractvalue { double, double } %261, 0
  %263 = extractvalue { double, double } %261, 1
  %264 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %262, double %263, ptr noundef %1)
  %265 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.3423500, double noundef %264, ptr noundef %1)
  %266 = add nuw nsw i64 %.11501, 1
  %exitcond539.not = icmp eq i64 %266, %.1513
  br i1 %exitcond539.not, label %267, label %256, !llvm.loop !38

267:                                              ; preds = %256
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %.1513, ptr noundef %1)
  br label %268

268:                                              ; preds = %267, %268
  %.12502 = phi i64 [ 0, %267 ], [ %273, %268 ]
  %269 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %270 = call double @llvm.fmuladd.f64(double %269, double 2.000000e+00, double -1.000000e+00)
  %271 = load ptr, ptr %23, align 8, !tbaa !9
  %272 = getelementptr inbounds double, ptr %271, i64 %.12502
  store double %270, ptr %272, align 8, !tbaa !22
  %273 = add nuw nsw i64 %.12502, 1
  %exitcond540.not = icmp eq i64 %273, %.1513
  br i1 %exitcond540.not, label %274, label %268, !llvm.loop !39

274:                                              ; preds = %268
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %5, i64 noundef %.1400510, ptr noundef %1)
  br label %275

275:                                              ; preds = %274, %275
  %.13503 = phi i64 [ 0, %274 ], [ %280, %275 ]
  %276 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %277 = call double @llvm.fmuladd.f64(double %276, double 2.000000e+00, double -1.000000e+00)
  %278 = load ptr, ptr %24, align 8, !tbaa !9
  %279 = getelementptr inbounds double, ptr %278, i64 %.13503
  store double %277, ptr %279, align 8, !tbaa !22
  %280 = add nuw nsw i64 %.13503, 1
  %exitcond541.not = icmp eq i64 %280, %.1400510
  br i1 %exitcond541.not, label %281, label %275, !llvm.loop !40

281:                                              ; preds = %275
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef 1, ptr noundef %1)
  call void @_ZN11alglib_impl7convr1dEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %.1513, ptr noundef nonnull %5, i64 noundef %.1400510, ptr noundef nonnull %7, ptr noundef %1)
  %282 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef nonnull %16, i64 noundef %197, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %6, i64 noundef %282, ptr noundef %1)
  %283 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  %284 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %283, double noundef 0.000000e+00)
  %285 = add nuw nsw i64 %198, %.1400510
  br i1 %284, label %286, label %289

286:                                              ; preds = %281
  call void @_ZN11alglib_impl10convr1dinvEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %285, ptr noundef nonnull %5, i64 noundef %.1400510, ptr noundef nonnull %6, ptr noundef %1)
  %287 = load i64, ptr %6, align 8, !tbaa !17
  %288 = icmp ne i64 %287, %.1513
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %15, i1 noundef zeroext %288, ptr noundef nonnull @.str.19, i32 noundef 125474, ptr noundef nonnull @.str.961)
  br label %.preheader570

289:                                              ; preds = %281
  call void @_ZN11alglib_impl13convr1dinvbufEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %285, ptr noundef nonnull %5, i64 noundef %.1400510, ptr noundef nonnull %6, ptr noundef %1)
  %290 = load i64, ptr %6, align 8, !tbaa !17
  %291 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %.1513, i64 noundef %282, ptr noundef %1)
  %292 = icmp ne i64 %290, %291
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %15, i1 noundef zeroext %292, ptr noundef nonnull @.str.19, i32 noundef 125479, ptr noundef nonnull @.str.962)
  br label %.preheader570

.preheader570:                                    ; preds = %289, %286
  br label %293

293:                                              ; preds = %.preheader570, %293
  %.14505 = phi i64 [ %303, %293 ], [ 0, %.preheader570 ]
  %.2426504 = phi double [ %302, %293 ], [ %.1425508, %.preheader570 ]
  %294 = load ptr, ptr %25, align 8, !tbaa !9
  %295 = getelementptr inbounds double, ptr %294, i64 %.14505
  %296 = load double, ptr %295, align 8, !tbaa !22
  %297 = load ptr, ptr %23, align 8, !tbaa !9
  %298 = getelementptr inbounds double, ptr %297, i64 %.14505
  %299 = load double, ptr %298, align 8, !tbaa !22
  %300 = fsub double %296, %299
  %301 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %300, ptr noundef %1)
  %302 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.2426504, double noundef %301, ptr noundef %1)
  %303 = add nuw nsw i64 %.14505, 1
  %exitcond542.not = icmp eq i64 %303, %.1513
  br i1 %exitcond542.not, label %304, label %293, !llvm.loop !41

304:                                              ; preds = %293
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %6, i64 noundef 1, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef 1, ptr noundef %1)
  call void @_ZN11alglib_impl15convr1dcircularEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %.1513, ptr noundef nonnull %5, i64 noundef %.1400510, ptr noundef nonnull %7, ptr noundef %1)
  %305 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef nonnull %16, i64 noundef %197, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %6, i64 noundef %305, ptr noundef %1)
  %306 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  %307 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %306, double noundef 0.000000e+00)
  br i1 %307, label %308, label %311

308:                                              ; preds = %304
  call void @_ZN11alglib_impl18convr1dcircularinvEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %.1513, ptr noundef nonnull %5, i64 noundef %.1400510, ptr noundef nonnull %6, ptr noundef %1)
  %309 = load i64, ptr %6, align 8, !tbaa !17
  %310 = icmp ne i64 %309, %.1513
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %15, i1 noundef zeroext %310, ptr noundef nonnull @.str.19, i32 noundef 125493, ptr noundef nonnull @.str.963)
  br label %.preheader569

311:                                              ; preds = %304
  call void @_ZN11alglib_impl21convr1dcircularinvbufEPKNS_9ae_vectorElS2_lPS0_PNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %.1513, ptr noundef nonnull %5, i64 noundef %.1400510, ptr noundef nonnull %6, ptr noundef %1)
  %312 = load i64, ptr %6, align 8, !tbaa !17
  %313 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %.1513, i64 noundef %305, ptr noundef %1)
  %314 = icmp ne i64 %312, %313
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %15, i1 noundef zeroext %314, ptr noundef nonnull @.str.19, i32 noundef 125498, ptr noundef nonnull @.str.964)
  br label %.preheader569

.preheader569:                                    ; preds = %311, %308
  br label %315

315:                                              ; preds = %.preheader569, %315
  %.15507 = phi i64 [ %325, %315 ], [ 0, %.preheader569 ]
  %.3427506 = phi double [ %324, %315 ], [ %302, %.preheader569 ]
  %316 = load ptr, ptr %25, align 8, !tbaa !9
  %317 = getelementptr inbounds double, ptr %316, i64 %.15507
  %318 = load double, ptr %317, align 8, !tbaa !22
  %319 = load ptr, ptr %23, align 8, !tbaa !9
  %320 = getelementptr inbounds double, ptr %319, i64 %.15507
  %321 = load double, ptr %320, align 8, !tbaa !22
  %322 = fsub double %318, %321
  %323 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %322, ptr noundef %1)
  %324 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.3427506, double noundef %323, ptr noundef %1)
  %325 = add nuw nsw i64 %.15507, 1
  %exitcond543.not = icmp eq i64 %325, %.1513
  br i1 %exitcond543.not, label %326, label %315, !llvm.loop !42

326:                                              ; preds = %315
  %327 = add nuw nsw i64 %.1400510, 1
  %exitcond544.not = icmp eq i64 %327, 33
  br i1 %exitcond544.not, label %328, label %199, !llvm.loop !43

328:                                              ; preds = %326
  %329 = add nuw nsw i64 %.1513, 1
  %exitcond545.not = icmp eq i64 %329, 33
  br i1 %exitcond545.not, label %330, label %.preheader, !llvm.loop !44

330:                                              ; preds = %328
  %331 = load i8, ptr %14, align 1, !tbaa !5, !range !33, !noundef !34
  %332 = trunc nuw i8 %331 to i1
  br i1 %332, label %336, label %333

333:                                              ; preds = %330
  %334 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %265, double noundef %181)
  %335 = zext i1 %334 to i8
  br label %336

336:                                              ; preds = %333, %330
  %337 = phi i8 [ 1, %330 ], [ %335, %333 ]
  store i8 %337, ptr %14, align 1, !tbaa !5
  %338 = load i8, ptr %15, align 1, !tbaa !5, !range !33, !noundef !34
  %339 = trunc nuw i8 %338 to i1
  br i1 %339, label %342, label %340

340:                                              ; preds = %336
  %341 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %324, double noundef %181)
  br label %342

342:                                              ; preds = %340, %336
  %343 = phi i1 [ true, %336 ], [ %341, %340 ]
  %344 = zext i1 %343 to i8
  store i8 %344, ptr %15, align 1, !tbaa !5
  %345 = load i8, ptr %12, align 1, !tbaa !5, !range !33, !noundef !34
  %346 = trunc nuw i8 %345 to i1
  br i1 %346, label %353, label %347

347:                                              ; preds = %342
  %348 = load i8, ptr %13, align 1, !tbaa !5, !range !33, !noundef !34
  %349 = trunc nuw i8 %348 to i1
  br i1 %349, label %353, label %350

350:                                              ; preds = %347
  %351 = load i8, ptr %14, align 1, !tbaa !5, !range !33, !noundef !34
  %352 = trunc nuw i8 %351 to i1
  %spec.select = or i1 %343, %352
  br label %353

353:                                              ; preds = %350, %347, %342
  %354 = phi i1 [ true, %347 ], [ true, %342 ], [ %spec.select, %350 ]
  br i1 %0, label %375, label %.sink.split

.sink.split:                                      ; preds = %353
  %355 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.965)
  %356 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.735)
  %.str.2..str.3 = select i1 %354, ptr @.str.2, ptr @.str.3
  %357 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.2..str.3)
  %358 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.966)
  %359 = load i8, ptr %12, align 1, !tbaa !5, !range !33, !noundef !34
  %360 = trunc nuw i8 %359 to i1
  %.str.3.sink556 = select i1 %360, ptr @.str.2, ptr @.str.3
  %361 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink556)
  %362 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.967)
  %363 = load i8, ptr %13, align 1, !tbaa !5, !range !33, !noundef !34
  %364 = trunc nuw i8 %363 to i1
  %.str.3.sink557 = select i1 %364, ptr @.str.2, ptr @.str.3
  %365 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink557)
  %366 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.968)
  %367 = load i8, ptr %14, align 1, !tbaa !5, !range !33, !noundef !34
  %368 = trunc nuw i8 %367 to i1
  %.str.3.sink558 = select i1 %368, ptr @.str.2, ptr @.str.3
  %369 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink558)
  %370 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.969)
  %371 = load i8, ptr %15, align 1, !tbaa !5, !range !33, !noundef !34
  %372 = trunc nuw i8 %371 to i1
  %.str.3.sink559 = select i1 %372, ptr @.str.2, ptr @.str.3
  %373 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink559)
  %.str.15.sink = select i1 %354, ptr @.str.15, ptr @.str.16
  %374 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.15.sink)
  br label %375

375:                                              ; preds = %.sink.split, %353
  %376 = xor i1 %354, true
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #6
  ret i1 %376
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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