; LLVM IR from Dimandragon/non-parametric-dsp :: alglib-cpp/src (optimization)

; 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::smoothnessmonitor" = type { i64, i64, i8, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64, double, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::rcommstate", i8, i8, i64, i64, double, double, i8, %"struct.alglib_impl::optguardreport", double, double, %"struct.alglib_impl::optguardnonc0report", %"struct.alglib_impl::optguardnonc0report", double, double, %"struct.alglib_impl::optguardnonc1test0report", %"struct.alglib_impl::optguardnonc1test0report", double, double, %"struct.alglib_impl::optguardnonc1test1report", %"struct.alglib_impl::optguardnonc1test1report", i8, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::rcommstate", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix" }
%"struct.alglib_impl::optguardreport" = type { i8, i8, i64, double, i8, i8, i8, i64, double, i8, i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix" }
%"struct.alglib_impl::optguardnonc0report" = type { i8, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64, i64, i64 }
%"struct.alglib_impl::optguardnonc1test0report" = type { i8, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64, i64, i64 }
%"struct.alglib_impl::optguardnonc1test1report" = type { i8, i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64, i64, i64 }
%"struct.alglib_impl::rcommstate" = type { i32, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::ae_vector" = type { i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%union.anon.0 = type { ptr }
%"struct.alglib_impl::ae_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.1 }
%union.anon.1 = type { ptr }

@.str.208 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.209 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.210 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.211 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.212 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.213 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.214 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.215 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.216 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.217 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.218 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.219 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.220 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.221 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.222 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.223 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.224 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.225 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.226 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.227 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.228 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.229 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.230 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.231 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.232 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.233 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.234 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.235 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.236 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.237 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.238 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.239 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.240 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.241 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.242 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.243 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.244 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.245 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.246 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.247 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.248 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.249 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.250 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.251 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.252 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.253 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.254 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.255 = external hidden unnamed_addr constant [61 x i8], align 1

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

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

declare void @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef, ...) #1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl28smoothnessmonitortracestatusEPKNS_17smoothnessmonitorEbPNS_8ae_stateE(ptr noundef %0, i1 noundef zeroext %1, ptr noundef %2) #2 {
  %4 = alloca ptr, align 8
  %5 = alloca i8, align 1
  %6 = alloca ptr, align 8
  %7 = alloca i8, align 1
  %8 = alloca i8, align 1
  %9 = alloca i8, align 1
  %10 = alloca i64, align 8
  %11 = alloca double, align 8
  %12 = alloca i32, align 4
  store ptr %0, ptr %4, align 8, !tbaa !5
  %13 = zext i1 %1 to i8
  store i8 %13, ptr %5, align 1, !tbaa !9
  store ptr %2, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %9) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #3
  %14 = load ptr, ptr %4, align 8, !tbaa !5
  %15 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %14, i32 0, i32 36
  %16 = getelementptr inbounds %"struct.alglib_impl::optguardreport", ptr %15, i32 0, i32 0
  %17 = load i8, ptr %16, align 8, !tbaa !11, !range !24, !noundef !25
  %18 = trunc i8 %17 to i1
  br i1 %18, label %31, label %19

19:                                               ; preds = %3
  %20 = load ptr, ptr %4, align 8, !tbaa !5
  %21 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %20, i32 0, i32 36
  %22 = getelementptr inbounds %"struct.alglib_impl::optguardreport", ptr %21, i32 0, i32 4
  %23 = load i8, ptr %22, align 8, !tbaa !26, !range !24, !noundef !25
  %24 = trunc i8 %23 to i1
  br i1 %24, label %31, label %25

25:                                               ; preds = %19
  %26 = load ptr, ptr %4, align 8, !tbaa !5
  %27 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %26, i32 0, i32 36
  %28 = getelementptr inbounds %"struct.alglib_impl::optguardreport", ptr %27, i32 0, i32 9
  %29 = load i8, ptr %28, align 8, !tbaa !27, !range !24, !noundef !25
  %30 = trunc i8 %29 to i1
  br label %31

31:                                               ; preds = %25, %19, %3
  %32 = phi i1 [ true, %19 ], [ true, %3 ], [ %30, %25 ]
  %33 = zext i1 %32 to i8
  store i8 %33, ptr %9, align 1, !tbaa !9
  store i8 0, ptr %7, align 1, !tbaa !9
  %34 = load i8, ptr %7, align 1, !tbaa !9, !range !24, !noundef !25
  %35 = trunc i8 %34 to i1
  br i1 %35, label %39, label %36

36:                                               ; preds = %31
  %37 = load i8, ptr %5, align 1, !tbaa !9, !range !24, !noundef !25
  %38 = trunc i8 %37 to i1
  br label %39

39:                                               ; preds = %36, %31
  %40 = phi i1 [ true, %31 ], [ %38, %36 ]
  %41 = zext i1 %40 to i8
  store i8 %41, ptr %7, align 1, !tbaa !9
  %42 = load i8, ptr %7, align 1, !tbaa !9, !range !24, !noundef !25
  %43 = trunc i8 %42 to i1
  br i1 %43, label %46, label %44

44:                                               ; preds = %39
  %45 = call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef @.str.209)
  br label %46

46:                                               ; preds = %44, %39
  %47 = phi i1 [ true, %39 ], [ %45, %44 ]
  %48 = zext i1 %47 to i8
  store i8 %48, ptr %7, align 1, !tbaa !9
  %49 = load i8, ptr %7, align 1, !tbaa !9, !range !24, !noundef !25
  %50 = trunc i8 %49 to i1
  br i1 %50, label %58, label %51

51:                                               ; preds = %46
  %52 = call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef @.str.210)
  br i1 %52, label %53, label %56

53:                                               ; preds = %51
  %54 = load i8, ptr %9, align 1, !tbaa !9, !range !24, !noundef !25
  %55 = trunc i8 %54 to i1
  br label %56

56:                                               ; preds = %53, %51
  %57 = phi i1 [ false, %51 ], [ %55, %53 ]
  br label %58

58:                                               ; preds = %56, %46
  %59 = phi i1 [ true, %46 ], [ %57, %56 ]
  %60 = zext i1 %59 to i8
  store i8 %60, ptr %7, align 1, !tbaa !9
  %61 = load i8, ptr %7, align 1, !tbaa !9, !range !24, !noundef !25
  %62 = trunc i8 %61 to i1
  br i1 %62, label %64, label %63

63:                                               ; preds = %58
  store i32 1, ptr %12, align 4
  br label %707

64:                                               ; preds = %58
  %65 = load i8, ptr %7, align 1, !tbaa !9, !range !24, !noundef !25
  %66 = trunc i8 %65 to i1
  br i1 %66, label %67, label %69

67:                                               ; preds = %64
  %68 = call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef @.str.211)
  br label %69

69:                                               ; preds = %67, %64
  %70 = phi i1 [ false, %64 ], [ %68, %67 ]
  %71 = zext i1 %70 to i8
  store i8 %71, ptr %8, align 1, !tbaa !9
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.208)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.212)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.213)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.212)
  %72 = load i8, ptr %9, align 1, !tbaa !9, !range !24, !noundef !25
  %73 = trunc i8 %72 to i1
  br i1 %73, label %75, label %74

74:                                               ; preds = %69
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.214)
  store i32 1, ptr %12, align 4
  br label %707

75:                                               ; preds = %69
  %76 = load ptr, ptr %4, align 8, !tbaa !5
  %77 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %76, i32 0, i32 36
  %78 = getelementptr inbounds %"struct.alglib_impl::optguardreport", ptr %77, i32 0, i32 0
  %79 = load i8, ptr %78, align 8, !tbaa !11, !range !24, !noundef !25
  %80 = trunc i8 %79 to i1
  br i1 %80, label %81, label %82

81:                                               ; preds = %75
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.215)
  br label %82

82:                                               ; preds = %81, %75
  %83 = load ptr, ptr %4, align 8, !tbaa !5
  %84 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %83, i32 0, i32 36
  %85 = getelementptr inbounds %"struct.alglib_impl::optguardreport", ptr %84, i32 0, i32 4
  %86 = load i8, ptr %85, align 8, !tbaa !26, !range !24, !noundef !25
  %87 = trunc i8 %86 to i1
  br i1 %87, label %88, label %89

88:                                               ; preds = %82
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.216)
  br label %89

89:                                               ; preds = %88, %82
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.217)
  %90 = load ptr, ptr %4, align 8, !tbaa !5
  %91 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %90, i32 0, i32 36
  %92 = getelementptr inbounds %"struct.alglib_impl::optguardreport", ptr %91, i32 0, i32 0
  %93 = load i8, ptr %92, align 8, !tbaa !11, !range !24, !noundef !25
  %94 = trunc i8 %93 to i1
  br i1 %94, label %95, label %293

95:                                               ; preds = %89
  %96 = load ptr, ptr %4, align 8, !tbaa !5
  %97 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %96, i32 0, i32 36
  %98 = getelementptr inbounds %"struct.alglib_impl::optguardreport", ptr %97, i32 0, i32 1
  %99 = load i8, ptr %98, align 1, !tbaa !28, !range !24, !noundef !25
  %100 = trunc i8 %99 to i1
  br i1 %100, label %101, label %293

101:                                              ; preds = %95
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.218)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.219)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.220)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.221)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.222)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.223)
  %102 = load ptr, ptr %4, align 8, !tbaa !5
  %103 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %102, i32 0, i32 40
  %104 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %103, i32 0, i32 1
  %105 = load i64, ptr %104, align 8, !tbaa !29
  %106 = trunc i64 %105 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.224, i32 noundef %106)
  %107 = load ptr, ptr %4, align 8, !tbaa !5
  %108 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %107, i32 0, i32 40
  %109 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %108, i32 0, i32 1
  %110 = load i64, ptr %109, align 8, !tbaa !29
  %111 = icmp eq i64 %110, 0
  br i1 %111, label %112, label %113

112:                                              ; preds = %101
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.225)
  br label %114

113:                                              ; preds = %101
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.226)
  br label %114

114:                                              ; preds = %113, %112
  %115 = load ptr, ptr %4, align 8, !tbaa !5
  %116 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %115, i32 0, i32 36
  %117 = getelementptr inbounds %"struct.alglib_impl::optguardreport", ptr %116, i32 0, i32 3
  %118 = load double, ptr %117, align 8, !tbaa !30
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.227, double noundef %118)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.222)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.228)
  %119 = load ptr, ptr %4, align 8, !tbaa !5
  %120 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %119, i32 0, i32 40
  %121 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %120, i32 0, i32 10
  %122 = load i64, ptr %121, align 8, !tbaa !31
  %123 = icmp sge i64 %122, 0
  br i1 %123, label %124, label %130

124:                                              ; preds = %114
  %125 = load ptr, ptr %4, align 8, !tbaa !5
  %126 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %125, i32 0, i32 40
  %127 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %126, i32 0, i32 10
  %128 = load i64, ptr %127, align 8, !tbaa !31
  %129 = trunc i64 %128 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.229, i32 noundef %129)
  br label %130

130:                                              ; preds = %124, %114
  %131 = load ptr, ptr %4, align 8, !tbaa !5
  %132 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %131, i32 0, i32 40
  %133 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %132, i32 0, i32 11
  %134 = load i64, ptr %133, align 8, !tbaa !32
  %135 = icmp sge i64 %134, 0
  br i1 %135, label %136, label %142

136:                                              ; preds = %130
  %137 = load ptr, ptr %4, align 8, !tbaa !5
  %138 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %137, i32 0, i32 40
  %139 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %138, i32 0, i32 11
  %140 = load i64, ptr %139, align 8, !tbaa !32
  %141 = trunc i64 %140 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.230, i32 noundef %141)
  br label %142

142:                                              ; preds = %136, %130
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.222)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.231)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.232)
  %143 = load i8, ptr %8, align 1, !tbaa !9, !range !24, !noundef !25
  %144 = trunc i8 %143 to i1
  br i1 %144, label %146, label %145

145:                                              ; preds = %142
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.233)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.234)
  br label %146

146:                                              ; preds = %145, %142
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.219)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.235)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.236)
  store i64 0, ptr %10, align 8, !tbaa !33
  br label %147

147:                                              ; preds = %249, %146
  %148 = load i64, ptr %10, align 8, !tbaa !33
  %149 = load ptr, ptr %4, align 8, !tbaa !5
  %150 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %149, i32 0, i32 40
  %151 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %150, i32 0, i32 7
  %152 = load i64, ptr %151, align 8, !tbaa !34
  %153 = sub nsw i64 %152, 1
  %154 = icmp sle i64 %148, %153
  br i1 %154, label %155, label %252

155:                                              ; preds = %147
  %156 = load ptr, ptr %4, align 8, !tbaa !5
  %157 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %156, i32 0, i32 40
  %158 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %157, i32 0, i32 6
  %159 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %158, i32 0, i32 4
  %160 = load ptr, ptr %159, align 8, !tbaa !35
  %161 = load i64, ptr %10, align 8, !tbaa !33
  %162 = add nsw i64 %161, 1
  %163 = load ptr, ptr %4, align 8, !tbaa !5
  %164 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %163, i32 0, i32 40
  %165 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %164, i32 0, i32 7
  %166 = load i64, ptr %165, align 8, !tbaa !34
  %167 = sub nsw i64 %166, 1
  %168 = load ptr, ptr %6, align 8, !tbaa !5
  %169 = call noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef %162, i64 noundef %167, ptr noundef %168)
  %170 = getelementptr inbounds double, ptr %160, i64 %169
  %171 = load double, ptr %170, align 8, !tbaa !36
  %172 = load ptr, ptr %4, align 8, !tbaa !5
  %173 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %172, i32 0, i32 40
  %174 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %173, i32 0, i32 6
  %175 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %174, i32 0, i32 4
  %176 = load ptr, ptr %175, align 8, !tbaa !35
  %177 = load i64, ptr %10, align 8, !tbaa !33
  %178 = getelementptr inbounds double, ptr %176, i64 %177
  %179 = load double, ptr %178, align 8, !tbaa !36
  %180 = fsub double %171, %179
  store double %180, ptr %11, align 8, !tbaa !36
  %181 = load double, ptr %11, align 8, !tbaa !36
  %182 = load ptr, ptr %4, align 8, !tbaa !5
  %183 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %182, i32 0, i32 40
  %184 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %183, i32 0, i32 5
  %185 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %184, i32 0, i32 4
  %186 = load ptr, ptr %185, align 8, !tbaa !35
  %187 = load i64, ptr %10, align 8, !tbaa !33
  %188 = add nsw i64 %187, 1
  %189 = load ptr, ptr %4, align 8, !tbaa !5
  %190 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %189, i32 0, i32 40
  %191 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %190, i32 0, i32 7
  %192 = load i64, ptr %191, align 8, !tbaa !34
  %193 = sub nsw i64 %192, 1
  %194 = load ptr, ptr %6, align 8, !tbaa !5
  %195 = call noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef %188, i64 noundef %193, ptr noundef %194)
  %196 = getelementptr inbounds double, ptr %186, i64 %195
  %197 = load double, ptr %196, align 8, !tbaa !36
  %198 = fadd double 1.000000e-15, %197
  %199 = load ptr, ptr %4, align 8, !tbaa !5
  %200 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %199, i32 0, i32 40
  %201 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %200, i32 0, i32 5
  %202 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %201, i32 0, i32 4
  %203 = load ptr, ptr %202, align 8, !tbaa !35
  %204 = load i64, ptr %10, align 8, !tbaa !33
  %205 = getelementptr inbounds double, ptr %203, i64 %204
  %206 = load double, ptr %205, align 8, !tbaa !36
  %207 = fsub double %198, %206
  %208 = fdiv double %181, %207
  store double %208, ptr %11, align 8, !tbaa !36
  %209 = load ptr, ptr %4, align 8, !tbaa !5
  %210 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %209, i32 0, i32 40
  %211 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %210, i32 0, i32 5
  %212 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %211, i32 0, i32 4
  %213 = load ptr, ptr %212, align 8, !tbaa !35
  %214 = load i64, ptr %10, align 8, !tbaa !33
  %215 = getelementptr inbounds double, ptr %213, i64 %214
  %216 = load double, ptr %215, align 8, !tbaa !36
  %217 = load ptr, ptr %4, align 8, !tbaa !5
  %218 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %217, i32 0, i32 40
  %219 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %218, i32 0, i32 6
  %220 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %219, i32 0, i32 4
  %221 = load ptr, ptr %220, align 8, !tbaa !35
  %222 = load i64, ptr %10, align 8, !tbaa !33
  %223 = getelementptr inbounds double, ptr %221, i64 %222
  %224 = load double, ptr %223, align 8, !tbaa !36
  %225 = load ptr, ptr %4, align 8, !tbaa !5
  %226 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %225, i32 0, i32 40
  %227 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %226, i32 0, i32 6
  %228 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %227, i32 0, i32 4
  %229 = load ptr, ptr %228, align 8, !tbaa !35
  %230 = getelementptr inbounds double, ptr %229, i64 0
  %231 = load double, ptr %230, align 8, !tbaa !36
  %232 = fsub double %224, %231
  %233 = load double, ptr %11, align 8, !tbaa !36
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.237, double noundef %216, double noundef %232, double noundef %233)
  %234 = load i64, ptr %10, align 8, !tbaa !33
  %235 = load ptr, ptr %4, align 8, !tbaa !5
  %236 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %235, i32 0, i32 40
  %237 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %236, i32 0, i32 8
  %238 = load i64, ptr %237, align 8, !tbaa !37
  %239 = icmp sge i64 %234, %238
  br i1 %239, label %240, label %248

240:                                              ; preds = %155
  %241 = load i64, ptr %10, align 8, !tbaa !33
  %242 = load ptr, ptr %4, align 8, !tbaa !5
  %243 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %242, i32 0, i32 40
  %244 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %243, i32 0, i32 9
  %245 = load i64, ptr %244, align 8, !tbaa !38
  %246 = icmp sle i64 %241, %245
  br i1 %246, label %247, label %248

247:                                              ; preds = %240
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.238)
  br label %248

248:                                              ; preds = %247, %240, %155
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.208)
  br label %249

249:                                              ; preds = %248
  %250 = load i64, ptr %10, align 8, !tbaa !33
  %251 = add nsw i64 %250, 1
  store i64 %251, ptr %10, align 8, !tbaa !33
  br label %147, !llvm.loop !39

252:                                              ; preds = %147
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.236)
  %253 = load i8, ptr %8, align 1, !tbaa !9, !range !24, !noundef !25
  %254 = trunc i8 %253 to i1
  br i1 %254, label %255, label %292

255:                                              ; preds = %252
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.239)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.240)
  %256 = load ptr, ptr %4, align 8, !tbaa !5
  %257 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %256, i32 0, i32 40
  %258 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %257, i32 0, i32 2
  %259 = load ptr, ptr %4, align 8, !tbaa !5
  %260 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %259, i32 0, i32 0
  %261 = load i64, ptr %260, align 8, !tbaa !41
  %262 = load ptr, ptr %4, align 8, !tbaa !5
  %263 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %262, i32 0, i32 3
  %264 = load ptr, ptr %4, align 8, !tbaa !5
  %265 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %264, i32 0, i32 3
  %266 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl36tracevectorunscaledunshiftedautoprecEPKNS_9ae_vectorElS2_bS2_bPNS_8ae_stateE(ptr noundef %258, i64 noundef %261, ptr noundef %263, i1 noundef zeroext true, ptr noundef %265, i1 noundef zeroext false, ptr noundef %266)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.208)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.241)
  %267 = load ptr, ptr %4, align 8, !tbaa !5
  %268 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %267, i32 0, i32 40
  %269 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %268, i32 0, i32 3
  %270 = load ptr, ptr %4, align 8, !tbaa !5
  %271 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %270, i32 0, i32 0
  %272 = load i64, ptr %271, align 8, !tbaa !41
  %273 = load ptr, ptr %4, align 8, !tbaa !5
  %274 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %273, i32 0, i32 3
  %275 = load ptr, ptr %4, align 8, !tbaa !5
  %276 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %275, i32 0, i32 3
  %277 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl36tracevectorunscaledunshiftedautoprecEPKNS_9ae_vectorElS2_bS2_bPNS_8ae_stateE(ptr noundef %269, i64 noundef %272, ptr noundef %274, i1 noundef zeroext true, ptr noundef %276, i1 noundef zeroext false, ptr noundef %277)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.208)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.242)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.240)
  %278 = load ptr, ptr %4, align 8, !tbaa !5
  %279 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %278, i32 0, i32 40
  %280 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %279, i32 0, i32 2
  %281 = load ptr, ptr %4, align 8, !tbaa !5
  %282 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %281, i32 0, i32 0
  %283 = load i64, ptr %282, align 8, !tbaa !41
  %284 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl19tracevectorautoprecEPKNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef %280, i64 noundef 0, i64 noundef %283, ptr noundef %284)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.208)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.241)
  %285 = load ptr, ptr %4, align 8, !tbaa !5
  %286 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %285, i32 0, i32 40
  %287 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %286, i32 0, i32 3
  %288 = load ptr, ptr %4, align 8, !tbaa !5
  %289 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %288, i32 0, i32 0
  %290 = load i64, ptr %289, align 8, !tbaa !41
  %291 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl19tracevectorautoprecEPKNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef %287, i64 noundef 0, i64 noundef %290, ptr noundef %291)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.208)
  br label %292

292:                                              ; preds = %255, %252
  br label %293

293:                                              ; preds = %292, %95, %89
  %294 = load ptr, ptr %4, align 8, !tbaa !5
  %295 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %294, i32 0, i32 36
  %296 = getelementptr inbounds %"struct.alglib_impl::optguardreport", ptr %295, i32 0, i32 4
  %297 = load i8, ptr %296, align 8, !tbaa !26, !range !24, !noundef !25
  %298 = trunc i8 %297 to i1
  br i1 %298, label %299, label %497

299:                                              ; preds = %293
  %300 = load ptr, ptr %4, align 8, !tbaa !5
  %301 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %300, i32 0, i32 36
  %302 = getelementptr inbounds %"struct.alglib_impl::optguardreport", ptr %301, i32 0, i32 5
  %303 = load i8, ptr %302, align 1, !tbaa !42, !range !24, !noundef !25
  %304 = trunc i8 %303 to i1
  br i1 %304, label %305, label %497

305:                                              ; preds = %299
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.243)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.219)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.244)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.245)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.246)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.222)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.223)
  %306 = load ptr, ptr %4, align 8, !tbaa !5
  %307 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %306, i32 0, i32 44
  %308 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test0report", ptr %307, i32 0, i32 1
  %309 = load i64, ptr %308, align 8, !tbaa !43
  %310 = trunc i64 %309 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.247, i32 noundef %310)
  %311 = load ptr, ptr %4, align 8, !tbaa !5
  %312 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %311, i32 0, i32 44
  %313 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test0report", ptr %312, i32 0, i32 1
  %314 = load i64, ptr %313, align 8, !tbaa !43
  %315 = icmp eq i64 %314, 0
  br i1 %315, label %316, label %317

316:                                              ; preds = %305
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.248)
  br label %318

317:                                              ; preds = %305
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.249)
  br label %318

318:                                              ; preds = %317, %316
  %319 = load ptr, ptr %4, align 8, !tbaa !5
  %320 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %319, i32 0, i32 36
  %321 = getelementptr inbounds %"struct.alglib_impl::optguardreport", ptr %320, i32 0, i32 8
  %322 = load double, ptr %321, align 8, !tbaa !44
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.250, double noundef %322)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.222)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.228)
  %323 = load ptr, ptr %4, align 8, !tbaa !5
  %324 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %323, i32 0, i32 44
  %325 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test0report", ptr %324, i32 0, i32 10
  %326 = load i64, ptr %325, align 8, !tbaa !45
  %327 = icmp sge i64 %326, 0
  br i1 %327, label %328, label %334

328:                                              ; preds = %318
  %329 = load ptr, ptr %4, align 8, !tbaa !5
  %330 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %329, i32 0, i32 44
  %331 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test0report", ptr %330, i32 0, i32 10
  %332 = load i64, ptr %331, align 8, !tbaa !45
  %333 = trunc i64 %332 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.229, i32 noundef %333)
  br label %334

334:                                              ; preds = %328, %318
  %335 = load ptr, ptr %4, align 8, !tbaa !5
  %336 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %335, i32 0, i32 44
  %337 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test0report", ptr %336, i32 0, i32 11
  %338 = load i64, ptr %337, align 8, !tbaa !46
  %339 = icmp sge i64 %338, 0
  br i1 %339, label %340, label %346

340:                                              ; preds = %334
  %341 = load ptr, ptr %4, align 8, !tbaa !5
  %342 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %341, i32 0, i32 44
  %343 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test0report", ptr %342, i32 0, i32 11
  %344 = load i64, ptr %343, align 8, !tbaa !46
  %345 = trunc i64 %344 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.230, i32 noundef %345)
  br label %346

346:                                              ; preds = %340, %334
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.222)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.231)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.232)
  %347 = load i8, ptr %8, align 1, !tbaa !9, !range !24, !noundef !25
  %348 = trunc i8 %347 to i1
  br i1 %348, label %350, label %349

349:                                              ; preds = %346
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.233)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.234)
  br label %350

350:                                              ; preds = %349, %346
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.219)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.235)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.236)
  store i64 0, ptr %10, align 8, !tbaa !33
  br label %351

351:                                              ; preds = %453, %350
  %352 = load i64, ptr %10, align 8, !tbaa !33
  %353 = load ptr, ptr %4, align 8, !tbaa !5
  %354 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %353, i32 0, i32 44
  %355 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test0report", ptr %354, i32 0, i32 7
  %356 = load i64, ptr %355, align 8, !tbaa !47
  %357 = sub nsw i64 %356, 1
  %358 = icmp sle i64 %352, %357
  br i1 %358, label %359, label %456

359:                                              ; preds = %351
  %360 = load ptr, ptr %4, align 8, !tbaa !5
  %361 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %360, i32 0, i32 44
  %362 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test0report", ptr %361, i32 0, i32 6
  %363 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %362, i32 0, i32 4
  %364 = load ptr, ptr %363, align 8, !tbaa !35
  %365 = load i64, ptr %10, align 8, !tbaa !33
  %366 = add nsw i64 %365, 1
  %367 = load ptr, ptr %4, align 8, !tbaa !5
  %368 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %367, i32 0, i32 44
  %369 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test0report", ptr %368, i32 0, i32 7
  %370 = load i64, ptr %369, align 8, !tbaa !47
  %371 = sub nsw i64 %370, 1
  %372 = load ptr, ptr %6, align 8, !tbaa !5
  %373 = call noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef %366, i64 noundef %371, ptr noundef %372)
  %374 = getelementptr inbounds double, ptr %364, i64 %373
  %375 = load double, ptr %374, align 8, !tbaa !36
  %376 = load ptr, ptr %4, align 8, !tbaa !5
  %377 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %376, i32 0, i32 44
  %378 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test0report", ptr %377, i32 0, i32 6
  %379 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %378, i32 0, i32 4
  %380 = load ptr, ptr %379, align 8, !tbaa !35
  %381 = load i64, ptr %10, align 8, !tbaa !33
  %382 = getelementptr inbounds double, ptr %380, i64 %381
  %383 = load double, ptr %382, align 8, !tbaa !36
  %384 = fsub double %375, %383
  store double %384, ptr %11, align 8, !tbaa !36
  %385 = load double, ptr %11, align 8, !tbaa !36
  %386 = load ptr, ptr %4, align 8, !tbaa !5
  %387 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %386, i32 0, i32 44
  %388 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test0report", ptr %387, i32 0, i32 5
  %389 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %388, i32 0, i32 4
  %390 = load ptr, ptr %389, align 8, !tbaa !35
  %391 = load i64, ptr %10, align 8, !tbaa !33
  %392 = add nsw i64 %391, 1
  %393 = load ptr, ptr %4, align 8, !tbaa !5
  %394 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %393, i32 0, i32 44
  %395 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test0report", ptr %394, i32 0, i32 7
  %396 = load i64, ptr %395, align 8, !tbaa !47
  %397 = sub nsw i64 %396, 1
  %398 = load ptr, ptr %6, align 8, !tbaa !5
  %399 = call noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef %392, i64 noundef %397, ptr noundef %398)
  %400 = getelementptr inbounds double, ptr %390, i64 %399
  %401 = load double, ptr %400, align 8, !tbaa !36
  %402 = fadd double 1.000000e-15, %401
  %403 = load ptr, ptr %4, align 8, !tbaa !5
  %404 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %403, i32 0, i32 44
  %405 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test0report", ptr %404, i32 0, i32 5
  %406 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %405, i32 0, i32 4
  %407 = load ptr, ptr %406, align 8, !tbaa !35
  %408 = load i64, ptr %10, align 8, !tbaa !33
  %409 = getelementptr inbounds double, ptr %407, i64 %408
  %410 = load double, ptr %409, align 8, !tbaa !36
  %411 = fsub double %402, %410
  %412 = fdiv double %385, %411
  store double %412, ptr %11, align 8, !tbaa !36
  %413 = load ptr, ptr %4, align 8, !tbaa !5
  %414 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %413, i32 0, i32 44
  %415 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test0report", ptr %414, i32 0, i32 5
  %416 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %415, i32 0, i32 4
  %417 = load ptr, ptr %416, align 8, !tbaa !35
  %418 = load i64, ptr %10, align 8, !tbaa !33
  %419 = getelementptr inbounds double, ptr %417, i64 %418
  %420 = load double, ptr %419, align 8, !tbaa !36
  %421 = load ptr, ptr %4, align 8, !tbaa !5
  %422 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %421, i32 0, i32 44
  %423 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test0report", ptr %422, i32 0, i32 6
  %424 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %423, i32 0, i32 4
  %425 = load ptr, ptr %424, align 8, !tbaa !35
  %426 = load i64, ptr %10, align 8, !tbaa !33
  %427 = getelementptr inbounds double, ptr %425, i64 %426
  %428 = load double, ptr %427, align 8, !tbaa !36
  %429 = load ptr, ptr %4, align 8, !tbaa !5
  %430 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %429, i32 0, i32 44
  %431 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test0report", ptr %430, i32 0, i32 6
  %432 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %431, i32 0, i32 4
  %433 = load ptr, ptr %432, align 8, !tbaa !35
  %434 = getelementptr inbounds double, ptr %433, i64 0
  %435 = load double, ptr %434, align 8, !tbaa !36
  %436 = fsub double %428, %435
  %437 = load double, ptr %11, align 8, !tbaa !36
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.237, double noundef %420, double noundef %436, double noundef %437)
  %438 = load i64, ptr %10, align 8, !tbaa !33
  %439 = load ptr, ptr %4, align 8, !tbaa !5
  %440 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %439, i32 0, i32 44
  %441 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test0report", ptr %440, i32 0, i32 8
  %442 = load i64, ptr %441, align 8, !tbaa !48
  %443 = icmp sge i64 %438, %442
  br i1 %443, label %444, label %452

444:                                              ; preds = %359
  %445 = load i64, ptr %10, align 8, !tbaa !33
  %446 = load ptr, ptr %4, align 8, !tbaa !5
  %447 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %446, i32 0, i32 44
  %448 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test0report", ptr %447, i32 0, i32 9
  %449 = load i64, ptr %448, align 8, !tbaa !49
  %450 = icmp sle i64 %445, %449
  br i1 %450, label %451, label %452

451:                                              ; preds = %444
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.238)
  br label %452

452:                                              ; preds = %451, %444, %359
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.208)
  br label %453

453:                                              ; preds = %452
  %454 = load i64, ptr %10, align 8, !tbaa !33
  %455 = add nsw i64 %454, 1
  store i64 %455, ptr %10, align 8, !tbaa !33
  br label %351, !llvm.loop !50

456:                                              ; preds = %351
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.236)
  %457 = load i8, ptr %8, align 1, !tbaa !9, !range !24, !noundef !25
  %458 = trunc i8 %457 to i1
  br i1 %458, label %459, label %496

459:                                              ; preds = %456
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.239)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.240)
  %460 = load ptr, ptr %4, align 8, !tbaa !5
  %461 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %460, i32 0, i32 44
  %462 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test0report", ptr %461, i32 0, i32 2
  %463 = load ptr, ptr %4, align 8, !tbaa !5
  %464 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %463, i32 0, i32 0
  %465 = load i64, ptr %464, align 8, !tbaa !41
  %466 = load ptr, ptr %4, align 8, !tbaa !5
  %467 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %466, i32 0, i32 3
  %468 = load ptr, ptr %4, align 8, !tbaa !5
  %469 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %468, i32 0, i32 3
  %470 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl36tracevectorunscaledunshiftedautoprecEPKNS_9ae_vectorElS2_bS2_bPNS_8ae_stateE(ptr noundef %462, i64 noundef %465, ptr noundef %467, i1 noundef zeroext true, ptr noundef %469, i1 noundef zeroext false, ptr noundef %470)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.208)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.241)
  %471 = load ptr, ptr %4, align 8, !tbaa !5
  %472 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %471, i32 0, i32 44
  %473 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test0report", ptr %472, i32 0, i32 3
  %474 = load ptr, ptr %4, align 8, !tbaa !5
  %475 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %474, i32 0, i32 0
  %476 = load i64, ptr %475, align 8, !tbaa !41
  %477 = load ptr, ptr %4, align 8, !tbaa !5
  %478 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %477, i32 0, i32 3
  %479 = load ptr, ptr %4, align 8, !tbaa !5
  %480 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %479, i32 0, i32 3
  %481 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl36tracevectorunscaledunshiftedautoprecEPKNS_9ae_vectorElS2_bS2_bPNS_8ae_stateE(ptr noundef %473, i64 noundef %476, ptr noundef %478, i1 noundef zeroext true, ptr noundef %480, i1 noundef zeroext false, ptr noundef %481)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.208)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.242)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.240)
  %482 = load ptr, ptr %4, align 8, !tbaa !5
  %483 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %482, i32 0, i32 44
  %484 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test0report", ptr %483, i32 0, i32 2
  %485 = load ptr, ptr %4, align 8, !tbaa !5
  %486 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %485, i32 0, i32 0
  %487 = load i64, ptr %486, align 8, !tbaa !41
  %488 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl19tracevectorautoprecEPKNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef %484, i64 noundef 0, i64 noundef %487, ptr noundef %488)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.208)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.241)
  %489 = load ptr, ptr %4, align 8, !tbaa !5
  %490 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %489, i32 0, i32 44
  %491 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test0report", ptr %490, i32 0, i32 3
  %492 = load ptr, ptr %4, align 8, !tbaa !5
  %493 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %492, i32 0, i32 0
  %494 = load i64, ptr %493, align 8, !tbaa !41
  %495 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl19tracevectorautoprecEPKNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef %491, i64 noundef 0, i64 noundef %494, ptr noundef %495)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.208)
  br label %496

496:                                              ; preds = %459, %456
  br label %497

497:                                              ; preds = %496, %299, %293
  %498 = load ptr, ptr %4, align 8, !tbaa !5
  %499 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %498, i32 0, i32 36
  %500 = getelementptr inbounds %"struct.alglib_impl::optguardreport", ptr %499, i32 0, i32 4
  %501 = load i8, ptr %500, align 8, !tbaa !26, !range !24, !noundef !25
  %502 = trunc i8 %501 to i1
  br i1 %502, label %503, label %706

503:                                              ; preds = %497
  %504 = load ptr, ptr %4, align 8, !tbaa !5
  %505 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %504, i32 0, i32 36
  %506 = getelementptr inbounds %"struct.alglib_impl::optguardreport", ptr %505, i32 0, i32 6
  %507 = load i8, ptr %506, align 2, !tbaa !51, !range !24, !noundef !25
  %508 = trunc i8 %507 to i1
  br i1 %508, label %509, label %706

509:                                              ; preds = %503
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.251)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.219)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.252)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.253)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.222)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.223)
  %510 = load ptr, ptr %4, align 8, !tbaa !5
  %511 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %510, i32 0, i32 48
  %512 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test1report", ptr %511, i32 0, i32 1
  %513 = load i64, ptr %512, align 8, !tbaa !52
  %514 = trunc i64 %513 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.247, i32 noundef %514)
  %515 = load ptr, ptr %4, align 8, !tbaa !5
  %516 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %515, i32 0, i32 48
  %517 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test1report", ptr %516, i32 0, i32 1
  %518 = load i64, ptr %517, align 8, !tbaa !52
  %519 = icmp eq i64 %518, 0
  br i1 %519, label %520, label %521

520:                                              ; preds = %509
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.248)
  br label %522

521:                                              ; preds = %509
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.249)
  br label %522

522:                                              ; preds = %521, %520
  %523 = load ptr, ptr %4, align 8, !tbaa !5
  %524 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %523, i32 0, i32 48
  %525 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test1report", ptr %524, i32 0, i32 2
  %526 = load i64, ptr %525, align 8, !tbaa !53
  %527 = trunc i64 %526 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.254, i32 noundef %527)
  %528 = load ptr, ptr %4, align 8, !tbaa !5
  %529 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %528, i32 0, i32 36
  %530 = getelementptr inbounds %"struct.alglib_impl::optguardreport", ptr %529, i32 0, i32 8
  %531 = load double, ptr %530, align 8, !tbaa !44
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.250, double noundef %531)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.222)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.228)
  %532 = load ptr, ptr %4, align 8, !tbaa !5
  %533 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %532, i32 0, i32 48
  %534 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test1report", ptr %533, i32 0, i32 11
  %535 = load i64, ptr %534, align 8, !tbaa !54
  %536 = icmp sge i64 %535, 0
  br i1 %536, label %537, label %543

537:                                              ; preds = %522
  %538 = load ptr, ptr %4, align 8, !tbaa !5
  %539 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %538, i32 0, i32 48
  %540 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test1report", ptr %539, i32 0, i32 11
  %541 = load i64, ptr %540, align 8, !tbaa !54
  %542 = trunc i64 %541 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.229, i32 noundef %542)
  br label %543

543:                                              ; preds = %537, %522
  %544 = load ptr, ptr %4, align 8, !tbaa !5
  %545 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %544, i32 0, i32 48
  %546 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test1report", ptr %545, i32 0, i32 12
  %547 = load i64, ptr %546, align 8, !tbaa !55
  %548 = icmp sge i64 %547, 0
  br i1 %548, label %549, label %555

549:                                              ; preds = %543
  %550 = load ptr, ptr %4, align 8, !tbaa !5
  %551 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %550, i32 0, i32 48
  %552 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test1report", ptr %551, i32 0, i32 12
  %553 = load i64, ptr %552, align 8, !tbaa !55
  %554 = trunc i64 %553 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.230, i32 noundef %554)
  br label %555

555:                                              ; preds = %549, %543
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.222)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.231)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.232)
  %556 = load i8, ptr %8, align 1, !tbaa !9, !range !24, !noundef !25
  %557 = trunc i8 %556 to i1
  br i1 %557, label %559, label %558

558:                                              ; preds = %555
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.233)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.234)
  br label %559

559:                                              ; preds = %558, %555
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.219)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.255)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.236)
  store i64 0, ptr %10, align 8, !tbaa !33
  br label %560

560:                                              ; preds = %662, %559
  %561 = load i64, ptr %10, align 8, !tbaa !33
  %562 = load ptr, ptr %4, align 8, !tbaa !5
  %563 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %562, i32 0, i32 48
  %564 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test1report", ptr %563, i32 0, i32 8
  %565 = load i64, ptr %564, align 8, !tbaa !56
  %566 = sub nsw i64 %565, 1
  %567 = icmp sle i64 %561, %566
  br i1 %567, label %568, label %665

568:                                              ; preds = %560
  %569 = load ptr, ptr %4, align 8, !tbaa !5
  %570 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %569, i32 0, i32 48
  %571 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test1report", ptr %570, i32 0, i32 7
  %572 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %571, i32 0, i32 4
  %573 = load ptr, ptr %572, align 8, !tbaa !35
  %574 = load i64, ptr %10, align 8, !tbaa !33
  %575 = add nsw i64 %574, 1
  %576 = load ptr, ptr %4, align 8, !tbaa !5
  %577 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %576, i32 0, i32 48
  %578 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test1report", ptr %577, i32 0, i32 8
  %579 = load i64, ptr %578, align 8, !tbaa !56
  %580 = sub nsw i64 %579, 1
  %581 = load ptr, ptr %6, align 8, !tbaa !5
  %582 = call noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef %575, i64 noundef %580, ptr noundef %581)
  %583 = getelementptr inbounds double, ptr %573, i64 %582
  %584 = load double, ptr %583, align 8, !tbaa !36
  %585 = load ptr, ptr %4, align 8, !tbaa !5
  %586 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %585, i32 0, i32 48
  %587 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test1report", ptr %586, i32 0, i32 7
  %588 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %587, i32 0, i32 4
  %589 = load ptr, ptr %588, align 8, !tbaa !35
  %590 = load i64, ptr %10, align 8, !tbaa !33
  %591 = getelementptr inbounds double, ptr %589, i64 %590
  %592 = load double, ptr %591, align 8, !tbaa !36
  %593 = fsub double %584, %592
  store double %593, ptr %11, align 8, !tbaa !36
  %594 = load double, ptr %11, align 8, !tbaa !36
  %595 = load ptr, ptr %4, align 8, !tbaa !5
  %596 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %595, i32 0, i32 48
  %597 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test1report", ptr %596, i32 0, i32 6
  %598 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %597, i32 0, i32 4
  %599 = load ptr, ptr %598, align 8, !tbaa !35
  %600 = load i64, ptr %10, align 8, !tbaa !33
  %601 = add nsw i64 %600, 1
  %602 = load ptr, ptr %4, align 8, !tbaa !5
  %603 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %602, i32 0, i32 48
  %604 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test1report", ptr %603, i32 0, i32 8
  %605 = load i64, ptr %604, align 8, !tbaa !56
  %606 = sub nsw i64 %605, 1
  %607 = load ptr, ptr %6, align 8, !tbaa !5
  %608 = call noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef %601, i64 noundef %606, ptr noundef %607)
  %609 = getelementptr inbounds double, ptr %599, i64 %608
  %610 = load double, ptr %609, align 8, !tbaa !36
  %611 = fadd double 1.000000e-15, %610
  %612 = load ptr, ptr %4, align 8, !tbaa !5
  %613 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %612, i32 0, i32 48
  %614 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test1report", ptr %613, i32 0, i32 6
  %615 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %614, i32 0, i32 4
  %616 = load ptr, ptr %615, align 8, !tbaa !35
  %617 = load i64, ptr %10, align 8, !tbaa !33
  %618 = getelementptr inbounds double, ptr %616, i64 %617
  %619 = load double, ptr %618, align 8, !tbaa !36
  %620 = fsub double %611, %619
  %621 = fdiv double %594, %620
  store double %621, ptr %11, align 8, !tbaa !36
  %622 = load ptr, ptr %4, align 8, !tbaa !5
  %623 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %622, i32 0, i32 48
  %624 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test1report", ptr %623, i32 0, i32 6
  %625 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %624, i32 0, i32 4
  %626 = load ptr, ptr %625, align 8, !tbaa !35
  %627 = load i64, ptr %10, align 8, !tbaa !33
  %628 = getelementptr inbounds double, ptr %626, i64 %627
  %629 = load double, ptr %628, align 8, !tbaa !36
  %630 = load ptr, ptr %4, align 8, !tbaa !5
  %631 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %630, i32 0, i32 48
  %632 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test1report", ptr %631, i32 0, i32 7
  %633 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %632, i32 0, i32 4
  %634 = load ptr, ptr %633, align 8, !tbaa !35
  %635 = load i64, ptr %10, align 8, !tbaa !33
  %636 = getelementptr inbounds double, ptr %634, i64 %635
  %637 = load double, ptr %636, align 8, !tbaa !36
  %638 = load ptr, ptr %4, align 8, !tbaa !5
  %639 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %638, i32 0, i32 48
  %640 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test1report", ptr %639, i32 0, i32 7
  %641 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %640, i32 0, i32 4
  %642 = load ptr, ptr %641, align 8, !tbaa !35
  %643 = getelementptr inbounds double, ptr %642, i64 0
  %644 = load double, ptr %643, align 8, !tbaa !36
  %645 = fsub double %637, %644
  %646 = load double, ptr %11, align 8, !tbaa !36
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.237, double noundef %629, double noundef %645, double noundef %646)
  %647 = load i64, ptr %10, align 8, !tbaa !33
  %648 = load ptr, ptr %4, align 8, !tbaa !5
  %649 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %648, i32 0, i32 48
  %650 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test1report", ptr %649, i32 0, i32 9
  %651 = load i64, ptr %650, align 8, !tbaa !57
  %652 = icmp sge i64 %647, %651
  br i1 %652, label %653, label %661

653:                                              ; preds = %568
  %654 = load i64, ptr %10, align 8, !tbaa !33
  %655 = load ptr, ptr %4, align 8, !tbaa !5
  %656 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %655, i32 0, i32 48
  %657 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test1report", ptr %656, i32 0, i32 10
  %658 = load i64, ptr %657, align 8, !tbaa !58
  %659 = icmp sle i64 %654, %658
  br i1 %659, label %660, label %661

660:                                              ; preds = %653
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.238)
  br label %661

661:                                              ; preds = %660, %653, %568
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.208)
  br label %662

662:                                              ; preds = %661
  %663 = load i64, ptr %10, align 8, !tbaa !33
  %664 = add nsw i64 %663, 1
  store i64 %664, ptr %10, align 8, !tbaa !33
  br label %560, !llvm.loop !59

665:                                              ; preds = %560
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.236)
  %666 = load i8, ptr %8, align 1, !tbaa !9, !range !24, !noundef !25
  %667 = trunc i8 %666 to i1
  br i1 %667, label %668, label %705

668:                                              ; preds = %665
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.239)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.240)
  %669 = load ptr, ptr %4, align 8, !tbaa !5
  %670 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %669, i32 0, i32 48
  %671 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test1report", ptr %670, i32 0, i32 3
  %672 = load ptr, ptr %4, align 8, !tbaa !5
  %673 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %672, i32 0, i32 0
  %674 = load i64, ptr %673, align 8, !tbaa !41
  %675 = load ptr, ptr %4, align 8, !tbaa !5
  %676 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %675, i32 0, i32 3
  %677 = load ptr, ptr %4, align 8, !tbaa !5
  %678 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %677, i32 0, i32 3
  %679 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl36tracevectorunscaledunshiftedautoprecEPKNS_9ae_vectorElS2_bS2_bPNS_8ae_stateE(ptr noundef %671, i64 noundef %674, ptr noundef %676, i1 noundef zeroext true, ptr noundef %678, i1 noundef zeroext false, ptr noundef %679)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.208)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.241)
  %680 = load ptr, ptr %4, align 8, !tbaa !5
  %681 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %680, i32 0, i32 48
  %682 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test1report", ptr %681, i32 0, i32 4
  %683 = load ptr, ptr %4, align 8, !tbaa !5
  %684 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %683, i32 0, i32 0
  %685 = load i64, ptr %684, align 8, !tbaa !41
  %686 = load ptr, ptr %4, align 8, !tbaa !5
  %687 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %686, i32 0, i32 3
  %688 = load ptr, ptr %4, align 8, !tbaa !5
  %689 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %688, i32 0, i32 3
  %690 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl36tracevectorunscaledunshiftedautoprecEPKNS_9ae_vectorElS2_bS2_bPNS_8ae_stateE(ptr noundef %682, i64 noundef %685, ptr noundef %687, i1 noundef zeroext true, ptr noundef %689, i1 noundef zeroext false, ptr noundef %690)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.208)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.242)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.240)
  %691 = load ptr, ptr %4, align 8, !tbaa !5
  %692 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %691, i32 0, i32 48
  %693 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test1report", ptr %692, i32 0, i32 3
  %694 = load ptr, ptr %4, align 8, !tbaa !5
  %695 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %694, i32 0, i32 0
  %696 = load i64, ptr %695, align 8, !tbaa !41
  %697 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl19tracevectorautoprecEPKNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef %693, i64 noundef 0, i64 noundef %696, ptr noundef %697)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.208)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.241)
  %698 = load ptr, ptr %4, align 8, !tbaa !5
  %699 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %698, i32 0, i32 48
  %700 = getelementptr inbounds %"struct.alglib_impl::optguardnonc1test1report", ptr %699, i32 0, i32 4
  %701 = load ptr, ptr %4, align 8, !tbaa !5
  %702 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %701, i32 0, i32 0
  %703 = load i64, ptr %702, align 8, !tbaa !41
  %704 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl19tracevectorautoprecEPKNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef %700, i64 noundef 0, i64 noundef %703, ptr noundef %704)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.208)
  br label %705

705:                                              ; preds = %668, %665
  br label %706

706:                                              ; preds = %705, %503, %497
  store i32 0, ptr %12, align 4
  br label %707

707:                                              ; preds = %706, %74, %63
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #3
  %708 = load i32, ptr %12, align 4
  switch i32 %708, label %710 [
    i32 0, label %709
    i32 1, label %709
  ]

709:                                              ; preds = %707, %707
  ret void

710:                                              ; preds = %707
  unreachable
}

declare noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef) #1

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

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

declare void @_ZN11alglib_impl19tracevectorautoprecEPKNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef, i64 noundef, i64 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 = { 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 #3 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{!12, !10, i64 1552}
!12 = !{!"_ZTSN11alglib_impl17smoothnessmonitorE", !13, i64 0, !13, i64 8, !10, i64 16, !14, i64 24, !14, i64 88, !13, i64 152, !14, i64 160, !14, i64 224, !14, i64 288, !16, i64 352, !14, i64 432, !14, i64 496, !13, i64 560, !13, i64 568, !13, i64 576, !17, i64 584, !13, i64 592, !14, i64 600, !14, i64 664, !17, i64 728, !14, i64 736, !14, i64 800, !17, i64 864, !16, i64 872, !16, i64 952, !16, i64 1032, !14, i64 1112, !14, i64 1176, !18, i64 1240, !10, i64 1504, !10, i64 1505, !13, i64 1512, !13, i64 1520, !17, i64 1528, !17, i64 1536, !10, i64 1544, !20, i64 1552, !17, i64 1848, !17, i64 1856, !21, i64 1864, !21, i64 2184, !17, i64 2504, !17, i64 2512, !22, i64 2520, !22, i64 2840, !17, i64 3160, !17, i64 3168, !23, i64 3176, !23, i64 3504, !10, i64 3832, !14, i64 3840, !14, i64 3904, !16, i64 3968, !18, i64 4048, !14, i64 4312, !14, i64 4376, !14, i64 4440, !14, i64 4504, !14, i64 4568, !14, i64 4632, !14, i64 4696, !14, i64 4760, !16, i64 4824, !16, i64 4904, !14, i64 4984, !14, i64 5048, !14, i64 5112, !14, i64 5176, !14, i64 5240, !14, i64 5304, !14, i64 5368, !14, i64 5432, !14, i64 5496, !14, i64 5560, !16, i64 5624}
!13 = !{!"long", !7, i64 0}
!14 = !{!"_ZTSN11alglib_impl9ae_vectorE", !13, i64 0, !13, i64 8, !10, i64 16, !15, i64 24, !7, i64 56}
!15 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!16 = !{!"_ZTSN11alglib_impl9ae_matrixE", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !10, i64 32, !15, i64 40, !7, i64 72}
!17 = !{!"double", !7, i64 0}
!18 = !{!"_ZTSN11alglib_impl10rcommstateE", !19, i64 0, !14, i64 8, !14, i64 72, !14, i64 136, !14, i64 200}
!19 = !{!"int", !7, i64 0}
!20 = !{!"_ZTSN11alglib_impl14optguardreportE", !10, i64 0, !10, i64 1, !13, i64 8, !17, i64 16, !10, i64 24, !10, i64 25, !10, i64 26, !13, i64 32, !17, i64 40, !10, i64 48, !13, i64 56, !13, i64 64, !14, i64 72, !16, i64 136, !16, i64 216}
!21 = !{!"_ZTSN11alglib_impl19optguardnonc0reportE", !10, i64 0, !13, i64 8, !14, i64 16, !14, i64 80, !13, i64 144, !14, i64 152, !14, i64 216, !13, i64 280, !13, i64 288, !13, i64 296, !13, i64 304, !13, i64 312}
!22 = !{!"_ZTSN11alglib_impl24optguardnonc1test0reportE", !10, i64 0, !13, i64 8, !14, i64 16, !14, i64 80, !13, i64 144, !14, i64 152, !14, i64 216, !13, i64 280, !13, i64 288, !13, i64 296, !13, i64 304, !13, i64 312}
!23 = !{!"_ZTSN11alglib_impl24optguardnonc1test1reportE", !10, i64 0, !13, i64 8, !13, i64 16, !14, i64 24, !14, i64 88, !13, i64 152, !14, i64 160, !14, i64 224, !13, i64 288, !13, i64 296, !13, i64 304, !13, i64 312, !13, i64 320}
!24 = !{i8 0, i8 2}
!25 = !{}
!26 = !{!12, !10, i64 1576}
!27 = !{!12, !10, i64 1600}
!28 = !{!12, !10, i64 1553}
!29 = !{!12, !13, i64 2192}
!30 = !{!12, !17, i64 1568}
!31 = !{!12, !13, i64 2488}
!32 = !{!12, !13, i64 2496}
!33 = !{!13, !13, i64 0}
!34 = !{!12, !13, i64 2464}
!35 = !{!7, !7, i64 0}
!36 = !{!17, !17, i64 0}
!37 = !{!12, !13, i64 2472}
!38 = !{!12, !13, i64 2480}
!39 = distinct !{!39, !40}
!40 = !{!"llvm.loop.mustprogress"}
!41 = !{!12, !13, i64 0}
!42 = !{!12, !10, i64 1577}
!43 = !{!12, !13, i64 2848}
!44 = !{!12, !17, i64 1592}
!45 = !{!12, !13, i64 3144}
!46 = !{!12, !13, i64 3152}
!47 = !{!12, !13, i64 3120}
!48 = !{!12, !13, i64 3128}
!49 = !{!12, !13, i64 3136}
!50 = distinct !{!50, !40}
!51 = !{!12, !10, i64 1578}
!52 = !{!12, !13, i64 3512}
!53 = !{!12, !13, i64 3520}
!54 = !{!12, !13, i64 3816}
!55 = !{!12, !13, i64 3824}
!56 = !{!12, !13, i64 3792}
!57 = !{!12, !13, i64 3800}
!58 = !{!12, !13, i64 3808}
!59 = distinct !{!59, !40}


; 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"

@.str.208 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.209 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.210 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.211 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.212 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.213 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.214 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.215 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.216 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.217 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.218 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.219 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.220 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.221 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.222 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.223 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.224 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.225 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.226 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.227 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.228 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.229 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.230 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.231 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.232 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.233 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.234 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.235 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.236 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.237 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.238 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.239 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.240 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.241 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.242 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.243 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.244 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.245 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.246 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.247 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.248 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.249 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.250 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.251 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.252 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.253 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.254 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.255 = external hidden unnamed_addr constant [61 x i8], align 1

declare void @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef, ...) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl28smoothnessmonitortracestatusEPKNS_17smoothnessmonitorEbPNS_8ae_stateE(ptr noundef %0, i1 noundef zeroext %1, ptr noundef %2) local_unnamed_addr #1 {
  %4 = getelementptr inbounds i8, ptr %0, i64 1552
  %5 = load i8, ptr %4, align 8, !tbaa !5, !range !22, !noundef !23
  %6 = trunc nuw i8 %5 to i1
  br i1 %6, label %15, label %7

7:                                                ; preds = %3
  %8 = getelementptr inbounds i8, ptr %0, i64 1576
  %9 = load i8, ptr %8, align 8, !tbaa !24, !range !22, !noundef !23
  %10 = trunc nuw i8 %9 to i1
  br i1 %10, label %15, label %11

11:                                               ; preds = %7
  %12 = getelementptr inbounds i8, ptr %0, i64 1600
  %13 = load i8, ptr %12, align 8, !tbaa !25, !range !22, !noundef !23
  %14 = trunc nuw i8 %13 to i1
  br label %15

15:                                               ; preds = %11, %7, %3
  %16 = phi i1 [ true, %7 ], [ true, %3 ], [ %14, %11 ]
  br i1 %1, label %.critedge189, label %17

17:                                               ; preds = %15
  %18 = tail call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef nonnull @.str.209)
  br i1 %18, label %.critedge189, label %.critedge

.critedge:                                        ; preds = %17
  %19 = tail call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef nonnull @.str.210)
  %20 = select i1 %19, i1 %16, i1 false
  br i1 %20, label %.critedge189, label %268

.critedge189:                                     ; preds = %.critedge, %15, %17
  %21 = tail call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef nonnull @.str.211)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.208)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.212)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.213)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.212)
  br i1 %16, label %22, label %.sink.split

22:                                               ; preds = %.critedge189
  %23 = load i8, ptr %4, align 8, !tbaa !5, !range !22, !noundef !23
  %24 = trunc nuw i8 %23 to i1
  br i1 %24, label %25, label %26

25:                                               ; preds = %22
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.215)
  br label %26

26:                                               ; preds = %25, %22
  %27 = getelementptr inbounds i8, ptr %0, i64 1576
  %28 = load i8, ptr %27, align 8, !tbaa !24, !range !22, !noundef !23
  %29 = trunc nuw i8 %28 to i1
  br i1 %29, label %30, label %31

30:                                               ; preds = %26
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.216)
  br label %31

31:                                               ; preds = %30, %26
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.217)
  %32 = load i8, ptr %4, align 8, !tbaa !5, !range !22, !noundef !23
  %33 = trunc nuw i8 %32 to i1
  br i1 %33, label %34, label %109

34:                                               ; preds = %31
  %35 = getelementptr inbounds i8, ptr %0, i64 1553
  %36 = load i8, ptr %35, align 1, !tbaa !26, !range !22, !noundef !23
  %37 = trunc nuw i8 %36 to i1
  br i1 %37, label %38, label %109

38:                                               ; preds = %34
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.218)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.219)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.220)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.221)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.222)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.223)
  %39 = getelementptr inbounds i8, ptr %0, i64 2192
  %40 = load i64, ptr %39, align 8, !tbaa !27
  %41 = trunc i64 %40 to i32
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.224, i32 noundef %41)
  %42 = load i64, ptr %39, align 8, !tbaa !27
  %43 = icmp eq i64 %42, 0
  %.str.225..str.226 = select i1 %43, ptr @.str.225, ptr @.str.226
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull %.str.225..str.226)
  %44 = getelementptr inbounds i8, ptr %0, i64 1568
  %45 = load double, ptr %44, align 8, !tbaa !28
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.227, double noundef %45)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.222)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.228)
  %46 = getelementptr inbounds i8, ptr %0, i64 2488
  %47 = load i64, ptr %46, align 8, !tbaa !29
  %48 = icmp sgt i64 %47, -1
  br i1 %48, label %49, label %51

49:                                               ; preds = %38
  %50 = trunc i64 %47 to i32
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.229, i32 noundef %50)
  br label %51

51:                                               ; preds = %49, %38
  %52 = getelementptr inbounds i8, ptr %0, i64 2496
  %53 = load i64, ptr %52, align 8, !tbaa !30
  %54 = icmp sgt i64 %53, -1
  br i1 %54, label %55, label %57

55:                                               ; preds = %51
  %56 = trunc i64 %53 to i32
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.230, i32 noundef %56)
  br label %57

57:                                               ; preds = %55, %51
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.222)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.231)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.232)
  br i1 %21, label %59, label %58

58:                                               ; preds = %57
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.233)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.234)
  br label %59

59:                                               ; preds = %58, %57
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.219)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.235)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.236)
  %60 = getelementptr inbounds i8, ptr %0, i64 2464
  %61 = load i64, ptr %60, align 8, !tbaa !31
  %.not.not190 = icmp sgt i64 %61, 0
  br i1 %.not.not190, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %59
  %62 = getelementptr inbounds i8, ptr %0, i64 2456
  %63 = getelementptr inbounds i8, ptr %0, i64 2392
  %64 = getelementptr inbounds i8, ptr %0, i64 2472
  %65 = getelementptr inbounds i8, ptr %0, i64 2480
  br label %66

66:                                               ; preds = %.lr.ph, %99
  %67 = phi i64 [ %61, %.lr.ph ], [ %100, %99 ]
  %.0191 = phi i64 [ 0, %.lr.ph ], [ %70, %99 ]
  %68 = add nsw i64 %67, -1
  %69 = load ptr, ptr %62, align 8, !tbaa !32
  %70 = add nuw nsw i64 %.0191, 1
  %71 = tail call noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef %70, i64 noundef %68, ptr noundef %2)
  %72 = getelementptr inbounds double, ptr %69, i64 %71
  %73 = load double, ptr %72, align 8, !tbaa !33
  %74 = load ptr, ptr %62, align 8, !tbaa !32
  %75 = getelementptr inbounds double, ptr %74, i64 %.0191
  %76 = load double, ptr %75, align 8, !tbaa !33
  %77 = fsub double %73, %76
  %78 = load ptr, ptr %63, align 8, !tbaa !32
  %79 = load i64, ptr %60, align 8, !tbaa !31
  %80 = add nsw i64 %79, -1
  %81 = tail call noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef %70, i64 noundef %80, ptr noundef %2)
  %82 = getelementptr inbounds double, ptr %78, i64 %81
  %83 = load double, ptr %82, align 8, !tbaa !33
  %84 = fadd double %83, 1.000000e-15
  %85 = load ptr, ptr %63, align 8, !tbaa !32
  %86 = getelementptr inbounds double, ptr %85, i64 %.0191
  %87 = load double, ptr %86, align 8, !tbaa !33
  %88 = fsub double %84, %87
  %89 = fdiv double %77, %88
  %90 = load ptr, ptr %62, align 8, !tbaa !32
  %91 = getelementptr inbounds double, ptr %90, i64 %.0191
  %92 = load double, ptr %91, align 8, !tbaa !33
  %93 = load double, ptr %90, align 8, !tbaa !33
  %94 = fsub double %92, %93
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.237, double noundef %87, double noundef %94, double noundef %89)
  %95 = load i64, ptr %64, align 8, !tbaa !34
  %.not187 = icmp slt i64 %.0191, %95
  br i1 %.not187, label %99, label %96

96:                                               ; preds = %66
  %97 = load i64, ptr %65, align 8, !tbaa !35
  %.not188 = icmp sgt i64 %.0191, %97
  br i1 %.not188, label %99, label %98

98:                                               ; preds = %96
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.238)
  br label %99

99:                                               ; preds = %98, %96, %66
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.208)
  %100 = load i64, ptr %60, align 8, !tbaa !31
  %.not.not = icmp slt i64 %70, %100
  br i1 %.not.not, label %66, label %._crit_edge, !llvm.loop !36

._crit_edge:                                      ; preds = %99, %59
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.236)
  br i1 %21, label %101, label %109

101:                                              ; preds = %._crit_edge
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.239)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.240)
  %102 = getelementptr inbounds i8, ptr %0, i64 2200
  %103 = load i64, ptr %0, align 8, !tbaa !38
  %104 = getelementptr inbounds i8, ptr %0, i64 24
  tail call void @_ZN11alglib_impl36tracevectorunscaledunshiftedautoprecEPKNS_9ae_vectorElS2_bS2_bPNS_8ae_stateE(ptr noundef nonnull %102, i64 noundef %103, ptr noundef nonnull %104, i1 noundef zeroext true, ptr noundef nonnull %104, i1 noundef zeroext false, ptr noundef %2)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.208)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.241)
  %105 = getelementptr inbounds i8, ptr %0, i64 2264
  %106 = load i64, ptr %0, align 8, !tbaa !38
  tail call void @_ZN11alglib_impl36tracevectorunscaledunshiftedautoprecEPKNS_9ae_vectorElS2_bS2_bPNS_8ae_stateE(ptr noundef nonnull %105, i64 noundef %106, ptr noundef nonnull %104, i1 noundef zeroext true, ptr noundef nonnull %104, i1 noundef zeroext false, ptr noundef %2)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.208)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.242)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.240)
  %107 = load i64, ptr %0, align 8, !tbaa !38
  tail call void @_ZN11alglib_impl19tracevectorautoprecEPKNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef nonnull %102, i64 noundef 0, i64 noundef %107, ptr noundef %2)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.208)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.241)
  %108 = load i64, ptr %0, align 8, !tbaa !38
  tail call void @_ZN11alglib_impl19tracevectorautoprecEPKNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef nonnull %105, i64 noundef 0, i64 noundef %108, ptr noundef %2)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.208)
  br label %109

109:                                              ; preds = %._crit_edge, %101, %34, %31
  %110 = load i8, ptr %27, align 8, !tbaa !24, !range !22, !noundef !23
  %111 = trunc nuw i8 %110 to i1
  br i1 %111, label %112, label %187

112:                                              ; preds = %109
  %113 = getelementptr inbounds i8, ptr %0, i64 1577
  %114 = load i8, ptr %113, align 1, !tbaa !39, !range !22, !noundef !23
  %115 = trunc nuw i8 %114 to i1
  br i1 %115, label %116, label %187

116:                                              ; preds = %112
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.243)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.219)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.244)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.245)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.246)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.222)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.223)
  %117 = getelementptr inbounds i8, ptr %0, i64 2848
  %118 = load i64, ptr %117, align 8, !tbaa !40
  %119 = trunc i64 %118 to i32
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.247, i32 noundef %119)
  %120 = load i64, ptr %117, align 8, !tbaa !40
  %121 = icmp eq i64 %120, 0
  %.str.248..str.249 = select i1 %121, ptr @.str.248, ptr @.str.249
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull %.str.248..str.249)
  %122 = getelementptr inbounds i8, ptr %0, i64 1592
  %123 = load double, ptr %122, align 8, !tbaa !41
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.250, double noundef %123)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.222)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.228)
  %124 = getelementptr inbounds i8, ptr %0, i64 3144
  %125 = load i64, ptr %124, align 8, !tbaa !42
  %126 = icmp sgt i64 %125, -1
  br i1 %126, label %127, label %129

127:                                              ; preds = %116
  %128 = trunc i64 %125 to i32
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.229, i32 noundef %128)
  br label %129

129:                                              ; preds = %127, %116
  %130 = getelementptr inbounds i8, ptr %0, i64 3152
  %131 = load i64, ptr %130, align 8, !tbaa !43
  %132 = icmp sgt i64 %131, -1
  br i1 %132, label %133, label %135

133:                                              ; preds = %129
  %134 = trunc i64 %131 to i32
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.230, i32 noundef %134)
  br label %135

135:                                              ; preds = %133, %129
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.222)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.231)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.232)
  br i1 %21, label %137, label %136

136:                                              ; preds = %135
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.233)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.234)
  br label %137

137:                                              ; preds = %136, %135
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.219)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.235)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.236)
  %138 = getelementptr inbounds i8, ptr %0, i64 3120
  %139 = load i64, ptr %138, align 8, !tbaa !44
  %.not.not182192 = icmp sgt i64 %139, 0
  br i1 %.not.not182192, label %.lr.ph195, label %._crit_edge196

.lr.ph195:                                        ; preds = %137
  %140 = getelementptr inbounds i8, ptr %0, i64 3112
  %141 = getelementptr inbounds i8, ptr %0, i64 3048
  %142 = getelementptr inbounds i8, ptr %0, i64 3128
  %143 = getelementptr inbounds i8, ptr %0, i64 3136
  br label %144

144:                                              ; preds = %.lr.ph195, %177
  %145 = phi i64 [ %139, %.lr.ph195 ], [ %178, %177 ]
  %.1193 = phi i64 [ 0, %.lr.ph195 ], [ %148, %177 ]
  %146 = add nsw i64 %145, -1
  %147 = load ptr, ptr %140, align 8, !tbaa !32
  %148 = add nuw nsw i64 %.1193, 1
  %149 = tail call noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef %148, i64 noundef %146, ptr noundef %2)
  %150 = getelementptr inbounds double, ptr %147, i64 %149
  %151 = load double, ptr %150, align 8, !tbaa !33
  %152 = load ptr, ptr %140, align 8, !tbaa !32
  %153 = getelementptr inbounds double, ptr %152, i64 %.1193
  %154 = load double, ptr %153, align 8, !tbaa !33
  %155 = fsub double %151, %154
  %156 = load ptr, ptr %141, align 8, !tbaa !32
  %157 = load i64, ptr %138, align 8, !tbaa !44
  %158 = add nsw i64 %157, -1
  %159 = tail call noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef %148, i64 noundef %158, ptr noundef %2)
  %160 = getelementptr inbounds double, ptr %156, i64 %159
  %161 = load double, ptr %160, align 8, !tbaa !33
  %162 = fadd double %161, 1.000000e-15
  %163 = load ptr, ptr %141, align 8, !tbaa !32
  %164 = getelementptr inbounds double, ptr %163, i64 %.1193
  %165 = load double, ptr %164, align 8, !tbaa !33
  %166 = fsub double %162, %165
  %167 = fdiv double %155, %166
  %168 = load ptr, ptr %140, align 8, !tbaa !32
  %169 = getelementptr inbounds double, ptr %168, i64 %.1193
  %170 = load double, ptr %169, align 8, !tbaa !33
  %171 = load double, ptr %168, align 8, !tbaa !33
  %172 = fsub double %170, %171
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.237, double noundef %165, double noundef %172, double noundef %167)
  %173 = load i64, ptr %142, align 8, !tbaa !45
  %.not185 = icmp slt i64 %.1193, %173
  br i1 %.not185, label %177, label %174

174:                                              ; preds = %144
  %175 = load i64, ptr %143, align 8, !tbaa !46
  %.not186 = icmp sgt i64 %.1193, %175
  br i1 %.not186, label %177, label %176

176:                                              ; preds = %174
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.238)
  br label %177

177:                                              ; preds = %176, %174, %144
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.208)
  %178 = load i64, ptr %138, align 8, !tbaa !44
  %.not.not182 = icmp slt i64 %148, %178
  br i1 %.not.not182, label %144, label %._crit_edge196, !llvm.loop !47

._crit_edge196:                                   ; preds = %177, %137
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.236)
  br i1 %21, label %179, label %187

179:                                              ; preds = %._crit_edge196
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.239)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.240)
  %180 = getelementptr inbounds i8, ptr %0, i64 2856
  %181 = load i64, ptr %0, align 8, !tbaa !38
  %182 = getelementptr inbounds i8, ptr %0, i64 24
  tail call void @_ZN11alglib_impl36tracevectorunscaledunshiftedautoprecEPKNS_9ae_vectorElS2_bS2_bPNS_8ae_stateE(ptr noundef nonnull %180, i64 noundef %181, ptr noundef nonnull %182, i1 noundef zeroext true, ptr noundef nonnull %182, i1 noundef zeroext false, ptr noundef %2)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.208)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.241)
  %183 = getelementptr inbounds i8, ptr %0, i64 2920
  %184 = load i64, ptr %0, align 8, !tbaa !38
  tail call void @_ZN11alglib_impl36tracevectorunscaledunshiftedautoprecEPKNS_9ae_vectorElS2_bS2_bPNS_8ae_stateE(ptr noundef nonnull %183, i64 noundef %184, ptr noundef nonnull %182, i1 noundef zeroext true, ptr noundef nonnull %182, i1 noundef zeroext false, ptr noundef %2)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.208)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.242)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.240)
  %185 = load i64, ptr %0, align 8, !tbaa !38
  tail call void @_ZN11alglib_impl19tracevectorautoprecEPKNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef nonnull %180, i64 noundef 0, i64 noundef %185, ptr noundef %2)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.208)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.241)
  %186 = load i64, ptr %0, align 8, !tbaa !38
  tail call void @_ZN11alglib_impl19tracevectorautoprecEPKNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef nonnull %183, i64 noundef 0, i64 noundef %186, ptr noundef %2)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.208)
  br label %187

187:                                              ; preds = %._crit_edge196, %179, %112, %109
  %188 = load i8, ptr %27, align 8, !tbaa !24, !range !22, !noundef !23
  %189 = trunc nuw i8 %188 to i1
  br i1 %189, label %190, label %268

190:                                              ; preds = %187
  %191 = getelementptr inbounds i8, ptr %0, i64 1578
  %192 = load i8, ptr %191, align 2, !tbaa !48, !range !22, !noundef !23
  %193 = trunc nuw i8 %192 to i1
  br i1 %193, label %194, label %268

194:                                              ; preds = %190
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.251)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.219)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.252)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.253)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.222)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.223)
  %195 = getelementptr inbounds i8, ptr %0, i64 3512
  %196 = load i64, ptr %195, align 8, !tbaa !49
  %197 = trunc i64 %196 to i32
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.247, i32 noundef %197)
  %198 = load i64, ptr %195, align 8, !tbaa !49
  %199 = icmp eq i64 %198, 0
  %.str.248..str.249203 = select i1 %199, ptr @.str.248, ptr @.str.249
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull %.str.248..str.249203)
  %200 = getelementptr inbounds i8, ptr %0, i64 3520
  %201 = load i64, ptr %200, align 8, !tbaa !50
  %202 = trunc i64 %201 to i32
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.254, i32 noundef %202)
  %203 = getelementptr inbounds i8, ptr %0, i64 1592
  %204 = load double, ptr %203, align 8, !tbaa !41
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.250, double noundef %204)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.222)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.228)
  %205 = getelementptr inbounds i8, ptr %0, i64 3816
  %206 = load i64, ptr %205, align 8, !tbaa !51
  %207 = icmp sgt i64 %206, -1
  br i1 %207, label %208, label %210

208:                                              ; preds = %194
  %209 = trunc i64 %206 to i32
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.229, i32 noundef %209)
  br label %210

210:                                              ; preds = %208, %194
  %211 = getelementptr inbounds i8, ptr %0, i64 3824
  %212 = load i64, ptr %211, align 8, !tbaa !52
  %213 = icmp sgt i64 %212, -1
  br i1 %213, label %214, label %216

214:                                              ; preds = %210
  %215 = trunc i64 %212 to i32
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.230, i32 noundef %215)
  br label %216

216:                                              ; preds = %214, %210
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.222)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.231)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.232)
  br i1 %21, label %218, label %217

217:                                              ; preds = %216
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.233)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.234)
  br label %218

218:                                              ; preds = %217, %216
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.219)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.255)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.236)
  %219 = getelementptr inbounds i8, ptr %0, i64 3792
  %220 = load i64, ptr %219, align 8, !tbaa !53
  %.not.not183197 = icmp sgt i64 %220, 0
  br i1 %.not.not183197, label %.lr.ph200, label %._crit_edge201

.lr.ph200:                                        ; preds = %218
  %221 = getelementptr inbounds i8, ptr %0, i64 3784
  %222 = getelementptr inbounds i8, ptr %0, i64 3720
  %223 = getelementptr inbounds i8, ptr %0, i64 3800
  %224 = getelementptr inbounds i8, ptr %0, i64 3808
  br label %225

225:                                              ; preds = %.lr.ph200, %258
  %226 = phi i64 [ %220, %.lr.ph200 ], [ %259, %258 ]
  %.2198 = phi i64 [ 0, %.lr.ph200 ], [ %229, %258 ]
  %227 = add nsw i64 %226, -1
  %228 = load ptr, ptr %221, align 8, !tbaa !32
  %229 = add nuw nsw i64 %.2198, 1
  %230 = tail call noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef %229, i64 noundef %227, ptr noundef %2)
  %231 = getelementptr inbounds double, ptr %228, i64 %230
  %232 = load double, ptr %231, align 8, !tbaa !33
  %233 = load ptr, ptr %221, align 8, !tbaa !32
  %234 = getelementptr inbounds double, ptr %233, i64 %.2198
  %235 = load double, ptr %234, align 8, !tbaa !33
  %236 = fsub double %232, %235
  %237 = load ptr, ptr %222, align 8, !tbaa !32
  %238 = load i64, ptr %219, align 8, !tbaa !53
  %239 = add nsw i64 %238, -1
  %240 = tail call noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef %229, i64 noundef %239, ptr noundef %2)
  %241 = getelementptr inbounds double, ptr %237, i64 %240
  %242 = load double, ptr %241, align 8, !tbaa !33
  %243 = fadd double %242, 1.000000e-15
  %244 = load ptr, ptr %222, align 8, !tbaa !32
  %245 = getelementptr inbounds double, ptr %244, i64 %.2198
  %246 = load double, ptr %245, align 8, !tbaa !33
  %247 = fsub double %243, %246
  %248 = fdiv double %236, %247
  %249 = load ptr, ptr %221, align 8, !tbaa !32
  %250 = getelementptr inbounds double, ptr %249, i64 %.2198
  %251 = load double, ptr %250, align 8, !tbaa !33
  %252 = load double, ptr %249, align 8, !tbaa !33
  %253 = fsub double %251, %252
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.237, double noundef %246, double noundef %253, double noundef %248)
  %254 = load i64, ptr %223, align 8, !tbaa !54
  %.not = icmp slt i64 %.2198, %254
  br i1 %.not, label %258, label %255

255:                                              ; preds = %225
  %256 = load i64, ptr %224, align 8, !tbaa !55
  %.not184 = icmp sgt i64 %.2198, %256
  br i1 %.not184, label %258, label %257

257:                                              ; preds = %255
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.238)
  br label %258

258:                                              ; preds = %257, %255, %225
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.208)
  %259 = load i64, ptr %219, align 8, !tbaa !53
  %.not.not183 = icmp slt i64 %229, %259
  br i1 %.not.not183, label %225, label %._crit_edge201, !llvm.loop !56

._crit_edge201:                                   ; preds = %258, %218
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.236)
  br i1 %21, label %260, label %268

260:                                              ; preds = %._crit_edge201
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.239)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.240)
  %261 = getelementptr inbounds i8, ptr %0, i64 3528
  %262 = load i64, ptr %0, align 8, !tbaa !38
  %263 = getelementptr inbounds i8, ptr %0, i64 24
  tail call void @_ZN11alglib_impl36tracevectorunscaledunshiftedautoprecEPKNS_9ae_vectorElS2_bS2_bPNS_8ae_stateE(ptr noundef nonnull %261, i64 noundef %262, ptr noundef nonnull %263, i1 noundef zeroext true, ptr noundef nonnull %263, i1 noundef zeroext false, ptr noundef %2)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.208)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.241)
  %264 = getelementptr inbounds i8, ptr %0, i64 3592
  %265 = load i64, ptr %0, align 8, !tbaa !38
  tail call void @_ZN11alglib_impl36tracevectorunscaledunshiftedautoprecEPKNS_9ae_vectorElS2_bS2_bPNS_8ae_stateE(ptr noundef nonnull %264, i64 noundef %265, ptr noundef nonnull %263, i1 noundef zeroext true, ptr noundef nonnull %263, i1 noundef zeroext false, ptr noundef %2)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.208)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.242)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.240)
  %266 = load i64, ptr %0, align 8, !tbaa !38
  tail call void @_ZN11alglib_impl19tracevectorautoprecEPKNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef nonnull %261, i64 noundef 0, i64 noundef %266, ptr noundef %2)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.208)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.241)
  %267 = load i64, ptr %0, align 8, !tbaa !38
  tail call void @_ZN11alglib_impl19tracevectorautoprecEPKNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef nonnull %264, i64 noundef 0, i64 noundef %267, ptr noundef %2)
  br label %.sink.split

.sink.split:                                      ; preds = %.critedge189, %260
  %.str.208.sink = phi ptr [ @.str.208, %260 ], [ @.str.214, %.critedge189 ]
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull %.str.208.sink)
  br label %268

268:                                              ; preds = %.sink.split, %187, %190, %._crit_edge201, %.critedge
  ret void
}

declare noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef) local_unnamed_addr #0

declare noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #0

declare void @_ZN11alglib_impl36tracevectorunscaledunshiftedautoprecEPKNS_9ae_vectorElS2_bS2_bPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef, i1 noundef zeroext, ptr noundef, i1 noundef zeroext, ptr noundef) local_unnamed_addr #0

declare void @_ZN11alglib_impl19tracevectorautoprecEPKNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #0

attributes #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 #1 = { 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" }

!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, !10, i64 1552}
!6 = !{!"_ZTSN11alglib_impl17smoothnessmonitorE", !7, i64 0, !7, i64 8, !10, i64 16, !11, i64 24, !11, i64 88, !7, i64 152, !11, i64 160, !11, i64 224, !11, i64 288, !14, i64 352, !11, i64 432, !11, i64 496, !7, i64 560, !7, i64 568, !7, i64 576, !15, i64 584, !7, i64 592, !11, i64 600, !11, i64 664, !15, i64 728, !11, i64 736, !11, i64 800, !15, i64 864, !14, i64 872, !14, i64 952, !14, i64 1032, !11, i64 1112, !11, i64 1176, !16, i64 1240, !10, i64 1504, !10, i64 1505, !7, i64 1512, !7, i64 1520, !15, i64 1528, !15, i64 1536, !10, i64 1544, !18, i64 1552, !15, i64 1848, !15, i64 1856, !19, i64 1864, !19, i64 2184, !15, i64 2504, !15, i64 2512, !20, i64 2520, !20, i64 2840, !15, i64 3160, !15, i64 3168, !21, i64 3176, !21, i64 3504, !10, i64 3832, !11, i64 3840, !11, i64 3904, !14, i64 3968, !16, i64 4048, !11, i64 4312, !11, i64 4376, !11, i64 4440, !11, i64 4504, !11, i64 4568, !11, i64 4632, !11, i64 4696, !11, i64 4760, !14, i64 4824, !14, i64 4904, !11, i64 4984, !11, i64 5048, !11, i64 5112, !11, i64 5176, !11, i64 5240, !11, i64 5304, !11, i64 5368, !11, i64 5432, !11, i64 5496, !11, i64 5560, !14, i64 5624}
!7 = !{!"long", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"bool", !8, i64 0}
!11 = !{!"_ZTSN11alglib_impl9ae_vectorE", !7, i64 0, !7, i64 8, !10, i64 16, !12, i64 24, !8, i64 56}
!12 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24}
!13 = !{!"any pointer", !8, i64 0}
!14 = !{!"_ZTSN11alglib_impl9ae_matrixE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !10, i64 32, !12, i64 40, !8, i64 72}
!15 = !{!"double", !8, i64 0}
!16 = !{!"_ZTSN11alglib_impl10rcommstateE", !17, i64 0, !11, i64 8, !11, i64 72, !11, i64 136, !11, i64 200}
!17 = !{!"int", !8, i64 0}
!18 = !{!"_ZTSN11alglib_impl14optguardreportE", !10, i64 0, !10, i64 1, !7, i64 8, !15, i64 16, !10, i64 24, !10, i64 25, !10, i64 26, !7, i64 32, !15, i64 40, !10, i64 48, !7, i64 56, !7, i64 64, !11, i64 72, !14, i64 136, !14, i64 216}
!19 = !{!"_ZTSN11alglib_impl19optguardnonc0reportE", !10, i64 0, !7, i64 8, !11, i64 16, !11, i64 80, !7, i64 144, !11, i64 152, !11, i64 216, !7, i64 280, !7, i64 288, !7, i64 296, !7, i64 304, !7, i64 312}
!20 = !{!"_ZTSN11alglib_impl24optguardnonc1test0reportE", !10, i64 0, !7, i64 8, !11, i64 16, !11, i64 80, !7, i64 144, !11, i64 152, !11, i64 216, !7, i64 280, !7, i64 288, !7, i64 296, !7, i64 304, !7, i64 312}
!21 = !{!"_ZTSN11alglib_impl24optguardnonc1test1reportE", !10, i64 0, !7, i64 8, !7, i64 16, !11, i64 24, !11, i64 88, !7, i64 152, !11, i64 160, !11, i64 224, !7, i64 288, !7, i64 296, !7, i64 304, !7, i64 312, !7, i64 320}
!22 = !{i8 0, i8 2}
!23 = !{}
!24 = !{!6, !10, i64 1576}
!25 = !{!6, !10, i64 1600}
!26 = !{!6, !10, i64 1553}
!27 = !{!6, !7, i64 2192}
!28 = !{!6, !15, i64 1568}
!29 = !{!6, !7, i64 2488}
!30 = !{!6, !7, i64 2496}
!31 = !{!6, !7, i64 2464}
!32 = !{!8, !8, i64 0}
!33 = !{!15, !15, i64 0}
!34 = !{!6, !7, i64 2472}
!35 = !{!6, !7, i64 2480}
!36 = distinct !{!36, !37}
!37 = !{!"llvm.loop.mustprogress"}
!38 = !{!6, !7, i64 0}
!39 = !{!6, !10, i64 1577}
!40 = !{!6, !7, i64 2848}
!41 = !{!6, !15, i64 1592}
!42 = !{!6, !7, i64 3144}
!43 = !{!6, !7, i64 3152}
!44 = !{!6, !7, i64 3120}
!45 = !{!6, !7, i64 3128}
!46 = !{!6, !7, i64 3136}
!47 = distinct !{!47, !37}
!48 = !{!6, !10, i64 1578}
!49 = !{!6, !7, i64 3512}
!50 = !{!6, !7, i64 3520}
!51 = !{!6, !7, i64 3816}
!52 = !{!6, !7, i64 3824}
!53 = !{!6, !7, i64 3792}
!54 = !{!6, !7, i64 3800}
!55 = !{!6, !7, i64 3808}
!56 = distinct !{!56, !37}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SROAPass,SimplifyCFGPass,TailCallElimPass