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

@_ZN11alglib_implL21optserv_ognoiselevelfE = external hidden global double, align 8
@_ZN11alglib_implL20optserv_ogminrating0E = external hidden global double, align 8

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

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

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

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

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

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

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

declare noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef, ptr noundef) #2

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

declare void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef, ptr noundef) #2

declare noundef i64 @_ZN11alglib_impl7ae_signEdPNS_8ae_stateE(double noundef, ptr noundef) #2

declare void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) #2

declare void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) #2

declare void @_ZN11alglib_impl17rmatrixgrowrowstoEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef) #2

declare void @_ZN11alglib_impl13ivectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) #2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl29smoothnessmonitorenqueuepointEPNS_17smoothnessmonitorEPKNS_9ae_vectorEdS4_S4_PKNS_9ae_matrixEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1, double noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6) #3 {
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca double, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca double, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i8, align 1
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca double, align 8
  %36 = alloca double, align 8
  %37 = alloca double, align 8
  %38 = alloca i32, align 4
  store ptr %0, ptr %8, align 8, !tbaa !5
  store ptr %1, ptr %9, align 8, !tbaa !5
  store double %2, ptr %10, align 8, !tbaa !9
  store ptr %3, ptr %11, align 8, !tbaa !5
  store ptr %4, ptr %12, align 8, !tbaa !5
  store ptr %5, ptr %13, align 8, !tbaa !5
  store ptr %6, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #4
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #4
  %39 = load ptr, ptr %8, align 8, !tbaa !5
  %40 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %39, i32 0, i32 0
  %41 = load i64, ptr %40, align 8, !tbaa !11
  store i64 %41, ptr %15, align 8, !tbaa !24
  %42 = load ptr, ptr %8, align 8, !tbaa !5
  %43 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %42, i32 0, i32 1
  %44 = load i64, ptr %43, align 8, !tbaa !25
  store i64 %44, ptr %16, align 8, !tbaa !24
  %45 = load ptr, ptr %8, align 8, !tbaa !5
  %46 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %45, i32 0, i32 2
  %47 = load i8, ptr %46, align 8, !tbaa !26, !range !27, !noundef !28
  %48 = trunc i8 %47 to i1
  br i1 %48, label %49, label %59

49:                                               ; preds = %7
  %50 = load ptr, ptr %8, align 8, !tbaa !5
  %51 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %50, i32 0, i32 29
  %52 = load i8, ptr %51, align 8, !tbaa !29, !range !27, !noundef !28
  %53 = trunc i8 %52 to i1
  br i1 %53, label %59, label %54

54:                                               ; preds = %49
  %55 = load ptr, ptr %8, align 8, !tbaa !5
  %56 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %55, i32 0, i32 30
  %57 = load i8, ptr %56, align 1, !tbaa !30, !range !27, !noundef !28
  %58 = trunc i8 %57 to i1
  br i1 %58, label %60, label %59

59:                                               ; preds = %54, %49, %7
  store i32 1, ptr %38, align 4
  br label %1322

60:                                               ; preds = %54
  %61 = load double, ptr %10, align 8, !tbaa !9
  store double %61, ptr %19, align 8, !tbaa !9
  store i64 0, ptr %17, align 8, !tbaa !24
  br label %62

62:                                               ; preds = %76, %60
  %63 = load i64, ptr %17, align 8, !tbaa !24
  %64 = load i64, ptr %15, align 8, !tbaa !24
  %65 = sub nsw i64 %64, 1
  %66 = icmp sle i64 %63, %65
  br i1 %66, label %67, label %79

67:                                               ; preds = %62
  %68 = load double, ptr %19, align 8, !tbaa !9
  %69 = load ptr, ptr %11, align 8, !tbaa !5
  %70 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %69, i32 0, i32 4
  %71 = load ptr, ptr %70, align 8, !tbaa !31
  %72 = load i64, ptr %17, align 8, !tbaa !24
  %73 = getelementptr inbounds double, ptr %71, i64 %72
  %74 = load double, ptr %73, align 8, !tbaa !9
  %75 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %68, double %74)
  store double %75, ptr %19, align 8, !tbaa !9
  br label %76

76:                                               ; preds = %67
  %77 = load i64, ptr %17, align 8, !tbaa !24
  %78 = add nsw i64 %77, 1
  store i64 %78, ptr %17, align 8, !tbaa !24
  br label %62, !llvm.loop !32

79:                                               ; preds = %62
  store i64 0, ptr %17, align 8, !tbaa !24
  br label %80

80:                                               ; preds = %94, %79
  %81 = load i64, ptr %17, align 8, !tbaa !24
  %82 = load i64, ptr %15, align 8, !tbaa !24
  %83 = sub nsw i64 %82, 1
  %84 = icmp sle i64 %81, %83
  br i1 %84, label %85, label %97

85:                                               ; preds = %80
  %86 = load double, ptr %19, align 8, !tbaa !9
  %87 = load ptr, ptr %9, align 8, !tbaa !5
  %88 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %87, i32 0, i32 4
  %89 = load ptr, ptr %88, align 8, !tbaa !31
  %90 = load i64, ptr %17, align 8, !tbaa !24
  %91 = getelementptr inbounds double, ptr %89, i64 %90
  %92 = load double, ptr %91, align 8, !tbaa !9
  %93 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %86, double %92)
  store double %93, ptr %19, align 8, !tbaa !9
  br label %94

94:                                               ; preds = %85
  %95 = load i64, ptr %17, align 8, !tbaa !24
  %96 = add nsw i64 %95, 1
  store i64 %96, ptr %17, align 8, !tbaa !24
  br label %80, !llvm.loop !34

97:                                               ; preds = %80
  store i64 0, ptr %17, align 8, !tbaa !24
  br label %98

98:                                               ; preds = %112, %97
  %99 = load i64, ptr %17, align 8, !tbaa !24
  %100 = load i64, ptr %16, align 8, !tbaa !24
  %101 = sub nsw i64 %100, 1
  %102 = icmp sle i64 %99, %101
  br i1 %102, label %103, label %115

103:                                              ; preds = %98
  %104 = load double, ptr %19, align 8, !tbaa !9
  %105 = load ptr, ptr %12, align 8, !tbaa !5
  %106 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %105, i32 0, i32 4
  %107 = load ptr, ptr %106, align 8, !tbaa !31
  %108 = load i64, ptr %17, align 8, !tbaa !24
  %109 = getelementptr inbounds double, ptr %107, i64 %108
  %110 = load double, ptr %109, align 8, !tbaa !9
  %111 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %104, double %110)
  store double %111, ptr %19, align 8, !tbaa !9
  br label %112

112:                                              ; preds = %103
  %113 = load i64, ptr %17, align 8, !tbaa !24
  %114 = add nsw i64 %113, 1
  store i64 %114, ptr %17, align 8, !tbaa !24
  br label %98, !llvm.loop !35

115:                                              ; preds = %98
  store i64 0, ptr %17, align 8, !tbaa !24
  br label %116

116:                                              ; preds = %143, %115
  %117 = load i64, ptr %17, align 8, !tbaa !24
  %118 = load i64, ptr %16, align 8, !tbaa !24
  %119 = sub nsw i64 %118, 1
  %120 = icmp sle i64 %117, %119
  br i1 %120, label %121, label %146

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

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

127:                                              ; preds = %122
  %128 = load double, ptr %19, align 8, !tbaa !9
  %129 = load ptr, ptr %13, align 8, !tbaa !5
  %130 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %129, i32 0, i32 6
  %131 = load ptr, ptr %130, align 8, !tbaa !31
  %132 = load i64, ptr %17, align 8, !tbaa !24
  %133 = getelementptr inbounds ptr, ptr %131, i64 %132
  %134 = load ptr, ptr %133, align 8, !tbaa !5
  %135 = load i64, ptr %18, align 8, !tbaa !24
  %136 = getelementptr inbounds double, ptr %134, i64 %135
  %137 = load double, ptr %136, align 8, !tbaa !9
  %138 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %128, double %137)
  store double %138, ptr %19, align 8, !tbaa !9
  br label %139

139:                                              ; preds = %127
  %140 = load i64, ptr %18, align 8, !tbaa !24
  %141 = add nsw i64 %140, 1
  store i64 %141, ptr %18, align 8, !tbaa !24
  br label %122, !llvm.loop !36

142:                                              ; preds = %122
  br label %143

143:                                              ; preds = %142
  %144 = load i64, ptr %17, align 8, !tbaa !24
  %145 = add nsw i64 %144, 1
  store i64 %145, ptr %17, align 8, !tbaa !24
  br label %116, !llvm.loop !37

146:                                              ; preds = %116
  %147 = load double, ptr %19, align 8, !tbaa !9
  %148 = load ptr, ptr %14, align 8, !tbaa !5
  %149 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %147, ptr noundef %148)
  br i1 %149, label %153, label %150

150:                                              ; preds = %146
  %151 = load ptr, ptr %8, align 8, !tbaa !5
  %152 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %151, i32 0, i32 29
  store i8 1, ptr %152, align 8, !tbaa !29
  store i32 1, ptr %38, align 4
  br label %1322

153:                                              ; preds = %146
  %154 = load ptr, ptr %8, align 8, !tbaa !5
  %155 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %154, i32 0, i32 5
  %156 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %155, ptr noundef %156)
  %157 = load ptr, ptr %8, align 8, !tbaa !5
  %158 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %157, i32 0, i32 5
  %159 = load i64, ptr %158, align 8, !tbaa !38
  store i64 %159, ptr %20, align 8, !tbaa !24
  %160 = load ptr, ptr %8, align 8, !tbaa !5
  %161 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %160, i32 0, i32 4
  %162 = load i64, ptr %15, align 8, !tbaa !24
  %163 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %161, i64 noundef %162, ptr noundef %163)
  %164 = load ptr, ptr %8, align 8, !tbaa !5
  %165 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %164, i32 0, i32 6
  %166 = load i64, ptr %20, align 8, !tbaa !24
  %167 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %165, i64 noundef %166, ptr noundef %167)
  %168 = load ptr, ptr %8, align 8, !tbaa !5
  %169 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %168, i32 0, i32 7
  %170 = load i64, ptr %20, align 8, !tbaa !24
  %171 = load i64, ptr %15, align 8, !tbaa !24
  %172 = mul nsw i64 %170, %171
  %173 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %169, i64 noundef %172, ptr noundef %173)
  %174 = load ptr, ptr %8, align 8, !tbaa !5
  %175 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %174, i32 0, i32 8
  %176 = load i64, ptr %20, align 8, !tbaa !24
  %177 = load i64, ptr %16, align 8, !tbaa !24
  %178 = mul nsw i64 %176, %177
  %179 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %175, i64 noundef %178, ptr noundef %179)
  %180 = load ptr, ptr %8, align 8, !tbaa !5
  %181 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %180, i32 0, i32 9
  %182 = load i64, ptr %20, align 8, !tbaa !24
  %183 = load i64, ptr %16, align 8, !tbaa !24
  %184 = mul nsw i64 %182, %183
  %185 = load i64, ptr %15, align 8, !tbaa !24
  %186 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl17rmatrixgrowrowstoEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %181, i64 noundef %184, i64 noundef %185, ptr noundef %186)
  %187 = load double, ptr %10, align 8, !tbaa !9
  %188 = load ptr, ptr %8, align 8, !tbaa !5
  %189 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %188, i32 0, i32 6
  %190 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %189, i32 0, i32 4
  %191 = load ptr, ptr %190, align 8, !tbaa !31
  %192 = load i64, ptr %20, align 8, !tbaa !24
  %193 = sub nsw i64 %192, 1
  %194 = getelementptr inbounds double, ptr %191, i64 %193
  store double %187, ptr %194, align 8, !tbaa !9
  store i64 0, ptr %18, align 8, !tbaa !24
  br label %195

195:                                              ; preds = %213, %153
  %196 = load i64, ptr %18, align 8, !tbaa !24
  %197 = load i64, ptr %15, align 8, !tbaa !24
  %198 = sub nsw i64 %197, 1
  %199 = icmp sle i64 %196, %198
  br i1 %199, label %200, label %216

200:                                              ; preds = %195
  %201 = load ptr, ptr %9, align 8, !tbaa !5
  %202 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %201, i32 0, i32 4
  %203 = load ptr, ptr %202, align 8, !tbaa !31
  %204 = load i64, ptr %18, align 8, !tbaa !24
  %205 = getelementptr inbounds double, ptr %203, i64 %204
  %206 = load double, ptr %205, align 8, !tbaa !9
  %207 = load ptr, ptr %8, align 8, !tbaa !5
  %208 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %207, i32 0, i32 4
  %209 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %208, i32 0, i32 4
  %210 = load ptr, ptr %209, align 8, !tbaa !31
  %211 = load i64, ptr %18, align 8, !tbaa !24
  %212 = getelementptr inbounds double, ptr %210, i64 %211
  store double %206, ptr %212, align 8, !tbaa !9
  br label %213

213:                                              ; preds = %200
  %214 = load i64, ptr %18, align 8, !tbaa !24
  %215 = add nsw i64 %214, 1
  store i64 %215, ptr %18, align 8, !tbaa !24
  br label %195, !llvm.loop !39

216:                                              ; preds = %195
  store i64 0, ptr %18, align 8, !tbaa !24
  br label %217

217:                                              ; preds = %240, %216
  %218 = load i64, ptr %18, align 8, !tbaa !24
  %219 = load i64, ptr %15, align 8, !tbaa !24
  %220 = sub nsw i64 %219, 1
  %221 = icmp sle i64 %218, %220
  br i1 %221, label %222, label %243

222:                                              ; preds = %217
  %223 = load ptr, ptr %11, align 8, !tbaa !5
  %224 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %223, i32 0, i32 4
  %225 = load ptr, ptr %224, align 8, !tbaa !31
  %226 = load i64, ptr %18, align 8, !tbaa !24
  %227 = getelementptr inbounds double, ptr %225, i64 %226
  %228 = load double, ptr %227, align 8, !tbaa !9
  %229 = load ptr, ptr %8, align 8, !tbaa !5
  %230 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %229, i32 0, i32 7
  %231 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %230, i32 0, i32 4
  %232 = load ptr, ptr %231, align 8, !tbaa !31
  %233 = load i64, ptr %20, align 8, !tbaa !24
  %234 = sub nsw i64 %233, 1
  %235 = load i64, ptr %15, align 8, !tbaa !24
  %236 = mul nsw i64 %234, %235
  %237 = load i64, ptr %18, align 8, !tbaa !24
  %238 = add nsw i64 %236, %237
  %239 = getelementptr inbounds double, ptr %232, i64 %238
  store double %228, ptr %239, align 8, !tbaa !9
  br label %240

240:                                              ; preds = %222
  %241 = load i64, ptr %18, align 8, !tbaa !24
  %242 = add nsw i64 %241, 1
  store i64 %242, ptr %18, align 8, !tbaa !24
  br label %217, !llvm.loop !40

243:                                              ; preds = %217
  store i64 0, ptr %17, align 8, !tbaa !24
  br label %244

244:                                              ; preds = %267, %243
  %245 = load i64, ptr %17, align 8, !tbaa !24
  %246 = load i64, ptr %16, align 8, !tbaa !24
  %247 = sub nsw i64 %246, 1
  %248 = icmp sle i64 %245, %247
  br i1 %248, label %249, label %270

249:                                              ; preds = %244
  %250 = load ptr, ptr %12, align 8, !tbaa !5
  %251 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %250, i32 0, i32 4
  %252 = load ptr, ptr %251, align 8, !tbaa !31
  %253 = load i64, ptr %17, align 8, !tbaa !24
  %254 = getelementptr inbounds double, ptr %252, i64 %253
  %255 = load double, ptr %254, align 8, !tbaa !9
  %256 = load ptr, ptr %8, align 8, !tbaa !5
  %257 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %256, i32 0, i32 8
  %258 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %257, i32 0, i32 4
  %259 = load ptr, ptr %258, align 8, !tbaa !31
  %260 = load i64, ptr %20, align 8, !tbaa !24
  %261 = sub nsw i64 %260, 1
  %262 = load i64, ptr %16, align 8, !tbaa !24
  %263 = mul nsw i64 %261, %262
  %264 = load i64, ptr %17, align 8, !tbaa !24
  %265 = add nsw i64 %263, %264
  %266 = getelementptr inbounds double, ptr %259, i64 %265
  store double %255, ptr %266, align 8, !tbaa !9
  br label %267

267:                                              ; preds = %249
  %268 = load i64, ptr %17, align 8, !tbaa !24
  %269 = add nsw i64 %268, 1
  store i64 %269, ptr %17, align 8, !tbaa !24
  br label %244, !llvm.loop !41

270:                                              ; preds = %244
  store i64 0, ptr %17, align 8, !tbaa !24
  br label %271

271:                                              ; preds = %310, %270
  %272 = load i64, ptr %17, align 8, !tbaa !24
  %273 = load i64, ptr %16, align 8, !tbaa !24
  %274 = sub nsw i64 %273, 1
  %275 = icmp sle i64 %272, %274
  br i1 %275, label %276, label %313

276:                                              ; preds = %271
  store i64 0, ptr %18, align 8, !tbaa !24
  br label %277

277:                                              ; preds = %306, %276
  %278 = load i64, ptr %18, align 8, !tbaa !24
  %279 = load i64, ptr %15, align 8, !tbaa !24
  %280 = sub nsw i64 %279, 1
  %281 = icmp sle i64 %278, %280
  br i1 %281, label %282, label %309

282:                                              ; preds = %277
  %283 = load ptr, ptr %13, align 8, !tbaa !5
  %284 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %283, i32 0, i32 6
  %285 = load ptr, ptr %284, align 8, !tbaa !31
  %286 = load i64, ptr %17, align 8, !tbaa !24
  %287 = getelementptr inbounds ptr, ptr %285, i64 %286
  %288 = load ptr, ptr %287, align 8, !tbaa !5
  %289 = load i64, ptr %18, align 8, !tbaa !24
  %290 = getelementptr inbounds double, ptr %288, i64 %289
  %291 = load double, ptr %290, align 8, !tbaa !9
  %292 = load ptr, ptr %8, align 8, !tbaa !5
  %293 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %292, i32 0, i32 9
  %294 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %293, i32 0, i32 6
  %295 = load ptr, ptr %294, align 8, !tbaa !31
  %296 = load i64, ptr %20, align 8, !tbaa !24
  %297 = sub nsw i64 %296, 1
  %298 = load i64, ptr %16, align 8, !tbaa !24
  %299 = mul nsw i64 %297, %298
  %300 = load i64, ptr %17, align 8, !tbaa !24
  %301 = add nsw i64 %299, %300
  %302 = getelementptr inbounds ptr, ptr %295, i64 %301
  %303 = load ptr, ptr %302, align 8, !tbaa !5
  %304 = load i64, ptr %18, align 8, !tbaa !24
  %305 = getelementptr inbounds double, ptr %303, i64 %304
  store double %291, ptr %305, align 8, !tbaa !9
  br label %306

306:                                              ; preds = %282
  %307 = load i64, ptr %18, align 8, !tbaa !24
  %308 = add nsw i64 %307, 1
  store i64 %308, ptr %18, align 8, !tbaa !24
  br label %277, !llvm.loop !42

309:                                              ; preds = %277
  br label %310

310:                                              ; preds = %309
  %311 = load i64, ptr %17, align 8, !tbaa !24
  %312 = add nsw i64 %311, 1
  store i64 %312, ptr %17, align 8, !tbaa !24
  br label %271, !llvm.loop !43

313:                                              ; preds = %271
  %314 = load ptr, ptr %8, align 8, !tbaa !5
  %315 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %314, i32 0, i32 12
  %316 = load i64, ptr %315, align 8, !tbaa !44
  store i64 %316, ptr %21, align 8, !tbaa !24
  store i8 0, ptr %22, align 1, !tbaa !45
  store i64 0, ptr %17, align 8, !tbaa !24
  br label %317

317:                                              ; preds = %338, %313
  %318 = load i64, ptr %17, align 8, !tbaa !24
  %319 = load i64, ptr %21, align 8, !tbaa !24
  %320 = sub nsw i64 %319, 1
  %321 = icmp sle i64 %318, %320
  br i1 %321, label %322, label %341

322:                                              ; preds = %317
  %323 = load i8, ptr %22, align 1, !tbaa !45, !range !27, !noundef !28
  %324 = trunc i8 %323 to i1
  br i1 %324, label %335, label %325

325:                                              ; preds = %322
  %326 = load ptr, ptr %8, align 8, !tbaa !5
  %327 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %326, i32 0, i32 10
  %328 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %327, i32 0, i32 4
  %329 = load ptr, ptr %328, align 8, !tbaa !31
  %330 = load i64, ptr %17, align 8, !tbaa !24
  %331 = getelementptr inbounds double, ptr %329, i64 %330
  %332 = load double, ptr %331, align 8, !tbaa !9
  %333 = load double, ptr %10, align 8, !tbaa !9
  %334 = fcmp oeq double %332, %333
  br label %335

335:                                              ; preds = %325, %322
  %336 = phi i1 [ true, %322 ], [ %334, %325 ]
  %337 = zext i1 %336 to i8
  store i8 %337, ptr %22, align 1, !tbaa !45
  br label %338

338:                                              ; preds = %335
  %339 = load i64, ptr %17, align 8, !tbaa !24
  %340 = add nsw i64 %339, 1
  store i64 %340, ptr %17, align 8, !tbaa !24
  br label %317, !llvm.loop !46

341:                                              ; preds = %317
  %342 = load i8, ptr %22, align 1, !tbaa !45, !range !27, !noundef !28
  %343 = trunc i8 %342 to i1
  br i1 %343, label %462, label %344

344:                                              ; preds = %341
  %345 = load ptr, ptr %8, align 8, !tbaa !5
  %346 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %345, i32 0, i32 12
  %347 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %346, ptr noundef %347)
  %348 = load ptr, ptr %8, align 8, !tbaa !5
  %349 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %348, i32 0, i32 12
  %350 = load i64, ptr %349, align 8, !tbaa !44
  store i64 %350, ptr %21, align 8, !tbaa !24
  %351 = load ptr, ptr %8, align 8, !tbaa !5
  %352 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %351, i32 0, i32 10
  %353 = load i64, ptr %21, align 8, !tbaa !24
  %354 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %352, i64 noundef %353, ptr noundef %354)
  %355 = load ptr, ptr %8, align 8, !tbaa !5
  %356 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %355, i32 0, i32 11
  %357 = load i64, ptr %21, align 8, !tbaa !24
  %358 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl13ivectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %356, i64 noundef %357, ptr noundef %358)
  %359 = load double, ptr %10, align 8, !tbaa !9
  %360 = load ptr, ptr %8, align 8, !tbaa !5
  %361 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %360, i32 0, i32 10
  %362 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %361, i32 0, i32 4
  %363 = load ptr, ptr %362, align 8, !tbaa !31
  %364 = load i64, ptr %21, align 8, !tbaa !24
  %365 = sub nsw i64 %364, 1
  %366 = getelementptr inbounds double, ptr %363, i64 %365
  store double %359, ptr %366, align 8, !tbaa !9
  %367 = load i64, ptr %20, align 8, !tbaa !24
  %368 = sub nsw i64 %367, 1
  %369 = load ptr, ptr %8, align 8, !tbaa !5
  %370 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %369, i32 0, i32 11
  %371 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %370, i32 0, i32 4
  %372 = load ptr, ptr %371, align 8, !tbaa !31
  %373 = load i64, ptr %21, align 8, !tbaa !24
  %374 = sub nsw i64 %373, 1
  %375 = getelementptr inbounds i64, ptr %372, i64 %374
  store i64 %368, ptr %375, align 8, !tbaa !24
  %376 = load i64, ptr %21, align 8, !tbaa !24
  %377 = sub nsw i64 %376, 2
  store i64 %377, ptr %17, align 8, !tbaa !24
  br label %378

378:                                              ; preds = %458, %344
  %379 = load i64, ptr %17, align 8, !tbaa !24
  %380 = icmp sge i64 %379, 0
  br i1 %380, label %381, label %461

381:                                              ; preds = %378
  %382 = load ptr, ptr %8, align 8, !tbaa !5
  %383 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %382, i32 0, i32 10
  %384 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %383, i32 0, i32 4
  %385 = load ptr, ptr %384, align 8, !tbaa !31
  %386 = load i64, ptr %17, align 8, !tbaa !24
  %387 = getelementptr inbounds double, ptr %385, i64 %386
  %388 = load double, ptr %387, align 8, !tbaa !9
  %389 = load ptr, ptr %8, align 8, !tbaa !5
  %390 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %389, i32 0, i32 10
  %391 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %390, i32 0, i32 4
  %392 = load ptr, ptr %391, align 8, !tbaa !31
  %393 = load i64, ptr %17, align 8, !tbaa !24
  %394 = add nsw i64 %393, 1
  %395 = getelementptr inbounds double, ptr %392, i64 %394
  %396 = load double, ptr %395, align 8, !tbaa !9
  %397 = fcmp ole double %388, %396
  br i1 %397, label %398, label %399

398:                                              ; preds = %381
  br label %461

399:                                              ; preds = %381
  %400 = load ptr, ptr %8, align 8, !tbaa !5
  %401 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %400, i32 0, i32 10
  %402 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %401, i32 0, i32 4
  %403 = load ptr, ptr %402, align 8, !tbaa !31
  %404 = load i64, ptr %17, align 8, !tbaa !24
  %405 = getelementptr inbounds double, ptr %403, i64 %404
  %406 = load double, ptr %405, align 8, !tbaa !9
  store double %406, ptr %19, align 8, !tbaa !9
  %407 = load ptr, ptr %8, align 8, !tbaa !5
  %408 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %407, i32 0, i32 10
  %409 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %408, i32 0, i32 4
  %410 = load ptr, ptr %409, align 8, !tbaa !31
  %411 = load i64, ptr %17, align 8, !tbaa !24
  %412 = add nsw i64 %411, 1
  %413 = getelementptr inbounds double, ptr %410, i64 %412
  %414 = load double, ptr %413, align 8, !tbaa !9
  %415 = load ptr, ptr %8, align 8, !tbaa !5
  %416 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %415, i32 0, i32 10
  %417 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %416, i32 0, i32 4
  %418 = load ptr, ptr %417, align 8, !tbaa !31
  %419 = load i64, ptr %17, align 8, !tbaa !24
  %420 = getelementptr inbounds double, ptr %418, i64 %419
  store double %414, ptr %420, align 8, !tbaa !9
  %421 = load double, ptr %19, align 8, !tbaa !9
  %422 = load ptr, ptr %8, align 8, !tbaa !5
  %423 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %422, i32 0, i32 10
  %424 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %423, i32 0, i32 4
  %425 = load ptr, ptr %424, align 8, !tbaa !31
  %426 = load i64, ptr %17, align 8, !tbaa !24
  %427 = add nsw i64 %426, 1
  %428 = getelementptr inbounds double, ptr %425, i64 %427
  store double %421, ptr %428, align 8, !tbaa !9
  %429 = load ptr, ptr %8, align 8, !tbaa !5
  %430 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %429, i32 0, i32 11
  %431 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %430, i32 0, i32 4
  %432 = load ptr, ptr %431, align 8, !tbaa !31
  %433 = load i64, ptr %17, align 8, !tbaa !24
  %434 = getelementptr inbounds i64, ptr %432, i64 %433
  %435 = load i64, ptr %434, align 8, !tbaa !24
  store i64 %435, ptr %18, align 8, !tbaa !24
  %436 = load ptr, ptr %8, align 8, !tbaa !5
  %437 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %436, i32 0, i32 11
  %438 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %437, i32 0, i32 4
  %439 = load ptr, ptr %438, align 8, !tbaa !31
  %440 = load i64, ptr %17, align 8, !tbaa !24
  %441 = add nsw i64 %440, 1
  %442 = getelementptr inbounds i64, ptr %439, i64 %441
  %443 = load i64, ptr %442, align 8, !tbaa !24
  %444 = load ptr, ptr %8, align 8, !tbaa !5
  %445 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %444, i32 0, i32 11
  %446 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %445, i32 0, i32 4
  %447 = load ptr, ptr %446, align 8, !tbaa !31
  %448 = load i64, ptr %17, align 8, !tbaa !24
  %449 = getelementptr inbounds i64, ptr %447, i64 %448
  store i64 %443, ptr %449, align 8, !tbaa !24
  %450 = load i64, ptr %18, align 8, !tbaa !24
  %451 = load ptr, ptr %8, align 8, !tbaa !5
  %452 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %451, i32 0, i32 11
  %453 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %452, i32 0, i32 4
  %454 = load ptr, ptr %453, align 8, !tbaa !31
  %455 = load i64, ptr %17, align 8, !tbaa !24
  %456 = add nsw i64 %455, 1
  %457 = getelementptr inbounds i64, ptr %454, i64 %456
  store i64 %450, ptr %457, align 8, !tbaa !24
  br label %458

458:                                              ; preds = %399
  %459 = load i64, ptr %17, align 8, !tbaa !24
  %460 = add nsw i64 %459, -1
  store i64 %460, ptr %17, align 8, !tbaa !24
  br label %378, !llvm.loop !47

461:                                              ; preds = %398, %378
  br label %462

462:                                              ; preds = %461, %341
  %463 = load ptr, ptr %8, align 8, !tbaa !5
  %464 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %463, i32 0, i32 66
  %465 = load i64, ptr %21, align 8, !tbaa !24
  %466 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %464, i64 noundef %465, ptr noundef %466)
  %467 = load ptr, ptr %8, align 8, !tbaa !5
  %468 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %467, i32 0, i32 67
  %469 = load i64, ptr %21, align 8, !tbaa !24
  %470 = load i64, ptr %15, align 8, !tbaa !24
  %471 = mul nsw i64 %469, %470
  %472 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %468, i64 noundef %471, ptr noundef %472)
  store i64 0, ptr %23, align 8, !tbaa !24
  br label %473

473:                                              ; preds = %1318, %462
  %474 = load i64, ptr %23, align 8, !tbaa !24
  %475 = load i64, ptr %16, align 8, !tbaa !24
  %476 = sub nsw i64 %475, 1
  %477 = icmp sle i64 %474, %476
  br i1 %477, label %478, label %1321

478:                                              ; preds = %473
  store i64 0, ptr %17, align 8, !tbaa !24
  br label %479

479:                                              ; preds = %548, %478
  %480 = load i64, ptr %17, align 8, !tbaa !24
  %481 = load i64, ptr %21, align 8, !tbaa !24
  %482 = sub nsw i64 %481, 1
  %483 = icmp sle i64 %480, %482
  br i1 %483, label %484, label %551

484:                                              ; preds = %479
  %485 = load ptr, ptr %8, align 8, !tbaa !5
  %486 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %485, i32 0, i32 8
  %487 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %486, i32 0, i32 4
  %488 = load ptr, ptr %487, align 8, !tbaa !31
  %489 = load ptr, ptr %8, align 8, !tbaa !5
  %490 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %489, i32 0, i32 11
  %491 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %490, i32 0, i32 4
  %492 = load ptr, ptr %491, align 8, !tbaa !31
  %493 = load i64, ptr %17, align 8, !tbaa !24
  %494 = getelementptr inbounds i64, ptr %492, i64 %493
  %495 = load i64, ptr %494, align 8, !tbaa !24
  %496 = load i64, ptr %16, align 8, !tbaa !24
  %497 = mul nsw i64 %495, %496
  %498 = load i64, ptr %23, align 8, !tbaa !24
  %499 = add nsw i64 %497, %498
  %500 = getelementptr inbounds double, ptr %488, i64 %499
  %501 = load double, ptr %500, align 8, !tbaa !9
  %502 = load ptr, ptr %8, align 8, !tbaa !5
  %503 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %502, i32 0, i32 66
  %504 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %503, i32 0, i32 4
  %505 = load ptr, ptr %504, align 8, !tbaa !31
  %506 = load i64, ptr %17, align 8, !tbaa !24
  %507 = getelementptr inbounds double, ptr %505, i64 %506
  store double %501, ptr %507, align 8, !tbaa !9
  store i64 0, ptr %18, align 8, !tbaa !24
  br label %508

508:                                              ; preds = %544, %484
  %509 = load i64, ptr %18, align 8, !tbaa !24
  %510 = load i64, ptr %15, align 8, !tbaa !24
  %511 = sub nsw i64 %510, 1
  %512 = icmp sle i64 %509, %511
  br i1 %512, label %513, label %547

513:                                              ; preds = %508
  %514 = load ptr, ptr %8, align 8, !tbaa !5
  %515 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %514, i32 0, i32 9
  %516 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %515, i32 0, i32 6
  %517 = load ptr, ptr %516, align 8, !tbaa !31
  %518 = load ptr, ptr %8, align 8, !tbaa !5
  %519 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %518, i32 0, i32 11
  %520 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %519, i32 0, i32 4
  %521 = load ptr, ptr %520, align 8, !tbaa !31
  %522 = load i64, ptr %17, align 8, !tbaa !24
  %523 = getelementptr inbounds i64, ptr %521, i64 %522
  %524 = load i64, ptr %523, align 8, !tbaa !24
  %525 = load i64, ptr %16, align 8, !tbaa !24
  %526 = mul nsw i64 %524, %525
  %527 = load i64, ptr %23, align 8, !tbaa !24
  %528 = add nsw i64 %526, %527
  %529 = getelementptr inbounds ptr, ptr %517, i64 %528
  %530 = load ptr, ptr %529, align 8, !tbaa !5
  %531 = load i64, ptr %18, align 8, !tbaa !24
  %532 = getelementptr inbounds double, ptr %530, i64 %531
  %533 = load double, ptr %532, align 8, !tbaa !9
  %534 = load ptr, ptr %8, align 8, !tbaa !5
  %535 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %534, i32 0, i32 67
  %536 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %535, i32 0, i32 4
  %537 = load ptr, ptr %536, align 8, !tbaa !31
  %538 = load i64, ptr %17, align 8, !tbaa !24
  %539 = load i64, ptr %15, align 8, !tbaa !24
  %540 = mul nsw i64 %538, %539
  %541 = load i64, ptr %18, align 8, !tbaa !24
  %542 = add nsw i64 %540, %541
  %543 = getelementptr inbounds double, ptr %537, i64 %542
  store double %533, ptr %543, align 8, !tbaa !9
  br label %544

544:                                              ; preds = %513
  %545 = load i64, ptr %18, align 8, !tbaa !24
  %546 = add nsw i64 %545, 1
  store i64 %546, ptr %18, align 8, !tbaa !24
  br label %508, !llvm.loop !48

547:                                              ; preds = %508
  br label %548

548:                                              ; preds = %547
  %549 = load i64, ptr %17, align 8, !tbaa !24
  %550 = add nsw i64 %549, 1
  store i64 %550, ptr %17, align 8, !tbaa !24
  br label %479, !llvm.loop !49

551:                                              ; preds = %479
  %552 = load i64, ptr %23, align 8, !tbaa !24
  %553 = icmp eq i64 %552, 0
  br i1 %553, label %554, label %1098

554:                                              ; preds = %551
  store i64 0, ptr %24, align 8, !tbaa !24
  br label %555

555:                                              ; preds = %1094, %554
  %556 = load i64, ptr %24, align 8, !tbaa !24
  %557 = load i64, ptr %21, align 8, !tbaa !24
  %558 = sub nsw i64 %557, 4
  %559 = icmp sle i64 %556, %558
  br i1 %559, label %560, label %1097

560:                                              ; preds = %555
  %561 = load ptr, ptr %8, align 8, !tbaa !5
  %562 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %561, i32 0, i32 66
  %563 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %562, i32 0, i32 4
  %564 = load ptr, ptr %563, align 8, !tbaa !31
  %565 = load i64, ptr %24, align 8, !tbaa !24
  %566 = add nsw i64 %565, 0
  %567 = getelementptr inbounds double, ptr %564, i64 %566
  %568 = load double, ptr %567, align 8, !tbaa !9
  store double %568, ptr %25, align 8, !tbaa !9
  %569 = load ptr, ptr %8, align 8, !tbaa !5
  %570 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %569, i32 0, i32 66
  %571 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %570, i32 0, i32 4
  %572 = load ptr, ptr %571, align 8, !tbaa !31
  %573 = load i64, ptr %24, align 8, !tbaa !24
  %574 = add nsw i64 %573, 1
  %575 = getelementptr inbounds double, ptr %572, i64 %574
  %576 = load double, ptr %575, align 8, !tbaa !9
  store double %576, ptr %26, align 8, !tbaa !9
  %577 = load ptr, ptr %8, align 8, !tbaa !5
  %578 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %577, i32 0, i32 66
  %579 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %578, i32 0, i32 4
  %580 = load ptr, ptr %579, align 8, !tbaa !31
  %581 = load i64, ptr %24, align 8, !tbaa !24
  %582 = add nsw i64 %581, 2
  %583 = getelementptr inbounds double, ptr %580, i64 %582
  %584 = load double, ptr %583, align 8, !tbaa !9
  store double %584, ptr %27, align 8, !tbaa !9
  %585 = load ptr, ptr %8, align 8, !tbaa !5
  %586 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %585, i32 0, i32 66
  %587 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %586, i32 0, i32 4
  %588 = load ptr, ptr %587, align 8, !tbaa !31
  %589 = load i64, ptr %24, align 8, !tbaa !24
  %590 = add nsw i64 %589, 3
  %591 = getelementptr inbounds double, ptr %588, i64 %590
  %592 = load double, ptr %591, align 8, !tbaa !9
  store double %592, ptr %28, align 8, !tbaa !9
  %593 = load double, ptr @_ZN11alglib_implL21optserv_ognoiselevelfE, align 8, !tbaa !9
  %594 = load double, ptr %25, align 8, !tbaa !9
  %595 = load ptr, ptr %14, align 8, !tbaa !5
  %596 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %594, ptr noundef %595)
  %597 = load ptr, ptr %14, align 8, !tbaa !5
  %598 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %596, double noundef 1.000000e+00, ptr noundef %597)
  %599 = fmul double %593, %598
  store double %599, ptr %30, align 8, !tbaa !9
  %600 = load double, ptr @_ZN11alglib_implL21optserv_ognoiselevelfE, align 8, !tbaa !9
  %601 = load double, ptr %26, align 8, !tbaa !9
  %602 = load ptr, ptr %14, align 8, !tbaa !5
  %603 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %601, ptr noundef %602)
  %604 = load ptr, ptr %14, align 8, !tbaa !5
  %605 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %603, double noundef 1.000000e+00, ptr noundef %604)
  %606 = fmul double %600, %605
  store double %606, ptr %31, align 8, !tbaa !9
  %607 = load double, ptr @_ZN11alglib_implL21optserv_ognoiselevelfE, align 8, !tbaa !9
  %608 = load double, ptr %27, align 8, !tbaa !9
  %609 = load ptr, ptr %14, align 8, !tbaa !5
  %610 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %608, ptr noundef %609)
  %611 = load ptr, ptr %14, align 8, !tbaa !5
  %612 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %610, double noundef 1.000000e+00, ptr noundef %611)
  %613 = fmul double %607, %612
  store double %613, ptr %32, align 8, !tbaa !9
  %614 = load double, ptr @_ZN11alglib_implL21optserv_ognoiselevelfE, align 8, !tbaa !9
  %615 = load double, ptr %28, align 8, !tbaa !9
  %616 = load ptr, ptr %14, align 8, !tbaa !5
  %617 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %615, ptr noundef %616)
  %618 = load ptr, ptr %14, align 8, !tbaa !5
  %619 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %617, double noundef 1.000000e+00, ptr noundef %618)
  %620 = fmul double %614, %619
  store double %620, ptr %33, align 8, !tbaa !9
  %621 = load double, ptr %26, align 8, !tbaa !9
  %622 = load double, ptr %25, align 8, !tbaa !9
  %623 = load double, ptr %30, align 8, !tbaa !9
  %624 = load double, ptr %31, align 8, !tbaa !9
  %625 = fadd double %623, %624
  %626 = fadd double %622, %625
  %627 = fcmp olt double %621, %626
  br i1 %627, label %628, label %632

628:                                              ; preds = %560
  %629 = load double, ptr %26, align 8, !tbaa !9
  %630 = load double, ptr %27, align 8, !tbaa !9
  %631 = fcmp olt double %629, %630
  br i1 %631, label %633, label %632

632:                                              ; preds = %628, %560
  br label %1094

633:                                              ; preds = %628
  %634 = load double, ptr %25, align 8, !tbaa !9
  %635 = load double, ptr %26, align 8, !tbaa !9
  %636 = load double, ptr %27, align 8, !tbaa !9
  %637 = load double, ptr %28, align 8, !tbaa !9
  %638 = load double, ptr %30, align 8, !tbaa !9
  %639 = load double, ptr %31, align 8, !tbaa !9
  %640 = load double, ptr %32, align 8, !tbaa !9
  %641 = load double, ptr %33, align 8, !tbaa !9
  %642 = load ptr, ptr %8, align 8, !tbaa !5
  %643 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %642, i32 0, i32 10
  %644 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %643, i32 0, i32 4
  %645 = load ptr, ptr %644, align 8, !tbaa !31
  %646 = load i64, ptr %24, align 8, !tbaa !24
  %647 = add nsw i64 %646, 1
  %648 = getelementptr inbounds double, ptr %645, i64 %647
  %649 = load double, ptr %648, align 8, !tbaa !9
  %650 = load ptr, ptr %8, align 8, !tbaa !5
  %651 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %650, i32 0, i32 10
  %652 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %651, i32 0, i32 4
  %653 = load ptr, ptr %652, align 8, !tbaa !31
  %654 = load i64, ptr %24, align 8, !tbaa !24
  %655 = add nsw i64 %654, 0
  %656 = getelementptr inbounds double, ptr %653, i64 %655
  %657 = load double, ptr %656, align 8, !tbaa !9
  %658 = fsub double %649, %657
  %659 = load ptr, ptr %8, align 8, !tbaa !5
  %660 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %659, i32 0, i32 10
  %661 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %660, i32 0, i32 4
  %662 = load ptr, ptr %661, align 8, !tbaa !31
  %663 = load i64, ptr %24, align 8, !tbaa !24
  %664 = add nsw i64 %663, 2
  %665 = getelementptr inbounds double, ptr %662, i64 %664
  %666 = load double, ptr %665, align 8, !tbaa !9
  %667 = load ptr, ptr %8, align 8, !tbaa !5
  %668 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %667, i32 0, i32 10
  %669 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %668, i32 0, i32 4
  %670 = load ptr, ptr %669, align 8, !tbaa !31
  %671 = load i64, ptr %24, align 8, !tbaa !24
  %672 = add nsw i64 %671, 1
  %673 = getelementptr inbounds double, ptr %670, i64 %672
  %674 = load double, ptr %673, align 8, !tbaa !9
  %675 = fsub double %666, %674
  %676 = load ptr, ptr %8, align 8, !tbaa !5
  %677 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %676, i32 0, i32 10
  %678 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %677, i32 0, i32 4
  %679 = load ptr, ptr %678, align 8, !tbaa !31
  %680 = load i64, ptr %24, align 8, !tbaa !24
  %681 = add nsw i64 %680, 3
  %682 = getelementptr inbounds double, ptr %679, i64 %681
  %683 = load double, ptr %682, align 8, !tbaa !9
  %684 = load ptr, ptr %8, align 8, !tbaa !5
  %685 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %684, i32 0, i32 10
  %686 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %685, i32 0, i32 4
  %687 = load ptr, ptr %686, align 8, !tbaa !31
  %688 = load i64, ptr %24, align 8, !tbaa !24
  %689 = add nsw i64 %688, 2
  %690 = getelementptr inbounds double, ptr %687, i64 %689
  %691 = load double, ptr %690, align 8, !tbaa !9
  %692 = fsub double %683, %691
  %693 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL24optserv_testc0continuityEdddddddddddbPdS0_PNS_8ae_stateE(double noundef %634, double noundef %635, double noundef %636, double noundef %637, double noundef %638, double noundef %639, double noundef %640, double noundef %641, double noundef %658, double noundef %675, double noundef %692, i1 noundef zeroext false, ptr noundef %34, ptr noundef %35, ptr noundef %693)
  %694 = load double, ptr %34, align 8, !tbaa !9
  %695 = load double, ptr @_ZN11alglib_implL20optserv_ogminrating0E, align 8, !tbaa !9
  %696 = fcmp ogt double %694, %695
  br i1 %696, label %697, label %1093

697:                                              ; preds = %633
  %698 = load ptr, ptr %8, align 8, !tbaa !5
  %699 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %698, i32 0, i32 36
  %700 = getelementptr inbounds %"struct.alglib_impl::optguardreport", ptr %699, i32 0, i32 0
  store i8 1, ptr %700, align 8, !tbaa !50
  %701 = load ptr, ptr %8, align 8, !tbaa !5
  %702 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %701, i32 0, i32 36
  %703 = getelementptr inbounds %"struct.alglib_impl::optguardreport", ptr %702, i32 0, i32 1
  store i8 1, ptr %703, align 1, !tbaa !51
  %704 = load double, ptr %34, align 8, !tbaa !9
  %705 = load ptr, ptr %8, align 8, !tbaa !5
  %706 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %705, i32 0, i32 33
  %707 = load double, ptr %706, align 8, !tbaa !52
  %708 = fcmp ogt double %704, %707
  br i1 %708, label %709, label %721

709:                                              ; preds = %697
  %710 = load double, ptr %34, align 8, !tbaa !9
  %711 = load ptr, ptr %8, align 8, !tbaa !5
  %712 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %711, i32 0, i32 33
  store double %710, ptr %712, align 8, !tbaa !52
  %713 = load double, ptr %35, align 8, !tbaa !9
  %714 = load ptr, ptr %8, align 8, !tbaa !5
  %715 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %714, i32 0, i32 36
  %716 = getelementptr inbounds %"struct.alglib_impl::optguardreport", ptr %715, i32 0, i32 3
  store double %713, ptr %716, align 8, !tbaa !53
  %717 = load i64, ptr %23, align 8, !tbaa !24
  %718 = load ptr, ptr %8, align 8, !tbaa !5
  %719 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %718, i32 0, i32 36
  %720 = getelementptr inbounds %"struct.alglib_impl::optguardreport", ptr %719, i32 0, i32 2
  store i64 %717, ptr %720, align 8, !tbaa !54
  br label %721

721:                                              ; preds = %709, %697
  %722 = load double, ptr %34, align 8, !tbaa !9
  %723 = load ptr, ptr %8, align 8, !tbaa !5
  %724 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %723, i32 0, i32 37
  %725 = load double, ptr %724, align 8, !tbaa !55
  %726 = fcmp ogt double %722, %725
  br i1 %726, label %727, label %873

727:                                              ; preds = %721
  %728 = load double, ptr %34, align 8, !tbaa !9
  %729 = load ptr, ptr %8, align 8, !tbaa !5
  %730 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %729, i32 0, i32 37
  store double %728, ptr %730, align 8, !tbaa !55
  %731 = load ptr, ptr %8, align 8, !tbaa !5
  %732 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %731, i32 0, i32 39
  %733 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %732, i32 0, i32 0
  store i8 1, ptr %733, align 8, !tbaa !56
  %734 = load i64, ptr %23, align 8, !tbaa !24
  %735 = load ptr, ptr %8, align 8, !tbaa !5
  %736 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %735, i32 0, i32 39
  %737 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %736, i32 0, i32 1
  store i64 %734, ptr %737, align 8, !tbaa !57
  %738 = load i64, ptr %15, align 8, !tbaa !24
  %739 = load ptr, ptr %8, align 8, !tbaa !5
  %740 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %739, i32 0, i32 39
  %741 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %740, i32 0, i32 4
  store i64 %738, ptr %741, align 8, !tbaa !58
  %742 = load i64, ptr %21, align 8, !tbaa !24
  %743 = load ptr, ptr %8, align 8, !tbaa !5
  %744 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %743, i32 0, i32 39
  %745 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %744, i32 0, i32 7
  store i64 %742, ptr %745, align 8, !tbaa !59
  %746 = load i64, ptr %24, align 8, !tbaa !24
  %747 = add nsw i64 %746, 0
  %748 = load ptr, ptr %8, align 8, !tbaa !5
  %749 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %748, i32 0, i32 39
  %750 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %749, i32 0, i32 8
  store i64 %747, ptr %750, align 8, !tbaa !60
  %751 = load i64, ptr %24, align 8, !tbaa !24
  %752 = add nsw i64 %751, 3
  %753 = load ptr, ptr %8, align 8, !tbaa !5
  %754 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %753, i32 0, i32 39
  %755 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %754, i32 0, i32 9
  store i64 %752, ptr %755, align 8, !tbaa !61
  %756 = load ptr, ptr %8, align 8, !tbaa !5
  %757 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %756, i32 0, i32 31
  %758 = load i64, ptr %757, align 8, !tbaa !62
  %759 = load ptr, ptr %8, align 8, !tbaa !5
  %760 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %759, i32 0, i32 39
  %761 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %760, i32 0, i32 10
  store i64 %758, ptr %761, align 8, !tbaa !63
  %762 = load ptr, ptr %8, align 8, !tbaa !5
  %763 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %762, i32 0, i32 32
  %764 = load i64, ptr %763, align 8, !tbaa !64
  %765 = load ptr, ptr %8, align 8, !tbaa !5
  %766 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %765, i32 0, i32 39
  %767 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %766, i32 0, i32 11
  store i64 %764, ptr %767, align 8, !tbaa !65
  %768 = load ptr, ptr %8, align 8, !tbaa !5
  %769 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %768, i32 0, i32 39
  %770 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %769, i32 0, i32 2
  %771 = load i64, ptr %15, align 8, !tbaa !24
  %772 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %770, i64 noundef %771, ptr noundef %772)
  %773 = load ptr, ptr %8, align 8, !tbaa !5
  %774 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %773, i32 0, i32 39
  %775 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %774, i32 0, i32 3
  %776 = load i64, ptr %15, align 8, !tbaa !24
  %777 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %775, i64 noundef %776, ptr noundef %777)
  store i64 0, ptr %17, align 8, !tbaa !24
  br label %778

778:                                              ; preds = %821, %727
  %779 = load i64, ptr %17, align 8, !tbaa !24
  %780 = load i64, ptr %15, align 8, !tbaa !24
  %781 = sub nsw i64 %780, 1
  %782 = icmp sle i64 %779, %781
  br i1 %782, label %783, label %824

783:                                              ; preds = %778
  %784 = load ptr, ptr %8, align 8, !tbaa !5
  %785 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %784, i32 0, i32 7
  %786 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %785, i32 0, i32 4
  %787 = load ptr, ptr %786, align 8, !tbaa !31
  %788 = load ptr, ptr %8, align 8, !tbaa !5
  %789 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %788, i32 0, i32 11
  %790 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %789, i32 0, i32 4
  %791 = load ptr, ptr %790, align 8, !tbaa !31
  %792 = getelementptr inbounds i64, ptr %791, i64 0
  %793 = load i64, ptr %792, align 8, !tbaa !24
  %794 = load i64, ptr %15, align 8, !tbaa !24
  %795 = mul nsw i64 %793, %794
  %796 = load i64, ptr %17, align 8, !tbaa !24
  %797 = add nsw i64 %795, %796
  %798 = getelementptr inbounds double, ptr %787, i64 %797
  %799 = load double, ptr %798, align 8, !tbaa !9
  %800 = load ptr, ptr %8, align 8, !tbaa !5
  %801 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %800, i32 0, i32 39
  %802 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %801, i32 0, i32 2
  %803 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %802, i32 0, i32 4
  %804 = load ptr, ptr %803, align 8, !tbaa !31
  %805 = load i64, ptr %17, align 8, !tbaa !24
  %806 = getelementptr inbounds double, ptr %804, i64 %805
  store double %799, ptr %806, align 8, !tbaa !9
  %807 = load ptr, ptr %8, align 8, !tbaa !5
  %808 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %807, i32 0, i32 4
  %809 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %808, i32 0, i32 4
  %810 = load ptr, ptr %809, align 8, !tbaa !31
  %811 = load i64, ptr %17, align 8, !tbaa !24
  %812 = getelementptr inbounds double, ptr %810, i64 %811
  %813 = load double, ptr %812, align 8, !tbaa !9
  %814 = load ptr, ptr %8, align 8, !tbaa !5
  %815 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %814, i32 0, i32 39
  %816 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %815, i32 0, i32 3
  %817 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %816, i32 0, i32 4
  %818 = load ptr, ptr %817, align 8, !tbaa !31
  %819 = load i64, ptr %17, align 8, !tbaa !24
  %820 = getelementptr inbounds double, ptr %818, i64 %819
  store double %813, ptr %820, align 8, !tbaa !9
  br label %821

821:                                              ; preds = %783
  %822 = load i64, ptr %17, align 8, !tbaa !24
  %823 = add nsw i64 %822, 1
  store i64 %823, ptr %17, align 8, !tbaa !24
  br label %778, !llvm.loop !66

824:                                              ; preds = %778
  %825 = load ptr, ptr %8, align 8, !tbaa !5
  %826 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %825, i32 0, i32 39
  %827 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %826, i32 0, i32 5
  %828 = load i64, ptr %21, align 8, !tbaa !24
  %829 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %827, i64 noundef %828, ptr noundef %829)
  %830 = load ptr, ptr %8, align 8, !tbaa !5
  %831 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %830, i32 0, i32 39
  %832 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %831, i32 0, i32 6
  %833 = load i64, ptr %21, align 8, !tbaa !24
  %834 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %832, i64 noundef %833, ptr noundef %834)
  store i64 0, ptr %17, align 8, !tbaa !24
  br label %835

835:                                              ; preds = %869, %824
  %836 = load i64, ptr %17, align 8, !tbaa !24
  %837 = load i64, ptr %21, align 8, !tbaa !24
  %838 = sub nsw i64 %837, 1
  %839 = icmp sle i64 %836, %838
  br i1 %839, label %840, label %872

840:                                              ; preds = %835
  %841 = load ptr, ptr %8, align 8, !tbaa !5
  %842 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %841, i32 0, i32 10
  %843 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %842, i32 0, i32 4
  %844 = load ptr, ptr %843, align 8, !tbaa !31
  %845 = load i64, ptr %17, align 8, !tbaa !24
  %846 = getelementptr inbounds double, ptr %844, i64 %845
  %847 = load double, ptr %846, align 8, !tbaa !9
  %848 = load ptr, ptr %8, align 8, !tbaa !5
  %849 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %848, i32 0, i32 39
  %850 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %849, i32 0, i32 5
  %851 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %850, i32 0, i32 4
  %852 = load ptr, ptr %851, align 8, !tbaa !31
  %853 = load i64, ptr %17, align 8, !tbaa !24
  %854 = getelementptr inbounds double, ptr %852, i64 %853
  store double %847, ptr %854, align 8, !tbaa !9
  %855 = load ptr, ptr %8, align 8, !tbaa !5
  %856 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %855, i32 0, i32 66
  %857 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %856, i32 0, i32 4
  %858 = load ptr, ptr %857, align 8, !tbaa !31
  %859 = load i64, ptr %17, align 8, !tbaa !24
  %860 = getelementptr inbounds double, ptr %858, i64 %859
  %861 = load double, ptr %860, align 8, !tbaa !9
  %862 = load ptr, ptr %8, align 8, !tbaa !5
  %863 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %862, i32 0, i32 39
  %864 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %863, i32 0, i32 6
  %865 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %864, i32 0, i32 4
  %866 = load ptr, ptr %865, align 8, !tbaa !31
  %867 = load i64, ptr %17, align 8, !tbaa !24
  %868 = getelementptr inbounds double, ptr %866, i64 %867
  store double %861, ptr %868, align 8, !tbaa !9
  br label %869

869:                                              ; preds = %840
  %870 = load i64, ptr %17, align 8, !tbaa !24
  %871 = add nsw i64 %870, 1
  store i64 %871, ptr %17, align 8, !tbaa !24
  br label %835, !llvm.loop !67

872:                                              ; preds = %835
  br label %873

873:                                              ; preds = %872, %721
  store double 0.000000e+00, ptr %36, align 8, !tbaa !9
  store i64 0, ptr %17, align 8, !tbaa !24
  br label %874

874:                                              ; preds = %919, %873
  %875 = load i64, ptr %17, align 8, !tbaa !24
  %876 = load i64, ptr %15, align 8, !tbaa !24
  %877 = sub nsw i64 %876, 1
  %878 = icmp sle i64 %875, %877
  br i1 %878, label %879, label %922

879:                                              ; preds = %874
  %880 = load double, ptr %36, align 8, !tbaa !9
  %881 = load ptr, ptr %8, align 8, !tbaa !5
  %882 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %881, i32 0, i32 7
  %883 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %882, i32 0, i32 4
  %884 = load ptr, ptr %883, align 8, !tbaa !31
  %885 = load ptr, ptr %8, align 8, !tbaa !5
  %886 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %885, i32 0, i32 11
  %887 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %886, i32 0, i32 4
  %888 = load ptr, ptr %887, align 8, !tbaa !31
  %889 = getelementptr inbounds i64, ptr %888, i64 0
  %890 = load i64, ptr %889, align 8, !tbaa !24
  %891 = load i64, ptr %15, align 8, !tbaa !24
  %892 = mul nsw i64 %890, %891
  %893 = load i64, ptr %17, align 8, !tbaa !24
  %894 = add nsw i64 %892, %893
  %895 = getelementptr inbounds double, ptr %884, i64 %894
  %896 = load double, ptr %895, align 8, !tbaa !9
  %897 = load ptr, ptr %8, align 8, !tbaa !5
  %898 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %897, i32 0, i32 7
  %899 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %898, i32 0, i32 4
  %900 = load ptr, ptr %899, align 8, !tbaa !31
  %901 = load ptr, ptr %8, align 8, !tbaa !5
  %902 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %901, i32 0, i32 11
  %903 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %902, i32 0, i32 4
  %904 = load ptr, ptr %903, align 8, !tbaa !31
  %905 = load i64, ptr %21, align 8, !tbaa !24
  %906 = sub nsw i64 %905, 1
  %907 = getelementptr inbounds i64, ptr %904, i64 %906
  %908 = load i64, ptr %907, align 8, !tbaa !24
  %909 = load i64, ptr %15, align 8, !tbaa !24
  %910 = mul nsw i64 %908, %909
  %911 = load i64, ptr %17, align 8, !tbaa !24
  %912 = add nsw i64 %910, %911
  %913 = getelementptr inbounds double, ptr %900, i64 %912
  %914 = load double, ptr %913, align 8, !tbaa !9
  %915 = fsub double %896, %914
  %916 = load ptr, ptr %14, align 8, !tbaa !5
  %917 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %915, ptr noundef %916)
  %918 = fadd double %880, %917
  store double %918, ptr %36, align 8, !tbaa !9
  br label %919

919:                                              ; preds = %879
  %920 = load i64, ptr %17, align 8, !tbaa !24
  %921 = add nsw i64 %920, 1
  store i64 %921, ptr %17, align 8, !tbaa !24
  br label %874, !llvm.loop !68

922:                                              ; preds = %874
  %923 = load double, ptr %36, align 8, !tbaa !9
  %924 = load ptr, ptr %14, align 8, !tbaa !5
  %925 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %923, ptr noundef %924)
  store double %925, ptr %36, align 8, !tbaa !9
  %926 = load double, ptr %36, align 8, !tbaa !9
  %927 = load ptr, ptr %14, align 8, !tbaa !5
  %928 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %926, double noundef 5.000000e-16, ptr noundef %927)
  store double %928, ptr %36, align 8, !tbaa !9
  %929 = load double, ptr %36, align 8, !tbaa !9
  %930 = load ptr, ptr %14, align 8, !tbaa !5
  %931 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef %929, ptr noundef %930)
  %932 = load i64, ptr %21, align 8, !tbaa !24
  %933 = sitofp i64 %932 to double
  %934 = load ptr, ptr %14, align 8, !tbaa !5
  %935 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef %933, ptr noundef %934)
  %936 = call double @llvm.fmuladd.f64(double 2.000000e-01, double %935, double %931)
  %937 = load double, ptr %34, align 8, !tbaa !9
  %938 = load ptr, ptr %14, align 8, !tbaa !5
  %939 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef %937, ptr noundef %938)
  %940 = call double @llvm.fmuladd.f64(double 2.000000e-01, double %939, double %936)
  store double %940, ptr %37, align 8, !tbaa !9
  %941 = load double, ptr %37, align 8, !tbaa !9
  %942 = load ptr, ptr %8, align 8, !tbaa !5
  %943 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %942, i32 0, i32 38
  %944 = load double, ptr %943, align 8, !tbaa !69
  %945 = fcmp ogt double %941, %944
  br i1 %945, label %946, label %1092

946:                                              ; preds = %922
  %947 = load double, ptr %37, align 8, !tbaa !9
  %948 = load ptr, ptr %8, align 8, !tbaa !5
  %949 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %948, i32 0, i32 38
  store double %947, ptr %949, align 8, !tbaa !69
  %950 = load ptr, ptr %8, align 8, !tbaa !5
  %951 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %950, i32 0, i32 40
  %952 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %951, i32 0, i32 0
  store i8 1, ptr %952, align 8, !tbaa !70
  %953 = load i64, ptr %23, align 8, !tbaa !24
  %954 = load ptr, ptr %8, align 8, !tbaa !5
  %955 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %954, i32 0, i32 40
  %956 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %955, i32 0, i32 1
  store i64 %953, ptr %956, align 8, !tbaa !71
  %957 = load i64, ptr %15, align 8, !tbaa !24
  %958 = load ptr, ptr %8, align 8, !tbaa !5
  %959 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %958, i32 0, i32 40
  %960 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %959, i32 0, i32 4
  store i64 %957, ptr %960, align 8, !tbaa !72
  %961 = load i64, ptr %21, align 8, !tbaa !24
  %962 = load ptr, ptr %8, align 8, !tbaa !5
  %963 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %962, i32 0, i32 40
  %964 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %963, i32 0, i32 7
  store i64 %961, ptr %964, align 8, !tbaa !73
  %965 = load i64, ptr %24, align 8, !tbaa !24
  %966 = add nsw i64 %965, 0
  %967 = load ptr, ptr %8, align 8, !tbaa !5
  %968 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %967, i32 0, i32 40
  %969 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %968, i32 0, i32 8
  store i64 %966, ptr %969, align 8, !tbaa !74
  %970 = load i64, ptr %24, align 8, !tbaa !24
  %971 = add nsw i64 %970, 3
  %972 = load ptr, ptr %8, align 8, !tbaa !5
  %973 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %972, i32 0, i32 40
  %974 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %973, i32 0, i32 9
  store i64 %971, ptr %974, align 8, !tbaa !75
  %975 = load ptr, ptr %8, align 8, !tbaa !5
  %976 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %975, i32 0, i32 31
  %977 = load i64, ptr %976, align 8, !tbaa !62
  %978 = load ptr, ptr %8, align 8, !tbaa !5
  %979 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %978, i32 0, i32 40
  %980 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %979, i32 0, i32 10
  store i64 %977, ptr %980, align 8, !tbaa !76
  %981 = load ptr, ptr %8, align 8, !tbaa !5
  %982 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %981, i32 0, i32 32
  %983 = load i64, ptr %982, align 8, !tbaa !64
  %984 = load ptr, ptr %8, align 8, !tbaa !5
  %985 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %984, i32 0, i32 40
  %986 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %985, i32 0, i32 11
  store i64 %983, ptr %986, align 8, !tbaa !77
  %987 = load ptr, ptr %8, align 8, !tbaa !5
  %988 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %987, i32 0, i32 40
  %989 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %988, i32 0, i32 2
  %990 = load i64, ptr %15, align 8, !tbaa !24
  %991 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %989, i64 noundef %990, ptr noundef %991)
  %992 = load ptr, ptr %8, align 8, !tbaa !5
  %993 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %992, i32 0, i32 40
  %994 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %993, i32 0, i32 3
  %995 = load i64, ptr %15, align 8, !tbaa !24
  %996 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %994, i64 noundef %995, ptr noundef %996)
  store i64 0, ptr %17, align 8, !tbaa !24
  br label %997

997:                                              ; preds = %1040, %946
  %998 = load i64, ptr %17, align 8, !tbaa !24
  %999 = load i64, ptr %15, align 8, !tbaa !24
  %1000 = sub nsw i64 %999, 1
  %1001 = icmp sle i64 %998, %1000
  br i1 %1001, label %1002, label %1043

1002:                                             ; preds = %997
  %1003 = load ptr, ptr %8, align 8, !tbaa !5
  %1004 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %1003, i32 0, i32 7
  %1005 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1004, i32 0, i32 4
  %1006 = load ptr, ptr %1005, align 8, !tbaa !31
  %1007 = load ptr, ptr %8, align 8, !tbaa !5
  %1008 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %1007, i32 0, i32 11
  %1009 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1008, i32 0, i32 4
  %1010 = load ptr, ptr %1009, align 8, !tbaa !31
  %1011 = getelementptr inbounds i64, ptr %1010, i64 0
  %1012 = load i64, ptr %1011, align 8, !tbaa !24
  %1013 = load i64, ptr %15, align 8, !tbaa !24
  %1014 = mul nsw i64 %1012, %1013
  %1015 = load i64, ptr %17, align 8, !tbaa !24
  %1016 = add nsw i64 %1014, %1015
  %1017 = getelementptr inbounds double, ptr %1006, i64 %1016
  %1018 = load double, ptr %1017, align 8, !tbaa !9
  %1019 = load ptr, ptr %8, align 8, !tbaa !5
  %1020 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %1019, i32 0, i32 40
  %1021 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %1020, i32 0, i32 2
  %1022 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1021, i32 0, i32 4
  %1023 = load ptr, ptr %1022, align 8, !tbaa !31
  %1024 = load i64, ptr %17, align 8, !tbaa !24
  %1025 = getelementptr inbounds double, ptr %1023, i64 %1024
  store double %1018, ptr %1025, align 8, !tbaa !9
  %1026 = load ptr, ptr %8, align 8, !tbaa !5
  %1027 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %1026, i32 0, i32 4
  %1028 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1027, i32 0, i32 4
  %1029 = load ptr, ptr %1028, align 8, !tbaa !31
  %1030 = load i64, ptr %17, align 8, !tbaa !24
  %1031 = getelementptr inbounds double, ptr %1029, i64 %1030
  %1032 = load double, ptr %1031, align 8, !tbaa !9
  %1033 = load ptr, ptr %8, align 8, !tbaa !5
  %1034 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %1033, i32 0, i32 40
  %1035 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %1034, i32 0, i32 3
  %1036 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1035, i32 0, i32 4
  %1037 = load ptr, ptr %1036, align 8, !tbaa !31
  %1038 = load i64, ptr %17, align 8, !tbaa !24
  %1039 = getelementptr inbounds double, ptr %1037, i64 %1038
  store double %1032, ptr %1039, align 8, !tbaa !9
  br label %1040

1040:                                             ; preds = %1002
  %1041 = load i64, ptr %17, align 8, !tbaa !24
  %1042 = add nsw i64 %1041, 1
  store i64 %1042, ptr %17, align 8, !tbaa !24
  br label %997, !llvm.loop !78

1043:                                             ; preds = %997
  %1044 = load ptr, ptr %8, align 8, !tbaa !5
  %1045 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %1044, i32 0, i32 40
  %1046 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %1045, i32 0, i32 5
  %1047 = load i64, ptr %21, align 8, !tbaa !24
  %1048 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %1046, i64 noundef %1047, ptr noundef %1048)
  %1049 = load ptr, ptr %8, align 8, !tbaa !5
  %1050 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %1049, i32 0, i32 40
  %1051 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %1050, i32 0, i32 6
  %1052 = load i64, ptr %21, align 8, !tbaa !24
  %1053 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %1051, i64 noundef %1052, ptr noundef %1053)
  store i64 0, ptr %17, align 8, !tbaa !24
  br label %1054

1054:                                             ; preds = %1088, %1043
  %1055 = load i64, ptr %17, align 8, !tbaa !24
  %1056 = load i64, ptr %21, align 8, !tbaa !24
  %1057 = sub nsw i64 %1056, 1
  %1058 = icmp sle i64 %1055, %1057
  br i1 %1058, label %1059, label %1091

1059:                                             ; preds = %1054
  %1060 = load ptr, ptr %8, align 8, !tbaa !5
  %1061 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %1060, i32 0, i32 10
  %1062 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1061, i32 0, i32 4
  %1063 = load ptr, ptr %1062, align 8, !tbaa !31
  %1064 = load i64, ptr %17, align 8, !tbaa !24
  %1065 = getelementptr inbounds double, ptr %1063, i64 %1064
  %1066 = load double, ptr %1065, align 8, !tbaa !9
  %1067 = load ptr, ptr %8, align 8, !tbaa !5
  %1068 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %1067, i32 0, i32 40
  %1069 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %1068, i32 0, i32 5
  %1070 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1069, i32 0, i32 4
  %1071 = load ptr, ptr %1070, align 8, !tbaa !31
  %1072 = load i64, ptr %17, align 8, !tbaa !24
  %1073 = getelementptr inbounds double, ptr %1071, i64 %1072
  store double %1066, ptr %1073, align 8, !tbaa !9
  %1074 = load ptr, ptr %8, align 8, !tbaa !5
  %1075 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %1074, i32 0, i32 66
  %1076 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1075, i32 0, i32 4
  %1077 = load ptr, ptr %1076, align 8, !tbaa !31
  %1078 = load i64, ptr %17, align 8, !tbaa !24
  %1079 = getelementptr inbounds double, ptr %1077, i64 %1078
  %1080 = load double, ptr %1079, align 8, !tbaa !9
  %1081 = load ptr, ptr %8, align 8, !tbaa !5
  %1082 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %1081, i32 0, i32 40
  %1083 = getelementptr inbounds %"struct.alglib_impl::optguardnonc0report", ptr %1082, i32 0, i32 6
  %1084 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1083, i32 0, i32 4
  %1085 = load ptr, ptr %1084, align 8, !tbaa !31
  %1086 = load i64, ptr %17, align 8, !tbaa !24
  %1087 = getelementptr inbounds double, ptr %1085, i64 %1086
  store double %1080, ptr %1087, align 8, !tbaa !9
  br label %1088

1088:                                             ; preds = %1059
  %1089 = load i64, ptr %17, align 8, !tbaa !24
  %1090 = add nsw i64 %1089, 1
  store i64 %1090, ptr %17, align 8, !tbaa !24
  br label %1054, !llvm.loop !79

1091:                                             ; preds = %1054
  br label %1092

1092:                                             ; preds = %1091, %922
  br label %1093

1093:                                             ; preds = %1092, %633
  br label %1094

1094:                                             ; preds = %1093, %632
  %1095 = load i64, ptr %24, align 8, !tbaa !24
  %1096 = add nsw i64 %1095, 1
  store i64 %1096, ptr %24, align 8, !tbaa !24
  br label %555, !llvm.loop !80

1097:                                             ; preds = %555
  br label %1098

1098:                                             ; preds = %1097, %551
  store i64 0, ptr %24, align 8, !tbaa !24
  br label %1099

1099:                                             ; preds = %1193, %1098
  %1100 = load i64, ptr %24, align 8, !tbaa !24
  %1101 = load i64, ptr %21, align 8, !tbaa !24
  %1102 = sub nsw i64 %1101, 7
  %1103 = icmp sle i64 %1100, %1102
  br i1 %1103, label %1104, label %1196

1104:                                             ; preds = %1099
  %1105 = load ptr, ptr %8, align 8, !tbaa !5
  %1106 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %1105, i32 0, i32 66
  %1107 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1106, i32 0, i32 4
  %1108 = load ptr, ptr %1107, align 8, !tbaa !31
  %1109 = load i64, ptr %24, align 8, !tbaa !24
  %1110 = add nsw i64 %1109, 2
  %1111 = getelementptr inbounds double, ptr %1108, i64 %1110
  %1112 = load double, ptr %1111, align 8, !tbaa !9
  store double %1112, ptr %27, align 8, !tbaa !9
  %1113 = load ptr, ptr %8, align 8, !tbaa !5
  %1114 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %1113, i32 0, i32 66
  %1115 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1114, i32 0, i32 4
  %1116 = load ptr, ptr %1115, align 8, !tbaa !31
  %1117 = load i64, ptr %24, align 8, !tbaa !24
  %1118 = add nsw i64 %1117, 3
  %1119 = getelementptr inbounds double, ptr %1116, i64 %1118
  %1120 = load double, ptr %1119, align 8, !tbaa !9
  store double %1120, ptr %28, align 8, !tbaa !9
  %1121 = load ptr, ptr %8, align 8, !tbaa !5
  %1122 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %1121, i32 0, i32 66
  %1123 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1122, i32 0, i32 4
  %1124 = load ptr, ptr %1123, align 8, !tbaa !31
  %1125 = load i64, ptr %24, align 8, !tbaa !24
  %1126 = add nsw i64 %1125, 4
  %1127 = getelementptr inbounds double, ptr %1124, i64 %1126
  %1128 = load double, ptr %1127, align 8, !tbaa !9
  store double %1128, ptr %29, align 8, !tbaa !9
  %1129 = load double, ptr @_ZN11alglib_implL21optserv_ognoiselevelfE, align 8, !tbaa !9
  %1130 = load double, ptr %27, align 8, !tbaa !9
  %1131 = load ptr, ptr %14, align 8, !tbaa !5
  %1132 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1130, ptr noundef %1131)
  %1133 = load ptr, ptr %14, align 8, !tbaa !5
  %1134 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1132, double noundef 1.000000e+00, ptr noundef %1133)
  %1135 = fmul double %1129, %1134
  store double %1135, ptr %32, align 8, !tbaa !9
  %1136 = load double, ptr @_ZN11alglib_implL21optserv_ognoiselevelfE, align 8, !tbaa !9
  %1137 = load double, ptr %28, align 8, !tbaa !9
  %1138 = load ptr, ptr %14, align 8, !tbaa !5
  %1139 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1137, ptr noundef %1138)
  %1140 = load ptr, ptr %14, align 8, !tbaa !5
  %1141 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1139, double noundef 1.000000e+00, ptr noundef %1140)
  %1142 = fmul double %1136, %1141
  store double %1142, ptr %33, align 8, !tbaa !9
  %1143 = load i64, ptr %23, align 8, !tbaa !24
  %1144 = icmp eq i64 %1143, 0
  br i1 %1144, label %1145, label %1159

1145:                                             ; preds = %1104
  %1146 = load double, ptr %28, align 8, !tbaa !9
  %1147 = load double, ptr %27, align 8, !tbaa !9
  %1148 = load double, ptr %32, align 8, !tbaa !9
  %1149 = load double, ptr %33, align 8, !tbaa !9
  %1150 = fadd double %1148, %1149
  %1151 = fadd double %1147, %1150
  %1152 = fcmp olt double %1146, %1151
  br i1 %1152, label %1153, label %1157

1153:                                             ; preds = %1145
  %1154 = load double, ptr %28, align 8, !tbaa !9
  %1155 = load double, ptr %29, align 8, !tbaa !9
  %1156 = fcmp olt double %1154, %1155
  br i1 %1156, label %1158, label %1157

1157:                                             ; preds = %1153, %1145
  br label %1193

1158:                                             ; preds = %1153
  br label %1180

1159:                                             ; preds = %1104
  %1160 = load double, ptr %27, align 8, !tbaa !9
  %1161 = load double, ptr %29, align 8, !tbaa !9
  %1162 = fmul double %1160, %1161
  %1163 = load ptr, ptr %14, align 8, !tbaa !5
  %1164 = call noundef i64 @_ZN11alglib_impl7ae_signEdPNS_8ae_stateE(double noundef %1162, ptr noundef %1163)
  %1165 = icmp sgt i64 %1164, 0
  br i1 %1165, label %1166, label %1179

1166:                                             ; preds = %1159
  %1167 = load double, ptr %28, align 8, !tbaa !9
  %1168 = load double, ptr %27, align 8, !tbaa !9
  %1169 = load double, ptr %32, align 8, !tbaa !9
  %1170 = load double, ptr %33, align 8, !tbaa !9
  %1171 = fadd double %1169, %1170
  %1172 = fadd double %1168, %1171
  %1173 = fcmp olt double %1167, %1172
  br i1 %1173, label %1174, label %1178

1174:                                             ; preds = %1166
  %1175 = load double, ptr %28, align 8, !tbaa !9
  %1176 = load double, ptr %29, align 8, !tbaa !9
  %1177 = fcmp olt double %1175, %1176
  br i1 %1177, label %1179, label %1178

1178:                                             ; preds = %1174, %1166
  br label %1193

1179:                                             ; preds = %1174, %1159
  br label %1180

1180:                                             ; preds = %1179, %1158
  %1181 = load ptr, ptr %8, align 8, !tbaa !5
  %1182 = load i64, ptr %23, align 8, !tbaa !24
  %1183 = load i64, ptr %24, align 8, !tbaa !24
  %1184 = add nsw i64 %1183, 0
  %1185 = load i64, ptr %21, align 8, !tbaa !24
  %1186 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL25optserv_c1continuitytest0EPNS_17smoothnessmonitorElllPNS_8ae_stateE(ptr noundef %1181, i64 noundef %1182, i64 noundef %1184, i64 noundef %1185, ptr noundef %1186)
  %1187 = load ptr, ptr %8, align 8, !tbaa !5
  %1188 = load i64, ptr %23, align 8, !tbaa !24
  %1189 = load i64, ptr %24, align 8, !tbaa !24
  %1190 = add nsw i64 %1189, 1
  %1191 = load i64, ptr %21, align 8, !tbaa !24
  %1192 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL25optserv_c1continuitytest0EPNS_17smoothnessmonitorElllPNS_8ae_stateE(ptr noundef %1187, i64 noundef %1188, i64 noundef %1190, i64 noundef %1191, ptr noundef %1192)
  br label %1193

1193:                                             ; preds = %1180, %1178, %1157
  %1194 = load i64, ptr %24, align 8, !tbaa !24
  %1195 = add nsw i64 %1194, 1
  store i64 %1195, ptr %24, align 8, !tbaa !24
  br label %1099, !llvm.loop !81

1196:                                             ; preds = %1099
  store i64 0, ptr %24, align 8, !tbaa !24
  br label %1197

1197:                                             ; preds = %1314, %1196
  %1198 = load i64, ptr %24, align 8, !tbaa !24
  %1199 = load i64, ptr %21, align 8, !tbaa !24
  %1200 = sub nsw i64 %1199, 4
  %1201 = icmp sle i64 %1198, %1200
  br i1 %1201, label %1202, label %1317

1202:                                             ; preds = %1197
  %1203 = load ptr, ptr %8, align 8, !tbaa !5
  %1204 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %1203, i32 0, i32 66
  %1205 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1204, i32 0, i32 4
  %1206 = load ptr, ptr %1205, align 8, !tbaa !31
  %1207 = load i64, ptr %24, align 8, !tbaa !24
  %1208 = add nsw i64 %1207, 0
  %1209 = getelementptr inbounds double, ptr %1206, i64 %1208
  %1210 = load double, ptr %1209, align 8, !tbaa !9
  store double %1210, ptr %25, align 8, !tbaa !9
  %1211 = load ptr, ptr %8, align 8, !tbaa !5
  %1212 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %1211, i32 0, i32 66
  %1213 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1212, i32 0, i32 4
  %1214 = load ptr, ptr %1213, align 8, !tbaa !31
  %1215 = load i64, ptr %24, align 8, !tbaa !24
  %1216 = add nsw i64 %1215, 1
  %1217 = getelementptr inbounds double, ptr %1214, i64 %1216
  %1218 = load double, ptr %1217, align 8, !tbaa !9
  store double %1218, ptr %26, align 8, !tbaa !9
  %1219 = load ptr, ptr %8, align 8, !tbaa !5
  %1220 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %1219, i32 0, i32 66
  %1221 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1220, i32 0, i32 4
  %1222 = load ptr, ptr %1221, align 8, !tbaa !31
  %1223 = load i64, ptr %24, align 8, !tbaa !24
  %1224 = add nsw i64 %1223, 2
  %1225 = getelementptr inbounds double, ptr %1222, i64 %1224
  %1226 = load double, ptr %1225, align 8, !tbaa !9
  store double %1226, ptr %27, align 8, !tbaa !9
  %1227 = load ptr, ptr %8, align 8, !tbaa !5
  %1228 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %1227, i32 0, i32 66
  %1229 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1228, i32 0, i32 4
  %1230 = load ptr, ptr %1229, align 8, !tbaa !31
  %1231 = load i64, ptr %24, align 8, !tbaa !24
  %1232 = add nsw i64 %1231, 3
  %1233 = getelementptr inbounds double, ptr %1230, i64 %1232
  %1234 = load double, ptr %1233, align 8, !tbaa !9
  store double %1234, ptr %28, align 8, !tbaa !9
  %1235 = load double, ptr @_ZN11alglib_implL21optserv_ognoiselevelfE, align 8, !tbaa !9
  %1236 = load double, ptr %25, align 8, !tbaa !9
  %1237 = load ptr, ptr %14, align 8, !tbaa !5
  %1238 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1236, ptr noundef %1237)
  %1239 = load ptr, ptr %14, align 8, !tbaa !5
  %1240 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1238, double noundef 1.000000e+00, ptr noundef %1239)
  %1241 = fmul double %1235, %1240
  store double %1241, ptr %30, align 8, !tbaa !9
  %1242 = load double, ptr @_ZN11alglib_implL21optserv_ognoiselevelfE, align 8, !tbaa !9
  %1243 = load double, ptr %26, align 8, !tbaa !9
  %1244 = load ptr, ptr %14, align 8, !tbaa !5
  %1245 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1243, ptr noundef %1244)
  %1246 = load ptr, ptr %14, align 8, !tbaa !5
  %1247 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1245, double noundef 1.000000e+00, ptr noundef %1246)
  %1248 = fmul double %1242, %1247
  store double %1248, ptr %31, align 8, !tbaa !9
  %1249 = load double, ptr @_ZN11alglib_implL21optserv_ognoiselevelfE, align 8, !tbaa !9
  %1250 = load double, ptr %27, align 8, !tbaa !9
  %1251 = load ptr, ptr %14, align 8, !tbaa !5
  %1252 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1250, ptr noundef %1251)
  %1253 = load ptr, ptr %14, align 8, !tbaa !5
  %1254 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1252, double noundef 1.000000e+00, ptr noundef %1253)
  %1255 = fmul double %1249, %1254
  store double %1255, ptr %32, align 8, !tbaa !9
  %1256 = load double, ptr @_ZN11alglib_implL21optserv_ognoiselevelfE, align 8, !tbaa !9
  %1257 = load double, ptr %28, align 8, !tbaa !9
  %1258 = load ptr, ptr %14, align 8, !tbaa !5
  %1259 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1257, ptr noundef %1258)
  %1260 = load ptr, ptr %14, align 8, !tbaa !5
  %1261 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1259, double noundef 1.000000e+00, ptr noundef %1260)
  %1262 = fmul double %1256, %1261
  store double %1262, ptr %33, align 8, !tbaa !9
  %1263 = load i64, ptr %23, align 8, !tbaa !24
  %1264 = icmp eq i64 %1263, 0
  br i1 %1264, label %1265, label %1283

1265:                                             ; preds = %1202
  %1266 = load double, ptr %26, align 8, !tbaa !9
  %1267 = load double, ptr %25, align 8, !tbaa !9
  %1268 = load double, ptr %30, align 8, !tbaa !9
  %1269 = load double, ptr %31, align 8, !tbaa !9
  %1270 = fadd double %1268, %1269
  %1271 = fadd double %1267, %1270
  %1272 = fcmp olt double %1266, %1271
  br i1 %1272, label %1273, label %1281

1273:                                             ; preds = %1265
  %1274 = load double, ptr %27, align 8, !tbaa !9
  %1275 = load double, ptr %28, align 8, !tbaa !9
  %1276 = load double, ptr %32, align 8, !tbaa !9
  %1277 = fadd double %1275, %1276
  %1278 = load double, ptr %33, align 8, !tbaa !9
  %1279 = fadd double %1277, %1278
  %1280 = fcmp olt double %1274, %1279
  br i1 %1280, label %1282, label %1281

1281:                                             ; preds = %1273, %1265
  br label %1314

1282:                                             ; preds = %1273
  br label %1308

1283:                                             ; preds = %1202
  %1284 = load double, ptr %25, align 8, !tbaa !9
  %1285 = load double, ptr %28, align 8, !tbaa !9
  %1286 = fmul double %1284, %1285
  %1287 = load ptr, ptr %14, align 8, !tbaa !5
  %1288 = call noundef i64 @_ZN11alglib_impl7ae_signEdPNS_8ae_stateE(double noundef %1286, ptr noundef %1287)
  %1289 = icmp sgt i64 %1288, 0
  br i1 %1289, label %1290, label %1307

1290:                                             ; preds = %1283
  %1291 = load double, ptr %26, align 8, !tbaa !9
  %1292 = load double, ptr %25, align 8, !tbaa !9
  %1293 = load double, ptr %30, align 8, !tbaa !9
  %1294 = load double, ptr %31, align 8, !tbaa !9
  %1295 = fadd double %1293, %1294
  %1296 = fadd double %1292, %1295
  %1297 = fcmp olt double %1291, %1296
  br i1 %1297, label %1298, label %1306

1298:                                             ; preds = %1290
  %1299 = load double, ptr %27, align 8, !tbaa !9
  %1300 = load double, ptr %28, align 8, !tbaa !9
  %1301 = load double, ptr %32, align 8, !tbaa !9
  %1302 = fadd double %1300, %1301
  %1303 = load double, ptr %33, align 8, !tbaa !9
  %1304 = fadd double %1302, %1303
  %1305 = fcmp olt double %1299, %1304
  br i1 %1305, label %1307, label %1306

1306:                                             ; preds = %1298, %1290
  br label %1314

1307:                                             ; preds = %1298, %1283
  br label %1308

1308:                                             ; preds = %1307, %1282
  %1309 = load ptr, ptr %8, align 8, !tbaa !5
  %1310 = load i64, ptr %23, align 8, !tbaa !24
  %1311 = load i64, ptr %24, align 8, !tbaa !24
  %1312 = load i64, ptr %21, align 8, !tbaa !24
  %1313 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_implL25optserv_c1continuitytest1EPNS_17smoothnessmonitorElllPNS_8ae_stateE(ptr noundef %1309, i64 noundef %1310, i64 noundef %1311, i64 noundef %1312, ptr noundef %1313)
  br label %1314

1314:                                             ; preds = %1308, %1306, %1281
  %1315 = load i64, ptr %24, align 8, !tbaa !24
  %1316 = add nsw i64 %1315, 1
  store i64 %1316, ptr %24, align 8, !tbaa !24
  br label %1197, !llvm.loop !82

1317:                                             ; preds = %1197
  br label %1318

1318:                                             ; preds = %1317
  %1319 = load i64, ptr %23, align 8, !tbaa !24
  %1320 = add nsw i64 %1319, 1
  store i64 %1320, ptr %23, align 8, !tbaa !24
  br label %473, !llvm.loop !83

1321:                                             ; preds = %473
  store i32 0, ptr %38, align 4
  br label %1322

1322:                                             ; preds = %1321, %150, %59
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #4
  %1323 = load i32, ptr %38, align 4
  switch i32 %1323, label %1325 [
    i32 0, label %1324
    i32 1, label %1324
  ]

1324:                                             ; preds = %1322, %1322
  ret void

1325:                                             ; preds = %1322
  unreachable
}

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN11alglib_implL24optserv_testc0continuityEdddddddddddbPdS0_PNS_8ae_stateE(double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, i1 noundef zeroext, ptr noundef, ptr noundef, ptr noundef) #3

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

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

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

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

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

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


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

@_ZN11alglib_implL21optserv_ognoiselevelfE = external hidden local_unnamed_addr global double, align 8
@_ZN11alglib_implL20optserv_ogminrating0E = external hidden local_unnamed_addr global double, align 8

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

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

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

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

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

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

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

declare noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef, ptr noundef) local_unnamed_addr #2

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

declare void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef, ptr noundef) local_unnamed_addr #2

declare noundef i64 @_ZN11alglib_impl7ae_signEdPNS_8ae_stateE(double noundef, ptr noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl17rmatrixgrowrowstoEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl13ivectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl29smoothnessmonitorenqueuepointEPNS_17smoothnessmonitorEPKNS_9ae_vectorEdS4_S4_PKNS_9ae_matrixEPNS_8ae_stateE(ptr noundef %0, ptr nocapture noundef readonly %1, double noundef %2, ptr nocapture noundef readonly %3, ptr nocapture noundef readonly %4, ptr nocapture noundef readonly %5, ptr noundef %6) local_unnamed_addr #3 {
  %8 = alloca double, align 8
  %9 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #4
  %10 = load i64, ptr %0, align 8, !tbaa !5
  %11 = getelementptr inbounds i8, ptr %0, i64 8
  %12 = load i64, ptr %11, align 8, !tbaa !22
  %13 = getelementptr inbounds i8, ptr %0, i64 16
  %14 = load i8, ptr %13, align 8, !tbaa !23, !range !24, !noundef !25
  %15 = trunc nuw i8 %14 to i1
  br i1 %15, label %16, label %.loopexit515

16:                                               ; preds = %7
  %17 = getelementptr inbounds i8, ptr %0, i64 1504
  %18 = load i8, ptr %17, align 8, !tbaa !26, !range !24, !noundef !25
  %19 = trunc nuw i8 %18 to i1
  br i1 %19, label %.loopexit515, label %20

20:                                               ; preds = %16
  %21 = getelementptr inbounds i8, ptr %0, i64 1505
  %22 = load i8, ptr %21, align 1, !tbaa !27, !range !24, !noundef !25
  %23 = trunc nuw i8 %22 to i1
  br i1 %23, label %.preheader525, label %.loopexit515

.preheader525:                                    ; preds = %20
  %.not.not526 = icmp slt i64 %10, 1
  br i1 %.not.not526, label %.preheader523, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader525
  %24 = getelementptr inbounds i8, ptr %3, i64 56
  %25 = load ptr, ptr %24, align 8, !tbaa !28
  %26 = add nsw i64 %10, -1
  %xtraiter = and i64 %10, 3
  %27 = icmp ult i64 %10, 4
  br i1 %27, label %.preheader524.unr-lcssa, label %.lr.ph.new

.lr.ph.new:                                       ; preds = %.lr.ph
  %unroll_iter = and i64 %10, 9223372036854775804
  br label %35

.preheader524.unr-lcssa:                          ; preds = %35, %.lr.ph
  %.lcssa673.ph = phi double [ poison, %.lr.ph ], [ %50, %35 ]
  %.0528.unr = phi i64 [ 0, %.lr.ph ], [ %51, %35 ]
  %.0472527.unr = phi double [ %2, %.lr.ph ], [ %50, %35 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.preheader524, label %.epil.preheader

.epil.preheader:                                  ; preds = %.preheader524.unr-lcssa, %.epil.preheader
  %.0528.epil = phi i64 [ %31, %.epil.preheader ], [ %.0528.unr, %.preheader524.unr-lcssa ]
  %.0472527.epil = phi double [ %30, %.epil.preheader ], [ %.0472527.unr, %.preheader524.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader ], [ 0, %.preheader524.unr-lcssa ]
  %28 = getelementptr inbounds double, ptr %25, i64 %.0528.epil
  %29 = load double, ptr %28, align 8, !tbaa !29
  %30 = tail call double @llvm.fmuladd.f64(double %.0472527.epil, double 5.000000e-01, double %29)
  %31 = add nuw nsw i64 %.0528.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %.preheader524, label %.epil.preheader, !llvm.loop !30

.preheader524:                                    ; preds = %.epil.preheader, %.preheader524.unr-lcssa
  %.lcssa673 = phi double [ %.lcssa673.ph, %.preheader524.unr-lcssa ], [ %30, %.epil.preheader ]
  br i1 %.not.not526, label %.preheader523, label %.lr.ph532

.lr.ph532:                                        ; preds = %.preheader524
  %32 = getelementptr inbounds i8, ptr %1, i64 56
  %33 = load ptr, ptr %32, align 8, !tbaa !28
  %xtraiter676 = and i64 %10, 3
  %34 = icmp ult i64 %26, 3
  br i1 %34, label %.preheader523.loopexit.unr-lcssa, label %.lr.ph532.new

.lr.ph532.new:                                    ; preds = %.lr.ph532
  %unroll_iter680 = and i64 %10, 9223372036854775804
  br label %59

35:                                               ; preds = %35, %.lr.ph.new
  %.0528 = phi i64 [ 0, %.lr.ph.new ], [ %51, %35 ]
  %.0472527 = phi double [ %2, %.lr.ph.new ], [ %50, %35 ]
  %niter = phi i64 [ 0, %.lr.ph.new ], [ %niter.next.3, %35 ]
  %36 = getelementptr inbounds double, ptr %25, i64 %.0528
  %37 = load double, ptr %36, align 8, !tbaa !29
  %38 = tail call double @llvm.fmuladd.f64(double %.0472527, double 5.000000e-01, double %37)
  %39 = or disjoint i64 %.0528, 1
  %40 = getelementptr inbounds double, ptr %25, i64 %39
  %41 = load double, ptr %40, align 8, !tbaa !29
  %42 = tail call double @llvm.fmuladd.f64(double %38, double 5.000000e-01, double %41)
  %43 = or disjoint i64 %.0528, 2
  %44 = getelementptr inbounds double, ptr %25, i64 %43
  %45 = load double, ptr %44, align 8, !tbaa !29
  %46 = tail call double @llvm.fmuladd.f64(double %42, double 5.000000e-01, double %45)
  %47 = or disjoint i64 %.0528, 3
  %48 = getelementptr inbounds double, ptr %25, i64 %47
  %49 = load double, ptr %48, align 8, !tbaa !29
  %50 = tail call double @llvm.fmuladd.f64(double %46, double 5.000000e-01, double %49)
  %51 = add nuw nsw i64 %.0528, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %.preheader524.unr-lcssa, label %35, !llvm.loop !32

.preheader523.loopexit.unr-lcssa:                 ; preds = %59, %.lr.ph532
  %.lcssa672.ph = phi double [ poison, %.lr.ph532 ], [ %74, %59 ]
  %.1531.unr = phi i64 [ 0, %.lr.ph532 ], [ %75, %59 ]
  %.1473530.unr = phi double [ %.lcssa673, %.lr.ph532 ], [ %74, %59 ]
  %lcmp.mod678.not = icmp eq i64 %xtraiter676, 0
  br i1 %lcmp.mod678.not, label %.preheader523, label %.epil.preheader675

.epil.preheader675:                               ; preds = %.preheader523.loopexit.unr-lcssa, %.epil.preheader675
  %.1531.epil = phi i64 [ %55, %.epil.preheader675 ], [ %.1531.unr, %.preheader523.loopexit.unr-lcssa ]
  %.1473530.epil = phi double [ %54, %.epil.preheader675 ], [ %.1473530.unr, %.preheader523.loopexit.unr-lcssa ]
  %epil.iter677 = phi i64 [ %epil.iter677.next, %.epil.preheader675 ], [ 0, %.preheader523.loopexit.unr-lcssa ]
  %52 = getelementptr inbounds double, ptr %33, i64 %.1531.epil
  %53 = load double, ptr %52, align 8, !tbaa !29
  %54 = tail call double @llvm.fmuladd.f64(double %.1473530.epil, double 5.000000e-01, double %53)
  %55 = add nuw nsw i64 %.1531.epil, 1
  %epil.iter677.next = add i64 %epil.iter677, 1
  %epil.iter677.cmp.not = icmp eq i64 %epil.iter677.next, %xtraiter676
  br i1 %epil.iter677.cmp.not, label %.preheader523, label %.epil.preheader675, !llvm.loop !34

.preheader523:                                    ; preds = %.preheader523.loopexit.unr-lcssa, %.epil.preheader675, %.preheader525, %.preheader524
  %.1473.lcssa = phi double [ %.lcssa673, %.preheader524 ], [ %2, %.preheader525 ], [ %.lcssa672.ph, %.preheader523.loopexit.unr-lcssa ], [ %54, %.epil.preheader675 ]
  %.not.not490534 = icmp slt i64 %12, 1
  br i1 %.not.not490534, label %._crit_edge547, label %.lr.ph537

.lr.ph537:                                        ; preds = %.preheader523
  %56 = getelementptr inbounds i8, ptr %4, i64 56
  %57 = load ptr, ptr %56, align 8, !tbaa !28
  %xtraiter683 = and i64 %12, 3
  %58 = icmp ult i64 %12, 4
  br i1 %58, label %.preheader522.unr-lcssa, label %.lr.ph537.new

.lr.ph537.new:                                    ; preds = %.lr.ph537
  %unroll_iter687 = and i64 %12, 9223372036854775804
  br label %107

59:                                               ; preds = %59, %.lr.ph532.new
  %.1531 = phi i64 [ 0, %.lr.ph532.new ], [ %75, %59 ]
  %.1473530 = phi double [ %.lcssa673, %.lr.ph532.new ], [ %74, %59 ]
  %niter681 = phi i64 [ 0, %.lr.ph532.new ], [ %niter681.next.3, %59 ]
  %60 = getelementptr inbounds double, ptr %33, i64 %.1531
  %61 = load double, ptr %60, align 8, !tbaa !29
  %62 = tail call double @llvm.fmuladd.f64(double %.1473530, double 5.000000e-01, double %61)
  %63 = or disjoint i64 %.1531, 1
  %64 = getelementptr inbounds double, ptr %33, i64 %63
  %65 = load double, ptr %64, align 8, !tbaa !29
  %66 = tail call double @llvm.fmuladd.f64(double %62, double 5.000000e-01, double %65)
  %67 = or disjoint i64 %.1531, 2
  %68 = getelementptr inbounds double, ptr %33, i64 %67
  %69 = load double, ptr %68, align 8, !tbaa !29
  %70 = tail call double @llvm.fmuladd.f64(double %66, double 5.000000e-01, double %69)
  %71 = or disjoint i64 %.1531, 3
  %72 = getelementptr inbounds double, ptr %33, i64 %71
  %73 = load double, ptr %72, align 8, !tbaa !29
  %74 = tail call double @llvm.fmuladd.f64(double %70, double 5.000000e-01, double %73)
  %75 = add nuw nsw i64 %.1531, 4
  %niter681.next.3 = add i64 %niter681, 4
  %niter681.ncmp.3 = icmp eq i64 %niter681.next.3, %unroll_iter680
  br i1 %niter681.ncmp.3, label %.preheader523.loopexit.unr-lcssa, label %59, !llvm.loop !35

.preheader522.unr-lcssa:                          ; preds = %107, %.lr.ph537
  %.lcssa671.ph = phi double [ poison, %.lr.ph537 ], [ %122, %107 ]
  %.2536.unr = phi i64 [ 0, %.lr.ph537 ], [ %123, %107 ]
  %.2474535.unr = phi double [ %.1473.lcssa, %.lr.ph537 ], [ %122, %107 ]
  %lcmp.mod685.not = icmp eq i64 %xtraiter683, 0
  br i1 %lcmp.mod685.not, label %.preheader522, label %.epil.preheader682

.epil.preheader682:                               ; preds = %.preheader522.unr-lcssa, %.epil.preheader682
  %.2536.epil = phi i64 [ %79, %.epil.preheader682 ], [ %.2536.unr, %.preheader522.unr-lcssa ]
  %.2474535.epil = phi double [ %78, %.epil.preheader682 ], [ %.2474535.unr, %.preheader522.unr-lcssa ]
  %epil.iter684 = phi i64 [ %epil.iter684.next, %.epil.preheader682 ], [ 0, %.preheader522.unr-lcssa ]
  %76 = getelementptr inbounds double, ptr %57, i64 %.2536.epil
  %77 = load double, ptr %76, align 8, !tbaa !29
  %78 = tail call double @llvm.fmuladd.f64(double %.2474535.epil, double 5.000000e-01, double %77)
  %79 = add nuw nsw i64 %.2536.epil, 1
  %epil.iter684.next = add i64 %epil.iter684, 1
  %epil.iter684.cmp.not = icmp eq i64 %epil.iter684.next, %xtraiter683
  br i1 %epil.iter684.cmp.not, label %.preheader522, label %.epil.preheader682, !llvm.loop !36

.preheader522:                                    ; preds = %.epil.preheader682, %.preheader522.unr-lcssa
  %.lcssa671 = phi double [ %.lcssa671.ph, %.preheader522.unr-lcssa ], [ %78, %.epil.preheader682 ]
  %brmerge661 = or i1 %.not.not490534, %.not.not526
  br i1 %brmerge661, label %._crit_edge547, label %.preheader521.lr.ph.split.us

.preheader521.lr.ph.split.us:                     ; preds = %.preheader522
  %80 = getelementptr inbounds i8, ptr %5, i64 72
  %81 = load ptr, ptr %80, align 8, !tbaa !28
  %82 = add nsw i64 %10, -1
  %xtraiter690 = and i64 %10, 3
  %83 = icmp ult i64 %82, 3
  %unroll_iter694 = and i64 %10, 9223372036854775804
  %lcmp.mod692.not = icmp eq i64 %xtraiter690, 0
  br label %.preheader521.us

.preheader521.us:                                 ; preds = %._crit_edge.us, %.preheader521.lr.ph.split.us
  %.3546.us = phi i64 [ 0, %.preheader521.lr.ph.split.us ], [ %106, %._crit_edge.us ]
  %.3475545.us = phi double [ %.lcssa671, %.preheader521.lr.ph.split.us ], [ %.lcssa670, %._crit_edge.us ]
  %84 = getelementptr inbounds ptr, ptr %81, i64 %.3546.us
  %85 = load ptr, ptr %84, align 8, !tbaa !37
  br i1 %83, label %._crit_edge.us.unr-lcssa, label %.preheader521.us.new

.preheader521.us.new:                             ; preds = %.preheader521.us, %.preheader521.us.new
  %.0461541.us = phi i64 [ %101, %.preheader521.us.new ], [ 0, %.preheader521.us ]
  %.4476540.us = phi double [ %100, %.preheader521.us.new ], [ %.3475545.us, %.preheader521.us ]
  %niter695 = phi i64 [ %niter695.next.3, %.preheader521.us.new ], [ 0, %.preheader521.us ]
  %86 = getelementptr inbounds double, ptr %85, i64 %.0461541.us
  %87 = load double, ptr %86, align 8, !tbaa !29
  %88 = tail call double @llvm.fmuladd.f64(double %.4476540.us, double 5.000000e-01, double %87)
  %89 = or disjoint i64 %.0461541.us, 1
  %90 = getelementptr inbounds double, ptr %85, i64 %89
  %91 = load double, ptr %90, align 8, !tbaa !29
  %92 = tail call double @llvm.fmuladd.f64(double %88, double 5.000000e-01, double %91)
  %93 = or disjoint i64 %.0461541.us, 2
  %94 = getelementptr inbounds double, ptr %85, i64 %93
  %95 = load double, ptr %94, align 8, !tbaa !29
  %96 = tail call double @llvm.fmuladd.f64(double %92, double 5.000000e-01, double %95)
  %97 = or disjoint i64 %.0461541.us, 3
  %98 = getelementptr inbounds double, ptr %85, i64 %97
  %99 = load double, ptr %98, align 8, !tbaa !29
  %100 = tail call double @llvm.fmuladd.f64(double %96, double 5.000000e-01, double %99)
  %101 = add nuw nsw i64 %.0461541.us, 4
  %niter695.next.3 = add i64 %niter695, 4
  %niter695.ncmp.3 = icmp eq i64 %niter695.next.3, %unroll_iter694
  br i1 %niter695.ncmp.3, label %._crit_edge.us.unr-lcssa, label %.preheader521.us.new, !llvm.loop !38

._crit_edge.us.unr-lcssa:                         ; preds = %.preheader521.us.new, %.preheader521.us
  %.lcssa670.ph = phi double [ poison, %.preheader521.us ], [ %100, %.preheader521.us.new ]
  %.0461541.us.unr = phi i64 [ 0, %.preheader521.us ], [ %101, %.preheader521.us.new ]
  %.4476540.us.unr = phi double [ %.3475545.us, %.preheader521.us ], [ %100, %.preheader521.us.new ]
  br i1 %lcmp.mod692.not, label %._crit_edge.us, label %.epil.preheader689

.epil.preheader689:                               ; preds = %._crit_edge.us.unr-lcssa, %.epil.preheader689
  %.0461541.us.epil = phi i64 [ %105, %.epil.preheader689 ], [ %.0461541.us.unr, %._crit_edge.us.unr-lcssa ]
  %.4476540.us.epil = phi double [ %104, %.epil.preheader689 ], [ %.4476540.us.unr, %._crit_edge.us.unr-lcssa ]
  %epil.iter691 = phi i64 [ %epil.iter691.next, %.epil.preheader689 ], [ 0, %._crit_edge.us.unr-lcssa ]
  %102 = getelementptr inbounds double, ptr %85, i64 %.0461541.us.epil
  %103 = load double, ptr %102, align 8, !tbaa !29
  %104 = tail call double @llvm.fmuladd.f64(double %.4476540.us.epil, double 5.000000e-01, double %103)
  %105 = add nuw nsw i64 %.0461541.us.epil, 1
  %epil.iter691.next = add i64 %epil.iter691, 1
  %epil.iter691.cmp.not = icmp eq i64 %epil.iter691.next, %xtraiter690
  br i1 %epil.iter691.cmp.not, label %._crit_edge.us, label %.epil.preheader689, !llvm.loop !39

._crit_edge.us:                                   ; preds = %.epil.preheader689, %._crit_edge.us.unr-lcssa
  %.lcssa670 = phi double [ %.lcssa670.ph, %._crit_edge.us.unr-lcssa ], [ %104, %.epil.preheader689 ]
  %106 = add nuw nsw i64 %.3546.us, 1
  %exitcond633.not = icmp eq i64 %106, %12
  br i1 %exitcond633.not, label %._crit_edge547, label %.preheader521.us, !llvm.loop !40

107:                                              ; preds = %107, %.lr.ph537.new
  %.2536 = phi i64 [ 0, %.lr.ph537.new ], [ %123, %107 ]
  %.2474535 = phi double [ %.1473.lcssa, %.lr.ph537.new ], [ %122, %107 ]
  %niter688 = phi i64 [ 0, %.lr.ph537.new ], [ %niter688.next.3, %107 ]
  %108 = getelementptr inbounds double, ptr %57, i64 %.2536
  %109 = load double, ptr %108, align 8, !tbaa !29
  %110 = tail call double @llvm.fmuladd.f64(double %.2474535, double 5.000000e-01, double %109)
  %111 = or disjoint i64 %.2536, 1
  %112 = getelementptr inbounds double, ptr %57, i64 %111
  %113 = load double, ptr %112, align 8, !tbaa !29
  %114 = tail call double @llvm.fmuladd.f64(double %110, double 5.000000e-01, double %113)
  %115 = or disjoint i64 %.2536, 2
  %116 = getelementptr inbounds double, ptr %57, i64 %115
  %117 = load double, ptr %116, align 8, !tbaa !29
  %118 = tail call double @llvm.fmuladd.f64(double %114, double 5.000000e-01, double %117)
  %119 = or disjoint i64 %.2536, 3
  %120 = getelementptr inbounds double, ptr %57, i64 %119
  %121 = load double, ptr %120, align 8, !tbaa !29
  %122 = tail call double @llvm.fmuladd.f64(double %118, double 5.000000e-01, double %121)
  %123 = add nuw nsw i64 %.2536, 4
  %niter688.next.3 = add i64 %niter688, 4
  %niter688.ncmp.3 = icmp eq i64 %niter688.next.3, %unroll_iter687
  br i1 %niter688.ncmp.3, label %.preheader522.unr-lcssa, label %107, !llvm.loop !41

._crit_edge547:                                   ; preds = %._crit_edge.us, %.preheader522, %.preheader523
  %.3475.lcssa = phi double [ %.lcssa671, %.preheader522 ], [ %.1473.lcssa, %.preheader523 ], [ %.lcssa670, %._crit_edge.us ]
  %124 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %.3475.lcssa, ptr noundef %6)
  br i1 %124, label %126, label %125

125:                                              ; preds = %._crit_edge547
  store i8 1, ptr %17, align 8, !tbaa !26
  br label %.loopexit515

126:                                              ; preds = %._crit_edge547
  %127 = getelementptr inbounds i8, ptr %0, i64 152
  tail call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %127, ptr noundef %6)
  %128 = load i64, ptr %127, align 8, !tbaa !42
  %129 = getelementptr inbounds i8, ptr %0, i64 88
  tail call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %129, i64 noundef %10, ptr noundef %6)
  %130 = getelementptr inbounds i8, ptr %0, i64 160
  tail call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %130, i64 noundef %128, ptr noundef %6)
  %131 = getelementptr inbounds i8, ptr %0, i64 224
  %132 = mul nsw i64 %128, %10
  tail call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %131, i64 noundef %132, ptr noundef %6)
  %133 = getelementptr inbounds i8, ptr %0, i64 288
  %134 = mul nsw i64 %128, %12
  tail call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %133, i64 noundef %134, ptr noundef %6)
  %135 = getelementptr inbounds i8, ptr %0, i64 352
  tail call void @_ZN11alglib_impl17rmatrixgrowrowstoEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %135, i64 noundef %134, i64 noundef %10, ptr noundef %6)
  %136 = getelementptr inbounds i8, ptr %0, i64 216
  %137 = load ptr, ptr %136, align 8, !tbaa !28
  %138 = add nsw i64 %128, -1
  %139 = getelementptr inbounds double, ptr %137, i64 %138
  store double %2, ptr %139, align 8, !tbaa !29
  br i1 %.not.not526, label %.preheader519, label %.lr.ph551

.lr.ph551:                                        ; preds = %126
  %140 = getelementptr inbounds i8, ptr %1, i64 56
  %141 = getelementptr inbounds i8, ptr %0, i64 144
  %142 = add nsw i64 %10, -1
  %xtraiter697 = and i64 %10, 3
  %143 = icmp ult i64 %142, 3
  br i1 %143, label %.preheader520.unr-lcssa, label %.lr.ph551.new

.lr.ph551.new:                                    ; preds = %.lr.ph551
  %unroll_iter700 = and i64 %10, 9223372036854775804
  br label %154

.preheader520.unr-lcssa:                          ; preds = %154, %.lr.ph551
  %.1462550.unr = phi i64 [ 0, %.lr.ph551 ], [ %178, %154 ]
  %lcmp.mod699.not = icmp eq i64 %xtraiter697, 0
  br i1 %lcmp.mod699.not, label %.preheader520, label %.epil.preheader696

.epil.preheader696:                               ; preds = %.preheader520.unr-lcssa, %.epil.preheader696
  %.1462550.epil = phi i64 [ %149, %.epil.preheader696 ], [ %.1462550.unr, %.preheader520.unr-lcssa ]
  %epil.iter698 = phi i64 [ %epil.iter698.next, %.epil.preheader696 ], [ 0, %.preheader520.unr-lcssa ]
  %144 = load ptr, ptr %140, align 8, !tbaa !28
  %145 = getelementptr inbounds double, ptr %144, i64 %.1462550.epil
  %146 = load double, ptr %145, align 8, !tbaa !29
  %147 = load ptr, ptr %141, align 8, !tbaa !28
  %148 = getelementptr inbounds double, ptr %147, i64 %.1462550.epil
  store double %146, ptr %148, align 8, !tbaa !29
  %149 = add nuw nsw i64 %.1462550.epil, 1
  %epil.iter698.next = add i64 %epil.iter698, 1
  %epil.iter698.cmp.not = icmp eq i64 %epil.iter698.next, %xtraiter697
  br i1 %epil.iter698.cmp.not, label %.preheader520, label %.epil.preheader696, !llvm.loop !43

.preheader520:                                    ; preds = %.epil.preheader696, %.preheader520.unr-lcssa
  br i1 %.not.not526, label %.preheader519, label %.lr.ph554

.lr.ph554:                                        ; preds = %.preheader520
  %150 = getelementptr inbounds i8, ptr %3, i64 56
  %151 = getelementptr inbounds i8, ptr %0, i64 280
  %152 = mul nsw i64 %138, %10
  %xtraiter703 = and i64 %10, 3
  %153 = icmp ult i64 %142, 3
  br i1 %153, label %.preheader519.loopexit.unr-lcssa, label %.lr.ph554.new

.lr.ph554.new:                                    ; preds = %.lr.ph554
  %unroll_iter706 = and i64 %10, 9223372036854775804
  br label %190

154:                                              ; preds = %154, %.lr.ph551.new
  %.1462550 = phi i64 [ 0, %.lr.ph551.new ], [ %178, %154 ]
  %niter701 = phi i64 [ 0, %.lr.ph551.new ], [ %niter701.next.3, %154 ]
  %155 = load ptr, ptr %140, align 8, !tbaa !28
  %156 = getelementptr inbounds double, ptr %155, i64 %.1462550
  %157 = load double, ptr %156, align 8, !tbaa !29
  %158 = load ptr, ptr %141, align 8, !tbaa !28
  %159 = getelementptr inbounds double, ptr %158, i64 %.1462550
  store double %157, ptr %159, align 8, !tbaa !29
  %160 = or disjoint i64 %.1462550, 1
  %161 = load ptr, ptr %140, align 8, !tbaa !28
  %162 = getelementptr inbounds double, ptr %161, i64 %160
  %163 = load double, ptr %162, align 8, !tbaa !29
  %164 = load ptr, ptr %141, align 8, !tbaa !28
  %165 = getelementptr inbounds double, ptr %164, i64 %160
  store double %163, ptr %165, align 8, !tbaa !29
  %166 = or disjoint i64 %.1462550, 2
  %167 = load ptr, ptr %140, align 8, !tbaa !28
  %168 = getelementptr inbounds double, ptr %167, i64 %166
  %169 = load double, ptr %168, align 8, !tbaa !29
  %170 = load ptr, ptr %141, align 8, !tbaa !28
  %171 = getelementptr inbounds double, ptr %170, i64 %166
  store double %169, ptr %171, align 8, !tbaa !29
  %172 = or disjoint i64 %.1462550, 3
  %173 = load ptr, ptr %140, align 8, !tbaa !28
  %174 = getelementptr inbounds double, ptr %173, i64 %172
  %175 = load double, ptr %174, align 8, !tbaa !29
  %176 = load ptr, ptr %141, align 8, !tbaa !28
  %177 = getelementptr inbounds double, ptr %176, i64 %172
  store double %175, ptr %177, align 8, !tbaa !29
  %178 = add nuw nsw i64 %.1462550, 4
  %niter701.next.3 = add i64 %niter701, 4
  %niter701.ncmp.3 = icmp eq i64 %niter701.next.3, %unroll_iter700
  br i1 %niter701.ncmp.3, label %.preheader520.unr-lcssa, label %154, !llvm.loop !44

.preheader519.loopexit.unr-lcssa:                 ; preds = %190, %.lr.ph554
  %.2463553.unr = phi i64 [ 0, %.lr.ph554 ], [ %218, %190 ]
  %lcmp.mod705.not = icmp eq i64 %xtraiter703, 0
  br i1 %lcmp.mod705.not, label %.preheader519, label %.epil.preheader702

.epil.preheader702:                               ; preds = %.preheader519.loopexit.unr-lcssa, %.epil.preheader702
  %.2463553.epil = phi i64 [ %185, %.epil.preheader702 ], [ %.2463553.unr, %.preheader519.loopexit.unr-lcssa ]
  %epil.iter704 = phi i64 [ %epil.iter704.next, %.epil.preheader702 ], [ 0, %.preheader519.loopexit.unr-lcssa ]
  %179 = load ptr, ptr %150, align 8, !tbaa !28
  %180 = getelementptr inbounds double, ptr %179, i64 %.2463553.epil
  %181 = load double, ptr %180, align 8, !tbaa !29
  %182 = load ptr, ptr %151, align 8, !tbaa !28
  %183 = getelementptr double, ptr %182, i64 %152
  %184 = getelementptr double, ptr %183, i64 %.2463553.epil
  store double %181, ptr %184, align 8, !tbaa !29
  %185 = add nuw nsw i64 %.2463553.epil, 1
  %epil.iter704.next = add i64 %epil.iter704, 1
  %epil.iter704.cmp.not = icmp eq i64 %epil.iter704.next, %xtraiter703
  br i1 %epil.iter704.cmp.not, label %.preheader519, label %.epil.preheader702, !llvm.loop !45

.preheader519:                                    ; preds = %.preheader519.loopexit.unr-lcssa, %.epil.preheader702, %126, %.preheader520
  br i1 %.not.not490534, label %._crit_edge563, label %.lr.ph557

.lr.ph557:                                        ; preds = %.preheader519
  %186 = getelementptr inbounds i8, ptr %4, i64 56
  %187 = getelementptr inbounds i8, ptr %0, i64 344
  %188 = mul nsw i64 %138, %12
  %xtraiter709 = and i64 %12, 3
  %189 = icmp ult i64 %12, 4
  br i1 %189, label %.preheader518.unr-lcssa, label %.lr.ph557.new

.lr.ph557.new:                                    ; preds = %.lr.ph557
  %unroll_iter712 = and i64 %12, 9223372036854775804
  br label %263

190:                                              ; preds = %190, %.lr.ph554.new
  %.2463553 = phi i64 [ 0, %.lr.ph554.new ], [ %218, %190 ]
  %niter707 = phi i64 [ 0, %.lr.ph554.new ], [ %niter707.next.3, %190 ]
  %191 = load ptr, ptr %150, align 8, !tbaa !28
  %192 = getelementptr inbounds double, ptr %191, i64 %.2463553
  %193 = load double, ptr %192, align 8, !tbaa !29
  %194 = load ptr, ptr %151, align 8, !tbaa !28
  %195 = getelementptr double, ptr %194, i64 %152
  %196 = getelementptr double, ptr %195, i64 %.2463553
  store double %193, ptr %196, align 8, !tbaa !29
  %197 = or disjoint i64 %.2463553, 1
  %198 = load ptr, ptr %150, align 8, !tbaa !28
  %199 = getelementptr inbounds double, ptr %198, i64 %197
  %200 = load double, ptr %199, align 8, !tbaa !29
  %201 = load ptr, ptr %151, align 8, !tbaa !28
  %202 = getelementptr double, ptr %201, i64 %152
  %203 = getelementptr double, ptr %202, i64 %197
  store double %200, ptr %203, align 8, !tbaa !29
  %204 = or disjoint i64 %.2463553, 2
  %205 = load ptr, ptr %150, align 8, !tbaa !28
  %206 = getelementptr inbounds double, ptr %205, i64 %204
  %207 = load double, ptr %206, align 8, !tbaa !29
  %208 = load ptr, ptr %151, align 8, !tbaa !28
  %209 = getelementptr double, ptr %208, i64 %152
  %210 = getelementptr double, ptr %209, i64 %204
  store double %207, ptr %210, align 8, !tbaa !29
  %211 = or disjoint i64 %.2463553, 3
  %212 = load ptr, ptr %150, align 8, !tbaa !28
  %213 = getelementptr inbounds double, ptr %212, i64 %211
  %214 = load double, ptr %213, align 8, !tbaa !29
  %215 = load ptr, ptr %151, align 8, !tbaa !28
  %216 = getelementptr double, ptr %215, i64 %152
  %217 = getelementptr double, ptr %216, i64 %211
  store double %214, ptr %217, align 8, !tbaa !29
  %218 = add nuw nsw i64 %.2463553, 4
  %niter707.next.3 = add i64 %niter707, 4
  %niter707.ncmp.3 = icmp eq i64 %niter707.next.3, %unroll_iter706
  br i1 %niter707.ncmp.3, label %.preheader519.loopexit.unr-lcssa, label %190, !llvm.loop !46

.preheader518.unr-lcssa:                          ; preds = %263, %.lr.ph557
  %.4556.unr = phi i64 [ 0, %.lr.ph557 ], [ %291, %263 ]
  %lcmp.mod711.not = icmp eq i64 %xtraiter709, 0
  br i1 %lcmp.mod711.not, label %.preheader518, label %.epil.preheader708

.epil.preheader708:                               ; preds = %.preheader518.unr-lcssa, %.epil.preheader708
  %.4556.epil = phi i64 [ %225, %.epil.preheader708 ], [ %.4556.unr, %.preheader518.unr-lcssa ]
  %epil.iter710 = phi i64 [ %epil.iter710.next, %.epil.preheader708 ], [ 0, %.preheader518.unr-lcssa ]
  %219 = load ptr, ptr %186, align 8, !tbaa !28
  %220 = getelementptr inbounds double, ptr %219, i64 %.4556.epil
  %221 = load double, ptr %220, align 8, !tbaa !29
  %222 = load ptr, ptr %187, align 8, !tbaa !28
  %223 = getelementptr double, ptr %222, i64 %188
  %224 = getelementptr double, ptr %223, i64 %.4556.epil
  store double %221, ptr %224, align 8, !tbaa !29
  %225 = add nuw nsw i64 %.4556.epil, 1
  %epil.iter710.next = add i64 %epil.iter710, 1
  %epil.iter710.cmp.not = icmp eq i64 %epil.iter710.next, %xtraiter709
  br i1 %epil.iter710.cmp.not, label %.preheader518, label %.epil.preheader708, !llvm.loop !47

.preheader518:                                    ; preds = %.epil.preheader708, %.preheader518.unr-lcssa
  br i1 %.not.not490534, label %._crit_edge563, label %.preheader517.lr.ph

.preheader517.lr.ph:                              ; preds = %.preheader518
  %226 = getelementptr inbounds i8, ptr %5, i64 72
  %227 = getelementptr inbounds i8, ptr %0, i64 424
  %228 = mul nsw i64 %138, %12
  br i1 %.not.not526, label %._crit_edge563, label %.preheader517.us.preheader

.preheader517.us.preheader:                       ; preds = %.preheader517.lr.ph
  %xtraiter715 = and i64 %10, 1
  %229 = icmp eq i64 %10, 1
  %unroll_iter718 = and i64 %10, 9223372036854775806
  %lcmp.mod717.not = icmp eq i64 %xtraiter715, 0
  br label %.preheader517.us

.preheader517.us:                                 ; preds = %.preheader517.us.preheader, %._crit_edge.us564
  %.5562.us = phi i64 [ %262, %._crit_edge.us564 ], [ 0, %.preheader517.us.preheader ]
  br i1 %229, label %._crit_edge.us564.unr-lcssa, label %.preheader517.us.new

.preheader517.us.new:                             ; preds = %.preheader517.us, %.preheader517.us.new
  %.3464559.us = phi i64 [ %251, %.preheader517.us.new ], [ 0, %.preheader517.us ]
  %niter719 = phi i64 [ %niter719.next.1, %.preheader517.us.new ], [ 0, %.preheader517.us ]
  %230 = load ptr, ptr %226, align 8, !tbaa !28
  %231 = getelementptr inbounds ptr, ptr %230, i64 %.5562.us
  %232 = load ptr, ptr %231, align 8, !tbaa !37
  %233 = getelementptr inbounds double, ptr %232, i64 %.3464559.us
  %234 = load double, ptr %233, align 8, !tbaa !29
  %235 = load ptr, ptr %227, align 8, !tbaa !28
  %236 = getelementptr ptr, ptr %235, i64 %228
  %237 = getelementptr ptr, ptr %236, i64 %.5562.us
  %238 = load ptr, ptr %237, align 8, !tbaa !37
  %239 = getelementptr inbounds double, ptr %238, i64 %.3464559.us
  store double %234, ptr %239, align 8, !tbaa !29
  %240 = or disjoint i64 %.3464559.us, 1
  %241 = load ptr, ptr %226, align 8, !tbaa !28
  %242 = getelementptr inbounds ptr, ptr %241, i64 %.5562.us
  %243 = load ptr, ptr %242, align 8, !tbaa !37
  %244 = getelementptr inbounds double, ptr %243, i64 %240
  %245 = load double, ptr %244, align 8, !tbaa !29
  %246 = load ptr, ptr %227, align 8, !tbaa !28
  %247 = getelementptr ptr, ptr %246, i64 %228
  %248 = getelementptr ptr, ptr %247, i64 %.5562.us
  %249 = load ptr, ptr %248, align 8, !tbaa !37
  %250 = getelementptr inbounds double, ptr %249, i64 %240
  store double %245, ptr %250, align 8, !tbaa !29
  %251 = add nuw nsw i64 %.3464559.us, 2
  %niter719.next.1 = add i64 %niter719, 2
  %niter719.ncmp.1 = icmp eq i64 %niter719.next.1, %unroll_iter718
  br i1 %niter719.ncmp.1, label %._crit_edge.us564.unr-lcssa, label %.preheader517.us.new, !llvm.loop !48

._crit_edge.us564.unr-lcssa:                      ; preds = %.preheader517.us.new, %.preheader517.us
  %.3464559.us.unr = phi i64 [ 0, %.preheader517.us ], [ %251, %.preheader517.us.new ]
  br i1 %lcmp.mod717.not, label %._crit_edge.us564, label %._crit_edge.us564.epilog-lcssa

._crit_edge.us564.epilog-lcssa:                   ; preds = %._crit_edge.us564.unr-lcssa
  %252 = load ptr, ptr %226, align 8, !tbaa !28
  %253 = getelementptr inbounds ptr, ptr %252, i64 %.5562.us
  %254 = load ptr, ptr %253, align 8, !tbaa !37
  %255 = getelementptr inbounds double, ptr %254, i64 %.3464559.us.unr
  %256 = load double, ptr %255, align 8, !tbaa !29
  %257 = load ptr, ptr %227, align 8, !tbaa !28
  %258 = getelementptr ptr, ptr %257, i64 %228
  %259 = getelementptr ptr, ptr %258, i64 %.5562.us
  %260 = load ptr, ptr %259, align 8, !tbaa !37
  %261 = getelementptr inbounds double, ptr %260, i64 %.3464559.us.unr
  store double %256, ptr %261, align 8, !tbaa !29
  br label %._crit_edge.us564

._crit_edge.us564:                                ; preds = %._crit_edge.us564.unr-lcssa, %._crit_edge.us564.epilog-lcssa
  %262 = add nuw nsw i64 %.5562.us, 1
  %exitcond638.not = icmp eq i64 %262, %12
  br i1 %exitcond638.not, label %._crit_edge563, label %.preheader517.us, !llvm.loop !49

263:                                              ; preds = %263, %.lr.ph557.new
  %.4556 = phi i64 [ 0, %.lr.ph557.new ], [ %291, %263 ]
  %niter713 = phi i64 [ 0, %.lr.ph557.new ], [ %niter713.next.3, %263 ]
  %264 = load ptr, ptr %186, align 8, !tbaa !28
  %265 = getelementptr inbounds double, ptr %264, i64 %.4556
  %266 = load double, ptr %265, align 8, !tbaa !29
  %267 = load ptr, ptr %187, align 8, !tbaa !28
  %268 = getelementptr double, ptr %267, i64 %188
  %269 = getelementptr double, ptr %268, i64 %.4556
  store double %266, ptr %269, align 8, !tbaa !29
  %270 = or disjoint i64 %.4556, 1
  %271 = load ptr, ptr %186, align 8, !tbaa !28
  %272 = getelementptr inbounds double, ptr %271, i64 %270
  %273 = load double, ptr %272, align 8, !tbaa !29
  %274 = load ptr, ptr %187, align 8, !tbaa !28
  %275 = getelementptr double, ptr %274, i64 %188
  %276 = getelementptr double, ptr %275, i64 %270
  store double %273, ptr %276, align 8, !tbaa !29
  %277 = or disjoint i64 %.4556, 2
  %278 = load ptr, ptr %186, align 8, !tbaa !28
  %279 = getelementptr inbounds double, ptr %278, i64 %277
  %280 = load double, ptr %279, align 8, !tbaa !29
  %281 = load ptr, ptr %187, align 8, !tbaa !28
  %282 = getelementptr double, ptr %281, i64 %188
  %283 = getelementptr double, ptr %282, i64 %277
  store double %280, ptr %283, align 8, !tbaa !29
  %284 = or disjoint i64 %.4556, 3
  %285 = load ptr, ptr %186, align 8, !tbaa !28
  %286 = getelementptr inbounds double, ptr %285, i64 %284
  %287 = load double, ptr %286, align 8, !tbaa !29
  %288 = load ptr, ptr %187, align 8, !tbaa !28
  %289 = getelementptr double, ptr %288, i64 %188
  %290 = getelementptr double, ptr %289, i64 %284
  store double %287, ptr %290, align 8, !tbaa !29
  %291 = add nuw nsw i64 %.4556, 4
  %niter713.next.3 = add i64 %niter713, 4
  %niter713.ncmp.3 = icmp eq i64 %niter713.next.3, %unroll_iter712
  br i1 %niter713.ncmp.3, label %.preheader518.unr-lcssa, label %263, !llvm.loop !50

._crit_edge563:                                   ; preds = %._crit_edge.us564, %.preheader519, %.preheader517.lr.ph, %.preheader518
  %292 = getelementptr inbounds i8, ptr %0, i64 560
  %293 = load i64, ptr %292, align 8, !tbaa !51
  %.not.not496565 = icmp sgt i64 %293, 0
  br i1 %.not.not496565, label %.lr.ph568, label %.critedge

.lr.ph568:                                        ; preds = %._crit_edge563
  %294 = getelementptr inbounds i8, ptr %0, i64 488
  br label %.backedge

.backedge:                                        ; preds = %.backedge.backedge, %.lr.ph568
  %.6567 = phi i64 [ 0, %.lr.ph568 ], [ %.6567.be, %.backedge.backedge ]
  %.0470566 = phi i1 [ false, %.lr.ph568 ], [ %.0470566.be, %.backedge.backedge ]
  br i1 %.0470566, label %.thread, label %295

295:                                              ; preds = %.backedge
  %296 = load ptr, ptr %294, align 8, !tbaa !28
  %297 = getelementptr inbounds double, ptr %296, i64 %.6567
  %298 = load double, ptr %297, align 8, !tbaa !29
  %299 = fcmp oeq double %298, %2
  %300 = add nuw nsw i64 %.6567, 1
  %exitcond639.not = icmp eq i64 %300, %293
  br i1 %exitcond639.not, label %._crit_edge, label %.backedge.backedge

.backedge.backedge:                               ; preds = %295, %.thread
  %.6567.be = phi i64 [ %300, %295 ], [ %301, %.thread ]
  %.0470566.be = phi i1 [ %299, %295 ], [ true, %.thread ]
  br label %.backedge, !llvm.loop !52

.thread:                                          ; preds = %.backedge
  %301 = add nuw nsw i64 %.6567, 1
  %exitcond639.not653 = icmp eq i64 %301, %293
  br i1 %exitcond639.not653, label %.loopexit516, label %.backedge.backedge

._crit_edge:                                      ; preds = %295
  br i1 %299, label %.loopexit516, label %.critedge

.critedge:                                        ; preds = %._crit_edge563, %._crit_edge
  tail call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %292, ptr noundef %6)
  %302 = load i64, ptr %292, align 8, !tbaa !51
  %303 = getelementptr inbounds i8, ptr %0, i64 432
  tail call void @_ZN11alglib_impl13rvectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %303, i64 noundef %302, ptr noundef %6)
  %304 = getelementptr inbounds i8, ptr %0, i64 496
  tail call void @_ZN11alglib_impl13ivectorgrowtoEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %304, i64 noundef %302, ptr noundef %6)
  %305 = getelementptr inbounds i8, ptr %0, i64 488
  %306 = load ptr, ptr %305, align 8, !tbaa !28
  %307 = add nsw i64 %302, -1
  %308 = getelementptr inbounds double, ptr %306, i64 %307
  store double %2, ptr %308, align 8, !tbaa !29
  %309 = getelementptr inbounds i8, ptr %0, i64 552
  %310 = load ptr, ptr %309, align 8, !tbaa !28
  %311 = getelementptr inbounds i64, ptr %310, i64 %307
  store i64 %138, ptr %311, align 8, !tbaa !53
  %312 = icmp sgt i64 %302, 1
  br i1 %312, label %.lr.ph572.preheader, label %.loopexit516

.lr.ph572.preheader:                              ; preds = %.critedge
  %313 = add nsw i64 %302, -2
  br label %.lr.ph572

.lr.ph572:                                        ; preds = %.lr.ph572.preheader, %321
  %.7570 = phi i64 [ %331, %321 ], [ %313, %.lr.ph572.preheader ]
  %314 = load ptr, ptr %305, align 8, !tbaa !28
  %315 = getelementptr inbounds double, ptr %314, i64 %.7570
  %316 = load double, ptr %315, align 8, !tbaa !29
  %317 = add nuw nsw i64 %.7570, 1
  %318 = getelementptr inbounds double, ptr %314, i64 %317
  %319 = load double, ptr %318, align 8, !tbaa !29
  %320 = fcmp ugt double %316, %319
  br i1 %320, label %321, label %.loopexit516

321:                                              ; preds = %.lr.ph572
  store double %319, ptr %315, align 8, !tbaa !29
  %322 = load ptr, ptr %305, align 8, !tbaa !28
  %323 = getelementptr inbounds double, ptr %322, i64 %317
  store double %316, ptr %323, align 8, !tbaa !29
  %324 = load ptr, ptr %309, align 8, !tbaa !28
  %325 = getelementptr inbounds i64, ptr %324, i64 %.7570
  %326 = load i64, ptr %325, align 8, !tbaa !53
  %327 = getelementptr inbounds i64, ptr %324, i64 %317
  %328 = load i64, ptr %327, align 8, !tbaa !53
  store i64 %328, ptr %325, align 8, !tbaa !53
  %329 = load ptr, ptr %309, align 8, !tbaa !28
  %330 = getelementptr inbounds i64, ptr %329, i64 %317
  store i64 %326, ptr %330, align 8, !tbaa !53
  %331 = add nsw i64 %.7570, -1
  %332 = icmp sgt i64 %.7570, 0
  br i1 %332, label %.lr.ph572, label %.loopexit516, !llvm.loop !54

.loopexit516:                                     ; preds = %.thread, %.lr.ph572, %321, %.critedge, %._crit_edge
  %.0471 = phi i64 [ %293, %._crit_edge ], [ %302, %.critedge ], [ %302, %321 ], [ %302, %.lr.ph572 ], [ %293, %.thread ]
  %333 = getelementptr inbounds i8, ptr %0, i64 5112
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %333, i64 noundef %.0471, ptr noundef %6)
  %334 = getelementptr inbounds i8, ptr %0, i64 5176
  %335 = mul nsw i64 %.0471, %10
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %334, i64 noundef %335, ptr noundef %6)
  br i1 %.not.not490534, label %.loopexit515, label %.preheader514.lr.ph

.preheader514.lr.ph:                              ; preds = %.loopexit516
  %.not.not498579 = icmp sgt i64 %.0471, 0
  %336 = getelementptr inbounds i8, ptr %0, i64 344
  %337 = getelementptr inbounds i8, ptr %0, i64 552
  %338 = getelementptr inbounds i8, ptr %0, i64 5168
  %339 = getelementptr inbounds i8, ptr %0, i64 424
  %340 = getelementptr inbounds i8, ptr %0, i64 5232
  %.not608 = icmp slt i64 %.0471, 4
  %341 = getelementptr inbounds i8, ptr %0, i64 488
  %342 = getelementptr inbounds i8, ptr %0, i64 1552
  %343 = getelementptr inbounds i8, ptr %0, i64 1553
  %344 = getelementptr inbounds i8, ptr %0, i64 1528
  %345 = getelementptr inbounds i8, ptr %0, i64 1568
  %346 = getelementptr inbounds i8, ptr %0, i64 1560
  %347 = getelementptr inbounds i8, ptr %0, i64 1848
  %348 = getelementptr inbounds i8, ptr %0, i64 1864
  %349 = getelementptr inbounds i8, ptr %0, i64 1872
  %350 = getelementptr inbounds i8, ptr %0, i64 2008
  %351 = getelementptr inbounds i8, ptr %0, i64 2144
  %352 = getelementptr inbounds i8, ptr %0, i64 2152
  %353 = getelementptr inbounds i8, ptr %0, i64 2160
  %354 = getelementptr inbounds i8, ptr %0, i64 1512
  %355 = getelementptr inbounds i8, ptr %0, i64 2168
  %356 = getelementptr inbounds i8, ptr %0, i64 1880
  %357 = getelementptr inbounds i8, ptr %0, i64 1944
  %358 = getelementptr inbounds i8, ptr %0, i64 280
  %359 = getelementptr inbounds i8, ptr %0, i64 1936
  %360 = getelementptr inbounds i8, ptr %0, i64 144
  %361 = getelementptr inbounds i8, ptr %0, i64 2000
  %362 = getelementptr inbounds i8, ptr %0, i64 2016
  %363 = getelementptr inbounds i8, ptr %0, i64 2080
  %364 = getelementptr inbounds i8, ptr %0, i64 2072
  %365 = getelementptr inbounds i8, ptr %0, i64 2136
  %366 = sitofp i64 %.0471 to double
  %367 = getelementptr inbounds i8, ptr %0, i64 1856
  %368 = getelementptr inbounds i8, ptr %0, i64 2184
  %369 = getelementptr inbounds i8, ptr %0, i64 2192
  %370 = getelementptr inbounds i8, ptr %0, i64 2328
  %371 = getelementptr inbounds i8, ptr %0, i64 2464
  %372 = getelementptr inbounds i8, ptr %0, i64 2472
  %373 = getelementptr inbounds i8, ptr %0, i64 2480
  %374 = getelementptr inbounds i8, ptr %0, i64 2488
  %375 = getelementptr inbounds i8, ptr %0, i64 2200
  %376 = getelementptr inbounds i8, ptr %0, i64 2264
  %377 = getelementptr inbounds i8, ptr %0, i64 2256
  %378 = getelementptr inbounds i8, ptr %0, i64 2320
  %379 = getelementptr inbounds i8, ptr %0, i64 2336
  %380 = getelementptr inbounds i8, ptr %0, i64 2400
  %381 = getelementptr inbounds i8, ptr %0, i64 2392
  %382 = getelementptr inbounds i8, ptr %0, i64 2456
  %.not499611 = icmp slt i64 %.0471, 7
  %383 = add i64 %.0471, -3
  %384 = add nsw i64 %.0471, -7
  %385 = add i64 %.0471, -1
  %xtraiter721 = and i64 %10, 1
  %386 = icmp eq i64 %10, 1
  %unroll_iter724 = and i64 %10, 9223372036854775806
  %lcmp.mod723.not = icmp eq i64 %xtraiter721, 0
  %xtraiter726 = and i64 %.0471, 1
  %387 = icmp eq i64 %385, 0
  %unroll_iter729 = and i64 %.0471, 9223372036854775806
  %lcmp.mod728.not = icmp eq i64 %xtraiter726, 0
  %xtraiter731 = and i64 %.0471, 1
  %388 = icmp eq i64 %385, 0
  %unroll_iter734 = and i64 %.0471, 9223372036854775806
  %lcmp.mod733.not = icmp eq i64 %xtraiter731, 0
  br label %.preheader514

.preheader514:                                    ; preds = %.preheader514.lr.ph, %._crit_edge618
  %.0469620 = phi i64 [ 0, %.preheader514.lr.ph ], [ %707, %._crit_edge618 ]
  br i1 %.not.not498579, label %.lr.ph581, label %._crit_edge618

.lr.ph581:                                        ; preds = %.preheader514, %._crit_edge578
  %.8580 = phi i64 [ %441, %._crit_edge578 ], [ 0, %.preheader514 ]
  %389 = load ptr, ptr %336, align 8, !tbaa !28
  %390 = load ptr, ptr %337, align 8, !tbaa !28
  %391 = getelementptr inbounds i64, ptr %390, i64 %.8580
  %392 = load i64, ptr %391, align 8, !tbaa !53
  %393 = mul nsw i64 %392, %12
  %394 = getelementptr double, ptr %389, i64 %393
  %395 = getelementptr double, ptr %394, i64 %.0469620
  %396 = load double, ptr %395, align 8, !tbaa !29
  %397 = load ptr, ptr %338, align 8, !tbaa !28
  %398 = getelementptr inbounds double, ptr %397, i64 %.8580
  store double %396, ptr %398, align 8, !tbaa !29
  br i1 %.not.not526, label %._crit_edge578, label %.lr.ph577

.lr.ph577:                                        ; preds = %.lr.ph581
  %399 = mul nuw nsw i64 %.8580, %10
  br i1 %386, label %._crit_edge578.loopexit.unr-lcssa, label %.lr.ph577.new

.lr.ph577.new:                                    ; preds = %.lr.ph577, %.lr.ph577.new
  %.4465575 = phi i64 [ %427, %.lr.ph577.new ], [ 0, %.lr.ph577 ]
  %niter725 = phi i64 [ %niter725.next.1, %.lr.ph577.new ], [ 0, %.lr.ph577 ]
  %400 = load ptr, ptr %339, align 8, !tbaa !28
  %401 = load ptr, ptr %337, align 8, !tbaa !28
  %402 = getelementptr inbounds i64, ptr %401, i64 %.8580
  %403 = load i64, ptr %402, align 8, !tbaa !53
  %404 = mul nsw i64 %403, %12
  %405 = getelementptr ptr, ptr %400, i64 %404
  %406 = getelementptr ptr, ptr %405, i64 %.0469620
  %407 = load ptr, ptr %406, align 8, !tbaa !37
  %408 = getelementptr inbounds double, ptr %407, i64 %.4465575
  %409 = load double, ptr %408, align 8, !tbaa !29
  %410 = load ptr, ptr %340, align 8, !tbaa !28
  %411 = getelementptr double, ptr %410, i64 %399
  %412 = getelementptr double, ptr %411, i64 %.4465575
  store double %409, ptr %412, align 8, !tbaa !29
  %413 = or disjoint i64 %.4465575, 1
  %414 = load ptr, ptr %339, align 8, !tbaa !28
  %415 = load ptr, ptr %337, align 8, !tbaa !28
  %416 = getelementptr inbounds i64, ptr %415, i64 %.8580
  %417 = load i64, ptr %416, align 8, !tbaa !53
  %418 = mul nsw i64 %417, %12
  %419 = getelementptr ptr, ptr %414, i64 %418
  %420 = getelementptr ptr, ptr %419, i64 %.0469620
  %421 = load ptr, ptr %420, align 8, !tbaa !37
  %422 = getelementptr inbounds double, ptr %421, i64 %413
  %423 = load double, ptr %422, align 8, !tbaa !29
  %424 = load ptr, ptr %340, align 8, !tbaa !28
  %425 = getelementptr double, ptr %424, i64 %399
  %426 = getelementptr double, ptr %425, i64 %413
  store double %423, ptr %426, align 8, !tbaa !29
  %427 = add nuw nsw i64 %.4465575, 2
  %niter725.next.1 = add i64 %niter725, 2
  %niter725.ncmp.1 = icmp eq i64 %niter725.next.1, %unroll_iter724
  br i1 %niter725.ncmp.1, label %._crit_edge578.loopexit.unr-lcssa, label %.lr.ph577.new, !llvm.loop !55

._crit_edge578.loopexit.unr-lcssa:                ; preds = %.lr.ph577.new, %.lr.ph577
  %.4465575.unr = phi i64 [ 0, %.lr.ph577 ], [ %427, %.lr.ph577.new ]
  br i1 %lcmp.mod723.not, label %._crit_edge578, label %._crit_edge578.loopexit.epilog-lcssa

._crit_edge578.loopexit.epilog-lcssa:             ; preds = %._crit_edge578.loopexit.unr-lcssa
  %428 = load ptr, ptr %339, align 8, !tbaa !28
  %429 = load ptr, ptr %337, align 8, !tbaa !28
  %430 = getelementptr inbounds i64, ptr %429, i64 %.8580
  %431 = load i64, ptr %430, align 8, !tbaa !53
  %432 = mul nsw i64 %431, %12
  %433 = getelementptr ptr, ptr %428, i64 %432
  %434 = getelementptr ptr, ptr %433, i64 %.0469620
  %435 = load ptr, ptr %434, align 8, !tbaa !37
  %436 = getelementptr inbounds double, ptr %435, i64 %.4465575.unr
  %437 = load double, ptr %436, align 8, !tbaa !29
  %438 = load ptr, ptr %340, align 8, !tbaa !28
  %439 = getelementptr double, ptr %438, i64 %399
  %440 = getelementptr double, ptr %439, i64 %.4465575.unr
  store double %437, ptr %440, align 8, !tbaa !29
  br label %._crit_edge578

._crit_edge578:                                   ; preds = %._crit_edge578.loopexit.epilog-lcssa, %._crit_edge578.loopexit.unr-lcssa, %.lr.ph581
  %441 = add nuw nsw i64 %.8580, 1
  %exitcond641.not = icmp eq i64 %441, %.0471
  br i1 %exitcond641.not, label %._crit_edge582, label %.lr.ph581, !llvm.loop !56

._crit_edge582:                                   ; preds = %._crit_edge578
  %442 = icmp ne i64 %.0469620, 0
  %brmerge = or i1 %442, %.not608
  br i1 %brmerge, label %.loopexit513, label %.lr.ph610

.lr.ph610:                                        ; preds = %._crit_edge582, %.loopexit
  %.0466609 = phi i64 [ %446, %.loopexit ], [ 0, %._crit_edge582 ]
  %443 = load ptr, ptr %338, align 8, !tbaa !28
  %444 = getelementptr inbounds double, ptr %443, i64 %.0466609
  %445 = load double, ptr %444, align 8, !tbaa !29
  %446 = add nuw nsw i64 %.0466609, 1
  %447 = getelementptr inbounds double, ptr %443, i64 %446
  %448 = load double, ptr %447, align 8, !tbaa !29
  %449 = add nuw nsw i64 %.0466609, 2
  %450 = getelementptr inbounds double, ptr %443, i64 %449
  %451 = load double, ptr %450, align 8, !tbaa !29
  %452 = add nuw nsw i64 %.0466609, 3
  %453 = getelementptr inbounds double, ptr %443, i64 %452
  %454 = load double, ptr %453, align 8, !tbaa !29
  %455 = load double, ptr @_ZN11alglib_implL21optserv_ognoiselevelfE, align 8, !tbaa !29
  %456 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %445, ptr noundef %6)
  %457 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %456, double noundef 1.000000e+00, ptr noundef %6)
  %458 = fmul double %455, %457
  %459 = load double, ptr @_ZN11alglib_implL21optserv_ognoiselevelfE, align 8, !tbaa !29
  %460 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %448, ptr noundef %6)
  %461 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %460, double noundef 1.000000e+00, ptr noundef %6)
  %462 = fmul double %459, %461
  %463 = load double, ptr @_ZN11alglib_implL21optserv_ognoiselevelfE, align 8, !tbaa !29
  %464 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %451, ptr noundef %6)
  %465 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %464, double noundef 1.000000e+00, ptr noundef %6)
  %466 = load double, ptr @_ZN11alglib_implL21optserv_ognoiselevelfE, align 8, !tbaa !29
  %467 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %454, ptr noundef %6)
  %468 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %467, double noundef 1.000000e+00, ptr noundef %6)
  %469 = fadd double %458, %462
  %470 = fadd double %445, %469
  %471 = fcmp olt double %448, %470
  %472 = fcmp olt double %448, %451
  %or.cond = select i1 %471, i1 %472, i1 false
  br i1 %or.cond, label %473, label %.loopexit

473:                                              ; preds = %.lr.ph610
  %474 = fmul double %466, %468
  %475 = fmul double %463, %465
  %476 = load ptr, ptr %341, align 8, !tbaa !28
  %477 = getelementptr inbounds double, ptr %476, i64 %446
  %478 = load double, ptr %477, align 8, !tbaa !29
  %479 = getelementptr inbounds double, ptr %476, i64 %.0466609
  %480 = load double, ptr %479, align 8, !tbaa !29
  %481 = fsub double %478, %480
  %482 = getelementptr inbounds double, ptr %476, i64 %449
  %483 = load double, ptr %482, align 8, !tbaa !29
  %484 = fsub double %483, %478
  %485 = getelementptr inbounds double, ptr %476, i64 %452
  %486 = load double, ptr %485, align 8, !tbaa !29
  %487 = fsub double %486, %483
  call void @_ZN11alglib_implL24optserv_testc0continuityEdddddddddddbPdS0_PNS_8ae_stateE(double noundef %445, double noundef %448, double noundef %451, double noundef %454, double noundef %458, double noundef %462, double noundef %475, double noundef %474, double noundef %481, double noundef %484, double noundef %487, i1 noundef zeroext false, ptr noundef nonnull %8, ptr noundef nonnull %9, ptr noundef %6)
  %488 = load double, ptr %8, align 8, !tbaa !29
  %489 = load double, ptr @_ZN11alglib_implL20optserv_ogminrating0E, align 8, !tbaa !29
  %490 = fcmp ogt double %488, %489
  br i1 %490, label %491, label %.loopexit

491:                                              ; preds = %473
  store i8 1, ptr %342, align 8, !tbaa !57
  store i8 1, ptr %343, align 1, !tbaa !58
  %492 = load double, ptr %344, align 8, !tbaa !59
  %493 = fcmp ogt double %488, %492
  br i1 %493, label %494, label %496

494:                                              ; preds = %491
  store double %488, ptr %344, align 8, !tbaa !59
  %495 = load double, ptr %9, align 8, !tbaa !29
  store double %495, ptr %345, align 8, !tbaa !60
  store i64 0, ptr %346, align 8, !tbaa !61
  br label %496

496:                                              ; preds = %494, %491
  %497 = load double, ptr %347, align 8, !tbaa !62
  %498 = fcmp ogt double %488, %497
  br i1 %498, label %499, label %.loopexit511

499:                                              ; preds = %496
  store double %488, ptr %347, align 8, !tbaa !62
  store i8 1, ptr %348, align 8, !tbaa !63
  store i64 0, ptr %349, align 8, !tbaa !64
  store i64 %10, ptr %350, align 8, !tbaa !65
  store i64 %.0471, ptr %351, align 8, !tbaa !66
  store i64 %.0466609, ptr %352, align 8, !tbaa !67
  store i64 %452, ptr %353, align 8, !tbaa !68
  %500 = load <2 x i64>, ptr %354, align 8, !tbaa !53
  store <2 x i64> %500, ptr %355, align 8, !tbaa !53
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %356, i64 noundef %10, ptr noundef %6)
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %357, i64 noundef %10, ptr noundef %6)
  br i1 %.not.not526, label %._crit_edge587, label %.lr.ph586

.lr.ph586:                                        ; preds = %499, %.lr.ph586
  %.9584 = phi i64 [ %515, %.lr.ph586 ], [ 0, %499 ]
  %501 = load ptr, ptr %358, align 8, !tbaa !28
  %502 = load ptr, ptr %337, align 8, !tbaa !28
  %503 = load i64, ptr %502, align 8, !tbaa !53
  %504 = mul nsw i64 %503, %10
  %505 = getelementptr double, ptr %501, i64 %504
  %506 = getelementptr double, ptr %505, i64 %.9584
  %507 = load double, ptr %506, align 8, !tbaa !29
  %508 = load ptr, ptr %359, align 8, !tbaa !28
  %509 = getelementptr inbounds double, ptr %508, i64 %.9584
  store double %507, ptr %509, align 8, !tbaa !29
  %510 = load ptr, ptr %360, align 8, !tbaa !28
  %511 = getelementptr inbounds double, ptr %510, i64 %.9584
  %512 = load double, ptr %511, align 8, !tbaa !29
  %513 = load ptr, ptr %361, align 8, !tbaa !28
  %514 = getelementptr inbounds double, ptr %513, i64 %.9584
  store double %512, ptr %514, align 8, !tbaa !29
  %515 = add nuw nsw i64 %.9584, 1
  %exitcond642.not = icmp eq i64 %515, %10
  br i1 %exitcond642.not, label %._crit_edge587, label %.lr.ph586, !llvm.loop !69

._crit_edge587:                                   ; preds = %.lr.ph586, %499
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %362, i64 noundef %.0471, ptr noundef %6)
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %363, i64 noundef %.0471, ptr noundef %6)
  br i1 %.not.not498579, label %.lr.ph591.preheader, label %.loopexit511

.lr.ph591.preheader:                              ; preds = %._crit_edge587
  br i1 %387, label %.loopexit511.loopexit.unr-lcssa, label %.lr.ph591

.lr.ph591:                                        ; preds = %.lr.ph591.preheader, %.lr.ph591
  %.10589 = phi i64 [ %537, %.lr.ph591 ], [ 0, %.lr.ph591.preheader ]
  %niter730 = phi i64 [ %niter730.next.1, %.lr.ph591 ], [ 0, %.lr.ph591.preheader ]
  %516 = load ptr, ptr %341, align 8, !tbaa !28
  %517 = getelementptr inbounds double, ptr %516, i64 %.10589
  %518 = load double, ptr %517, align 8, !tbaa !29
  %519 = load ptr, ptr %364, align 8, !tbaa !28
  %520 = getelementptr inbounds double, ptr %519, i64 %.10589
  store double %518, ptr %520, align 8, !tbaa !29
  %521 = load ptr, ptr %338, align 8, !tbaa !28
  %522 = getelementptr inbounds double, ptr %521, i64 %.10589
  %523 = load double, ptr %522, align 8, !tbaa !29
  %524 = load ptr, ptr %365, align 8, !tbaa !28
  %525 = getelementptr inbounds double, ptr %524, i64 %.10589
  store double %523, ptr %525, align 8, !tbaa !29
  %526 = or disjoint i64 %.10589, 1
  %527 = load ptr, ptr %341, align 8, !tbaa !28
  %528 = getelementptr inbounds double, ptr %527, i64 %526
  %529 = load double, ptr %528, align 8, !tbaa !29
  %530 = load ptr, ptr %364, align 8, !tbaa !28
  %531 = getelementptr inbounds double, ptr %530, i64 %526
  store double %529, ptr %531, align 8, !tbaa !29
  %532 = load ptr, ptr %338, align 8, !tbaa !28
  %533 = getelementptr inbounds double, ptr %532, i64 %526
  %534 = load double, ptr %533, align 8, !tbaa !29
  %535 = load ptr, ptr %365, align 8, !tbaa !28
  %536 = getelementptr inbounds double, ptr %535, i64 %526
  store double %534, ptr %536, align 8, !tbaa !29
  %537 = add nuw nsw i64 %.10589, 2
  %niter730.next.1 = add nuw nsw i64 %niter730, 2
  %niter730.ncmp.1 = icmp eq i64 %niter730.next.1, %unroll_iter729
  br i1 %niter730.ncmp.1, label %.loopexit511.loopexit.unr-lcssa, label %.lr.ph591, !llvm.loop !70

.loopexit511.loopexit.unr-lcssa:                  ; preds = %.lr.ph591, %.lr.ph591.preheader
  %.10589.unr = phi i64 [ 0, %.lr.ph591.preheader ], [ %537, %.lr.ph591 ]
  br i1 %lcmp.mod728.not, label %.loopexit511, label %.lr.ph591.epil

.lr.ph591.epil:                                   ; preds = %.loopexit511.loopexit.unr-lcssa
  %538 = load ptr, ptr %341, align 8, !tbaa !28
  %539 = getelementptr inbounds double, ptr %538, i64 %.10589.unr
  %540 = load double, ptr %539, align 8, !tbaa !29
  %541 = load ptr, ptr %364, align 8, !tbaa !28
  %542 = getelementptr inbounds double, ptr %541, i64 %.10589.unr
  store double %540, ptr %542, align 8, !tbaa !29
  %543 = load ptr, ptr %338, align 8, !tbaa !28
  %544 = getelementptr inbounds double, ptr %543, i64 %.10589.unr
  %545 = load double, ptr %544, align 8, !tbaa !29
  %546 = load ptr, ptr %365, align 8, !tbaa !28
  %547 = getelementptr inbounds double, ptr %546, i64 %.10589.unr
  store double %545, ptr %547, align 8, !tbaa !29
  br label %.loopexit511

.loopexit511:                                     ; preds = %.lr.ph591.epil, %.loopexit511.loopexit.unr-lcssa, %._crit_edge587, %496
  br i1 %.not.not526, label %._crit_edge597, label %.lr.ph596

.lr.ph596:                                        ; preds = %.loopexit511, %.lr.ph596
  %.11594 = phi i64 [ %565, %.lr.ph596 ], [ 0, %.loopexit511 ]
  %.0460593 = phi double [ %564, %.lr.ph596 ], [ 0.000000e+00, %.loopexit511 ]
  %548 = load ptr, ptr %358, align 8, !tbaa !28
  %549 = load ptr, ptr %337, align 8, !tbaa !28
  %550 = load i64, ptr %549, align 8, !tbaa !53
  %551 = mul nsw i64 %550, %10
  %552 = getelementptr double, ptr %548, i64 %551
  %553 = getelementptr double, ptr %552, i64 %.11594
  %554 = load double, ptr %553, align 8, !tbaa !29
  %555 = getelementptr i64, ptr %549, i64 %.0471
  %556 = getelementptr i8, ptr %555, i64 -8
  %557 = load i64, ptr %556, align 8, !tbaa !53
  %558 = mul nsw i64 %557, %10
  %559 = getelementptr double, ptr %548, i64 %558
  %560 = getelementptr double, ptr %559, i64 %.11594
  %561 = load double, ptr %560, align 8, !tbaa !29
  %562 = fsub double %554, %561
  %563 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %562, ptr noundef %6)
  %564 = fadd double %.0460593, %563
  %565 = add nuw nsw i64 %.11594, 1
  %exitcond644.not = icmp eq i64 %565, %10
  br i1 %exitcond644.not, label %._crit_edge597, label %.lr.ph596, !llvm.loop !71

._crit_edge597:                                   ; preds = %.lr.ph596, %.loopexit511
  %.0460.lcssa = phi double [ 0.000000e+00, %.loopexit511 ], [ %564, %.lr.ph596 ]
  %566 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.0460.lcssa, ptr noundef %6)
  %567 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %566, double noundef 5.000000e-16, ptr noundef %6)
  %568 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef %567, ptr noundef %6)
  %569 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef %366, ptr noundef %6)
  %570 = call double @llvm.fmuladd.f64(double %569, double 2.000000e-01, double %568)
  %571 = load double, ptr %8, align 8, !tbaa !29
  %572 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef %571, ptr noundef %6)
  %573 = call double @llvm.fmuladd.f64(double %572, double 2.000000e-01, double %570)
  %574 = load double, ptr %367, align 8, !tbaa !72
  %575 = fcmp ogt double %573, %574
  br i1 %575, label %576, label %.loopexit

576:                                              ; preds = %._crit_edge597
  store double %573, ptr %367, align 8, !tbaa !72
  store i8 1, ptr %368, align 8, !tbaa !73
  store i64 0, ptr %369, align 8, !tbaa !74
  store i64 %10, ptr %370, align 8, !tbaa !75
  store i64 %.0471, ptr %371, align 8, !tbaa !76
  store i64 %.0466609, ptr %372, align 8, !tbaa !77
  store i64 %452, ptr %373, align 8, !tbaa !78
  %577 = load <2 x i64>, ptr %354, align 8, !tbaa !53
  store <2 x i64> %577, ptr %374, align 8, !tbaa !53
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %375, i64 noundef %10, ptr noundef %6)
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %376, i64 noundef %10, ptr noundef %6)
  br i1 %.not.not526, label %._crit_edge603, label %.lr.ph602

.lr.ph602:                                        ; preds = %576, %.lr.ph602
  %.12600 = phi i64 [ %592, %.lr.ph602 ], [ 0, %576 ]
  %578 = load ptr, ptr %358, align 8, !tbaa !28
  %579 = load ptr, ptr %337, align 8, !tbaa !28
  %580 = load i64, ptr %579, align 8, !tbaa !53
  %581 = mul nsw i64 %580, %10
  %582 = getelementptr double, ptr %578, i64 %581
  %583 = getelementptr double, ptr %582, i64 %.12600
  %584 = load double, ptr %583, align 8, !tbaa !29
  %585 = load ptr, ptr %377, align 8, !tbaa !28
  %586 = getelementptr inbounds double, ptr %585, i64 %.12600
  store double %584, ptr %586, align 8, !tbaa !29
  %587 = load ptr, ptr %360, align 8, !tbaa !28
  %588 = getelementptr inbounds double, ptr %587, i64 %.12600
  %589 = load double, ptr %588, align 8, !tbaa !29
  %590 = load ptr, ptr %378, align 8, !tbaa !28
  %591 = getelementptr inbounds double, ptr %590, i64 %.12600
  store double %589, ptr %591, align 8, !tbaa !29
  %592 = add nuw nsw i64 %.12600, 1
  %exitcond645.not = icmp eq i64 %592, %10
  br i1 %exitcond645.not, label %._crit_edge603, label %.lr.ph602, !llvm.loop !79

._crit_edge603:                                   ; preds = %.lr.ph602, %576
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %379, i64 noundef %.0471, ptr noundef %6)
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %380, i64 noundef %.0471, ptr noundef %6)
  br i1 %.not.not498579, label %.lr.ph607.preheader, label %.loopexit

.lr.ph607.preheader:                              ; preds = %._crit_edge603
  br i1 %388, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph607

.lr.ph607:                                        ; preds = %.lr.ph607.preheader, %.lr.ph607
  %.13605 = phi i64 [ %614, %.lr.ph607 ], [ 0, %.lr.ph607.preheader ]
  %niter735 = phi i64 [ %niter735.next.1, %.lr.ph607 ], [ 0, %.lr.ph607.preheader ]
  %593 = load ptr, ptr %341, align 8, !tbaa !28
  %594 = getelementptr inbounds double, ptr %593, i64 %.13605
  %595 = load double, ptr %594, align 8, !tbaa !29
  %596 = load ptr, ptr %381, align 8, !tbaa !28
  %597 = getelementptr inbounds double, ptr %596, i64 %.13605
  store double %595, ptr %597, align 8, !tbaa !29
  %598 = load ptr, ptr %338, align 8, !tbaa !28
  %599 = getelementptr inbounds double, ptr %598, i64 %.13605
  %600 = load double, ptr %599, align 8, !tbaa !29
  %601 = load ptr, ptr %382, align 8, !tbaa !28
  %602 = getelementptr inbounds double, ptr %601, i64 %.13605
  store double %600, ptr %602, align 8, !tbaa !29
  %603 = or disjoint i64 %.13605, 1
  %604 = load ptr, ptr %341, align 8, !tbaa !28
  %605 = getelementptr inbounds double, ptr %604, i64 %603
  %606 = load double, ptr %605, align 8, !tbaa !29
  %607 = load ptr, ptr %381, align 8, !tbaa !28
  %608 = getelementptr inbounds double, ptr %607, i64 %603
  store double %606, ptr %608, align 8, !tbaa !29
  %609 = load ptr, ptr %338, align 8, !tbaa !28
  %610 = getelementptr inbounds double, ptr %609, i64 %603
  %611 = load double, ptr %610, align 8, !tbaa !29
  %612 = load ptr, ptr %382, align 8, !tbaa !28
  %613 = getelementptr inbounds double, ptr %612, i64 %603
  store double %611, ptr %613, align 8, !tbaa !29
  %614 = add nuw nsw i64 %.13605, 2
  %niter735.next.1 = add nuw nsw i64 %niter735, 2
  %niter735.ncmp.1 = icmp eq i64 %niter735.next.1, %unroll_iter734
  br i1 %niter735.ncmp.1, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph607, !llvm.loop !80

.loopexit.loopexit.unr-lcssa:                     ; preds = %.lr.ph607, %.lr.ph607.preheader
  %.13605.unr = phi i64 [ 0, %.lr.ph607.preheader ], [ %614, %.lr.ph607 ]
  br i1 %lcmp.mod733.not, label %.loopexit, label %.lr.ph607.epil

.lr.ph607.epil:                                   ; preds = %.loopexit.loopexit.unr-lcssa
  %615 = load ptr, ptr %341, align 8, !tbaa !28
  %616 = getelementptr inbounds double, ptr %615, i64 %.13605.unr
  %617 = load double, ptr %616, align 8, !tbaa !29
  %618 = load ptr, ptr %381, align 8, !tbaa !28
  %619 = getelementptr inbounds double, ptr %618, i64 %.13605.unr
  store double %617, ptr %619, align 8, !tbaa !29
  %620 = load ptr, ptr %338, align 8, !tbaa !28
  %621 = getelementptr inbounds double, ptr %620, i64 %.13605.unr
  %622 = load double, ptr %621, align 8, !tbaa !29
  %623 = load ptr, ptr %382, align 8, !tbaa !28
  %624 = getelementptr inbounds double, ptr %623, i64 %.13605.unr
  store double %622, ptr %624, align 8, !tbaa !29
  br label %.loopexit

.loopexit:                                        ; preds = %.lr.ph607.epil, %.loopexit.loopexit.unr-lcssa, %._crit_edge603, %473, %._crit_edge597, %.lr.ph610
  %exitcond647.not = icmp eq i64 %446, %383
  br i1 %exitcond647.not, label %.loopexit513, label %.lr.ph610, !llvm.loop !81

.loopexit513:                                     ; preds = %.loopexit, %._crit_edge582
  br i1 %.not499611, label %.preheader, label %.lr.ph614

.preheader:                                       ; preds = %657, %.loopexit513
  br i1 %.not608, label %._crit_edge618, label %.lr.ph617

.lr.ph614:                                        ; preds = %.loopexit513, %657
  %.1467612 = phi i64 [ %658, %657 ], [ 0, %.loopexit513 ]
  %625 = load ptr, ptr %338, align 8, !tbaa !28
  %626 = getelementptr inbounds double, ptr %625, i64 %.1467612
  %627 = getelementptr inbounds i8, ptr %626, i64 16
  %628 = load double, ptr %627, align 8, !tbaa !29
  %629 = getelementptr inbounds i8, ptr %626, i64 24
  %630 = load double, ptr %629, align 8, !tbaa !29
  %631 = getelementptr inbounds i8, ptr %626, i64 32
  %632 = load double, ptr %631, align 8, !tbaa !29
  %633 = load double, ptr @_ZN11alglib_implL21optserv_ognoiselevelfE, align 8, !tbaa !29
  %634 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %628, ptr noundef %6)
  %635 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %634, double noundef 1.000000e+00, ptr noundef %6)
  %636 = fmul double %633, %635
  %637 = load double, ptr @_ZN11alglib_implL21optserv_ognoiselevelfE, align 8, !tbaa !29
  %638 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %630, ptr noundef %6)
  %639 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %638, double noundef 1.000000e+00, ptr noundef %6)
  %640 = fmul double %637, %639
  br i1 %442, label %646, label %641

641:                                              ; preds = %.lr.ph614
  %642 = fadd double %636, %640
  %643 = fadd double %628, %642
  %644 = fcmp olt double %630, %643
  %645 = fcmp olt double %630, %632
  %or.cond509 = select i1 %644, i1 %645, i1 false
  br i1 %or.cond509, label %655, label %657

646:                                              ; preds = %.lr.ph614
  %647 = fmul double %628, %632
  %648 = call noundef i64 @_ZN11alglib_impl7ae_signEdPNS_8ae_stateE(double noundef %647, ptr noundef %6)
  %649 = icmp sgt i64 %648, 0
  br i1 %649, label %650, label %655

650:                                              ; preds = %646
  %651 = fadd double %636, %640
  %652 = fadd double %628, %651
  %653 = fcmp olt double %630, %652
  %654 = fcmp olt double %630, %632
  %or.cond510 = select i1 %653, i1 %654, i1 false
  br i1 %or.cond510, label %655, label %657

655:                                              ; preds = %650, %641, %646
  call void @_ZN11alglib_implL25optserv_c1continuitytest0EPNS_17smoothnessmonitorElllPNS_8ae_stateE(ptr noundef nonnull %0, i64 noundef %.0469620, i64 noundef %.1467612, i64 noundef %.0471, ptr noundef %6)
  %656 = add nuw nsw i64 %.1467612, 1
  call void @_ZN11alglib_implL25optserv_c1continuitytest0EPNS_17smoothnessmonitorElllPNS_8ae_stateE(ptr noundef nonnull %0, i64 noundef %.0469620, i64 noundef %656, i64 noundef %.0471, ptr noundef %6)
  br label %657

657:                                              ; preds = %650, %641, %655
  %658 = add nuw i64 %.1467612, 1
  %exitcond648.not = icmp eq i64 %.1467612, %384
  br i1 %exitcond648.not, label %.preheader, label %.lr.ph614, !llvm.loop !82

.lr.ph617:                                        ; preds = %.preheader, %706
  %.2468616 = phi i64 [ %662, %706 ], [ 0, %.preheader ]
  %659 = load ptr, ptr %338, align 8, !tbaa !28
  %660 = getelementptr inbounds double, ptr %659, i64 %.2468616
  %661 = load double, ptr %660, align 8, !tbaa !29
  %662 = add nuw nsw i64 %.2468616, 1
  %663 = getelementptr inbounds double, ptr %659, i64 %662
  %664 = load double, ptr %663, align 8, !tbaa !29
  %665 = getelementptr inbounds i8, ptr %660, i64 16
  %666 = load double, ptr %665, align 8, !tbaa !29
  %667 = getelementptr inbounds i8, ptr %660, i64 24
  %668 = load double, ptr %667, align 8, !tbaa !29
  %669 = load double, ptr @_ZN11alglib_implL21optserv_ognoiselevelfE, align 8, !tbaa !29
  %670 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %661, ptr noundef %6)
  %671 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %670, double noundef 1.000000e+00, ptr noundef %6)
  %672 = fmul double %669, %671
  %673 = load double, ptr @_ZN11alglib_implL21optserv_ognoiselevelfE, align 8, !tbaa !29
  %674 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %664, ptr noundef %6)
  %675 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %674, double noundef 1.000000e+00, ptr noundef %6)
  %676 = fmul double %673, %675
  %677 = load double, ptr @_ZN11alglib_implL21optserv_ognoiselevelfE, align 8, !tbaa !29
  %678 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %666, ptr noundef %6)
  %679 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %678, double noundef 1.000000e+00, ptr noundef %6)
  %680 = fmul double %677, %679
  %681 = load double, ptr @_ZN11alglib_implL21optserv_ognoiselevelfE, align 8, !tbaa !29
  %682 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %668, ptr noundef %6)
  %683 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %682, double noundef 1.000000e+00, ptr noundef %6)
  %684 = fmul double %681, %683
  br i1 %442, label %693, label %685

685:                                              ; preds = %.lr.ph617
  %686 = fadd double %672, %676
  %687 = fadd double %661, %686
  %688 = fcmp olt double %664, %687
  br i1 %688, label %689, label %706

689:                                              ; preds = %685
  %690 = fadd double %668, %680
  %691 = fadd double %690, %684
  %692 = fcmp olt double %666, %691
  br i1 %692, label %705, label %706

693:                                              ; preds = %.lr.ph617
  %694 = fmul double %661, %668
  %695 = call noundef i64 @_ZN11alglib_impl7ae_signEdPNS_8ae_stateE(double noundef %694, ptr noundef %6)
  %696 = icmp sgt i64 %695, 0
  br i1 %696, label %697, label %705

697:                                              ; preds = %693
  %698 = fadd double %672, %676
  %699 = fadd double %661, %698
  %700 = fcmp olt double %664, %699
  br i1 %700, label %701, label %706

701:                                              ; preds = %697
  %702 = fadd double %668, %680
  %703 = fadd double %702, %684
  %704 = fcmp olt double %666, %703
  br i1 %704, label %705, label %706

705:                                              ; preds = %693, %701, %689
  call void @_ZN11alglib_implL25optserv_c1continuitytest1EPNS_17smoothnessmonitorElllPNS_8ae_stateE(ptr noundef nonnull %0, i64 noundef %.0469620, i64 noundef %.2468616, i64 noundef %.0471, ptr noundef %6)
  br label %706

706:                                              ; preds = %697, %701, %685, %689, %705
  %exitcond649.not = icmp eq i64 %662, %383
  br i1 %exitcond649.not, label %._crit_edge618, label %.lr.ph617, !llvm.loop !83

._crit_edge618:                                   ; preds = %706, %.preheader514, %.preheader
  %707 = add nuw nsw i64 %.0469620, 1
  %exitcond650.not = icmp eq i64 %707, %12
  br i1 %exitcond650.not, label %.loopexit515, label %.preheader514, !llvm.loop !84

.loopexit515:                                     ; preds = %._crit_edge618, %.loopexit516, %7, %16, %20, %125
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #4
  ret void
}

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 0}
!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 = !{!6, !7, i64 8}
!23 = !{!6, !10, i64 16}
!24 = !{i8 0, i8 2}
!25 = !{}
!26 = !{!6, !10, i64 1504}
!27 = !{!6, !10, i64 1505}
!28 = !{!8, !8, i64 0}
!29 = !{!15, !15, i64 0}
!30 = distinct !{!30, !31}
!31 = !{!"llvm.loop.unroll.disable"}
!32 = distinct !{!32, !33}
!33 = !{!"llvm.loop.mustprogress"}
!34 = distinct !{!34, !31}
!35 = distinct !{!35, !33}
!36 = distinct !{!36, !31}
!37 = !{!13, !13, i64 0}
!38 = distinct !{!38, !33}
!39 = distinct !{!39, !31}
!40 = distinct !{!40, !33}
!41 = distinct !{!41, !33}
!42 = !{!6, !7, i64 152}
!43 = distinct !{!43, !31}
!44 = distinct !{!44, !33}
!45 = distinct !{!45, !31}
!46 = distinct !{!46, !33}
!47 = distinct !{!47, !31}
!48 = distinct !{!48, !33}
!49 = distinct !{!49, !33}
!50 = distinct !{!50, !33}
!51 = !{!6, !7, i64 560}
!52 = distinct !{!52, !33}
!53 = !{!7, !7, i64 0}
!54 = distinct !{!54, !33}
!55 = distinct !{!55, !33}
!56 = distinct !{!56, !33}
!57 = !{!6, !10, i64 1552}
!58 = !{!6, !10, i64 1553}
!59 = !{!6, !15, i64 1528}
!60 = !{!6, !15, i64 1568}
!61 = !{!6, !7, i64 1560}
!62 = !{!6, !15, i64 1848}
!63 = !{!6, !10, i64 1864}
!64 = !{!6, !7, i64 1872}
!65 = !{!6, !7, i64 2008}
!66 = !{!6, !7, i64 2144}
!67 = !{!6, !7, i64 2152}
!68 = !{!6, !7, i64 2160}
!69 = distinct !{!69, !33}
!70 = distinct !{!70, !33}
!71 = distinct !{!71, !33}
!72 = !{!6, !15, i64 1856}
!73 = !{!6, !10, i64 2184}
!74 = !{!6, !7, i64 2192}
!75 = !{!6, !7, i64 2328}
!76 = !{!6, !7, i64 2464}
!77 = !{!6, !7, i64 2472}
!78 = !{!6, !7, i64 2480}
!79 = distinct !{!79, !33}
!80 = distinct !{!80, !33}
!81 = distinct !{!81, !33}
!82 = distinct !{!82, !33}
!83 = distinct !{!83, !33}
!84 = distinct !{!84, !33}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass