; LLVM IR from venumb/ZSPACE :: cpp/depends/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::minnlcstate" = type { double, double, i64, i64, i64, double, i64, double, i64, i64, i8, double, double, double, %"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", i64, i64, %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", i64, i64, %"struct.alglib_impl::ae_vector", double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", i8, i8, i8, %"struct.alglib_impl::rcommstate", %"struct.alglib_impl::rcommstate", %"struct.alglib_impl::rcommstate", %"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", %"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_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", double, i8, %"struct.alglib_impl::minlbfgsstate", %"struct.alglib_impl::minlbfgsreport", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i8, %"struct.alglib_impl::minslpstate", i64, %"struct.alglib_impl::smoothnessmonitor", %"struct.alglib_impl::ae_vector", i64, i64, i64, i64, double, i64, double, i64, double, 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_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.1 }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%union.anon.1 = type { ptr }
%"struct.alglib_impl::minlbfgsstate" = type { i64, i64, double, double, double, i64, i8, double, %"struct.alglib_impl::ae_vector", double, i64, i64, i64, i64, i64, %"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", double, %"struct.alglib_impl::ae_vector", double, double, %"struct.alglib_impl::ae_vector", i64, double, %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", i64, %"struct.alglib_impl::precbuflbfgs", %"struct.alglib_impl::precbuflowrank", double, double, double, double, double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, %"struct.alglib_impl::ae_vector", i8, i8, i8, i8, double, %"struct.alglib_impl::rcommstate", i64, i64, i64, %"struct.alglib_impl::linminstate", i64, %"struct.alglib_impl::smoothnessmonitor", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::precbuflbfgs" = type { %"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", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::precbuflowrank" = type { i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::linminstate" = type { i8, i8, i64, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double }
%"struct.alglib_impl::minlbfgsreport" = type { i64, i64, i64 }
%"struct.alglib_impl::minslpstate" = type { i64, i64, i64, i64, i64, %"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", double, i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", double, i8, i8, double, double, %"struct.alglib_impl::minslpsubsolver", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::linminstate", i64, i64, %"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::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", double, double, double, %"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", double, i64, double, i64, %"struct.alglib_impl::ae_vector", i64, i64, i64, i64, i64, i64, i64, double, i64, double, i64, double, i64, %"struct.alglib_impl::rcommstate", %"struct.alglib_impl::rcommstate", %"struct.alglib_impl::rcommstate" }
%"struct.alglib_impl::minslpsubsolver" = type { %"struct.alglib_impl::dualsimplexstate", %"struct.alglib_impl::dualsimplexsettings", %"struct.alglib_impl::dualsimplexbasis", i8, %"struct.alglib_impl::ae_matrix", i64, %"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::sparsematrix", %"struct.alglib_impl::sparsematrix", i64, %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::dualsimplexstate" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::dualsimplexbasis", %"struct.alglib_impl::dualsimplexsubproblem", %"struct.alglib_impl::dualsimplexsubproblem", %"struct.alglib_impl::dualsimplexsubproblem", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, double, double, i64, i64, i64, i64, i64, %"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_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_vector" }
%"struct.alglib_impl::dualsimplexsubproblem" = type { i64, i64, %"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", i64, %"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::dualsimplexsettings" = type { double, double, i64, i64, i64, i64, i64 }
%"struct.alglib_impl::dualsimplexbasis" = type { i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i8, i64, %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"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", i8, double, %"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_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sluv2buffer", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::sparsematrix" }
%"struct.alglib_impl::sluv2buffer" = type { i64, %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sluv2list1matrix", %"struct.alglib_impl::sluv2list1matrix", %"struct.alglib_impl::sluv2sparsetrail", %"struct.alglib_impl::sluv2densetrail", %"struct.alglib_impl::ae_vector", %"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::sluv2list1matrix" = type { i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64 }
%"struct.alglib_impl::sluv2sparsetrail" = type { i64, i64, %"struct.alglib_impl::ae_vector", i64, i64, i64, %"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", i64, %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::sluv2densetrail" = type { i64, i64, %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::sparsematrix" = type { %"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", i64, i64, i64, i64, i64, i64 }
%"struct.alglib_impl::smoothnessmonitor" = type { i64, i64, i8, %"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, i8, i8, double, double, i8, %"struct.alglib_impl::optguardreport", 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::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 }
%"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 }
%"struct.alglib_impl::ae_vector" = type { i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%union.anon.0 = type { ptr }

@.str.445 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.446 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.447 = external hidden unnamed_addr constant [16 x i8], align 1

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN11alglib_impl15minnlciterationEPNS_11minnlcstateEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1) #2 {
  %3 = alloca i1, align 1
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i64, align 8
  %7 = alloca i64, align 8
  %8 = alloca i64, align 8
  %9 = alloca i64, align 8
  %10 = alloca i64, align 8
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  %13 = alloca i8, align 1
  %14 = alloca i32, align 4
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #5
  %15 = load ptr, ptr %4, align 8, !tbaa !5
  %16 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %15, i32 0, i32 32
  %17 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %16, i32 0, i32 0
  %18 = load i32, ptr %17, align 8, !tbaa !9
  %19 = icmp sge i32 %18, 0
  br i1 %19, label %20, label %70

20:                                               ; preds = %2
  %21 = load ptr, ptr %4, align 8, !tbaa !5
  %22 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %21, i32 0, i32 32
  %23 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %22, i32 0, i32 1
  %24 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %23, i32 0, i32 4
  %25 = load ptr, ptr %24, align 8, !tbaa !39
  %26 = getelementptr inbounds i64, ptr %25, i64 0
  %27 = load i64, ptr %26, align 8, !tbaa !40
  store i64 %27, ptr %6, align 8, !tbaa !40
  %28 = load ptr, ptr %4, align 8, !tbaa !5
  %29 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %28, i32 0, i32 32
  %30 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %29, i32 0, i32 1
  %31 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %30, i32 0, i32 4
  %32 = load ptr, ptr %31, align 8, !tbaa !39
  %33 = getelementptr inbounds i64, ptr %32, i64 1
  %34 = load i64, ptr %33, align 8, !tbaa !40
  store i64 %34, ptr %7, align 8, !tbaa !40
  %35 = load ptr, ptr %4, align 8, !tbaa !5
  %36 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %35, i32 0, i32 32
  %37 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %36, i32 0, i32 1
  %38 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %37, i32 0, i32 4
  %39 = load ptr, ptr %38, align 8, !tbaa !39
  %40 = getelementptr inbounds i64, ptr %39, i64 2
  %41 = load i64, ptr %40, align 8, !tbaa !40
  store i64 %41, ptr %8, align 8, !tbaa !40
  %42 = load ptr, ptr %4, align 8, !tbaa !5
  %43 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %42, i32 0, i32 32
  %44 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %43, i32 0, i32 1
  %45 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %44, i32 0, i32 4
  %46 = load ptr, ptr %45, align 8, !tbaa !39
  %47 = getelementptr inbounds i64, ptr %46, i64 3
  %48 = load i64, ptr %47, align 8, !tbaa !40
  store i64 %48, ptr %9, align 8, !tbaa !40
  %49 = load ptr, ptr %4, align 8, !tbaa !5
  %50 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %49, i32 0, i32 32
  %51 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %50, i32 0, i32 1
  %52 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %51, i32 0, i32 4
  %53 = load ptr, ptr %52, align 8, !tbaa !39
  %54 = getelementptr inbounds i64, ptr %53, i64 4
  %55 = load i64, ptr %54, align 8, !tbaa !40
  store i64 %55, ptr %10, align 8, !tbaa !40
  %56 = load ptr, ptr %4, align 8, !tbaa !5
  %57 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %56, i32 0, i32 32
  %58 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %57, i32 0, i32 3
  %59 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %58, i32 0, i32 4
  %60 = load ptr, ptr %59, align 8, !tbaa !39
  %61 = getelementptr inbounds double, ptr %60, i64 0
  %62 = load double, ptr %61, align 8, !tbaa !41
  store double %62, ptr %11, align 8, !tbaa !41
  %63 = load ptr, ptr %4, align 8, !tbaa !5
  %64 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %63, i32 0, i32 32
  %65 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %64, i32 0, i32 3
  %66 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %65, i32 0, i32 4
  %67 = load ptr, ptr %66, align 8, !tbaa !39
  %68 = getelementptr inbounds double, ptr %67, i64 1
  %69 = load double, ptr %68, align 8, !tbaa !41
  store double %69, ptr %12, align 8, !tbaa !41
  br label %71

70:                                               ; preds = %2
  store i64 359, ptr %6, align 8, !tbaa !40
  store i64 -58, ptr %7, align 8, !tbaa !40
  store i64 -919, ptr %8, align 8, !tbaa !40
  store i64 -909, ptr %9, align 8, !tbaa !40
  store i64 81, ptr %10, align 8, !tbaa !40
  store double 2.550000e+02, ptr %11, align 8, !tbaa !41
  store double 7.400000e+01, ptr %12, align 8, !tbaa !41
  br label %71

71:                                               ; preds = %70, %20
  %72 = load ptr, ptr %4, align 8, !tbaa !5
  %73 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %72, i32 0, i32 32
  %74 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %73, i32 0, i32 0
  %75 = load i32, ptr %74, align 8, !tbaa !9
  %76 = icmp eq i32 %75, 0
  br i1 %76, label %77, label %78

77:                                               ; preds = %71
  br label %394

78:                                               ; preds = %71
  %79 = load ptr, ptr %4, align 8, !tbaa !5
  %80 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %79, i32 0, i32 32
  %81 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %80, i32 0, i32 0
  %82 = load i32, ptr %81, align 8, !tbaa !9
  %83 = icmp eq i32 %82, 1
  br i1 %83, label %84, label %85

84:                                               ; preds = %78
  br label %600

85:                                               ; preds = %78
  %86 = load ptr, ptr %4, align 8, !tbaa !5
  %87 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %86, i32 0, i32 32
  %88 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %87, i32 0, i32 0
  %89 = load i32, ptr %88, align 8, !tbaa !9
  %90 = icmp eq i32 %89, 2
  br i1 %90, label %91, label %92

91:                                               ; preds = %85
  br label %657

92:                                               ; preds = %85
  %93 = load ptr, ptr %4, align 8, !tbaa !5
  %94 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %93, i32 0, i32 32
  %95 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %94, i32 0, i32 0
  %96 = load i32, ptr %95, align 8, !tbaa !9
  %97 = icmp eq i32 %96, 3
  br i1 %97, label %98, label %99

98:                                               ; preds = %92
  br label %713

99:                                               ; preds = %92
  %100 = load ptr, ptr %4, align 8, !tbaa !5
  %101 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %100, i32 0, i32 32
  %102 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %101, i32 0, i32 0
  %103 = load i32, ptr %102, align 8, !tbaa !9
  %104 = icmp eq i32 %103, 4
  br i1 %104, label %105, label %106

105:                                              ; preds = %99
  br label %768

106:                                              ; preds = %99
  %107 = load ptr, ptr %4, align 8, !tbaa !5
  %108 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %107, i32 0, i32 32
  %109 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %108, i32 0, i32 0
  %110 = load i32, ptr %109, align 8, !tbaa !9
  %111 = icmp eq i32 %110, 5
  br i1 %111, label %112, label %113

112:                                              ; preds = %106
  br label %867

113:                                              ; preds = %106
  %114 = load ptr, ptr %4, align 8, !tbaa !5
  %115 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %114, i32 0, i32 32
  %116 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %115, i32 0, i32 0
  %117 = load i32, ptr %116, align 8, !tbaa !9
  %118 = icmp eq i32 %117, 6
  br i1 %118, label %119, label %120

119:                                              ; preds = %113
  br label %876

120:                                              ; preds = %113
  %121 = load ptr, ptr %4, align 8, !tbaa !5
  %122 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %121, i32 0, i32 32
  %123 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %122, i32 0, i32 0
  %124 = load i32, ptr %123, align 8, !tbaa !9
  %125 = icmp eq i32 %124, 7
  br i1 %125, label %126, label %127

126:                                              ; preds = %120
  br label %1010

127:                                              ; preds = %120
  %128 = load ptr, ptr %4, align 8, !tbaa !5
  %129 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %128, i32 0, i32 32
  %130 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %129, i32 0, i32 0
  %131 = load i32, ptr %130, align 8, !tbaa !9
  %132 = icmp eq i32 %131, 8
  br i1 %132, label %133, label %134

133:                                              ; preds = %127
  br label %1283

134:                                              ; preds = %127
  %135 = load ptr, ptr %4, align 8, !tbaa !5
  %136 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %135, i32 0, i32 32
  %137 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %136, i32 0, i32 0
  %138 = load i32, ptr %137, align 8, !tbaa !9
  %139 = icmp eq i32 %138, 9
  br i1 %139, label %140, label %141

140:                                              ; preds = %134
  br label %1321

141:                                              ; preds = %134
  %142 = load ptr, ptr %4, align 8, !tbaa !5
  %143 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %142, i32 0, i32 32
  %144 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %143, i32 0, i32 0
  %145 = load i32, ptr %144, align 8, !tbaa !9
  %146 = icmp eq i32 %145, 10
  br i1 %146, label %147, label %148

147:                                              ; preds = %141
  br label %1417

148:                                              ; preds = %141
  %149 = load ptr, ptr %4, align 8, !tbaa !5
  %150 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %149, i32 0, i32 32
  %151 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %150, i32 0, i32 0
  %152 = load i32, ptr %151, align 8, !tbaa !9
  %153 = icmp eq i32 %152, 11
  br i1 %153, label %154, label %155

154:                                              ; preds = %148
  br label %1474

155:                                              ; preds = %148
  %156 = load ptr, ptr %4, align 8, !tbaa !5
  %157 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %156, i32 0, i32 32
  %158 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %157, i32 0, i32 0
  %159 = load i32, ptr %158, align 8, !tbaa !9
  %160 = icmp eq i32 %159, 12
  br i1 %160, label %161, label %162

161:                                              ; preds = %155
  br label %1530

162:                                              ; preds = %155
  %163 = load ptr, ptr %4, align 8, !tbaa !5
  %164 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %163, i32 0, i32 32
  %165 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %164, i32 0, i32 0
  %166 = load i32, ptr %165, align 8, !tbaa !9
  %167 = icmp eq i32 %166, 13
  br i1 %167, label %168, label %169

168:                                              ; preds = %162
  br label %1585

169:                                              ; preds = %162
  %170 = load ptr, ptr %4, align 8, !tbaa !5
  %171 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %170, i32 0, i32 32
  %172 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %171, i32 0, i32 0
  %173 = load i32, ptr %172, align 8, !tbaa !9
  %174 = icmp eq i32 %173, 14
  br i1 %174, label %175, label %176

175:                                              ; preds = %169
  br label %1686

176:                                              ; preds = %169
  %177 = load ptr, ptr %4, align 8, !tbaa !5
  %178 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %177, i32 0, i32 32
  %179 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %178, i32 0, i32 0
  %180 = load i32, ptr %179, align 8, !tbaa !9
  %181 = icmp eq i32 %180, 15
  br i1 %181, label %182, label %183

182:                                              ; preds = %176
  br label %1793

183:                                              ; preds = %176
  %184 = load ptr, ptr %4, align 8, !tbaa !5
  %185 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %184, i32 0, i32 65
  store i8 0, ptr %185, align 8, !tbaa !42
  %186 = load ptr, ptr %4, align 8, !tbaa !5
  %187 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %186, i32 0, i32 73
  store i64 0, ptr %187, align 8, !tbaa !43
  %188 = load ptr, ptr %4, align 8, !tbaa !5
  %189 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %188, i32 0, i32 70
  store i64 0, ptr %189, align 8, !tbaa !44
  %190 = load ptr, ptr %4, align 8, !tbaa !5
  %191 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %190, i32 0, i32 71
  store i64 0, ptr %191, align 8, !tbaa !45
  %192 = load ptr, ptr %4, align 8, !tbaa !5
  %193 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %192, i32 0, i32 72
  store i64 0, ptr %193, align 8, !tbaa !46
  %194 = load ptr, ptr %4, align 8, !tbaa !5
  %195 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %194, i32 0, i32 80
  store i64 0, ptr %195, align 8, !tbaa !47
  %196 = load ptr, ptr %4, align 8, !tbaa !5
  %197 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %196, i32 0, i32 74
  store double 0.000000e+00, ptr %197, align 8, !tbaa !48
  %198 = load ptr, ptr %4, align 8, !tbaa !5
  %199 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %198, i32 0, i32 75
  store i64 -1, ptr %199, align 8, !tbaa !49
  %200 = load ptr, ptr %4, align 8, !tbaa !5
  %201 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %200, i32 0, i32 76
  store double 0.000000e+00, ptr %201, align 8, !tbaa !50
  %202 = load ptr, ptr %4, align 8, !tbaa !5
  %203 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %202, i32 0, i32 77
  store i64 -1, ptr %203, align 8, !tbaa !51
  %204 = load ptr, ptr %4, align 8, !tbaa !5
  %205 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %204, i32 0, i32 78
  store double 0.000000e+00, ptr %205, align 8, !tbaa !52
  %206 = load ptr, ptr %4, align 8, !tbaa !5
  %207 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %206, i32 0, i32 79
  store i64 -1, ptr %207, align 8, !tbaa !53
  %208 = load ptr, ptr %4, align 8, !tbaa !5
  %209 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %208, i32 0, i32 6
  %210 = load i64, ptr %209, align 8, !tbaa !54
  store i64 %210, ptr %8, align 8, !tbaa !40
  %211 = load ptr, ptr %4, align 8, !tbaa !5
  %212 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %211, i32 0, i32 23
  %213 = load i64, ptr %212, align 8, !tbaa !55
  store i64 %213, ptr %9, align 8, !tbaa !40
  %214 = load ptr, ptr %4, align 8, !tbaa !5
  %215 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %214, i32 0, i32 24
  %216 = load i64, ptr %215, align 8, !tbaa !56
  store i64 %216, ptr %10, align 8, !tbaa !40
  %217 = load ptr, ptr %4, align 8, !tbaa !5
  %218 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL25minnlc_clearrequestfieldsEPNS_11minnlcstateEPNS_8ae_stateE(ptr noundef %217, ptr noundef %218)
  %219 = load ptr, ptr %4, align 8, !tbaa !5
  %220 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %219, i32 0, i32 67
  %221 = load i64, ptr %220, align 8, !tbaa !57
  %222 = icmp eq i64 %221, 0
  br i1 %222, label %228, label %223

223:                                              ; preds = %183
  %224 = load ptr, ptr %4, align 8, !tbaa !5
  %225 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %224, i32 0, i32 67
  %226 = load i64, ptr %225, align 8, !tbaa !57
  %227 = icmp eq i64 %226, 1
  br label %228

228:                                              ; preds = %223, %183
  %229 = phi i1 [ true, %183 ], [ %227, %223 ]
  %230 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %229, ptr noundef @.str.445, ptr noundef %230)
  %231 = load ptr, ptr %4, align 8, !tbaa !5
  %232 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %231, i32 0, i32 68
  %233 = load i64, ptr %8, align 8, !tbaa !40
  %234 = load i64, ptr %9, align 8, !tbaa !40
  %235 = add nsw i64 1, %234
  %236 = load i64, ptr %10, align 8, !tbaa !40
  %237 = add nsw i64 %235, %236
  %238 = load ptr, ptr %4, align 8, !tbaa !5
  %239 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %238, i32 0, i32 67
  %240 = load i64, ptr %239, align 8, !tbaa !57
  %241 = icmp sgt i64 %240, 0
  %242 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl21smoothnessmonitorinitEPNS_17smoothnessmonitorEllbPNS_8ae_stateE(ptr noundef %232, i64 noundef %233, i64 noundef %237, i1 noundef zeroext %241, ptr noundef %242)
  store i64 0, ptr %6, align 8, !tbaa !40
  br label %243

243:                                              ; preds = %262, %228
  %244 = load i64, ptr %6, align 8, !tbaa !40
  %245 = load i64, ptr %8, align 8, !tbaa !40
  %246 = sub nsw i64 %245, 1
  %247 = icmp sle i64 %244, %246
  br i1 %247, label %248, label %265

248:                                              ; preds = %243
  %249 = load ptr, ptr %4, align 8, !tbaa !5
  %250 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %249, i32 0, i32 14
  %251 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %250, i32 0, i32 4
  %252 = load ptr, ptr %251, align 8, !tbaa !39
  %253 = load i64, ptr %6, align 8, !tbaa !40
  %254 = getelementptr inbounds double, ptr %252, i64 %253
  %255 = load double, ptr %254, align 8, !tbaa !41
  %256 = load ptr, ptr %4, align 8, !tbaa !5
  %257 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %256, i32 0, i32 69
  %258 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %257, i32 0, i32 4
  %259 = load ptr, ptr %258, align 8, !tbaa !39
  %260 = load i64, ptr %6, align 8, !tbaa !40
  %261 = getelementptr inbounds double, ptr %259, i64 %260
  store double %255, ptr %261, align 8, !tbaa !41
  br label %262

262:                                              ; preds = %248
  %263 = load i64, ptr %6, align 8, !tbaa !40
  %264 = add nsw i64 %263, 1
  store i64 %264, ptr %6, align 8, !tbaa !40
  br label %243, !llvm.loop !58

265:                                              ; preds = %243
  store i64 0, ptr %6, align 8, !tbaa !40
  br label %266

266:                                              ; preds = %332, %265
  %267 = load i64, ptr %6, align 8, !tbaa !40
  %268 = load i64, ptr %8, align 8, !tbaa !40
  %269 = sub nsw i64 %268, 1
  %270 = icmp sle i64 %267, %269
  br i1 %270, label %271, label %335

271:                                              ; preds = %266
  %272 = load ptr, ptr %4, align 8, !tbaa !5
  %273 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %272, i32 0, i32 17
  %274 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %273, i32 0, i32 4
  %275 = load ptr, ptr %274, align 8, !tbaa !39
  %276 = load i64, ptr %6, align 8, !tbaa !40
  %277 = getelementptr inbounds i8, ptr %275, i64 %276
  %278 = load i8, ptr %277, align 1, !tbaa !60, !range !61, !noundef !62
  %279 = trunc i8 %278 to i1
  br i1 %279, label %280, label %331

280:                                              ; preds = %271
  %281 = load ptr, ptr %4, align 8, !tbaa !5
  %282 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %281, i32 0, i32 18
  %283 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %282, i32 0, i32 4
  %284 = load ptr, ptr %283, align 8, !tbaa !39
  %285 = load i64, ptr %6, align 8, !tbaa !40
  %286 = getelementptr inbounds i8, ptr %284, i64 %285
  %287 = load i8, ptr %286, align 1, !tbaa !60, !range !61, !noundef !62
  %288 = trunc i8 %287 to i1
  br i1 %288, label %289, label %331

289:                                              ; preds = %280
  %290 = load ptr, ptr %4, align 8, !tbaa !5
  %291 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %290, i32 0, i32 15
  %292 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %291, i32 0, i32 4
  %293 = load ptr, ptr %292, align 8, !tbaa !39
  %294 = load i64, ptr %6, align 8, !tbaa !40
  %295 = getelementptr inbounds double, ptr %293, i64 %294
  %296 = load double, ptr %295, align 8, !tbaa !41
  %297 = load ptr, ptr %4, align 8, !tbaa !5
  %298 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %297, i32 0, i32 16
  %299 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %298, i32 0, i32 4
  %300 = load ptr, ptr %299, align 8, !tbaa !39
  %301 = load i64, ptr %6, align 8, !tbaa !40
  %302 = getelementptr inbounds double, ptr %300, i64 %301
  %303 = load double, ptr %302, align 8, !tbaa !41
  %304 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %296, double noundef %303)
  br i1 %304, label %305, label %330

305:                                              ; preds = %289
  %306 = load ptr, ptr %4, align 8, !tbaa !5
  %307 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %306, i32 0, i32 73
  store i64 -3, ptr %307, align 8, !tbaa !43
  %308 = load ptr, ptr %4, align 8, !tbaa !5
  %309 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %308, i32 0, i32 15
  %310 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %309, i32 0, i32 4
  %311 = load ptr, ptr %310, align 8, !tbaa !39
  %312 = load i64, ptr %6, align 8, !tbaa !40
  %313 = getelementptr inbounds double, ptr %311, i64 %312
  %314 = load double, ptr %313, align 8, !tbaa !41
  %315 = load ptr, ptr %4, align 8, !tbaa !5
  %316 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %315, i32 0, i32 16
  %317 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %316, i32 0, i32 4
  %318 = load ptr, ptr %317, align 8, !tbaa !39
  %319 = load i64, ptr %6, align 8, !tbaa !40
  %320 = getelementptr inbounds double, ptr %318, i64 %319
  %321 = load double, ptr %320, align 8, !tbaa !41
  %322 = fsub double %314, %321
  %323 = load ptr, ptr %4, align 8, !tbaa !5
  %324 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %323, i32 0, i32 74
  store double %322, ptr %324, align 8, !tbaa !48
  %325 = load i64, ptr %6, align 8, !tbaa !40
  %326 = load ptr, ptr %4, align 8, !tbaa !5
  %327 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %326, i32 0, i32 75
  store i64 %325, ptr %327, align 8, !tbaa !49
  store i8 0, ptr %13, align 1, !tbaa !60
  %328 = load i8, ptr %13, align 1, !tbaa !60, !range !61, !noundef !62
  %329 = trunc i8 %328 to i1
  store i1 %329, ptr %3, align 1
  store i32 1, ptr %14, align 4
  br label %1929

330:                                              ; preds = %289
  br label %331

331:                                              ; preds = %330, %280, %271
  br label %332

332:                                              ; preds = %331
  %333 = load i64, ptr %6, align 8, !tbaa !40
  %334 = add nsw i64 %333, 1
  store i64 %334, ptr %6, align 8, !tbaa !40
  br label %266, !llvm.loop !63

335:                                              ; preds = %266
  %336 = load ptr, ptr %4, align 8, !tbaa !5
  %337 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %336, i32 0, i32 12
  %338 = load double, ptr %337, align 8, !tbaa !64
  %339 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %338, double noundef 0.000000e+00)
  br i1 %339, label %340, label %345

340:                                              ; preds = %335
  %341 = load ptr, ptr %4, align 8, !tbaa !5
  %342 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %341, i32 0, i32 13
  %343 = load double, ptr %342, align 8, !tbaa !65
  %344 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %343, double noundef 0.000000e+00)
  br i1 %344, label %346, label %345

345:                                              ; preds = %340, %335
  br label %453

346:                                              ; preds = %340
  br label %347

347:                                              ; preds = %451, %346
  %348 = load ptr, ptr %4, align 8, !tbaa !5
  %349 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %348, i32 0, i32 68
  %350 = load ptr, ptr %4, align 8, !tbaa !5
  %351 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %350, i32 0, i32 39
  %352 = load ptr, ptr %4, align 8, !tbaa !5
  %353 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %352, i32 0, i32 14
  %354 = load ptr, ptr %4, align 8, !tbaa !5
  %355 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %354, i32 0, i32 15
  %356 = load ptr, ptr %4, align 8, !tbaa !5
  %357 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %356, i32 0, i32 16
  %358 = load ptr, ptr %4, align 8, !tbaa !5
  %359 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %358, i32 0, i32 13
  %360 = load double, ptr %359, align 8, !tbaa !65
  %361 = load ptr, ptr %5, align 8, !tbaa !5
  %362 = call noundef zeroext i1 @_ZN11alglib_impl34smoothnessmonitorcheckgradientatx0EPNS_17smoothnessmonitorEPNS_9ae_vectorES3_S3_S3_bdPNS_8ae_stateE(ptr noundef %349, ptr noundef %351, ptr noundef %353, ptr noundef %355, ptr noundef %357, i1 noundef zeroext true, double noundef %360, ptr noundef %361)
  br i1 %362, label %364, label %363

363:                                              ; preds = %347
  br label %452

364:                                              ; preds = %347
  store i64 0, ptr %6, align 8, !tbaa !40
  br label %365

365:                                              ; preds = %385, %364
  %366 = load i64, ptr %6, align 8, !tbaa !40
  %367 = load i64, ptr %8, align 8, !tbaa !40
  %368 = sub nsw i64 %367, 1
  %369 = icmp sle i64 %366, %368
  br i1 %369, label %370, label %388

370:                                              ; preds = %365
  %371 = load ptr, ptr %4, align 8, !tbaa !5
  %372 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %371, i32 0, i32 68
  %373 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %372, i32 0, i32 27
  %374 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %373, i32 0, i32 4
  %375 = load ptr, ptr %374, align 8, !tbaa !39
  %376 = load i64, ptr %6, align 8, !tbaa !40
  %377 = getelementptr inbounds double, ptr %375, i64 %376
  %378 = load double, ptr %377, align 8, !tbaa !41
  %379 = load ptr, ptr %4, align 8, !tbaa !5
  %380 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %379, i32 0, i32 25
  %381 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %380, i32 0, i32 4
  %382 = load ptr, ptr %381, align 8, !tbaa !39
  %383 = load i64, ptr %6, align 8, !tbaa !40
  %384 = getelementptr inbounds double, ptr %382, i64 %383
  store double %378, ptr %384, align 8, !tbaa !41
  br label %385

385:                                              ; preds = %370
  %386 = load i64, ptr %6, align 8, !tbaa !40
  %387 = add nsw i64 %386, 1
  store i64 %387, ptr %6, align 8, !tbaa !40
  br label %365, !llvm.loop !66

388:                                              ; preds = %365
  %389 = load ptr, ptr %4, align 8, !tbaa !5
  %390 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %389, i32 0, i32 29
  store i8 1, ptr %390, align 8, !tbaa !67
  %391 = load ptr, ptr %4, align 8, !tbaa !5
  %392 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %391, i32 0, i32 32
  %393 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %392, i32 0, i32 0
  store i32 0, ptr %393, align 8, !tbaa !9
  br label %1877

394:                                              ; preds = %77
  %395 = load ptr, ptr %4, align 8, !tbaa !5
  %396 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %395, i32 0, i32 29
  store i8 0, ptr %396, align 8, !tbaa !67
  store i64 0, ptr %6, align 8, !tbaa !40
  br label %397

397:                                              ; preds = %448, %394
  %398 = load i64, ptr %6, align 8, !tbaa !40
  %399 = load i64, ptr %9, align 8, !tbaa !40
  %400 = load i64, ptr %10, align 8, !tbaa !40
  %401 = add nsw i64 %399, %400
  %402 = icmp sle i64 %398, %401
  br i1 %402, label %403, label %451

403:                                              ; preds = %397
  %404 = load ptr, ptr %4, align 8, !tbaa !5
  %405 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %404, i32 0, i32 27
  %406 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %405, i32 0, i32 4
  %407 = load ptr, ptr %406, align 8, !tbaa !39
  %408 = load i64, ptr %6, align 8, !tbaa !40
  %409 = getelementptr inbounds double, ptr %407, i64 %408
  %410 = load double, ptr %409, align 8, !tbaa !41
  %411 = load ptr, ptr %4, align 8, !tbaa !5
  %412 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %411, i32 0, i32 68
  %413 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %412, i32 0, i32 28
  %414 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %413, i32 0, i32 4
  %415 = load ptr, ptr %414, align 8, !tbaa !39
  %416 = load i64, ptr %6, align 8, !tbaa !40
  %417 = getelementptr inbounds double, ptr %415, i64 %416
  store double %410, ptr %417, align 8, !tbaa !41
  store i64 0, ptr %7, align 8, !tbaa !40
  br label %418

418:                                              ; preds = %444, %403
  %419 = load i64, ptr %7, align 8, !tbaa !40
  %420 = load i64, ptr %8, align 8, !tbaa !40
  %421 = sub nsw i64 %420, 1
  %422 = icmp sle i64 %419, %421
  br i1 %422, label %423, label %447

423:                                              ; preds = %418
  %424 = load ptr, ptr %4, align 8, !tbaa !5
  %425 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %424, i32 0, i32 28
  %426 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %425, i32 0, i32 6
  %427 = load ptr, ptr %426, align 8, !tbaa !39
  %428 = load i64, ptr %6, align 8, !tbaa !40
  %429 = getelementptr inbounds ptr, ptr %427, i64 %428
  %430 = load ptr, ptr %429, align 8, !tbaa !5
  %431 = load i64, ptr %7, align 8, !tbaa !40
  %432 = getelementptr inbounds double, ptr %430, i64 %431
  %433 = load double, ptr %432, align 8, !tbaa !41
  %434 = load ptr, ptr %4, align 8, !tbaa !5
  %435 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %434, i32 0, i32 68
  %436 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %435, i32 0, i32 29
  %437 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %436, i32 0, i32 6
  %438 = load ptr, ptr %437, align 8, !tbaa !39
  %439 = load i64, ptr %6, align 8, !tbaa !40
  %440 = getelementptr inbounds ptr, ptr %438, i64 %439
  %441 = load ptr, ptr %440, align 8, !tbaa !5
  %442 = load i64, ptr %7, align 8, !tbaa !40
  %443 = getelementptr inbounds double, ptr %441, i64 %442
  store double %433, ptr %443, align 8, !tbaa !41
  br label %444

444:                                              ; preds = %423
  %445 = load i64, ptr %7, align 8, !tbaa !40
  %446 = add nsw i64 %445, 1
  store i64 %446, ptr %7, align 8, !tbaa !40
  br label %418, !llvm.loop !68

447:                                              ; preds = %418
  br label %448

448:                                              ; preds = %447
  %449 = load i64, ptr %6, align 8, !tbaa !40
  %450 = add nsw i64 %449, 1
  store i64 %450, ptr %6, align 8, !tbaa !40
  br label %397, !llvm.loop !69

451:                                              ; preds = %397
  br label %347

452:                                              ; preds = %363
  br label %453

453:                                              ; preds = %452, %345
  %454 = load ptr, ptr %4, align 8, !tbaa !5
  %455 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %454, i32 0, i32 2
  %456 = load i64, ptr %455, align 8, !tbaa !70
  %457 = icmp ne i64 %456, 0
  br i1 %457, label %458, label %459

458:                                              ; preds = %453
  br label %880

459:                                              ; preds = %453
  %460 = load ptr, ptr %4, align 8, !tbaa !5
  %461 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %460, i32 0, i32 12
  %462 = load double, ptr %461, align 8, !tbaa !64
  %463 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %462, double noundef 0.000000e+00)
  br i1 %463, label %464, label %504

464:                                              ; preds = %459
  %465 = load ptr, ptr %4, align 8, !tbaa !5
  %466 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %465, i32 0, i32 40
  %467 = load i64, ptr %8, align 8, !tbaa !40
  %468 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %466, i64 noundef %467, ptr noundef %468)
  %469 = load ptr, ptr %4, align 8, !tbaa !5
  %470 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %469, i32 0, i32 41
  %471 = load i64, ptr %9, align 8, !tbaa !40
  %472 = add nsw i64 1, %471
  %473 = load i64, ptr %10, align 8, !tbaa !40
  %474 = add nsw i64 %472, %473
  %475 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %470, i64 noundef %474, ptr noundef %475)
  %476 = load ptr, ptr %4, align 8, !tbaa !5
  %477 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %476, i32 0, i32 43
  %478 = load i64, ptr %9, align 8, !tbaa !40
  %479 = add nsw i64 1, %478
  %480 = load i64, ptr %10, align 8, !tbaa !40
  %481 = add nsw i64 %479, %480
  %482 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %477, i64 noundef %481, ptr noundef %482)
  %483 = load ptr, ptr %4, align 8, !tbaa !5
  %484 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %483, i32 0, i32 44
  %485 = load i64, ptr %9, align 8, !tbaa !40
  %486 = add nsw i64 1, %485
  %487 = load i64, ptr %10, align 8, !tbaa !40
  %488 = add nsw i64 %486, %487
  %489 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %484, i64 noundef %488, ptr noundef %489)
  %490 = load ptr, ptr %4, align 8, !tbaa !5
  %491 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %490, i32 0, i32 45
  %492 = load i64, ptr %9, align 8, !tbaa !40
  %493 = add nsw i64 1, %492
  %494 = load i64, ptr %10, align 8, !tbaa !40
  %495 = add nsw i64 %493, %494
  %496 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %491, i64 noundef %495, ptr noundef %496)
  %497 = load ptr, ptr %4, align 8, !tbaa !5
  %498 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %497, i32 0, i32 46
  %499 = load i64, ptr %9, align 8, !tbaa !40
  %500 = add nsw i64 1, %499
  %501 = load i64, ptr %10, align 8, !tbaa !40
  %502 = add nsw i64 %500, %501
  %503 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %498, i64 noundef %502, ptr noundef %503)
  br label %504

504:                                              ; preds = %464, %459
  %505 = load ptr, ptr %4, align 8, !tbaa !5
  %506 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %505, i32 0, i32 33
  %507 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %506, i32 0, i32 1
  %508 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %507, i64 noundef 9, ptr noundef %508)
  %509 = load ptr, ptr %4, align 8, !tbaa !5
  %510 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %509, i32 0, i32 33
  %511 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %510, i32 0, i32 3
  %512 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %511, i64 noundef 8, ptr noundef %512)
  %513 = load ptr, ptr %4, align 8, !tbaa !5
  %514 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %513, i32 0, i32 33
  %515 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %514, i32 0, i32 0
  store i32 -1, ptr %515, align 8, !tbaa !71
  br label %516

516:                                              ; preds = %876, %867, %504
  %517 = load ptr, ptr %4, align 8, !tbaa !5
  %518 = load ptr, ptr %4, align 8, !tbaa !5
  %519 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %518, i32 0, i32 68
  %520 = load ptr, ptr %5, align 8, !tbaa !5
  %521 = call noundef zeroext i1 @_ZN11alglib_implL19minnlc_auliterationEPNS_11minnlcstateEPNS_17smoothnessmonitorEPNS_8ae_stateE(ptr noundef %517, ptr noundef %519, ptr noundef %520)
  br i1 %521, label %523, label %522

522:                                              ; preds = %516
  br label %877

523:                                              ; preds = %516
  %524 = load ptr, ptr %4, align 8, !tbaa !5
  %525 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %524, i32 0, i32 12
  %526 = load double, ptr %525, align 8, !tbaa !64
  %527 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %526, double noundef 0.000000e+00)
  br i1 %527, label %528, label %533

528:                                              ; preds = %523
  %529 = load ptr, ptr %4, align 8, !tbaa !5
  %530 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %529, i32 0, i32 29
  %531 = load i8, ptr %530, align 8, !tbaa !67, !range !61, !noundef !62
  %532 = trunc i8 %531 to i1
  br i1 %532, label %534, label %533

533:                                              ; preds = %528, %523
  br label %872

534:                                              ; preds = %528
  %535 = load ptr, ptr %4, align 8, !tbaa !5
  %536 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %535, i32 0, i32 29
  store i8 0, ptr %536, align 8, !tbaa !67
  %537 = load ptr, ptr %4, align 8, !tbaa !5
  %538 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %537, i32 0, i32 30
  store i8 1, ptr %538, align 1, !tbaa !72
  %539 = load ptr, ptr %4, align 8, !tbaa !5
  %540 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %539, i32 0, i32 40
  %541 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %540, i32 0, i32 4
  %542 = load ptr, ptr %541, align 8, !tbaa !39
  %543 = getelementptr inbounds double, ptr %542, i64 0
  %544 = load ptr, ptr %4, align 8, !tbaa !5
  %545 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %544, i32 0, i32 25
  %546 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %545, i32 0, i32 4
  %547 = load ptr, ptr %546, align 8, !tbaa !39
  %548 = getelementptr inbounds double, ptr %547, i64 0
  %549 = load i64, ptr %8, align 8, !tbaa !40
  %550 = sub nsw i64 %549, 1
  %551 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %550)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %543, i64 noundef 1, ptr noundef %548, i64 noundef 1, i64 noundef %551)
  store i64 0, ptr %7, align 8, !tbaa !40
  br label %552

552:                                              ; preds = %847, %534
  %553 = load i64, ptr %7, align 8, !tbaa !40
  %554 = load i64, ptr %8, align 8, !tbaa !40
  %555 = sub nsw i64 %554, 1
  %556 = icmp sgt i64 %553, %555
  br i1 %556, label %557, label %558

557:                                              ; preds = %552
  br label %850

558:                                              ; preds = %552
  %559 = load ptr, ptr %4, align 8, !tbaa !5
  %560 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %559, i32 0, i32 25
  %561 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %560, i32 0, i32 4
  %562 = load ptr, ptr %561, align 8, !tbaa !39
  %563 = getelementptr inbounds double, ptr %562, i64 0
  %564 = load ptr, ptr %4, align 8, !tbaa !5
  %565 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %564, i32 0, i32 40
  %566 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %565, i32 0, i32 4
  %567 = load ptr, ptr %566, align 8, !tbaa !39
  %568 = getelementptr inbounds double, ptr %567, i64 0
  %569 = load i64, ptr %8, align 8, !tbaa !40
  %570 = sub nsw i64 %569, 1
  %571 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %570)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %563, i64 noundef 1, ptr noundef %568, i64 noundef 1, i64 noundef %571)
  %572 = load ptr, ptr %4, align 8, !tbaa !5
  %573 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %572, i32 0, i32 25
  %574 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %573, i32 0, i32 4
  %575 = load ptr, ptr %574, align 8, !tbaa !39
  %576 = load i64, ptr %7, align 8, !tbaa !40
  %577 = getelementptr inbounds double, ptr %575, i64 %576
  %578 = load double, ptr %577, align 8, !tbaa !41
  %579 = load ptr, ptr %4, align 8, !tbaa !5
  %580 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %579, i32 0, i32 14
  %581 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %580, i32 0, i32 4
  %582 = load ptr, ptr %581, align 8, !tbaa !39
  %583 = load i64, ptr %7, align 8, !tbaa !40
  %584 = getelementptr inbounds double, ptr %582, i64 %583
  %585 = load double, ptr %584, align 8, !tbaa !41
  %586 = load ptr, ptr %4, align 8, !tbaa !5
  %587 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %586, i32 0, i32 12
  %588 = load double, ptr %587, align 8, !tbaa !64
  %589 = fneg double %585
  %590 = call double @llvm.fmuladd.f64(double %589, double %588, double %578)
  %591 = load ptr, ptr %4, align 8, !tbaa !5
  %592 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %591, i32 0, i32 25
  %593 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %592, i32 0, i32 4
  %594 = load ptr, ptr %593, align 8, !tbaa !39
  %595 = load i64, ptr %7, align 8, !tbaa !40
  %596 = getelementptr inbounds double, ptr %594, i64 %595
  store double %590, ptr %596, align 8, !tbaa !41
  %597 = load ptr, ptr %4, align 8, !tbaa !5
  %598 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %597, i32 0, i32 32
  %599 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %598, i32 0, i32 0
  store i32 1, ptr %599, align 8, !tbaa !9
  br label %1877

600:                                              ; preds = %84
  %601 = load ptr, ptr %4, align 8, !tbaa !5
  %602 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %601, i32 0, i32 43
  %603 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %602, i32 0, i32 4
  %604 = load ptr, ptr %603, align 8, !tbaa !39
  %605 = getelementptr inbounds double, ptr %604, i64 0
  %606 = load ptr, ptr %4, align 8, !tbaa !5
  %607 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %606, i32 0, i32 27
  %608 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %607, i32 0, i32 4
  %609 = load ptr, ptr %608, align 8, !tbaa !39
  %610 = getelementptr inbounds double, ptr %609, i64 0
  %611 = load i64, ptr %9, align 8, !tbaa !40
  %612 = load i64, ptr %10, align 8, !tbaa !40
  %613 = add nsw i64 %611, %612
  %614 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %613)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %605, i64 noundef 1, ptr noundef %610, i64 noundef 1, i64 noundef %614)
  %615 = load ptr, ptr %4, align 8, !tbaa !5
  %616 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %615, i32 0, i32 25
  %617 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %616, i32 0, i32 4
  %618 = load ptr, ptr %617, align 8, !tbaa !39
  %619 = getelementptr inbounds double, ptr %618, i64 0
  %620 = load ptr, ptr %4, align 8, !tbaa !5
  %621 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %620, i32 0, i32 40
  %622 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %621, i32 0, i32 4
  %623 = load ptr, ptr %622, align 8, !tbaa !39
  %624 = getelementptr inbounds double, ptr %623, i64 0
  %625 = load i64, ptr %8, align 8, !tbaa !40
  %626 = sub nsw i64 %625, 1
  %627 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %626)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %619, i64 noundef 1, ptr noundef %624, i64 noundef 1, i64 noundef %627)
  %628 = load ptr, ptr %4, align 8, !tbaa !5
  %629 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %628, i32 0, i32 25
  %630 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %629, i32 0, i32 4
  %631 = load ptr, ptr %630, align 8, !tbaa !39
  %632 = load i64, ptr %7, align 8, !tbaa !40
  %633 = getelementptr inbounds double, ptr %631, i64 %632
  %634 = load double, ptr %633, align 8, !tbaa !41
  %635 = load ptr, ptr %4, align 8, !tbaa !5
  %636 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %635, i32 0, i32 14
  %637 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %636, i32 0, i32 4
  %638 = load ptr, ptr %637, align 8, !tbaa !39
  %639 = load i64, ptr %7, align 8, !tbaa !40
  %640 = getelementptr inbounds double, ptr %638, i64 %639
  %641 = load double, ptr %640, align 8, !tbaa !41
  %642 = fmul double 5.000000e-01, %641
  %643 = load ptr, ptr %4, align 8, !tbaa !5
  %644 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %643, i32 0, i32 12
  %645 = load double, ptr %644, align 8, !tbaa !64
  %646 = fneg double %642
  %647 = call double @llvm.fmuladd.f64(double %646, double %645, double %634)
  %648 = load ptr, ptr %4, align 8, !tbaa !5
  %649 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %648, i32 0, i32 25
  %650 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %649, i32 0, i32 4
  %651 = load ptr, ptr %650, align 8, !tbaa !39
  %652 = load i64, ptr %7, align 8, !tbaa !40
  %653 = getelementptr inbounds double, ptr %651, i64 %652
  store double %647, ptr %653, align 8, !tbaa !41
  %654 = load ptr, ptr %4, align 8, !tbaa !5
  %655 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %654, i32 0, i32 32
  %656 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %655, i32 0, i32 0
  store i32 2, ptr %656, align 8, !tbaa !9
  br label %1877

657:                                              ; preds = %91
  %658 = load ptr, ptr %4, align 8, !tbaa !5
  %659 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %658, i32 0, i32 44
  %660 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %659, i32 0, i32 4
  %661 = load ptr, ptr %660, align 8, !tbaa !39
  %662 = getelementptr inbounds double, ptr %661, i64 0
  %663 = load ptr, ptr %4, align 8, !tbaa !5
  %664 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %663, i32 0, i32 27
  %665 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %664, i32 0, i32 4
  %666 = load ptr, ptr %665, align 8, !tbaa !39
  %667 = getelementptr inbounds double, ptr %666, i64 0
  %668 = load i64, ptr %9, align 8, !tbaa !40
  %669 = load i64, ptr %10, align 8, !tbaa !40
  %670 = add nsw i64 %668, %669
  %671 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %670)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %662, i64 noundef 1, ptr noundef %667, i64 noundef 1, i64 noundef %671)
  %672 = load ptr, ptr %4, align 8, !tbaa !5
  %673 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %672, i32 0, i32 25
  %674 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %673, i32 0, i32 4
  %675 = load ptr, ptr %674, align 8, !tbaa !39
  %676 = getelementptr inbounds double, ptr %675, i64 0
  %677 = load ptr, ptr %4, align 8, !tbaa !5
  %678 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %677, i32 0, i32 40
  %679 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %678, i32 0, i32 4
  %680 = load ptr, ptr %679, align 8, !tbaa !39
  %681 = getelementptr inbounds double, ptr %680, i64 0
  %682 = load i64, ptr %8, align 8, !tbaa !40
  %683 = sub nsw i64 %682, 1
  %684 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %683)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %676, i64 noundef 1, ptr noundef %681, i64 noundef 1, i64 noundef %684)
  %685 = load ptr, ptr %4, align 8, !tbaa !5
  %686 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %685, i32 0, i32 25
  %687 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %686, i32 0, i32 4
  %688 = load ptr, ptr %687, align 8, !tbaa !39
  %689 = load i64, ptr %7, align 8, !tbaa !40
  %690 = getelementptr inbounds double, ptr %688, i64 %689
  %691 = load double, ptr %690, align 8, !tbaa !41
  %692 = load ptr, ptr %4, align 8, !tbaa !5
  %693 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %692, i32 0, i32 14
  %694 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %693, i32 0, i32 4
  %695 = load ptr, ptr %694, align 8, !tbaa !39
  %696 = load i64, ptr %7, align 8, !tbaa !40
  %697 = getelementptr inbounds double, ptr %695, i64 %696
  %698 = load double, ptr %697, align 8, !tbaa !41
  %699 = fmul double 5.000000e-01, %698
  %700 = load ptr, ptr %4, align 8, !tbaa !5
  %701 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %700, i32 0, i32 12
  %702 = load double, ptr %701, align 8, !tbaa !64
  %703 = call double @llvm.fmuladd.f64(double %699, double %702, double %691)
  %704 = load ptr, ptr %4, align 8, !tbaa !5
  %705 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %704, i32 0, i32 25
  %706 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %705, i32 0, i32 4
  %707 = load ptr, ptr %706, align 8, !tbaa !39
  %708 = load i64, ptr %7, align 8, !tbaa !40
  %709 = getelementptr inbounds double, ptr %707, i64 %708
  store double %703, ptr %709, align 8, !tbaa !41
  %710 = load ptr, ptr %4, align 8, !tbaa !5
  %711 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %710, i32 0, i32 32
  %712 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %711, i32 0, i32 0
  store i32 3, ptr %712, align 8, !tbaa !9
  br label %1877

713:                                              ; preds = %98
  %714 = load ptr, ptr %4, align 8, !tbaa !5
  %715 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %714, i32 0, i32 45
  %716 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %715, i32 0, i32 4
  %717 = load ptr, ptr %716, align 8, !tbaa !39
  %718 = getelementptr inbounds double, ptr %717, i64 0
  %719 = load ptr, ptr %4, align 8, !tbaa !5
  %720 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %719, i32 0, i32 27
  %721 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %720, i32 0, i32 4
  %722 = load ptr, ptr %721, align 8, !tbaa !39
  %723 = getelementptr inbounds double, ptr %722, i64 0
  %724 = load i64, ptr %9, align 8, !tbaa !40
  %725 = load i64, ptr %10, align 8, !tbaa !40
  %726 = add nsw i64 %724, %725
  %727 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %726)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %718, i64 noundef 1, ptr noundef %723, i64 noundef 1, i64 noundef %727)
  %728 = load ptr, ptr %4, align 8, !tbaa !5
  %729 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %728, i32 0, i32 25
  %730 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %729, i32 0, i32 4
  %731 = load ptr, ptr %730, align 8, !tbaa !39
  %732 = getelementptr inbounds double, ptr %731, i64 0
  %733 = load ptr, ptr %4, align 8, !tbaa !5
  %734 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %733, i32 0, i32 40
  %735 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %734, i32 0, i32 4
  %736 = load ptr, ptr %735, align 8, !tbaa !39
  %737 = getelementptr inbounds double, ptr %736, i64 0
  %738 = load i64, ptr %8, align 8, !tbaa !40
  %739 = sub nsw i64 %738, 1
  %740 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %739)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %732, i64 noundef 1, ptr noundef %737, i64 noundef 1, i64 noundef %740)
  %741 = load ptr, ptr %4, align 8, !tbaa !5
  %742 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %741, i32 0, i32 25
  %743 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %742, i32 0, i32 4
  %744 = load ptr, ptr %743, align 8, !tbaa !39
  %745 = load i64, ptr %7, align 8, !tbaa !40
  %746 = getelementptr inbounds double, ptr %744, i64 %745
  %747 = load double, ptr %746, align 8, !tbaa !41
  %748 = load ptr, ptr %4, align 8, !tbaa !5
  %749 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %748, i32 0, i32 14
  %750 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %749, i32 0, i32 4
  %751 = load ptr, ptr %750, align 8, !tbaa !39
  %752 = load i64, ptr %7, align 8, !tbaa !40
  %753 = getelementptr inbounds double, ptr %751, i64 %752
  %754 = load double, ptr %753, align 8, !tbaa !41
  %755 = load ptr, ptr %4, align 8, !tbaa !5
  %756 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %755, i32 0, i32 12
  %757 = load double, ptr %756, align 8, !tbaa !64
  %758 = call double @llvm.fmuladd.f64(double %754, double %757, double %747)
  %759 = load ptr, ptr %4, align 8, !tbaa !5
  %760 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %759, i32 0, i32 25
  %761 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %760, i32 0, i32 4
  %762 = load ptr, ptr %761, align 8, !tbaa !39
  %763 = load i64, ptr %7, align 8, !tbaa !40
  %764 = getelementptr inbounds double, ptr %762, i64 %763
  store double %758, ptr %764, align 8, !tbaa !41
  %765 = load ptr, ptr %4, align 8, !tbaa !5
  %766 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %765, i32 0, i32 32
  %767 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %766, i32 0, i32 0
  store i32 4, ptr %767, align 8, !tbaa !9
  br label %1877

768:                                              ; preds = %105
  %769 = load ptr, ptr %4, align 8, !tbaa !5
  %770 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %769, i32 0, i32 46
  %771 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %770, i32 0, i32 4
  %772 = load ptr, ptr %771, align 8, !tbaa !39
  %773 = getelementptr inbounds double, ptr %772, i64 0
  %774 = load ptr, ptr %4, align 8, !tbaa !5
  %775 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %774, i32 0, i32 27
  %776 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %775, i32 0, i32 4
  %777 = load ptr, ptr %776, align 8, !tbaa !39
  %778 = getelementptr inbounds double, ptr %777, i64 0
  %779 = load i64, ptr %9, align 8, !tbaa !40
  %780 = load i64, ptr %10, align 8, !tbaa !40
  %781 = add nsw i64 %779, %780
  %782 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %781)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %773, i64 noundef 1, ptr noundef %778, i64 noundef 1, i64 noundef %782)
  store i64 0, ptr %6, align 8, !tbaa !40
  br label %783

783:                                              ; preds = %844, %768
  %784 = load i64, ptr %6, align 8, !tbaa !40
  %785 = load i64, ptr %9, align 8, !tbaa !40
  %786 = load i64, ptr %10, align 8, !tbaa !40
  %787 = add nsw i64 %785, %786
  %788 = icmp sle i64 %784, %787
  br i1 %788, label %789, label %847

789:                                              ; preds = %783
  %790 = load ptr, ptr %4, align 8, !tbaa !5
  %791 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %790, i32 0, i32 45
  %792 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %791, i32 0, i32 4
  %793 = load ptr, ptr %792, align 8, !tbaa !39
  %794 = load i64, ptr %6, align 8, !tbaa !40
  %795 = getelementptr inbounds double, ptr %793, i64 %794
  %796 = load double, ptr %795, align 8, !tbaa !41
  %797 = load ptr, ptr %4, align 8, !tbaa !5
  %798 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %797, i32 0, i32 44
  %799 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %798, i32 0, i32 4
  %800 = load ptr, ptr %799, align 8, !tbaa !39
  %801 = load i64, ptr %6, align 8, !tbaa !40
  %802 = getelementptr inbounds double, ptr %800, i64 %801
  %803 = load double, ptr %802, align 8, !tbaa !41
  %804 = fsub double %796, %803
  %805 = load ptr, ptr %4, align 8, !tbaa !5
  %806 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %805, i32 0, i32 46
  %807 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %806, i32 0, i32 4
  %808 = load ptr, ptr %807, align 8, !tbaa !39
  %809 = load i64, ptr %6, align 8, !tbaa !40
  %810 = getelementptr inbounds double, ptr %808, i64 %809
  %811 = load double, ptr %810, align 8, !tbaa !41
  %812 = load ptr, ptr %4, align 8, !tbaa !5
  %813 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %812, i32 0, i32 43
  %814 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %813, i32 0, i32 4
  %815 = load ptr, ptr %814, align 8, !tbaa !39
  %816 = load i64, ptr %6, align 8, !tbaa !40
  %817 = getelementptr inbounds double, ptr %815, i64 %816
  %818 = load double, ptr %817, align 8, !tbaa !41
  %819 = fsub double %811, %818
  %820 = fneg double %819
  %821 = call double @llvm.fmuladd.f64(double 8.000000e+00, double %804, double %820)
  %822 = load ptr, ptr %4, align 8, !tbaa !5
  %823 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %822, i32 0, i32 12
  %824 = load double, ptr %823, align 8, !tbaa !64
  %825 = fmul double 6.000000e+00, %824
  %826 = load ptr, ptr %4, align 8, !tbaa !5
  %827 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %826, i32 0, i32 14
  %828 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %827, i32 0, i32 4
  %829 = load ptr, ptr %828, align 8, !tbaa !39
  %830 = load i64, ptr %6, align 8, !tbaa !40
  %831 = getelementptr inbounds double, ptr %829, i64 %830
  %832 = load double, ptr %831, align 8, !tbaa !41
  %833 = fmul double %825, %832
  %834 = fdiv double %821, %833
  %835 = load ptr, ptr %4, align 8, !tbaa !5
  %836 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %835, i32 0, i32 28
  %837 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %836, i32 0, i32 6
  %838 = load ptr, ptr %837, align 8, !tbaa !39
  %839 = load i64, ptr %6, align 8, !tbaa !40
  %840 = getelementptr inbounds ptr, ptr %838, i64 %839
  %841 = load ptr, ptr %840, align 8, !tbaa !5
  %842 = load i64, ptr %7, align 8, !tbaa !40
  %843 = getelementptr inbounds double, ptr %841, i64 %842
  store double %834, ptr %843, align 8, !tbaa !41
  br label %844

844:                                              ; preds = %789
  %845 = load i64, ptr %6, align 8, !tbaa !40
  %846 = add nsw i64 %845, 1
  store i64 %846, ptr %6, align 8, !tbaa !40
  br label %783, !llvm.loop !73

847:                                              ; preds = %783
  %848 = load i64, ptr %7, align 8, !tbaa !40
  %849 = add nsw i64 %848, 1
  store i64 %849, ptr %7, align 8, !tbaa !40
  br label %552

850:                                              ; preds = %557
  %851 = load ptr, ptr %4, align 8, !tbaa !5
  %852 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %851, i32 0, i32 25
  %853 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %852, i32 0, i32 4
  %854 = load ptr, ptr %853, align 8, !tbaa !39
  %855 = getelementptr inbounds double, ptr %854, i64 0
  %856 = load ptr, ptr %4, align 8, !tbaa !5
  %857 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %856, i32 0, i32 40
  %858 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %857, i32 0, i32 4
  %859 = load ptr, ptr %858, align 8, !tbaa !39
  %860 = getelementptr inbounds double, ptr %859, i64 0
  %861 = load i64, ptr %8, align 8, !tbaa !40
  %862 = sub nsw i64 %861, 1
  %863 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %862)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %855, i64 noundef 1, ptr noundef %860, i64 noundef 1, i64 noundef %863)
  %864 = load ptr, ptr %4, align 8, !tbaa !5
  %865 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %864, i32 0, i32 32
  %866 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %865, i32 0, i32 0
  store i32 5, ptr %866, align 8, !tbaa !9
  br label %1877

867:                                              ; preds = %112
  %868 = load ptr, ptr %4, align 8, !tbaa !5
  %869 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %868, i32 0, i32 30
  store i8 0, ptr %869, align 1, !tbaa !72
  %870 = load ptr, ptr %4, align 8, !tbaa !5
  %871 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %870, i32 0, i32 29
  store i8 1, ptr %871, align 8, !tbaa !67
  br label %516

872:                                              ; preds = %533
  %873 = load ptr, ptr %4, align 8, !tbaa !5
  %874 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %873, i32 0, i32 32
  %875 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %874, i32 0, i32 0
  store i32 6, ptr %875, align 8, !tbaa !9
  br label %1877

876:                                              ; preds = %119
  br label %516

877:                                              ; preds = %522
  store i8 0, ptr %13, align 1, !tbaa !60
  %878 = load i8, ptr %13, align 1, !tbaa !60, !range !61, !noundef !62
  %879 = trunc i8 %878 to i1
  store i1 %879, ptr %3, align 1
  store i32 1, ptr %14, align 4
  br label %1929

880:                                              ; preds = %458
  %881 = load ptr, ptr %4, align 8, !tbaa !5
  %882 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %881, i32 0, i32 2
  %883 = load i64, ptr %882, align 8, !tbaa !70
  %884 = icmp ne i64 %883, 1
  br i1 %884, label %885, label %886

885:                                              ; preds = %880
  br label %1874

886:                                              ; preds = %880
  %887 = load ptr, ptr %4, align 8, !tbaa !5
  %888 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %887, i32 0, i32 12
  %889 = load double, ptr %888, align 8, !tbaa !64
  %890 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %889, double noundef 0.000000e+00)
  br i1 %890, label %891, label %931

891:                                              ; preds = %886
  %892 = load ptr, ptr %4, align 8, !tbaa !5
  %893 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %892, i32 0, i32 40
  %894 = load i64, ptr %8, align 8, !tbaa !40
  %895 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %893, i64 noundef %894, ptr noundef %895)
  %896 = load ptr, ptr %4, align 8, !tbaa !5
  %897 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %896, i32 0, i32 41
  %898 = load i64, ptr %9, align 8, !tbaa !40
  %899 = add nsw i64 1, %898
  %900 = load i64, ptr %10, align 8, !tbaa !40
  %901 = add nsw i64 %899, %900
  %902 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %897, i64 noundef %901, ptr noundef %902)
  %903 = load ptr, ptr %4, align 8, !tbaa !5
  %904 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %903, i32 0, i32 43
  %905 = load i64, ptr %9, align 8, !tbaa !40
  %906 = add nsw i64 1, %905
  %907 = load i64, ptr %10, align 8, !tbaa !40
  %908 = add nsw i64 %906, %907
  %909 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %904, i64 noundef %908, ptr noundef %909)
  %910 = load ptr, ptr %4, align 8, !tbaa !5
  %911 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %910, i32 0, i32 44
  %912 = load i64, ptr %9, align 8, !tbaa !40
  %913 = add nsw i64 1, %912
  %914 = load i64, ptr %10, align 8, !tbaa !40
  %915 = add nsw i64 %913, %914
  %916 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %911, i64 noundef %915, ptr noundef %916)
  %917 = load ptr, ptr %4, align 8, !tbaa !5
  %918 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %917, i32 0, i32 45
  %919 = load i64, ptr %9, align 8, !tbaa !40
  %920 = add nsw i64 1, %919
  %921 = load i64, ptr %10, align 8, !tbaa !40
  %922 = add nsw i64 %920, %921
  %923 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %918, i64 noundef %922, ptr noundef %923)
  %924 = load ptr, ptr %4, align 8, !tbaa !5
  %925 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %924, i32 0, i32 46
  %926 = load i64, ptr %9, align 8, !tbaa !40
  %927 = add nsw i64 1, %926
  %928 = load i64, ptr %10, align 8, !tbaa !40
  %929 = add nsw i64 %927, %928
  %930 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %925, i64 noundef %929, ptr noundef %930)
  br label %931

931:                                              ; preds = %891, %886
  %932 = load ptr, ptr %4, align 8, !tbaa !5
  %933 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %932, i32 0, i32 15
  %934 = load ptr, ptr %4, align 8, !tbaa !5
  %935 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %934, i32 0, i32 16
  %936 = load ptr, ptr %4, align 8, !tbaa !5
  %937 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %936, i32 0, i32 14
  %938 = load ptr, ptr %4, align 8, !tbaa !5
  %939 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %938, i32 0, i32 39
  %940 = load i64, ptr %8, align 8, !tbaa !40
  %941 = load ptr, ptr %4, align 8, !tbaa !5
  %942 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %941, i32 0, i32 21
  %943 = load ptr, ptr %4, align 8, !tbaa !5
  %944 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %943, i32 0, i32 22
  %945 = load ptr, ptr %4, align 8, !tbaa !5
  %946 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %945, i32 0, i32 19
  %947 = load i64, ptr %946, align 8, !tbaa !74
  %948 = load ptr, ptr %4, align 8, !tbaa !5
  %949 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %948, i32 0, i32 20
  %950 = load i64, ptr %949, align 8, !tbaa !75
  %951 = load ptr, ptr %4, align 8, !tbaa !5
  %952 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %951, i32 0, i32 23
  %953 = load i64, ptr %952, align 8, !tbaa !55
  %954 = load ptr, ptr %4, align 8, !tbaa !5
  %955 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %954, i32 0, i32 24
  %956 = load i64, ptr %955, align 8, !tbaa !56
  %957 = load ptr, ptr %4, align 8, !tbaa !5
  %958 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %957, i32 0, i32 7
  %959 = load double, ptr %958, align 8, !tbaa !76
  %960 = load ptr, ptr %4, align 8, !tbaa !5
  %961 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %960, i32 0, i32 8
  %962 = load i64, ptr %961, align 8, !tbaa !77
  %963 = load ptr, ptr %4, align 8, !tbaa !5
  %964 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %963, i32 0, i32 66
  %965 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl13minslpinitbufEPNS_9ae_vectorES1_S1_S1_lPNS_9ae_matrixES1_lllldlPNS_11minslpstateEPNS_8ae_stateE(ptr noundef %933, ptr noundef %935, ptr noundef %937, ptr noundef %939, i64 noundef %940, ptr noundef %942, ptr noundef %944, i64 noundef %947, i64 noundef %950, i64 noundef %953, i64 noundef %956, double noundef %959, i64 noundef %962, ptr noundef %964, ptr noundef %965)
  br label %966

966:                                              ; preds = %1797, %1796, %1754, %931
  %967 = load ptr, ptr %4, align 8, !tbaa !5
  %968 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %967, i32 0, i32 66
  %969 = load ptr, ptr %4, align 8, !tbaa !5
  %970 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %969, i32 0, i32 68
  %971 = load ptr, ptr %4, align 8, !tbaa !5
  %972 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %971, i32 0, i32 65
  %973 = load i8, ptr %972, align 8, !tbaa !42, !range !61, !noundef !62
  %974 = trunc i8 %973 to i1
  %975 = load ptr, ptr %5, align 8, !tbaa !5
  %976 = call noundef zeroext i1 @_ZN11alglib_impl15minslpiterationEPNS_11minslpstateEPNS_17smoothnessmonitorEbPNS_8ae_stateE(ptr noundef %968, ptr noundef %970, i1 noundef zeroext %974, ptr noundef %975)
  br i1 %976, label %978, label %977

977:                                              ; preds = %966
  br label %1804

978:                                              ; preds = %966
  %979 = load ptr, ptr %4, align 8, !tbaa !5
  %980 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %979, i32 0, i32 66
  %981 = getelementptr inbounds %"struct.alglib_impl::minslpstate", ptr %980, i32 0, i32 18
  %982 = load i8, ptr %981, align 8, !tbaa !78, !range !61, !noundef !62
  %983 = trunc i8 %982 to i1
  br i1 %983, label %985, label %984

984:                                              ; preds = %978
  br label %1755

985:                                              ; preds = %978
  %986 = load ptr, ptr %4, align 8, !tbaa !5
  %987 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %986, i32 0, i32 12
  %988 = load double, ptr %987, align 8, !tbaa !64
  %989 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %988, double noundef 0.000000e+00)
  br i1 %989, label %990, label %991

990:                                              ; preds = %985
  br label %1076

991:                                              ; preds = %985
  %992 = load ptr, ptr %4, align 8, !tbaa !5
  %993 = load ptr, ptr %4, align 8, !tbaa !5
  %994 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %993, i32 0, i32 66
  %995 = getelementptr inbounds %"struct.alglib_impl::minslpstate", ptr %994, i32 0, i32 14
  %996 = load ptr, ptr %4, align 8, !tbaa !5
  %997 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %996, i32 0, i32 66
  %998 = getelementptr inbounds %"struct.alglib_impl::minslpstate", ptr %997, i32 0, i32 9
  %999 = load ptr, ptr %4, align 8, !tbaa !5
  %1000 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %999, i32 0, i32 66
  %1001 = getelementptr inbounds %"struct.alglib_impl::minslpstate", ptr %1000, i32 0, i32 10
  %1002 = load ptr, ptr %4, align 8, !tbaa !5
  %1003 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1002, i32 0, i32 25
  %1004 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL14minnlc_unscaleEPNS_11minnlcstateEPNS_9ae_vectorES3_S3_S3_PNS_8ae_stateE(ptr noundef %992, ptr noundef %995, ptr noundef %998, ptr noundef %1001, ptr noundef %1003, ptr noundef %1004)
  %1005 = load ptr, ptr %4, align 8, !tbaa !5
  %1006 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1005, i32 0, i32 29
  store i8 1, ptr %1006, align 8, !tbaa !67
  %1007 = load ptr, ptr %4, align 8, !tbaa !5
  %1008 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1007, i32 0, i32 32
  %1009 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1008, i32 0, i32 0
  store i32 7, ptr %1009, align 8, !tbaa !9
  br label %1877

1010:                                             ; preds = %126
  %1011 = load ptr, ptr %4, align 8, !tbaa !5
  %1012 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1011, i32 0, i32 29
  store i8 0, ptr %1012, align 8, !tbaa !67
  store i64 0, ptr %6, align 8, !tbaa !40
  br label %1013

1013:                                             ; preds = %1072, %1010
  %1014 = load i64, ptr %6, align 8, !tbaa !40
  %1015 = load i64, ptr %9, align 8, !tbaa !40
  %1016 = load i64, ptr %10, align 8, !tbaa !40
  %1017 = add nsw i64 %1015, %1016
  %1018 = icmp sle i64 %1014, %1017
  br i1 %1018, label %1019, label %1075

1019:                                             ; preds = %1013
  %1020 = load ptr, ptr %4, align 8, !tbaa !5
  %1021 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1020, i32 0, i32 27
  %1022 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1021, i32 0, i32 4
  %1023 = load ptr, ptr %1022, align 8, !tbaa !39
  %1024 = load i64, ptr %6, align 8, !tbaa !40
  %1025 = getelementptr inbounds double, ptr %1023, i64 %1024
  %1026 = load double, ptr %1025, align 8, !tbaa !41
  %1027 = load ptr, ptr %4, align 8, !tbaa !5
  %1028 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1027, i32 0, i32 66
  %1029 = getelementptr inbounds %"struct.alglib_impl::minslpstate", ptr %1028, i32 0, i32 15
  %1030 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1029, i32 0, i32 4
  %1031 = load ptr, ptr %1030, align 8, !tbaa !39
  %1032 = load i64, ptr %6, align 8, !tbaa !40
  %1033 = getelementptr inbounds double, ptr %1031, i64 %1032
  store double %1026, ptr %1033, align 8, !tbaa !41
  store i64 0, ptr %7, align 8, !tbaa !40
  br label %1034

1034:                                             ; preds = %1068, %1019
  %1035 = load i64, ptr %7, align 8, !tbaa !40
  %1036 = load i64, ptr %8, align 8, !tbaa !40
  %1037 = sub nsw i64 %1036, 1
  %1038 = icmp sle i64 %1035, %1037
  br i1 %1038, label %1039, label %1071

1039:                                             ; preds = %1034
  %1040 = load ptr, ptr %4, align 8, !tbaa !5
  %1041 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1040, i32 0, i32 28
  %1042 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1041, i32 0, i32 6
  %1043 = load ptr, ptr %1042, align 8, !tbaa !39
  %1044 = load i64, ptr %6, align 8, !tbaa !40
  %1045 = getelementptr inbounds ptr, ptr %1043, i64 %1044
  %1046 = load ptr, ptr %1045, align 8, !tbaa !5
  %1047 = load i64, ptr %7, align 8, !tbaa !40
  %1048 = getelementptr inbounds double, ptr %1046, i64 %1047
  %1049 = load double, ptr %1048, align 8, !tbaa !41
  %1050 = load ptr, ptr %4, align 8, !tbaa !5
  %1051 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1050, i32 0, i32 14
  %1052 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1051, i32 0, i32 4
  %1053 = load ptr, ptr %1052, align 8, !tbaa !39
  %1054 = load i64, ptr %7, align 8, !tbaa !40
  %1055 = getelementptr inbounds double, ptr %1053, i64 %1054
  %1056 = load double, ptr %1055, align 8, !tbaa !41
  %1057 = fmul double %1049, %1056
  %1058 = load ptr, ptr %4, align 8, !tbaa !5
  %1059 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1058, i32 0, i32 66
  %1060 = getelementptr inbounds %"struct.alglib_impl::minslpstate", ptr %1059, i32 0, i32 16
  %1061 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1060, i32 0, i32 6
  %1062 = load ptr, ptr %1061, align 8, !tbaa !39
  %1063 = load i64, ptr %6, align 8, !tbaa !40
  %1064 = getelementptr inbounds ptr, ptr %1062, i64 %1063
  %1065 = load ptr, ptr %1064, align 8, !tbaa !5
  %1066 = load i64, ptr %7, align 8, !tbaa !40
  %1067 = getelementptr inbounds double, ptr %1065, i64 %1066
  store double %1057, ptr %1067, align 8, !tbaa !41
  br label %1068

1068:                                             ; preds = %1039
  %1069 = load i64, ptr %7, align 8, !tbaa !40
  %1070 = add nsw i64 %1069, 1
  store i64 %1070, ptr %7, align 8, !tbaa !40
  br label %1034, !llvm.loop !79

1071:                                             ; preds = %1034
  br label %1072

1072:                                             ; preds = %1071
  %1073 = load i64, ptr %6, align 8, !tbaa !40
  %1074 = add nsw i64 %1073, 1
  store i64 %1074, ptr %6, align 8, !tbaa !40
  br label %1013, !llvm.loop !80

1075:                                             ; preds = %1013
  br label %1754

1076:                                             ; preds = %990
  %1077 = load ptr, ptr %4, align 8, !tbaa !5
  %1078 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1077, i32 0, i32 29
  store i8 0, ptr %1078, align 8, !tbaa !67
  %1079 = load ptr, ptr %4, align 8, !tbaa !5
  %1080 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1079, i32 0, i32 30
  store i8 1, ptr %1080, align 1, !tbaa !72
  %1081 = load ptr, ptr %4, align 8, !tbaa !5
  %1082 = load ptr, ptr %4, align 8, !tbaa !5
  %1083 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1082, i32 0, i32 66
  %1084 = getelementptr inbounds %"struct.alglib_impl::minslpstate", ptr %1083, i32 0, i32 14
  %1085 = load ptr, ptr %4, align 8, !tbaa !5
  %1086 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1085, i32 0, i32 66
  %1087 = getelementptr inbounds %"struct.alglib_impl::minslpstate", ptr %1086, i32 0, i32 9
  %1088 = load ptr, ptr %4, align 8, !tbaa !5
  %1089 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1088, i32 0, i32 66
  %1090 = getelementptr inbounds %"struct.alglib_impl::minslpstate", ptr %1089, i32 0, i32 10
  %1091 = load ptr, ptr %4, align 8, !tbaa !5
  %1092 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1091, i32 0, i32 40
  %1093 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL14minnlc_unscaleEPNS_11minnlcstateEPNS_9ae_vectorES3_S3_S3_PNS_8ae_stateE(ptr noundef %1081, ptr noundef %1084, ptr noundef %1087, ptr noundef %1090, ptr noundef %1092, ptr noundef %1093)
  store i64 0, ptr %7, align 8, !tbaa !40
  br label %1094

1094:                                             ; preds = %1666, %1076
  %1095 = load i64, ptr %7, align 8, !tbaa !40
  %1096 = load i64, ptr %8, align 8, !tbaa !40
  %1097 = sub nsw i64 %1096, 1
  %1098 = icmp sgt i64 %1095, %1097
  br i1 %1098, label %1099, label %1100

1099:                                             ; preds = %1094
  br label %1669

1100:                                             ; preds = %1094
  %1101 = load ptr, ptr %4, align 8, !tbaa !5
  %1102 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1101, i32 0, i32 40
  %1103 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1102, i32 0, i32 4
  %1104 = load ptr, ptr %1103, align 8, !tbaa !39
  %1105 = load i64, ptr %7, align 8, !tbaa !40
  %1106 = getelementptr inbounds double, ptr %1104, i64 %1105
  %1107 = load double, ptr %1106, align 8, !tbaa !41
  %1108 = load ptr, ptr %4, align 8, !tbaa !5
  %1109 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1108, i32 0, i32 14
  %1110 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1109, i32 0, i32 4
  %1111 = load ptr, ptr %1110, align 8, !tbaa !39
  %1112 = load i64, ptr %7, align 8, !tbaa !40
  %1113 = getelementptr inbounds double, ptr %1111, i64 %1112
  %1114 = load double, ptr %1113, align 8, !tbaa !41
  %1115 = load ptr, ptr %4, align 8, !tbaa !5
  %1116 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1115, i32 0, i32 12
  %1117 = load double, ptr %1116, align 8, !tbaa !64
  %1118 = fneg double %1114
  %1119 = call double @llvm.fmuladd.f64(double %1118, double %1117, double %1107)
  store double %1119, ptr %11, align 8, !tbaa !41
  %1120 = load ptr, ptr %4, align 8, !tbaa !5
  %1121 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1120, i32 0, i32 40
  %1122 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1121, i32 0, i32 4
  %1123 = load ptr, ptr %1122, align 8, !tbaa !39
  %1124 = load i64, ptr %7, align 8, !tbaa !40
  %1125 = getelementptr inbounds double, ptr %1123, i64 %1124
  %1126 = load double, ptr %1125, align 8, !tbaa !41
  %1127 = load ptr, ptr %4, align 8, !tbaa !5
  %1128 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1127, i32 0, i32 14
  %1129 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1128, i32 0, i32 4
  %1130 = load ptr, ptr %1129, align 8, !tbaa !39
  %1131 = load i64, ptr %7, align 8, !tbaa !40
  %1132 = getelementptr inbounds double, ptr %1130, i64 %1131
  %1133 = load double, ptr %1132, align 8, !tbaa !41
  %1134 = load ptr, ptr %4, align 8, !tbaa !5
  %1135 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1134, i32 0, i32 12
  %1136 = load double, ptr %1135, align 8, !tbaa !64
  %1137 = call double @llvm.fmuladd.f64(double %1133, double %1136, double %1126)
  store double %1137, ptr %12, align 8, !tbaa !41
  %1138 = load ptr, ptr %4, align 8, !tbaa !5
  %1139 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1138, i32 0, i32 17
  %1140 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1139, i32 0, i32 4
  %1141 = load ptr, ptr %1140, align 8, !tbaa !39
  %1142 = load i64, ptr %7, align 8, !tbaa !40
  %1143 = getelementptr inbounds i8, ptr %1141, i64 %1142
  %1144 = load i8, ptr %1143, align 1, !tbaa !60, !range !61, !noundef !62
  %1145 = trunc i8 %1144 to i1
  br i1 %1145, label %1146, label %1156

1146:                                             ; preds = %1100
  %1147 = load double, ptr %11, align 8, !tbaa !41
  %1148 = load ptr, ptr %4, align 8, !tbaa !5
  %1149 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1148, i32 0, i32 15
  %1150 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1149, i32 0, i32 4
  %1151 = load ptr, ptr %1150, align 8, !tbaa !39
  %1152 = load i64, ptr %7, align 8, !tbaa !40
  %1153 = getelementptr inbounds double, ptr %1151, i64 %1152
  %1154 = load double, ptr %1153, align 8, !tbaa !41
  %1155 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %1147, double noundef %1154)
  br i1 %1155, label %1176, label %1156

1156:                                             ; preds = %1146, %1100
  %1157 = load ptr, ptr %4, align 8, !tbaa !5
  %1158 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1157, i32 0, i32 18
  %1159 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1158, i32 0, i32 4
  %1160 = load ptr, ptr %1159, align 8, !tbaa !39
  %1161 = load i64, ptr %7, align 8, !tbaa !40
  %1162 = getelementptr inbounds i8, ptr %1160, i64 %1161
  %1163 = load i8, ptr %1162, align 1, !tbaa !60, !range !61, !noundef !62
  %1164 = trunc i8 %1163 to i1
  br i1 %1164, label %1165, label %1175

1165:                                             ; preds = %1156
  %1166 = load double, ptr %12, align 8, !tbaa !41
  %1167 = load ptr, ptr %4, align 8, !tbaa !5
  %1168 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1167, i32 0, i32 16
  %1169 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1168, i32 0, i32 4
  %1170 = load ptr, ptr %1169, align 8, !tbaa !39
  %1171 = load i64, ptr %7, align 8, !tbaa !40
  %1172 = getelementptr inbounds double, ptr %1170, i64 %1171
  %1173 = load double, ptr %1172, align 8, !tbaa !41
  %1174 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1166, double noundef %1173)
  br i1 %1174, label %1176, label %1175

1175:                                             ; preds = %1165, %1156
  br label %1375

1176:                                             ; preds = %1165, %1146
  %1177 = load ptr, ptr %4, align 8, !tbaa !5
  %1178 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1177, i32 0, i32 17
  %1179 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1178, i32 0, i32 4
  %1180 = load ptr, ptr %1179, align 8, !tbaa !39
  %1181 = load i64, ptr %7, align 8, !tbaa !40
  %1182 = getelementptr inbounds i8, ptr %1180, i64 %1181
  %1183 = load i8, ptr %1182, align 1, !tbaa !60, !range !61, !noundef !62
  %1184 = trunc i8 %1183 to i1
  br i1 %1184, label %1185, label %1203

1185:                                             ; preds = %1176
  %1186 = load double, ptr %11, align 8, !tbaa !41
  %1187 = load ptr, ptr %4, align 8, !tbaa !5
  %1188 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1187, i32 0, i32 15
  %1189 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1188, i32 0, i32 4
  %1190 = load ptr, ptr %1189, align 8, !tbaa !39
  %1191 = load i64, ptr %7, align 8, !tbaa !40
  %1192 = getelementptr inbounds double, ptr %1190, i64 %1191
  %1193 = load double, ptr %1192, align 8, !tbaa !41
  %1194 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %1186, double noundef %1193)
  br i1 %1194, label %1195, label %1203

1195:                                             ; preds = %1185
  %1196 = load ptr, ptr %4, align 8, !tbaa !5
  %1197 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1196, i32 0, i32 15
  %1198 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1197, i32 0, i32 4
  %1199 = load ptr, ptr %1198, align 8, !tbaa !39
  %1200 = load i64, ptr %7, align 8, !tbaa !40
  %1201 = getelementptr inbounds double, ptr %1199, i64 %1200
  %1202 = load double, ptr %1201, align 8, !tbaa !41
  store double %1202, ptr %11, align 8, !tbaa !41
  br label %1203

1203:                                             ; preds = %1195, %1185, %1176
  %1204 = load ptr, ptr %4, align 8, !tbaa !5
  %1205 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1204, i32 0, i32 18
  %1206 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1205, i32 0, i32 4
  %1207 = load ptr, ptr %1206, align 8, !tbaa !39
  %1208 = load i64, ptr %7, align 8, !tbaa !40
  %1209 = getelementptr inbounds i8, ptr %1207, i64 %1208
  %1210 = load i8, ptr %1209, align 1, !tbaa !60, !range !61, !noundef !62
  %1211 = trunc i8 %1210 to i1
  br i1 %1211, label %1212, label %1230

1212:                                             ; preds = %1203
  %1213 = load double, ptr %12, align 8, !tbaa !41
  %1214 = load ptr, ptr %4, align 8, !tbaa !5
  %1215 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1214, i32 0, i32 16
  %1216 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1215, i32 0, i32 4
  %1217 = load ptr, ptr %1216, align 8, !tbaa !39
  %1218 = load i64, ptr %7, align 8, !tbaa !40
  %1219 = getelementptr inbounds double, ptr %1217, i64 %1218
  %1220 = load double, ptr %1219, align 8, !tbaa !41
  %1221 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1213, double noundef %1220)
  br i1 %1221, label %1222, label %1230

1222:                                             ; preds = %1212
  %1223 = load ptr, ptr %4, align 8, !tbaa !5
  %1224 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1223, i32 0, i32 16
  %1225 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1224, i32 0, i32 4
  %1226 = load ptr, ptr %1225, align 8, !tbaa !39
  %1227 = load i64, ptr %7, align 8, !tbaa !40
  %1228 = getelementptr inbounds double, ptr %1226, i64 %1227
  %1229 = load double, ptr %1228, align 8, !tbaa !41
  store double %1229, ptr %12, align 8, !tbaa !41
  br label %1230

1230:                                             ; preds = %1222, %1212, %1203
  %1231 = load double, ptr %11, align 8, !tbaa !41
  %1232 = load double, ptr %12, align 8, !tbaa !41
  %1233 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %1231, double noundef %1232)
  %1234 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1233, ptr noundef @.str.446, ptr noundef %1234)
  %1235 = load double, ptr %11, align 8, !tbaa !41
  %1236 = load double, ptr %12, align 8, !tbaa !41
  %1237 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1235, double noundef %1236)
  br i1 %1237, label %1238, label %1259

1238:                                             ; preds = %1230
  store i64 0, ptr %6, align 8, !tbaa !40
  br label %1239

1239:                                             ; preds = %1255, %1238
  %1240 = load i64, ptr %6, align 8, !tbaa !40
  %1241 = load i64, ptr %9, align 8, !tbaa !40
  %1242 = load i64, ptr %10, align 8, !tbaa !40
  %1243 = add nsw i64 %1241, %1242
  %1244 = icmp sle i64 %1240, %1243
  br i1 %1244, label %1245, label %1258

1245:                                             ; preds = %1239
  %1246 = load ptr, ptr %4, align 8, !tbaa !5
  %1247 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1246, i32 0, i32 28
  %1248 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1247, i32 0, i32 6
  %1249 = load ptr, ptr %1248, align 8, !tbaa !39
  %1250 = load i64, ptr %6, align 8, !tbaa !40
  %1251 = getelementptr inbounds ptr, ptr %1249, i64 %1250
  %1252 = load ptr, ptr %1251, align 8, !tbaa !5
  %1253 = load i64, ptr %7, align 8, !tbaa !40
  %1254 = getelementptr inbounds double, ptr %1252, i64 %1253
  store double 0.000000e+00, ptr %1254, align 8, !tbaa !41
  br label %1255

1255:                                             ; preds = %1245
  %1256 = load i64, ptr %6, align 8, !tbaa !40
  %1257 = add nsw i64 %1256, 1
  store i64 %1257, ptr %6, align 8, !tbaa !40
  br label %1239, !llvm.loop !81

1258:                                             ; preds = %1239
  br label %1666

1259:                                             ; preds = %1230
  %1260 = load ptr, ptr %4, align 8, !tbaa !5
  %1261 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1260, i32 0, i32 25
  %1262 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1261, i32 0, i32 4
  %1263 = load ptr, ptr %1262, align 8, !tbaa !39
  %1264 = getelementptr inbounds double, ptr %1263, i64 0
  %1265 = load ptr, ptr %4, align 8, !tbaa !5
  %1266 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1265, i32 0, i32 40
  %1267 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1266, i32 0, i32 4
  %1268 = load ptr, ptr %1267, align 8, !tbaa !39
  %1269 = getelementptr inbounds double, ptr %1268, i64 0
  %1270 = load i64, ptr %8, align 8, !tbaa !40
  %1271 = sub nsw i64 %1270, 1
  %1272 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1271)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1264, i64 noundef 1, ptr noundef %1269, i64 noundef 1, i64 noundef %1272)
  %1273 = load double, ptr %11, align 8, !tbaa !41
  %1274 = load ptr, ptr %4, align 8, !tbaa !5
  %1275 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1274, i32 0, i32 25
  %1276 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1275, i32 0, i32 4
  %1277 = load ptr, ptr %1276, align 8, !tbaa !39
  %1278 = load i64, ptr %7, align 8, !tbaa !40
  %1279 = getelementptr inbounds double, ptr %1277, i64 %1278
  store double %1273, ptr %1279, align 8, !tbaa !41
  %1280 = load ptr, ptr %4, align 8, !tbaa !5
  %1281 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1280, i32 0, i32 32
  %1282 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1281, i32 0, i32 0
  store i32 8, ptr %1282, align 8, !tbaa !9
  br label %1877

1283:                                             ; preds = %133
  %1284 = load ptr, ptr %4, align 8, !tbaa !5
  %1285 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1284, i32 0, i32 44
  %1286 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1285, i32 0, i32 4
  %1287 = load ptr, ptr %1286, align 8, !tbaa !39
  %1288 = getelementptr inbounds double, ptr %1287, i64 0
  %1289 = load ptr, ptr %4, align 8, !tbaa !5
  %1290 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1289, i32 0, i32 27
  %1291 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1290, i32 0, i32 4
  %1292 = load ptr, ptr %1291, align 8, !tbaa !39
  %1293 = getelementptr inbounds double, ptr %1292, i64 0
  %1294 = load i64, ptr %9, align 8, !tbaa !40
  %1295 = load i64, ptr %10, align 8, !tbaa !40
  %1296 = add nsw i64 %1294, %1295
  %1297 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1296)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1288, i64 noundef 1, ptr noundef %1293, i64 noundef 1, i64 noundef %1297)
  %1298 = load ptr, ptr %4, align 8, !tbaa !5
  %1299 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1298, i32 0, i32 25
  %1300 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1299, i32 0, i32 4
  %1301 = load ptr, ptr %1300, align 8, !tbaa !39
  %1302 = getelementptr inbounds double, ptr %1301, i64 0
  %1303 = load ptr, ptr %4, align 8, !tbaa !5
  %1304 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1303, i32 0, i32 40
  %1305 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1304, i32 0, i32 4
  %1306 = load ptr, ptr %1305, align 8, !tbaa !39
  %1307 = getelementptr inbounds double, ptr %1306, i64 0
  %1308 = load i64, ptr %8, align 8, !tbaa !40
  %1309 = sub nsw i64 %1308, 1
  %1310 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1309)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1302, i64 noundef 1, ptr noundef %1307, i64 noundef 1, i64 noundef %1310)
  %1311 = load double, ptr %12, align 8, !tbaa !41
  %1312 = load ptr, ptr %4, align 8, !tbaa !5
  %1313 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1312, i32 0, i32 25
  %1314 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1313, i32 0, i32 4
  %1315 = load ptr, ptr %1314, align 8, !tbaa !39
  %1316 = load i64, ptr %7, align 8, !tbaa !40
  %1317 = getelementptr inbounds double, ptr %1315, i64 %1316
  store double %1311, ptr %1317, align 8, !tbaa !41
  %1318 = load ptr, ptr %4, align 8, !tbaa !5
  %1319 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1318, i32 0, i32 32
  %1320 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1319, i32 0, i32 0
  store i32 9, ptr %1320, align 8, !tbaa !9
  br label %1877

1321:                                             ; preds = %140
  %1322 = load ptr, ptr %4, align 8, !tbaa !5
  %1323 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1322, i32 0, i32 45
  %1324 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1323, i32 0, i32 4
  %1325 = load ptr, ptr %1324, align 8, !tbaa !39
  %1326 = getelementptr inbounds double, ptr %1325, i64 0
  %1327 = load ptr, ptr %4, align 8, !tbaa !5
  %1328 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1327, i32 0, i32 27
  %1329 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1328, i32 0, i32 4
  %1330 = load ptr, ptr %1329, align 8, !tbaa !39
  %1331 = getelementptr inbounds double, ptr %1330, i64 0
  %1332 = load i64, ptr %9, align 8, !tbaa !40
  %1333 = load i64, ptr %10, align 8, !tbaa !40
  %1334 = add nsw i64 %1332, %1333
  %1335 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1334)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1326, i64 noundef 1, ptr noundef %1331, i64 noundef 1, i64 noundef %1335)
  store i64 0, ptr %6, align 8, !tbaa !40
  br label %1336

1336:                                             ; preds = %1371, %1321
  %1337 = load i64, ptr %6, align 8, !tbaa !40
  %1338 = load i64, ptr %9, align 8, !tbaa !40
  %1339 = load i64, ptr %10, align 8, !tbaa !40
  %1340 = add nsw i64 %1338, %1339
  %1341 = icmp sle i64 %1337, %1340
  br i1 %1341, label %1342, label %1374

1342:                                             ; preds = %1336
  %1343 = load ptr, ptr %4, align 8, !tbaa !5
  %1344 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1343, i32 0, i32 45
  %1345 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1344, i32 0, i32 4
  %1346 = load ptr, ptr %1345, align 8, !tbaa !39
  %1347 = load i64, ptr %6, align 8, !tbaa !40
  %1348 = getelementptr inbounds double, ptr %1346, i64 %1347
  %1349 = load double, ptr %1348, align 8, !tbaa !41
  %1350 = load ptr, ptr %4, align 8, !tbaa !5
  %1351 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1350, i32 0, i32 44
  %1352 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1351, i32 0, i32 4
  %1353 = load ptr, ptr %1352, align 8, !tbaa !39
  %1354 = load i64, ptr %6, align 8, !tbaa !40
  %1355 = getelementptr inbounds double, ptr %1353, i64 %1354
  %1356 = load double, ptr %1355, align 8, !tbaa !41
  %1357 = fsub double %1349, %1356
  %1358 = load double, ptr %12, align 8, !tbaa !41
  %1359 = load double, ptr %11, align 8, !tbaa !41
  %1360 = fsub double %1358, %1359
  %1361 = fdiv double %1357, %1360
  %1362 = load ptr, ptr %4, align 8, !tbaa !5
  %1363 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1362, i32 0, i32 28
  %1364 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1363, i32 0, i32 6
  %1365 = load ptr, ptr %1364, align 8, !tbaa !39
  %1366 = load i64, ptr %6, align 8, !tbaa !40
  %1367 = getelementptr inbounds ptr, ptr %1365, i64 %1366
  %1368 = load ptr, ptr %1367, align 8, !tbaa !5
  %1369 = load i64, ptr %7, align 8, !tbaa !40
  %1370 = getelementptr inbounds double, ptr %1368, i64 %1369
  store double %1361, ptr %1370, align 8, !tbaa !41
  br label %1371

1371:                                             ; preds = %1342
  %1372 = load i64, ptr %6, align 8, !tbaa !40
  %1373 = add nsw i64 %1372, 1
  store i64 %1373, ptr %6, align 8, !tbaa !40
  br label %1336, !llvm.loop !82

1374:                                             ; preds = %1336
  br label %1665

1375:                                             ; preds = %1175
  %1376 = load ptr, ptr %4, align 8, !tbaa !5
  %1377 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1376, i32 0, i32 25
  %1378 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1377, i32 0, i32 4
  %1379 = load ptr, ptr %1378, align 8, !tbaa !39
  %1380 = getelementptr inbounds double, ptr %1379, i64 0
  %1381 = load ptr, ptr %4, align 8, !tbaa !5
  %1382 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1381, i32 0, i32 40
  %1383 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1382, i32 0, i32 4
  %1384 = load ptr, ptr %1383, align 8, !tbaa !39
  %1385 = getelementptr inbounds double, ptr %1384, i64 0
  %1386 = load i64, ptr %8, align 8, !tbaa !40
  %1387 = sub nsw i64 %1386, 1
  %1388 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1387)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1380, i64 noundef 1, ptr noundef %1385, i64 noundef 1, i64 noundef %1388)
  %1389 = load ptr, ptr %4, align 8, !tbaa !5
  %1390 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1389, i32 0, i32 25
  %1391 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1390, i32 0, i32 4
  %1392 = load ptr, ptr %1391, align 8, !tbaa !39
  %1393 = load i64, ptr %7, align 8, !tbaa !40
  %1394 = getelementptr inbounds double, ptr %1392, i64 %1393
  %1395 = load double, ptr %1394, align 8, !tbaa !41
  %1396 = load ptr, ptr %4, align 8, !tbaa !5
  %1397 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1396, i32 0, i32 14
  %1398 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1397, i32 0, i32 4
  %1399 = load ptr, ptr %1398, align 8, !tbaa !39
  %1400 = load i64, ptr %7, align 8, !tbaa !40
  %1401 = getelementptr inbounds double, ptr %1399, i64 %1400
  %1402 = load double, ptr %1401, align 8, !tbaa !41
  %1403 = load ptr, ptr %4, align 8, !tbaa !5
  %1404 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1403, i32 0, i32 12
  %1405 = load double, ptr %1404, align 8, !tbaa !64
  %1406 = fneg double %1402
  %1407 = call double @llvm.fmuladd.f64(double %1406, double %1405, double %1395)
  %1408 = load ptr, ptr %4, align 8, !tbaa !5
  %1409 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1408, i32 0, i32 25
  %1410 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1409, i32 0, i32 4
  %1411 = load ptr, ptr %1410, align 8, !tbaa !39
  %1412 = load i64, ptr %7, align 8, !tbaa !40
  %1413 = getelementptr inbounds double, ptr %1411, i64 %1412
  store double %1407, ptr %1413, align 8, !tbaa !41
  %1414 = load ptr, ptr %4, align 8, !tbaa !5
  %1415 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1414, i32 0, i32 32
  %1416 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1415, i32 0, i32 0
  store i32 10, ptr %1416, align 8, !tbaa !9
  br label %1877

1417:                                             ; preds = %147
  %1418 = load ptr, ptr %4, align 8, !tbaa !5
  %1419 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1418, i32 0, i32 43
  %1420 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1419, i32 0, i32 4
  %1421 = load ptr, ptr %1420, align 8, !tbaa !39
  %1422 = getelementptr inbounds double, ptr %1421, i64 0
  %1423 = load ptr, ptr %4, align 8, !tbaa !5
  %1424 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1423, i32 0, i32 27
  %1425 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1424, i32 0, i32 4
  %1426 = load ptr, ptr %1425, align 8, !tbaa !39
  %1427 = getelementptr inbounds double, ptr %1426, i64 0
  %1428 = load i64, ptr %9, align 8, !tbaa !40
  %1429 = load i64, ptr %10, align 8, !tbaa !40
  %1430 = add nsw i64 %1428, %1429
  %1431 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1430)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1422, i64 noundef 1, ptr noundef %1427, i64 noundef 1, i64 noundef %1431)
  %1432 = load ptr, ptr %4, align 8, !tbaa !5
  %1433 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1432, i32 0, i32 25
  %1434 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1433, i32 0, i32 4
  %1435 = load ptr, ptr %1434, align 8, !tbaa !39
  %1436 = getelementptr inbounds double, ptr %1435, i64 0
  %1437 = load ptr, ptr %4, align 8, !tbaa !5
  %1438 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1437, i32 0, i32 40
  %1439 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1438, i32 0, i32 4
  %1440 = load ptr, ptr %1439, align 8, !tbaa !39
  %1441 = getelementptr inbounds double, ptr %1440, i64 0
  %1442 = load i64, ptr %8, align 8, !tbaa !40
  %1443 = sub nsw i64 %1442, 1
  %1444 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1443)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1436, i64 noundef 1, ptr noundef %1441, i64 noundef 1, i64 noundef %1444)
  %1445 = load ptr, ptr %4, align 8, !tbaa !5
  %1446 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1445, i32 0, i32 25
  %1447 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1446, i32 0, i32 4
  %1448 = load ptr, ptr %1447, align 8, !tbaa !39
  %1449 = load i64, ptr %7, align 8, !tbaa !40
  %1450 = getelementptr inbounds double, ptr %1448, i64 %1449
  %1451 = load double, ptr %1450, align 8, !tbaa !41
  %1452 = load ptr, ptr %4, align 8, !tbaa !5
  %1453 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1452, i32 0, i32 14
  %1454 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1453, i32 0, i32 4
  %1455 = load ptr, ptr %1454, align 8, !tbaa !39
  %1456 = load i64, ptr %7, align 8, !tbaa !40
  %1457 = getelementptr inbounds double, ptr %1455, i64 %1456
  %1458 = load double, ptr %1457, align 8, !tbaa !41
  %1459 = fmul double 5.000000e-01, %1458
  %1460 = load ptr, ptr %4, align 8, !tbaa !5
  %1461 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1460, i32 0, i32 12
  %1462 = load double, ptr %1461, align 8, !tbaa !64
  %1463 = fneg double %1459
  %1464 = call double @llvm.fmuladd.f64(double %1463, double %1462, double %1451)
  %1465 = load ptr, ptr %4, align 8, !tbaa !5
  %1466 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1465, i32 0, i32 25
  %1467 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1466, i32 0, i32 4
  %1468 = load ptr, ptr %1467, align 8, !tbaa !39
  %1469 = load i64, ptr %7, align 8, !tbaa !40
  %1470 = getelementptr inbounds double, ptr %1468, i64 %1469
  store double %1464, ptr %1470, align 8, !tbaa !41
  %1471 = load ptr, ptr %4, align 8, !tbaa !5
  %1472 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1471, i32 0, i32 32
  %1473 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1472, i32 0, i32 0
  store i32 11, ptr %1473, align 8, !tbaa !9
  br label %1877

1474:                                             ; preds = %154
  %1475 = load ptr, ptr %4, align 8, !tbaa !5
  %1476 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1475, i32 0, i32 44
  %1477 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1476, i32 0, i32 4
  %1478 = load ptr, ptr %1477, align 8, !tbaa !39
  %1479 = getelementptr inbounds double, ptr %1478, i64 0
  %1480 = load ptr, ptr %4, align 8, !tbaa !5
  %1481 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1480, i32 0, i32 27
  %1482 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1481, i32 0, i32 4
  %1483 = load ptr, ptr %1482, align 8, !tbaa !39
  %1484 = getelementptr inbounds double, ptr %1483, i64 0
  %1485 = load i64, ptr %9, align 8, !tbaa !40
  %1486 = load i64, ptr %10, align 8, !tbaa !40
  %1487 = add nsw i64 %1485, %1486
  %1488 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1487)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1479, i64 noundef 1, ptr noundef %1484, i64 noundef 1, i64 noundef %1488)
  %1489 = load ptr, ptr %4, align 8, !tbaa !5
  %1490 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1489, i32 0, i32 25
  %1491 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1490, i32 0, i32 4
  %1492 = load ptr, ptr %1491, align 8, !tbaa !39
  %1493 = getelementptr inbounds double, ptr %1492, i64 0
  %1494 = load ptr, ptr %4, align 8, !tbaa !5
  %1495 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1494, i32 0, i32 40
  %1496 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1495, i32 0, i32 4
  %1497 = load ptr, ptr %1496, align 8, !tbaa !39
  %1498 = getelementptr inbounds double, ptr %1497, i64 0
  %1499 = load i64, ptr %8, align 8, !tbaa !40
  %1500 = sub nsw i64 %1499, 1
  %1501 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1500)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1493, i64 noundef 1, ptr noundef %1498, i64 noundef 1, i64 noundef %1501)
  %1502 = load ptr, ptr %4, align 8, !tbaa !5
  %1503 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1502, i32 0, i32 25
  %1504 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1503, i32 0, i32 4
  %1505 = load ptr, ptr %1504, align 8, !tbaa !39
  %1506 = load i64, ptr %7, align 8, !tbaa !40
  %1507 = getelementptr inbounds double, ptr %1505, i64 %1506
  %1508 = load double, ptr %1507, align 8, !tbaa !41
  %1509 = load ptr, ptr %4, align 8, !tbaa !5
  %1510 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1509, i32 0, i32 14
  %1511 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1510, i32 0, i32 4
  %1512 = load ptr, ptr %1511, align 8, !tbaa !39
  %1513 = load i64, ptr %7, align 8, !tbaa !40
  %1514 = getelementptr inbounds double, ptr %1512, i64 %1513
  %1515 = load double, ptr %1514, align 8, !tbaa !41
  %1516 = fmul double 5.000000e-01, %1515
  %1517 = load ptr, ptr %4, align 8, !tbaa !5
  %1518 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1517, i32 0, i32 12
  %1519 = load double, ptr %1518, align 8, !tbaa !64
  %1520 = call double @llvm.fmuladd.f64(double %1516, double %1519, double %1508)
  %1521 = load ptr, ptr %4, align 8, !tbaa !5
  %1522 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1521, i32 0, i32 25
  %1523 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1522, i32 0, i32 4
  %1524 = load ptr, ptr %1523, align 8, !tbaa !39
  %1525 = load i64, ptr %7, align 8, !tbaa !40
  %1526 = getelementptr inbounds double, ptr %1524, i64 %1525
  store double %1520, ptr %1526, align 8, !tbaa !41
  %1527 = load ptr, ptr %4, align 8, !tbaa !5
  %1528 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1527, i32 0, i32 32
  %1529 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1528, i32 0, i32 0
  store i32 12, ptr %1529, align 8, !tbaa !9
  br label %1877

1530:                                             ; preds = %161
  %1531 = load ptr, ptr %4, align 8, !tbaa !5
  %1532 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1531, i32 0, i32 45
  %1533 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1532, i32 0, i32 4
  %1534 = load ptr, ptr %1533, align 8, !tbaa !39
  %1535 = getelementptr inbounds double, ptr %1534, i64 0
  %1536 = load ptr, ptr %4, align 8, !tbaa !5
  %1537 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1536, i32 0, i32 27
  %1538 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1537, i32 0, i32 4
  %1539 = load ptr, ptr %1538, align 8, !tbaa !39
  %1540 = getelementptr inbounds double, ptr %1539, i64 0
  %1541 = load i64, ptr %9, align 8, !tbaa !40
  %1542 = load i64, ptr %10, align 8, !tbaa !40
  %1543 = add nsw i64 %1541, %1542
  %1544 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1543)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1535, i64 noundef 1, ptr noundef %1540, i64 noundef 1, i64 noundef %1544)
  %1545 = load ptr, ptr %4, align 8, !tbaa !5
  %1546 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1545, i32 0, i32 25
  %1547 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1546, i32 0, i32 4
  %1548 = load ptr, ptr %1547, align 8, !tbaa !39
  %1549 = getelementptr inbounds double, ptr %1548, i64 0
  %1550 = load ptr, ptr %4, align 8, !tbaa !5
  %1551 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1550, i32 0, i32 40
  %1552 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1551, i32 0, i32 4
  %1553 = load ptr, ptr %1552, align 8, !tbaa !39
  %1554 = getelementptr inbounds double, ptr %1553, i64 0
  %1555 = load i64, ptr %8, align 8, !tbaa !40
  %1556 = sub nsw i64 %1555, 1
  %1557 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1556)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1549, i64 noundef 1, ptr noundef %1554, i64 noundef 1, i64 noundef %1557)
  %1558 = load ptr, ptr %4, align 8, !tbaa !5
  %1559 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1558, i32 0, i32 25
  %1560 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1559, i32 0, i32 4
  %1561 = load ptr, ptr %1560, align 8, !tbaa !39
  %1562 = load i64, ptr %7, align 8, !tbaa !40
  %1563 = getelementptr inbounds double, ptr %1561, i64 %1562
  %1564 = load double, ptr %1563, align 8, !tbaa !41
  %1565 = load ptr, ptr %4, align 8, !tbaa !5
  %1566 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1565, i32 0, i32 14
  %1567 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1566, i32 0, i32 4
  %1568 = load ptr, ptr %1567, align 8, !tbaa !39
  %1569 = load i64, ptr %7, align 8, !tbaa !40
  %1570 = getelementptr inbounds double, ptr %1568, i64 %1569
  %1571 = load double, ptr %1570, align 8, !tbaa !41
  %1572 = load ptr, ptr %4, align 8, !tbaa !5
  %1573 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1572, i32 0, i32 12
  %1574 = load double, ptr %1573, align 8, !tbaa !64
  %1575 = call double @llvm.fmuladd.f64(double %1571, double %1574, double %1564)
  %1576 = load ptr, ptr %4, align 8, !tbaa !5
  %1577 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1576, i32 0, i32 25
  %1578 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1577, i32 0, i32 4
  %1579 = load ptr, ptr %1578, align 8, !tbaa !39
  %1580 = load i64, ptr %7, align 8, !tbaa !40
  %1581 = getelementptr inbounds double, ptr %1579, i64 %1580
  store double %1575, ptr %1581, align 8, !tbaa !41
  %1582 = load ptr, ptr %4, align 8, !tbaa !5
  %1583 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1582, i32 0, i32 32
  %1584 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1583, i32 0, i32 0
  store i32 13, ptr %1584, align 8, !tbaa !9
  br label %1877

1585:                                             ; preds = %168
  %1586 = load ptr, ptr %4, align 8, !tbaa !5
  %1587 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1586, i32 0, i32 46
  %1588 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1587, i32 0, i32 4
  %1589 = load ptr, ptr %1588, align 8, !tbaa !39
  %1590 = getelementptr inbounds double, ptr %1589, i64 0
  %1591 = load ptr, ptr %4, align 8, !tbaa !5
  %1592 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1591, i32 0, i32 27
  %1593 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1592, i32 0, i32 4
  %1594 = load ptr, ptr %1593, align 8, !tbaa !39
  %1595 = getelementptr inbounds double, ptr %1594, i64 0
  %1596 = load i64, ptr %9, align 8, !tbaa !40
  %1597 = load i64, ptr %10, align 8, !tbaa !40
  %1598 = add nsw i64 %1596, %1597
  %1599 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1598)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1590, i64 noundef 1, ptr noundef %1595, i64 noundef 1, i64 noundef %1599)
  store i64 0, ptr %6, align 8, !tbaa !40
  br label %1600

1600:                                             ; preds = %1661, %1585
  %1601 = load i64, ptr %6, align 8, !tbaa !40
  %1602 = load i64, ptr %9, align 8, !tbaa !40
  %1603 = load i64, ptr %10, align 8, !tbaa !40
  %1604 = add nsw i64 %1602, %1603
  %1605 = icmp sle i64 %1601, %1604
  br i1 %1605, label %1606, label %1664

1606:                                             ; preds = %1600
  %1607 = load ptr, ptr %4, align 8, !tbaa !5
  %1608 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1607, i32 0, i32 45
  %1609 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1608, i32 0, i32 4
  %1610 = load ptr, ptr %1609, align 8, !tbaa !39
  %1611 = load i64, ptr %6, align 8, !tbaa !40
  %1612 = getelementptr inbounds double, ptr %1610, i64 %1611
  %1613 = load double, ptr %1612, align 8, !tbaa !41
  %1614 = load ptr, ptr %4, align 8, !tbaa !5
  %1615 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1614, i32 0, i32 44
  %1616 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1615, i32 0, i32 4
  %1617 = load ptr, ptr %1616, align 8, !tbaa !39
  %1618 = load i64, ptr %6, align 8, !tbaa !40
  %1619 = getelementptr inbounds double, ptr %1617, i64 %1618
  %1620 = load double, ptr %1619, align 8, !tbaa !41
  %1621 = fsub double %1613, %1620
  %1622 = load ptr, ptr %4, align 8, !tbaa !5
  %1623 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1622, i32 0, i32 46
  %1624 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1623, i32 0, i32 4
  %1625 = load ptr, ptr %1624, align 8, !tbaa !39
  %1626 = load i64, ptr %6, align 8, !tbaa !40
  %1627 = getelementptr inbounds double, ptr %1625, i64 %1626
  %1628 = load double, ptr %1627, align 8, !tbaa !41
  %1629 = load ptr, ptr %4, align 8, !tbaa !5
  %1630 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1629, i32 0, i32 43
  %1631 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1630, i32 0, i32 4
  %1632 = load ptr, ptr %1631, align 8, !tbaa !39
  %1633 = load i64, ptr %6, align 8, !tbaa !40
  %1634 = getelementptr inbounds double, ptr %1632, i64 %1633
  %1635 = load double, ptr %1634, align 8, !tbaa !41
  %1636 = fsub double %1628, %1635
  %1637 = fneg double %1636
  %1638 = call double @llvm.fmuladd.f64(double 8.000000e+00, double %1621, double %1637)
  %1639 = load ptr, ptr %4, align 8, !tbaa !5
  %1640 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1639, i32 0, i32 12
  %1641 = load double, ptr %1640, align 8, !tbaa !64
  %1642 = fmul double 6.000000e+00, %1641
  %1643 = load ptr, ptr %4, align 8, !tbaa !5
  %1644 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1643, i32 0, i32 14
  %1645 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1644, i32 0, i32 4
  %1646 = load ptr, ptr %1645, align 8, !tbaa !39
  %1647 = load i64, ptr %7, align 8, !tbaa !40
  %1648 = getelementptr inbounds double, ptr %1646, i64 %1647
  %1649 = load double, ptr %1648, align 8, !tbaa !41
  %1650 = fmul double %1642, %1649
  %1651 = fdiv double %1638, %1650
  %1652 = load ptr, ptr %4, align 8, !tbaa !5
  %1653 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1652, i32 0, i32 28
  %1654 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1653, i32 0, i32 6
  %1655 = load ptr, ptr %1654, align 8, !tbaa !39
  %1656 = load i64, ptr %6, align 8, !tbaa !40
  %1657 = getelementptr inbounds ptr, ptr %1655, i64 %1656
  %1658 = load ptr, ptr %1657, align 8, !tbaa !5
  %1659 = load i64, ptr %7, align 8, !tbaa !40
  %1660 = getelementptr inbounds double, ptr %1658, i64 %1659
  store double %1651, ptr %1660, align 8, !tbaa !41
  br label %1661

1661:                                             ; preds = %1606
  %1662 = load i64, ptr %6, align 8, !tbaa !40
  %1663 = add nsw i64 %1662, 1
  store i64 %1663, ptr %6, align 8, !tbaa !40
  br label %1600, !llvm.loop !83

1664:                                             ; preds = %1600
  br label %1665

1665:                                             ; preds = %1664, %1374
  br label %1666

1666:                                             ; preds = %1665, %1258
  %1667 = load i64, ptr %7, align 8, !tbaa !40
  %1668 = add nsw i64 %1667, 1
  store i64 %1668, ptr %7, align 8, !tbaa !40
  br label %1094

1669:                                             ; preds = %1099
  %1670 = load ptr, ptr %4, align 8, !tbaa !5
  %1671 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1670, i32 0, i32 25
  %1672 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1671, i32 0, i32 4
  %1673 = load ptr, ptr %1672, align 8, !tbaa !39
  %1674 = getelementptr inbounds double, ptr %1673, i64 0
  %1675 = load ptr, ptr %4, align 8, !tbaa !5
  %1676 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1675, i32 0, i32 40
  %1677 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1676, i32 0, i32 4
  %1678 = load ptr, ptr %1677, align 8, !tbaa !39
  %1679 = getelementptr inbounds double, ptr %1678, i64 0
  %1680 = load i64, ptr %8, align 8, !tbaa !40
  %1681 = sub nsw i64 %1680, 1
  %1682 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1681)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1674, i64 noundef 1, ptr noundef %1679, i64 noundef 1, i64 noundef %1682)
  %1683 = load ptr, ptr %4, align 8, !tbaa !5
  %1684 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1683, i32 0, i32 32
  %1685 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1684, i32 0, i32 0
  store i32 14, ptr %1685, align 8, !tbaa !9
  br label %1877

1686:                                             ; preds = %175
  %1687 = load ptr, ptr %4, align 8, !tbaa !5
  %1688 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1687, i32 0, i32 30
  store i8 0, ptr %1688, align 1, !tbaa !72
  %1689 = load ptr, ptr %4, align 8, !tbaa !5
  %1690 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1689, i32 0, i32 29
  store i8 1, ptr %1690, align 8, !tbaa !67
  store i64 0, ptr %6, align 8, !tbaa !40
  br label %1691

1691:                                             ; preds = %1750, %1686
  %1692 = load i64, ptr %6, align 8, !tbaa !40
  %1693 = load i64, ptr %9, align 8, !tbaa !40
  %1694 = load i64, ptr %10, align 8, !tbaa !40
  %1695 = add nsw i64 %1693, %1694
  %1696 = icmp sle i64 %1692, %1695
  br i1 %1696, label %1697, label %1753

1697:                                             ; preds = %1691
  %1698 = load ptr, ptr %4, align 8, !tbaa !5
  %1699 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1698, i32 0, i32 27
  %1700 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1699, i32 0, i32 4
  %1701 = load ptr, ptr %1700, align 8, !tbaa !39
  %1702 = load i64, ptr %6, align 8, !tbaa !40
  %1703 = getelementptr inbounds double, ptr %1701, i64 %1702
  %1704 = load double, ptr %1703, align 8, !tbaa !41
  %1705 = load ptr, ptr %4, align 8, !tbaa !5
  %1706 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1705, i32 0, i32 66
  %1707 = getelementptr inbounds %"struct.alglib_impl::minslpstate", ptr %1706, i32 0, i32 15
  %1708 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1707, i32 0, i32 4
  %1709 = load ptr, ptr %1708, align 8, !tbaa !39
  %1710 = load i64, ptr %6, align 8, !tbaa !40
  %1711 = getelementptr inbounds double, ptr %1709, i64 %1710
  store double %1704, ptr %1711, align 8, !tbaa !41
  store i64 0, ptr %7, align 8, !tbaa !40
  br label %1712

1712:                                             ; preds = %1746, %1697
  %1713 = load i64, ptr %7, align 8, !tbaa !40
  %1714 = load i64, ptr %8, align 8, !tbaa !40
  %1715 = sub nsw i64 %1714, 1
  %1716 = icmp sle i64 %1713, %1715
  br i1 %1716, label %1717, label %1749

1717:                                             ; preds = %1712
  %1718 = load ptr, ptr %4, align 8, !tbaa !5
  %1719 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1718, i32 0, i32 28
  %1720 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1719, i32 0, i32 6
  %1721 = load ptr, ptr %1720, align 8, !tbaa !39
  %1722 = load i64, ptr %6, align 8, !tbaa !40
  %1723 = getelementptr inbounds ptr, ptr %1721, i64 %1722
  %1724 = load ptr, ptr %1723, align 8, !tbaa !5
  %1725 = load i64, ptr %7, align 8, !tbaa !40
  %1726 = getelementptr inbounds double, ptr %1724, i64 %1725
  %1727 = load double, ptr %1726, align 8, !tbaa !41
  %1728 = load ptr, ptr %4, align 8, !tbaa !5
  %1729 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1728, i32 0, i32 14
  %1730 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1729, i32 0, i32 4
  %1731 = load ptr, ptr %1730, align 8, !tbaa !39
  %1732 = load i64, ptr %7, align 8, !tbaa !40
  %1733 = getelementptr inbounds double, ptr %1731, i64 %1732
  %1734 = load double, ptr %1733, align 8, !tbaa !41
  %1735 = fmul double %1727, %1734
  %1736 = load ptr, ptr %4, align 8, !tbaa !5
  %1737 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1736, i32 0, i32 66
  %1738 = getelementptr inbounds %"struct.alglib_impl::minslpstate", ptr %1737, i32 0, i32 16
  %1739 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1738, i32 0, i32 6
  %1740 = load ptr, ptr %1739, align 8, !tbaa !39
  %1741 = load i64, ptr %6, align 8, !tbaa !40
  %1742 = getelementptr inbounds ptr, ptr %1740, i64 %1741
  %1743 = load ptr, ptr %1742, align 8, !tbaa !5
  %1744 = load i64, ptr %7, align 8, !tbaa !40
  %1745 = getelementptr inbounds double, ptr %1743, i64 %1744
  store double %1735, ptr %1745, align 8, !tbaa !41
  br label %1746

1746:                                             ; preds = %1717
  %1747 = load i64, ptr %7, align 8, !tbaa !40
  %1748 = add nsw i64 %1747, 1
  store i64 %1748, ptr %7, align 8, !tbaa !40
  br label %1712, !llvm.loop !84

1749:                                             ; preds = %1712
  br label %1750

1750:                                             ; preds = %1749
  %1751 = load i64, ptr %6, align 8, !tbaa !40
  %1752 = add nsw i64 %1751, 1
  store i64 %1752, ptr %6, align 8, !tbaa !40
  br label %1691, !llvm.loop !85

1753:                                             ; preds = %1691
  br label %1754

1754:                                             ; preds = %1753, %1075
  br label %966

1755:                                             ; preds = %984
  %1756 = load ptr, ptr %4, align 8, !tbaa !5
  %1757 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1756, i32 0, i32 66
  %1758 = getelementptr inbounds %"struct.alglib_impl::minslpstate", ptr %1757, i32 0, i32 19
  %1759 = load i8, ptr %1758, align 1, !tbaa !86, !range !61, !noundef !62
  %1760 = trunc i8 %1759 to i1
  br i1 %1760, label %1762, label %1761

1761:                                             ; preds = %1755
  br label %1797

1762:                                             ; preds = %1755
  %1763 = load ptr, ptr %4, align 8, !tbaa !5
  %1764 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1763, i32 0, i32 10
  %1765 = load i8, ptr %1764, align 8, !tbaa !87, !range !61, !noundef !62
  %1766 = trunc i8 %1765 to i1
  br i1 %1766, label %1768, label %1767

1767:                                             ; preds = %1762
  br label %1796

1768:                                             ; preds = %1762
  %1769 = load ptr, ptr %4, align 8, !tbaa !5
  %1770 = load ptr, ptr %4, align 8, !tbaa !5
  %1771 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1770, i32 0, i32 66
  %1772 = getelementptr inbounds %"struct.alglib_impl::minslpstate", ptr %1771, i32 0, i32 14
  %1773 = load ptr, ptr %4, align 8, !tbaa !5
  %1774 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1773, i32 0, i32 66
  %1775 = getelementptr inbounds %"struct.alglib_impl::minslpstate", ptr %1774, i32 0, i32 9
  %1776 = load ptr, ptr %4, align 8, !tbaa !5
  %1777 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1776, i32 0, i32 66
  %1778 = getelementptr inbounds %"struct.alglib_impl::minslpstate", ptr %1777, i32 0, i32 10
  %1779 = load ptr, ptr %4, align 8, !tbaa !5
  %1780 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1779, i32 0, i32 25
  %1781 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL14minnlc_unscaleEPNS_11minnlcstateEPNS_9ae_vectorES3_S3_S3_PNS_8ae_stateE(ptr noundef %1769, ptr noundef %1772, ptr noundef %1775, ptr noundef %1778, ptr noundef %1780, ptr noundef %1781)
  %1782 = load ptr, ptr %4, align 8, !tbaa !5
  %1783 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1782, i32 0, i32 66
  %1784 = getelementptr inbounds %"struct.alglib_impl::minslpstate", ptr %1783, i32 0, i32 17
  %1785 = load double, ptr %1784, align 8, !tbaa !88
  %1786 = load ptr, ptr %4, align 8, !tbaa !5
  %1787 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1786, i32 0, i32 26
  store double %1785, ptr %1787, align 8, !tbaa !89
  %1788 = load ptr, ptr %4, align 8, !tbaa !5
  %1789 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1788, i32 0, i32 31
  store i8 1, ptr %1789, align 2, !tbaa !90
  %1790 = load ptr, ptr %4, align 8, !tbaa !5
  %1791 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1790, i32 0, i32 32
  %1792 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1791, i32 0, i32 0
  store i32 15, ptr %1792, align 8, !tbaa !9
  br label %1877

1793:                                             ; preds = %182
  %1794 = load ptr, ptr %4, align 8, !tbaa !5
  %1795 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1794, i32 0, i32 31
  store i8 0, ptr %1795, align 2, !tbaa !90
  br label %1796

1796:                                             ; preds = %1793, %1767
  br label %966

1797:                                             ; preds = %1761
  %1798 = load ptr, ptr %4, align 8, !tbaa !5
  %1799 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1798, i32 0, i32 66
  %1800 = getelementptr inbounds %"struct.alglib_impl::minslpstate", ptr %1799, i32 0, i32 18
  %1801 = load i8, ptr %1800, align 8, !tbaa !78, !range !61, !noundef !62
  %1802 = trunc i8 %1801 to i1
  %1803 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1802, ptr noundef @.str.447, ptr noundef %1803)
  br label %966

1804:                                             ; preds = %977
  %1805 = load ptr, ptr %4, align 8, !tbaa !5
  %1806 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1805, i32 0, i32 66
  %1807 = getelementptr inbounds %"struct.alglib_impl::minslpstate", ptr %1806, i32 0, i32 64
  %1808 = load i64, ptr %1807, align 8, !tbaa !91
  %1809 = load ptr, ptr %4, align 8, !tbaa !5
  %1810 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1809, i32 0, i32 73
  store i64 %1808, ptr %1810, align 8, !tbaa !43
  %1811 = load ptr, ptr %4, align 8, !tbaa !5
  %1812 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1811, i32 0, i32 66
  %1813 = getelementptr inbounds %"struct.alglib_impl::minslpstate", ptr %1812, i32 0, i32 63
  %1814 = load i64, ptr %1813, align 8, !tbaa !92
  %1815 = load ptr, ptr %4, align 8, !tbaa !5
  %1816 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1815, i32 0, i32 71
  store i64 %1814, ptr %1816, align 8, !tbaa !45
  %1817 = load ptr, ptr %4, align 8, !tbaa !5
  %1818 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1817, i32 0, i32 66
  %1819 = getelementptr inbounds %"struct.alglib_impl::minslpstate", ptr %1818, i32 0, i32 62
  %1820 = load i64, ptr %1819, align 8, !tbaa !93
  %1821 = load ptr, ptr %4, align 8, !tbaa !5
  %1822 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1821, i32 0, i32 70
  store i64 %1820, ptr %1822, align 8, !tbaa !44
  %1823 = load ptr, ptr %4, align 8, !tbaa !5
  %1824 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1823, i32 0, i32 66
  %1825 = getelementptr inbounds %"struct.alglib_impl::minslpstate", ptr %1824, i32 0, i32 65
  %1826 = load double, ptr %1825, align 8, !tbaa !94
  %1827 = load ptr, ptr %4, align 8, !tbaa !5
  %1828 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1827, i32 0, i32 74
  store double %1826, ptr %1828, align 8, !tbaa !48
  %1829 = load ptr, ptr %4, align 8, !tbaa !5
  %1830 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1829, i32 0, i32 66
  %1831 = getelementptr inbounds %"struct.alglib_impl::minslpstate", ptr %1830, i32 0, i32 66
  %1832 = load i64, ptr %1831, align 8, !tbaa !95
  %1833 = load ptr, ptr %4, align 8, !tbaa !5
  %1834 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1833, i32 0, i32 75
  store i64 %1832, ptr %1834, align 8, !tbaa !49
  %1835 = load ptr, ptr %4, align 8, !tbaa !5
  %1836 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1835, i32 0, i32 66
  %1837 = getelementptr inbounds %"struct.alglib_impl::minslpstate", ptr %1836, i32 0, i32 67
  %1838 = load double, ptr %1837, align 8, !tbaa !96
  %1839 = load ptr, ptr %4, align 8, !tbaa !5
  %1840 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1839, i32 0, i32 76
  store double %1838, ptr %1840, align 8, !tbaa !50
  %1841 = load ptr, ptr %4, align 8, !tbaa !5
  %1842 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1841, i32 0, i32 66
  %1843 = getelementptr inbounds %"struct.alglib_impl::minslpstate", ptr %1842, i32 0, i32 68
  %1844 = load i64, ptr %1843, align 8, !tbaa !97
  %1845 = load ptr, ptr %4, align 8, !tbaa !5
  %1846 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1845, i32 0, i32 77
  store i64 %1844, ptr %1846, align 8, !tbaa !51
  %1847 = load ptr, ptr %4, align 8, !tbaa !5
  %1848 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1847, i32 0, i32 66
  %1849 = getelementptr inbounds %"struct.alglib_impl::minslpstate", ptr %1848, i32 0, i32 69
  %1850 = load double, ptr %1849, align 8, !tbaa !98
  %1851 = load ptr, ptr %4, align 8, !tbaa !5
  %1852 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1851, i32 0, i32 78
  store double %1850, ptr %1852, align 8, !tbaa !52
  %1853 = load ptr, ptr %4, align 8, !tbaa !5
  %1854 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1853, i32 0, i32 66
  %1855 = getelementptr inbounds %"struct.alglib_impl::minslpstate", ptr %1854, i32 0, i32 70
  %1856 = load i64, ptr %1855, align 8, !tbaa !99
  %1857 = load ptr, ptr %4, align 8, !tbaa !5
  %1858 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1857, i32 0, i32 79
  store i64 %1856, ptr %1858, align 8, !tbaa !53
  %1859 = load ptr, ptr %4, align 8, !tbaa !5
  %1860 = load ptr, ptr %4, align 8, !tbaa !5
  %1861 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1860, i32 0, i32 66
  %1862 = getelementptr inbounds %"struct.alglib_impl::minslpstate", ptr %1861, i32 0, i32 31
  %1863 = load ptr, ptr %4, align 8, !tbaa !5
  %1864 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1863, i32 0, i32 66
  %1865 = getelementptr inbounds %"struct.alglib_impl::minslpstate", ptr %1864, i32 0, i32 9
  %1866 = load ptr, ptr %4, align 8, !tbaa !5
  %1867 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1866, i32 0, i32 66
  %1868 = getelementptr inbounds %"struct.alglib_impl::minslpstate", ptr %1867, i32 0, i32 10
  %1869 = load ptr, ptr %4, align 8, !tbaa !5
  %1870 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1869, i32 0, i32 38
  %1871 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL14minnlc_unscaleEPNS_11minnlcstateEPNS_9ae_vectorES3_S3_S3_PNS_8ae_stateE(ptr noundef %1859, ptr noundef %1862, ptr noundef %1865, ptr noundef %1868, ptr noundef %1870, ptr noundef %1871)
  store i8 0, ptr %13, align 1, !tbaa !60
  %1872 = load i8, ptr %13, align 1, !tbaa !60, !range !61, !noundef !62
  %1873 = trunc i8 %1872 to i1
  store i1 %1873, ptr %3, align 1
  store i32 1, ptr %14, align 4
  br label %1929

1874:                                             ; preds = %885
  store i8 0, ptr %13, align 1, !tbaa !60
  %1875 = load i8, ptr %13, align 1, !tbaa !60, !range !61, !noundef !62
  %1876 = trunc i8 %1875 to i1
  store i1 %1876, ptr %3, align 1
  store i32 1, ptr %14, align 4
  br label %1929

1877:                                             ; preds = %1768, %1669, %1530, %1474, %1417, %1375, %1283, %1259, %991, %872, %850, %713, %657, %600, %558, %388
  store i8 1, ptr %13, align 1, !tbaa !60
  %1878 = load i64, ptr %6, align 8, !tbaa !40
  %1879 = load ptr, ptr %4, align 8, !tbaa !5
  %1880 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1879, i32 0, i32 32
  %1881 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1880, i32 0, i32 1
  %1882 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1881, i32 0, i32 4
  %1883 = load ptr, ptr %1882, align 8, !tbaa !39
  %1884 = getelementptr inbounds i64, ptr %1883, i64 0
  store i64 %1878, ptr %1884, align 8, !tbaa !40
  %1885 = load i64, ptr %7, align 8, !tbaa !40
  %1886 = load ptr, ptr %4, align 8, !tbaa !5
  %1887 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1886, i32 0, i32 32
  %1888 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1887, i32 0, i32 1
  %1889 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1888, i32 0, i32 4
  %1890 = load ptr, ptr %1889, align 8, !tbaa !39
  %1891 = getelementptr inbounds i64, ptr %1890, i64 1
  store i64 %1885, ptr %1891, align 8, !tbaa !40
  %1892 = load i64, ptr %8, align 8, !tbaa !40
  %1893 = load ptr, ptr %4, align 8, !tbaa !5
  %1894 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1893, i32 0, i32 32
  %1895 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1894, i32 0, i32 1
  %1896 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1895, i32 0, i32 4
  %1897 = load ptr, ptr %1896, align 8, !tbaa !39
  %1898 = getelementptr inbounds i64, ptr %1897, i64 2
  store i64 %1892, ptr %1898, align 8, !tbaa !40
  %1899 = load i64, ptr %9, align 8, !tbaa !40
  %1900 = load ptr, ptr %4, align 8, !tbaa !5
  %1901 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1900, i32 0, i32 32
  %1902 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1901, i32 0, i32 1
  %1903 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1902, i32 0, i32 4
  %1904 = load ptr, ptr %1903, align 8, !tbaa !39
  %1905 = getelementptr inbounds i64, ptr %1904, i64 3
  store i64 %1899, ptr %1905, align 8, !tbaa !40
  %1906 = load i64, ptr %10, align 8, !tbaa !40
  %1907 = load ptr, ptr %4, align 8, !tbaa !5
  %1908 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1907, i32 0, i32 32
  %1909 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1908, i32 0, i32 1
  %1910 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1909, i32 0, i32 4
  %1911 = load ptr, ptr %1910, align 8, !tbaa !39
  %1912 = getelementptr inbounds i64, ptr %1911, i64 4
  store i64 %1906, ptr %1912, align 8, !tbaa !40
  %1913 = load double, ptr %11, align 8, !tbaa !41
  %1914 = load ptr, ptr %4, align 8, !tbaa !5
  %1915 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1914, i32 0, i32 32
  %1916 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1915, i32 0, i32 3
  %1917 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1916, i32 0, i32 4
  %1918 = load ptr, ptr %1917, align 8, !tbaa !39
  %1919 = getelementptr inbounds double, ptr %1918, i64 0
  store double %1913, ptr %1919, align 8, !tbaa !41
  %1920 = load double, ptr %12, align 8, !tbaa !41
  %1921 = load ptr, ptr %4, align 8, !tbaa !5
  %1922 = getelementptr inbounds %"struct.alglib_impl::minnlcstate", ptr %1921, i32 0, i32 32
  %1923 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1922, i32 0, i32 3
  %1924 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1923, i32 0, i32 4
  %1925 = load ptr, ptr %1924, align 8, !tbaa !39
  %1926 = getelementptr inbounds double, ptr %1925, i64 1
  store double %1920, ptr %1926, align 8, !tbaa !41
  %1927 = load i8, ptr %13, align 1, !tbaa !60, !range !61, !noundef !62
  %1928 = trunc i8 %1927 to i1
  store i1 %1928, ptr %3, align 1
  store i32 1, ptr %14, align 4
  br label %1929

1929:                                             ; preds = %1877, %1874, %1804, %877, %305
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #5
  %1930 = load i1, ptr %3, align 1
  ret i1 %1930
}

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl21smoothnessmonitorinitEPNS_17smoothnessmonitorEllbPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, i1 noundef zeroext, ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN11alglib_impl34smoothnessmonitorcheckgradientatx0EPNS_17smoothnessmonitorEPNS_9ae_vectorES3_S3_S3_bdPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i1 noundef zeroext, double noundef, ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl13minslpinitbufEPNS_9ae_vectorES1_S1_S1_lPNS_9ae_matrixES1_lllldlPNS_11minslpstateEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef, i64 noundef, i64 noundef, i64 noundef, i64 noundef, double noundef, i64 noundef, ptr noundef, ptr noundef) #2

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN11alglib_implL19minnlc_auliterationEPNS_11minnlcstateEPNS_17smoothnessmonitorEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !18, i64 832}
!10 = !{!"_ZTSN11alglib_impl11minnlcstateE", !11, i64 0, !11, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !11, i64 40, !12, i64 48, !11, i64 56, !12, i64 64, !12, i64 72, !13, i64 80, !11, i64 88, !11, i64 96, !11, i64 104, !14, i64 112, !14, i64 176, !14, i64 240, !14, i64 304, !14, i64 368, !12, i64 432, !12, i64 440, !16, i64 448, !14, i64 528, !12, i64 592, !12, i64 600, !14, i64 608, !11, i64 672, !14, i64 680, !16, i64 744, !13, i64 824, !13, i64 825, !13, i64 826, !17, i64 832, !17, i64 1096, !17, i64 1360, !14, i64 1624, !14, i64 1688, !16, i64 1752, !14, i64 1832, !14, i64 1896, !14, i64 1960, !14, i64 2024, !14, i64 2088, !14, i64 2152, !14, i64 2216, !14, i64 2280, !14, i64 2344, !14, i64 2408, !14, i64 2472, !14, i64 2536, !14, i64 2600, !14, i64 2664, !16, i64 2728, !16, i64 2808, !14, i64 2888, !14, i64 2952, !14, i64 3016, !14, i64 3080, !11, i64 3144, !13, i64 3152, !19, i64 3160, !27, i64 10032, !14, i64 10056, !14, i64 10120, !14, i64 10184, !13, i64 10248, !28, i64 10256, !12, i64 33080, !23, i64 33088, !14, i64 37056, !12, i64 37120, !12, i64 37128, !12, i64 37136, !12, i64 37144, !11, i64 37152, !12, i64 37160, !11, i64 37168, !12, i64 37176, !11, i64 37184, !12, i64 37192, !12, i64 37200}
!11 = !{!"double", !7, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!"bool", !7, i64 0}
!14 = !{!"_ZTSN11alglib_impl9ae_vectorE", !12, i64 0, !12, i64 8, !13, i64 16, !15, i64 24, !7, i64 56}
!15 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!16 = !{!"_ZTSN11alglib_impl9ae_matrixE", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !13, i64 32, !15, i64 40, !7, i64 72}
!17 = !{!"_ZTSN11alglib_impl10rcommstateE", !18, i64 0, !14, i64 8, !14, i64 72, !14, i64 136, !14, i64 200}
!18 = !{!"int", !7, i64 0}
!19 = !{!"_ZTSN11alglib_impl13minlbfgsstateE", !12, i64 0, !12, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !12, i64 40, !13, i64 48, !11, i64 56, !14, i64 64, !11, i64 128, !12, i64 136, !12, i64 144, !12, i64 152, !12, i64 160, !12, i64 168, !14, i64 176, !16, i64 240, !16, i64 320, !14, i64 400, !14, i64 464, !14, i64 528, !11, i64 592, !14, i64 600, !11, i64 664, !11, i64 672, !14, i64 680, !12, i64 744, !11, i64 752, !16, i64 760, !14, i64 840, !14, i64 904, !14, i64 968, !16, i64 1032, !12, i64 1112, !20, i64 1120, !21, i64 1584, !11, i64 2032, !11, i64 2040, !11, i64 2048, !11, i64 2056, !11, i64 2064, !14, i64 2072, !14, i64 2136, !14, i64 2200, !11, i64 2264, !14, i64 2272, !13, i64 2336, !13, i64 2337, !13, i64 2338, !13, i64 2339, !11, i64 2344, !17, i64 2352, !12, i64 2616, !12, i64 2624, !12, i64 2632, !22, i64 2640, !12, i64 2832, !23, i64 2840, !14, i64 6808}
!20 = !{!"_ZTSN11alglib_impl12precbuflbfgsE", !14, i64 0, !14, i64 64, !14, i64 128, !16, i64 192, !14, i64 272, !14, i64 336, !14, i64 400}
!21 = !{!"_ZTSN11alglib_impl14precbuflowrankE", !12, i64 0, !12, i64 8, !14, i64 16, !16, i64 80, !14, i64 160, !16, i64 224, !16, i64 304, !14, i64 384}
!22 = !{!"_ZTSN11alglib_impl11linminstateE", !13, i64 0, !13, i64 1, !12, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !11, i64 56, !11, i64 64, !11, i64 72, !11, i64 80, !11, i64 88, !11, i64 96, !11, i64 104, !11, i64 112, !11, i64 120, !11, i64 128, !11, i64 136, !11, i64 144, !11, i64 152, !11, i64 160, !11, i64 168, !11, i64 176, !11, i64 184}
!23 = !{!"_ZTSN11alglib_impl17smoothnessmonitorE", !12, i64 0, !12, i64 8, !13, i64 16, !14, i64 24, !12, i64 88, !14, i64 96, !14, i64 160, !14, i64 224, !16, i64 288, !14, i64 368, !14, i64 432, !12, i64 496, !13, i64 504, !13, i64 505, !11, i64 512, !11, i64 520, !13, i64 528, !24, i64 536, !11, i64 832, !11, i64 840, !25, i64 848, !25, i64 1152, !11, i64 1456, !11, i64 1464, !26, i64 1472, !26, i64 1784, !13, i64 2096, !14, i64 2104, !14, i64 2168, !16, i64 2232, !17, i64 2312, !14, i64 2576, !14, i64 2640, !14, i64 2704, !14, i64 2768, !14, i64 2832, !14, i64 2896, !14, i64 2960, !14, i64 3024, !16, i64 3088, !16, i64 3168, !14, i64 3248, !14, i64 3312, !14, i64 3376, !14, i64 3440, !14, i64 3504, !14, i64 3568, !14, i64 3632, !14, i64 3696, !14, i64 3760, !14, i64 3824, !16, i64 3888}
!24 = !{!"_ZTSN11alglib_impl14optguardreportE", !13, i64 0, !13, i64 1, !12, i64 8, !11, i64 16, !13, i64 24, !13, i64 25, !13, i64 26, !12, i64 32, !11, i64 40, !13, i64 48, !12, i64 56, !12, i64 64, !14, i64 72, !16, i64 136, !16, i64 216}
!25 = !{!"_ZTSN11alglib_impl24optguardnonc1test0reportE", !13, i64 0, !12, i64 8, !14, i64 16, !14, i64 80, !12, i64 144, !14, i64 152, !14, i64 216, !12, i64 280, !12, i64 288, !12, i64 296}
!26 = !{!"_ZTSN11alglib_impl24optguardnonc1test1reportE", !13, i64 0, !12, i64 8, !12, i64 16, !14, i64 24, !14, i64 88, !12, i64 152, !14, i64 160, !14, i64 224, !12, i64 288, !12, i64 296, !12, i64 304}
!27 = !{!"_ZTSN11alglib_impl14minlbfgsreportE", !12, i64 0, !12, i64 8, !12, i64 16}
!28 = !{!"_ZTSN11alglib_impl11minslpstateE", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !16, i64 40, !14, i64 120, !14, i64 184, !14, i64 248, !14, i64 312, !14, i64 376, !11, i64 440, !12, i64 448, !12, i64 456, !14, i64 464, !14, i64 528, !16, i64 592, !11, i64 672, !13, i64 680, !13, i64 681, !11, i64 688, !11, i64 696, !29, i64 704, !14, i64 20000, !14, i64 20064, !14, i64 20128, !22, i64 20192, !12, i64 20384, !12, i64 20392, !14, i64 20400, !14, i64 20464, !14, i64 20528, !14, i64 20592, !14, i64 20656, !14, i64 20720, !14, i64 20784, !14, i64 20848, !14, i64 20912, !16, i64 20976, !16, i64 21056, !16, i64 21136, !16, i64 21216, !11, i64 21296, !11, i64 21304, !11, i64 21312, !14, i64 21320, !14, i64 21384, !14, i64 21448, !14, i64 21512, !14, i64 21576, !14, i64 21640, !14, i64 21704, !14, i64 21768, !11, i64 21832, !12, i64 21840, !11, i64 21848, !12, i64 21856, !14, i64 21864, !12, i64 21928, !12, i64 21936, !12, i64 21944, !12, i64 21952, !12, i64 21960, !12, i64 21968, !12, i64 21976, !11, i64 21984, !12, i64 21992, !11, i64 22000, !12, i64 22008, !11, i64 22016, !12, i64 22024, !17, i64 22032, !17, i64 22296, !17, i64 22560}
!29 = !{!"_ZTSN11alglib_impl15minslpsubsolverE", !30, i64 0, !38, i64 10944, !32, i64 11000, !13, i64 17272, !16, i64 17280, !12, i64 17360, !14, i64 17368, !14, i64 17432, !14, i64 17496, !14, i64 17560, !14, i64 17624, !31, i64 17688, !31, i64 18056, !12, i64 18424, !16, i64 18432, !16, i64 18512, !16, i64 18592, !31, i64 18672, !14, i64 19040, !14, i64 19104, !14, i64 19168, !14, i64 19232}
!30 = !{!"_ZTSN11alglib_impl16dualsimplexstateE", !14, i64 0, !14, i64 64, !14, i64 128, !14, i64 192, !12, i64 256, !12, i64 264, !31, i64 272, !31, i64 640, !32, i64 1008, !37, i64 7280, !37, i64 8072, !37, i64 8864, !14, i64 9656, !14, i64 9720, !14, i64 9784, !14, i64 9848, !11, i64 9912, !11, i64 9920, !11, i64 9928, !12, i64 9936, !12, i64 9944, !12, i64 9952, !12, i64 9960, !12, i64 9968, !14, i64 9976, !12, i64 10040, !14, i64 10048, !14, i64 10112, !14, i64 10176, !14, i64 10240, !14, i64 10304, !14, i64 10368, !14, i64 10432, !14, i64 10496, !14, i64 10560, !14, i64 10624, !14, i64 10688, !14, i64 10752, !14, i64 10816, !14, i64 10880}
!31 = !{!"_ZTSN11alglib_impl12sparsematrixE", !14, i64 0, !14, i64 64, !14, i64 128, !14, i64 192, !14, i64 256, !12, i64 320, !12, i64 328, !12, i64 336, !12, i64 344, !12, i64 352, !12, i64 360}
!32 = !{!"_ZTSN11alglib_impl16dualsimplexbasisE", !12, i64 0, !12, i64 8, !14, i64 16, !14, i64 80, !14, i64 144, !12, i64 208, !13, i64 216, !12, i64 224, !16, i64 232, !31, i64 312, !31, i64 680, !31, i64 1048, !14, i64 1416, !14, i64 1480, !14, i64 1544, !14, i64 1608, !14, i64 1672, !14, i64 1736, !14, i64 1800, !13, i64 1864, !11, i64 1872, !14, i64 1880, !14, i64 1944, !14, i64 2008, !14, i64 2072, !14, i64 2136, !16, i64 2200, !14, i64 2280, !14, i64 2344, !31, i64 2408, !31, i64 2776, !33, i64 3144, !14, i64 5712, !14, i64 5776, !14, i64 5840, !31, i64 5904}
!33 = !{!"_ZTSN11alglib_impl11sluv2bufferE", !12, i64 0, !31, i64 8, !31, i64 376, !34, i64 744, !34, i64 968, !35, i64 1192, !36, i64 1816, !14, i64 1976, !16, i64 2040, !14, i64 2120, !14, i64 2184, !14, i64 2248, !14, i64 2312, !14, i64 2376, !14, i64 2440, !14, i64 2504}
!34 = !{!"_ZTSN11alglib_impl16sluv2list1matrixE", !12, i64 0, !12, i64 8, !14, i64 16, !14, i64 80, !14, i64 144, !12, i64 208, !12, i64 216}
!35 = !{!"_ZTSN11alglib_impl16sluv2sparsetrailE", !12, i64 0, !12, i64 8, !14, i64 16, !12, i64 80, !12, i64 88, !12, i64 96, !14, i64 104, !14, i64 168, !14, i64 232, !14, i64 296, !14, i64 360, !14, i64 424, !14, i64 488, !12, i64 552, !14, i64 560}
!36 = !{!"_ZTSN11alglib_impl15sluv2densetrailE", !12, i64 0, !12, i64 8, !16, i64 16, !14, i64 96}
!37 = !{!"_ZTSN11alglib_impl21dualsimplexsubproblemE", !12, i64 0, !12, i64 8, !14, i64 16, !14, i64 80, !14, i64 144, !14, i64 208, !14, i64 272, !14, i64 336, !12, i64 400, !14, i64 408, !14, i64 472, !14, i64 536, !14, i64 600, !14, i64 664, !14, i64 728}
!38 = !{!"_ZTSN11alglib_impl19dualsimplexsettingsE", !11, i64 0, !11, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !12, i64 40, !12, i64 48}
!39 = !{!7, !7, i64 0}
!40 = !{!12, !12, i64 0}
!41 = !{!11, !11, i64 0}
!42 = !{!10, !13, i64 10248}
!43 = !{!10, !12, i64 37144}
!44 = !{!10, !12, i64 37120}
!45 = !{!10, !12, i64 37128}
!46 = !{!10, !12, i64 37136}
!47 = !{!10, !12, i64 37200}
!48 = !{!10, !11, i64 37152}
!49 = !{!10, !12, i64 37160}
!50 = !{!10, !11, i64 37168}
!51 = !{!10, !12, i64 37176}
!52 = !{!10, !11, i64 37184}
!53 = !{!10, !12, i64 37192}
!54 = !{!10, !12, i64 48}
!55 = !{!10, !12, i64 592}
!56 = !{!10, !12, i64 600}
!57 = !{!10, !12, i64 33080}
!58 = distinct !{!58, !59}
!59 = !{!"llvm.loop.mustprogress"}
!60 = !{!13, !13, i64 0}
!61 = !{i8 0, i8 2}
!62 = !{}
!63 = distinct !{!63, !59}
!64 = !{!10, !11, i64 96}
!65 = !{!10, !11, i64 104}
!66 = distinct !{!66, !59}
!67 = !{!10, !13, i64 824}
!68 = distinct !{!68, !59}
!69 = distinct !{!69, !59}
!70 = !{!10, !12, i64 16}
!71 = !{!10, !18, i64 1096}
!72 = !{!10, !13, i64 825}
!73 = distinct !{!73, !59}
!74 = !{!10, !12, i64 432}
!75 = !{!10, !12, i64 440}
!76 = !{!10, !11, i64 56}
!77 = !{!10, !12, i64 64}
!78 = !{!10, !13, i64 10936}
!79 = distinct !{!79, !59}
!80 = distinct !{!80, !59}
!81 = distinct !{!81, !59}
!82 = distinct !{!82, !59}
!83 = distinct !{!83, !59}
!84 = distinct !{!84, !59}
!85 = distinct !{!85, !59}
!86 = !{!10, !13, i64 10937}
!87 = !{!10, !13, i64 80}
!88 = !{!10, !11, i64 10928}
!89 = !{!10, !11, i64 672}
!90 = !{!10, !13, i64 826}
!91 = !{!10, !12, i64 32232}
!92 = !{!10, !12, i64 32224}
!93 = !{!10, !12, i64 32216}
!94 = !{!10, !11, i64 32240}
!95 = !{!10, !12, i64 32248}
!96 = !{!10, !11, i64 32256}
!97 = !{!10, !12, i64 32264}
!98 = !{!10, !11, i64 32272}
!99 = !{!10, !12, i64 32280}


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

@.str.445 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.446 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.447 = external hidden unnamed_addr constant [16 x i8], align 1

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN11alglib_impl15minnlciterationEPNS_11minnlcstateEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1) local_unnamed_addr #1 {
  %3 = getelementptr inbounds i8, ptr %0, i64 832
  %4 = load i32, ptr %3, align 8, !tbaa !5
  %5 = icmp sgt i32 %4, -1
  br i1 %5, label %6, label %23

6:                                                ; preds = %2
  %7 = getelementptr inbounds i8, ptr %0, i64 896
  %8 = load ptr, ptr %7, align 8, !tbaa !38
  %9 = load i64, ptr %8, align 8, !tbaa !39
  %10 = getelementptr inbounds i8, ptr %8, i64 8
  %11 = load i64, ptr %10, align 8, !tbaa !39
  %12 = getelementptr inbounds i8, ptr %8, i64 16
  %13 = load i64, ptr %12, align 8, !tbaa !39
  %14 = getelementptr inbounds i8, ptr %8, i64 24
  %15 = load i64, ptr %14, align 8, !tbaa !39
  %16 = getelementptr inbounds i8, ptr %8, i64 32
  %17 = load i64, ptr %16, align 8, !tbaa !39
  %18 = getelementptr inbounds i8, ptr %0, i64 1024
  %19 = load ptr, ptr %18, align 8, !tbaa !38
  %20 = load double, ptr %19, align 8, !tbaa !40
  %21 = getelementptr inbounds i8, ptr %19, i64 8
  %22 = load double, ptr %21, align 8, !tbaa !40
  br label %23

23:                                               ; preds = %2, %6
  %.0607 = phi i64 [ %9, %6 ], [ 359, %2 ]
  %.0597 = phi i64 [ %11, %6 ], [ -58, %2 ]
  %.0587 = phi i64 [ %13, %6 ], [ -919, %2 ]
  %.0577 = phi i64 [ %15, %6 ], [ -909, %2 ]
  %.0572 = phi i64 [ %17, %6 ], [ 81, %2 ]
  %.0567 = phi double [ %20, %6 ], [ 2.550000e+02, %2 ]
  %.0 = phi double [ %22, %6 ], [ 7.400000e+01, %2 ]
  switch i32 %4, label %24 [
    i32 0, label %164
    i32 1, label %266
    i32 2, label %290
    i32 3, label %314
    i32 4, label %337
    i32 5, label %381
    i32 6, label %229
    i32 7, label %444
    i32 8, label %616
    i32 9, label %631
    i32 10, label %686
    i32 11, label %710
    i32 12, label %734
    i32 13, label %757
    i32 14, label %825
    i32 15, label %925
  ]

24:                                               ; preds = %23
  %25 = getelementptr inbounds i8, ptr %0, i64 10248
  store i8 0, ptr %25, align 8, !tbaa !41
  %26 = getelementptr inbounds i8, ptr %0, i64 37144
  %27 = getelementptr inbounds i8, ptr %0, i64 37120
  %28 = getelementptr inbounds i8, ptr %0, i64 37200
  store i64 0, ptr %28, align 8, !tbaa !42
  %29 = getelementptr inbounds i8, ptr %0, i64 37152
  %30 = getelementptr inbounds i8, ptr %0, i64 37160
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %27, i8 0, i64 40, i1 false)
  store i64 -1, ptr %30, align 8, !tbaa !43
  %31 = getelementptr inbounds i8, ptr %0, i64 37168
  store double 0.000000e+00, ptr %31, align 8, !tbaa !44
  %32 = getelementptr inbounds i8, ptr %0, i64 37176
  store i64 -1, ptr %32, align 8, !tbaa !45
  %33 = getelementptr inbounds i8, ptr %0, i64 37184
  store double 0.000000e+00, ptr %33, align 8, !tbaa !46
  %34 = getelementptr inbounds i8, ptr %0, i64 37192
  store i64 -1, ptr %34, align 8, !tbaa !47
  %35 = getelementptr inbounds i8, ptr %0, i64 48
  %36 = load i64, ptr %35, align 8, !tbaa !48
  %37 = getelementptr inbounds i8, ptr %0, i64 592
  %38 = load i64, ptr %37, align 8, !tbaa !49
  %39 = getelementptr inbounds i8, ptr %0, i64 600
  %40 = load i64, ptr %39, align 8, !tbaa !50
  tail call void @_ZN11alglib_implL25minnlc_clearrequestfieldsEPNS_11minnlcstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %41 = getelementptr inbounds i8, ptr %0, i64 33080
  %42 = load i64, ptr %41, align 8, !tbaa !51
  %spec.select = icmp ult i64 %42, 2
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %spec.select, ptr noundef nonnull @.str.445, ptr noundef %1)
  %43 = getelementptr inbounds i8, ptr %0, i64 33088
  %44 = add nsw i64 %38, 1
  %45 = add nsw i64 %44, %40
  %46 = load i64, ptr %41, align 8, !tbaa !51
  %47 = icmp sgt i64 %46, 0
  tail call void @_ZN11alglib_impl21smoothnessmonitorinitEPNS_17smoothnessmonitorEllbPNS_8ae_stateE(ptr noundef nonnull %43, i64 noundef %36, i64 noundef %45, i1 noundef zeroext %47, ptr noundef %1)
  %.not.not701 = icmp sgt i64 %36, 0
  br i1 %.not.not701, label %.lr.ph704, label %._crit_edge708

.lr.ph704:                                        ; preds = %24
  %48 = getelementptr inbounds i8, ptr %0, i64 168
  %49 = getelementptr inbounds i8, ptr %0, i64 37112
  %xtraiter790 = and i64 %36, 3
  %50 = icmp ult i64 %36, 4
  br i1 %50, label %.preheader650.unr-lcssa, label %.lr.ph704.new

.lr.ph704.new:                                    ; preds = %.lr.ph704
  %unroll_iter793 = and i64 %36, 9223372036854775804
  br label %61

.preheader650.unr-lcssa:                          ; preds = %61, %.lr.ph704
  %.1608702.unr = phi i64 [ 0, %.lr.ph704 ], [ %85, %61 ]
  %lcmp.mod792.not = icmp eq i64 %xtraiter790, 0
  br i1 %lcmp.mod792.not, label %.preheader650, label %.epil.preheader789

.epil.preheader789:                               ; preds = %.preheader650.unr-lcssa, %.epil.preheader789
  %.1608702.epil = phi i64 [ %56, %.epil.preheader789 ], [ %.1608702.unr, %.preheader650.unr-lcssa ]
  %epil.iter791 = phi i64 [ %epil.iter791.next, %.epil.preheader789 ], [ 0, %.preheader650.unr-lcssa ]
  %51 = load ptr, ptr %48, align 8, !tbaa !38
  %52 = getelementptr inbounds double, ptr %51, i64 %.1608702.epil
  %53 = load double, ptr %52, align 8, !tbaa !40
  %54 = load ptr, ptr %49, align 8, !tbaa !38
  %55 = getelementptr inbounds double, ptr %54, i64 %.1608702.epil
  store double %53, ptr %55, align 8, !tbaa !40
  %56 = add nuw nsw i64 %.1608702.epil, 1
  %epil.iter791.next = add i64 %epil.iter791, 1
  %epil.iter791.cmp.not = icmp eq i64 %epil.iter791.next, %xtraiter790
  br i1 %epil.iter791.cmp.not, label %.preheader650, label %.epil.preheader789, !llvm.loop !52

.preheader650:                                    ; preds = %.epil.preheader789, %.preheader650.unr-lcssa
  br i1 %.not.not701, label %.lr.ph707, label %._crit_edge708

.lr.ph707:                                        ; preds = %.preheader650
  %57 = getelementptr inbounds i8, ptr %0, i64 360
  %58 = getelementptr inbounds i8, ptr %0, i64 424
  %59 = getelementptr inbounds i8, ptr %0, i64 232
  %60 = getelementptr inbounds i8, ptr %0, i64 296
  br label %86

61:                                               ; preds = %61, %.lr.ph704.new
  %.1608702 = phi i64 [ 0, %.lr.ph704.new ], [ %85, %61 ]
  %niter794 = phi i64 [ 0, %.lr.ph704.new ], [ %niter794.next.3, %61 ]
  %62 = load ptr, ptr %48, align 8, !tbaa !38
  %63 = getelementptr inbounds double, ptr %62, i64 %.1608702
  %64 = load double, ptr %63, align 8, !tbaa !40
  %65 = load ptr, ptr %49, align 8, !tbaa !38
  %66 = getelementptr inbounds double, ptr %65, i64 %.1608702
  store double %64, ptr %66, align 8, !tbaa !40
  %67 = or disjoint i64 %.1608702, 1
  %68 = load ptr, ptr %48, align 8, !tbaa !38
  %69 = getelementptr inbounds double, ptr %68, i64 %67
  %70 = load double, ptr %69, align 8, !tbaa !40
  %71 = load ptr, ptr %49, align 8, !tbaa !38
  %72 = getelementptr inbounds double, ptr %71, i64 %67
  store double %70, ptr %72, align 8, !tbaa !40
  %73 = or disjoint i64 %.1608702, 2
  %74 = load ptr, ptr %48, align 8, !tbaa !38
  %75 = getelementptr inbounds double, ptr %74, i64 %73
  %76 = load double, ptr %75, align 8, !tbaa !40
  %77 = load ptr, ptr %49, align 8, !tbaa !38
  %78 = getelementptr inbounds double, ptr %77, i64 %73
  store double %76, ptr %78, align 8, !tbaa !40
  %79 = or disjoint i64 %.1608702, 3
  %80 = load ptr, ptr %48, align 8, !tbaa !38
  %81 = getelementptr inbounds double, ptr %80, i64 %79
  %82 = load double, ptr %81, align 8, !tbaa !40
  %83 = load ptr, ptr %49, align 8, !tbaa !38
  %84 = getelementptr inbounds double, ptr %83, i64 %79
  store double %82, ptr %84, align 8, !tbaa !40
  %85 = add nuw nsw i64 %.1608702, 4
  %niter794.next.3 = add i64 %niter794, 4
  %niter794.ncmp.3 = icmp eq i64 %niter794.next.3, %unroll_iter793
  br i1 %niter794.ncmp.3, label %.preheader650.unr-lcssa, label %61, !llvm.loop !54

86:                                               ; preds = %.lr.ph707, %112
  %.2609706 = phi i64 [ 0, %.lr.ph707 ], [ %113, %112 ]
  %87 = load ptr, ptr %57, align 8, !tbaa !38
  %88 = getelementptr inbounds i8, ptr %87, i64 %.2609706
  %89 = load i8, ptr %88, align 1, !tbaa !56, !range !57, !noundef !58
  %90 = trunc nuw i8 %89 to i1
  br i1 %90, label %91, label %112

91:                                               ; preds = %86
  %92 = load ptr, ptr %58, align 8, !tbaa !38
  %93 = getelementptr inbounds i8, ptr %92, i64 %.2609706
  %94 = load i8, ptr %93, align 1, !tbaa !56, !range !57, !noundef !58
  %95 = trunc nuw i8 %94 to i1
  br i1 %95, label %96, label %112

96:                                               ; preds = %91
  %97 = load ptr, ptr %59, align 8, !tbaa !38
  %98 = getelementptr inbounds double, ptr %97, i64 %.2609706
  %99 = load double, ptr %98, align 8, !tbaa !40
  %100 = load ptr, ptr %60, align 8, !tbaa !38
  %101 = getelementptr inbounds double, ptr %100, i64 %.2609706
  %102 = load double, ptr %101, align 8, !tbaa !40
  %103 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %99, double noundef %102)
  br i1 %103, label %104, label %112

104:                                              ; preds = %96
  store i64 -3, ptr %26, align 8, !tbaa !59
  %105 = load ptr, ptr %59, align 8, !tbaa !38
  %106 = getelementptr inbounds double, ptr %105, i64 %.2609706
  %107 = load double, ptr %106, align 8, !tbaa !40
  %108 = load ptr, ptr %60, align 8, !tbaa !38
  %109 = getelementptr inbounds double, ptr %108, i64 %.2609706
  %110 = load double, ptr %109, align 8, !tbaa !40
  %111 = fsub double %107, %110
  store double %111, ptr %29, align 8, !tbaa !60
  store i64 %.2609706, ptr %30, align 8, !tbaa !43
  br label %974

112:                                              ; preds = %86, %91, %96
  %113 = add nuw nsw i64 %.2609706, 1
  %exitcond750.not = icmp eq i64 %113, %36
  br i1 %exitcond750.not, label %._crit_edge708, label %86, !llvm.loop !61

._crit_edge708:                                   ; preds = %112, %24, %.preheader650
  %.2609.lcssa = phi i64 [ 0, %.preheader650 ], [ 0, %24 ], [ %36, %112 ]
  %114 = getelementptr inbounds i8, ptr %0, i64 96
  %115 = load double, ptr %114, align 8, !tbaa !62
  %116 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %115, double noundef 0.000000e+00)
  br i1 %116, label %117, label %209

117:                                              ; preds = %._crit_edge708
  %118 = getelementptr inbounds i8, ptr %0, i64 104
  %119 = load double, ptr %118, align 8, !tbaa !63
  %120 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %119, double noundef 0.000000e+00)
  br i1 %120, label %.loopexit651, label %209

.loopexit651.loopexit:                            ; preds = %._crit_edge693
  %smax747 = tail call i64 @llvm.smax.i64(i64 %.0587, i64 0)
  br label %.loopexit651

.loopexit651:                                     ; preds = %.loopexit651.loopexit, %164, %117
  %.3610 = phi i64 [ %.2609.lcssa, %117 ], [ 0, %164 ], [ %171, %.loopexit651.loopexit ]
  %.1598 = phi i64 [ %.0597, %117 ], [ %.0597, %164 ], [ %smax747, %.loopexit651.loopexit ]
  %.1588 = phi i64 [ %36, %117 ], [ %.0587, %164 ], [ %.0587, %.loopexit651.loopexit ]
  %.1578 = phi i64 [ %38, %117 ], [ %.0577, %164 ], [ %.0577, %.loopexit651.loopexit ]
  %.1573 = phi i64 [ %40, %117 ], [ %.0572, %164 ], [ %.0572, %.loopexit651.loopexit ]
  %121 = getelementptr inbounds i8, ptr %0, i64 33088
  %122 = getelementptr inbounds i8, ptr %0, i64 1896
  %123 = getelementptr inbounds i8, ptr %0, i64 112
  %124 = getelementptr inbounds i8, ptr %0, i64 176
  %125 = getelementptr inbounds i8, ptr %0, i64 240
  %126 = getelementptr inbounds i8, ptr %0, i64 104
  %127 = load double, ptr %126, align 8, !tbaa !63
  %128 = tail call noundef zeroext i1 @_ZN11alglib_impl34smoothnessmonitorcheckgradientatx0EPNS_17smoothnessmonitorEPNS_9ae_vectorES3_S3_S3_bdPNS_8ae_stateE(ptr noundef nonnull %121, ptr noundef nonnull %122, ptr noundef nonnull %123, ptr noundef nonnull %124, ptr noundef nonnull %125, i1 noundef zeroext true, double noundef %127, ptr noundef %1)
  br i1 %128, label %.preheader, label %209

.preheader:                                       ; preds = %.loopexit651
  %.not646.not716 = icmp sgt i64 %.1588, 0
  br i1 %.not646.not716, label %.lr.ph718, label %._crit_edge719

.lr.ph718:                                        ; preds = %.preheader
  %129 = getelementptr inbounds i8, ptr %0, i64 35248
  %130 = getelementptr inbounds i8, ptr %0, i64 664
  %xtraiter802 = and i64 %.1588, 3
  %131 = icmp ult i64 %.1588, 4
  br i1 %131, label %._crit_edge719.loopexit.unr-lcssa, label %.lr.ph718.new

.lr.ph718.new:                                    ; preds = %.lr.ph718
  %unroll_iter805 = and i64 %.1588, 9223372036854775804
  br label %132

132:                                              ; preds = %132, %.lr.ph718.new
  %.4611717 = phi i64 [ 0, %.lr.ph718.new ], [ %156, %132 ]
  %niter806 = phi i64 [ 0, %.lr.ph718.new ], [ %niter806.next.3, %132 ]
  %133 = load ptr, ptr %129, align 8, !tbaa !38
  %134 = getelementptr inbounds double, ptr %133, i64 %.4611717
  %135 = load double, ptr %134, align 8, !tbaa !40
  %136 = load ptr, ptr %130, align 8, !tbaa !38
  %137 = getelementptr inbounds double, ptr %136, i64 %.4611717
  store double %135, ptr %137, align 8, !tbaa !40
  %138 = or disjoint i64 %.4611717, 1
  %139 = load ptr, ptr %129, align 8, !tbaa !38
  %140 = getelementptr inbounds double, ptr %139, i64 %138
  %141 = load double, ptr %140, align 8, !tbaa !40
  %142 = load ptr, ptr %130, align 8, !tbaa !38
  %143 = getelementptr inbounds double, ptr %142, i64 %138
  store double %141, ptr %143, align 8, !tbaa !40
  %144 = or disjoint i64 %.4611717, 2
  %145 = load ptr, ptr %129, align 8, !tbaa !38
  %146 = getelementptr inbounds double, ptr %145, i64 %144
  %147 = load double, ptr %146, align 8, !tbaa !40
  %148 = load ptr, ptr %130, align 8, !tbaa !38
  %149 = getelementptr inbounds double, ptr %148, i64 %144
  store double %147, ptr %149, align 8, !tbaa !40
  %150 = or disjoint i64 %.4611717, 3
  %151 = load ptr, ptr %129, align 8, !tbaa !38
  %152 = getelementptr inbounds double, ptr %151, i64 %150
  %153 = load double, ptr %152, align 8, !tbaa !40
  %154 = load ptr, ptr %130, align 8, !tbaa !38
  %155 = getelementptr inbounds double, ptr %154, i64 %150
  store double %153, ptr %155, align 8, !tbaa !40
  %156 = add nuw nsw i64 %.4611717, 4
  %niter806.next.3 = add i64 %niter806, 4
  %niter806.ncmp.3 = icmp eq i64 %niter806.next.3, %unroll_iter805
  br i1 %niter806.ncmp.3, label %._crit_edge719.loopexit.unr-lcssa, label %132, !llvm.loop !64

._crit_edge719.loopexit.unr-lcssa:                ; preds = %132, %.lr.ph718
  %.4611717.unr = phi i64 [ 0, %.lr.ph718 ], [ %156, %132 ]
  %lcmp.mod804.not = icmp eq i64 %xtraiter802, 0
  br i1 %lcmp.mod804.not, label %._crit_edge719, label %.epil.preheader801

.epil.preheader801:                               ; preds = %._crit_edge719.loopexit.unr-lcssa, %.epil.preheader801
  %.4611717.epil = phi i64 [ %162, %.epil.preheader801 ], [ %.4611717.unr, %._crit_edge719.loopexit.unr-lcssa ]
  %epil.iter803 = phi i64 [ %epil.iter803.next, %.epil.preheader801 ], [ 0, %._crit_edge719.loopexit.unr-lcssa ]
  %157 = load ptr, ptr %129, align 8, !tbaa !38
  %158 = getelementptr inbounds double, ptr %157, i64 %.4611717.epil
  %159 = load double, ptr %158, align 8, !tbaa !40
  %160 = load ptr, ptr %130, align 8, !tbaa !38
  %161 = getelementptr inbounds double, ptr %160, i64 %.4611717.epil
  store double %159, ptr %161, align 8, !tbaa !40
  %162 = add nuw nsw i64 %.4611717.epil, 1
  %epil.iter803.next = add i64 %epil.iter803, 1
  %epil.iter803.cmp.not = icmp eq i64 %epil.iter803.next, %xtraiter802
  br i1 %epil.iter803.cmp.not, label %._crit_edge719, label %.epil.preheader801, !llvm.loop !65

._crit_edge719:                                   ; preds = %._crit_edge719.loopexit.unr-lcssa, %.epil.preheader801, %.preheader
  %.4611.lcssa = phi i64 [ 0, %.preheader ], [ %.1588, %.epil.preheader801 ], [ %.1588, %._crit_edge719.loopexit.unr-lcssa ]
  %163 = getelementptr inbounds i8, ptr %0, i64 824
  store i8 1, ptr %163, align 8, !tbaa !66
  br label %959

164:                                              ; preds = %23
  %165 = getelementptr inbounds i8, ptr %0, i64 824
  store i8 0, ptr %165, align 8, !tbaa !66
  %166 = add i64 %.0572, %.0577
  %.not640695 = icmp slt i64 %166, 0
  br i1 %.not640695, label %.loopexit651, label %.lr.ph698

.lr.ph698:                                        ; preds = %164
  %167 = getelementptr inbounds i8, ptr %0, i64 736
  %168 = getelementptr inbounds i8, ptr %0, i64 35312
  %.not647.not689 = icmp sgt i64 %.0587, 0
  %169 = getelementptr inbounds i8, ptr %0, i64 816
  %170 = getelementptr inbounds i8, ptr %0, i64 35392
  %171 = add nuw i64 %166, 1
  %xtraiter784 = and i64 %.0587, 1
  %172 = icmp eq i64 %.0587, 1
  %unroll_iter787 = and i64 %.0587, 9223372036854775806
  %lcmp.mod786.not = icmp eq i64 %xtraiter784, 0
  br label %173

173:                                              ; preds = %.lr.ph698, %._crit_edge693
  %.5612696 = phi i64 [ 0, %.lr.ph698 ], [ %208, %._crit_edge693 ]
  %174 = load ptr, ptr %167, align 8, !tbaa !38
  %175 = getelementptr inbounds double, ptr %174, i64 %.5612696
  %176 = load double, ptr %175, align 8, !tbaa !40
  %177 = load ptr, ptr %168, align 8, !tbaa !38
  %178 = getelementptr inbounds double, ptr %177, i64 %.5612696
  store double %176, ptr %178, align 8, !tbaa !40
  br i1 %.not647.not689, label %.lr.ph692.preheader, label %._crit_edge693

.lr.ph692.preheader:                              ; preds = %173
  br i1 %172, label %._crit_edge693.loopexit.unr-lcssa, label %.lr.ph692

.lr.ph692:                                        ; preds = %.lr.ph692.preheader, %.lr.ph692
  %.3600690 = phi i64 [ %198, %.lr.ph692 ], [ 0, %.lr.ph692.preheader ]
  %niter788 = phi i64 [ %niter788.next.1, %.lr.ph692 ], [ 0, %.lr.ph692.preheader ]
  %179 = load ptr, ptr %169, align 8, !tbaa !38
  %180 = getelementptr inbounds ptr, ptr %179, i64 %.5612696
  %181 = load ptr, ptr %180, align 8, !tbaa !67
  %182 = getelementptr inbounds double, ptr %181, i64 %.3600690
  %183 = load double, ptr %182, align 8, !tbaa !40
  %184 = load ptr, ptr %170, align 8, !tbaa !38
  %185 = getelementptr inbounds ptr, ptr %184, i64 %.5612696
  %186 = load ptr, ptr %185, align 8, !tbaa !67
  %187 = getelementptr inbounds double, ptr %186, i64 %.3600690
  store double %183, ptr %187, align 8, !tbaa !40
  %188 = or disjoint i64 %.3600690, 1
  %189 = load ptr, ptr %169, align 8, !tbaa !38
  %190 = getelementptr inbounds ptr, ptr %189, i64 %.5612696
  %191 = load ptr, ptr %190, align 8, !tbaa !67
  %192 = getelementptr inbounds double, ptr %191, i64 %188
  %193 = load double, ptr %192, align 8, !tbaa !40
  %194 = load ptr, ptr %170, align 8, !tbaa !38
  %195 = getelementptr inbounds ptr, ptr %194, i64 %.5612696
  %196 = load ptr, ptr %195, align 8, !tbaa !67
  %197 = getelementptr inbounds double, ptr %196, i64 %188
  store double %193, ptr %197, align 8, !tbaa !40
  %198 = add nuw nsw i64 %.3600690, 2
  %niter788.next.1 = add i64 %niter788, 2
  %niter788.ncmp.1 = icmp eq i64 %niter788.next.1, %unroll_iter787
  br i1 %niter788.ncmp.1, label %._crit_edge693.loopexit.unr-lcssa, label %.lr.ph692, !llvm.loop !68

._crit_edge693.loopexit.unr-lcssa:                ; preds = %.lr.ph692, %.lr.ph692.preheader
  %.3600690.unr = phi i64 [ 0, %.lr.ph692.preheader ], [ %198, %.lr.ph692 ]
  br i1 %lcmp.mod786.not, label %._crit_edge693, label %.lr.ph692.epil

.lr.ph692.epil:                                   ; preds = %._crit_edge693.loopexit.unr-lcssa
  %199 = load ptr, ptr %169, align 8, !tbaa !38
  %200 = getelementptr inbounds ptr, ptr %199, i64 %.5612696
  %201 = load ptr, ptr %200, align 8, !tbaa !67
  %202 = getelementptr inbounds double, ptr %201, i64 %.3600690.unr
  %203 = load double, ptr %202, align 8, !tbaa !40
  %204 = load ptr, ptr %170, align 8, !tbaa !38
  %205 = getelementptr inbounds ptr, ptr %204, i64 %.5612696
  %206 = load ptr, ptr %205, align 8, !tbaa !67
  %207 = getelementptr inbounds double, ptr %206, i64 %.3600690.unr
  store double %203, ptr %207, align 8, !tbaa !40
  br label %._crit_edge693

._crit_edge693:                                   ; preds = %.lr.ph692.epil, %._crit_edge693.loopexit.unr-lcssa, %173
  %208 = add nuw i64 %.5612696, 1
  %exitcond748.not = icmp eq i64 %.5612696, %166
  br i1 %exitcond748.not, label %.loopexit651.loopexit, label %173, !llvm.loop !69

209:                                              ; preds = %.loopexit651, %._crit_edge708, %117
  %.6613 = phi i64 [ %.3610, %.loopexit651 ], [ %.2609.lcssa, %117 ], [ %.2609.lcssa, %._crit_edge708 ]
  %.4601 = phi i64 [ %.1598, %.loopexit651 ], [ %.0597, %117 ], [ %.0597, %._crit_edge708 ]
  %.2589 = phi i64 [ %.1588, %.loopexit651 ], [ %36, %117 ], [ %36, %._crit_edge708 ]
  %.2579 = phi i64 [ %.1578, %.loopexit651 ], [ %38, %117 ], [ %38, %._crit_edge708 ]
  %.2574 = phi i64 [ %.1573, %.loopexit651 ], [ %40, %117 ], [ %40, %._crit_edge708 ]
  %210 = getelementptr inbounds i8, ptr %0, i64 16
  %211 = load i64, ptr %210, align 8, !tbaa !70
  switch i64 %211, label %974 [
    i64 0, label %212
    i64 1, label %384
  ]

212:                                              ; preds = %209
  %213 = getelementptr inbounds i8, ptr %0, i64 96
  %214 = load double, ptr %213, align 8, !tbaa !62
  %215 = tail call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %214, double noundef 0.000000e+00)
  br i1 %215, label %216, label %225

216:                                              ; preds = %212
  %217 = getelementptr inbounds i8, ptr %0, i64 1960
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %217, i64 noundef %.2589, ptr noundef %1)
  %218 = getelementptr inbounds i8, ptr %0, i64 2024
  %219 = add nsw i64 %.2579, 1
  %220 = add nsw i64 %219, %.2574
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %218, i64 noundef %220, ptr noundef %1)
  %221 = getelementptr inbounds i8, ptr %0, i64 2152
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %221, i64 noundef %220, ptr noundef %1)
  %222 = getelementptr inbounds i8, ptr %0, i64 2216
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %222, i64 noundef %220, ptr noundef %1)
  %223 = getelementptr inbounds i8, ptr %0, i64 2280
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %223, i64 noundef %220, ptr noundef %1)
  %224 = getelementptr inbounds i8, ptr %0, i64 2344
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %224, i64 noundef %220, ptr noundef %1)
  br label %225

225:                                              ; preds = %216, %212
  %226 = getelementptr inbounds i8, ptr %0, i64 1096
  %227 = getelementptr inbounds i8, ptr %0, i64 1104
  tail call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %227, i64 noundef 9, ptr noundef %1)
  %228 = getelementptr inbounds i8, ptr %0, i64 1232
  tail call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %228, i64 noundef 8, ptr noundef %1)
  store i32 -1, ptr %226, align 8, !tbaa !71
  br label %229

229:                                              ; preds = %23, %381, %225
  %.7614 = phi i64 [ %.6613, %225 ], [ %.0607, %381 ], [ %.0607, %23 ]
  %.5602 = phi i64 [ %.4601, %225 ], [ %.0597, %381 ], [ %.0597, %23 ]
  %.3590 = phi i64 [ %.2589, %225 ], [ %.0587, %381 ], [ %.0587, %23 ]
  %.3580 = phi i64 [ %.2579, %225 ], [ %.0577, %381 ], [ %.0577, %23 ]
  %.3575 = phi i64 [ %.2574, %225 ], [ %.0572, %381 ], [ %.0572, %23 ]
  %230 = getelementptr inbounds i8, ptr %0, i64 33088
  %231 = tail call noundef zeroext i1 @_ZN11alglib_implL19minnlc_auliterationEPNS_11minnlcstateEPNS_17smoothnessmonitorEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %230, ptr noundef %1)
  br i1 %231, label %232, label %974

232:                                              ; preds = %229
  %233 = getelementptr inbounds i8, ptr %0, i64 96
  %234 = load double, ptr %233, align 8, !tbaa !62
  %235 = tail call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %234, double noundef 0.000000e+00)
  br i1 %235, label %236, label %959

236:                                              ; preds = %232
  %237 = getelementptr inbounds i8, ptr %0, i64 824
  %238 = load i8, ptr %237, align 8, !tbaa !66, !range !57, !noundef !58
  %239 = trunc nuw i8 %238 to i1
  br i1 %239, label %240, label %959

240:                                              ; preds = %236
  store i8 0, ptr %237, align 8, !tbaa !66
  %241 = getelementptr inbounds i8, ptr %0, i64 825
  store i8 1, ptr %241, align 1, !tbaa !72
  %242 = getelementptr inbounds i8, ptr %0, i64 2016
  %243 = load ptr, ptr %242, align 8, !tbaa !38
  %244 = getelementptr inbounds i8, ptr %0, i64 664
  %245 = load ptr, ptr %244, align 8, !tbaa !38
  %246 = add nsw i64 %.3590, -1
  %247 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %246)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %243, i64 noundef 1, ptr noundef %245, i64 noundef 1, i64 noundef %247)
  br label %248

248:                                              ; preds = %._crit_edge687, %240
  %.pre-phi = phi i64 [ %.pre, %._crit_edge687 ], [ %246, %240 ]
  %.8615 = phi i64 [ %.9616.lcssa, %._crit_edge687 ], [ %.7614, %240 ]
  %.6603 = phi i64 [ %380, %._crit_edge687 ], [ 0, %240 ]
  %.4591 = phi i64 [ %.0587, %._crit_edge687 ], [ %.3590, %240 ]
  %.4581 = phi i64 [ %.0577, %._crit_edge687 ], [ %.3580, %240 ]
  %.4576 = phi i64 [ %.0572, %._crit_edge687 ], [ %.3575, %240 ]
  %.not642 = icmp slt i64 %.6603, %.4591
  %249 = getelementptr inbounds i8, ptr %0, i64 664
  %250 = load ptr, ptr %249, align 8, !tbaa !38
  %251 = getelementptr inbounds i8, ptr %0, i64 2016
  %252 = load ptr, ptr %251, align 8, !tbaa !38
  %253 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %.pre-phi)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %250, i64 noundef 1, ptr noundef %252, i64 noundef 1, i64 noundef %253)
  br i1 %.not642, label %254, label %959

254:                                              ; preds = %248
  %255 = load ptr, ptr %249, align 8, !tbaa !38
  %256 = getelementptr inbounds double, ptr %255, i64 %.6603
  %257 = load double, ptr %256, align 8, !tbaa !40
  %258 = getelementptr inbounds i8, ptr %0, i64 168
  %259 = load ptr, ptr %258, align 8, !tbaa !38
  %260 = getelementptr inbounds double, ptr %259, i64 %.6603
  %261 = load double, ptr %260, align 8, !tbaa !40
  %262 = getelementptr inbounds i8, ptr %0, i64 96
  %263 = load double, ptr %262, align 8, !tbaa !62
  %264 = fneg double %261
  %265 = tail call double @llvm.fmuladd.f64(double %264, double %263, double %257)
  store double %265, ptr %256, align 8, !tbaa !40
  br label %959

266:                                              ; preds = %23
  %267 = getelementptr inbounds i8, ptr %0, i64 2208
  %268 = load ptr, ptr %267, align 8, !tbaa !38
  %269 = getelementptr inbounds i8, ptr %0, i64 736
  %270 = load ptr, ptr %269, align 8, !tbaa !38
  %271 = add nsw i64 %.0572, %.0577
  %272 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %271)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %268, i64 noundef 1, ptr noundef %270, i64 noundef 1, i64 noundef %272)
  %273 = getelementptr inbounds i8, ptr %0, i64 664
  %274 = load ptr, ptr %273, align 8, !tbaa !38
  %275 = getelementptr inbounds i8, ptr %0, i64 2016
  %276 = load ptr, ptr %275, align 8, !tbaa !38
  %277 = add nsw i64 %.0587, -1
  %278 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %277)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %274, i64 noundef 1, ptr noundef %276, i64 noundef 1, i64 noundef %278)
  %279 = load ptr, ptr %273, align 8, !tbaa !38
  %280 = getelementptr inbounds double, ptr %279, i64 %.0597
  %281 = load double, ptr %280, align 8, !tbaa !40
  %282 = getelementptr inbounds i8, ptr %0, i64 168
  %283 = load ptr, ptr %282, align 8, !tbaa !38
  %284 = getelementptr inbounds double, ptr %283, i64 %.0597
  %285 = load double, ptr %284, align 8, !tbaa !40
  %286 = getelementptr inbounds i8, ptr %0, i64 96
  %287 = load double, ptr %286, align 8, !tbaa !62
  %288 = fmul double %285, -5.000000e-01
  %289 = tail call double @llvm.fmuladd.f64(double %288, double %287, double %281)
  store double %289, ptr %280, align 8, !tbaa !40
  br label %959

290:                                              ; preds = %23
  %291 = getelementptr inbounds i8, ptr %0, i64 2272
  %292 = load ptr, ptr %291, align 8, !tbaa !38
  %293 = getelementptr inbounds i8, ptr %0, i64 736
  %294 = load ptr, ptr %293, align 8, !tbaa !38
  %295 = add nsw i64 %.0572, %.0577
  %296 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %295)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %292, i64 noundef 1, ptr noundef %294, i64 noundef 1, i64 noundef %296)
  %297 = getelementptr inbounds i8, ptr %0, i64 664
  %298 = load ptr, ptr %297, align 8, !tbaa !38
  %299 = getelementptr inbounds i8, ptr %0, i64 2016
  %300 = load ptr, ptr %299, align 8, !tbaa !38
  %301 = add nsw i64 %.0587, -1
  %302 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %301)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %298, i64 noundef 1, ptr noundef %300, i64 noundef 1, i64 noundef %302)
  %303 = load ptr, ptr %297, align 8, !tbaa !38
  %304 = getelementptr inbounds double, ptr %303, i64 %.0597
  %305 = load double, ptr %304, align 8, !tbaa !40
  %306 = getelementptr inbounds i8, ptr %0, i64 168
  %307 = load ptr, ptr %306, align 8, !tbaa !38
  %308 = getelementptr inbounds double, ptr %307, i64 %.0597
  %309 = load double, ptr %308, align 8, !tbaa !40
  %310 = fmul double %309, 5.000000e-01
  %311 = getelementptr inbounds i8, ptr %0, i64 96
  %312 = load double, ptr %311, align 8, !tbaa !62
  %313 = tail call double @llvm.fmuladd.f64(double %310, double %312, double %305)
  store double %313, ptr %304, align 8, !tbaa !40
  br label %959

314:                                              ; preds = %23
  %315 = getelementptr inbounds i8, ptr %0, i64 2336
  %316 = load ptr, ptr %315, align 8, !tbaa !38
  %317 = getelementptr inbounds i8, ptr %0, i64 736
  %318 = load ptr, ptr %317, align 8, !tbaa !38
  %319 = add nsw i64 %.0572, %.0577
  %320 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %319)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %316, i64 noundef 1, ptr noundef %318, i64 noundef 1, i64 noundef %320)
  %321 = getelementptr inbounds i8, ptr %0, i64 664
  %322 = load ptr, ptr %321, align 8, !tbaa !38
  %323 = getelementptr inbounds i8, ptr %0, i64 2016
  %324 = load ptr, ptr %323, align 8, !tbaa !38
  %325 = add nsw i64 %.0587, -1
  %326 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %325)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %322, i64 noundef 1, ptr noundef %324, i64 noundef 1, i64 noundef %326)
  %327 = load ptr, ptr %321, align 8, !tbaa !38
  %328 = getelementptr inbounds double, ptr %327, i64 %.0597
  %329 = load double, ptr %328, align 8, !tbaa !40
  %330 = getelementptr inbounds i8, ptr %0, i64 168
  %331 = load ptr, ptr %330, align 8, !tbaa !38
  %332 = getelementptr inbounds double, ptr %331, i64 %.0597
  %333 = load double, ptr %332, align 8, !tbaa !40
  %334 = getelementptr inbounds i8, ptr %0, i64 96
  %335 = load double, ptr %334, align 8, !tbaa !62
  %336 = tail call double @llvm.fmuladd.f64(double %333, double %335, double %329)
  store double %336, ptr %328, align 8, !tbaa !40
  br label %959

337:                                              ; preds = %23
  %338 = getelementptr inbounds i8, ptr %0, i64 2400
  %339 = load ptr, ptr %338, align 8, !tbaa !38
  %340 = getelementptr inbounds i8, ptr %0, i64 736
  %341 = load ptr, ptr %340, align 8, !tbaa !38
  %342 = add i64 %.0572, %.0577
  %343 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %342)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %339, i64 noundef 1, ptr noundef %341, i64 noundef 1, i64 noundef %343)
  %.not639683 = icmp slt i64 %342, 0
  br i1 %.not639683, label %._crit_edge687, label %.lr.ph686

.lr.ph686:                                        ; preds = %337
  %344 = getelementptr inbounds i8, ptr %0, i64 2336
  %345 = getelementptr inbounds i8, ptr %0, i64 2272
  %346 = getelementptr inbounds i8, ptr %0, i64 2208
  %347 = getelementptr inbounds i8, ptr %0, i64 96
  %348 = getelementptr inbounds i8, ptr %0, i64 168
  %349 = getelementptr inbounds i8, ptr %0, i64 816
  %350 = add nuw i64 %342, 1
  br label %351

351:                                              ; preds = %.lr.ph686, %351
  %.9616684 = phi i64 [ 0, %.lr.ph686 ], [ %379, %351 ]
  %352 = load ptr, ptr %344, align 8, !tbaa !38
  %353 = getelementptr inbounds double, ptr %352, i64 %.9616684
  %354 = load double, ptr %353, align 8, !tbaa !40
  %355 = load ptr, ptr %345, align 8, !tbaa !38
  %356 = getelementptr inbounds double, ptr %355, i64 %.9616684
  %357 = load double, ptr %356, align 8, !tbaa !40
  %358 = fsub double %354, %357
  %359 = load ptr, ptr %338, align 8, !tbaa !38
  %360 = getelementptr inbounds double, ptr %359, i64 %.9616684
  %361 = load double, ptr %360, align 8, !tbaa !40
  %362 = load ptr, ptr %346, align 8, !tbaa !38
  %363 = getelementptr inbounds double, ptr %362, i64 %.9616684
  %364 = load double, ptr %363, align 8, !tbaa !40
  %365 = fsub double %361, %364
  %366 = fneg double %365
  %367 = tail call double @llvm.fmuladd.f64(double %358, double 8.000000e+00, double %366)
  %368 = load double, ptr %347, align 8, !tbaa !62
  %369 = fmul double %368, 6.000000e+00
  %370 = load ptr, ptr %348, align 8, !tbaa !38
  %371 = getelementptr inbounds double, ptr %370, i64 %.9616684
  %372 = load double, ptr %371, align 8, !tbaa !40
  %373 = fmul double %369, %372
  %374 = fdiv double %367, %373
  %375 = load ptr, ptr %349, align 8, !tbaa !38
  %376 = getelementptr inbounds ptr, ptr %375, i64 %.9616684
  %377 = load ptr, ptr %376, align 8, !tbaa !67
  %378 = getelementptr inbounds double, ptr %377, i64 %.0597
  store double %374, ptr %378, align 8, !tbaa !40
  %379 = add nuw i64 %.9616684, 1
  %exitcond745.not = icmp eq i64 %.9616684, %342
  br i1 %exitcond745.not, label %._crit_edge687, label %351, !llvm.loop !73

._crit_edge687:                                   ; preds = %351, %337
  %.9616.lcssa = phi i64 [ 0, %337 ], [ %350, %351 ]
  %380 = add nsw i64 %.0597, 1
  %.pre = add nsw i64 %.0587, -1
  br label %248

381:                                              ; preds = %23
  %382 = getelementptr inbounds i8, ptr %0, i64 825
  store i8 0, ptr %382, align 1, !tbaa !72
  %383 = getelementptr inbounds i8, ptr %0, i64 824
  store i8 1, ptr %383, align 8, !tbaa !66
  br label %229

384:                                              ; preds = %209
  %385 = getelementptr inbounds i8, ptr %0, i64 96
  %386 = load double, ptr %385, align 8, !tbaa !62
  %387 = tail call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %386, double noundef 0.000000e+00)
  br i1 %387, label %388, label %397

388:                                              ; preds = %384
  %389 = getelementptr inbounds i8, ptr %0, i64 1960
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %389, i64 noundef %.2589, ptr noundef %1)
  %390 = getelementptr inbounds i8, ptr %0, i64 2024
  %391 = add nsw i64 %.2579, 1
  %392 = add nsw i64 %391, %.2574
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %390, i64 noundef %392, ptr noundef %1)
  %393 = getelementptr inbounds i8, ptr %0, i64 2152
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %393, i64 noundef %392, ptr noundef %1)
  %394 = getelementptr inbounds i8, ptr %0, i64 2216
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %394, i64 noundef %392, ptr noundef %1)
  %395 = getelementptr inbounds i8, ptr %0, i64 2280
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %395, i64 noundef %392, ptr noundef %1)
  %396 = getelementptr inbounds i8, ptr %0, i64 2344
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %396, i64 noundef %392, ptr noundef %1)
  br label %397

397:                                              ; preds = %388, %384
  %398 = getelementptr inbounds i8, ptr %0, i64 176
  %399 = getelementptr inbounds i8, ptr %0, i64 240
  %400 = getelementptr inbounds i8, ptr %0, i64 112
  %401 = getelementptr inbounds i8, ptr %0, i64 1896
  %402 = getelementptr inbounds i8, ptr %0, i64 448
  %403 = getelementptr inbounds i8, ptr %0, i64 528
  %404 = getelementptr inbounds i8, ptr %0, i64 432
  %405 = load i64, ptr %404, align 8, !tbaa !74
  %406 = getelementptr inbounds i8, ptr %0, i64 440
  %407 = load i64, ptr %406, align 8, !tbaa !75
  %408 = getelementptr inbounds i8, ptr %0, i64 592
  %409 = load i64, ptr %408, align 8, !tbaa !49
  %410 = getelementptr inbounds i8, ptr %0, i64 600
  %411 = load i64, ptr %410, align 8, !tbaa !50
  %412 = getelementptr inbounds i8, ptr %0, i64 56
  %413 = load double, ptr %412, align 8, !tbaa !76
  %414 = getelementptr inbounds i8, ptr %0, i64 64
  %415 = load i64, ptr %414, align 8, !tbaa !77
  %416 = getelementptr inbounds i8, ptr %0, i64 10256
  tail call void @_ZN11alglib_impl13minslpinitbufEPNS_9ae_vectorES1_S1_S1_lPNS_9ae_matrixES1_lllldlPNS_11minslpstateEPNS_8ae_stateE(ptr noundef nonnull %398, ptr noundef nonnull %399, ptr noundef nonnull %400, ptr noundef nonnull %401, i64 noundef %.2589, ptr noundef nonnull %402, ptr noundef nonnull %403, i64 noundef %405, i64 noundef %407, i64 noundef %409, i64 noundef %411, double noundef %413, i64 noundef %415, ptr noundef nonnull %416, ptr noundef %1)
  br label %.preheader649.preheader

.preheader649.preheader.loopexit767.unr-lcssa:    ; preds = %.lr.ph663.split, %.lr.ph663.split.preheader
  %.17661.unr = phi i64 [ 0, %.lr.ph663.split.preheader ], [ %909, %.lr.ph663.split ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.preheader649.preheader, label %.lr.ph663.split.epil

.lr.ph663.split.epil:                             ; preds = %.preheader649.preheader.loopexit767.unr-lcssa, %.lr.ph663.split.epil
  %.17661.epil = phi i64 [ %422, %.lr.ph663.split.epil ], [ %.17661.unr, %.preheader649.preheader.loopexit767.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph663.split.epil ], [ 0, %.preheader649.preheader.loopexit767.unr-lcssa ]
  %417 = load ptr, ptr %829, align 8, !tbaa !38
  %418 = getelementptr inbounds double, ptr %417, i64 %.17661.epil
  %419 = load double, ptr %418, align 8, !tbaa !40
  %420 = load ptr, ptr %830, align 8, !tbaa !38
  %421 = getelementptr inbounds double, ptr %420, i64 %.17661.epil
  store double %419, ptr %421, align 8, !tbaa !40
  %422 = add nuw i64 %.17661.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 %.preheader649.preheader, label %.lr.ph663.split.epil, !llvm.loop !78

.preheader649.preheader:                          ; preds = %.preheader649.preheader.loopexit767.unr-lcssa, %.lr.ph663.split.epil, %._crit_edge.us, %397, %.loopexit652.loopexit, %825, %444, %925
  %.10617.ph.ph = phi i64 [ %.0607, %925 ], [ %452, %.loopexit652.loopexit ], [ 0, %825 ], [ 0, %444 ], [ %.6613, %397 ], [ %834, %._crit_edge.us ], [ %834, %.lr.ph663.split.epil ], [ %834, %.preheader649.preheader.loopexit767.unr-lcssa ]
  %.7604.ph.ph = phi i64 [ %.0597, %925 ], [ %smax, %.loopexit652.loopexit ], [ %.0597, %825 ], [ %.0597, %444 ], [ %.4601, %397 ], [ %.0587, %._crit_edge.us ], [ 0, %.lr.ph663.split.epil ], [ 0, %.preheader649.preheader.loopexit767.unr-lcssa ]
  %.5592.ph.ph = phi i64 [ %.0587, %925 ], [ %.0587, %.loopexit652.loopexit ], [ %.0587, %825 ], [ %.0587, %444 ], [ %.2589, %397 ], [ %.0587, %._crit_edge.us ], [ %.0587, %.lr.ph663.split.epil ], [ %.0587, %.preheader649.preheader.loopexit767.unr-lcssa ]
  %.5582.ph.ph = phi i64 [ %.0577, %925 ], [ %.0577, %.loopexit652.loopexit ], [ %.0577, %825 ], [ %.0577, %444 ], [ %.2579, %397 ], [ %.0577, %._crit_edge.us ], [ %.0577, %.lr.ph663.split.epil ], [ %.0577, %.preheader649.preheader.loopexit767.unr-lcssa ]
  %.5.ph.ph = phi i64 [ %.0572, %925 ], [ %.0572, %.loopexit652.loopexit ], [ %.0572, %825 ], [ %.0572, %444 ], [ %.2574, %397 ], [ %.0572, %._crit_edge.us ], [ %.0572, %.lr.ph663.split.epil ], [ %.0572, %.preheader649.preheader.loopexit767.unr-lcssa ]
  %423 = getelementptr inbounds i8, ptr %0, i64 10256
  %424 = getelementptr inbounds i8, ptr %0, i64 33088
  %425 = getelementptr inbounds i8, ptr %0, i64 10248
  %426 = getelementptr inbounds i8, ptr %0, i64 10936
  %427 = getelementptr inbounds i8, ptr %0, i64 10937
  %428 = getelementptr inbounds i8, ptr %0, i64 80
  br label %.preheader649

.preheader649:                                    ; preds = %.preheader649.preheader, %913
  %429 = load i8, ptr %425, align 8, !tbaa !41, !range !57, !noundef !58
  %430 = trunc nuw i8 %429 to i1
  %431 = tail call noundef zeroext i1 @_ZN11alglib_impl15minslpiterationEPNS_11minslpstateEPNS_17smoothnessmonitorEbPNS_8ae_stateE(ptr noundef nonnull %423, ptr noundef nonnull %424, i1 noundef zeroext %430, ptr noundef %1)
  br i1 %431, label %.lr.ph710, label %._crit_edge711

.lr.ph710:                                        ; preds = %.preheader649, %927
  %432 = load i8, ptr %426, align 8, !tbaa !79, !range !57, !noundef !58
  %433 = trunc nuw i8 %432 to i1
  br i1 %433, label %434, label %910

434:                                              ; preds = %.lr.ph710
  %435 = getelementptr inbounds i8, ptr %0, i64 96
  %436 = load double, ptr %435, align 8, !tbaa !62
  %437 = tail call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %436, double noundef 0.000000e+00)
  br i1 %437, label %502, label %438

438:                                              ; preds = %434
  %439 = getelementptr inbounds i8, ptr %0, i64 10720
  %440 = getelementptr inbounds i8, ptr %0, i64 10568
  %441 = getelementptr inbounds i8, ptr %0, i64 10632
  %442 = getelementptr inbounds i8, ptr %0, i64 608
  tail call void @_ZN11alglib_implL14minnlc_unscaleEPNS_11minnlcstateEPNS_9ae_vectorES3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %439, ptr noundef nonnull %440, ptr noundef nonnull %441, ptr noundef nonnull %442, ptr noundef %1)
  %443 = getelementptr inbounds i8, ptr %0, i64 824
  store i8 1, ptr %443, align 8, !tbaa !66
  br label %959

444:                                              ; preds = %23
  %445 = getelementptr inbounds i8, ptr %0, i64 824
  store i8 0, ptr %445, align 8, !tbaa !66
  %446 = add i64 %.0572, %.0577
  %.not637677 = icmp slt i64 %446, 0
  br i1 %.not637677, label %.preheader649.preheader, label %.lr.ph680

.lr.ph680:                                        ; preds = %444
  %447 = getelementptr inbounds i8, ptr %0, i64 736
  %448 = getelementptr inbounds i8, ptr %0, i64 10840
  %.not638.not673 = icmp sgt i64 %.0587, 0
  %449 = getelementptr inbounds i8, ptr %0, i64 816
  %450 = getelementptr inbounds i8, ptr %0, i64 168
  %451 = getelementptr inbounds i8, ptr %0, i64 10920
  %452 = add nuw i64 %446, 1
  %xtraiter779 = and i64 %.0587, 1
  %453 = icmp eq i64 %.0587, 1
  %unroll_iter782 = and i64 %.0587, 9223372036854775806
  %lcmp.mod781.not = icmp eq i64 %xtraiter779, 0
  br label %454

454:                                              ; preds = %.lr.ph680, %._crit_edge
  %.11618678 = phi i64 [ 0, %.lr.ph680 ], [ %501, %._crit_edge ]
  %455 = load ptr, ptr %447, align 8, !tbaa !38
  %456 = getelementptr inbounds double, ptr %455, i64 %.11618678
  %457 = load double, ptr %456, align 8, !tbaa !40
  %458 = load ptr, ptr %448, align 8, !tbaa !38
  %459 = getelementptr inbounds double, ptr %458, i64 %.11618678
  store double %457, ptr %459, align 8, !tbaa !40
  br i1 %.not638.not673, label %.lr.ph675.preheader, label %._crit_edge

.lr.ph675.preheader:                              ; preds = %454
  br i1 %453, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph675

.lr.ph675:                                        ; preds = %.lr.ph675.preheader, %.lr.ph675
  %.9606674 = phi i64 [ %487, %.lr.ph675 ], [ 0, %.lr.ph675.preheader ]
  %niter783 = phi i64 [ %niter783.next.1, %.lr.ph675 ], [ 0, %.lr.ph675.preheader ]
  %460 = load ptr, ptr %449, align 8, !tbaa !38
  %461 = getelementptr inbounds ptr, ptr %460, i64 %.11618678
  %462 = load ptr, ptr %461, align 8, !tbaa !67
  %463 = getelementptr inbounds double, ptr %462, i64 %.9606674
  %464 = load double, ptr %463, align 8, !tbaa !40
  %465 = load ptr, ptr %450, align 8, !tbaa !38
  %466 = getelementptr inbounds double, ptr %465, i64 %.9606674
  %467 = load double, ptr %466, align 8, !tbaa !40
  %468 = fmul double %464, %467
  %469 = load ptr, ptr %451, align 8, !tbaa !38
  %470 = getelementptr inbounds ptr, ptr %469, i64 %.11618678
  %471 = load ptr, ptr %470, align 8, !tbaa !67
  %472 = getelementptr inbounds double, ptr %471, i64 %.9606674
  store double %468, ptr %472, align 8, !tbaa !40
  %473 = or disjoint i64 %.9606674, 1
  %474 = load ptr, ptr %449, align 8, !tbaa !38
  %475 = getelementptr inbounds ptr, ptr %474, i64 %.11618678
  %476 = load ptr, ptr %475, align 8, !tbaa !67
  %477 = getelementptr inbounds double, ptr %476, i64 %473
  %478 = load double, ptr %477, align 8, !tbaa !40
  %479 = load ptr, ptr %450, align 8, !tbaa !38
  %480 = getelementptr inbounds double, ptr %479, i64 %473
  %481 = load double, ptr %480, align 8, !tbaa !40
  %482 = fmul double %478, %481
  %483 = load ptr, ptr %451, align 8, !tbaa !38
  %484 = getelementptr inbounds ptr, ptr %483, i64 %.11618678
  %485 = load ptr, ptr %484, align 8, !tbaa !67
  %486 = getelementptr inbounds double, ptr %485, i64 %473
  store double %482, ptr %486, align 8, !tbaa !40
  %487 = add nuw nsw i64 %.9606674, 2
  %niter783.next.1 = add i64 %niter783, 2
  %niter783.ncmp.1 = icmp eq i64 %niter783.next.1, %unroll_iter782
  br i1 %niter783.ncmp.1, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph675, !llvm.loop !80

._crit_edge.loopexit.unr-lcssa:                   ; preds = %.lr.ph675, %.lr.ph675.preheader
  %.9606674.unr = phi i64 [ 0, %.lr.ph675.preheader ], [ %487, %.lr.ph675 ]
  br i1 %lcmp.mod781.not, label %._crit_edge, label %.lr.ph675.epil

.lr.ph675.epil:                                   ; preds = %._crit_edge.loopexit.unr-lcssa
  %488 = load ptr, ptr %449, align 8, !tbaa !38
  %489 = getelementptr inbounds ptr, ptr %488, i64 %.11618678
  %490 = load ptr, ptr %489, align 8, !tbaa !67
  %491 = getelementptr inbounds double, ptr %490, i64 %.9606674.unr
  %492 = load double, ptr %491, align 8, !tbaa !40
  %493 = load ptr, ptr %450, align 8, !tbaa !38
  %494 = getelementptr inbounds double, ptr %493, i64 %.9606674.unr
  %495 = load double, ptr %494, align 8, !tbaa !40
  %496 = fmul double %492, %495
  %497 = load ptr, ptr %451, align 8, !tbaa !38
  %498 = getelementptr inbounds ptr, ptr %497, i64 %.11618678
  %499 = load ptr, ptr %498, align 8, !tbaa !67
  %500 = getelementptr inbounds double, ptr %499, i64 %.9606674.unr
  store double %496, ptr %500, align 8, !tbaa !40
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph675.epil, %._crit_edge.loopexit.unr-lcssa, %454
  %501 = add nuw i64 %.11618678, 1
  %exitcond744.not = icmp eq i64 %.11618678, %446
  br i1 %exitcond744.not, label %.loopexit652.loopexit, label %454, !llvm.loop !81

502:                                              ; preds = %434
  %503 = getelementptr inbounds i8, ptr %0, i64 824
  store i8 0, ptr %503, align 8, !tbaa !66
  %504 = getelementptr inbounds i8, ptr %0, i64 825
  store i8 1, ptr %504, align 1, !tbaa !72
  %505 = getelementptr inbounds i8, ptr %0, i64 10720
  %506 = getelementptr inbounds i8, ptr %0, i64 10568
  %507 = getelementptr inbounds i8, ptr %0, i64 10632
  %508 = getelementptr inbounds i8, ptr %0, i64 1960
  tail call void @_ZN11alglib_implL14minnlc_unscaleEPNS_11minnlcstateEPNS_9ae_vectorES3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %505, ptr noundef nonnull %506, ptr noundef nonnull %507, ptr noundef nonnull %508, ptr noundef %1)
  br label %509

509:                                              ; preds = %.loopexit, %502
  %.12619 = phi i64 [ %.10617.ph.ph, %502 ], [ %.16623, %.loopexit ]
  %.10 = phi i64 [ 0, %502 ], [ %818, %.loopexit ]
  %.6593 = phi i64 [ %.5592.ph.ph, %502 ], [ %.7594, %.loopexit ]
  %.6583 = phi i64 [ %.5582.ph.ph, %502 ], [ %.7584, %.loopexit ]
  %.6 = phi i64 [ %.5.ph.ph, %502 ], [ %.7, %.loopexit ]
  %.1568 = phi double [ %.0567, %502 ], [ %.3570, %.loopexit ]
  %.1 = phi double [ %.0, %502 ], [ %.3, %.loopexit ]
  %510 = add nsw i64 %.6593, -1
  %.not644 = icmp slt i64 %.10, %.6593
  br i1 %.not644, label %511, label %819

511:                                              ; preds = %509
  %512 = getelementptr inbounds i8, ptr %0, i64 2016
  %513 = load ptr, ptr %512, align 8, !tbaa !38
  %514 = getelementptr inbounds double, ptr %513, i64 %.10
  %515 = load double, ptr %514, align 8, !tbaa !40
  %516 = getelementptr inbounds i8, ptr %0, i64 168
  %517 = load ptr, ptr %516, align 8, !tbaa !38
  %518 = getelementptr inbounds double, ptr %517, i64 %.10
  %519 = load double, ptr %518, align 8, !tbaa !40
  %520 = getelementptr inbounds i8, ptr %0, i64 96
  %521 = load double, ptr %520, align 8, !tbaa !62
  %522 = fneg double %519
  %523 = tail call double @llvm.fmuladd.f64(double %522, double %521, double %515)
  %524 = tail call double @llvm.fmuladd.f64(double %519, double %521, double %515)
  %525 = getelementptr inbounds i8, ptr %0, i64 360
  %526 = load ptr, ptr %525, align 8, !tbaa !38
  %527 = getelementptr inbounds i8, ptr %526, i64 %.10
  %528 = load i8, ptr %527, align 1, !tbaa !56, !range !57, !noundef !58
  %529 = trunc nuw i8 %528 to i1
  br i1 %529, label %530, label %536

530:                                              ; preds = %511
  %531 = getelementptr inbounds i8, ptr %0, i64 232
  %532 = load ptr, ptr %531, align 8, !tbaa !38
  %533 = getelementptr inbounds double, ptr %532, i64 %.10
  %534 = load double, ptr %533, align 8, !tbaa !40
  %535 = tail call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %523, double noundef %534)
  br i1 %535, label %548, label %536

536:                                              ; preds = %530, %511
  %537 = getelementptr inbounds i8, ptr %0, i64 424
  %538 = load ptr, ptr %537, align 8, !tbaa !38
  %539 = getelementptr inbounds i8, ptr %538, i64 %.10
  %540 = load i8, ptr %539, align 1, !tbaa !56, !range !57, !noundef !58
  %541 = trunc nuw i8 %540 to i1
  br i1 %541, label %542, label %672

542:                                              ; preds = %536
  %543 = getelementptr inbounds i8, ptr %0, i64 296
  %544 = load ptr, ptr %543, align 8, !tbaa !38
  %545 = getelementptr inbounds double, ptr %544, i64 %.10
  %546 = load double, ptr %545, align 8, !tbaa !40
  %547 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %524, double noundef %546)
  br i1 %547, label %548, label %672

548:                                              ; preds = %542, %530
  %549 = load ptr, ptr %525, align 8, !tbaa !38
  %550 = getelementptr inbounds i8, ptr %549, i64 %.10
  %551 = load i8, ptr %550, align 1, !tbaa !56, !range !57, !noundef !58
  %552 = trunc nuw i8 %551 to i1
  br i1 %552, label %553, label %563

553:                                              ; preds = %548
  %554 = getelementptr inbounds i8, ptr %0, i64 232
  %555 = load ptr, ptr %554, align 8, !tbaa !38
  %556 = getelementptr inbounds double, ptr %555, i64 %.10
  %557 = load double, ptr %556, align 8, !tbaa !40
  %558 = tail call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %523, double noundef %557)
  br i1 %558, label %559, label %563

559:                                              ; preds = %553
  %560 = load ptr, ptr %554, align 8, !tbaa !38
  %561 = getelementptr inbounds double, ptr %560, i64 %.10
  %562 = load double, ptr %561, align 8, !tbaa !40
  br label %563

563:                                              ; preds = %559, %553, %548
  %.2569 = phi double [ %562, %559 ], [ %523, %553 ], [ %523, %548 ]
  %564 = getelementptr inbounds i8, ptr %0, i64 424
  %565 = load ptr, ptr %564, align 8, !tbaa !38
  %566 = getelementptr inbounds i8, ptr %565, i64 %.10
  %567 = load i8, ptr %566, align 1, !tbaa !56, !range !57, !noundef !58
  %568 = trunc nuw i8 %567 to i1
  br i1 %568, label %569, label %579

569:                                              ; preds = %563
  %570 = getelementptr inbounds i8, ptr %0, i64 296
  %571 = load ptr, ptr %570, align 8, !tbaa !38
  %572 = getelementptr inbounds double, ptr %571, i64 %.10
  %573 = load double, ptr %572, align 8, !tbaa !40
  %574 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %524, double noundef %573)
  br i1 %574, label %575, label %579

575:                                              ; preds = %569
  %576 = load ptr, ptr %570, align 8, !tbaa !38
  %577 = getelementptr inbounds double, ptr %576, i64 %.10
  %578 = load double, ptr %577, align 8, !tbaa !40
  br label %579

579:                                              ; preds = %575, %569, %563
  %.2 = phi double [ %578, %575 ], [ %524, %569 ], [ %524, %563 ]
  %580 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %.2569, double noundef %.2)
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %580, ptr noundef nonnull @.str.446, ptr noundef %1)
  %581 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %.2569, double noundef %.2)
  br i1 %581, label %.preheader648, label %609

.preheader648:                                    ; preds = %579
  %582 = add i64 %.6, %.6583
  %.not645712 = icmp slt i64 %582, 0
  br i1 %.not645712, label %.loopexit, label %.lr.ph714

.lr.ph714:                                        ; preds = %.preheader648
  %583 = getelementptr inbounds i8, ptr %0, i64 816
  %584 = add nuw i64 %582, 1
  %585 = add i64 %.6, %.6583
  %586 = add i64 %585, 1
  %xtraiter796 = and i64 %586, 3
  %587 = icmp ult i64 %582, 3
  br i1 %587, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph714.new

.lr.ph714.new:                                    ; preds = %.lr.ph714
  %unroll_iter799 = and i64 %586, -4
  br label %588

588:                                              ; preds = %588, %.lr.ph714.new
  %.13620713 = phi i64 [ 0, %.lr.ph714.new ], [ %608, %588 ]
  %niter800 = phi i64 [ 0, %.lr.ph714.new ], [ %niter800.next.3, %588 ]
  %589 = load ptr, ptr %583, align 8, !tbaa !38
  %590 = getelementptr inbounds ptr, ptr %589, i64 %.13620713
  %591 = load ptr, ptr %590, align 8, !tbaa !67
  %592 = getelementptr inbounds double, ptr %591, i64 %.10
  store double 0.000000e+00, ptr %592, align 8, !tbaa !40
  %593 = or disjoint i64 %.13620713, 1
  %594 = load ptr, ptr %583, align 8, !tbaa !38
  %595 = getelementptr inbounds ptr, ptr %594, i64 %593
  %596 = load ptr, ptr %595, align 8, !tbaa !67
  %597 = getelementptr inbounds double, ptr %596, i64 %.10
  store double 0.000000e+00, ptr %597, align 8, !tbaa !40
  %598 = or disjoint i64 %.13620713, 2
  %599 = load ptr, ptr %583, align 8, !tbaa !38
  %600 = getelementptr inbounds ptr, ptr %599, i64 %598
  %601 = load ptr, ptr %600, align 8, !tbaa !67
  %602 = getelementptr inbounds double, ptr %601, i64 %.10
  store double 0.000000e+00, ptr %602, align 8, !tbaa !40
  %603 = or disjoint i64 %.13620713, 3
  %604 = load ptr, ptr %583, align 8, !tbaa !38
  %605 = getelementptr inbounds ptr, ptr %604, i64 %603
  %606 = load ptr, ptr %605, align 8, !tbaa !67
  %607 = getelementptr inbounds double, ptr %606, i64 %.10
  store double 0.000000e+00, ptr %607, align 8, !tbaa !40
  %608 = add nuw i64 %.13620713, 4
  %niter800.next.3 = add i64 %niter800, 4
  %niter800.ncmp.3 = icmp eq i64 %niter800.next.3, %unroll_iter799
  br i1 %niter800.ncmp.3, label %.loopexit.loopexit.unr-lcssa, label %588, !llvm.loop !82

609:                                              ; preds = %579
  %610 = getelementptr inbounds i8, ptr %0, i64 664
  %611 = load ptr, ptr %610, align 8, !tbaa !38
  %612 = load ptr, ptr %512, align 8, !tbaa !38
  %613 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %510)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %611, i64 noundef 1, ptr noundef %612, i64 noundef 1, i64 noundef %613)
  %614 = load ptr, ptr %610, align 8, !tbaa !38
  %615 = getelementptr inbounds double, ptr %614, i64 %.10
  store double %.2569, ptr %615, align 8, !tbaa !40
  br label %959

616:                                              ; preds = %23
  %617 = getelementptr inbounds i8, ptr %0, i64 2272
  %618 = load ptr, ptr %617, align 8, !tbaa !38
  %619 = getelementptr inbounds i8, ptr %0, i64 736
  %620 = load ptr, ptr %619, align 8, !tbaa !38
  %621 = add nsw i64 %.0572, %.0577
  %622 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %621)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %618, i64 noundef 1, ptr noundef %620, i64 noundef 1, i64 noundef %622)
  %623 = getelementptr inbounds i8, ptr %0, i64 664
  %624 = load ptr, ptr %623, align 8, !tbaa !38
  %625 = getelementptr inbounds i8, ptr %0, i64 2016
  %626 = load ptr, ptr %625, align 8, !tbaa !38
  %627 = add nsw i64 %.0587, -1
  %628 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %627)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %624, i64 noundef 1, ptr noundef %626, i64 noundef 1, i64 noundef %628)
  %629 = load ptr, ptr %623, align 8, !tbaa !38
  %630 = getelementptr inbounds double, ptr %629, i64 %.0597
  store double %.0, ptr %630, align 8, !tbaa !40
  br label %959

631:                                              ; preds = %23
  %632 = getelementptr inbounds i8, ptr %0, i64 2336
  %633 = load ptr, ptr %632, align 8, !tbaa !38
  %634 = getelementptr inbounds i8, ptr %0, i64 736
  %635 = load ptr, ptr %634, align 8, !tbaa !38
  %636 = add i64 %.0572, %.0577
  %637 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %636)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %633, i64 noundef 1, ptr noundef %635, i64 noundef 1, i64 noundef %637)
  %.not636669 = icmp slt i64 %636, 0
  br i1 %.not636669, label %.loopexit, label %.lr.ph671

.lr.ph671:                                        ; preds = %631
  %638 = getelementptr inbounds i8, ptr %0, i64 2272
  %639 = fsub double %.0, %.0567
  %640 = getelementptr inbounds i8, ptr %0, i64 816
  %641 = add nuw i64 %636, 1
  %642 = add i64 %.0572, %.0577
  %643 = icmp eq i64 %636, 0
  br i1 %643, label %.loopexit.loopexit765.unr-lcssa, label %.lr.ph671.new

.lr.ph671.new:                                    ; preds = %.lr.ph671
  %644 = add i64 %642, 1
  %unroll_iter777 = and i64 %644, -2
  br label %645

645:                                              ; preds = %645, %.lr.ph671.new
  %.14621670 = phi i64 [ 0, %.lr.ph671.new ], [ %671, %645 ]
  %niter778 = phi i64 [ 0, %.lr.ph671.new ], [ %niter778.next.1, %645 ]
  %646 = load ptr, ptr %632, align 8, !tbaa !38
  %647 = getelementptr inbounds double, ptr %646, i64 %.14621670
  %648 = load double, ptr %647, align 8, !tbaa !40
  %649 = load ptr, ptr %638, align 8, !tbaa !38
  %650 = getelementptr inbounds double, ptr %649, i64 %.14621670
  %651 = load double, ptr %650, align 8, !tbaa !40
  %652 = fsub double %648, %651
  %653 = fdiv double %652, %639
  %654 = load ptr, ptr %640, align 8, !tbaa !38
  %655 = getelementptr inbounds ptr, ptr %654, i64 %.14621670
  %656 = load ptr, ptr %655, align 8, !tbaa !67
  %657 = getelementptr inbounds double, ptr %656, i64 %.0597
  store double %653, ptr %657, align 8, !tbaa !40
  %658 = or disjoint i64 %.14621670, 1
  %659 = load ptr, ptr %632, align 8, !tbaa !38
  %660 = getelementptr inbounds double, ptr %659, i64 %658
  %661 = load double, ptr %660, align 8, !tbaa !40
  %662 = load ptr, ptr %638, align 8, !tbaa !38
  %663 = getelementptr inbounds double, ptr %662, i64 %658
  %664 = load double, ptr %663, align 8, !tbaa !40
  %665 = fsub double %661, %664
  %666 = fdiv double %665, %639
  %667 = load ptr, ptr %640, align 8, !tbaa !38
  %668 = getelementptr inbounds ptr, ptr %667, i64 %658
  %669 = load ptr, ptr %668, align 8, !tbaa !67
  %670 = getelementptr inbounds double, ptr %669, i64 %.0597
  store double %666, ptr %670, align 8, !tbaa !40
  %671 = add nuw i64 %.14621670, 2
  %niter778.next.1 = add i64 %niter778, 2
  %niter778.ncmp.1 = icmp eq i64 %niter778.next.1, %unroll_iter777
  br i1 %niter778.ncmp.1, label %.loopexit.loopexit765.unr-lcssa, label %645, !llvm.loop !83

672:                                              ; preds = %536, %542
  %673 = getelementptr inbounds i8, ptr %0, i64 664
  %674 = load ptr, ptr %673, align 8, !tbaa !38
  %675 = load ptr, ptr %512, align 8, !tbaa !38
  %676 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %510)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %674, i64 noundef 1, ptr noundef %675, i64 noundef 1, i64 noundef %676)
  %677 = load ptr, ptr %673, align 8, !tbaa !38
  %678 = getelementptr inbounds double, ptr %677, i64 %.10
  %679 = load double, ptr %678, align 8, !tbaa !40
  %680 = load ptr, ptr %516, align 8, !tbaa !38
  %681 = getelementptr inbounds double, ptr %680, i64 %.10
  %682 = load double, ptr %681, align 8, !tbaa !40
  %683 = load double, ptr %520, align 8, !tbaa !62
  %684 = fneg double %682
  %685 = tail call double @llvm.fmuladd.f64(double %684, double %683, double %679)
  store double %685, ptr %678, align 8, !tbaa !40
  br label %959

686:                                              ; preds = %23
  %687 = getelementptr inbounds i8, ptr %0, i64 2208
  %688 = load ptr, ptr %687, align 8, !tbaa !38
  %689 = getelementptr inbounds i8, ptr %0, i64 736
  %690 = load ptr, ptr %689, align 8, !tbaa !38
  %691 = add nsw i64 %.0572, %.0577
  %692 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %691)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %688, i64 noundef 1, ptr noundef %690, i64 noundef 1, i64 noundef %692)
  %693 = getelementptr inbounds i8, ptr %0, i64 664
  %694 = load ptr, ptr %693, align 8, !tbaa !38
  %695 = getelementptr inbounds i8, ptr %0, i64 2016
  %696 = load ptr, ptr %695, align 8, !tbaa !38
  %697 = add nsw i64 %.0587, -1
  %698 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %697)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %694, i64 noundef 1, ptr noundef %696, i64 noundef 1, i64 noundef %698)
  %699 = load ptr, ptr %693, align 8, !tbaa !38
  %700 = getelementptr inbounds double, ptr %699, i64 %.0597
  %701 = load double, ptr %700, align 8, !tbaa !40
  %702 = getelementptr inbounds i8, ptr %0, i64 168
  %703 = load ptr, ptr %702, align 8, !tbaa !38
  %704 = getelementptr inbounds double, ptr %703, i64 %.0597
  %705 = load double, ptr %704, align 8, !tbaa !40
  %706 = getelementptr inbounds i8, ptr %0, i64 96
  %707 = load double, ptr %706, align 8, !tbaa !62
  %708 = fmul double %705, -5.000000e-01
  %709 = tail call double @llvm.fmuladd.f64(double %708, double %707, double %701)
  store double %709, ptr %700, align 8, !tbaa !40
  br label %959

710:                                              ; preds = %23
  %711 = getelementptr inbounds i8, ptr %0, i64 2272
  %712 = load ptr, ptr %711, align 8, !tbaa !38
  %713 = getelementptr inbounds i8, ptr %0, i64 736
  %714 = load ptr, ptr %713, align 8, !tbaa !38
  %715 = add nsw i64 %.0572, %.0577
  %716 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %715)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %712, i64 noundef 1, ptr noundef %714, i64 noundef 1, i64 noundef %716)
  %717 = getelementptr inbounds i8, ptr %0, i64 664
  %718 = load ptr, ptr %717, align 8, !tbaa !38
  %719 = getelementptr inbounds i8, ptr %0, i64 2016
  %720 = load ptr, ptr %719, align 8, !tbaa !38
  %721 = add nsw i64 %.0587, -1
  %722 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %721)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %718, i64 noundef 1, ptr noundef %720, i64 noundef 1, i64 noundef %722)
  %723 = load ptr, ptr %717, align 8, !tbaa !38
  %724 = getelementptr inbounds double, ptr %723, i64 %.0597
  %725 = load double, ptr %724, align 8, !tbaa !40
  %726 = getelementptr inbounds i8, ptr %0, i64 168
  %727 = load ptr, ptr %726, align 8, !tbaa !38
  %728 = getelementptr inbounds double, ptr %727, i64 %.0597
  %729 = load double, ptr %728, align 8, !tbaa !40
  %730 = fmul double %729, 5.000000e-01
  %731 = getelementptr inbounds i8, ptr %0, i64 96
  %732 = load double, ptr %731, align 8, !tbaa !62
  %733 = tail call double @llvm.fmuladd.f64(double %730, double %732, double %725)
  store double %733, ptr %724, align 8, !tbaa !40
  br label %959

734:                                              ; preds = %23
  %735 = getelementptr inbounds i8, ptr %0, i64 2336
  %736 = load ptr, ptr %735, align 8, !tbaa !38
  %737 = getelementptr inbounds i8, ptr %0, i64 736
  %738 = load ptr, ptr %737, align 8, !tbaa !38
  %739 = add nsw i64 %.0572, %.0577
  %740 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %739)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %736, i64 noundef 1, ptr noundef %738, i64 noundef 1, i64 noundef %740)
  %741 = getelementptr inbounds i8, ptr %0, i64 664
  %742 = load ptr, ptr %741, align 8, !tbaa !38
  %743 = getelementptr inbounds i8, ptr %0, i64 2016
  %744 = load ptr, ptr %743, align 8, !tbaa !38
  %745 = add nsw i64 %.0587, -1
  %746 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %745)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %742, i64 noundef 1, ptr noundef %744, i64 noundef 1, i64 noundef %746)
  %747 = load ptr, ptr %741, align 8, !tbaa !38
  %748 = getelementptr inbounds double, ptr %747, i64 %.0597
  %749 = load double, ptr %748, align 8, !tbaa !40
  %750 = getelementptr inbounds i8, ptr %0, i64 168
  %751 = load ptr, ptr %750, align 8, !tbaa !38
  %752 = getelementptr inbounds double, ptr %751, i64 %.0597
  %753 = load double, ptr %752, align 8, !tbaa !40
  %754 = getelementptr inbounds i8, ptr %0, i64 96
  %755 = load double, ptr %754, align 8, !tbaa !62
  %756 = tail call double @llvm.fmuladd.f64(double %753, double %755, double %749)
  store double %756, ptr %748, align 8, !tbaa !40
  br label %959

757:                                              ; preds = %23
  %758 = getelementptr inbounds i8, ptr %0, i64 2400
  %759 = load ptr, ptr %758, align 8, !tbaa !38
  %760 = getelementptr inbounds i8, ptr %0, i64 736
  %761 = load ptr, ptr %760, align 8, !tbaa !38
  %762 = add i64 %.0572, %.0577
  %763 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %762)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %759, i64 noundef 1, ptr noundef %761, i64 noundef 1, i64 noundef %763)
  %.not635667 = icmp slt i64 %762, 0
  br i1 %.not635667, label %.loopexit, label %.lr.ph

.lr.ph:                                           ; preds = %757
  %764 = getelementptr inbounds i8, ptr %0, i64 2336
  %765 = getelementptr inbounds i8, ptr %0, i64 2272
  %766 = getelementptr inbounds i8, ptr %0, i64 2208
  %767 = getelementptr inbounds i8, ptr %0, i64 96
  %768 = getelementptr inbounds i8, ptr %0, i64 168
  %769 = getelementptr inbounds i8, ptr %0, i64 816
  %770 = add nuw i64 %762, 1
  br label %771

771:                                              ; preds = %.lr.ph, %771
  %.15622668 = phi i64 [ 0, %.lr.ph ], [ %799, %771 ]
  %772 = load ptr, ptr %764, align 8, !tbaa !38
  %773 = getelementptr inbounds double, ptr %772, i64 %.15622668
  %774 = load double, ptr %773, align 8, !tbaa !40
  %775 = load ptr, ptr %765, align 8, !tbaa !38
  %776 = getelementptr inbounds double, ptr %775, i64 %.15622668
  %777 = load double, ptr %776, align 8, !tbaa !40
  %778 = fsub double %774, %777
  %779 = load ptr, ptr %758, align 8, !tbaa !38
  %780 = getelementptr inbounds double, ptr %779, i64 %.15622668
  %781 = load double, ptr %780, align 8, !tbaa !40
  %782 = load ptr, ptr %766, align 8, !tbaa !38
  %783 = getelementptr inbounds double, ptr %782, i64 %.15622668
  %784 = load double, ptr %783, align 8, !tbaa !40
  %785 = fsub double %781, %784
  %786 = fneg double %785
  %787 = tail call double @llvm.fmuladd.f64(double %778, double 8.000000e+00, double %786)
  %788 = load double, ptr %767, align 8, !tbaa !62
  %789 = fmul double %788, 6.000000e+00
  %790 = load ptr, ptr %768, align 8, !tbaa !38
  %791 = getelementptr inbounds double, ptr %790, i64 %.0597
  %792 = load double, ptr %791, align 8, !tbaa !40
  %793 = fmul double %789, %792
  %794 = fdiv double %787, %793
  %795 = load ptr, ptr %769, align 8, !tbaa !38
  %796 = getelementptr inbounds ptr, ptr %795, i64 %.15622668
  %797 = load ptr, ptr %796, align 8, !tbaa !67
  %798 = getelementptr inbounds double, ptr %797, i64 %.0597
  store double %794, ptr %798, align 8, !tbaa !40
  %799 = add nuw i64 %.15622668, 1
  %exitcond741.not = icmp eq i64 %.15622668, %762
  br i1 %exitcond741.not, label %.loopexit, label %771, !llvm.loop !84

.loopexit.loopexit.unr-lcssa:                     ; preds = %588, %.lr.ph714
  %.13620713.unr = phi i64 [ 0, %.lr.ph714 ], [ %608, %588 ]
  %lcmp.mod798.not = icmp eq i64 %xtraiter796, 0
  br i1 %lcmp.mod798.not, label %.loopexit, label %.epil.preheader795

.epil.preheader795:                               ; preds = %.loopexit.loopexit.unr-lcssa, %.epil.preheader795
  %.13620713.epil = phi i64 [ %804, %.epil.preheader795 ], [ %.13620713.unr, %.loopexit.loopexit.unr-lcssa ]
  %epil.iter797 = phi i64 [ %epil.iter797.next, %.epil.preheader795 ], [ 0, %.loopexit.loopexit.unr-lcssa ]
  %800 = load ptr, ptr %583, align 8, !tbaa !38
  %801 = getelementptr inbounds ptr, ptr %800, i64 %.13620713.epil
  %802 = load ptr, ptr %801, align 8, !tbaa !67
  %803 = getelementptr inbounds double, ptr %802, i64 %.10
  store double 0.000000e+00, ptr %803, align 8, !tbaa !40
  %804 = add nuw i64 %.13620713.epil, 1
  %epil.iter797.next = add i64 %epil.iter797, 1
  %epil.iter797.cmp.not = icmp eq i64 %epil.iter797.next, %xtraiter796
  br i1 %epil.iter797.cmp.not, label %.loopexit, label %.epil.preheader795, !llvm.loop !85

.loopexit.loopexit765.unr-lcssa:                  ; preds = %645, %.lr.ph671
  %.14621670.unr = phi i64 [ 0, %.lr.ph671 ], [ %671, %645 ]
  %805 = and i64 %642, 1
  %lcmp.mod776.not.not = icmp eq i64 %805, 0
  br i1 %lcmp.mod776.not.not, label %.loopexit.loopexit765.epilog-lcssa, label %.loopexit

.loopexit.loopexit765.epilog-lcssa:               ; preds = %.loopexit.loopexit765.unr-lcssa
  %806 = load ptr, ptr %632, align 8, !tbaa !38
  %807 = getelementptr inbounds double, ptr %806, i64 %.14621670.unr
  %808 = load double, ptr %807, align 8, !tbaa !40
  %809 = load ptr, ptr %638, align 8, !tbaa !38
  %810 = getelementptr inbounds double, ptr %809, i64 %.14621670.unr
  %811 = load double, ptr %810, align 8, !tbaa !40
  %812 = fsub double %808, %811
  %813 = fdiv double %812, %639
  %814 = load ptr, ptr %640, align 8, !tbaa !38
  %815 = getelementptr inbounds ptr, ptr %814, i64 %.14621670.unr
  %816 = load ptr, ptr %815, align 8, !tbaa !67
  %817 = getelementptr inbounds double, ptr %816, i64 %.0597
  store double %813, ptr %817, align 8, !tbaa !40
  br label %.loopexit

.loopexit:                                        ; preds = %771, %.loopexit.loopexit765.epilog-lcssa, %.loopexit.loopexit765.unr-lcssa, %.loopexit.loopexit.unr-lcssa, %.epil.preheader795, %757, %631, %.preheader648
  %.16623 = phi i64 [ 0, %.preheader648 ], [ 0, %631 ], [ 0, %757 ], [ %584, %.epil.preheader795 ], [ %584, %.loopexit.loopexit.unr-lcssa ], [ %641, %.loopexit.loopexit765.unr-lcssa ], [ %641, %.loopexit.loopexit765.epilog-lcssa ], [ %770, %771 ]
  %.11 = phi i64 [ %.10, %.preheader648 ], [ %.0597, %631 ], [ %.0597, %757 ], [ %.10, %.epil.preheader795 ], [ %.10, %.loopexit.loopexit.unr-lcssa ], [ %.0597, %.loopexit.loopexit765.unr-lcssa ], [ %.0597, %.loopexit.loopexit765.epilog-lcssa ], [ %.0597, %771 ]
  %.7594 = phi i64 [ %.6593, %.preheader648 ], [ %.0587, %631 ], [ %.0587, %757 ], [ %.6593, %.epil.preheader795 ], [ %.6593, %.loopexit.loopexit.unr-lcssa ], [ %.0587, %.loopexit.loopexit765.unr-lcssa ], [ %.0587, %.loopexit.loopexit765.epilog-lcssa ], [ %.0587, %771 ]
  %.7584 = phi i64 [ %.6583, %.preheader648 ], [ %.0577, %631 ], [ %.0577, %757 ], [ %.6583, %.epil.preheader795 ], [ %.6583, %.loopexit.loopexit.unr-lcssa ], [ %.0577, %.loopexit.loopexit765.unr-lcssa ], [ %.0577, %.loopexit.loopexit765.epilog-lcssa ], [ %.0577, %771 ]
  %.7 = phi i64 [ %.6, %.preheader648 ], [ %.0572, %631 ], [ %.0572, %757 ], [ %.6, %.epil.preheader795 ], [ %.6, %.loopexit.loopexit.unr-lcssa ], [ %.0572, %.loopexit.loopexit765.unr-lcssa ], [ %.0572, %.loopexit.loopexit765.epilog-lcssa ], [ %.0572, %771 ]
  %.3570 = phi double [ %.2569, %.preheader648 ], [ %.0567, %631 ], [ %.0567, %757 ], [ %.2569, %.epil.preheader795 ], [ %.2569, %.loopexit.loopexit.unr-lcssa ], [ %.0567, %.loopexit.loopexit765.unr-lcssa ], [ %.0567, %.loopexit.loopexit765.epilog-lcssa ], [ %.0567, %771 ]
  %.3 = phi double [ %.2, %.preheader648 ], [ %.0, %631 ], [ %.0, %757 ], [ %.2, %.epil.preheader795 ], [ %.2, %.loopexit.loopexit.unr-lcssa ], [ %.0, %.loopexit.loopexit765.unr-lcssa ], [ %.0, %.loopexit.loopexit765.epilog-lcssa ], [ %.0, %771 ]
  %818 = add nsw i64 %.11, 1
  br label %509

819:                                              ; preds = %509
  %820 = getelementptr inbounds i8, ptr %0, i64 664
  %821 = load ptr, ptr %820, align 8, !tbaa !38
  %822 = getelementptr inbounds i8, ptr %0, i64 2016
  %823 = load ptr, ptr %822, align 8, !tbaa !38
  %824 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %510)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %821, i64 noundef 1, ptr noundef %823, i64 noundef 1, i64 noundef %824)
  br label %959

825:                                              ; preds = %23
  %826 = getelementptr inbounds i8, ptr %0, i64 825
  store i8 0, ptr %826, align 1, !tbaa !72
  %827 = getelementptr inbounds i8, ptr %0, i64 824
  store i8 1, ptr %827, align 8, !tbaa !66
  %828 = add i64 %.0572, %.0577
  %.not660 = icmp slt i64 %828, 0
  br i1 %.not660, label %.preheader649.preheader, label %.lr.ph663

.lr.ph663:                                        ; preds = %825
  %829 = getelementptr inbounds i8, ptr %0, i64 736
  %830 = getelementptr inbounds i8, ptr %0, i64 10840
  %.not634.not658 = icmp sgt i64 %.0587, 0
  %831 = getelementptr inbounds i8, ptr %0, i64 816
  %832 = getelementptr inbounds i8, ptr %0, i64 168
  %833 = getelementptr inbounds i8, ptr %0, i64 10920
  %834 = add nuw i64 %828, 1
  br i1 %.not634.not658, label %.lr.ph.us.preheader, label %.lr.ph663.split.preheader

.lr.ph663.split.preheader:                        ; preds = %.lr.ph663
  %835 = add i64 %.0572, %.0577
  %836 = add i64 %835, 1
  %xtraiter = and i64 %836, 3
  %837 = icmp ult i64 %828, 3
  br i1 %837, label %.preheader649.preheader.loopexit767.unr-lcssa, label %.lr.ph663.split.preheader.new

.lr.ph663.split.preheader.new:                    ; preds = %.lr.ph663.split.preheader
  %unroll_iter = and i64 %836, -4
  br label %.lr.ph663.split

.lr.ph.us.preheader:                              ; preds = %.lr.ph663
  %xtraiter768 = and i64 %.0587, 1
  %838 = icmp eq i64 %.0587, 1
  %unroll_iter771 = and i64 %.0587, 9223372036854775806
  %lcmp.mod770.not = icmp eq i64 %xtraiter768, 0
  br label %.lr.ph.us

.lr.ph.us:                                        ; preds = %.lr.ph.us.preheader, %._crit_edge.us
  %.17661.us = phi i64 [ %885, %._crit_edge.us ], [ 0, %.lr.ph.us.preheader ]
  %839 = load ptr, ptr %829, align 8, !tbaa !38
  %840 = getelementptr inbounds double, ptr %839, i64 %.17661.us
  %841 = load double, ptr %840, align 8, !tbaa !40
  %842 = load ptr, ptr %830, align 8, !tbaa !38
  %843 = getelementptr inbounds double, ptr %842, i64 %.17661.us
  store double %841, ptr %843, align 8, !tbaa !40
  br i1 %838, label %._crit_edge.us.unr-lcssa, label %.lr.ph.us.new

.lr.ph.us.new:                                    ; preds = %.lr.ph.us, %.lr.ph.us.new
  %.13659.us = phi i64 [ %871, %.lr.ph.us.new ], [ 0, %.lr.ph.us ]
  %niter772 = phi i64 [ %niter772.next.1, %.lr.ph.us.new ], [ 0, %.lr.ph.us ]
  %844 = load ptr, ptr %831, align 8, !tbaa !38
  %845 = getelementptr inbounds ptr, ptr %844, i64 %.17661.us
  %846 = load ptr, ptr %845, align 8, !tbaa !67
  %847 = getelementptr inbounds double, ptr %846, i64 %.13659.us
  %848 = load double, ptr %847, align 8, !tbaa !40
  %849 = load ptr, ptr %832, align 8, !tbaa !38
  %850 = getelementptr inbounds double, ptr %849, i64 %.13659.us
  %851 = load double, ptr %850, align 8, !tbaa !40
  %852 = fmul double %848, %851
  %853 = load ptr, ptr %833, align 8, !tbaa !38
  %854 = getelementptr inbounds ptr, ptr %853, i64 %.17661.us
  %855 = load ptr, ptr %854, align 8, !tbaa !67
  %856 = getelementptr inbounds double, ptr %855, i64 %.13659.us
  store double %852, ptr %856, align 8, !tbaa !40
  %857 = or disjoint i64 %.13659.us, 1
  %858 = load ptr, ptr %831, align 8, !tbaa !38
  %859 = getelementptr inbounds ptr, ptr %858, i64 %.17661.us
  %860 = load ptr, ptr %859, align 8, !tbaa !67
  %861 = getelementptr inbounds double, ptr %860, i64 %857
  %862 = load double, ptr %861, align 8, !tbaa !40
  %863 = load ptr, ptr %832, align 8, !tbaa !38
  %864 = getelementptr inbounds double, ptr %863, i64 %857
  %865 = load double, ptr %864, align 8, !tbaa !40
  %866 = fmul double %862, %865
  %867 = load ptr, ptr %833, align 8, !tbaa !38
  %868 = getelementptr inbounds ptr, ptr %867, i64 %.17661.us
  %869 = load ptr, ptr %868, align 8, !tbaa !67
  %870 = getelementptr inbounds double, ptr %869, i64 %857
  store double %866, ptr %870, align 8, !tbaa !40
  %871 = add nuw nsw i64 %.13659.us, 2
  %niter772.next.1 = add i64 %niter772, 2
  %niter772.ncmp.1 = icmp eq i64 %niter772.next.1, %unroll_iter771
  br i1 %niter772.ncmp.1, label %._crit_edge.us.unr-lcssa, label %.lr.ph.us.new, !llvm.loop !86

._crit_edge.us.unr-lcssa:                         ; preds = %.lr.ph.us.new, %.lr.ph.us
  %.13659.us.unr = phi i64 [ 0, %.lr.ph.us ], [ %871, %.lr.ph.us.new ]
  br i1 %lcmp.mod770.not, label %._crit_edge.us, label %._crit_edge.us.epilog-lcssa

._crit_edge.us.epilog-lcssa:                      ; preds = %._crit_edge.us.unr-lcssa
  %872 = load ptr, ptr %831, align 8, !tbaa !38
  %873 = getelementptr inbounds ptr, ptr %872, i64 %.17661.us
  %874 = load ptr, ptr %873, align 8, !tbaa !67
  %875 = getelementptr inbounds double, ptr %874, i64 %.13659.us.unr
  %876 = load double, ptr %875, align 8, !tbaa !40
  %877 = load ptr, ptr %832, align 8, !tbaa !38
  %878 = getelementptr inbounds double, ptr %877, i64 %.13659.us.unr
  %879 = load double, ptr %878, align 8, !tbaa !40
  %880 = fmul double %876, %879
  %881 = load ptr, ptr %833, align 8, !tbaa !38
  %882 = getelementptr inbounds ptr, ptr %881, i64 %.17661.us
  %883 = load ptr, ptr %882, align 8, !tbaa !67
  %884 = getelementptr inbounds double, ptr %883, i64 %.13659.us.unr
  store double %880, ptr %884, align 8, !tbaa !40
  br label %._crit_edge.us

._crit_edge.us:                                   ; preds = %._crit_edge.us.unr-lcssa, %._crit_edge.us.epilog-lcssa
  %885 = add nuw i64 %.17661.us, 1
  %exitcond740.not = icmp eq i64 %.17661.us, %828
  br i1 %exitcond740.not, label %.preheader649.preheader, label %.lr.ph.us, !llvm.loop !87

.lr.ph663.split:                                  ; preds = %.lr.ph663.split, %.lr.ph663.split.preheader.new
  %.17661 = phi i64 [ 0, %.lr.ph663.split.preheader.new ], [ %909, %.lr.ph663.split ]
  %niter = phi i64 [ 0, %.lr.ph663.split.preheader.new ], [ %niter.next.3, %.lr.ph663.split ]
  %886 = load ptr, ptr %829, align 8, !tbaa !38
  %887 = getelementptr inbounds double, ptr %886, i64 %.17661
  %888 = load double, ptr %887, align 8, !tbaa !40
  %889 = load ptr, ptr %830, align 8, !tbaa !38
  %890 = getelementptr inbounds double, ptr %889, i64 %.17661
  store double %888, ptr %890, align 8, !tbaa !40
  %891 = or disjoint i64 %.17661, 1
  %892 = load ptr, ptr %829, align 8, !tbaa !38
  %893 = getelementptr inbounds double, ptr %892, i64 %891
  %894 = load double, ptr %893, align 8, !tbaa !40
  %895 = load ptr, ptr %830, align 8, !tbaa !38
  %896 = getelementptr inbounds double, ptr %895, i64 %891
  store double %894, ptr %896, align 8, !tbaa !40
  %897 = or disjoint i64 %.17661, 2
  %898 = load ptr, ptr %829, align 8, !tbaa !38
  %899 = getelementptr inbounds double, ptr %898, i64 %897
  %900 = load double, ptr %899, align 8, !tbaa !40
  %901 = load ptr, ptr %830, align 8, !tbaa !38
  %902 = getelementptr inbounds double, ptr %901, i64 %897
  store double %900, ptr %902, align 8, !tbaa !40
  %903 = or disjoint i64 %.17661, 3
  %904 = load ptr, ptr %829, align 8, !tbaa !38
  %905 = getelementptr inbounds double, ptr %904, i64 %903
  %906 = load double, ptr %905, align 8, !tbaa !40
  %907 = load ptr, ptr %830, align 8, !tbaa !38
  %908 = getelementptr inbounds double, ptr %907, i64 %903
  store double %906, ptr %908, align 8, !tbaa !40
  %909 = add nuw i64 %.17661, 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 %.preheader649.preheader.loopexit767.unr-lcssa, label %.lr.ph663.split, !llvm.loop !87

.loopexit652.loopexit:                            ; preds = %._crit_edge
  %smax = tail call i64 @llvm.smax.i64(i64 %.0587, i64 0)
  br label %.preheader649.preheader

910:                                              ; preds = %.lr.ph710
  %911 = load i8, ptr %427, align 1, !tbaa !88, !range !57, !noundef !58
  %912 = trunc nuw i8 %911 to i1
  br i1 %912, label %913, label %927

913:                                              ; preds = %910
  %914 = load i8, ptr %428, align 8, !tbaa !89, !range !57, !noundef !58
  %915 = trunc nuw i8 %914 to i1
  br i1 %915, label %916, label %.preheader649

916:                                              ; preds = %913
  %917 = getelementptr inbounds i8, ptr %0, i64 10720
  %918 = getelementptr inbounds i8, ptr %0, i64 10568
  %919 = getelementptr inbounds i8, ptr %0, i64 10632
  %920 = getelementptr inbounds i8, ptr %0, i64 608
  tail call void @_ZN11alglib_implL14minnlc_unscaleEPNS_11minnlcstateEPNS_9ae_vectorES3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %917, ptr noundef nonnull %918, ptr noundef nonnull %919, ptr noundef nonnull %920, ptr noundef %1)
  %921 = getelementptr inbounds i8, ptr %0, i64 10928
  %922 = load double, ptr %921, align 8, !tbaa !90
  %923 = getelementptr inbounds i8, ptr %0, i64 672
  store double %922, ptr %923, align 8, !tbaa !91
  %924 = getelementptr inbounds i8, ptr %0, i64 826
  store i8 1, ptr %924, align 2, !tbaa !92
  br label %959

925:                                              ; preds = %23
  %926 = getelementptr inbounds i8, ptr %0, i64 826
  store i8 0, ptr %926, align 2, !tbaa !92
  br label %.preheader649.preheader

927:                                              ; preds = %910
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext false, ptr noundef nonnull @.str.447, ptr noundef %1)
  %928 = load i8, ptr %425, align 8, !tbaa !41, !range !57, !noundef !58
  %929 = trunc nuw i8 %928 to i1
  %930 = tail call noundef zeroext i1 @_ZN11alglib_impl15minslpiterationEPNS_11minslpstateEPNS_17smoothnessmonitorEbPNS_8ae_stateE(ptr noundef nonnull %423, ptr noundef nonnull %424, i1 noundef zeroext %929, ptr noundef %1)
  br i1 %930, label %.lr.ph710, label %._crit_edge711

._crit_edge711:                                   ; preds = %.preheader649, %927
  %931 = getelementptr inbounds i8, ptr %0, i64 32232
  %932 = load i64, ptr %931, align 8, !tbaa !93
  %933 = getelementptr inbounds i8, ptr %0, i64 37144
  store i64 %932, ptr %933, align 8, !tbaa !59
  %934 = getelementptr inbounds i8, ptr %0, i64 32216
  %935 = getelementptr inbounds i8, ptr %0, i64 37120
  %936 = load <2 x i64>, ptr %934, align 8, !tbaa !39
  store <2 x i64> %936, ptr %935, align 8, !tbaa !39
  %937 = getelementptr inbounds i8, ptr %0, i64 32240
  %938 = load double, ptr %937, align 8, !tbaa !94
  %939 = getelementptr inbounds i8, ptr %0, i64 37152
  store double %938, ptr %939, align 8, !tbaa !60
  %940 = getelementptr inbounds i8, ptr %0, i64 32248
  %941 = load i64, ptr %940, align 8, !tbaa !95
  %942 = getelementptr inbounds i8, ptr %0, i64 37160
  store i64 %941, ptr %942, align 8, !tbaa !43
  %943 = getelementptr inbounds i8, ptr %0, i64 32256
  %944 = load double, ptr %943, align 8, !tbaa !96
  %945 = getelementptr inbounds i8, ptr %0, i64 37168
  store double %944, ptr %945, align 8, !tbaa !44
  %946 = getelementptr inbounds i8, ptr %0, i64 32264
  %947 = load i64, ptr %946, align 8, !tbaa !97
  %948 = getelementptr inbounds i8, ptr %0, i64 37176
  store i64 %947, ptr %948, align 8, !tbaa !45
  %949 = getelementptr inbounds i8, ptr %0, i64 32272
  %950 = load double, ptr %949, align 8, !tbaa !98
  %951 = getelementptr inbounds i8, ptr %0, i64 37184
  store double %950, ptr %951, align 8, !tbaa !46
  %952 = getelementptr inbounds i8, ptr %0, i64 32280
  %953 = load i64, ptr %952, align 8, !tbaa !99
  %954 = getelementptr inbounds i8, ptr %0, i64 37192
  store i64 %953, ptr %954, align 8, !tbaa !47
  %955 = getelementptr inbounds i8, ptr %0, i64 30784
  %956 = getelementptr inbounds i8, ptr %0, i64 10568
  %957 = getelementptr inbounds i8, ptr %0, i64 10632
  %958 = getelementptr inbounds i8, ptr %0, i64 1832
  tail call void @_ZN11alglib_implL14minnlc_unscaleEPNS_11minnlcstateEPNS_9ae_vectorES3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %955, ptr noundef nonnull %956, ptr noundef nonnull %957, ptr noundef nonnull %958, ptr noundef %1)
  br label %974

959:                                              ; preds = %236, %232, %248, %916, %819, %734, %710, %686, %672, %616, %609, %438, %314, %290, %266, %254, %._crit_edge719
  %.sink = phi i32 [ 15, %916 ], [ 14, %819 ], [ 13, %734 ], [ 12, %710 ], [ 11, %686 ], [ 10, %672 ], [ 9, %616 ], [ 8, %609 ], [ 7, %438 ], [ 4, %314 ], [ 3, %290 ], [ 2, %266 ], [ 1, %254 ], [ 0, %._crit_edge719 ], [ 5, %248 ], [ 6, %232 ], [ 6, %236 ]
  %.20 = phi i64 [ %.10617.ph.ph, %916 ], [ %.12619, %819 ], [ %.0607, %734 ], [ %.0607, %710 ], [ %.0607, %686 ], [ %.12619, %672 ], [ %.0607, %616 ], [ %.12619, %609 ], [ %.10617.ph.ph, %438 ], [ %.0607, %314 ], [ %.0607, %290 ], [ %.0607, %266 ], [ %.8615, %254 ], [ %.4611.lcssa, %._crit_edge719 ], [ %.8615, %248 ], [ %.7614, %232 ], [ %.7614, %236 ]
  %.16 = phi i64 [ %.7604.ph.ph, %916 ], [ %.10, %819 ], [ %.0597, %734 ], [ %.0597, %710 ], [ %.0597, %686 ], [ %.10, %672 ], [ %.0597, %616 ], [ %.10, %609 ], [ %.7604.ph.ph, %438 ], [ %.0597, %314 ], [ %.0597, %290 ], [ %.0597, %266 ], [ %.6603, %254 ], [ %.1598, %._crit_edge719 ], [ %.6603, %248 ], [ %.5602, %232 ], [ %.5602, %236 ]
  %.9596 = phi i64 [ %.5592.ph.ph, %916 ], [ %.6593, %819 ], [ %.0587, %734 ], [ %.0587, %710 ], [ %.0587, %686 ], [ %.6593, %672 ], [ %.0587, %616 ], [ %.6593, %609 ], [ %.5592.ph.ph, %438 ], [ %.0587, %314 ], [ %.0587, %290 ], [ %.0587, %266 ], [ %.4591, %254 ], [ %.1588, %._crit_edge719 ], [ %.4591, %248 ], [ %.3590, %232 ], [ %.3590, %236 ]
  %.9586 = phi i64 [ %.5582.ph.ph, %916 ], [ %.6583, %819 ], [ %.0577, %734 ], [ %.0577, %710 ], [ %.0577, %686 ], [ %.6583, %672 ], [ %.0577, %616 ], [ %.6583, %609 ], [ %.5582.ph.ph, %438 ], [ %.0577, %314 ], [ %.0577, %290 ], [ %.0577, %266 ], [ %.4581, %254 ], [ %.1578, %._crit_edge719 ], [ %.4581, %248 ], [ %.3580, %232 ], [ %.3580, %236 ]
  %.9 = phi i64 [ %.5.ph.ph, %916 ], [ %.6, %819 ], [ %.0572, %734 ], [ %.0572, %710 ], [ %.0572, %686 ], [ %.6, %672 ], [ %.0572, %616 ], [ %.6, %609 ], [ %.5.ph.ph, %438 ], [ %.0572, %314 ], [ %.0572, %290 ], [ %.0572, %266 ], [ %.4576, %254 ], [ %.1573, %._crit_edge719 ], [ %.4576, %248 ], [ %.3575, %232 ], [ %.3575, %236 ]
  %.4571 = phi double [ %.0567, %916 ], [ %.1568, %819 ], [ %.0567, %734 ], [ %.0567, %710 ], [ %.0567, %686 ], [ %523, %672 ], [ %.0567, %616 ], [ %.2569, %609 ], [ %.0567, %438 ], [ %.0567, %314 ], [ %.0567, %290 ], [ %.0567, %266 ], [ %.0567, %254 ], [ %.0567, %._crit_edge719 ], [ %.0567, %248 ], [ %.0567, %232 ], [ %.0567, %236 ]
  %.4 = phi double [ %.0, %916 ], [ %.1, %819 ], [ %.0, %734 ], [ %.0, %710 ], [ %.0, %686 ], [ %524, %672 ], [ %.0, %616 ], [ %.2, %609 ], [ %.0, %438 ], [ %.0, %314 ], [ %.0, %290 ], [ %.0, %266 ], [ %.0, %254 ], [ %.0, %._crit_edge719 ], [ %.0, %248 ], [ %.0, %232 ], [ %.0, %236 ]
  store i32 %.sink, ptr %3, align 8, !tbaa !5
  %960 = getelementptr inbounds i8, ptr %0, i64 896
  %961 = load ptr, ptr %960, align 8, !tbaa !38
  store i64 %.20, ptr %961, align 8, !tbaa !39
  %962 = load ptr, ptr %960, align 8, !tbaa !38
  %963 = getelementptr inbounds i8, ptr %962, i64 8
  store i64 %.16, ptr %963, align 8, !tbaa !39
  %964 = load ptr, ptr %960, align 8, !tbaa !38
  %965 = getelementptr inbounds i8, ptr %964, i64 16
  store i64 %.9596, ptr %965, align 8, !tbaa !39
  %966 = load ptr, ptr %960, align 8, !tbaa !38
  %967 = getelementptr inbounds i8, ptr %966, i64 24
  store i64 %.9586, ptr %967, align 8, !tbaa !39
  %968 = load ptr, ptr %960, align 8, !tbaa !38
  %969 = getelementptr inbounds i8, ptr %968, i64 32
  store i64 %.9, ptr %969, align 8, !tbaa !39
  %970 = getelementptr inbounds i8, ptr %0, i64 1024
  %971 = load ptr, ptr %970, align 8, !tbaa !38
  store double %.4571, ptr %971, align 8, !tbaa !40
  %972 = load ptr, ptr %970, align 8, !tbaa !38
  %973 = getelementptr inbounds i8, ptr %972, i64 8
  store double %.4, ptr %973, align 8, !tbaa !40
  br label %974

974:                                              ; preds = %209, %229, %959, %._crit_edge711, %104
  %.0624 = phi i1 [ true, %959 ], [ false, %._crit_edge711 ], [ false, %104 ], [ false, %229 ], [ false, %209 ]
  ret i1 %.0624
}

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl21smoothnessmonitorinitEPNS_17smoothnessmonitorEllbPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, i1 noundef zeroext, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN11alglib_impl34smoothnessmonitorcheckgradientatx0EPNS_17smoothnessmonitorEPNS_9ae_vectorES3_S3_S3_bdPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i1 noundef zeroext, double noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl13minslpinitbufEPNS_9ae_vectorES1_S1_S1_lPNS_9ae_matrixES1_lllldlPNS_11minslpstateEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef, i64 noundef, i64 noundef, i64 noundef, i64 noundef, double noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN11alglib_implL19minnlc_auliterationEPNS_11minnlcstateEPNS_17smoothnessmonitorEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

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

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

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

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

!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, !17, i64 832}
!6 = !{!"_ZTSN11alglib_impl11minnlcstateE", !7, i64 0, !7, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !7, i64 40, !10, i64 48, !7, i64 56, !10, i64 64, !10, i64 72, !11, i64 80, !7, i64 88, !7, i64 96, !7, i64 104, !12, i64 112, !12, i64 176, !12, i64 240, !12, i64 304, !12, i64 368, !10, i64 432, !10, i64 440, !15, i64 448, !12, i64 528, !10, i64 592, !10, i64 600, !12, i64 608, !7, i64 672, !12, i64 680, !15, i64 744, !11, i64 824, !11, i64 825, !11, i64 826, !16, i64 832, !16, i64 1096, !16, i64 1360, !12, i64 1624, !12, i64 1688, !15, i64 1752, !12, i64 1832, !12, i64 1896, !12, i64 1960, !12, i64 2024, !12, i64 2088, !12, i64 2152, !12, i64 2216, !12, i64 2280, !12, i64 2344, !12, i64 2408, !12, i64 2472, !12, i64 2536, !12, i64 2600, !12, i64 2664, !15, i64 2728, !15, i64 2808, !12, i64 2888, !12, i64 2952, !12, i64 3016, !12, i64 3080, !7, i64 3144, !11, i64 3152, !18, i64 3160, !26, i64 10032, !12, i64 10056, !12, i64 10120, !12, i64 10184, !11, i64 10248, !27, i64 10256, !10, i64 33080, !22, i64 33088, !12, i64 37056, !10, i64 37120, !10, i64 37128, !10, i64 37136, !10, i64 37144, !7, i64 37152, !10, i64 37160, !7, i64 37168, !10, i64 37176, !7, i64 37184, !10, i64 37192, !10, i64 37200}
!7 = !{!"double", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"long", !8, i64 0}
!11 = !{!"bool", !8, i64 0}
!12 = !{!"_ZTSN11alglib_impl9ae_vectorE", !10, i64 0, !10, i64 8, !11, i64 16, !13, i64 24, !8, i64 56}
!13 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !14, i64 0, !14, i64 8, !14, i64 16, !14, i64 24}
!14 = !{!"any pointer", !8, i64 0}
!15 = !{!"_ZTSN11alglib_impl9ae_matrixE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !11, i64 32, !13, i64 40, !8, i64 72}
!16 = !{!"_ZTSN11alglib_impl10rcommstateE", !17, i64 0, !12, i64 8, !12, i64 72, !12, i64 136, !12, i64 200}
!17 = !{!"int", !8, i64 0}
!18 = !{!"_ZTSN11alglib_impl13minlbfgsstateE", !10, i64 0, !10, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !10, i64 40, !11, i64 48, !7, i64 56, !12, i64 64, !7, i64 128, !10, i64 136, !10, i64 144, !10, i64 152, !10, i64 160, !10, i64 168, !12, i64 176, !15, i64 240, !15, i64 320, !12, i64 400, !12, i64 464, !12, i64 528, !7, i64 592, !12, i64 600, !7, i64 664, !7, i64 672, !12, i64 680, !10, i64 744, !7, i64 752, !15, i64 760, !12, i64 840, !12, i64 904, !12, i64 968, !15, i64 1032, !10, i64 1112, !19, i64 1120, !20, i64 1584, !7, i64 2032, !7, i64 2040, !7, i64 2048, !7, i64 2056, !7, i64 2064, !12, i64 2072, !12, i64 2136, !12, i64 2200, !7, i64 2264, !12, i64 2272, !11, i64 2336, !11, i64 2337, !11, i64 2338, !11, i64 2339, !7, i64 2344, !16, i64 2352, !10, i64 2616, !10, i64 2624, !10, i64 2632, !21, i64 2640, !10, i64 2832, !22, i64 2840, !12, i64 6808}
!19 = !{!"_ZTSN11alglib_impl12precbuflbfgsE", !12, i64 0, !12, i64 64, !12, i64 128, !15, i64 192, !12, i64 272, !12, i64 336, !12, i64 400}
!20 = !{!"_ZTSN11alglib_impl14precbuflowrankE", !10, i64 0, !10, i64 8, !12, i64 16, !15, i64 80, !12, i64 160, !15, i64 224, !15, i64 304, !12, i64 384}
!21 = !{!"_ZTSN11alglib_impl11linminstateE", !11, i64 0, !11, i64 1, !10, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !7, i64 88, !7, i64 96, !7, i64 104, !7, i64 112, !7, i64 120, !7, i64 128, !7, i64 136, !7, i64 144, !7, i64 152, !7, i64 160, !7, i64 168, !7, i64 176, !7, i64 184}
!22 = !{!"_ZTSN11alglib_impl17smoothnessmonitorE", !10, i64 0, !10, i64 8, !11, i64 16, !12, i64 24, !10, i64 88, !12, i64 96, !12, i64 160, !12, i64 224, !15, i64 288, !12, i64 368, !12, i64 432, !10, i64 496, !11, i64 504, !11, i64 505, !7, i64 512, !7, i64 520, !11, i64 528, !23, i64 536, !7, i64 832, !7, i64 840, !24, i64 848, !24, i64 1152, !7, i64 1456, !7, i64 1464, !25, i64 1472, !25, i64 1784, !11, i64 2096, !12, i64 2104, !12, i64 2168, !15, i64 2232, !16, i64 2312, !12, i64 2576, !12, i64 2640, !12, i64 2704, !12, i64 2768, !12, i64 2832, !12, i64 2896, !12, i64 2960, !12, i64 3024, !15, i64 3088, !15, i64 3168, !12, i64 3248, !12, i64 3312, !12, i64 3376, !12, i64 3440, !12, i64 3504, !12, i64 3568, !12, i64 3632, !12, i64 3696, !12, i64 3760, !12, i64 3824, !15, i64 3888}
!23 = !{!"_ZTSN11alglib_impl14optguardreportE", !11, i64 0, !11, i64 1, !10, i64 8, !7, i64 16, !11, i64 24, !11, i64 25, !11, i64 26, !10, i64 32, !7, i64 40, !11, i64 48, !10, i64 56, !10, i64 64, !12, i64 72, !15, i64 136, !15, i64 216}
!24 = !{!"_ZTSN11alglib_impl24optguardnonc1test0reportE", !11, i64 0, !10, i64 8, !12, i64 16, !12, i64 80, !10, i64 144, !12, i64 152, !12, i64 216, !10, i64 280, !10, i64 288, !10, i64 296}
!25 = !{!"_ZTSN11alglib_impl24optguardnonc1test1reportE", !11, i64 0, !10, i64 8, !10, i64 16, !12, i64 24, !12, i64 88, !10, i64 152, !12, i64 160, !12, i64 224, !10, i64 288, !10, i64 296, !10, i64 304}
!26 = !{!"_ZTSN11alglib_impl14minlbfgsreportE", !10, i64 0, !10, i64 8, !10, i64 16}
!27 = !{!"_ZTSN11alglib_impl11minslpstateE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !15, i64 40, !12, i64 120, !12, i64 184, !12, i64 248, !12, i64 312, !12, i64 376, !7, i64 440, !10, i64 448, !10, i64 456, !12, i64 464, !12, i64 528, !15, i64 592, !7, i64 672, !11, i64 680, !11, i64 681, !7, i64 688, !7, i64 696, !28, i64 704, !12, i64 20000, !12, i64 20064, !12, i64 20128, !21, i64 20192, !10, i64 20384, !10, i64 20392, !12, i64 20400, !12, i64 20464, !12, i64 20528, !12, i64 20592, !12, i64 20656, !12, i64 20720, !12, i64 20784, !12, i64 20848, !12, i64 20912, !15, i64 20976, !15, i64 21056, !15, i64 21136, !15, i64 21216, !7, i64 21296, !7, i64 21304, !7, i64 21312, !12, i64 21320, !12, i64 21384, !12, i64 21448, !12, i64 21512, !12, i64 21576, !12, i64 21640, !12, i64 21704, !12, i64 21768, !7, i64 21832, !10, i64 21840, !7, i64 21848, !10, i64 21856, !12, i64 21864, !10, i64 21928, !10, i64 21936, !10, i64 21944, !10, i64 21952, !10, i64 21960, !10, i64 21968, !10, i64 21976, !7, i64 21984, !10, i64 21992, !7, i64 22000, !10, i64 22008, !7, i64 22016, !10, i64 22024, !16, i64 22032, !16, i64 22296, !16, i64 22560}
!28 = !{!"_ZTSN11alglib_impl15minslpsubsolverE", !29, i64 0, !37, i64 10944, !31, i64 11000, !11, i64 17272, !15, i64 17280, !10, i64 17360, !12, i64 17368, !12, i64 17432, !12, i64 17496, !12, i64 17560, !12, i64 17624, !30, i64 17688, !30, i64 18056, !10, i64 18424, !15, i64 18432, !15, i64 18512, !15, i64 18592, !30, i64 18672, !12, i64 19040, !12, i64 19104, !12, i64 19168, !12, i64 19232}
!29 = !{!"_ZTSN11alglib_impl16dualsimplexstateE", !12, i64 0, !12, i64 64, !12, i64 128, !12, i64 192, !10, i64 256, !10, i64 264, !30, i64 272, !30, i64 640, !31, i64 1008, !36, i64 7280, !36, i64 8072, !36, i64 8864, !12, i64 9656, !12, i64 9720, !12, i64 9784, !12, i64 9848, !7, i64 9912, !7, i64 9920, !7, i64 9928, !10, i64 9936, !10, i64 9944, !10, i64 9952, !10, i64 9960, !10, i64 9968, !12, i64 9976, !10, i64 10040, !12, i64 10048, !12, i64 10112, !12, i64 10176, !12, i64 10240, !12, i64 10304, !12, i64 10368, !12, i64 10432, !12, i64 10496, !12, i64 10560, !12, i64 10624, !12, i64 10688, !12, i64 10752, !12, i64 10816, !12, i64 10880}
!30 = !{!"_ZTSN11alglib_impl12sparsematrixE", !12, i64 0, !12, i64 64, !12, i64 128, !12, i64 192, !12, i64 256, !10, i64 320, !10, i64 328, !10, i64 336, !10, i64 344, !10, i64 352, !10, i64 360}
!31 = !{!"_ZTSN11alglib_impl16dualsimplexbasisE", !10, i64 0, !10, i64 8, !12, i64 16, !12, i64 80, !12, i64 144, !10, i64 208, !11, i64 216, !10, i64 224, !15, i64 232, !30, i64 312, !30, i64 680, !30, i64 1048, !12, i64 1416, !12, i64 1480, !12, i64 1544, !12, i64 1608, !12, i64 1672, !12, i64 1736, !12, i64 1800, !11, i64 1864, !7, i64 1872, !12, i64 1880, !12, i64 1944, !12, i64 2008, !12, i64 2072, !12, i64 2136, !15, i64 2200, !12, i64 2280, !12, i64 2344, !30, i64 2408, !30, i64 2776, !32, i64 3144, !12, i64 5712, !12, i64 5776, !12, i64 5840, !30, i64 5904}
!32 = !{!"_ZTSN11alglib_impl11sluv2bufferE", !10, i64 0, !30, i64 8, !30, i64 376, !33, i64 744, !33, i64 968, !34, i64 1192, !35, i64 1816, !12, i64 1976, !15, i64 2040, !12, i64 2120, !12, i64 2184, !12, i64 2248, !12, i64 2312, !12, i64 2376, !12, i64 2440, !12, i64 2504}
!33 = !{!"_ZTSN11alglib_impl16sluv2list1matrixE", !10, i64 0, !10, i64 8, !12, i64 16, !12, i64 80, !12, i64 144, !10, i64 208, !10, i64 216}
!34 = !{!"_ZTSN11alglib_impl16sluv2sparsetrailE", !10, i64 0, !10, i64 8, !12, i64 16, !10, i64 80, !10, i64 88, !10, i64 96, !12, i64 104, !12, i64 168, !12, i64 232, !12, i64 296, !12, i64 360, !12, i64 424, !12, i64 488, !10, i64 552, !12, i64 560}
!35 = !{!"_ZTSN11alglib_impl15sluv2densetrailE", !10, i64 0, !10, i64 8, !15, i64 16, !12, i64 96}
!36 = !{!"_ZTSN11alglib_impl21dualsimplexsubproblemE", !10, i64 0, !10, i64 8, !12, i64 16, !12, i64 80, !12, i64 144, !12, i64 208, !12, i64 272, !12, i64 336, !10, i64 400, !12, i64 408, !12, i64 472, !12, i64 536, !12, i64 600, !12, i64 664, !12, i64 728}
!37 = !{!"_ZTSN11alglib_impl19dualsimplexsettingsE", !7, i64 0, !7, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48}
!38 = !{!8, !8, i64 0}
!39 = !{!10, !10, i64 0}
!40 = !{!7, !7, i64 0}
!41 = !{!6, !11, i64 10248}
!42 = !{!6, !10, i64 37200}
!43 = !{!6, !10, i64 37160}
!44 = !{!6, !7, i64 37168}
!45 = !{!6, !10, i64 37176}
!46 = !{!6, !7, i64 37184}
!47 = !{!6, !10, i64 37192}
!48 = !{!6, !10, i64 48}
!49 = !{!6, !10, i64 592}
!50 = !{!6, !10, i64 600}
!51 = !{!6, !10, i64 33080}
!52 = distinct !{!52, !53}
!53 = !{!"llvm.loop.unroll.disable"}
!54 = distinct !{!54, !55}
!55 = !{!"llvm.loop.mustprogress"}
!56 = !{!11, !11, i64 0}
!57 = !{i8 0, i8 2}
!58 = !{}
!59 = !{!6, !10, i64 37144}
!60 = !{!6, !7, i64 37152}
!61 = distinct !{!61, !55}
!62 = !{!6, !7, i64 96}
!63 = !{!6, !7, i64 104}
!64 = distinct !{!64, !55}
!65 = distinct !{!65, !53}
!66 = !{!6, !11, i64 824}
!67 = !{!14, !14, i64 0}
!68 = distinct !{!68, !55}
!69 = distinct !{!69, !55}
!70 = !{!6, !10, i64 16}
!71 = !{!6, !17, i64 1096}
!72 = !{!6, !11, i64 825}
!73 = distinct !{!73, !55}
!74 = !{!6, !10, i64 432}
!75 = !{!6, !10, i64 440}
!76 = !{!6, !7, i64 56}
!77 = !{!6, !10, i64 64}
!78 = distinct !{!78, !53}
!79 = !{!6, !11, i64 10936}
!80 = distinct !{!80, !55}
!81 = distinct !{!81, !55}
!82 = distinct !{!82, !55}
!83 = distinct !{!83, !55}
!84 = distinct !{!84, !55}
!85 = distinct !{!85, !53}
!86 = distinct !{!86, !55}
!87 = distinct !{!87, !55}
!88 = !{!6, !11, i64 10937}
!89 = !{!6, !11, i64 80}
!90 = !{!6, !7, i64 10928}
!91 = !{!6, !7, i64 672}
!92 = !{!6, !11, i64 826}
!93 = !{!6, !10, i64 32232}
!94 = !{!6, !7, i64 32240}
!95 = !{!6, !10, i64 32248}
!96 = !{!6, !7, i64 32256}
!97 = !{!6, !10, i64 32264}
!98 = !{!6, !7, i64 32272}
!99 = !{!6, !10, i64 32280}


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