; LLVM IR from venumb/ZSPACE :: cpp/depends/alglib/cpp/tests/test_c.ll (Z9testmincgbPN11alglib_impl8ae_stateE)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"struct.alglib_impl::ae_frame" = type { %"struct.alglib_impl::ae_dyn_block" }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%"struct.alglib_impl::ae_vector" = type { i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon }
%union.anon = type { ptr }
%"struct.alglib_impl::ae_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%union.anon.0 = type { ptr }
%"struct.alglib_impl::mincgstate" = type { i64, double, double, double, i64, double, double, i8, i8, i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", i64, %"struct.alglib_impl::ae_vector", double, 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", double, double, double, %"struct.alglib_impl::ae_vector", double, double, i64, i8, i8, double, %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ae_vector", double, %"struct.alglib_impl::ae_vector", i8, i8, i8, i8, i8, i8, i8, %"struct.alglib_impl::rcommstate", i64, i64, i64, i64, %"struct.alglib_impl::linminstate", double, double, double, double, double, double, double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, i64, %"struct.alglib_impl::smoothnessmonitor", %"struct.alglib_impl::ae_vector" }
%"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::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::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::mincgreport" = type { i64, i64, i64 }

@.str.1 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.335 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.337 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.338 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.340 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.342 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.343 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.366 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.458 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.459 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.460 = external hidden unnamed_addr constant [43 x i8], align 1

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

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

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

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

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

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

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

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) #1

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

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

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

declare noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef) #1

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z9testmincgbPN11alglib_impl8ae_stateE(i1 noundef zeroext %0, ptr noundef %1) #4 {
  %3 = alloca i8, align 1
  %4 = alloca ptr, align 8
  %5 = alloca %"struct.alglib_impl::ae_frame", align 8
  %6 = alloca i8, align 1
  %7 = alloca i8, align 1
  %8 = alloca i8, align 1
  %9 = alloca i8, align 1
  %10 = alloca i8, align 1
  %11 = alloca i8, align 1
  %12 = alloca i8, align 1
  %13 = alloca i8, align 1
  %14 = alloca i8, align 1
  %15 = alloca i8, align 1
  %16 = alloca i64, align 8
  %17 = alloca %"struct.alglib_impl::ae_vector", align 8
  %18 = alloca %"struct.alglib_impl::ae_vector", align 8
  %19 = alloca %"struct.alglib_impl::ae_vector", align 8
  %20 = alloca %"struct.alglib_impl::ae_vector", align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca double, align 8
  %24 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %25 = alloca %"struct.alglib_impl::ae_vector", align 8
  %26 = alloca %"struct.alglib_impl::mincgstate", align 8
  %27 = alloca %"struct.alglib_impl::mincgreport", align 8
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca double, align 8
  %31 = alloca i8, align 1
  %32 = zext i1 %0 to i8
  store i8 %32, ptr %3, align 1, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %5) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %6) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %9) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %18) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %19) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %20) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 80, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 5840, ptr %26) #5
  call void @llvm.lifetime.start.p0(i64 24, ptr %27) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #5
  %33 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %33, ptr noundef %5)
  call void @llvm.memset.p0.i64(ptr align 8 %17, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %18, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %19, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %20, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %24, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %25, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %26, i8 0, i64 5840, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %27, i8 0, i64 24, i1 false)
  %34 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %17, i64 noundef 0, i64 noundef 3, ptr noundef %34, i1 noundef zeroext true)
  %35 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %18, i64 noundef 0, i64 noundef 3, ptr noundef %35, i1 noundef zeroext true)
  %36 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %19, i64 noundef 0, i64 noundef 3, ptr noundef %36, i1 noundef zeroext true)
  %37 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %20, i64 noundef 0, i64 noundef 3, ptr noundef %37, i1 noundef zeroext true)
  %38 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %24, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %38, i1 noundef zeroext true)
  %39 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %25, i64 noundef 0, i64 noundef 3, ptr noundef %39, i1 noundef zeroext true)
  %40 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl16_mincgstate_initEPvPNS_8ae_stateEb(ptr noundef %26, ptr noundef %40, i1 noundef zeroext true)
  %41 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl17_mincgreport_initEPvPNS_8ae_stateEb(ptr noundef %27, ptr noundef %41, i1 noundef zeroext true)
  store i8 0, ptr %6, align 1, !tbaa !5
  store i8 0, ptr %7, align 1, !tbaa !5
  store i8 0, ptr %9, align 1, !tbaa !5
  store i8 0, ptr %10, align 1, !tbaa !5
  store i8 0, ptr %8, align 1, !tbaa !5
  store i8 0, ptr %13, align 1, !tbaa !5
  store i8 0, ptr %11, align 1, !tbaa !5
  store i8 0, ptr %14, align 1, !tbaa !5
  store i8 0, ptr %12, align 1, !tbaa !5
  %42 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL33testmincgunit_testpreconditioningPbPN11alglib_impl8ae_stateE(ptr noundef %12, ptr noundef %42)
  %43 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_Z9testotherPbPN11alglib_impl8ae_stateE(ptr noundef %14, ptr noundef %43)
  store i64 0, ptr %29, align 8, !tbaa !11
  br label %44

44:                                               ; preds = %1149, %2
  %45 = load i64, ptr %29, align 8, !tbaa !11
  %46 = icmp sle i64 %45, 1
  br i1 %46, label %47, label %1152

47:                                               ; preds = %44
  store i64 -1, ptr %28, align 8, !tbaa !11
  br label %48

48:                                               ; preds = %1145, %47
  %49 = load i64, ptr %28, align 8, !tbaa !11
  %50 = icmp sle i64 %49, 1
  br i1 %50, label %51, label %1148

51:                                               ; preds = %48
  %52 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %17, i64 noundef 3, ptr noundef %52)
  store i64 3, ptr %16, align 8, !tbaa !11
  store double 0x3EB0C6F7A0B5ED8D, ptr %30, align 8, !tbaa !13
  %53 = load ptr, ptr %4, align 8, !tbaa !9
  %54 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %53)
  %55 = call double @llvm.fmuladd.f64(double 1.000000e+02, double %54, double -5.000000e+01)
  %56 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %57 = load ptr, ptr %56, align 8, !tbaa !15
  %58 = getelementptr inbounds double, ptr %57, i64 0
  store double %55, ptr %58, align 8, !tbaa !13
  %59 = load ptr, ptr %4, align 8, !tbaa !9
  %60 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %59)
  %61 = call double @llvm.fmuladd.f64(double 1.000000e+02, double %60, double -5.000000e+01)
  %62 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %63 = load ptr, ptr %62, align 8, !tbaa !15
  %64 = getelementptr inbounds double, ptr %63, i64 1
  store double %61, ptr %64, align 8, !tbaa !13
  %65 = load ptr, ptr %4, align 8, !tbaa !9
  %66 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %65)
  %67 = call double @llvm.fmuladd.f64(double 1.000000e+02, double %66, double -5.000000e+01)
  %68 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %69 = load ptr, ptr %68, align 8, !tbaa !15
  %70 = getelementptr inbounds double, ptr %69, i64 2
  store double %67, ptr %70, align 8, !tbaa !13
  %71 = load i64, ptr %29, align 8, !tbaa !11
  %72 = icmp eq i64 %71, 0
  br i1 %72, label %73, label %76

73:                                               ; preds = %51
  %74 = load i64, ptr %16, align 8, !tbaa !11
  %75 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11mincgcreateElPNS_9ae_vectorEPNS_10mincgstateEPNS_8ae_stateE(i64 noundef %74, ptr noundef %17, ptr noundef %26, ptr noundef %75)
  br label %76

76:                                               ; preds = %73, %51
  %77 = load i64, ptr %29, align 8, !tbaa !11
  %78 = icmp eq i64 %77, 1
  br i1 %78, label %79, label %83

79:                                               ; preds = %76
  %80 = load i64, ptr %16, align 8, !tbaa !11
  %81 = load double, ptr %30, align 8, !tbaa !13
  %82 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12mincgcreatefElPNS_9ae_vectorEdPNS_10mincgstateEPNS_8ae_stateE(i64 noundef %80, ptr noundef %17, double noundef %81, ptr noundef %26, ptr noundef %82)
  br label %83

83:                                               ; preds = %79, %76
  %84 = load i64, ptr %28, align 8, !tbaa !11
  %85 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14mincgsetcgtypeEPNS_10mincgstateElPNS_8ae_stateE(ptr noundef %26, i64 noundef %84, ptr noundef %85)
  br label %86

86:                                               ; preds = %183, %83
  %87 = load ptr, ptr %4, align 8, !tbaa !9
  %88 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef %26, ptr noundef %87)
  br i1 %88, label %89, label %184

89:                                               ; preds = %86
  %90 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 40
  %91 = load i8, ptr %90, align 8, !tbaa !16, !range !28, !noundef !29
  %92 = trunc i8 %91 to i1
  br i1 %92, label %97, label %93

93:                                               ; preds = %89
  %94 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 41
  %95 = load i8, ptr %94, align 1, !tbaa !30, !range !28, !noundef !29
  %96 = trunc i8 %95 to i1
  br i1 %96, label %97, label %129

97:                                               ; preds = %93, %89
  %98 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 37
  %99 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %98, i32 0, i32 4
  %100 = load ptr, ptr %99, align 8, !tbaa !15
  %101 = getelementptr inbounds double, ptr %100, i64 0
  %102 = load double, ptr %101, align 8, !tbaa !13
  %103 = fsub double %102, 2.000000e+00
  %104 = load ptr, ptr %4, align 8, !tbaa !9
  %105 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %103, ptr noundef %104)
  %106 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 37
  %107 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %106, i32 0, i32 4
  %108 = load ptr, ptr %107, align 8, !tbaa !15
  %109 = getelementptr inbounds double, ptr %108, i64 1
  %110 = load double, ptr %109, align 8, !tbaa !13
  %111 = load ptr, ptr %4, align 8, !tbaa !9
  %112 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %110, ptr noundef %111)
  %113 = fadd double %105, %112
  %114 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 37
  %115 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %114, i32 0, i32 4
  %116 = load ptr, ptr %115, align 8, !tbaa !15
  %117 = getelementptr inbounds double, ptr %116, i64 2
  %118 = load double, ptr %117, align 8, !tbaa !13
  %119 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 37
  %120 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %119, i32 0, i32 4
  %121 = load ptr, ptr %120, align 8, !tbaa !15
  %122 = getelementptr inbounds double, ptr %121, i64 0
  %123 = load double, ptr %122, align 8, !tbaa !13
  %124 = fsub double %118, %123
  %125 = load ptr, ptr %4, align 8, !tbaa !9
  %126 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %124, ptr noundef %125)
  %127 = fadd double %113, %126
  %128 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 38
  store double %127, ptr %128, align 8, !tbaa !31
  br label %129

129:                                              ; preds = %97, %93
  %130 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 41
  %131 = load i8, ptr %130, align 1, !tbaa !30, !range !28, !noundef !29
  %132 = trunc i8 %131 to i1
  br i1 %132, label %133, label %183

133:                                              ; preds = %129
  %134 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 37
  %135 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %134, i32 0, i32 4
  %136 = load ptr, ptr %135, align 8, !tbaa !15
  %137 = getelementptr inbounds double, ptr %136, i64 0
  %138 = load double, ptr %137, align 8, !tbaa !13
  %139 = fsub double %138, 2.000000e+00
  %140 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 37
  %141 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %140, i32 0, i32 4
  %142 = load ptr, ptr %141, align 8, !tbaa !15
  %143 = getelementptr inbounds double, ptr %142, i64 0
  %144 = load double, ptr %143, align 8, !tbaa !13
  %145 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 37
  %146 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %145, i32 0, i32 4
  %147 = load ptr, ptr %146, align 8, !tbaa !15
  %148 = getelementptr inbounds double, ptr %147, i64 2
  %149 = load double, ptr %148, align 8, !tbaa !13
  %150 = fsub double %144, %149
  %151 = fmul double 2.000000e+00, %150
  %152 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %139, double %151)
  %153 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 39
  %154 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %153, i32 0, i32 4
  %155 = load ptr, ptr %154, align 8, !tbaa !15
  %156 = getelementptr inbounds double, ptr %155, i64 0
  store double %152, ptr %156, align 8, !tbaa !13
  %157 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 37
  %158 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %157, i32 0, i32 4
  %159 = load ptr, ptr %158, align 8, !tbaa !15
  %160 = getelementptr inbounds double, ptr %159, i64 1
  %161 = load double, ptr %160, align 8, !tbaa !13
  %162 = fmul double 2.000000e+00, %161
  %163 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 39
  %164 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %163, i32 0, i32 4
  %165 = load ptr, ptr %164, align 8, !tbaa !15
  %166 = getelementptr inbounds double, ptr %165, i64 1
  store double %162, ptr %166, align 8, !tbaa !13
  %167 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 37
  %168 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %167, i32 0, i32 4
  %169 = load ptr, ptr %168, align 8, !tbaa !15
  %170 = getelementptr inbounds double, ptr %169, i64 2
  %171 = load double, ptr %170, align 8, !tbaa !13
  %172 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 37
  %173 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %172, i32 0, i32 4
  %174 = load ptr, ptr %173, align 8, !tbaa !15
  %175 = getelementptr inbounds double, ptr %174, i64 0
  %176 = load double, ptr %175, align 8, !tbaa !13
  %177 = fsub double %171, %176
  %178 = fmul double 2.000000e+00, %177
  %179 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 39
  %180 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %179, i32 0, i32 4
  %181 = load ptr, ptr %180, align 8, !tbaa !15
  %182 = getelementptr inbounds double, ptr %181, i64 2
  store double %178, ptr %182, align 8, !tbaa !13
  br label %183

183:                                              ; preds = %133, %129
  br label %86, !llvm.loop !32

184:                                              ; preds = %86
  %185 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12mincgresultsEPNS_10mincgstateEPNS_9ae_vectorEPNS_11mincgreportEPNS_8ae_stateE(ptr noundef %26, ptr noundef %17, ptr noundef %27, ptr noundef %185)
  %186 = load i8, ptr %7, align 1, !tbaa !5, !range !28, !noundef !29
  %187 = trunc i8 %186 to i1
  br i1 %187, label %218, label %188

188:                                              ; preds = %184
  %189 = getelementptr inbounds %"struct.alglib_impl::mincgreport", ptr %27, i32 0, i32 2
  %190 = load i64, ptr %189, align 8, !tbaa !34
  %191 = icmp sle i64 %190, 0
  br i1 %191, label %218, label %192

192:                                              ; preds = %188
  %193 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %194 = load ptr, ptr %193, align 8, !tbaa !15
  %195 = getelementptr inbounds double, ptr %194, i64 0
  %196 = load double, ptr %195, align 8, !tbaa !13
  %197 = fsub double %196, 2.000000e+00
  %198 = load ptr, ptr %4, align 8, !tbaa !9
  %199 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %197, ptr noundef %198)
  %200 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %199, double noundef 1.000000e-03)
  br i1 %200, label %218, label %201

201:                                              ; preds = %192
  %202 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %203 = load ptr, ptr %202, align 8, !tbaa !15
  %204 = getelementptr inbounds double, ptr %203, i64 1
  %205 = load double, ptr %204, align 8, !tbaa !13
  %206 = load ptr, ptr %4, align 8, !tbaa !9
  %207 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %205, ptr noundef %206)
  %208 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %207, double noundef 1.000000e-03)
  br i1 %208, label %218, label %209

209:                                              ; preds = %201
  %210 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %211 = load ptr, ptr %210, align 8, !tbaa !15
  %212 = getelementptr inbounds double, ptr %211, i64 2
  %213 = load double, ptr %212, align 8, !tbaa !13
  %214 = fsub double %213, 2.000000e+00
  %215 = load ptr, ptr %4, align 8, !tbaa !9
  %216 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %214, ptr noundef %215)
  %217 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %216, double noundef 1.000000e-03)
  br label %218

218:                                              ; preds = %209, %201, %192, %188, %184
  %219 = phi i1 [ true, %201 ], [ true, %192 ], [ true, %188 ], [ true, %184 ], [ %217, %209 ]
  %220 = zext i1 %219 to i8
  store i8 %220, ptr %7, align 1, !tbaa !5
  %221 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %17, i64 noundef 3, ptr noundef %221)
  store i64 3, ptr %16, align 8, !tbaa !11
  store double 0x3EB0C6F7A0B5ED8D, ptr %30, align 8, !tbaa !13
  %222 = load ptr, ptr %4, align 8, !tbaa !9
  %223 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %222)
  %224 = call double @llvm.fmuladd.f64(double 1.000000e+01, double %223, double 1.000000e+01)
  %225 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %226 = load ptr, ptr %225, align 8, !tbaa !15
  %227 = getelementptr inbounds double, ptr %226, i64 0
  store double %224, ptr %227, align 8, !tbaa !13
  %228 = load ptr, ptr %4, align 8, !tbaa !9
  %229 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %228)
  %230 = call double @llvm.fmuladd.f64(double 1.000000e+01, double %229, double 1.000000e+01)
  %231 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %232 = load ptr, ptr %231, align 8, !tbaa !15
  %233 = getelementptr inbounds double, ptr %232, i64 1
  store double %230, ptr %233, align 8, !tbaa !13
  %234 = load ptr, ptr %4, align 8, !tbaa !9
  %235 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %234)
  %236 = call double @llvm.fmuladd.f64(double 1.000000e+01, double %235, double 1.000000e+01)
  %237 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %238 = load ptr, ptr %237, align 8, !tbaa !15
  %239 = getelementptr inbounds double, ptr %238, i64 2
  store double %236, ptr %239, align 8, !tbaa !13
  %240 = load i64, ptr %29, align 8, !tbaa !11
  %241 = icmp eq i64 %240, 0
  br i1 %241, label %242, label %245

242:                                              ; preds = %218
  %243 = load i64, ptr %16, align 8, !tbaa !11
  %244 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11mincgcreateElPNS_9ae_vectorEPNS_10mincgstateEPNS_8ae_stateE(i64 noundef %243, ptr noundef %17, ptr noundef %26, ptr noundef %244)
  br label %245

245:                                              ; preds = %242, %218
  %246 = load i64, ptr %29, align 8, !tbaa !11
  %247 = icmp eq i64 %246, 1
  br i1 %247, label %248, label %252

248:                                              ; preds = %245
  %249 = load i64, ptr %16, align 8, !tbaa !11
  %250 = load double, ptr %30, align 8, !tbaa !13
  %251 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12mincgcreatefElPNS_9ae_vectorEdPNS_10mincgstateEPNS_8ae_stateE(i64 noundef %249, ptr noundef %17, double noundef %250, ptr noundef %26, ptr noundef %251)
  br label %252

252:                                              ; preds = %248, %245
  %253 = load i64, ptr %28, align 8, !tbaa !11
  %254 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14mincgsetcgtypeEPNS_10mincgstateElPNS_8ae_stateE(ptr noundef %26, i64 noundef %253, ptr noundef %254)
  %255 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14mincgsetstpmaxEPNS_10mincgstateEdPNS_8ae_stateE(ptr noundef %26, double noundef 1.000000e-01, ptr noundef %255)
  %256 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12mincgsetcondEPNS_10mincgstateEdddlPNS_8ae_stateE(ptr noundef %26, double noundef 0x3E7AD7F29ABCAF48, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %256)
  store i64 0, ptr %21, align 8, !tbaa !11
  br label %257

257:                                              ; preds = %266, %252
  %258 = load i64, ptr %21, align 8, !tbaa !11
  %259 = icmp sle i64 %258, 10
  br i1 %259, label %260, label %269

260:                                              ; preds = %257
  %261 = load ptr, ptr %4, align 8, !tbaa !9
  %262 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef %26, ptr noundef %261)
  br i1 %262, label %264, label %263

263:                                              ; preds = %260
  br label %269

264:                                              ; preds = %260
  %265 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testmincgunit_testfunc2PN11alglib_impl10mincgstateEPNS_8ae_stateE(ptr noundef %26, ptr noundef %265)
  br label %266

266:                                              ; preds = %264
  %267 = load i64, ptr %21, align 8, !tbaa !11
  %268 = add nsw i64 %267, 1
  store i64 %268, ptr %21, align 8, !tbaa !11
  br label %257, !llvm.loop !36

269:                                              ; preds = %263, %257
  %270 = load ptr, ptr %4, align 8, !tbaa !9
  %271 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %270)
  %272 = call double @llvm.fmuladd.f64(double 1.000000e+01, double %271, double 1.000000e+01)
  %273 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %274 = load ptr, ptr %273, align 8, !tbaa !15
  %275 = getelementptr inbounds double, ptr %274, i64 0
  store double %272, ptr %275, align 8, !tbaa !13
  %276 = load ptr, ptr %4, align 8, !tbaa !9
  %277 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %276)
  %278 = call double @llvm.fmuladd.f64(double 1.000000e+01, double %277, double 1.000000e+01)
  %279 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %280 = load ptr, ptr %279, align 8, !tbaa !15
  %281 = getelementptr inbounds double, ptr %280, i64 1
  store double %278, ptr %281, align 8, !tbaa !13
  %282 = load ptr, ptr %4, align 8, !tbaa !9
  %283 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %282)
  %284 = call double @llvm.fmuladd.f64(double 1.000000e+01, double %283, double 1.000000e+01)
  %285 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %286 = load ptr, ptr %285, align 8, !tbaa !15
  %287 = getelementptr inbounds double, ptr %286, i64 2
  store double %284, ptr %287, align 8, !tbaa !13
  %288 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl16mincgrestartfromEPNS_10mincgstateEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %26, ptr noundef %17, ptr noundef %288)
  br label %289

289:                                              ; preds = %292, %269
  %290 = load ptr, ptr %4, align 8, !tbaa !9
  %291 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef %26, ptr noundef %290)
  br i1 %291, label %292, label %294

292:                                              ; preds = %289
  %293 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testmincgunit_testfunc2PN11alglib_impl10mincgstateEPNS_8ae_stateE(ptr noundef %26, ptr noundef %293)
  br label %289, !llvm.loop !37

294:                                              ; preds = %289
  %295 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12mincgresultsEPNS_10mincgstateEPNS_9ae_vectorEPNS_11mincgreportEPNS_8ae_stateE(ptr noundef %26, ptr noundef %17, ptr noundef %27, ptr noundef %295)
  %296 = load i8, ptr %11, align 1, !tbaa !5, !range !28, !noundef !29
  %297 = trunc i8 %296 to i1
  br i1 %297, label %332, label %298

298:                                              ; preds = %294
  %299 = getelementptr inbounds %"struct.alglib_impl::mincgreport", ptr %27, i32 0, i32 2
  %300 = load i64, ptr %299, align 8, !tbaa !34
  %301 = icmp sle i64 %300, 0
  br i1 %301, label %332, label %302

302:                                              ; preds = %298
  %303 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %304 = load ptr, ptr %303, align 8, !tbaa !15
  %305 = getelementptr inbounds double, ptr %304, i64 0
  %306 = load double, ptr %305, align 8, !tbaa !13
  %307 = load ptr, ptr %4, align 8, !tbaa !9
  %308 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 2.000000e+00, ptr noundef %307)
  %309 = fsub double %306, %308
  %310 = load ptr, ptr %4, align 8, !tbaa !9
  %311 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %309, ptr noundef %310)
  %312 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %311, double noundef 1.000000e-02)
  br i1 %312, label %332, label %313

313:                                              ; preds = %302
  %314 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %315 = load ptr, ptr %314, align 8, !tbaa !15
  %316 = getelementptr inbounds double, ptr %315, i64 1
  %317 = load double, ptr %316, align 8, !tbaa !13
  %318 = load ptr, ptr %4, align 8, !tbaa !9
  %319 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %317, ptr noundef %318)
  %320 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %319, double noundef 1.000000e-02)
  br i1 %320, label %332, label %321

321:                                              ; preds = %313
  %322 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %323 = load ptr, ptr %322, align 8, !tbaa !15
  %324 = getelementptr inbounds double, ptr %323, i64 2
  %325 = load double, ptr %324, align 8, !tbaa !13
  %326 = load ptr, ptr %4, align 8, !tbaa !9
  %327 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 2.000000e+00, ptr noundef %326)
  %328 = fsub double %325, %327
  %329 = load ptr, ptr %4, align 8, !tbaa !9
  %330 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %328, ptr noundef %329)
  %331 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %330, double noundef 1.000000e-02)
  br label %332

332:                                              ; preds = %321, %313, %302, %298, %294
  %333 = phi i1 [ true, %313 ], [ true, %302 ], [ true, %298 ], [ true, %294 ], [ %331, %321 ]
  %334 = zext i1 %333 to i8
  store i8 %334, ptr %11, align 1, !tbaa !5
  %335 = load ptr, ptr %4, align 8, !tbaa !9
  %336 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %335)
  %337 = call double @llvm.fmuladd.f64(double 1.000000e+01, double %336, double 1.000000e+01)
  %338 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %339 = load ptr, ptr %338, align 8, !tbaa !15
  %340 = getelementptr inbounds double, ptr %339, i64 0
  store double %337, ptr %340, align 8, !tbaa !13
  %341 = load ptr, ptr %4, align 8, !tbaa !9
  %342 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %341)
  %343 = call double @llvm.fmuladd.f64(double 1.000000e+01, double %342, double 1.000000e+01)
  %344 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %345 = load ptr, ptr %344, align 8, !tbaa !15
  %346 = getelementptr inbounds double, ptr %345, i64 1
  store double %343, ptr %346, align 8, !tbaa !13
  %347 = load ptr, ptr %4, align 8, !tbaa !9
  %348 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %347)
  %349 = call double @llvm.fmuladd.f64(double 1.000000e+01, double %348, double 1.000000e+01)
  %350 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %351 = load ptr, ptr %350, align 8, !tbaa !15
  %352 = getelementptr inbounds double, ptr %351, i64 2
  store double %349, ptr %352, align 8, !tbaa !13
  %353 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl16mincgrestartfromEPNS_10mincgstateEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %26, ptr noundef %17, ptr noundef %353)
  br label %354

354:                                              ; preds = %357, %332
  %355 = load ptr, ptr %4, align 8, !tbaa !9
  %356 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef %26, ptr noundef %355)
  br i1 %356, label %357, label %359

357:                                              ; preds = %354
  %358 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testmincgunit_testfunc2PN11alglib_impl10mincgstateEPNS_8ae_stateE(ptr noundef %26, ptr noundef %358)
  br label %354, !llvm.loop !38

359:                                              ; preds = %354
  %360 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12mincgresultsEPNS_10mincgstateEPNS_9ae_vectorEPNS_11mincgreportEPNS_8ae_stateE(ptr noundef %26, ptr noundef %17, ptr noundef %27, ptr noundef %360)
  %361 = load i8, ptr %11, align 1, !tbaa !5, !range !28, !noundef !29
  %362 = trunc i8 %361 to i1
  br i1 %362, label %397, label %363

363:                                              ; preds = %359
  %364 = getelementptr inbounds %"struct.alglib_impl::mincgreport", ptr %27, i32 0, i32 2
  %365 = load i64, ptr %364, align 8, !tbaa !34
  %366 = icmp sle i64 %365, 0
  br i1 %366, label %397, label %367

367:                                              ; preds = %363
  %368 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %369 = load ptr, ptr %368, align 8, !tbaa !15
  %370 = getelementptr inbounds double, ptr %369, i64 0
  %371 = load double, ptr %370, align 8, !tbaa !13
  %372 = load ptr, ptr %4, align 8, !tbaa !9
  %373 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 2.000000e+00, ptr noundef %372)
  %374 = fsub double %371, %373
  %375 = load ptr, ptr %4, align 8, !tbaa !9
  %376 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %374, ptr noundef %375)
  %377 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %376, double noundef 1.000000e-02)
  br i1 %377, label %397, label %378

378:                                              ; preds = %367
  %379 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %380 = load ptr, ptr %379, align 8, !tbaa !15
  %381 = getelementptr inbounds double, ptr %380, i64 1
  %382 = load double, ptr %381, align 8, !tbaa !13
  %383 = load ptr, ptr %4, align 8, !tbaa !9
  %384 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %382, ptr noundef %383)
  %385 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %384, double noundef 1.000000e-02)
  br i1 %385, label %397, label %386

386:                                              ; preds = %378
  %387 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %388 = load ptr, ptr %387, align 8, !tbaa !15
  %389 = getelementptr inbounds double, ptr %388, i64 2
  %390 = load double, ptr %389, align 8, !tbaa !13
  %391 = load ptr, ptr %4, align 8, !tbaa !9
  %392 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 2.000000e+00, ptr noundef %391)
  %393 = fsub double %390, %392
  %394 = load ptr, ptr %4, align 8, !tbaa !9
  %395 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %393, ptr noundef %394)
  %396 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %395, double noundef 1.000000e-02)
  br label %397

397:                                              ; preds = %386, %378, %367, %363, %359
  %398 = phi i1 [ true, %378 ], [ true, %367 ], [ true, %363 ], [ true, %359 ], [ %396, %386 ]
  %399 = zext i1 %398 to i8
  store i8 %399, ptr %11, align 1, !tbaa !5
  %400 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %17, i64 noundef 1, ptr noundef %400)
  store i64 1, ptr %16, align 8, !tbaa !11
  store double 0x3EB0C6F7A0B5ED8D, ptr %30, align 8, !tbaa !13
  %401 = load ptr, ptr %4, align 8, !tbaa !9
  %402 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %401)
  %403 = call double @llvm.fmuladd.f64(double 1.000000e+02, double %402, double -5.000000e+01)
  %404 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %405 = load ptr, ptr %404, align 8, !tbaa !15
  %406 = getelementptr inbounds double, ptr %405, i64 0
  store double %403, ptr %406, align 8, !tbaa !13
  %407 = load i64, ptr %29, align 8, !tbaa !11
  %408 = icmp eq i64 %407, 0
  br i1 %408, label %409, label %412

409:                                              ; preds = %397
  %410 = load i64, ptr %16, align 8, !tbaa !11
  %411 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11mincgcreateElPNS_9ae_vectorEPNS_10mincgstateEPNS_8ae_stateE(i64 noundef %410, ptr noundef %17, ptr noundef %26, ptr noundef %411)
  br label %412

412:                                              ; preds = %409, %397
  %413 = load i64, ptr %29, align 8, !tbaa !11
  %414 = icmp eq i64 %413, 1
  br i1 %414, label %415, label %419

415:                                              ; preds = %412
  %416 = load i64, ptr %16, align 8, !tbaa !11
  %417 = load double, ptr %30, align 8, !tbaa !13
  %418 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12mincgcreatefElPNS_9ae_vectorEdPNS_10mincgstateEPNS_8ae_stateE(i64 noundef %416, ptr noundef %17, double noundef %417, ptr noundef %26, ptr noundef %418)
  br label %419

419:                                              ; preds = %415, %412
  %420 = load i64, ptr %28, align 8, !tbaa !11
  %421 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14mincgsetcgtypeEPNS_10mincgstateElPNS_8ae_stateE(ptr noundef %26, i64 noundef %420, ptr noundef %421)
  br label %422

422:                                              ; preds = %459, %419
  %423 = load ptr, ptr %4, align 8, !tbaa !9
  %424 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef %26, ptr noundef %423)
  br i1 %424, label %425, label %460

425:                                              ; preds = %422
  %426 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 40
  %427 = load i8, ptr %426, align 8, !tbaa !16, !range !28, !noundef !29
  %428 = trunc i8 %427 to i1
  br i1 %428, label %433, label %429

429:                                              ; preds = %425
  %430 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 41
  %431 = load i8, ptr %430, align 1, !tbaa !30, !range !28, !noundef !29
  %432 = trunc i8 %431 to i1
  br i1 %432, label %433, label %443

433:                                              ; preds = %429, %425
  %434 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 37
  %435 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %434, i32 0, i32 4
  %436 = load ptr, ptr %435, align 8, !tbaa !15
  %437 = getelementptr inbounds double, ptr %436, i64 0
  %438 = load double, ptr %437, align 8, !tbaa !13
  %439 = load ptr, ptr %4, align 8, !tbaa !9
  %440 = call noundef double @_ZN11alglib_impl6ae_cosEdPNS_8ae_stateE(double noundef %438, ptr noundef %439)
  %441 = fneg double %440
  %442 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 38
  store double %441, ptr %442, align 8, !tbaa !31
  br label %443

443:                                              ; preds = %433, %429
  %444 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 41
  %445 = load i8, ptr %444, align 1, !tbaa !30, !range !28, !noundef !29
  %446 = trunc i8 %445 to i1
  br i1 %446, label %447, label %459

447:                                              ; preds = %443
  %448 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 37
  %449 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %448, i32 0, i32 4
  %450 = load ptr, ptr %449, align 8, !tbaa !15
  %451 = getelementptr inbounds double, ptr %450, i64 0
  %452 = load double, ptr %451, align 8, !tbaa !13
  %453 = load ptr, ptr %4, align 8, !tbaa !9
  %454 = call noundef double @_ZN11alglib_impl6ae_sinEdPNS_8ae_stateE(double noundef %452, ptr noundef %453)
  %455 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 39
  %456 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %455, i32 0, i32 4
  %457 = load ptr, ptr %456, align 8, !tbaa !15
  %458 = getelementptr inbounds double, ptr %457, i64 0
  store double %454, ptr %458, align 8, !tbaa !13
  br label %459

459:                                              ; preds = %447, %443
  br label %422, !llvm.loop !39

460:                                              ; preds = %422
  %461 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12mincgresultsEPNS_10mincgstateEPNS_9ae_vectorEPNS_11mincgreportEPNS_8ae_stateE(ptr noundef %26, ptr noundef %17, ptr noundef %27, ptr noundef %461)
  %462 = load i8, ptr %9, align 1, !tbaa !5, !range !28, !noundef !29
  %463 = trunc i8 %462 to i1
  br i1 %463, label %486, label %464

464:                                              ; preds = %460
  %465 = getelementptr inbounds %"struct.alglib_impl::mincgreport", ptr %27, i32 0, i32 2
  %466 = load i64, ptr %465, align 8, !tbaa !34
  %467 = icmp sle i64 %466, 0
  br i1 %467, label %486, label %468

468:                                              ; preds = %464
  %469 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %470 = load ptr, ptr %469, align 8, !tbaa !15
  %471 = getelementptr inbounds double, ptr %470, i64 0
  %472 = load double, ptr %471, align 8, !tbaa !13
  %473 = fdiv double %472, 0x400921FB54442D18
  %474 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %475 = load ptr, ptr %474, align 8, !tbaa !15
  %476 = getelementptr inbounds double, ptr %475, i64 0
  %477 = load double, ptr %476, align 8, !tbaa !13
  %478 = fdiv double %477, 0x400921FB54442D18
  %479 = load ptr, ptr %4, align 8, !tbaa !9
  %480 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %478, ptr noundef %479)
  %481 = sitofp i64 %480 to double
  %482 = fsub double %473, %481
  %483 = load ptr, ptr %4, align 8, !tbaa !9
  %484 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %482, ptr noundef %483)
  %485 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %484, double noundef 1.000000e-03)
  br label %486

486:                                              ; preds = %468, %464, %460
  %487 = phi i1 [ true, %464 ], [ true, %460 ], [ %485, %468 ]
  %488 = zext i1 %487 to i8
  store i8 %488, ptr %9, align 1, !tbaa !5
  %489 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %17, i64 noundef 1, ptr noundef %489)
  store i64 1, ptr %16, align 8, !tbaa !11
  store double 0x3EB0C6F7A0B5ED8D, ptr %30, align 8, !tbaa !13
  %490 = load ptr, ptr %4, align 8, !tbaa !9
  %491 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %490)
  %492 = call double @llvm.fmuladd.f64(double 1.000000e+02, double %491, double -5.000000e+01)
  %493 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %494 = load ptr, ptr %493, align 8, !tbaa !15
  %495 = getelementptr inbounds double, ptr %494, i64 0
  store double %492, ptr %495, align 8, !tbaa !13
  %496 = load i64, ptr %29, align 8, !tbaa !11
  %497 = icmp eq i64 %496, 0
  br i1 %497, label %498, label %501

498:                                              ; preds = %486
  %499 = load i64, ptr %16, align 8, !tbaa !11
  %500 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11mincgcreateElPNS_9ae_vectorEPNS_10mincgstateEPNS_8ae_stateE(i64 noundef %499, ptr noundef %17, ptr noundef %26, ptr noundef %500)
  br label %501

501:                                              ; preds = %498, %486
  %502 = load i64, ptr %29, align 8, !tbaa !11
  %503 = icmp eq i64 %502, 1
  br i1 %503, label %504, label %508

504:                                              ; preds = %501
  %505 = load i64, ptr %16, align 8, !tbaa !11
  %506 = load double, ptr %30, align 8, !tbaa !13
  %507 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12mincgcreatefElPNS_9ae_vectorEdPNS_10mincgstateEPNS_8ae_stateE(i64 noundef %505, ptr noundef %17, double noundef %506, ptr noundef %26, ptr noundef %507)
  br label %508

508:                                              ; preds = %504, %501
  %509 = load i64, ptr %28, align 8, !tbaa !11
  %510 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14mincgsetcgtypeEPNS_10mincgstateElPNS_8ae_stateE(ptr noundef %26, i64 noundef %509, ptr noundef %510)
  br label %511

511:                                              ; preds = %590, %508
  %512 = load ptr, ptr %4, align 8, !tbaa !9
  %513 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef %26, ptr noundef %512)
  br i1 %513, label %514, label %591

514:                                              ; preds = %511
  %515 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 40
  %516 = load i8, ptr %515, align 8, !tbaa !16, !range !28, !noundef !29
  %517 = trunc i8 %516 to i1
  br i1 %517, label %522, label %518

518:                                              ; preds = %514
  %519 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 41
  %520 = load i8, ptr %519, align 1, !tbaa !30, !range !28, !noundef !29
  %521 = trunc i8 %520 to i1
  br i1 %521, label %522, label %540

522:                                              ; preds = %518, %514
  %523 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 37
  %524 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %523, i32 0, i32 4
  %525 = load ptr, ptr %524, align 8, !tbaa !15
  %526 = getelementptr inbounds double, ptr %525, i64 0
  %527 = load double, ptr %526, align 8, !tbaa !13
  %528 = load ptr, ptr %4, align 8, !tbaa !9
  %529 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %527, ptr noundef %528)
  %530 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 37
  %531 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %530, i32 0, i32 4
  %532 = load ptr, ptr %531, align 8, !tbaa !15
  %533 = getelementptr inbounds double, ptr %532, i64 0
  %534 = load double, ptr %533, align 8, !tbaa !13
  %535 = load ptr, ptr %4, align 8, !tbaa !9
  %536 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %534, ptr noundef %535)
  %537 = fadd double 1.000000e+00, %536
  %538 = fdiv double %529, %537
  %539 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 38
  store double %538, ptr %539, align 8, !tbaa !31
  br label %540

540:                                              ; preds = %522, %518
  %541 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 41
  %542 = load i8, ptr %541, align 1, !tbaa !30, !range !28, !noundef !29
  %543 = trunc i8 %542 to i1
  br i1 %543, label %544, label %590

544:                                              ; preds = %540
  %545 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 37
  %546 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %545, i32 0, i32 4
  %547 = load ptr, ptr %546, align 8, !tbaa !15
  %548 = getelementptr inbounds double, ptr %547, i64 0
  %549 = load double, ptr %548, align 8, !tbaa !13
  %550 = fmul double 2.000000e+00, %549
  %551 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 37
  %552 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %551, i32 0, i32 4
  %553 = load ptr, ptr %552, align 8, !tbaa !15
  %554 = getelementptr inbounds double, ptr %553, i64 0
  %555 = load double, ptr %554, align 8, !tbaa !13
  %556 = load ptr, ptr %4, align 8, !tbaa !9
  %557 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %555, ptr noundef %556)
  %558 = fadd double 1.000000e+00, %557
  %559 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 37
  %560 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %559, i32 0, i32 4
  %561 = load ptr, ptr %560, align 8, !tbaa !15
  %562 = getelementptr inbounds double, ptr %561, i64 0
  %563 = load double, ptr %562, align 8, !tbaa !13
  %564 = load ptr, ptr %4, align 8, !tbaa !9
  %565 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %563, ptr noundef %564)
  %566 = fmul double %565, 2.000000e+00
  %567 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 37
  %568 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %567, i32 0, i32 4
  %569 = load ptr, ptr %568, align 8, !tbaa !15
  %570 = getelementptr inbounds double, ptr %569, i64 0
  %571 = load double, ptr %570, align 8, !tbaa !13
  %572 = fmul double %566, %571
  %573 = fneg double %572
  %574 = call double @llvm.fmuladd.f64(double %550, double %558, double %573)
  %575 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 37
  %576 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %575, i32 0, i32 4
  %577 = load ptr, ptr %576, align 8, !tbaa !15
  %578 = getelementptr inbounds double, ptr %577, i64 0
  %579 = load double, ptr %578, align 8, !tbaa !13
  %580 = load ptr, ptr %4, align 8, !tbaa !9
  %581 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %579, ptr noundef %580)
  %582 = fadd double 1.000000e+00, %581
  %583 = load ptr, ptr %4, align 8, !tbaa !9
  %584 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %582, ptr noundef %583)
  %585 = fdiv double %574, %584
  %586 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 39
  %587 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %586, i32 0, i32 4
  %588 = load ptr, ptr %587, align 8, !tbaa !15
  %589 = getelementptr inbounds double, ptr %588, i64 0
  store double %585, ptr %589, align 8, !tbaa !13
  br label %590

590:                                              ; preds = %544, %540
  br label %511, !llvm.loop !40

591:                                              ; preds = %511
  %592 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12mincgresultsEPNS_10mincgstateEPNS_9ae_vectorEPNS_11mincgreportEPNS_8ae_stateE(ptr noundef %26, ptr noundef %17, ptr noundef %27, ptr noundef %592)
  %593 = load i8, ptr %10, align 1, !tbaa !5, !range !28, !noundef !29
  %594 = trunc i8 %593 to i1
  br i1 %594, label %607, label %595

595:                                              ; preds = %591
  %596 = getelementptr inbounds %"struct.alglib_impl::mincgreport", ptr %27, i32 0, i32 2
  %597 = load i64, ptr %596, align 8, !tbaa !34
  %598 = icmp sle i64 %597, 0
  br i1 %598, label %607, label %599

599:                                              ; preds = %595
  %600 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %601 = load ptr, ptr %600, align 8, !tbaa !15
  %602 = getelementptr inbounds double, ptr %601, i64 0
  %603 = load double, ptr %602, align 8, !tbaa !13
  %604 = load ptr, ptr %4, align 8, !tbaa !9
  %605 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %603, ptr noundef %604)
  %606 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %605, double noundef 1.000000e-03)
  br label %607

607:                                              ; preds = %599, %595, %591
  %608 = phi i1 [ true, %595 ], [ true, %591 ], [ %606, %599 ]
  %609 = zext i1 %608 to i8
  store i8 %609, ptr %10, align 1, !tbaa !5
  store double 0x3EB0C6F7A0B5ED8D, ptr %30, align 8, !tbaa !13
  store i64 1, ptr %16, align 8, !tbaa !11
  br label %610

610:                                              ; preds = %932, %607
  %611 = load i64, ptr %16, align 8, !tbaa !11
  %612 = icmp sle i64 %611, 10
  br i1 %612, label %613, label %935

613:                                              ; preds = %610
  %614 = load i64, ptr %16, align 8, !tbaa !11
  %615 = sub nsw i64 %614, 1
  %616 = add nsw i64 %615, 1
  %617 = load i64, ptr %16, align 8, !tbaa !11
  %618 = sub nsw i64 %617, 1
  %619 = add nsw i64 %618, 1
  %620 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %24, i64 noundef %616, i64 noundef %619, ptr noundef %620)
  %621 = load i64, ptr %16, align 8, !tbaa !11
  %622 = sub nsw i64 %621, 1
  %623 = add nsw i64 %622, 1
  %624 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %17, i64 noundef %623, ptr noundef %624)
  %625 = load i64, ptr %16, align 8, !tbaa !11
  %626 = sub nsw i64 %625, 1
  %627 = add nsw i64 %626, 1
  %628 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %18, i64 noundef %627, ptr noundef %628)
  %629 = load i64, ptr %16, align 8, !tbaa !11
  %630 = sub nsw i64 %629, 1
  %631 = add nsw i64 %630, 1
  %632 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %19, i64 noundef %631, ptr noundef %632)
  store i64 0, ptr %21, align 8, !tbaa !11
  br label %633

633:                                              ; preds = %646, %613
  %634 = load i64, ptr %21, align 8, !tbaa !11
  %635 = load i64, ptr %16, align 8, !tbaa !11
  %636 = sub nsw i64 %635, 1
  %637 = icmp sle i64 %634, %636
  br i1 %637, label %638, label %649

638:                                              ; preds = %633
  %639 = load ptr, ptr %4, align 8, !tbaa !9
  %640 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %639)
  %641 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %640, double -1.000000e+00)
  %642 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %643 = load ptr, ptr %642, align 8, !tbaa !15
  %644 = load i64, ptr %21, align 8, !tbaa !11
  %645 = getelementptr inbounds double, ptr %643, i64 %644
  store double %641, ptr %645, align 8, !tbaa !13
  br label %646

646:                                              ; preds = %638
  %647 = load i64, ptr %21, align 8, !tbaa !11
  %648 = add nsw i64 %647, 1
  store i64 %648, ptr %21, align 8, !tbaa !11
  br label %633, !llvm.loop !41

649:                                              ; preds = %633
  store i64 0, ptr %21, align 8, !tbaa !11
  br label %650

650:                                              ; preds = %704, %649
  %651 = load i64, ptr %21, align 8, !tbaa !11
  %652 = load i64, ptr %16, align 8, !tbaa !11
  %653 = sub nsw i64 %652, 1
  %654 = icmp sle i64 %651, %653
  br i1 %654, label %655, label %707

655:                                              ; preds = %650
  store i64 0, ptr %22, align 8, !tbaa !11
  br label %656

656:                                              ; preds = %672, %655
  %657 = load i64, ptr %22, align 8, !tbaa !11
  %658 = load i64, ptr %16, align 8, !tbaa !11
  %659 = sub nsw i64 %658, 1
  %660 = icmp sle i64 %657, %659
  br i1 %660, label %661, label %675

661:                                              ; preds = %656
  %662 = load ptr, ptr %4, align 8, !tbaa !9
  %663 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %662)
  %664 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %663, double -1.000000e+00)
  %665 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %24, i32 0, i32 6
  %666 = load ptr, ptr %665, align 8, !tbaa !15
  %667 = load i64, ptr %21, align 8, !tbaa !11
  %668 = getelementptr inbounds ptr, ptr %666, i64 %667
  %669 = load ptr, ptr %668, align 8, !tbaa !9
  %670 = load i64, ptr %22, align 8, !tbaa !11
  %671 = getelementptr inbounds double, ptr %669, i64 %670
  store double %664, ptr %671, align 8, !tbaa !13
  br label %672

672:                                              ; preds = %661
  %673 = load i64, ptr %22, align 8, !tbaa !11
  %674 = add nsw i64 %673, 1
  store i64 %674, ptr %22, align 8, !tbaa !11
  br label %656, !llvm.loop !42

675:                                              ; preds = %656
  %676 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %24, i32 0, i32 6
  %677 = load ptr, ptr %676, align 8, !tbaa !15
  %678 = load i64, ptr %21, align 8, !tbaa !11
  %679 = getelementptr inbounds ptr, ptr %677, i64 %678
  %680 = load ptr, ptr %679, align 8, !tbaa !9
  %681 = load i64, ptr %21, align 8, !tbaa !11
  %682 = getelementptr inbounds double, ptr %680, i64 %681
  %683 = load double, ptr %682, align 8, !tbaa !13
  %684 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %24, i32 0, i32 6
  %685 = load ptr, ptr %684, align 8, !tbaa !15
  %686 = load i64, ptr %21, align 8, !tbaa !11
  %687 = getelementptr inbounds ptr, ptr %685, i64 %686
  %688 = load ptr, ptr %687, align 8, !tbaa !9
  %689 = load i64, ptr %21, align 8, !tbaa !11
  %690 = getelementptr inbounds double, ptr %688, i64 %689
  %691 = load double, ptr %690, align 8, !tbaa !13
  %692 = load ptr, ptr %4, align 8, !tbaa !9
  %693 = call noundef i64 @_ZN11alglib_impl7ae_signEdPNS_8ae_stateE(double noundef %691, ptr noundef %692)
  %694 = mul nsw i64 3, %693
  %695 = sitofp i64 %694 to double
  %696 = fadd double %683, %695
  %697 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %24, i32 0, i32 6
  %698 = load ptr, ptr %697, align 8, !tbaa !15
  %699 = load i64, ptr %21, align 8, !tbaa !11
  %700 = getelementptr inbounds ptr, ptr %698, i64 %699
  %701 = load ptr, ptr %700, align 8, !tbaa !9
  %702 = load i64, ptr %21, align 8, !tbaa !11
  %703 = getelementptr inbounds double, ptr %701, i64 %702
  store double %696, ptr %703, align 8, !tbaa !13
  br label %704

704:                                              ; preds = %675
  %705 = load i64, ptr %21, align 8, !tbaa !11
  %706 = add nsw i64 %705, 1
  store i64 %706, ptr %21, align 8, !tbaa !11
  br label %650, !llvm.loop !43

707:                                              ; preds = %650
  store i64 0, ptr %21, align 8, !tbaa !11
  br label %708

708:                                              ; preds = %732, %707
  %709 = load i64, ptr %21, align 8, !tbaa !11
  %710 = load i64, ptr %16, align 8, !tbaa !11
  %711 = sub nsw i64 %710, 1
  %712 = icmp sle i64 %709, %711
  br i1 %712, label %713, label %735

713:                                              ; preds = %708
  %714 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %24, i32 0, i32 6
  %715 = load ptr, ptr %714, align 8, !tbaa !15
  %716 = load i64, ptr %21, align 8, !tbaa !11
  %717 = getelementptr inbounds ptr, ptr %715, i64 %716
  %718 = load ptr, ptr %717, align 8, !tbaa !9
  %719 = getelementptr inbounds double, ptr %718, i64 0
  %720 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %721 = load ptr, ptr %720, align 8, !tbaa !15
  %722 = getelementptr inbounds double, ptr %721, i64 0
  %723 = load i64, ptr %16, align 8, !tbaa !11
  %724 = sub nsw i64 %723, 1
  %725 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %724)
  %726 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %719, i64 noundef 1, ptr noundef %722, i64 noundef 1, i64 noundef %725)
  store double %726, ptr %23, align 8, !tbaa !13
  %727 = load double, ptr %23, align 8, !tbaa !13
  %728 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %19, i32 0, i32 4
  %729 = load ptr, ptr %728, align 8, !tbaa !15
  %730 = load i64, ptr %21, align 8, !tbaa !11
  %731 = getelementptr inbounds double, ptr %729, i64 %730
  store double %727, ptr %731, align 8, !tbaa !13
  br label %732

732:                                              ; preds = %713
  %733 = load i64, ptr %21, align 8, !tbaa !11
  %734 = add nsw i64 %733, 1
  store i64 %734, ptr %21, align 8, !tbaa !11
  br label %708, !llvm.loop !44

735:                                              ; preds = %708
  store i64 0, ptr %21, align 8, !tbaa !11
  br label %736

736:                                              ; preds = %749, %735
  %737 = load i64, ptr %21, align 8, !tbaa !11
  %738 = load i64, ptr %16, align 8, !tbaa !11
  %739 = sub nsw i64 %738, 1
  %740 = icmp sle i64 %737, %739
  br i1 %740, label %741, label %752

741:                                              ; preds = %736
  %742 = load ptr, ptr %4, align 8, !tbaa !9
  %743 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %742)
  %744 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %743, double -1.000000e+00)
  %745 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %746 = load ptr, ptr %745, align 8, !tbaa !15
  %747 = load i64, ptr %21, align 8, !tbaa !11
  %748 = getelementptr inbounds double, ptr %746, i64 %747
  store double %744, ptr %748, align 8, !tbaa !13
  br label %749

749:                                              ; preds = %741
  %750 = load i64, ptr %21, align 8, !tbaa !11
  %751 = add nsw i64 %750, 1
  store i64 %751, ptr %21, align 8, !tbaa !11
  br label %736, !llvm.loop !45

752:                                              ; preds = %736
  %753 = load i64, ptr %29, align 8, !tbaa !11
  %754 = icmp eq i64 %753, 0
  br i1 %754, label %755, label %758

755:                                              ; preds = %752
  %756 = load i64, ptr %16, align 8, !tbaa !11
  %757 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11mincgcreateElPNS_9ae_vectorEPNS_10mincgstateEPNS_8ae_stateE(i64 noundef %756, ptr noundef %17, ptr noundef %26, ptr noundef %757)
  br label %758

758:                                              ; preds = %755, %752
  %759 = load i64, ptr %29, align 8, !tbaa !11
  %760 = icmp eq i64 %759, 1
  br i1 %760, label %761, label %765

761:                                              ; preds = %758
  %762 = load i64, ptr %16, align 8, !tbaa !11
  %763 = load double, ptr %30, align 8, !tbaa !13
  %764 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12mincgcreatefElPNS_9ae_vectorEdPNS_10mincgstateEPNS_8ae_stateE(i64 noundef %762, ptr noundef %17, double noundef %763, ptr noundef %26, ptr noundef %764)
  br label %765

765:                                              ; preds = %761, %758
  %766 = load i64, ptr %28, align 8, !tbaa !11
  %767 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14mincgsetcgtypeEPNS_10mincgstateElPNS_8ae_stateE(ptr noundef %26, i64 noundef %766, ptr noundef %767)
  br label %768

768:                                              ; preds = %890, %765
  %769 = load ptr, ptr %4, align 8, !tbaa !9
  %770 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef %26, ptr noundef %769)
  br i1 %770, label %771, label %891

771:                                              ; preds = %768
  %772 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 40
  %773 = load i8, ptr %772, align 8, !tbaa !16, !range !28, !noundef !29
  %774 = trunc i8 %773 to i1
  br i1 %774, label %779, label %775

775:                                              ; preds = %771
  %776 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 41
  %777 = load i8, ptr %776, align 1, !tbaa !30, !range !28, !noundef !29
  %778 = trunc i8 %777 to i1
  br i1 %778, label %779, label %781

779:                                              ; preds = %775, %771
  %780 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 38
  store double 0.000000e+00, ptr %780, align 8, !tbaa !31
  br label %781

781:                                              ; preds = %779, %775
  %782 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 41
  %783 = load i8, ptr %782, align 1, !tbaa !30, !range !28, !noundef !29
  %784 = trunc i8 %783 to i1
  br i1 %784, label %785, label %801

785:                                              ; preds = %781
  store i64 0, ptr %21, align 8, !tbaa !11
  br label %786

786:                                              ; preds = %797, %785
  %787 = load i64, ptr %21, align 8, !tbaa !11
  %788 = load i64, ptr %16, align 8, !tbaa !11
  %789 = sub nsw i64 %788, 1
  %790 = icmp sle i64 %787, %789
  br i1 %790, label %791, label %800

791:                                              ; preds = %786
  %792 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 39
  %793 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %792, i32 0, i32 4
  %794 = load ptr, ptr %793, align 8, !tbaa !15
  %795 = load i64, ptr %21, align 8, !tbaa !11
  %796 = getelementptr inbounds double, ptr %794, i64 %795
  store double 0.000000e+00, ptr %796, align 8, !tbaa !13
  br label %797

797:                                              ; preds = %791
  %798 = load i64, ptr %21, align 8, !tbaa !11
  %799 = add nsw i64 %798, 1
  store i64 %799, ptr %21, align 8, !tbaa !11
  br label %786, !llvm.loop !46

800:                                              ; preds = %786
  br label %801

801:                                              ; preds = %800, %781
  store i64 0, ptr %21, align 8, !tbaa !11
  br label %802

802:                                              ; preds = %887, %801
  %803 = load i64, ptr %21, align 8, !tbaa !11
  %804 = load i64, ptr %16, align 8, !tbaa !11
  %805 = sub nsw i64 %804, 1
  %806 = icmp sle i64 %803, %805
  br i1 %806, label %807, label %890

807:                                              ; preds = %802
  %808 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %24, i32 0, i32 6
  %809 = load ptr, ptr %808, align 8, !tbaa !15
  %810 = load i64, ptr %21, align 8, !tbaa !11
  %811 = getelementptr inbounds ptr, ptr %809, i64 %810
  %812 = load ptr, ptr %811, align 8, !tbaa !9
  %813 = getelementptr inbounds double, ptr %812, i64 0
  %814 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 37
  %815 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %814, i32 0, i32 4
  %816 = load ptr, ptr %815, align 8, !tbaa !15
  %817 = getelementptr inbounds double, ptr %816, i64 0
  %818 = load i64, ptr %16, align 8, !tbaa !11
  %819 = sub nsw i64 %818, 1
  %820 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %819)
  %821 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %813, i64 noundef 1, ptr noundef %817, i64 noundef 1, i64 noundef %820)
  store double %821, ptr %23, align 8, !tbaa !13
  %822 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 40
  %823 = load i8, ptr %822, align 8, !tbaa !16, !range !28, !noundef !29
  %824 = trunc i8 %823 to i1
  br i1 %824, label %829, label %825

825:                                              ; preds = %807
  %826 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 41
  %827 = load i8, ptr %826, align 1, !tbaa !30, !range !28, !noundef !29
  %828 = trunc i8 %827 to i1
  br i1 %828, label %829, label %843

829:                                              ; preds = %825, %807
  %830 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 38
  %831 = load double, ptr %830, align 8, !tbaa !31
  %832 = load double, ptr %23, align 8, !tbaa !13
  %833 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %19, i32 0, i32 4
  %834 = load ptr, ptr %833, align 8, !tbaa !15
  %835 = load i64, ptr %21, align 8, !tbaa !11
  %836 = getelementptr inbounds double, ptr %834, i64 %835
  %837 = load double, ptr %836, align 8, !tbaa !13
  %838 = fsub double %832, %837
  %839 = load ptr, ptr %4, align 8, !tbaa !9
  %840 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %838, ptr noundef %839)
  %841 = fadd double %831, %840
  %842 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 38
  store double %841, ptr %842, align 8, !tbaa !31
  br label %843

843:                                              ; preds = %829, %825
  %844 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 41
  %845 = load i8, ptr %844, align 1, !tbaa !30, !range !28, !noundef !29
  %846 = trunc i8 %845 to i1
  br i1 %846, label %847, label %886

847:                                              ; preds = %843
  store i64 0, ptr %22, align 8, !tbaa !11
  br label %848

848:                                              ; preds = %882, %847
  %849 = load i64, ptr %22, align 8, !tbaa !11
  %850 = load i64, ptr %16, align 8, !tbaa !11
  %851 = sub nsw i64 %850, 1
  %852 = icmp sle i64 %849, %851
  br i1 %852, label %853, label %885

853:                                              ; preds = %848
  %854 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 39
  %855 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %854, i32 0, i32 4
  %856 = load ptr, ptr %855, align 8, !tbaa !15
  %857 = load i64, ptr %22, align 8, !tbaa !11
  %858 = getelementptr inbounds double, ptr %856, i64 %857
  %859 = load double, ptr %858, align 8, !tbaa !13
  %860 = load double, ptr %23, align 8, !tbaa !13
  %861 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %19, i32 0, i32 4
  %862 = load ptr, ptr %861, align 8, !tbaa !15
  %863 = load i64, ptr %21, align 8, !tbaa !11
  %864 = getelementptr inbounds double, ptr %862, i64 %863
  %865 = load double, ptr %864, align 8, !tbaa !13
  %866 = fsub double %860, %865
  %867 = fmul double 2.000000e+00, %866
  %868 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %24, i32 0, i32 6
  %869 = load ptr, ptr %868, align 8, !tbaa !15
  %870 = load i64, ptr %21, align 8, !tbaa !11
  %871 = getelementptr inbounds ptr, ptr %869, i64 %870
  %872 = load ptr, ptr %871, align 8, !tbaa !9
  %873 = load i64, ptr %22, align 8, !tbaa !11
  %874 = getelementptr inbounds double, ptr %872, i64 %873
  %875 = load double, ptr %874, align 8, !tbaa !13
  %876 = call double @llvm.fmuladd.f64(double %867, double %875, double %859)
  %877 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 39
  %878 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %877, i32 0, i32 4
  %879 = load ptr, ptr %878, align 8, !tbaa !15
  %880 = load i64, ptr %22, align 8, !tbaa !11
  %881 = getelementptr inbounds double, ptr %879, i64 %880
  store double %876, ptr %881, align 8, !tbaa !13
  br label %882

882:                                              ; preds = %853
  %883 = load i64, ptr %22, align 8, !tbaa !11
  %884 = add nsw i64 %883, 1
  store i64 %884, ptr %22, align 8, !tbaa !11
  br label %848, !llvm.loop !47

885:                                              ; preds = %848
  br label %886

886:                                              ; preds = %885, %843
  br label %887

887:                                              ; preds = %886
  %888 = load i64, ptr %21, align 8, !tbaa !11
  %889 = add nsw i64 %888, 1
  store i64 %889, ptr %21, align 8, !tbaa !11
  br label %802, !llvm.loop !48

890:                                              ; preds = %802
  br label %768, !llvm.loop !49

891:                                              ; preds = %768
  %892 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12mincgresultsEPNS_10mincgstateEPNS_9ae_vectorEPNS_11mincgreportEPNS_8ae_stateE(ptr noundef %26, ptr noundef %17, ptr noundef %27, ptr noundef %892)
  %893 = load i8, ptr %8, align 1, !tbaa !5, !range !28, !noundef !29
  %894 = trunc i8 %893 to i1
  br i1 %894, label %899, label %895

895:                                              ; preds = %891
  %896 = getelementptr inbounds %"struct.alglib_impl::mincgreport", ptr %27, i32 0, i32 2
  %897 = load i64, ptr %896, align 8, !tbaa !34
  %898 = icmp sle i64 %897, 0
  br label %899

899:                                              ; preds = %895, %891
  %900 = phi i1 [ true, %891 ], [ %898, %895 ]
  %901 = zext i1 %900 to i8
  store i8 %901, ptr %8, align 1, !tbaa !5
  store i64 0, ptr %21, align 8, !tbaa !11
  br label %902

902:                                              ; preds = %928, %899
  %903 = load i64, ptr %21, align 8, !tbaa !11
  %904 = load i64, ptr %16, align 8, !tbaa !11
  %905 = sub nsw i64 %904, 1
  %906 = icmp sle i64 %903, %905
  br i1 %906, label %907, label %931

907:                                              ; preds = %902
  %908 = load i8, ptr %8, align 1, !tbaa !5, !range !28, !noundef !29
  %909 = trunc i8 %908 to i1
  br i1 %909, label %925, label %910

910:                                              ; preds = %907
  %911 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %912 = load ptr, ptr %911, align 8, !tbaa !15
  %913 = load i64, ptr %21, align 8, !tbaa !11
  %914 = getelementptr inbounds double, ptr %912, i64 %913
  %915 = load double, ptr %914, align 8, !tbaa !13
  %916 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %917 = load ptr, ptr %916, align 8, !tbaa !15
  %918 = load i64, ptr %21, align 8, !tbaa !11
  %919 = getelementptr inbounds double, ptr %917, i64 %918
  %920 = load double, ptr %919, align 8, !tbaa !13
  %921 = fsub double %915, %920
  %922 = load ptr, ptr %4, align 8, !tbaa !9
  %923 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %921, ptr noundef %922)
  %924 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %923, double noundef 1.000000e-03)
  br label %925

925:                                              ; preds = %910, %907
  %926 = phi i1 [ true, %907 ], [ %924, %910 ]
  %927 = zext i1 %926 to i8
  store i8 %927, ptr %8, align 1, !tbaa !5
  br label %928

928:                                              ; preds = %925
  %929 = load i64, ptr %21, align 8, !tbaa !11
  %930 = add nsw i64 %929, 1
  store i64 %930, ptr %21, align 8, !tbaa !11
  br label %902, !llvm.loop !50

931:                                              ; preds = %902
  br label %932

932:                                              ; preds = %931
  %933 = load i64, ptr %16, align 8, !tbaa !11
  %934 = add nsw i64 %933, 1
  store i64 %934, ptr %16, align 8, !tbaa !11
  br label %610, !llvm.loop !51

935:                                              ; preds = %610
  store double 0x3EB0C6F7A0B5ED8D, ptr %30, align 8, !tbaa !13
  store i64 3, ptr %16, align 8, !tbaa !11
  %936 = load i64, ptr %16, align 8, !tbaa !11
  %937 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %17, i64 noundef %936, ptr noundef %937)
  store i64 0, ptr %21, align 8, !tbaa !11
  br label %938

938:                                              ; preds = %951, %935
  %939 = load i64, ptr %21, align 8, !tbaa !11
  %940 = load i64, ptr %16, align 8, !tbaa !11
  %941 = sub nsw i64 %940, 1
  %942 = icmp sle i64 %939, %941
  br i1 %942, label %943, label %954

943:                                              ; preds = %938
  %944 = load ptr, ptr %4, align 8, !tbaa !9
  %945 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %944)
  %946 = call double @llvm.fmuladd.f64(double 6.000000e+00, double %945, double -3.000000e+00)
  %947 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %948 = load ptr, ptr %947, align 8, !tbaa !15
  %949 = load i64, ptr %21, align 8, !tbaa !11
  %950 = getelementptr inbounds double, ptr %948, i64 %949
  store double %946, ptr %950, align 8, !tbaa !13
  br label %951

951:                                              ; preds = %943
  %952 = load i64, ptr %21, align 8, !tbaa !11
  %953 = add nsw i64 %952, 1
  store i64 %953, ptr %21, align 8, !tbaa !11
  br label %938, !llvm.loop !52

954:                                              ; preds = %938
  %955 = load i64, ptr %29, align 8, !tbaa !11
  %956 = icmp eq i64 %955, 0
  br i1 %956, label %957, label %960

957:                                              ; preds = %954
  %958 = load i64, ptr %16, align 8, !tbaa !11
  %959 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11mincgcreateElPNS_9ae_vectorEPNS_10mincgstateEPNS_8ae_stateE(i64 noundef %958, ptr noundef %17, ptr noundef %26, ptr noundef %959)
  br label %960

960:                                              ; preds = %957, %954
  %961 = load i64, ptr %29, align 8, !tbaa !11
  %962 = icmp eq i64 %961, 1
  br i1 %962, label %963, label %967

963:                                              ; preds = %960
  %964 = load i64, ptr %16, align 8, !tbaa !11
  %965 = load double, ptr %30, align 8, !tbaa !13
  %966 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12mincgcreatefElPNS_9ae_vectorEdPNS_10mincgstateEPNS_8ae_stateE(i64 noundef %964, ptr noundef %17, double noundef %965, ptr noundef %26, ptr noundef %966)
  br label %967

967:                                              ; preds = %963, %960
  %968 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12mincgsetcondEPNS_10mincgstateEdddlPNS_8ae_stateE(ptr noundef %26, double noundef 1.000000e-03, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %968)
  %969 = load i64, ptr %28, align 8, !tbaa !11
  %970 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14mincgsetcgtypeEPNS_10mincgstateElPNS_8ae_stateE(ptr noundef %26, i64 noundef %969, ptr noundef %970)
  br label %971

971:                                              ; preds = %974, %967
  %972 = load ptr, ptr %4, align 8, !tbaa !9
  %973 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef %26, ptr noundef %972)
  br i1 %973, label %974, label %976

974:                                              ; preds = %971
  %975 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testmincgunit_testfunc3PN11alglib_impl10mincgstateEPNS_8ae_stateE(ptr noundef %26, ptr noundef %975)
  br label %971, !llvm.loop !53

976:                                              ; preds = %971
  %977 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12mincgresultsEPNS_10mincgstateEPNS_9ae_vectorEPNS_11mincgreportEPNS_8ae_stateE(ptr noundef %26, ptr noundef %17, ptr noundef %27, ptr noundef %977)
  %978 = load i8, ptr %13, align 1, !tbaa !5, !range !28, !noundef !29
  %979 = trunc i8 %978 to i1
  br i1 %979, label %984, label %980

980:                                              ; preds = %976
  %981 = getelementptr inbounds %"struct.alglib_impl::mincgreport", ptr %27, i32 0, i32 2
  %982 = load i64, ptr %981, align 8, !tbaa !34
  %983 = icmp ne i64 %982, 4
  br label %984

984:                                              ; preds = %980, %976
  %985 = phi i1 [ true, %976 ], [ %983, %980 ]
  %986 = zext i1 %985 to i8
  store i8 %986, ptr %13, align 1, !tbaa !5
  store i64 0, ptr %21, align 8, !tbaa !11
  br label %987

987:                                              ; preds = %1000, %984
  %988 = load i64, ptr %21, align 8, !tbaa !11
  %989 = load i64, ptr %16, align 8, !tbaa !11
  %990 = sub nsw i64 %989, 1
  %991 = icmp sle i64 %988, %990
  br i1 %991, label %992, label %1003

992:                                              ; preds = %987
  %993 = load ptr, ptr %4, align 8, !tbaa !9
  %994 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %993)
  %995 = call double @llvm.fmuladd.f64(double 6.000000e+00, double %994, double -3.000000e+00)
  %996 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %997 = load ptr, ptr %996, align 8, !tbaa !15
  %998 = load i64, ptr %21, align 8, !tbaa !11
  %999 = getelementptr inbounds double, ptr %997, i64 %998
  store double %995, ptr %999, align 8, !tbaa !13
  br label %1000

1000:                                             ; preds = %992
  %1001 = load i64, ptr %21, align 8, !tbaa !11
  %1002 = add nsw i64 %1001, 1
  store i64 %1002, ptr %21, align 8, !tbaa !11
  br label %987, !llvm.loop !54

1003:                                             ; preds = %987
  %1004 = load i64, ptr %29, align 8, !tbaa !11
  %1005 = icmp eq i64 %1004, 0
  br i1 %1005, label %1006, label %1009

1006:                                             ; preds = %1003
  %1007 = load i64, ptr %16, align 8, !tbaa !11
  %1008 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11mincgcreateElPNS_9ae_vectorEPNS_10mincgstateEPNS_8ae_stateE(i64 noundef %1007, ptr noundef %17, ptr noundef %26, ptr noundef %1008)
  br label %1009

1009:                                             ; preds = %1006, %1003
  %1010 = load i64, ptr %29, align 8, !tbaa !11
  %1011 = icmp eq i64 %1010, 1
  br i1 %1011, label %1012, label %1016

1012:                                             ; preds = %1009
  %1013 = load i64, ptr %16, align 8, !tbaa !11
  %1014 = load double, ptr %30, align 8, !tbaa !13
  %1015 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12mincgcreatefElPNS_9ae_vectorEdPNS_10mincgstateEPNS_8ae_stateE(i64 noundef %1013, ptr noundef %17, double noundef %1014, ptr noundef %26, ptr noundef %1015)
  br label %1016

1016:                                             ; preds = %1012, %1009
  %1017 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12mincgsetcondEPNS_10mincgstateEdddlPNS_8ae_stateE(ptr noundef %26, double noundef 0.000000e+00, double noundef 1.000000e-03, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %1017)
  %1018 = load i64, ptr %28, align 8, !tbaa !11
  %1019 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14mincgsetcgtypeEPNS_10mincgstateElPNS_8ae_stateE(ptr noundef %26, i64 noundef %1018, ptr noundef %1019)
  br label %1020

1020:                                             ; preds = %1023, %1016
  %1021 = load ptr, ptr %4, align 8, !tbaa !9
  %1022 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef %26, ptr noundef %1021)
  br i1 %1022, label %1023, label %1025

1023:                                             ; preds = %1020
  %1024 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testmincgunit_testfunc3PN11alglib_impl10mincgstateEPNS_8ae_stateE(ptr noundef %26, ptr noundef %1024)
  br label %1020, !llvm.loop !55

1025:                                             ; preds = %1020
  %1026 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12mincgresultsEPNS_10mincgstateEPNS_9ae_vectorEPNS_11mincgreportEPNS_8ae_stateE(ptr noundef %26, ptr noundef %17, ptr noundef %27, ptr noundef %1026)
  %1027 = load i8, ptr %13, align 1, !tbaa !5, !range !28, !noundef !29
  %1028 = trunc i8 %1027 to i1
  br i1 %1028, label %1033, label %1029

1029:                                             ; preds = %1025
  %1030 = getelementptr inbounds %"struct.alglib_impl::mincgreport", ptr %27, i32 0, i32 2
  %1031 = load i64, ptr %1030, align 8, !tbaa !34
  %1032 = icmp ne i64 %1031, 1
  br label %1033

1033:                                             ; preds = %1029, %1025
  %1034 = phi i1 [ true, %1025 ], [ %1032, %1029 ]
  %1035 = zext i1 %1034 to i8
  store i8 %1035, ptr %13, align 1, !tbaa !5
  store i64 0, ptr %21, align 8, !tbaa !11
  br label %1036

1036:                                             ; preds = %1049, %1033
  %1037 = load i64, ptr %21, align 8, !tbaa !11
  %1038 = load i64, ptr %16, align 8, !tbaa !11
  %1039 = sub nsw i64 %1038, 1
  %1040 = icmp sle i64 %1037, %1039
  br i1 %1040, label %1041, label %1052

1041:                                             ; preds = %1036
  %1042 = load ptr, ptr %4, align 8, !tbaa !9
  %1043 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1042)
  %1044 = call double @llvm.fmuladd.f64(double 6.000000e+00, double %1043, double -3.000000e+00)
  %1045 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %1046 = load ptr, ptr %1045, align 8, !tbaa !15
  %1047 = load i64, ptr %21, align 8, !tbaa !11
  %1048 = getelementptr inbounds double, ptr %1046, i64 %1047
  store double %1044, ptr %1048, align 8, !tbaa !13
  br label %1049

1049:                                             ; preds = %1041
  %1050 = load i64, ptr %21, align 8, !tbaa !11
  %1051 = add nsw i64 %1050, 1
  store i64 %1051, ptr %21, align 8, !tbaa !11
  br label %1036, !llvm.loop !56

1052:                                             ; preds = %1036
  %1053 = load i64, ptr %29, align 8, !tbaa !11
  %1054 = icmp eq i64 %1053, 0
  br i1 %1054, label %1055, label %1058

1055:                                             ; preds = %1052
  %1056 = load i64, ptr %16, align 8, !tbaa !11
  %1057 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11mincgcreateElPNS_9ae_vectorEPNS_10mincgstateEPNS_8ae_stateE(i64 noundef %1056, ptr noundef %17, ptr noundef %26, ptr noundef %1057)
  br label %1058

1058:                                             ; preds = %1055, %1052
  %1059 = load i64, ptr %29, align 8, !tbaa !11
  %1060 = icmp eq i64 %1059, 1
  br i1 %1060, label %1061, label %1065

1061:                                             ; preds = %1058
  %1062 = load i64, ptr %16, align 8, !tbaa !11
  %1063 = load double, ptr %30, align 8, !tbaa !13
  %1064 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12mincgcreatefElPNS_9ae_vectorEdPNS_10mincgstateEPNS_8ae_stateE(i64 noundef %1062, ptr noundef %17, double noundef %1063, ptr noundef %26, ptr noundef %1064)
  br label %1065

1065:                                             ; preds = %1061, %1058
  %1066 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12mincgsetcondEPNS_10mincgstateEdddlPNS_8ae_stateE(ptr noundef %26, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 1.000000e-03, i64 noundef 0, ptr noundef %1066)
  %1067 = load i64, ptr %28, align 8, !tbaa !11
  %1068 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14mincgsetcgtypeEPNS_10mincgstateElPNS_8ae_stateE(ptr noundef %26, i64 noundef %1067, ptr noundef %1068)
  br label %1069

1069:                                             ; preds = %1072, %1065
  %1070 = load ptr, ptr %4, align 8, !tbaa !9
  %1071 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef %26, ptr noundef %1070)
  br i1 %1071, label %1072, label %1074

1072:                                             ; preds = %1069
  %1073 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testmincgunit_testfunc3PN11alglib_impl10mincgstateEPNS_8ae_stateE(ptr noundef %26, ptr noundef %1073)
  br label %1069, !llvm.loop !57

1074:                                             ; preds = %1069
  %1075 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12mincgresultsEPNS_10mincgstateEPNS_9ae_vectorEPNS_11mincgreportEPNS_8ae_stateE(ptr noundef %26, ptr noundef %17, ptr noundef %27, ptr noundef %1075)
  %1076 = load i8, ptr %13, align 1, !tbaa !5, !range !28, !noundef !29
  %1077 = trunc i8 %1076 to i1
  br i1 %1077, label %1082, label %1078

1078:                                             ; preds = %1074
  %1079 = getelementptr inbounds %"struct.alglib_impl::mincgreport", ptr %27, i32 0, i32 2
  %1080 = load i64, ptr %1079, align 8, !tbaa !34
  %1081 = icmp ne i64 %1080, 2
  br label %1082

1082:                                             ; preds = %1078, %1074
  %1083 = phi i1 [ true, %1074 ], [ %1081, %1078 ]
  %1084 = zext i1 %1083 to i8
  store i8 %1084, ptr %13, align 1, !tbaa !5
  store i64 0, ptr %21, align 8, !tbaa !11
  br label %1085

1085:                                             ; preds = %1098, %1082
  %1086 = load i64, ptr %21, align 8, !tbaa !11
  %1087 = load i64, ptr %16, align 8, !tbaa !11
  %1088 = sub nsw i64 %1087, 1
  %1089 = icmp sle i64 %1086, %1088
  br i1 %1089, label %1090, label %1101

1090:                                             ; preds = %1085
  %1091 = load ptr, ptr %4, align 8, !tbaa !9
  %1092 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1091)
  %1093 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %1092, double -1.000000e+00)
  %1094 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %1095 = load ptr, ptr %1094, align 8, !tbaa !15
  %1096 = load i64, ptr %21, align 8, !tbaa !11
  %1097 = getelementptr inbounds double, ptr %1095, i64 %1096
  store double %1093, ptr %1097, align 8, !tbaa !13
  br label %1098

1098:                                             ; preds = %1090
  %1099 = load i64, ptr %21, align 8, !tbaa !11
  %1100 = add nsw i64 %1099, 1
  store i64 %1100, ptr %21, align 8, !tbaa !11
  br label %1085, !llvm.loop !58

1101:                                             ; preds = %1085
  %1102 = load i64, ptr %29, align 8, !tbaa !11
  %1103 = icmp eq i64 %1102, 0
  br i1 %1103, label %1104, label %1107

1104:                                             ; preds = %1101
  %1105 = load i64, ptr %16, align 8, !tbaa !11
  %1106 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11mincgcreateElPNS_9ae_vectorEPNS_10mincgstateEPNS_8ae_stateE(i64 noundef %1105, ptr noundef %17, ptr noundef %26, ptr noundef %1106)
  br label %1107

1107:                                             ; preds = %1104, %1101
  %1108 = load i64, ptr %29, align 8, !tbaa !11
  %1109 = icmp eq i64 %1108, 1
  br i1 %1109, label %1110, label %1114

1110:                                             ; preds = %1107
  %1111 = load i64, ptr %16, align 8, !tbaa !11
  %1112 = load double, ptr %30, align 8, !tbaa !13
  %1113 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12mincgcreatefElPNS_9ae_vectorEdPNS_10mincgstateEPNS_8ae_stateE(i64 noundef %1111, ptr noundef %17, double noundef %1112, ptr noundef %26, ptr noundef %1113)
  br label %1114

1114:                                             ; preds = %1110, %1107
  %1115 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12mincgsetcondEPNS_10mincgstateEdddlPNS_8ae_stateE(ptr noundef %26, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 10, ptr noundef %1115)
  %1116 = load i64, ptr %28, align 8, !tbaa !11
  %1117 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14mincgsetcgtypeEPNS_10mincgstateElPNS_8ae_stateE(ptr noundef %26, i64 noundef %1116, ptr noundef %1117)
  br label %1118

1118:                                             ; preds = %1121, %1114
  %1119 = load ptr, ptr %4, align 8, !tbaa !9
  %1120 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef %26, ptr noundef %1119)
  br i1 %1120, label %1121, label %1123

1121:                                             ; preds = %1118
  %1122 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testmincgunit_testfunc3PN11alglib_impl10mincgstateEPNS_8ae_stateE(ptr noundef %26, ptr noundef %1122)
  br label %1118, !llvm.loop !59

1123:                                             ; preds = %1118
  %1124 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12mincgresultsEPNS_10mincgstateEPNS_9ae_vectorEPNS_11mincgreportEPNS_8ae_stateE(ptr noundef %26, ptr noundef %17, ptr noundef %27, ptr noundef %1124)
  %1125 = load i8, ptr %13, align 1, !tbaa !5, !range !28, !noundef !29
  %1126 = trunc i8 %1125 to i1
  br i1 %1126, label %1142, label %1127

1127:                                             ; preds = %1123
  %1128 = getelementptr inbounds %"struct.alglib_impl::mincgreport", ptr %27, i32 0, i32 2
  %1129 = load i64, ptr %1128, align 8, !tbaa !34
  %1130 = icmp eq i64 %1129, 5
  br i1 %1130, label %1131, label %1135

1131:                                             ; preds = %1127
  %1132 = getelementptr inbounds %"struct.alglib_impl::mincgreport", ptr %27, i32 0, i32 0
  %1133 = load i64, ptr %1132, align 8, !tbaa !60
  %1134 = icmp eq i64 %1133, 10
  br i1 %1134, label %1139, label %1135

1135:                                             ; preds = %1131, %1127
  %1136 = getelementptr inbounds %"struct.alglib_impl::mincgreport", ptr %27, i32 0, i32 2
  %1137 = load i64, ptr %1136, align 8, !tbaa !34
  %1138 = icmp eq i64 %1137, 7
  br label %1139

1139:                                             ; preds = %1135, %1131
  %1140 = phi i1 [ true, %1131 ], [ %1138, %1135 ]
  %1141 = xor i1 %1140, true
  br label %1142

1142:                                             ; preds = %1139, %1123
  %1143 = phi i1 [ true, %1123 ], [ %1141, %1139 ]
  %1144 = zext i1 %1143 to i8
  store i8 %1144, ptr %13, align 1, !tbaa !5
  br label %1145

1145:                                             ; preds = %1142
  %1146 = load i64, ptr %28, align 8, !tbaa !11
  %1147 = add nsw i64 %1146, 1
  store i64 %1147, ptr %28, align 8, !tbaa !11
  br label %48, !llvm.loop !61

1148:                                             ; preds = %48
  br label %1149

1149:                                             ; preds = %1148
  %1150 = load i64, ptr %29, align 8, !tbaa !11
  %1151 = add nsw i64 %1150, 1
  store i64 %1151, ptr %29, align 8, !tbaa !11
  br label %44, !llvm.loop !62

1152:                                             ; preds = %44
  store i8 0, ptr %15, align 1, !tbaa !5
  %1153 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL26testmincgunit_testoptguardPbPN11alglib_impl8ae_stateE(ptr noundef %15, ptr noundef %1153)
  %1154 = load i8, ptr %7, align 1, !tbaa !5, !range !28, !noundef !29
  %1155 = trunc i8 %1154 to i1
  br i1 %1155, label %1180, label %1156

1156:                                             ; preds = %1152
  %1157 = load i8, ptr %8, align 1, !tbaa !5, !range !28, !noundef !29
  %1158 = trunc i8 %1157 to i1
  br i1 %1158, label %1180, label %1159

1159:                                             ; preds = %1156
  %1160 = load i8, ptr %9, align 1, !tbaa !5, !range !28, !noundef !29
  %1161 = trunc i8 %1160 to i1
  br i1 %1161, label %1180, label %1162

1162:                                             ; preds = %1159
  %1163 = load i8, ptr %10, align 1, !tbaa !5, !range !28, !noundef !29
  %1164 = trunc i8 %1163 to i1
  br i1 %1164, label %1180, label %1165

1165:                                             ; preds = %1162
  %1166 = load i8, ptr %13, align 1, !tbaa !5, !range !28, !noundef !29
  %1167 = trunc i8 %1166 to i1
  br i1 %1167, label %1180, label %1168

1168:                                             ; preds = %1165
  %1169 = load i8, ptr %14, align 1, !tbaa !5, !range !28, !noundef !29
  %1170 = trunc i8 %1169 to i1
  br i1 %1170, label %1180, label %1171

1171:                                             ; preds = %1168
  %1172 = load i8, ptr %11, align 1, !tbaa !5, !range !28, !noundef !29
  %1173 = trunc i8 %1172 to i1
  br i1 %1173, label %1180, label %1174

1174:                                             ; preds = %1171
  %1175 = load i8, ptr %12, align 1, !tbaa !5, !range !28, !noundef !29
  %1176 = trunc i8 %1175 to i1
  br i1 %1176, label %1180, label %1177

1177:                                             ; preds = %1174
  %1178 = load i8, ptr %15, align 1, !tbaa !5, !range !28, !noundef !29
  %1179 = trunc i8 %1178 to i1
  br label %1180

1180:                                             ; preds = %1177, %1174, %1171, %1168, %1165, %1162, %1159, %1156, %1152
  %1181 = phi i1 [ true, %1174 ], [ true, %1171 ], [ true, %1168 ], [ true, %1165 ], [ true, %1162 ], [ true, %1159 ], [ true, %1156 ], [ true, %1152 ], [ %1179, %1177 ]
  %1182 = zext i1 %1181 to i8
  store i8 %1182, ptr %6, align 1, !tbaa !5
  %1183 = load i8, ptr %3, align 1, !tbaa !5, !range !28, !noundef !29
  %1184 = trunc i8 %1183 to i1
  br i1 %1184, label %1267, label %1185

1185:                                             ; preds = %1180
  %1186 = call i32 (ptr, ...) @printf(ptr noundef @.str.458)
  %1187 = call i32 (ptr, ...) @printf(ptr noundef @.str.335)
  %1188 = load i8, ptr %7, align 1, !tbaa !5, !range !28, !noundef !29
  %1189 = trunc i8 %1188 to i1
  br i1 %1189, label %1190, label %1192

1190:                                             ; preds = %1185
  %1191 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1194

1192:                                             ; preds = %1185
  %1193 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1194

1194:                                             ; preds = %1192, %1190
  %1195 = call i32 (ptr, ...) @printf(ptr noundef @.str.459)
  %1196 = load i8, ptr %9, align 1, !tbaa !5, !range !28, !noundef !29
  %1197 = trunc i8 %1196 to i1
  br i1 %1197, label %1198, label %1200

1198:                                             ; preds = %1194
  %1199 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1202

1200:                                             ; preds = %1194
  %1201 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1202

1202:                                             ; preds = %1200, %1198
  %1203 = call i32 (ptr, ...) @printf(ptr noundef @.str.460)
  %1204 = load i8, ptr %10, align 1, !tbaa !5, !range !28, !noundef !29
  %1205 = trunc i8 %1204 to i1
  br i1 %1205, label %1206, label %1208

1206:                                             ; preds = %1202
  %1207 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1210

1208:                                             ; preds = %1202
  %1209 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1210

1210:                                             ; preds = %1208, %1206
  %1211 = call i32 (ptr, ...) @printf(ptr noundef @.str.337)
  %1212 = load i8, ptr %8, align 1, !tbaa !5, !range !28, !noundef !29
  %1213 = trunc i8 %1212 to i1
  br i1 %1213, label %1214, label %1216

1214:                                             ; preds = %1210
  %1215 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1218

1216:                                             ; preds = %1210
  %1217 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1218

1218:                                             ; preds = %1216, %1214
  %1219 = call i32 (ptr, ...) @printf(ptr noundef @.str.338)
  %1220 = load i8, ptr %11, align 1, !tbaa !5, !range !28, !noundef !29
  %1221 = trunc i8 %1220 to i1
  br i1 %1221, label %1222, label %1224

1222:                                             ; preds = %1218
  %1223 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1226

1224:                                             ; preds = %1218
  %1225 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1226

1226:                                             ; preds = %1224, %1222
  %1227 = call i32 (ptr, ...) @printf(ptr noundef @.str.366)
  %1228 = load i8, ptr %12, align 1, !tbaa !5, !range !28, !noundef !29
  %1229 = trunc i8 %1228 to i1
  br i1 %1229, label %1230, label %1232

1230:                                             ; preds = %1226
  %1231 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1234

1232:                                             ; preds = %1226
  %1233 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1234

1234:                                             ; preds = %1232, %1230
  %1235 = call i32 (ptr, ...) @printf(ptr noundef @.str.340)
  %1236 = load i8, ptr %13, align 1, !tbaa !5, !range !28, !noundef !29
  %1237 = trunc i8 %1236 to i1
  br i1 %1237, label %1238, label %1240

1238:                                             ; preds = %1234
  %1239 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1242

1240:                                             ; preds = %1234
  %1241 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1242

1242:                                             ; preds = %1240, %1238
  %1243 = call i32 (ptr, ...) @printf(ptr noundef @.str.342)
  %1244 = load i8, ptr %14, align 1, !tbaa !5, !range !28, !noundef !29
  %1245 = trunc i8 %1244 to i1
  br i1 %1245, label %1246, label %1248

1246:                                             ; preds = %1242
  %1247 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1250

1248:                                             ; preds = %1242
  %1249 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1250

1250:                                             ; preds = %1248, %1246
  %1251 = call i32 (ptr, ...) @printf(ptr noundef @.str.343)
  %1252 = load i8, ptr %15, align 1, !tbaa !5, !range !28, !noundef !29
  %1253 = trunc i8 %1252 to i1
  br i1 %1253, label %1254, label %1256

1254:                                             ; preds = %1250
  %1255 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1258

1256:                                             ; preds = %1250
  %1257 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1258

1258:                                             ; preds = %1256, %1254
  %1259 = load i8, ptr %6, align 1, !tbaa !5, !range !28, !noundef !29
  %1260 = trunc i8 %1259 to i1
  br i1 %1260, label %1261, label %1263

1261:                                             ; preds = %1258
  %1262 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %1265

1263:                                             ; preds = %1258
  %1264 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1265

1265:                                             ; preds = %1263, %1261
  %1266 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1267

1267:                                             ; preds = %1265, %1180
  %1268 = load i8, ptr %6, align 1, !tbaa !5, !range !28, !noundef !29
  %1269 = trunc i8 %1268 to i1
  %1270 = xor i1 %1269, true
  %1271 = zext i1 %1270 to i8
  store i8 %1271, ptr %31, align 1, !tbaa !5
  %1272 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1272)
  %1273 = load i8, ptr %31, align 1, !tbaa !5, !range !28, !noundef !29
  %1274 = trunc i8 %1273 to i1
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 5840, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 80, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #5
  ret i1 %1274
}

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z9testotherPbPN11alglib_impl8ae_stateE(ptr noundef, ptr noundef) #4

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

declare void @_ZN11alglib_impl12mincgcreatefElPNS_9ae_vectorEdPNS_10mincgstateEPNS_8ae_stateE(i64 noundef, ptr noundef, double noundef, ptr noundef, ptr noundef) #1

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

declare noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef, ptr noundef) #1

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

declare void @_ZN11alglib_impl14mincgsetstpmaxEPNS_10mincgstateEdPNS_8ae_stateE(ptr noundef, double noundef, ptr noundef) #1

declare void @_ZN11alglib_impl12mincgsetcondEPNS_10mincgstateEdddlPNS_8ae_stateE(ptr noundef, double noundef, double noundef, double noundef, i64 noundef, ptr noundef) #1

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL26testmincgunit_testoptguardPbPN11alglib_impl8ae_stateE(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 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"bool", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"double", !7, i64 0}
!15 = !{!7, !7, i64 0}
!16 = !{!17, !6, i64 1048}
!17 = !{!"_ZTSN11alglib_impl10mincgstateE", !12, i64 0, !14, i64 8, !14, i64 16, !14, i64 24, !12, i64 32, !14, i64 40, !14, i64 48, !6, i64 56, !6, i64 57, !12, i64 64, !12, i64 72, !18, i64 80, !18, i64 144, !20, i64 208, !12, i64 288, !18, i64 296, !14, i64 360, !12, i64 368, !12, i64 376, !12, i64 384, !18, i64 392, !18, i64 456, !18, i64 520, !18, i64 584, !18, i64 648, !14, i64 712, !14, i64 720, !14, i64 728, !18, i64 736, !14, i64 800, !14, i64 808, !12, i64 816, !6, i64 824, !6, i64 825, !14, i64 832, !18, i64 840, !12, i64 904, !18, i64 912, !14, i64 976, !18, i64 984, !6, i64 1048, !6, i64 1049, !6, i64 1050, !6, i64 1051, !6, i64 1052, !6, i64 1053, !6, i64 1054, !21, i64 1056, !12, i64 1320, !12, i64 1328, !12, i64 1336, !12, i64 1344, !23, i64 1352, !14, i64 1544, !14, i64 1552, !14, i64 1560, !14, i64 1568, !14, i64 1576, !14, i64 1584, !14, i64 1592, !18, i64 1600, !18, i64 1664, !18, i64 1728, !14, i64 1792, !12, i64 1800, !24, i64 1808, !18, i64 5776}
!18 = !{!"_ZTSN11alglib_impl9ae_vectorE", !12, i64 0, !12, i64 8, !6, i64 16, !19, i64 24, !7, i64 56}
!19 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24}
!20 = !{!"_ZTSN11alglib_impl9ae_matrixE", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !6, i64 32, !19, i64 40, !7, i64 72}
!21 = !{!"_ZTSN11alglib_impl10rcommstateE", !22, i64 0, !18, i64 8, !18, i64 72, !18, i64 136, !18, i64 200}
!22 = !{!"int", !7, i64 0}
!23 = !{!"_ZTSN11alglib_impl11linminstateE", !6, i64 0, !6, i64 1, !12, i64 8, !14, i64 16, !14, i64 24, !14, i64 32, !14, i64 40, !14, i64 48, !14, i64 56, !14, i64 64, !14, i64 72, !14, i64 80, !14, i64 88, !14, i64 96, !14, i64 104, !14, i64 112, !14, i64 120, !14, i64 128, !14, i64 136, !14, i64 144, !14, i64 152, !14, i64 160, !14, i64 168, !14, i64 176, !14, i64 184}
!24 = !{!"_ZTSN11alglib_impl17smoothnessmonitorE", !12, i64 0, !12, i64 8, !6, i64 16, !18, i64 24, !12, i64 88, !18, i64 96, !18, i64 160, !18, i64 224, !20, i64 288, !18, i64 368, !18, i64 432, !12, i64 496, !6, i64 504, !6, i64 505, !14, i64 512, !14, i64 520, !6, i64 528, !25, i64 536, !14, i64 832, !14, i64 840, !26, i64 848, !26, i64 1152, !14, i64 1456, !14, i64 1464, !27, i64 1472, !27, i64 1784, !6, i64 2096, !18, i64 2104, !18, i64 2168, !20, i64 2232, !21, i64 2312, !18, i64 2576, !18, i64 2640, !18, i64 2704, !18, i64 2768, !18, i64 2832, !18, i64 2896, !18, i64 2960, !18, i64 3024, !20, i64 3088, !20, i64 3168, !18, i64 3248, !18, i64 3312, !18, i64 3376, !18, i64 3440, !18, i64 3504, !18, i64 3568, !18, i64 3632, !18, i64 3696, !18, i64 3760, !18, i64 3824, !20, i64 3888}
!25 = !{!"_ZTSN11alglib_impl14optguardreportE", !6, i64 0, !6, i64 1, !12, i64 8, !14, i64 16, !6, i64 24, !6, i64 25, !6, i64 26, !12, i64 32, !14, i64 40, !6, i64 48, !12, i64 56, !12, i64 64, !18, i64 72, !20, i64 136, !20, i64 216}
!26 = !{!"_ZTSN11alglib_impl24optguardnonc1test0reportE", !6, i64 0, !12, i64 8, !18, i64 16, !18, i64 80, !12, i64 144, !18, i64 152, !18, i64 216, !12, i64 280, !12, i64 288, !12, i64 296}
!27 = !{!"_ZTSN11alglib_impl24optguardnonc1test1reportE", !6, i64 0, !12, i64 8, !12, i64 16, !18, i64 24, !18, i64 88, !12, i64 152, !18, i64 160, !18, i64 224, !12, i64 288, !12, i64 296, !12, i64 304}
!28 = !{i8 0, i8 2}
!29 = !{}
!30 = !{!17, !6, i64 1049}
!31 = !{!17, !14, i64 976}
!32 = distinct !{!32, !33}
!33 = !{!"llvm.loop.mustprogress"}
!34 = !{!35, !12, i64 16}
!35 = !{!"_ZTSN11alglib_impl11mincgreportE", !12, i64 0, !12, i64 8, !12, i64 16}
!36 = distinct !{!36, !33}
!37 = distinct !{!37, !33}
!38 = distinct !{!38, !33}
!39 = distinct !{!39, !33}
!40 = distinct !{!40, !33}
!41 = distinct !{!41, !33}
!42 = distinct !{!42, !33}
!43 = distinct !{!43, !33}
!44 = distinct !{!44, !33}
!45 = distinct !{!45, !33}
!46 = distinct !{!46, !33}
!47 = distinct !{!47, !33}
!48 = distinct !{!48, !33}
!49 = distinct !{!49, !33}
!50 = distinct !{!50, !33}
!51 = distinct !{!51, !33}
!52 = distinct !{!52, !33}
!53 = distinct !{!53, !33}
!54 = distinct !{!54, !33}
!55 = distinct !{!55, !33}
!56 = distinct !{!56, !33}
!57 = distinct !{!57, !33}
!58 = distinct !{!58, !33}
!59 = distinct !{!59, !33}
!60 = !{!35, !12, i64 0}
!61 = distinct !{!61, !33}
!62 = distinct !{!62, !33}


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

%"struct.alglib_impl::ae_frame" = type { %"struct.alglib_impl::ae_dyn_block" }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%"struct.alglib_impl::ae_vector" = type { i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon }
%union.anon = type { ptr }
%"struct.alglib_impl::ae_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%union.anon.0 = type { ptr }
%"struct.alglib_impl::mincgstate" = type { i64, double, double, double, i64, double, double, i8, i8, i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", i64, %"struct.alglib_impl::ae_vector", double, 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", double, double, double, %"struct.alglib_impl::ae_vector", double, double, i64, i8, i8, double, %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ae_vector", double, %"struct.alglib_impl::ae_vector", i8, i8, i8, i8, i8, i8, i8, %"struct.alglib_impl::rcommstate", i64, i64, i64, i64, %"struct.alglib_impl::linminstate", double, double, double, double, double, double, double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, i64, %"struct.alglib_impl::smoothnessmonitor", %"struct.alglib_impl::ae_vector" }
%"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::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::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::mincgreport" = type { i64, i64, i64 }

@.str.1 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.335 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.337 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.338 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.340 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.342 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.343 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.366 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.458 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.459 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.460 = external hidden unnamed_addr constant [43 x i8], align 1

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

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

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

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

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

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

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #3

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) local_unnamed_addr #1

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

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

declare void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #1

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

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

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

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

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

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

declare noundef double @_ZN11alglib_impl6ae_cosEdPNS_8ae_stateE(double noundef, ptr noundef) local_unnamed_addr #1

declare noundef double @_ZN11alglib_impl6ae_sinEdPNS_8ae_stateE(double noundef, ptr noundef) local_unnamed_addr #1

declare noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef) local_unnamed_addr #1

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z9testmincgbPN11alglib_impl8ae_stateE(i1 noundef zeroext %0, ptr noundef %1) local_unnamed_addr #5 {
  %3 = alloca %"struct.alglib_impl::ae_frame", align 8
  %4 = alloca i8, align 1
  %5 = alloca i8, align 1
  %6 = alloca i8, align 1
  %7 = alloca %"struct.alglib_impl::ae_vector", align 8
  %8 = alloca %"struct.alglib_impl::ae_vector", align 8
  %9 = alloca %"struct.alglib_impl::ae_vector", align 8
  %10 = alloca %"struct.alglib_impl::ae_vector", align 8
  %11 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %12 = alloca %"struct.alglib_impl::ae_vector", align 8
  %13 = alloca %"struct.alglib_impl::mincgstate", align 8
  %14 = alloca %"struct.alglib_impl::mincgreport", align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %7) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %8) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %12) #6
  call void @llvm.lifetime.start.p0(i64 5840, ptr nonnull %13) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #6
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %1, ptr noundef nonnull %3)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %7, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %8, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %9, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %10, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %11, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %12, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(5840) %13, i8 0, i64 5840, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %14, i8 0, i64 24, i1 false)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %7, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %8, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %9, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %10, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %11, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %12, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl16_mincgstate_initEPvPNS_8ae_stateEb(ptr noundef nonnull %13, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl17_mincgreport_initEPvPNS_8ae_stateEb(ptr noundef nonnull %14, ptr noundef %1, i1 noundef zeroext true)
  store i8 0, ptr %5, align 1, !tbaa !5
  store i8 0, ptr %4, align 1, !tbaa !5
  call void @_ZL33testmincgunit_testpreconditioningPbPN11alglib_impl8ae_stateE(ptr noundef nonnull %4, ptr noundef %1)
  call void @_Z9testotherPbPN11alglib_impl8ae_stateE(ptr noundef nonnull %5, ptr noundef %1)
  %15 = getelementptr inbounds i8, ptr %7, i64 56
  %16 = getelementptr inbounds i8, ptr %13, i64 1048
  %17 = getelementptr inbounds i8, ptr %13, i64 1049
  %18 = getelementptr inbounds i8, ptr %13, i64 968
  %19 = getelementptr inbounds i8, ptr %13, i64 976
  %20 = getelementptr inbounds i8, ptr %13, i64 1040
  %21 = getelementptr inbounds i8, ptr %14, i64 16
  %22 = getelementptr inbounds i8, ptr %8, i64 56
  %23 = getelementptr inbounds i8, ptr %11, i64 72
  %24 = getelementptr inbounds i8, ptr %9, i64 56
  br label %.preheader355

.preheader355:                                    ; preds = %2, %524
  %.not = phi i1 [ true, %2 ], [ false, %524 ]
  %.0322412 = phi i1 [ false, %2 ], [ %522, %524 ]
  %.0324411 = phi i1 [ false, %2 ], [ %225, %524 ]
  %.0326410 = phi i1 [ false, %2 ], [ %317, %524 ]
  %.0328409 = phi i1 [ false, %2 ], [ %264, %524 ]
  %.0330408 = phi i1 [ false, %2 ], [ %441, %524 ]
  %.0334407 = phi i1 [ false, %2 ], [ %113, %524 ]
  br label %25

25:                                               ; preds = %.preheader355, %521
  %.0317406 = phi i64 [ -1, %.preheader355 ], [ %523, %521 ]
  %.1323405 = phi i1 [ %.0322412, %.preheader355 ], [ %522, %521 ]
  %.1325404 = phi i1 [ %.0324411, %.preheader355 ], [ %225, %521 ]
  %.1327403 = phi i1 [ %.0326410, %.preheader355 ], [ %317, %521 ]
  %.1329402 = phi i1 [ %.0328409, %.preheader355 ], [ %264, %521 ]
  %.1331401 = phi i1 [ %.0330408, %.preheader355 ], [ %441, %521 ]
  %.1335400 = phi i1 [ %.0334407, %.preheader355 ], [ %113, %521 ]
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef 3, ptr noundef %1)
  %26 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %27 = call double @llvm.fmuladd.f64(double %26, double 1.000000e+02, double -5.000000e+01)
  %28 = load ptr, ptr %15, align 8, !tbaa !9
  store double %27, ptr %28, align 8, !tbaa !10
  %29 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %30 = call double @llvm.fmuladd.f64(double %29, double 1.000000e+02, double -5.000000e+01)
  %31 = load ptr, ptr %15, align 8, !tbaa !9
  %32 = getelementptr inbounds i8, ptr %31, i64 8
  store double %30, ptr %32, align 8, !tbaa !10
  %33 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %34 = call double @llvm.fmuladd.f64(double %33, double 1.000000e+02, double -5.000000e+01)
  %35 = load ptr, ptr %15, align 8, !tbaa !9
  %36 = getelementptr inbounds i8, ptr %35, i64 16
  store double %34, ptr %36, align 8, !tbaa !10
  br i1 %.not, label %.thread, label %37

.thread:                                          ; preds = %25
  call void @_ZN11alglib_impl11mincgcreateElPNS_9ae_vectorEPNS_10mincgstateEPNS_8ae_stateE(i64 noundef 3, ptr noundef nonnull %7, ptr noundef nonnull %13, ptr noundef %1)
  br label %38

37:                                               ; preds = %25
  call void @_ZN11alglib_impl12mincgcreatefElPNS_9ae_vectorEdPNS_10mincgstateEPNS_8ae_stateE(i64 noundef 3, ptr noundef nonnull %7, double noundef 0x3EB0C6F7A0B5ED8D, ptr noundef nonnull %13, ptr noundef %1)
  br label %38

38:                                               ; preds = %.thread, %37
  call void @_ZN11alglib_impl14mincgsetcgtypeEPNS_10mincgstateElPNS_8ae_stateE(ptr noundef nonnull %13, i64 noundef %.0317406, ptr noundef %1)
  %39 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %39, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %38, %89
  %40 = load i8, ptr %16, align 8, !tbaa !12, !range !26, !noundef !27
  %41 = trunc nuw i8 %40 to i1
  br i1 %41, label %45, label %42

42:                                               ; preds = %.lr.ph
  %43 = load i8, ptr %17, align 1, !tbaa !28, !range !26, !noundef !27
  %44 = trunc nuw i8 %43 to i1
  br i1 %44, label %45, label %62

45:                                               ; preds = %42, %.lr.ph
  %46 = load ptr, ptr %18, align 8, !tbaa !9
  %47 = load double, ptr %46, align 8, !tbaa !10
  %48 = fadd double %47, -2.000000e+00
  %49 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %48, ptr noundef %1)
  %50 = load ptr, ptr %18, align 8, !tbaa !9
  %51 = getelementptr inbounds i8, ptr %50, i64 8
  %52 = load double, ptr %51, align 8, !tbaa !10
  %53 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %52, ptr noundef %1)
  %54 = fadd double %49, %53
  %55 = load ptr, ptr %18, align 8, !tbaa !9
  %56 = getelementptr inbounds i8, ptr %55, i64 16
  %57 = load double, ptr %56, align 8, !tbaa !10
  %58 = load double, ptr %55, align 8, !tbaa !10
  %59 = fsub double %57, %58
  %60 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %59, ptr noundef %1)
  %61 = fadd double %54, %60
  store double %61, ptr %19, align 8, !tbaa !29
  %.pre = load i8, ptr %17, align 1, !tbaa !28, !range !26
  br label %62

62:                                               ; preds = %45, %42
  %63 = phi i8 [ %.pre, %45 ], [ %43, %42 ]
  %64 = trunc nuw i8 %63 to i1
  br i1 %64, label %65, label %89

65:                                               ; preds = %62
  %66 = load ptr, ptr %18, align 8, !tbaa !9
  %67 = load double, ptr %66, align 8, !tbaa !10
  %68 = fadd double %67, -2.000000e+00
  %69 = getelementptr inbounds i8, ptr %66, i64 16
  %70 = load double, ptr %69, align 8, !tbaa !10
  %71 = fsub double %67, %70
  %72 = fmul double %71, 2.000000e+00
  %73 = call double @llvm.fmuladd.f64(double %68, double 2.000000e+00, double %72)
  %74 = load ptr, ptr %20, align 8, !tbaa !9
  store double %73, ptr %74, align 8, !tbaa !10
  %75 = load ptr, ptr %18, align 8, !tbaa !9
  %76 = getelementptr inbounds i8, ptr %75, i64 8
  %77 = load double, ptr %76, align 8, !tbaa !10
  %78 = fmul double %77, 2.000000e+00
  %79 = load ptr, ptr %20, align 8, !tbaa !9
  %80 = getelementptr inbounds i8, ptr %79, i64 8
  store double %78, ptr %80, align 8, !tbaa !10
  %81 = load ptr, ptr %18, align 8, !tbaa !9
  %82 = getelementptr inbounds i8, ptr %81, i64 16
  %83 = load double, ptr %82, align 8, !tbaa !10
  %84 = load double, ptr %81, align 8, !tbaa !10
  %85 = fsub double %83, %84
  %86 = fmul double %85, 2.000000e+00
  %87 = load ptr, ptr %20, align 8, !tbaa !9
  %88 = getelementptr inbounds i8, ptr %87, i64 16
  store double %86, ptr %88, align 8, !tbaa !10
  br label %89

89:                                               ; preds = %65, %62
  %90 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %90, label %.lr.ph, label %._crit_edge, !llvm.loop !30

._crit_edge:                                      ; preds = %89, %38
  call void @_ZN11alglib_impl12mincgresultsEPNS_10mincgstateEPNS_9ae_vectorEPNS_11mincgreportEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef nonnull %7, ptr noundef nonnull %14, ptr noundef %1)
  %91 = load i64, ptr %21, align 8
  %92 = icmp slt i64 %91, 1
  %or.cond = select i1 %.1335400, i1 true, i1 %92
  br i1 %or.cond, label %112, label %93

93:                                               ; preds = %._crit_edge
  %94 = load ptr, ptr %15, align 8, !tbaa !9
  %95 = load double, ptr %94, align 8, !tbaa !10
  %96 = fadd double %95, -2.000000e+00
  %97 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %96, ptr noundef %1)
  %98 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %97, double noundef 1.000000e-03)
  br i1 %98, label %112, label %99

99:                                               ; preds = %93
  %100 = load ptr, ptr %15, align 8, !tbaa !9
  %101 = getelementptr inbounds i8, ptr %100, i64 8
  %102 = load double, ptr %101, align 8, !tbaa !10
  %103 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %102, ptr noundef %1)
  %104 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %103, double noundef 1.000000e-03)
  br i1 %104, label %112, label %105

105:                                              ; preds = %99
  %106 = load ptr, ptr %15, align 8, !tbaa !9
  %107 = getelementptr inbounds i8, ptr %106, i64 16
  %108 = load double, ptr %107, align 8, !tbaa !10
  %109 = fadd double %108, -2.000000e+00
  %110 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %109, ptr noundef %1)
  %111 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %110, double noundef 1.000000e-03)
  br label %112

112:                                              ; preds = %105, %99, %93, %._crit_edge
  %113 = phi i1 [ true, %99 ], [ true, %93 ], [ true, %._crit_edge ], [ %111, %105 ]
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef 3, ptr noundef %1)
  %114 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %115 = call double @llvm.fmuladd.f64(double %114, double 1.000000e+01, double 1.000000e+01)
  %116 = load ptr, ptr %15, align 8, !tbaa !9
  store double %115, ptr %116, align 8, !tbaa !10
  %117 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %118 = call double @llvm.fmuladd.f64(double %117, double 1.000000e+01, double 1.000000e+01)
  %119 = load ptr, ptr %15, align 8, !tbaa !9
  %120 = getelementptr inbounds i8, ptr %119, i64 8
  store double %118, ptr %120, align 8, !tbaa !10
  %121 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %122 = call double @llvm.fmuladd.f64(double %121, double 1.000000e+01, double 1.000000e+01)
  %123 = load ptr, ptr %15, align 8, !tbaa !9
  %124 = getelementptr inbounds i8, ptr %123, i64 16
  store double %122, ptr %124, align 8, !tbaa !10
  br i1 %.not, label %.thread444, label %125

.thread444:                                       ; preds = %112
  call void @_ZN11alglib_impl11mincgcreateElPNS_9ae_vectorEPNS_10mincgstateEPNS_8ae_stateE(i64 noundef 3, ptr noundef nonnull %7, ptr noundef nonnull %13, ptr noundef %1)
  br label %126

125:                                              ; preds = %112
  call void @_ZN11alglib_impl12mincgcreatefElPNS_9ae_vectorEdPNS_10mincgstateEPNS_8ae_stateE(i64 noundef 3, ptr noundef nonnull %7, double noundef 0x3EB0C6F7A0B5ED8D, ptr noundef nonnull %13, ptr noundef %1)
  br label %126

126:                                              ; preds = %.thread444, %125
  call void @_ZN11alglib_impl14mincgsetcgtypeEPNS_10mincgstateElPNS_8ae_stateE(ptr noundef nonnull %13, i64 noundef %.0317406, ptr noundef %1)
  call void @_ZN11alglib_impl14mincgsetstpmaxEPNS_10mincgstateEdPNS_8ae_stateE(ptr noundef nonnull %13, double noundef 1.000000e-01, ptr noundef %1)
  call void @_ZN11alglib_impl12mincgsetcondEPNS_10mincgstateEdddlPNS_8ae_stateE(ptr noundef nonnull %13, double noundef 0x3E7AD7F29ABCAF48, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %1)
  %127 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %127, label %128, label %149

128:                                              ; preds = %126
  call void @_ZL23testmincgunit_testfunc2PN11alglib_impl10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  %129 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %129, label %130, label %149

130:                                              ; preds = %128
  call void @_ZL23testmincgunit_testfunc2PN11alglib_impl10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  %131 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %131, label %132, label %149

132:                                              ; preds = %130
  call void @_ZL23testmincgunit_testfunc2PN11alglib_impl10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  %133 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %133, label %134, label %149

134:                                              ; preds = %132
  call void @_ZL23testmincgunit_testfunc2PN11alglib_impl10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  %135 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %135, label %136, label %149

136:                                              ; preds = %134
  call void @_ZL23testmincgunit_testfunc2PN11alglib_impl10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  %137 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %137, label %138, label %149

138:                                              ; preds = %136
  call void @_ZL23testmincgunit_testfunc2PN11alglib_impl10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  %139 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %139, label %140, label %149

140:                                              ; preds = %138
  call void @_ZL23testmincgunit_testfunc2PN11alglib_impl10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  %141 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %141, label %142, label %149

142:                                              ; preds = %140
  call void @_ZL23testmincgunit_testfunc2PN11alglib_impl10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  %143 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %143, label %144, label %149

144:                                              ; preds = %142
  call void @_ZL23testmincgunit_testfunc2PN11alglib_impl10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  %145 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %145, label %146, label %149

146:                                              ; preds = %144
  call void @_ZL23testmincgunit_testfunc2PN11alglib_impl10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  %147 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %147, label %148, label %149

148:                                              ; preds = %146
  call void @_ZL23testmincgunit_testfunc2PN11alglib_impl10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br label %149

149:                                              ; preds = %148, %146, %144, %142, %140, %138, %136, %134, %132, %130, %128, %126
  %150 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %151 = call double @llvm.fmuladd.f64(double %150, double 1.000000e+01, double 1.000000e+01)
  %152 = load ptr, ptr %15, align 8, !tbaa !9
  store double %151, ptr %152, align 8, !tbaa !10
  %153 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %154 = call double @llvm.fmuladd.f64(double %153, double 1.000000e+01, double 1.000000e+01)
  %155 = load ptr, ptr %15, align 8, !tbaa !9
  %156 = getelementptr inbounds i8, ptr %155, i64 8
  store double %154, ptr %156, align 8, !tbaa !10
  %157 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %158 = call double @llvm.fmuladd.f64(double %157, double 1.000000e+01, double 1.000000e+01)
  %159 = load ptr, ptr %15, align 8, !tbaa !9
  %160 = getelementptr inbounds i8, ptr %159, i64 16
  store double %158, ptr %160, align 8, !tbaa !10
  call void @_ZN11alglib_impl16mincgrestartfromEPNS_10mincgstateEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef nonnull %7, ptr noundef %1)
  %161 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %161, label %.lr.ph358, label %._crit_edge359

.lr.ph358:                                        ; preds = %149, %.lr.ph358
  call void @_ZL23testmincgunit_testfunc2PN11alglib_impl10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  %162 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %162, label %.lr.ph358, label %._crit_edge359, !llvm.loop !32

._crit_edge359:                                   ; preds = %.lr.ph358, %149
  call void @_ZN11alglib_impl12mincgresultsEPNS_10mincgstateEPNS_9ae_vectorEPNS_11mincgreportEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef nonnull %7, ptr noundef nonnull %14, ptr noundef %1)
  %163 = load i64, ptr %21, align 8
  %164 = icmp slt i64 %163, 1
  %or.cond5 = select i1 %.1325404, i1 true, i1 %164
  br i1 %or.cond5, label %186, label %165

165:                                              ; preds = %._crit_edge359
  %166 = load ptr, ptr %15, align 8, !tbaa !9
  %167 = load double, ptr %166, align 8, !tbaa !10
  %168 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 2.000000e+00, ptr noundef %1)
  %169 = fsub double %167, %168
  %170 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %169, ptr noundef %1)
  %171 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %170, double noundef 1.000000e-02)
  br i1 %171, label %186, label %172

172:                                              ; preds = %165
  %173 = load ptr, ptr %15, align 8, !tbaa !9
  %174 = getelementptr inbounds i8, ptr %173, i64 8
  %175 = load double, ptr %174, align 8, !tbaa !10
  %176 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %175, ptr noundef %1)
  %177 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %176, double noundef 1.000000e-02)
  br i1 %177, label %186, label %178

178:                                              ; preds = %172
  %179 = load ptr, ptr %15, align 8, !tbaa !9
  %180 = getelementptr inbounds i8, ptr %179, i64 16
  %181 = load double, ptr %180, align 8, !tbaa !10
  %182 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 2.000000e+00, ptr noundef %1)
  %183 = fsub double %181, %182
  %184 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %183, ptr noundef %1)
  %185 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %184, double noundef 1.000000e-02)
  br label %186

186:                                              ; preds = %178, %172, %165, %._crit_edge359
  %187 = phi i1 [ true, %172 ], [ true, %165 ], [ true, %._crit_edge359 ], [ %185, %178 ]
  %188 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %189 = call double @llvm.fmuladd.f64(double %188, double 1.000000e+01, double 1.000000e+01)
  %190 = load ptr, ptr %15, align 8, !tbaa !9
  store double %189, ptr %190, align 8, !tbaa !10
  %191 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %192 = call double @llvm.fmuladd.f64(double %191, double 1.000000e+01, double 1.000000e+01)
  %193 = load ptr, ptr %15, align 8, !tbaa !9
  %194 = getelementptr inbounds i8, ptr %193, i64 8
  store double %192, ptr %194, align 8, !tbaa !10
  %195 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %196 = call double @llvm.fmuladd.f64(double %195, double 1.000000e+01, double 1.000000e+01)
  %197 = load ptr, ptr %15, align 8, !tbaa !9
  %198 = getelementptr inbounds i8, ptr %197, i64 16
  store double %196, ptr %198, align 8, !tbaa !10
  call void @_ZN11alglib_impl16mincgrestartfromEPNS_10mincgstateEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef nonnull %7, ptr noundef %1)
  %199 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %199, label %.lr.ph361, label %._crit_edge362

.lr.ph361:                                        ; preds = %186, %.lr.ph361
  call void @_ZL23testmincgunit_testfunc2PN11alglib_impl10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  %200 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %200, label %.lr.ph361, label %._crit_edge362, !llvm.loop !33

._crit_edge362:                                   ; preds = %.lr.ph361, %186
  call void @_ZN11alglib_impl12mincgresultsEPNS_10mincgstateEPNS_9ae_vectorEPNS_11mincgreportEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef nonnull %7, ptr noundef nonnull %14, ptr noundef %1)
  %201 = load i64, ptr %21, align 8
  %202 = icmp slt i64 %201, 1
  %or.cond8 = select i1 %187, i1 true, i1 %202
  br i1 %or.cond8, label %224, label %203

203:                                              ; preds = %._crit_edge362
  %204 = load ptr, ptr %15, align 8, !tbaa !9
  %205 = load double, ptr %204, align 8, !tbaa !10
  %206 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 2.000000e+00, ptr noundef %1)
  %207 = fsub double %205, %206
  %208 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %207, ptr noundef %1)
  %209 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %208, double noundef 1.000000e-02)
  br i1 %209, label %224, label %210

210:                                              ; preds = %203
  %211 = load ptr, ptr %15, align 8, !tbaa !9
  %212 = getelementptr inbounds i8, ptr %211, i64 8
  %213 = load double, ptr %212, align 8, !tbaa !10
  %214 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %213, ptr noundef %1)
  %215 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %214, double noundef 1.000000e-02)
  br i1 %215, label %224, label %216

216:                                              ; preds = %210
  %217 = load ptr, ptr %15, align 8, !tbaa !9
  %218 = getelementptr inbounds i8, ptr %217, i64 16
  %219 = load double, ptr %218, align 8, !tbaa !10
  %220 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 2.000000e+00, ptr noundef %1)
  %221 = fsub double %219, %220
  %222 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %221, ptr noundef %1)
  %223 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %222, double noundef 1.000000e-02)
  br label %224

224:                                              ; preds = %216, %210, %203, %._crit_edge362
  %225 = phi i1 [ true, %210 ], [ true, %203 ], [ true, %._crit_edge362 ], [ %223, %216 ]
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef 1, ptr noundef %1)
  %226 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %227 = call double @llvm.fmuladd.f64(double %226, double 1.000000e+02, double -5.000000e+01)
  %228 = load ptr, ptr %15, align 8, !tbaa !9
  store double %227, ptr %228, align 8, !tbaa !10
  br i1 %.not, label %.thread445, label %229

.thread445:                                       ; preds = %224
  call void @_ZN11alglib_impl11mincgcreateElPNS_9ae_vectorEPNS_10mincgstateEPNS_8ae_stateE(i64 noundef 1, ptr noundef nonnull %7, ptr noundef nonnull %13, ptr noundef %1)
  br label %230

229:                                              ; preds = %224
  call void @_ZN11alglib_impl12mincgcreatefElPNS_9ae_vectorEdPNS_10mincgstateEPNS_8ae_stateE(i64 noundef 1, ptr noundef nonnull %7, double noundef 0x3EB0C6F7A0B5ED8D, ptr noundef nonnull %13, ptr noundef %1)
  br label %230

230:                                              ; preds = %.thread445, %229
  call void @_ZN11alglib_impl14mincgsetcgtypeEPNS_10mincgstateElPNS_8ae_stateE(ptr noundef nonnull %13, i64 noundef %.0317406, ptr noundef %1)
  %231 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %231, label %.lr.ph364, label %._crit_edge365

.lr.ph364:                                        ; preds = %230, %250
  %232 = load i8, ptr %16, align 8, !tbaa !12, !range !26, !noundef !27
  %233 = trunc nuw i8 %232 to i1
  br i1 %233, label %237, label %234

234:                                              ; preds = %.lr.ph364
  %235 = load i8, ptr %17, align 1, !tbaa !28, !range !26, !noundef !27
  %236 = trunc nuw i8 %235 to i1
  br i1 %236, label %237, label %242

237:                                              ; preds = %234, %.lr.ph364
  %238 = load ptr, ptr %18, align 8, !tbaa !9
  %239 = load double, ptr %238, align 8, !tbaa !10
  %240 = call noundef double @_ZN11alglib_impl6ae_cosEdPNS_8ae_stateE(double noundef %239, ptr noundef %1)
  %241 = fneg double %240
  store double %241, ptr %19, align 8, !tbaa !29
  %.pre438 = load i8, ptr %17, align 1, !tbaa !28, !range !26
  br label %242

242:                                              ; preds = %237, %234
  %243 = phi i8 [ %.pre438, %237 ], [ %235, %234 ]
  %244 = trunc nuw i8 %243 to i1
  br i1 %244, label %245, label %250

245:                                              ; preds = %242
  %246 = load ptr, ptr %18, align 8, !tbaa !9
  %247 = load double, ptr %246, align 8, !tbaa !10
  %248 = call noundef double @_ZN11alglib_impl6ae_sinEdPNS_8ae_stateE(double noundef %247, ptr noundef %1)
  %249 = load ptr, ptr %20, align 8, !tbaa !9
  store double %248, ptr %249, align 8, !tbaa !10
  br label %250

250:                                              ; preds = %245, %242
  %251 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %251, label %.lr.ph364, label %._crit_edge365, !llvm.loop !34

._crit_edge365:                                   ; preds = %250, %230
  call void @_ZN11alglib_impl12mincgresultsEPNS_10mincgstateEPNS_9ae_vectorEPNS_11mincgreportEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef nonnull %7, ptr noundef nonnull %14, ptr noundef %1)
  %252 = load i64, ptr %21, align 8
  %253 = icmp slt i64 %252, 1
  %or.cond11 = select i1 %.1329402, i1 true, i1 %253
  br i1 %or.cond11, label %263, label %254

254:                                              ; preds = %._crit_edge365
  %255 = load ptr, ptr %15, align 8, !tbaa !9
  %256 = load double, ptr %255, align 8, !tbaa !10
  %257 = fdiv double %256, 0x400921FB54442D18
  %258 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %257, ptr noundef %1)
  %259 = sitofp i64 %258 to double
  %260 = fsub double %257, %259
  %261 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %260, ptr noundef %1)
  %262 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %261, double noundef 1.000000e-03)
  br label %263

263:                                              ; preds = %254, %._crit_edge365
  %264 = phi i1 [ true, %._crit_edge365 ], [ %262, %254 ]
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef 1, ptr noundef %1)
  %265 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %266 = call double @llvm.fmuladd.f64(double %265, double 1.000000e+02, double -5.000000e+01)
  %267 = load ptr, ptr %15, align 8, !tbaa !9
  store double %266, ptr %267, align 8, !tbaa !10
  br i1 %.not, label %.thread446, label %268

.thread446:                                       ; preds = %263
  call void @_ZN11alglib_impl11mincgcreateElPNS_9ae_vectorEPNS_10mincgstateEPNS_8ae_stateE(i64 noundef 1, ptr noundef nonnull %7, ptr noundef nonnull %13, ptr noundef %1)
  br label %269

268:                                              ; preds = %263
  call void @_ZN11alglib_impl12mincgcreatefElPNS_9ae_vectorEdPNS_10mincgstateEPNS_8ae_stateE(i64 noundef 1, ptr noundef nonnull %7, double noundef 0x3EB0C6F7A0B5ED8D, ptr noundef nonnull %13, ptr noundef %1)
  br label %269

269:                                              ; preds = %.thread446, %268
  call void @_ZN11alglib_impl14mincgsetcgtypeEPNS_10mincgstateElPNS_8ae_stateE(ptr noundef nonnull %13, i64 noundef %.0317406, ptr noundef %1)
  %270 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %270, label %.lr.ph367, label %._crit_edge368

.lr.ph367:                                        ; preds = %269, %307
  %271 = load i8, ptr %16, align 8, !tbaa !12, !range !26, !noundef !27
  %272 = trunc nuw i8 %271 to i1
  br i1 %272, label %276, label %273

273:                                              ; preds = %.lr.ph367
  %274 = load i8, ptr %17, align 1, !tbaa !28, !range !26, !noundef !27
  %275 = trunc nuw i8 %274 to i1
  br i1 %275, label %276, label %285

276:                                              ; preds = %273, %.lr.ph367
  %277 = load ptr, ptr %18, align 8, !tbaa !9
  %278 = load double, ptr %277, align 8, !tbaa !10
  %279 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %278, ptr noundef %1)
  %280 = load ptr, ptr %18, align 8, !tbaa !9
  %281 = load double, ptr %280, align 8, !tbaa !10
  %282 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %281, ptr noundef %1)
  %283 = fadd double %282, 1.000000e+00
  %284 = fdiv double %279, %283
  store double %284, ptr %19, align 8, !tbaa !29
  %.pre439 = load i8, ptr %17, align 1, !tbaa !28, !range !26
  br label %285

285:                                              ; preds = %276, %273
  %286 = phi i8 [ %.pre439, %276 ], [ %274, %273 ]
  %287 = trunc nuw i8 %286 to i1
  br i1 %287, label %288, label %307

288:                                              ; preds = %285
  %289 = load ptr, ptr %18, align 8, !tbaa !9
  %290 = load double, ptr %289, align 8, !tbaa !10
  %291 = fmul double %290, 2.000000e+00
  %292 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %290, ptr noundef %1)
  %293 = fadd double %292, 1.000000e+00
  %294 = load ptr, ptr %18, align 8, !tbaa !9
  %295 = load double, ptr %294, align 8, !tbaa !10
  %296 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %295, ptr noundef %1)
  %297 = load ptr, ptr %18, align 8, !tbaa !9
  %298 = load double, ptr %297, align 8, !tbaa !10
  %299 = fmul double %296, -2.000000e+00
  %300 = fmul double %299, %298
  %301 = call double @llvm.fmuladd.f64(double %291, double %293, double %300)
  %302 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %298, ptr noundef %1)
  %303 = fadd double %302, 1.000000e+00
  %304 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %303, ptr noundef %1)
  %305 = fdiv double %301, %304
  %306 = load ptr, ptr %20, align 8, !tbaa !9
  store double %305, ptr %306, align 8, !tbaa !10
  br label %307

307:                                              ; preds = %288, %285
  %308 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %308, label %.lr.ph367, label %._crit_edge368, !llvm.loop !35

._crit_edge368:                                   ; preds = %307, %269
  call void @_ZN11alglib_impl12mincgresultsEPNS_10mincgstateEPNS_9ae_vectorEPNS_11mincgreportEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef nonnull %7, ptr noundef nonnull %14, ptr noundef %1)
  %309 = load i64, ptr %21, align 8
  %310 = icmp slt i64 %309, 1
  %or.cond14 = select i1 %.1327403, i1 true, i1 %310
  br i1 %or.cond14, label %316, label %311

311:                                              ; preds = %._crit_edge368
  %312 = load ptr, ptr %15, align 8, !tbaa !9
  %313 = load double, ptr %312, align 8, !tbaa !10
  %314 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %313, ptr noundef %1)
  %315 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %314, double noundef 1.000000e-03)
  br label %316

316:                                              ; preds = %311, %._crit_edge368
  %317 = phi i1 [ true, %._crit_edge368 ], [ %315, %311 ]
  br label %318

318:                                              ; preds = %316, %443
  %indvar = phi i64 [ 0, %316 ], [ %indvar.next, %443 ]
  %.0321383 = phi i64 [ 1, %316 ], [ %444, %443 ]
  %.2332382 = phi i1 [ %.1331401, %316 ], [ %441, %443 ]
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %.0321383, i64 noundef %.0321383, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %.0321383, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.0321383, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.0321383, ptr noundef %1)
  br label %319

319:                                              ; preds = %318, %319
  %.1320369 = phi i64 [ 0, %318 ], [ %324, %319 ]
  %320 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %321 = call double @llvm.fmuladd.f64(double %320, double 2.000000e+00, double -1.000000e+00)
  %322 = load ptr, ptr %22, align 8, !tbaa !9
  %323 = getelementptr inbounds double, ptr %322, i64 %.1320369
  store double %321, ptr %323, align 8, !tbaa !10
  %324 = add nuw nsw i64 %.1320369, 1
  %exitcond.not = icmp eq i64 %324, %.0321383
  br i1 %exitcond.not, label %.preheader351, label %319, !llvm.loop !36

.preheader351:                                    ; preds = %319, %333
  %.2371 = phi i64 [ %347, %333 ], [ 0, %319 ]
  br label %325

325:                                              ; preds = %.preheader351, %325
  %.0318370 = phi i64 [ 0, %.preheader351 ], [ %332, %325 ]
  %326 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %327 = call double @llvm.fmuladd.f64(double %326, double 2.000000e+00, double -1.000000e+00)
  %328 = load ptr, ptr %23, align 8, !tbaa !9
  %329 = getelementptr inbounds ptr, ptr %328, i64 %.2371
  %330 = load ptr, ptr %329, align 8, !tbaa !37
  %331 = getelementptr inbounds double, ptr %330, i64 %.0318370
  store double %327, ptr %331, align 8, !tbaa !10
  %332 = add nuw nsw i64 %.0318370, 1
  %exitcond424.not = icmp eq i64 %332, %.0321383
  br i1 %exitcond424.not, label %333, label %325, !llvm.loop !38

333:                                              ; preds = %325
  %334 = load ptr, ptr %23, align 8, !tbaa !9
  %335 = getelementptr inbounds ptr, ptr %334, i64 %.2371
  %336 = load ptr, ptr %335, align 8, !tbaa !37
  %337 = getelementptr inbounds double, ptr %336, i64 %.2371
  %338 = load double, ptr %337, align 8, !tbaa !10
  %339 = call noundef i64 @_ZN11alglib_impl7ae_signEdPNS_8ae_stateE(double noundef %338, ptr noundef %1)
  %340 = mul nsw i64 %339, 3
  %341 = sitofp i64 %340 to double
  %342 = fadd double %338, %341
  %343 = load ptr, ptr %23, align 8, !tbaa !9
  %344 = getelementptr inbounds ptr, ptr %343, i64 %.2371
  %345 = load ptr, ptr %344, align 8, !tbaa !37
  %346 = getelementptr inbounds double, ptr %345, i64 %.2371
  store double %342, ptr %346, align 8, !tbaa !10
  %347 = add nuw nsw i64 %.2371, 1
  %exitcond425.not = icmp eq i64 %347, %.0321383
  br i1 %exitcond425.not, label %.preheader353.preheader, label %.preheader351, !llvm.loop !39

.preheader353.preheader:                          ; preds = %333
  %348 = add nsw i64 %.0321383, -1
  br label %.preheader353

.preheader353:                                    ; preds = %.preheader353.preheader, %.preheader353
  %.3372 = phi i64 [ %357, %.preheader353 ], [ 0, %.preheader353.preheader ]
  %349 = load ptr, ptr %23, align 8, !tbaa !9
  %350 = getelementptr inbounds ptr, ptr %349, i64 %.3372
  %351 = load ptr, ptr %350, align 8, !tbaa !37
  %352 = load ptr, ptr %22, align 8, !tbaa !9
  %353 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %348)
  %354 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %351, i64 noundef 1, ptr noundef %352, i64 noundef 1, i64 noundef %353)
  %355 = load ptr, ptr %24, align 8, !tbaa !9
  %356 = getelementptr inbounds double, ptr %355, i64 %.3372
  store double %354, ptr %356, align 8, !tbaa !10
  %357 = add nuw nsw i64 %.3372, 1
  %exitcond426.not = icmp eq i64 %357, %.0321383
  br i1 %exitcond426.not, label %.preheader352, label %.preheader353, !llvm.loop !40

.preheader352:                                    ; preds = %.preheader353, %.preheader352
  %.4373 = phi i64 [ %362, %.preheader352 ], [ 0, %.preheader353 ]
  %358 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %359 = call double @llvm.fmuladd.f64(double %358, double 2.000000e+00, double -1.000000e+00)
  %360 = load ptr, ptr %15, align 8, !tbaa !9
  %361 = getelementptr inbounds double, ptr %360, i64 %.4373
  store double %359, ptr %361, align 8, !tbaa !10
  %362 = add nuw nsw i64 %.4373, 1
  %exitcond427.not = icmp eq i64 %362, %.0321383
  br i1 %exitcond427.not, label %363, label %.preheader352, !llvm.loop !41

363:                                              ; preds = %.preheader352
  br i1 %.not, label %.thread447, label %364

.thread447:                                       ; preds = %363
  call void @_ZN11alglib_impl11mincgcreateElPNS_9ae_vectorEPNS_10mincgstateEPNS_8ae_stateE(i64 noundef %.0321383, ptr noundef nonnull %7, ptr noundef nonnull %13, ptr noundef %1)
  br label %365

364:                                              ; preds = %363
  call void @_ZN11alglib_impl12mincgcreatefElPNS_9ae_vectorEdPNS_10mincgstateEPNS_8ae_stateE(i64 noundef %.0321383, ptr noundef nonnull %7, double noundef 0x3EB0C6F7A0B5ED8D, ptr noundef nonnull %13, ptr noundef %1)
  br label %365

365:                                              ; preds = %.thread447, %364
  call void @_ZN11alglib_impl14mincgsetcgtypeEPNS_10mincgstateElPNS_8ae_stateE(ptr noundef nonnull %13, i64 noundef %.0317406, ptr noundef %1)
  %366 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %366, label %.lr.ph378.preheader, label %._crit_edge379

.lr.ph378.preheader:                              ; preds = %365
  %xtraiter = and i64 %.0321383, 3
  %367 = icmp ult i64 %indvar, 3
  %unroll_iter = and i64 %.0321383, 9223372036854775804
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br label %.lr.ph378

.loopexit348:                                     ; preds = %.loopexit
  %368 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %368, label %.lr.ph378, label %._crit_edge379, !llvm.loop !42

.lr.ph378:                                        ; preds = %.lr.ph378.preheader, %.loopexit348
  %369 = load i8, ptr %16, align 8, !tbaa !12, !range !26, !noundef !27
  %370 = trunc nuw i8 %369 to i1
  %.pre440.pre = load i8, ptr %17, align 1, !tbaa !28, !range !26
  %.pre443 = trunc nuw i8 %.pre440.pre to i1
  br i1 %370, label %372, label %371

371:                                              ; preds = %.lr.ph378
  br i1 %.pre443, label %.thread450, label %.loopexit350.preheader

.thread450:                                       ; preds = %371
  store double 0.000000e+00, ptr %19, align 8, !tbaa !29
  br label %.preheader349.preheader

372:                                              ; preds = %.lr.ph378
  store double 0.000000e+00, ptr %19, align 8, !tbaa !29
  br i1 %.pre443, label %.preheader349.preheader, label %.loopexit350.preheader

.preheader349.preheader:                          ; preds = %.thread450, %372
  br i1 %367, label %.loopexit350.preheader.loopexit.unr-lcssa, label %.preheader349

.preheader349:                                    ; preds = %.preheader349.preheader, %.preheader349
  %.5374 = phi i64 [ %384, %.preheader349 ], [ 0, %.preheader349.preheader ]
  %niter = phi i64 [ %niter.next.3, %.preheader349 ], [ 0, %.preheader349.preheader ]
  %373 = load ptr, ptr %20, align 8, !tbaa !9
  %374 = getelementptr inbounds double, ptr %373, i64 %.5374
  store double 0.000000e+00, ptr %374, align 8, !tbaa !10
  %375 = or disjoint i64 %.5374, 1
  %376 = load ptr, ptr %20, align 8, !tbaa !9
  %377 = getelementptr inbounds double, ptr %376, i64 %375
  store double 0.000000e+00, ptr %377, align 8, !tbaa !10
  %378 = or disjoint i64 %.5374, 2
  %379 = load ptr, ptr %20, align 8, !tbaa !9
  %380 = getelementptr inbounds double, ptr %379, i64 %378
  store double 0.000000e+00, ptr %380, align 8, !tbaa !10
  %381 = or disjoint i64 %.5374, 3
  %382 = load ptr, ptr %20, align 8, !tbaa !9
  %383 = getelementptr inbounds double, ptr %382, i64 %381
  store double 0.000000e+00, ptr %383, align 8, !tbaa !10
  %384 = add nuw nsw i64 %.5374, 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 %.loopexit350.preheader.loopexit.unr-lcssa, label %.preheader349, !llvm.loop !43

.loopexit350.preheader.loopexit.unr-lcssa:        ; preds = %.preheader349, %.preheader349.preheader
  %.5374.unr = phi i64 [ 0, %.preheader349.preheader ], [ %384, %.preheader349 ]
  br i1 %lcmp.mod.not, label %.loopexit350.preheader, label %.preheader349.epil

.preheader349.epil:                               ; preds = %.loopexit350.preheader.loopexit.unr-lcssa, %.preheader349.epil
  %.5374.epil = phi i64 [ %387, %.preheader349.epil ], [ %.5374.unr, %.loopexit350.preheader.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.preheader349.epil ], [ 0, %.loopexit350.preheader.loopexit.unr-lcssa ]
  %385 = load ptr, ptr %20, align 8, !tbaa !9
  %386 = getelementptr inbounds double, ptr %385, i64 %.5374.epil
  store double 0.000000e+00, ptr %386, align 8, !tbaa !10
  %387 = add nuw nsw i64 %.5374.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 %.loopexit350.preheader, label %.preheader349.epil, !llvm.loop !44

.loopexit350.preheader:                           ; preds = %.loopexit350.preheader.loopexit.unr-lcssa, %.preheader349.epil, %371, %372
  br label %.loopexit350

.loopexit350:                                     ; preds = %.loopexit350.preheader, %.loopexit
  %.6376 = phi i64 [ %425, %.loopexit ], [ 0, %.loopexit350.preheader ]
  %388 = load ptr, ptr %23, align 8, !tbaa !9
  %389 = getelementptr inbounds ptr, ptr %388, i64 %.6376
  %390 = load ptr, ptr %389, align 8, !tbaa !37
  %391 = load ptr, ptr %18, align 8, !tbaa !9
  %392 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %348)
  %393 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %390, i64 noundef 1, ptr noundef %391, i64 noundef 1, i64 noundef %392)
  %394 = load i8, ptr %16, align 8, !tbaa !12, !range !26, !noundef !27
  %395 = trunc nuw i8 %394 to i1
  br i1 %395, label %399, label %396

396:                                              ; preds = %.loopexit350
  %397 = load i8, ptr %17, align 1, !tbaa !28, !range !26, !noundef !27
  %398 = trunc nuw i8 %397 to i1
  br i1 %398, label %399, label %407

399:                                              ; preds = %396, %.loopexit350
  %400 = load double, ptr %19, align 8, !tbaa !29
  %401 = load ptr, ptr %24, align 8, !tbaa !9
  %402 = getelementptr inbounds double, ptr %401, i64 %.6376
  %403 = load double, ptr %402, align 8, !tbaa !10
  %404 = fsub double %393, %403
  %405 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %404, ptr noundef %1)
  %406 = fadd double %400, %405
  store double %406, ptr %19, align 8, !tbaa !29
  %.pre441 = load i8, ptr %17, align 1, !tbaa !28, !range !26
  br label %407

407:                                              ; preds = %399, %396
  %408 = phi i8 [ %.pre441, %399 ], [ %397, %396 ]
  %409 = trunc nuw i8 %408 to i1
  br i1 %409, label %.preheader, label %.loopexit

.preheader:                                       ; preds = %407, %.preheader
  %.1375 = phi i64 [ %424, %.preheader ], [ 0, %407 ]
  %410 = load ptr, ptr %20, align 8, !tbaa !9
  %411 = getelementptr inbounds double, ptr %410, i64 %.1375
  %412 = load double, ptr %411, align 8, !tbaa !10
  %413 = load ptr, ptr %24, align 8, !tbaa !9
  %414 = getelementptr inbounds double, ptr %413, i64 %.6376
  %415 = load double, ptr %414, align 8, !tbaa !10
  %416 = fsub double %393, %415
  %417 = fmul double %416, 2.000000e+00
  %418 = load ptr, ptr %23, align 8, !tbaa !9
  %419 = getelementptr inbounds ptr, ptr %418, i64 %.6376
  %420 = load ptr, ptr %419, align 8, !tbaa !37
  %421 = getelementptr inbounds double, ptr %420, i64 %.1375
  %422 = load double, ptr %421, align 8, !tbaa !10
  %423 = call double @llvm.fmuladd.f64(double %417, double %422, double %412)
  store double %423, ptr %411, align 8, !tbaa !10
  %424 = add nuw nsw i64 %.1375, 1
  %exitcond429.not = icmp eq i64 %424, %.0321383
  br i1 %exitcond429.not, label %.loopexit, label %.preheader, !llvm.loop !46

.loopexit:                                        ; preds = %.preheader, %407
  %425 = add nuw nsw i64 %.6376, 1
  %exitcond430.not = icmp eq i64 %425, %.0321383
  br i1 %exitcond430.not, label %.loopexit348, label %.loopexit350, !llvm.loop !47

._crit_edge379:                                   ; preds = %.loopexit348, %365
  call void @_ZN11alglib_impl12mincgresultsEPNS_10mincgstateEPNS_9ae_vectorEPNS_11mincgreportEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef nonnull %7, ptr noundef nonnull %14, ptr noundef %1)
  %426 = load i64, ptr %21, align 8
  %427 = icmp slt i64 %426, 1
  %428 = select i1 %.2332382, i1 true, i1 %427
  br label %429

429:                                              ; preds = %._crit_edge379, %440
  %.7381 = phi i64 [ 0, %._crit_edge379 ], [ %442, %440 ]
  %.3333.in380 = phi i1 [ %428, %._crit_edge379 ], [ %441, %440 ]
  br i1 %.3333.in380, label %440, label %430

430:                                              ; preds = %429
  %431 = load ptr, ptr %15, align 8, !tbaa !9
  %432 = getelementptr inbounds double, ptr %431, i64 %.7381
  %433 = load double, ptr %432, align 8, !tbaa !10
  %434 = load ptr, ptr %22, align 8, !tbaa !9
  %435 = getelementptr inbounds double, ptr %434, i64 %.7381
  %436 = load double, ptr %435, align 8, !tbaa !10
  %437 = fsub double %433, %436
  %438 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %437, ptr noundef %1)
  %439 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %438, double noundef 1.000000e-03)
  br label %440

440:                                              ; preds = %430, %429
  %441 = phi i1 [ true, %429 ], [ %439, %430 ]
  %442 = add nuw nsw i64 %.7381, 1
  %exitcond431.not = icmp eq i64 %442, %.0321383
  br i1 %exitcond431.not, label %443, label %429, !llvm.loop !48

443:                                              ; preds = %440
  %444 = add nuw nsw i64 %.0321383, 1
  %exitcond432.not = icmp eq i64 %444, 11
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond432.not, label %445, label %318, !llvm.loop !49

445:                                              ; preds = %443
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef 3, ptr noundef %1)
  %446 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %447 = call double @llvm.fmuladd.f64(double %446, double 6.000000e+00, double -3.000000e+00)
  %448 = load ptr, ptr %15, align 8, !tbaa !9
  store double %447, ptr %448, align 8, !tbaa !10
  %449 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %450 = call double @llvm.fmuladd.f64(double %449, double 6.000000e+00, double -3.000000e+00)
  %451 = load ptr, ptr %15, align 8, !tbaa !9
  %452 = getelementptr inbounds i8, ptr %451, i64 8
  store double %450, ptr %452, align 8, !tbaa !10
  %453 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %454 = call double @llvm.fmuladd.f64(double %453, double 6.000000e+00, double -3.000000e+00)
  %455 = load ptr, ptr %15, align 8, !tbaa !9
  %456 = getelementptr inbounds i8, ptr %455, i64 16
  store double %454, ptr %456, align 8, !tbaa !10
  br i1 %.not, label %.thread452, label %457

.thread452:                                       ; preds = %445
  call void @_ZN11alglib_impl11mincgcreateElPNS_9ae_vectorEPNS_10mincgstateEPNS_8ae_stateE(i64 noundef 3, ptr noundef nonnull %7, ptr noundef nonnull %13, ptr noundef %1)
  br label %458

457:                                              ; preds = %445
  call void @_ZN11alglib_impl12mincgcreatefElPNS_9ae_vectorEdPNS_10mincgstateEPNS_8ae_stateE(i64 noundef 3, ptr noundef nonnull %7, double noundef 0x3EB0C6F7A0B5ED8D, ptr noundef nonnull %13, ptr noundef %1)
  br label %458

458:                                              ; preds = %.thread452, %457
  call void @_ZN11alglib_impl12mincgsetcondEPNS_10mincgstateEdddlPNS_8ae_stateE(ptr noundef nonnull %13, double noundef 1.000000e-03, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %1)
  call void @_ZN11alglib_impl14mincgsetcgtypeEPNS_10mincgstateElPNS_8ae_stateE(ptr noundef nonnull %13, i64 noundef %.0317406, ptr noundef %1)
  %459 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %459, label %.lr.ph386, label %._crit_edge387

.lr.ph386:                                        ; preds = %458, %.lr.ph386
  call void @_ZL23testmincgunit_testfunc3PN11alglib_impl10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  %460 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %460, label %.lr.ph386, label %._crit_edge387, !llvm.loop !50

._crit_edge387:                                   ; preds = %.lr.ph386, %458
  call void @_ZN11alglib_impl12mincgresultsEPNS_10mincgstateEPNS_9ae_vectorEPNS_11mincgreportEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef nonnull %7, ptr noundef nonnull %14, ptr noundef %1)
  %461 = load i64, ptr %21, align 8
  %462 = icmp ne i64 %461, 4
  %463 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %464 = call double @llvm.fmuladd.f64(double %463, double 6.000000e+00, double -3.000000e+00)
  %465 = load ptr, ptr %15, align 8, !tbaa !9
  store double %464, ptr %465, align 8, !tbaa !10
  %466 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %467 = call double @llvm.fmuladd.f64(double %466, double 6.000000e+00, double -3.000000e+00)
  %468 = load ptr, ptr %15, align 8, !tbaa !9
  %469 = getelementptr inbounds i8, ptr %468, i64 8
  store double %467, ptr %469, align 8, !tbaa !10
  %470 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %471 = call double @llvm.fmuladd.f64(double %470, double 6.000000e+00, double -3.000000e+00)
  %472 = load ptr, ptr %15, align 8, !tbaa !9
  %473 = getelementptr inbounds i8, ptr %472, i64 16
  store double %471, ptr %473, align 8, !tbaa !10
  %474 = select i1 %.1323405, i1 true, i1 %462
  br i1 %.not, label %.thread453, label %475

.thread453:                                       ; preds = %._crit_edge387
  call void @_ZN11alglib_impl11mincgcreateElPNS_9ae_vectorEPNS_10mincgstateEPNS_8ae_stateE(i64 noundef 3, ptr noundef nonnull %7, ptr noundef nonnull %13, ptr noundef %1)
  br label %476

475:                                              ; preds = %._crit_edge387
  call void @_ZN11alglib_impl12mincgcreatefElPNS_9ae_vectorEdPNS_10mincgstateEPNS_8ae_stateE(i64 noundef 3, ptr noundef nonnull %7, double noundef 0x3EB0C6F7A0B5ED8D, ptr noundef nonnull %13, ptr noundef %1)
  br label %476

476:                                              ; preds = %.thread453, %475
  call void @_ZN11alglib_impl12mincgsetcondEPNS_10mincgstateEdddlPNS_8ae_stateE(ptr noundef nonnull %13, double noundef 0.000000e+00, double noundef 1.000000e-03, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %1)
  call void @_ZN11alglib_impl14mincgsetcgtypeEPNS_10mincgstateElPNS_8ae_stateE(ptr noundef nonnull %13, i64 noundef %.0317406, ptr noundef %1)
  %477 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %477, label %.lr.ph390, label %._crit_edge391

.lr.ph390:                                        ; preds = %476, %.lr.ph390
  call void @_ZL23testmincgunit_testfunc3PN11alglib_impl10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  %478 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %478, label %.lr.ph390, label %._crit_edge391, !llvm.loop !51

._crit_edge391:                                   ; preds = %.lr.ph390, %476
  call void @_ZN11alglib_impl12mincgresultsEPNS_10mincgstateEPNS_9ae_vectorEPNS_11mincgreportEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef nonnull %7, ptr noundef nonnull %14, ptr noundef %1)
  %479 = load i64, ptr %21, align 8
  %480 = icmp ne i64 %479, 1
  %481 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %482 = call double @llvm.fmuladd.f64(double %481, double 6.000000e+00, double -3.000000e+00)
  %483 = load ptr, ptr %15, align 8, !tbaa !9
  store double %482, ptr %483, align 8, !tbaa !10
  %484 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %485 = call double @llvm.fmuladd.f64(double %484, double 6.000000e+00, double -3.000000e+00)
  %486 = load ptr, ptr %15, align 8, !tbaa !9
  %487 = getelementptr inbounds i8, ptr %486, i64 8
  store double %485, ptr %487, align 8, !tbaa !10
  %488 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %489 = call double @llvm.fmuladd.f64(double %488, double 6.000000e+00, double -3.000000e+00)
  %490 = load ptr, ptr %15, align 8, !tbaa !9
  %491 = getelementptr inbounds i8, ptr %490, i64 16
  store double %489, ptr %491, align 8, !tbaa !10
  %492 = select i1 %474, i1 true, i1 %480
  br i1 %.not, label %.thread454, label %493

.thread454:                                       ; preds = %._crit_edge391
  call void @_ZN11alglib_impl11mincgcreateElPNS_9ae_vectorEPNS_10mincgstateEPNS_8ae_stateE(i64 noundef 3, ptr noundef nonnull %7, ptr noundef nonnull %13, ptr noundef %1)
  br label %494

493:                                              ; preds = %._crit_edge391
  call void @_ZN11alglib_impl12mincgcreatefElPNS_9ae_vectorEdPNS_10mincgstateEPNS_8ae_stateE(i64 noundef 3, ptr noundef nonnull %7, double noundef 0x3EB0C6F7A0B5ED8D, ptr noundef nonnull %13, ptr noundef %1)
  br label %494

494:                                              ; preds = %.thread454, %493
  call void @_ZN11alglib_impl12mincgsetcondEPNS_10mincgstateEdddlPNS_8ae_stateE(ptr noundef nonnull %13, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 1.000000e-03, i64 noundef 0, ptr noundef %1)
  call void @_ZN11alglib_impl14mincgsetcgtypeEPNS_10mincgstateElPNS_8ae_stateE(ptr noundef nonnull %13, i64 noundef %.0317406, ptr noundef %1)
  %495 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %495, label %.lr.ph394, label %._crit_edge395

.lr.ph394:                                        ; preds = %494, %.lr.ph394
  call void @_ZL23testmincgunit_testfunc3PN11alglib_impl10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  %496 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %496, label %.lr.ph394, label %._crit_edge395, !llvm.loop !52

._crit_edge395:                                   ; preds = %.lr.ph394, %494
  call void @_ZN11alglib_impl12mincgresultsEPNS_10mincgstateEPNS_9ae_vectorEPNS_11mincgreportEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef nonnull %7, ptr noundef nonnull %14, ptr noundef %1)
  %497 = load i64, ptr %21, align 8
  %498 = icmp ne i64 %497, 2
  %499 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %500 = call double @llvm.fmuladd.f64(double %499, double 2.000000e+00, double -1.000000e+00)
  %501 = load ptr, ptr %15, align 8, !tbaa !9
  store double %500, ptr %501, align 8, !tbaa !10
  %502 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %503 = call double @llvm.fmuladd.f64(double %502, double 2.000000e+00, double -1.000000e+00)
  %504 = load ptr, ptr %15, align 8, !tbaa !9
  %505 = getelementptr inbounds i8, ptr %504, i64 8
  store double %503, ptr %505, align 8, !tbaa !10
  %506 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %507 = call double @llvm.fmuladd.f64(double %506, double 2.000000e+00, double -1.000000e+00)
  %508 = load ptr, ptr %15, align 8, !tbaa !9
  %509 = getelementptr inbounds i8, ptr %508, i64 16
  store double %507, ptr %509, align 8, !tbaa !10
  %510 = select i1 %492, i1 true, i1 %498
  br i1 %.not, label %.thread455, label %511

.thread455:                                       ; preds = %._crit_edge395
  call void @_ZN11alglib_impl11mincgcreateElPNS_9ae_vectorEPNS_10mincgstateEPNS_8ae_stateE(i64 noundef 3, ptr noundef nonnull %7, ptr noundef nonnull %13, ptr noundef %1)
  br label %512

511:                                              ; preds = %._crit_edge395
  call void @_ZN11alglib_impl12mincgcreatefElPNS_9ae_vectorEdPNS_10mincgstateEPNS_8ae_stateE(i64 noundef 3, ptr noundef nonnull %7, double noundef 0x3EB0C6F7A0B5ED8D, ptr noundef nonnull %13, ptr noundef %1)
  br label %512

512:                                              ; preds = %.thread455, %511
  call void @_ZN11alglib_impl12mincgsetcondEPNS_10mincgstateEdddlPNS_8ae_stateE(ptr noundef nonnull %13, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef 10, ptr noundef %1)
  call void @_ZN11alglib_impl14mincgsetcgtypeEPNS_10mincgstateElPNS_8ae_stateE(ptr noundef nonnull %13, i64 noundef %.0317406, ptr noundef %1)
  %513 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %513, label %.lr.ph398, label %._crit_edge399

.lr.ph398:                                        ; preds = %512, %.lr.ph398
  call void @_ZL23testmincgunit_testfunc3PN11alglib_impl10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  %514 = call noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  br i1 %514, label %.lr.ph398, label %._crit_edge399, !llvm.loop !53

._crit_edge399:                                   ; preds = %.lr.ph398, %512
  call void @_ZN11alglib_impl12mincgresultsEPNS_10mincgstateEPNS_9ae_vectorEPNS_11mincgreportEPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef nonnull %7, ptr noundef nonnull %14, ptr noundef %1)
  br i1 %510, label %521, label %515

515:                                              ; preds = %._crit_edge399
  %516 = load i64, ptr %21, align 8, !tbaa !54
  %517 = icmp ne i64 %516, 5
  %518 = load i64, ptr %14, align 8
  %519 = icmp ne i64 %518, 10
  %or.cond17.not347 = select i1 %517, i1 true, i1 %519
  %520 = icmp ne i64 %516, 7
  %spec.select.not = and i1 %520, %or.cond17.not347
  br label %521

521:                                              ; preds = %515, %._crit_edge399
  %522 = phi i1 [ true, %._crit_edge399 ], [ %spec.select.not, %515 ]
  %523 = add nsw i64 %.0317406, 1
  %exitcond437.not = icmp eq i64 %523, 2
  br i1 %exitcond437.not, label %524, label %25, !llvm.loop !56

524:                                              ; preds = %521
  br i1 %.not, label %.preheader355, label %525, !llvm.loop !57

525:                                              ; preds = %524
  store i8 0, ptr %6, align 1, !tbaa !5
  call void @_ZL26testmincgunit_testoptguardPbPN11alglib_impl8ae_stateE(ptr noundef nonnull %6, ptr noundef %1)
  %brmerge = or i1 %113, %441
  %brmerge461 = or i1 %brmerge, %264
  %brmerge462 = or i1 %brmerge461, %317
  %brmerge463 = select i1 %brmerge462, i1 true, i1 %522
  %526 = load i8, ptr %5, align 1, !range !26
  %527 = trunc nuw i8 %526 to i1
  %brmerge464 = or i1 %225, %527
  %or.cond474 = select i1 %brmerge463, i1 true, i1 %brmerge464
  br i1 %or.cond474, label %534, label %528

528:                                              ; preds = %525
  %529 = load i8, ptr %4, align 1, !tbaa !5, !range !26, !noundef !27
  %530 = trunc nuw i8 %529 to i1
  br i1 %530, label %534, label %531

531:                                              ; preds = %528
  %532 = load i8, ptr %6, align 1, !tbaa !5, !range !26, !noundef !27
  %533 = trunc nuw i8 %532 to i1
  br label %534

534:                                              ; preds = %525, %531, %528
  %535 = phi i1 [ true, %528 ], [ true, %525 ], [ %533, %531 ]
  br i1 %0, label %564, label %536

536:                                              ; preds = %534
  %537 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.458)
  %538 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.335)
  %.str.7..str.6 = select i1 %113, ptr @.str.7, ptr @.str.6
  %539 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.7..str.6)
  %540 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.459)
  %.str.6.sink465 = select i1 %264, ptr @.str.7, ptr @.str.6
  %541 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink465)
  %542 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.460)
  %.str.6.sink466 = select i1 %317, ptr @.str.7, ptr @.str.6
  %543 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink466)
  %544 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.337)
  %.str.6.sink467 = select i1 %441, ptr @.str.7, ptr @.str.6
  %545 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink467)
  %546 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.338)
  %.str.6.sink468 = select i1 %225, ptr @.str.7, ptr @.str.6
  %547 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink468)
  %548 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.366)
  %549 = load i8, ptr %4, align 1, !tbaa !5, !range !26, !noundef !27
  %550 = trunc nuw i8 %549 to i1
  %.str.6.sink469 = select i1 %550, ptr @.str.7, ptr @.str.6
  %551 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink469)
  %552 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.340)
  %.str.6.sink470 = select i1 %522, ptr @.str.7, ptr @.str.6
  %553 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink470)
  %554 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.342)
  %555 = load i8, ptr %5, align 1, !tbaa !5, !range !26, !noundef !27
  %556 = trunc nuw i8 %555 to i1
  %.str.6.sink471 = select i1 %556, ptr @.str.7, ptr @.str.6
  %557 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink471)
  %558 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.343)
  %559 = load i8, ptr %6, align 1, !tbaa !5, !range !26, !noundef !27
  %560 = trunc nuw i8 %559 to i1
  %.str.6.sink472 = select i1 %560, ptr @.str.7, ptr @.str.6
  %561 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink472)
  %.str.2.sink = select i1 %535, ptr @.str.1, ptr @.str.2
  %562 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.2.sink)
  %563 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3)
  br label %564

564:                                              ; preds = %536, %534
  %565 = xor i1 %535, true
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 5840, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #6
  ret i1 %565
}

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z9testotherPbPN11alglib_impl8ae_stateE(ptr noundef, ptr noundef) local_unnamed_addr #5

declare void @_ZN11alglib_impl11mincgcreateElPNS_9ae_vectorEPNS_10mincgstateEPNS_8ae_stateE(i64 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

declare void @_ZN11alglib_impl12mincgcreatefElPNS_9ae_vectorEdPNS_10mincgstateEPNS_8ae_stateE(i64 noundef, ptr noundef, double noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

declare void @_ZN11alglib_impl14mincgsetcgtypeEPNS_10mincgstateElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #1

declare noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef, ptr noundef) local_unnamed_addr #1

declare void @_ZN11alglib_impl12mincgresultsEPNS_10mincgstateEPNS_9ae_vectorEPNS_11mincgreportEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

declare void @_ZN11alglib_impl14mincgsetstpmaxEPNS_10mincgstateEdPNS_8ae_stateE(ptr noundef, double noundef, ptr noundef) local_unnamed_addr #1

declare void @_ZN11alglib_impl12mincgsetcondEPNS_10mincgstateEdddlPNS_8ae_stateE(ptr noundef, double noundef, double noundef, double noundef, i64 noundef, ptr noundef) local_unnamed_addr #1

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

declare void @_ZN11alglib_impl16mincgrestartfromEPNS_10mincgstateEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"bool", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"double", !7, i64 0}
!12 = !{!13, !6, i64 1048}
!13 = !{!"_ZTSN11alglib_impl10mincgstateE", !14, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !14, i64 32, !11, i64 40, !11, i64 48, !6, i64 56, !6, i64 57, !14, i64 64, !14, i64 72, !15, i64 80, !15, i64 144, !18, i64 208, !14, i64 288, !15, i64 296, !11, i64 360, !14, i64 368, !14, i64 376, !14, i64 384, !15, i64 392, !15, i64 456, !15, i64 520, !15, i64 584, !15, i64 648, !11, i64 712, !11, i64 720, !11, i64 728, !15, i64 736, !11, i64 800, !11, i64 808, !14, i64 816, !6, i64 824, !6, i64 825, !11, i64 832, !15, i64 840, !14, i64 904, !15, i64 912, !11, i64 976, !15, i64 984, !6, i64 1048, !6, i64 1049, !6, i64 1050, !6, i64 1051, !6, i64 1052, !6, i64 1053, !6, i64 1054, !19, i64 1056, !14, i64 1320, !14, i64 1328, !14, i64 1336, !14, i64 1344, !21, i64 1352, !11, i64 1544, !11, i64 1552, !11, i64 1560, !11, i64 1568, !11, i64 1576, !11, i64 1584, !11, i64 1592, !15, i64 1600, !15, i64 1664, !15, i64 1728, !11, i64 1792, !14, i64 1800, !22, i64 1808, !15, i64 5776}
!14 = !{!"long", !7, i64 0}
!15 = !{!"_ZTSN11alglib_impl9ae_vectorE", !14, i64 0, !14, i64 8, !6, i64 16, !16, i64 24, !7, i64 56}
!16 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !17, i64 0, !17, i64 8, !17, i64 16, !17, i64 24}
!17 = !{!"any pointer", !7, i64 0}
!18 = !{!"_ZTSN11alglib_impl9ae_matrixE", !14, i64 0, !14, i64 8, !14, i64 16, !14, i64 24, !6, i64 32, !16, i64 40, !7, i64 72}
!19 = !{!"_ZTSN11alglib_impl10rcommstateE", !20, i64 0, !15, i64 8, !15, i64 72, !15, i64 136, !15, i64 200}
!20 = !{!"int", !7, i64 0}
!21 = !{!"_ZTSN11alglib_impl11linminstateE", !6, i64 0, !6, i64 1, !14, 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}
!22 = !{!"_ZTSN11alglib_impl17smoothnessmonitorE", !14, i64 0, !14, i64 8, !6, i64 16, !15, i64 24, !14, i64 88, !15, i64 96, !15, i64 160, !15, i64 224, !18, i64 288, !15, i64 368, !15, i64 432, !14, i64 496, !6, i64 504, !6, i64 505, !11, i64 512, !11, i64 520, !6, i64 528, !23, i64 536, !11, i64 832, !11, i64 840, !24, i64 848, !24, i64 1152, !11, i64 1456, !11, i64 1464, !25, i64 1472, !25, i64 1784, !6, i64 2096, !15, i64 2104, !15, i64 2168, !18, i64 2232, !19, i64 2312, !15, i64 2576, !15, i64 2640, !15, i64 2704, !15, i64 2768, !15, i64 2832, !15, i64 2896, !15, i64 2960, !15, i64 3024, !18, i64 3088, !18, i64 3168, !15, i64 3248, !15, i64 3312, !15, i64 3376, !15, i64 3440, !15, i64 3504, !15, i64 3568, !15, i64 3632, !15, i64 3696, !15, i64 3760, !15, i64 3824, !18, i64 3888}
!23 = !{!"_ZTSN11alglib_impl14optguardreportE", !6, i64 0, !6, i64 1, !14, i64 8, !11, i64 16, !6, i64 24, !6, i64 25, !6, i64 26, !14, i64 32, !11, i64 40, !6, i64 48, !14, i64 56, !14, i64 64, !15, i64 72, !18, i64 136, !18, i64 216}
!24 = !{!"_ZTSN11alglib_impl24optguardnonc1test0reportE", !6, i64 0, !14, i64 8, !15, i64 16, !15, i64 80, !14, i64 144, !15, i64 152, !15, i64 216, !14, i64 280, !14, i64 288, !14, i64 296}
!25 = !{!"_ZTSN11alglib_impl24optguardnonc1test1reportE", !6, i64 0, !14, i64 8, !14, i64 16, !15, i64 24, !15, i64 88, !14, i64 152, !15, i64 160, !15, i64 224, !14, i64 288, !14, i64 296, !14, i64 304}
!26 = !{i8 0, i8 2}
!27 = !{}
!28 = !{!13, !6, i64 1049}
!29 = !{!13, !11, i64 976}
!30 = distinct !{!30, !31}
!31 = !{!"llvm.loop.mustprogress"}
!32 = distinct !{!32, !31}
!33 = distinct !{!33, !31}
!34 = distinct !{!34, !31}
!35 = distinct !{!35, !31}
!36 = distinct !{!36, !31}
!37 = !{!17, !17, i64 0}
!38 = distinct !{!38, !31}
!39 = distinct !{!39, !31}
!40 = distinct !{!40, !31}
!41 = distinct !{!41, !31}
!42 = distinct !{!42, !31}
!43 = distinct !{!43, !31}
!44 = distinct !{!44, !45}
!45 = !{!"llvm.loop.unroll.disable"}
!46 = distinct !{!46, !31}
!47 = distinct !{!47, !31}
!48 = distinct !{!48, !31}
!49 = distinct !{!49, !31}
!50 = distinct !{!50, !31}
!51 = distinct !{!51, !31}
!52 = distinct !{!52, !31}
!53 = distinct !{!53, !31}
!54 = !{!55, !14, i64 16}
!55 = !{!"_ZTSN11alglib_impl11mincgreportE", !14, i64 0, !14, i64 8, !14, i64 16}
!56 = distinct !{!56, !31}
!57 = distinct !{!57, !31}


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