; LLVM IR from venumb/ZSPACE :: cpp/depends/alglib/cpp/tests/test_c.ll (Z8testnleqbPN11alglib_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::nleqstate" = type { i64, i64, double, i64, i8, double, %"struct.alglib_impl::ae_vector", double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", i8, i8, i8, %"struct.alglib_impl::rcommstate", i64, i64, i64, i64, %"struct.alglib_impl::ae_vector", double, double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::ae_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%union.anon.0 = type { ptr }
%"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::nleqreport" = type { i64, 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.342 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.755 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.756 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.757 = 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_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef, ptr noundef) #1

declare noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef, double 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 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_impl10ae_maxrealEddPNS_8ae_stateE(double noundef, double noundef, ptr noundef) #1

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

declare noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_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 void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef) #1

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z8testnleqbPN11alglib_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 i64, align 8
  %11 = alloca %"struct.alglib_impl::ae_vector", align 8
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca %"struct.alglib_impl::ae_vector", align 8
  %17 = alloca i8, align 1
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca %"struct.alglib_impl::nleqstate", align 8
  %22 = alloca %"struct.alglib_impl::nleqreport", align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca i8, align 1
  %28 = zext i1 %0 to i8
  store i8 %28, 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 8, ptr %10) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %11) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %16) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.start.p0(i64 840, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #5
  %29 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %29, ptr noundef %5)
  call void @llvm.memset.p0.i64(ptr align 8 %11, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %16, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %21, i8 0, i64 840, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %22, i8 0, i64 32, i1 false)
  %30 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %11, i64 noundef 0, i64 noundef 3, ptr noundef %30, i1 noundef zeroext true)
  %31 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %16, i64 noundef 0, i64 noundef 3, ptr noundef %31, i1 noundef zeroext true)
  %32 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15_nleqstate_initEPvPNS_8ae_stateEb(ptr noundef %21, ptr noundef %32, i1 noundef zeroext true)
  %33 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl16_nleqreport_initEPvPNS_8ae_stateEb(ptr noundef %22, ptr noundef %33, 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 %8, align 1, !tbaa !5
  store i8 0, ptr %9, align 1, !tbaa !5
  store i64 100, ptr %24, align 8, !tbaa !11
  store i64 0, ptr %23, align 8, !tbaa !11
  br label %34

34:                                               ; preds = %304, %2
  %35 = load i64, ptr %23, align 8, !tbaa !11
  %36 = load i64, ptr %24, align 8, !tbaa !11
  %37 = sub nsw i64 %36, 1
  %38 = icmp sle i64 %35, %37
  br i1 %38, label %39, label %307

39:                                               ; preds = %34
  %40 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %11, i64 noundef 2, ptr noundef %40)
  %41 = load ptr, ptr %4, align 8, !tbaa !9
  %42 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %41)
  %43 = call double @llvm.fmuladd.f64(double 2.000000e+01, double %42, double -1.000000e+01)
  %44 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %45 = load ptr, ptr %44, align 8, !tbaa !13
  %46 = getelementptr inbounds double, ptr %45, i64 0
  store double %43, ptr %46, align 8, !tbaa !14
  %47 = load ptr, ptr %4, align 8, !tbaa !9
  %48 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %47)
  %49 = call double @llvm.fmuladd.f64(double 2.000000e+01, double %48, double -1.000000e+01)
  %50 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %51 = load ptr, ptr %50, align 8, !tbaa !13
  %52 = getelementptr inbounds double, ptr %51, i64 1
  store double %49, ptr %52, align 8, !tbaa !14
  %53 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12nleqcreatelmEllPNS_9ae_vectorEPNS_9nleqstateEPNS_8ae_stateE(i64 noundef 2, i64 noundef 2, ptr noundef %11, ptr noundef %21, ptr noundef %53)
  store double 1.000000e-09, ptr %25, align 8, !tbaa !14
  %54 = load double, ptr %25, align 8, !tbaa !14
  %55 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11nleqsetcondEPNS_9nleqstateEdlPNS_8ae_stateE(ptr noundef %21, double noundef %54, i64 noundef 0, ptr noundef %55)
  br label %56

56:                                               ; preds = %59, %39
  %57 = load ptr, ptr %4, align 8, !tbaa !9
  %58 = call noundef zeroext i1 @_ZN11alglib_impl13nleqiterationEPNS_9nleqstateEPNS_8ae_stateE(ptr noundef %21, ptr noundef %57)
  br i1 %58, label %59, label %61

59:                                               ; preds = %56
  %60 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL24testnlequnit_testfunchbmPN11alglib_impl9nleqstateEPNS_8ae_stateE(ptr noundef %21, ptr noundef %60)
  br label %56, !llvm.loop !16

61:                                               ; preds = %56
  %62 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11nleqresultsEPNS_9nleqstateEPNS_9ae_vectorEPNS_10nleqreportEPNS_8ae_stateE(ptr noundef %21, ptr noundef %11, ptr noundef %22, ptr noundef %62)
  %63 = getelementptr inbounds %"struct.alglib_impl::nleqreport", ptr %22, i32 0, i32 3
  %64 = load i64, ptr %63, align 8, !tbaa !18
  %65 = icmp sgt i64 %64, 0
  br i1 %65, label %66, label %110

66:                                               ; preds = %61
  %67 = load i8, ptr %7, align 1, !tbaa !5, !range !20, !noundef !21
  %68 = trunc i8 %67 to i1
  br i1 %68, label %107, label %69

69:                                               ; preds = %66
  %70 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %71 = load ptr, ptr %70, align 8, !tbaa !13
  %72 = getelementptr inbounds double, ptr %71, i64 0
  %73 = load double, ptr %72, align 8, !tbaa !14
  %74 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %75 = load ptr, ptr %74, align 8, !tbaa !13
  %76 = getelementptr inbounds double, ptr %75, i64 0
  %77 = load double, ptr %76, align 8, !tbaa !14
  %78 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %79 = load ptr, ptr %78, align 8, !tbaa !13
  %80 = getelementptr inbounds double, ptr %79, i64 1
  %81 = load double, ptr %80, align 8, !tbaa !14
  %82 = call double @llvm.fmuladd.f64(double %73, double %77, double %81)
  %83 = fsub double %82, 1.100000e+01
  %84 = load ptr, ptr %4, align 8, !tbaa !9
  %85 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %83, ptr noundef %84)
  %86 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %87 = load ptr, ptr %86, align 8, !tbaa !13
  %88 = getelementptr inbounds double, ptr %87, i64 0
  %89 = load double, ptr %88, align 8, !tbaa !14
  %90 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %91 = load ptr, ptr %90, align 8, !tbaa !13
  %92 = getelementptr inbounds double, ptr %91, i64 1
  %93 = load double, ptr %92, align 8, !tbaa !14
  %94 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %95 = load ptr, ptr %94, align 8, !tbaa !13
  %96 = getelementptr inbounds double, ptr %95, i64 1
  %97 = load double, ptr %96, align 8, !tbaa !14
  %98 = call double @llvm.fmuladd.f64(double %93, double %97, double %89)
  %99 = fsub double %98, 7.000000e+00
  %100 = load ptr, ptr %4, align 8, !tbaa !9
  %101 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %99, ptr noundef %100)
  %102 = fadd double %85, %101
  %103 = load double, ptr %25, align 8, !tbaa !14
  %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 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %102, double noundef %105)
  br label %107

107:                                              ; preds = %69, %66
  %108 = phi i1 [ true, %66 ], [ %106, %69 ]
  %109 = zext i1 %108 to i8
  store i8 %109, ptr %7, align 1, !tbaa !5
  br label %111

110:                                              ; preds = %61
  store i8 1, ptr %7, align 1, !tbaa !5
  br label %111

111:                                              ; preds = %110, %107
  %112 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %11, i64 noundef 2, ptr noundef %112)
  %113 = load ptr, ptr %4, align 8, !tbaa !9
  %114 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %113)
  %115 = call double @llvm.fmuladd.f64(double 2.000000e+01, double %114, double -1.000000e+01)
  %116 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %117 = load ptr, ptr %116, align 8, !tbaa !13
  %118 = getelementptr inbounds double, ptr %117, i64 0
  store double %115, ptr %118, align 8, !tbaa !14
  %119 = load ptr, ptr %4, align 8, !tbaa !9
  %120 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %119)
  %121 = call double @llvm.fmuladd.f64(double 2.000000e+01, double %120, double -1.000000e+01)
  %122 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %123 = load ptr, ptr %122, align 8, !tbaa !13
  %124 = getelementptr inbounds double, ptr %123, i64 1
  store double %121, ptr %124, align 8, !tbaa !14
  %125 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12nleqcreatelmEllPNS_9ae_vectorEPNS_9nleqstateEPNS_8ae_stateE(i64 noundef 2, i64 noundef 2, ptr noundef %11, ptr noundef %21, ptr noundef %125)
  store double 1.000000e-09, ptr %25, align 8, !tbaa !14
  %126 = load double, ptr %25, align 8, !tbaa !14
  %127 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11nleqsetcondEPNS_9nleqstateEdlPNS_8ae_stateE(ptr noundef %21, double noundef %126, i64 noundef 0, ptr noundef %127)
  br label %128

128:                                              ; preds = %131, %111
  %129 = load ptr, ptr %4, align 8, !tbaa !9
  %130 = call noundef zeroext i1 @_ZN11alglib_impl13nleqiterationEPNS_9nleqstateEPNS_8ae_stateE(ptr noundef %21, ptr noundef %129)
  br i1 %130, label %131, label %133

131:                                              ; preds = %128
  %132 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL24testnlequnit_testfunchbmPN11alglib_impl9nleqstateEPNS_8ae_stateE(ptr noundef %21, ptr noundef %132)
  br label %128, !llvm.loop !22

133:                                              ; preds = %128
  %134 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11nleqresultsEPNS_9nleqstateEPNS_9ae_vectorEPNS_10nleqreportEPNS_8ae_stateE(ptr noundef %21, ptr noundef %11, ptr noundef %22, ptr noundef %134)
  %135 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %11, i64 noundef 2, ptr noundef %135)
  %136 = load ptr, ptr %4, align 8, !tbaa !9
  %137 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %136)
  %138 = call double @llvm.fmuladd.f64(double 2.000000e+01, double %137, double -1.000000e+01)
  %139 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %140 = load ptr, ptr %139, align 8, !tbaa !13
  %141 = getelementptr inbounds double, ptr %140, i64 0
  store double %138, ptr %141, align 8, !tbaa !14
  %142 = load ptr, ptr %4, align 8, !tbaa !9
  %143 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %142)
  %144 = call double @llvm.fmuladd.f64(double 2.000000e+01, double %143, double -1.000000e+01)
  %145 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %146 = load ptr, ptr %145, align 8, !tbaa !13
  %147 = getelementptr inbounds double, ptr %146, i64 1
  store double %144, ptr %147, align 8, !tbaa !14
  %148 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15nleqrestartfromEPNS_9nleqstateEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %21, ptr noundef %11, ptr noundef %148)
  br label %149

149:                                              ; preds = %152, %133
  %150 = load ptr, ptr %4, align 8, !tbaa !9
  %151 = call noundef zeroext i1 @_ZN11alglib_impl13nleqiterationEPNS_9nleqstateEPNS_8ae_stateE(ptr noundef %21, ptr noundef %150)
  br i1 %151, label %152, label %154

152:                                              ; preds = %149
  %153 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL24testnlequnit_testfunchbmPN11alglib_impl9nleqstateEPNS_8ae_stateE(ptr noundef %21, ptr noundef %153)
  br label %149, !llvm.loop !23

154:                                              ; preds = %149
  %155 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11nleqresultsEPNS_9nleqstateEPNS_9ae_vectorEPNS_10nleqreportEPNS_8ae_stateE(ptr noundef %21, ptr noundef %11, ptr noundef %22, ptr noundef %155)
  %156 = getelementptr inbounds %"struct.alglib_impl::nleqreport", ptr %22, i32 0, i32 3
  %157 = load i64, ptr %156, align 8, !tbaa !18
  %158 = icmp sgt i64 %157, 0
  br i1 %158, label %159, label %203

159:                                              ; preds = %154
  %160 = load i8, ptr %7, align 1, !tbaa !5, !range !20, !noundef !21
  %161 = trunc i8 %160 to i1
  br i1 %161, label %200, label %162

162:                                              ; preds = %159
  %163 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %164 = load ptr, ptr %163, align 8, !tbaa !13
  %165 = getelementptr inbounds double, ptr %164, i64 0
  %166 = load double, ptr %165, align 8, !tbaa !14
  %167 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %168 = load ptr, ptr %167, align 8, !tbaa !13
  %169 = getelementptr inbounds double, ptr %168, i64 0
  %170 = load double, ptr %169, align 8, !tbaa !14
  %171 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %172 = load ptr, ptr %171, align 8, !tbaa !13
  %173 = getelementptr inbounds double, ptr %172, i64 1
  %174 = load double, ptr %173, align 8, !tbaa !14
  %175 = call double @llvm.fmuladd.f64(double %166, double %170, double %174)
  %176 = fsub double %175, 1.100000e+01
  %177 = load ptr, ptr %4, align 8, !tbaa !9
  %178 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %176, ptr noundef %177)
  %179 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %180 = load ptr, ptr %179, align 8, !tbaa !13
  %181 = getelementptr inbounds double, ptr %180, i64 0
  %182 = load double, ptr %181, align 8, !tbaa !14
  %183 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %184 = load ptr, ptr %183, align 8, !tbaa !13
  %185 = getelementptr inbounds double, ptr %184, i64 1
  %186 = load double, ptr %185, align 8, !tbaa !14
  %187 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %188 = load ptr, ptr %187, align 8, !tbaa !13
  %189 = getelementptr inbounds double, ptr %188, i64 1
  %190 = load double, ptr %189, align 8, !tbaa !14
  %191 = call double @llvm.fmuladd.f64(double %186, double %190, double %182)
  %192 = fsub double %191, 7.000000e+00
  %193 = load ptr, ptr %4, align 8, !tbaa !9
  %194 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %192, ptr noundef %193)
  %195 = fadd double %178, %194
  %196 = load double, ptr %25, align 8, !tbaa !14
  %197 = load ptr, ptr %4, align 8, !tbaa !9
  %198 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %196, ptr noundef %197)
  %199 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %195, double noundef %198)
  br label %200

200:                                              ; preds = %162, %159
  %201 = phi i1 [ true, %159 ], [ %199, %162 ]
  %202 = zext i1 %201 to i8
  store i8 %202, ptr %7, align 1, !tbaa !5
  br label %204

203:                                              ; preds = %154
  store i8 1, ptr %7, align 1, !tbaa !5
  br label %204

204:                                              ; preds = %203, %200
  %205 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %11, i64 noundef 2, ptr noundef %205)
  %206 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %207 = load ptr, ptr %206, align 8, !tbaa !13
  %208 = getelementptr inbounds double, ptr %207, i64 0
  store double 1.000000e+02, ptr %208, align 8, !tbaa !14
  %209 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %210 = load ptr, ptr %209, align 8, !tbaa !13
  %211 = getelementptr inbounds double, ptr %210, i64 1
  store double 1.000000e+02, ptr %211, align 8, !tbaa !14
  %212 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12nleqcreatelmEllPNS_9ae_vectorEPNS_9nleqstateEPNS_8ae_stateE(i64 noundef 2, i64 noundef 2, ptr noundef %11, ptr noundef %21, ptr noundef %212)
  store double 1.000000e-09, ptr %25, align 8, !tbaa !14
  %213 = load double, ptr %25, align 8, !tbaa !14
  %214 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11nleqsetcondEPNS_9nleqstateEdlPNS_8ae_stateE(ptr noundef %21, double noundef %213, i64 noundef 0, ptr noundef %214)
  %215 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13nleqsetstpmaxEPNS_9nleqstateEdPNS_8ae_stateE(ptr noundef %21, double noundef 1.000000e-02, ptr noundef %215)
  %216 = load ptr, ptr %4, align 8, !tbaa !9
  %217 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 100, ptr noundef %216)
  %218 = add nsw i64 1, %217
  store i64 %218, ptr %13, align 8, !tbaa !11
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %219

219:                                              ; preds = %230, %204
  %220 = load i64, ptr %12, align 8, !tbaa !11
  %221 = load i64, ptr %13, align 8, !tbaa !11
  %222 = sub nsw i64 %221, 1
  %223 = icmp sle i64 %220, %222
  br i1 %223, label %224, label %233

224:                                              ; preds = %219
  %225 = load ptr, ptr %4, align 8, !tbaa !9
  %226 = call noundef zeroext i1 @_ZN11alglib_impl13nleqiterationEPNS_9nleqstateEPNS_8ae_stateE(ptr noundef %21, ptr noundef %225)
  br i1 %226, label %228, label %227

227:                                              ; preds = %224
  br label %233

228:                                              ; preds = %224
  %229 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL24testnlequnit_testfunchbmPN11alglib_impl9nleqstateEPNS_8ae_stateE(ptr noundef %21, ptr noundef %229)
  br label %230

230:                                              ; preds = %228
  %231 = load i64, ptr %12, align 8, !tbaa !11
  %232 = add nsw i64 %231, 1
  store i64 %232, ptr %12, align 8, !tbaa !11
  br label %219, !llvm.loop !24

233:                                              ; preds = %227, %219
  %234 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %11, i64 noundef 2, ptr noundef %234)
  %235 = load ptr, ptr %4, align 8, !tbaa !9
  %236 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %235)
  %237 = call double @llvm.fmuladd.f64(double 2.000000e+01, double %236, double -1.000000e+01)
  %238 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %239 = load ptr, ptr %238, align 8, !tbaa !13
  %240 = getelementptr inbounds double, ptr %239, i64 0
  store double %237, ptr %240, align 8, !tbaa !14
  %241 = load ptr, ptr %4, align 8, !tbaa !9
  %242 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %241)
  %243 = call double @llvm.fmuladd.f64(double 2.000000e+01, double %242, double -1.000000e+01)
  %244 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %245 = load ptr, ptr %244, align 8, !tbaa !13
  %246 = getelementptr inbounds double, ptr %245, i64 1
  store double %243, ptr %246, align 8, !tbaa !14
  %247 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15nleqrestartfromEPNS_9nleqstateEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %21, ptr noundef %11, ptr noundef %247)
  br label %248

248:                                              ; preds = %251, %233
  %249 = load ptr, ptr %4, align 8, !tbaa !9
  %250 = call noundef zeroext i1 @_ZN11alglib_impl13nleqiterationEPNS_9nleqstateEPNS_8ae_stateE(ptr noundef %21, ptr noundef %249)
  br i1 %250, label %251, label %253

251:                                              ; preds = %248
  %252 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL24testnlequnit_testfunchbmPN11alglib_impl9nleqstateEPNS_8ae_stateE(ptr noundef %21, ptr noundef %252)
  br label %248, !llvm.loop !25

253:                                              ; preds = %248
  %254 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11nleqresultsEPNS_9nleqstateEPNS_9ae_vectorEPNS_10nleqreportEPNS_8ae_stateE(ptr noundef %21, ptr noundef %11, ptr noundef %22, ptr noundef %254)
  %255 = getelementptr inbounds %"struct.alglib_impl::nleqreport", ptr %22, i32 0, i32 3
  %256 = load i64, ptr %255, align 8, !tbaa !18
  %257 = icmp sgt i64 %256, 0
  br i1 %257, label %258, label %302

258:                                              ; preds = %253
  %259 = load i8, ptr %7, align 1, !tbaa !5, !range !20, !noundef !21
  %260 = trunc i8 %259 to i1
  br i1 %260, label %299, label %261

261:                                              ; preds = %258
  %262 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %263 = load ptr, ptr %262, align 8, !tbaa !13
  %264 = getelementptr inbounds double, ptr %263, i64 0
  %265 = load double, ptr %264, align 8, !tbaa !14
  %266 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %267 = load ptr, ptr %266, align 8, !tbaa !13
  %268 = getelementptr inbounds double, ptr %267, i64 0
  %269 = load double, ptr %268, align 8, !tbaa !14
  %270 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %271 = load ptr, ptr %270, align 8, !tbaa !13
  %272 = getelementptr inbounds double, ptr %271, i64 1
  %273 = load double, ptr %272, align 8, !tbaa !14
  %274 = call double @llvm.fmuladd.f64(double %265, double %269, double %273)
  %275 = fsub double %274, 1.100000e+01
  %276 = load ptr, ptr %4, align 8, !tbaa !9
  %277 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %275, ptr noundef %276)
  %278 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %279 = load ptr, ptr %278, align 8, !tbaa !13
  %280 = getelementptr inbounds double, ptr %279, i64 0
  %281 = load double, ptr %280, align 8, !tbaa !14
  %282 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %283 = load ptr, ptr %282, align 8, !tbaa !13
  %284 = getelementptr inbounds double, ptr %283, i64 1
  %285 = load double, ptr %284, align 8, !tbaa !14
  %286 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %287 = load ptr, ptr %286, align 8, !tbaa !13
  %288 = getelementptr inbounds double, ptr %287, i64 1
  %289 = load double, ptr %288, align 8, !tbaa !14
  %290 = call double @llvm.fmuladd.f64(double %285, double %289, double %281)
  %291 = fsub double %290, 7.000000e+00
  %292 = load ptr, ptr %4, align 8, !tbaa !9
  %293 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %291, ptr noundef %292)
  %294 = fadd double %277, %293
  %295 = load double, ptr %25, align 8, !tbaa !14
  %296 = load ptr, ptr %4, align 8, !tbaa !9
  %297 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %295, ptr noundef %296)
  %298 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %294, double noundef %297)
  br label %299

299:                                              ; preds = %261, %258
  %300 = phi i1 [ true, %258 ], [ %298, %261 ]
  %301 = zext i1 %300 to i8
  store i8 %301, ptr %7, align 1, !tbaa !5
  br label %303

302:                                              ; preds = %253
  store i8 1, ptr %7, align 1, !tbaa !5
  br label %303

303:                                              ; preds = %302, %299
  br label %304

304:                                              ; preds = %303
  %305 = load i64, ptr %23, align 8, !tbaa !11
  %306 = add nsw i64 %305, 1
  store i64 %306, ptr %23, align 8, !tbaa !11
  br label %34, !llvm.loop !26

307:                                              ; preds = %34
  store i64 100, ptr %24, align 8, !tbaa !11
  store i64 0, ptr %23, align 8, !tbaa !11
  br label %308

308:                                              ; preds = %384, %307
  %309 = load i64, ptr %23, align 8, !tbaa !11
  %310 = load i64, ptr %24, align 8, !tbaa !11
  %311 = sub nsw i64 %310, 1
  %312 = icmp sle i64 %309, %311
  br i1 %312, label %313, label %387

313:                                              ; preds = %308
  %314 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %11, i64 noundef 2, ptr noundef %314)
  %315 = load ptr, ptr %4, align 8, !tbaa !9
  %316 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %315)
  %317 = call double @llvm.fmuladd.f64(double 2.000000e+01, double %316, double -1.000000e+01)
  %318 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %319 = load ptr, ptr %318, align 8, !tbaa !13
  %320 = getelementptr inbounds double, ptr %319, i64 0
  store double %317, ptr %320, align 8, !tbaa !14
  %321 = load ptr, ptr %4, align 8, !tbaa !9
  %322 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %321)
  %323 = call double @llvm.fmuladd.f64(double 2.000000e+01, double %322, double -1.000000e+01)
  %324 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %325 = load ptr, ptr %324, align 8, !tbaa !13
  %326 = getelementptr inbounds double, ptr %325, i64 1
  store double %323, ptr %326, align 8, !tbaa !14
  %327 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12nleqcreatelmEllPNS_9ae_vectorEPNS_9nleqstateEPNS_8ae_stateE(i64 noundef 2, i64 noundef 1, ptr noundef %11, ptr noundef %21, ptr noundef %327)
  store double 1.000000e-09, ptr %25, align 8, !tbaa !14
  %328 = load double, ptr %25, align 8, !tbaa !14
  %329 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11nleqsetcondEPNS_9nleqstateEdlPNS_8ae_stateE(ptr noundef %21, double noundef %328, i64 noundef 0, ptr noundef %329)
  br label %330

330:                                              ; preds = %333, %313
  %331 = load ptr, ptr %4, align 8, !tbaa !9
  %332 = call noundef zeroext i1 @_ZN11alglib_impl13nleqiterationEPNS_9nleqstateEPNS_8ae_stateE(ptr noundef %21, ptr noundef %331)
  br i1 %332, label %333, label %335

333:                                              ; preds = %330
  %334 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL24testnlequnit_testfunchb1PN11alglib_impl9nleqstateEPNS_8ae_stateE(ptr noundef %21, ptr noundef %334)
  br label %330, !llvm.loop !27

335:                                              ; preds = %330
  %336 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11nleqresultsEPNS_9nleqstateEPNS_9ae_vectorEPNS_10nleqreportEPNS_8ae_stateE(ptr noundef %21, ptr noundef %11, ptr noundef %22, ptr noundef %336)
  %337 = getelementptr inbounds %"struct.alglib_impl::nleqreport", ptr %22, i32 0, i32 3
  %338 = load i64, ptr %337, align 8, !tbaa !18
  %339 = icmp sgt i64 %338, 0
  br i1 %339, label %340, label %382

340:                                              ; preds = %335
  %341 = load i8, ptr %7, align 1, !tbaa !5, !range !20, !noundef !21
  %342 = trunc i8 %341 to i1
  br i1 %342, label %379, label %343

343:                                              ; preds = %340
  %344 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %345 = load ptr, ptr %344, align 8, !tbaa !13
  %346 = getelementptr inbounds double, ptr %345, i64 0
  %347 = load double, ptr %346, align 8, !tbaa !14
  %348 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %349 = load ptr, ptr %348, align 8, !tbaa !13
  %350 = getelementptr inbounds double, ptr %349, i64 0
  %351 = load double, ptr %350, align 8, !tbaa !14
  %352 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %353 = load ptr, ptr %352, align 8, !tbaa !13
  %354 = getelementptr inbounds double, ptr %353, i64 1
  %355 = load double, ptr %354, align 8, !tbaa !14
  %356 = call double @llvm.fmuladd.f64(double %347, double %351, double %355)
  %357 = fsub double %356, 1.100000e+01
  %358 = load ptr, ptr %4, align 8, !tbaa !9
  %359 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %357, ptr noundef %358)
  %360 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %361 = load ptr, ptr %360, align 8, !tbaa !13
  %362 = getelementptr inbounds double, ptr %361, i64 0
  %363 = load double, ptr %362, align 8, !tbaa !14
  %364 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %365 = load ptr, ptr %364, align 8, !tbaa !13
  %366 = getelementptr inbounds double, ptr %365, i64 1
  %367 = load double, ptr %366, align 8, !tbaa !14
  %368 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %369 = load ptr, ptr %368, align 8, !tbaa !13
  %370 = getelementptr inbounds double, ptr %369, i64 1
  %371 = load double, ptr %370, align 8, !tbaa !14
  %372 = call double @llvm.fmuladd.f64(double %367, double %371, double %363)
  %373 = fsub double %372, 7.000000e+00
  %374 = load ptr, ptr %4, align 8, !tbaa !9
  %375 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %373, ptr noundef %374)
  %376 = fadd double %359, %375
  %377 = load double, ptr %25, align 8, !tbaa !14
  %378 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %376, double noundef %377)
  br label %379

379:                                              ; preds = %343, %340
  %380 = phi i1 [ true, %340 ], [ %378, %343 ]
  %381 = zext i1 %380 to i8
  store i8 %381, ptr %7, align 1, !tbaa !5
  br label %383

382:                                              ; preds = %335
  store i8 1, ptr %7, align 1, !tbaa !5
  br label %383

383:                                              ; preds = %382, %379
  br label %384

384:                                              ; preds = %383
  %385 = load i64, ptr %23, align 8, !tbaa !11
  %386 = add nsw i64 %385, 1
  store i64 %386, ptr %23, align 8, !tbaa !11
  br label %308, !llvm.loop !28

387:                                              ; preds = %308
  store i64 100, ptr %24, align 8, !tbaa !11
  store i64 0, ptr %23, align 8, !tbaa !11
  br label %388

388:                                              ; preds = %426, %387
  %389 = load i64, ptr %23, align 8, !tbaa !11
  %390 = load i64, ptr %24, align 8, !tbaa !11
  %391 = sub nsw i64 %390, 1
  %392 = icmp sle i64 %389, %391
  br i1 %392, label %393, label %429

393:                                              ; preds = %388
  %394 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %11, i64 noundef 2, ptr noundef %394)
  %395 = load ptr, ptr %4, align 8, !tbaa !9
  %396 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %395)
  %397 = call double @llvm.fmuladd.f64(double 2.000000e+01, double %396, double -1.000000e+01)
  %398 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %399 = load ptr, ptr %398, align 8, !tbaa !13
  %400 = getelementptr inbounds double, ptr %399, i64 0
  store double %397, ptr %400, align 8, !tbaa !14
  %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 2.000000e+01, double %402, double -1.000000e+01)
  %404 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %405 = load ptr, ptr %404, align 8, !tbaa !13
  %406 = getelementptr inbounds double, ptr %405, i64 1
  store double %403, ptr %406, align 8, !tbaa !14
  %407 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12nleqcreatelmEllPNS_9ae_vectorEPNS_9nleqstateEPNS_8ae_stateE(i64 noundef 2, i64 noundef 3, ptr noundef %11, ptr noundef %21, ptr noundef %407)
  store double 1.000000e-09, ptr %25, align 8, !tbaa !14
  %408 = load double, ptr %25, align 8, !tbaa !14
  %409 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11nleqsetcondEPNS_9nleqstateEdlPNS_8ae_stateE(ptr noundef %21, double noundef %408, i64 noundef 0, ptr noundef %409)
  br label %410

410:                                              ; preds = %413, %393
  %411 = load ptr, ptr %4, align 8, !tbaa !9
  %412 = call noundef zeroext i1 @_ZN11alglib_impl13nleqiterationEPNS_9nleqstateEPNS_8ae_stateE(ptr noundef %21, ptr noundef %411)
  br i1 %412, label %413, label %415

413:                                              ; preds = %410
  %414 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL25testnlequnit_testfuncshbmPN11alglib_impl9nleqstateEPNS_8ae_stateE(ptr noundef %21, ptr noundef %414)
  br label %410, !llvm.loop !29

415:                                              ; preds = %410
  %416 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11nleqresultsEPNS_9nleqstateEPNS_9ae_vectorEPNS_10nleqreportEPNS_8ae_stateE(ptr noundef %21, ptr noundef %11, ptr noundef %22, ptr noundef %416)
  %417 = load i8, ptr %7, align 1, !tbaa !5, !range !20, !noundef !21
  %418 = trunc i8 %417 to i1
  br i1 %418, label %423, label %419

419:                                              ; preds = %415
  %420 = getelementptr inbounds %"struct.alglib_impl::nleqreport", ptr %22, i32 0, i32 3
  %421 = load i64, ptr %420, align 8, !tbaa !18
  %422 = icmp ne i64 %421, -4
  br label %423

423:                                              ; preds = %419, %415
  %424 = phi i1 [ true, %415 ], [ %422, %419 ]
  %425 = zext i1 %424 to i8
  store i8 %425, ptr %7, align 1, !tbaa !5
  br label %426

426:                                              ; preds = %423
  %427 = load i64, ptr %23, align 8, !tbaa !11
  %428 = add nsw i64 %427, 1
  store i64 %428, ptr %23, align 8, !tbaa !11
  br label %388, !llvm.loop !30

429:                                              ; preds = %388
  store i64 2, ptr %10, align 8, !tbaa !11
  %430 = load i64, ptr %10, align 8, !tbaa !11
  %431 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %11, i64 noundef %430, ptr noundef %431)
  %432 = load i64, ptr %10, align 8, !tbaa !11
  %433 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %16, i64 noundef %432, ptr noundef %433)
  %434 = load ptr, ptr %4, align 8, !tbaa !9
  %435 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %434)
  %436 = call double @llvm.fmuladd.f64(double 2.000000e+01, double %435, double -1.000000e+01)
  %437 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %438 = load ptr, ptr %437, align 8, !tbaa !13
  %439 = getelementptr inbounds double, ptr %438, i64 0
  store double %436, ptr %439, align 8, !tbaa !14
  %440 = load ptr, ptr %4, align 8, !tbaa !9
  %441 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %440)
  %442 = call double @llvm.fmuladd.f64(double 2.000000e+01, double %441, double -1.000000e+01)
  %443 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %444 = load ptr, ptr %443, align 8, !tbaa !13
  %445 = getelementptr inbounds double, ptr %444, i64 1
  store double %442, ptr %445, align 8, !tbaa !14
  %446 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %447 = load ptr, ptr %446, align 8, !tbaa !13
  %448 = getelementptr inbounds double, ptr %447, i64 0
  store double 1.000000e+300, ptr %448, align 8, !tbaa !14
  %449 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %450 = load ptr, ptr %449, align 8, !tbaa !13
  %451 = getelementptr inbounds double, ptr %450, i64 1
  store double 1.000000e+300, ptr %451, align 8, !tbaa !14
  %452 = load i64, ptr %10, align 8, !tbaa !11
  %453 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12nleqcreatelmEllPNS_9ae_vectorEPNS_9nleqstateEPNS_8ae_stateE(i64 noundef %452, i64 noundef 2, ptr noundef %11, ptr noundef %21, ptr noundef %453)
  %454 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11nleqsetcondEPNS_9nleqstateEdlPNS_8ae_stateE(ptr noundef %21, double noundef 0x3EB0C6F7A0B5ED8D, i64 noundef 0, ptr noundef %454)
  %455 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11nleqsetxrepEPNS_9nleqstateEbPNS_8ae_stateE(ptr noundef %21, i1 noundef zeroext true, ptr noundef %455)
  store i8 1, ptr %17, align 1, !tbaa !5
  store double 1.000000e+300, ptr %15, align 8, !tbaa !14
  store i64 0, ptr %18, align 8, !tbaa !11
  store i64 0, ptr %19, align 8, !tbaa !11
  store i64 0, ptr %20, align 8, !tbaa !11
  br label %456

456:                                              ; preds = %592, %559, %429
  %457 = load ptr, ptr %4, align 8, !tbaa !9
  %458 = call noundef zeroext i1 @_ZN11alglib_impl13nleqiterationEPNS_9nleqstateEPNS_8ae_stateE(ptr noundef %21, ptr noundef %457)
  br i1 %458, label %459, label %594

459:                                              ; preds = %456
  %460 = getelementptr inbounds %"struct.alglib_impl::nleqstate", ptr %21, i32 0, i32 12
  %461 = load i8, ptr %460, align 2, !tbaa !31, !range !20, !noundef !21
  %462 = trunc i8 %461 to i1
  br i1 %462, label %463, label %576

463:                                              ; preds = %459
  %464 = load i8, ptr %17, align 1, !tbaa !5, !range !20, !noundef !21
  %465 = trunc i8 %464 to i1
  br i1 %465, label %466, label %495

466:                                              ; preds = %463
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %467

467:                                              ; preds = %491, %466
  %468 = load i64, ptr %12, align 8, !tbaa !11
  %469 = load i64, ptr %10, align 8, !tbaa !11
  %470 = sub nsw i64 %469, 1
  %471 = icmp sle i64 %468, %470
  br i1 %471, label %472, label %494

472:                                              ; preds = %467
  %473 = load i8, ptr %9, align 1, !tbaa !5, !range !20, !noundef !21
  %474 = trunc i8 %473 to i1
  br i1 %474, label %488, label %475

475:                                              ; preds = %472
  %476 = getelementptr inbounds %"struct.alglib_impl::nleqstate", ptr %21, i32 0, i32 6
  %477 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %476, i32 0, i32 4
  %478 = load ptr, ptr %477, align 8, !tbaa !13
  %479 = load i64, ptr %12, align 8, !tbaa !11
  %480 = getelementptr inbounds double, ptr %478, i64 %479
  %481 = load double, ptr %480, align 8, !tbaa !14
  %482 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %483 = load ptr, ptr %482, align 8, !tbaa !13
  %484 = load i64, ptr %12, align 8, !tbaa !11
  %485 = getelementptr inbounds double, ptr %483, i64 %484
  %486 = load double, ptr %485, align 8, !tbaa !14
  %487 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %481, double noundef %486)
  br label %488

488:                                              ; preds = %475, %472
  %489 = phi i1 [ true, %472 ], [ %487, %475 ]
  %490 = zext i1 %489 to i8
  store i8 %490, ptr %9, align 1, !tbaa !5
  br label %491

491:                                              ; preds = %488
  %492 = load i64, ptr %12, align 8, !tbaa !11
  %493 = add nsw i64 %492, 1
  store i64 %493, ptr %12, align 8, !tbaa !11
  br label %467, !llvm.loop !38

494:                                              ; preds = %467
  store i8 0, ptr %17, align 1, !tbaa !5
  br label %495

495:                                              ; preds = %494, %463
  %496 = load i8, ptr %9, align 1, !tbaa !5, !range !20, !noundef !21
  %497 = trunc i8 %496 to i1
  br i1 %497, label %503, label %498

498:                                              ; preds = %495
  %499 = getelementptr inbounds %"struct.alglib_impl::nleqstate", ptr %21, i32 0, i32 7
  %500 = load double, ptr %499, align 8, !tbaa !39
  %501 = load double, ptr %15, align 8, !tbaa !14
  %502 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %500, double noundef %501)
  br label %503

503:                                              ; preds = %498, %495
  %504 = phi i1 [ true, %495 ], [ %502, %498 ]
  %505 = zext i1 %504 to i8
  store i8 %505, ptr %9, align 1, !tbaa !5
  %506 = getelementptr inbounds %"struct.alglib_impl::nleqstate", ptr %21, i32 0, i32 6
  %507 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %506, i32 0, i32 4
  %508 = load ptr, ptr %507, align 8, !tbaa !13
  %509 = getelementptr inbounds double, ptr %508, i64 0
  %510 = load double, ptr %509, align 8, !tbaa !14
  %511 = getelementptr inbounds %"struct.alglib_impl::nleqstate", ptr %21, i32 0, i32 6
  %512 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %511, i32 0, i32 4
  %513 = load ptr, ptr %512, align 8, !tbaa !13
  %514 = getelementptr inbounds double, ptr %513, i64 0
  %515 = load double, ptr %514, align 8, !tbaa !14
  %516 = getelementptr inbounds %"struct.alglib_impl::nleqstate", ptr %21, i32 0, i32 6
  %517 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %516, i32 0, i32 4
  %518 = load ptr, ptr %517, align 8, !tbaa !13
  %519 = getelementptr inbounds double, ptr %518, i64 1
  %520 = load double, ptr %519, align 8, !tbaa !14
  %521 = call double @llvm.fmuladd.f64(double %510, double %515, double %520)
  %522 = fsub double %521, 1.100000e+01
  %523 = load ptr, ptr %4, align 8, !tbaa !9
  %524 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %522, ptr noundef %523)
  %525 = getelementptr inbounds %"struct.alglib_impl::nleqstate", ptr %21, i32 0, i32 6
  %526 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %525, i32 0, i32 4
  %527 = load ptr, ptr %526, align 8, !tbaa !13
  %528 = getelementptr inbounds double, ptr %527, i64 0
  %529 = load double, ptr %528, align 8, !tbaa !14
  %530 = getelementptr inbounds %"struct.alglib_impl::nleqstate", ptr %21, i32 0, i32 6
  %531 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %530, i32 0, i32 4
  %532 = load ptr, ptr %531, align 8, !tbaa !13
  %533 = getelementptr inbounds double, ptr %532, i64 1
  %534 = load double, ptr %533, align 8, !tbaa !14
  %535 = getelementptr inbounds %"struct.alglib_impl::nleqstate", ptr %21, i32 0, i32 6
  %536 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %535, i32 0, i32 4
  %537 = load ptr, ptr %536, align 8, !tbaa !13
  %538 = getelementptr inbounds double, ptr %537, i64 1
  %539 = load double, ptr %538, align 8, !tbaa !14
  %540 = call double @llvm.fmuladd.f64(double %534, double %539, double %529)
  %541 = fsub double %540, 7.000000e+00
  %542 = load ptr, ptr %4, align 8, !tbaa !9
  %543 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %541, ptr noundef %542)
  %544 = fadd double %524, %543
  store double %544, ptr %14, align 8, !tbaa !14
  %545 = load i8, ptr %9, align 1, !tbaa !5, !range !20, !noundef !21
  %546 = trunc i8 %545 to i1
  br i1 %546, label %559, label %547

547:                                              ; preds = %503
  %548 = load double, ptr %14, align 8, !tbaa !14
  %549 = getelementptr inbounds %"struct.alglib_impl::nleqstate", ptr %21, i32 0, i32 7
  %550 = load double, ptr %549, align 8, !tbaa !39
  %551 = fsub double %548, %550
  %552 = load ptr, ptr %4, align 8, !tbaa !9
  %553 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %551, ptr noundef %552)
  %554 = load double, ptr %14, align 8, !tbaa !14
  %555 = load ptr, ptr %4, align 8, !tbaa !9
  %556 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %554, double noundef 1.000000e+00, ptr noundef %555)
  %557 = fdiv double %553, %556
  %558 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %557, double noundef 5.000000e-14)
  br label %559

559:                                              ; preds = %547, %503
  %560 = phi i1 [ true, %503 ], [ %558, %547 ]
  %561 = zext i1 %560 to i8
  store i8 %561, ptr %9, align 1, !tbaa !5
  %562 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %563 = load ptr, ptr %562, align 8, !tbaa !13
  %564 = getelementptr inbounds double, ptr %563, i64 0
  %565 = getelementptr inbounds %"struct.alglib_impl::nleqstate", ptr %21, i32 0, i32 6
  %566 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %565, i32 0, i32 4
  %567 = load ptr, ptr %566, align 8, !tbaa !13
  %568 = getelementptr inbounds double, ptr %567, i64 0
  %569 = load i64, ptr %10, align 8, !tbaa !11
  %570 = sub nsw i64 %569, 1
  %571 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %570)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %564, i64 noundef 1, ptr noundef %568, i64 noundef 1, i64 noundef %571)
  %572 = getelementptr inbounds %"struct.alglib_impl::nleqstate", ptr %21, i32 0, i32 7
  %573 = load double, ptr %572, align 8, !tbaa !39
  store double %573, ptr %15, align 8, !tbaa !14
  %574 = load i64, ptr %20, align 8, !tbaa !11
  %575 = add nsw i64 %574, 1
  store i64 %575, ptr %20, align 8, !tbaa !11
  br label %456, !llvm.loop !40

576:                                              ; preds = %459
  %577 = getelementptr inbounds %"struct.alglib_impl::nleqstate", ptr %21, i32 0, i32 10
  %578 = load i8, ptr %577, align 8, !tbaa !41, !range !20, !noundef !21
  %579 = trunc i8 %578 to i1
  br i1 %579, label %580, label %583

580:                                              ; preds = %576
  %581 = load i64, ptr %18, align 8, !tbaa !11
  %582 = add nsw i64 %581, 1
  store i64 %582, ptr %18, align 8, !tbaa !11
  br label %583

583:                                              ; preds = %580, %576
  %584 = getelementptr inbounds %"struct.alglib_impl::nleqstate", ptr %21, i32 0, i32 11
  %585 = load i8, ptr %584, align 1, !tbaa !42, !range !20, !noundef !21
  %586 = trunc i8 %585 to i1
  br i1 %586, label %587, label %592

587:                                              ; preds = %583
  %588 = load i64, ptr %18, align 8, !tbaa !11
  %589 = add nsw i64 %588, 1
  store i64 %589, ptr %18, align 8, !tbaa !11
  %590 = load i64, ptr %19, align 8, !tbaa !11
  %591 = add nsw i64 %590, 1
  store i64 %591, ptr %19, align 8, !tbaa !11
  br label %592

592:                                              ; preds = %587, %583
  %593 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL24testnlequnit_testfunchbmPN11alglib_impl9nleqstateEPNS_8ae_stateE(ptr noundef %21, ptr noundef %593)
  br label %456, !llvm.loop !40

594:                                              ; preds = %456
  %595 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11nleqresultsEPNS_9nleqstateEPNS_9ae_vectorEPNS_10nleqreportEPNS_8ae_stateE(ptr noundef %21, ptr noundef %11, ptr noundef %22, ptr noundef %595)
  %596 = getelementptr inbounds %"struct.alglib_impl::nleqreport", ptr %22, i32 0, i32 3
  %597 = load i64, ptr %596, align 8, !tbaa !18
  %598 = icmp sgt i64 %597, 0
  br i1 %598, label %599, label %674

599:                                              ; preds = %594
  %600 = load i8, ptr %9, align 1, !tbaa !5, !range !20, !noundef !21
  %601 = trunc i8 %600 to i1
  br i1 %601, label %622, label %602

602:                                              ; preds = %599
  %603 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %604 = load ptr, ptr %603, align 8, !tbaa !13
  %605 = getelementptr inbounds double, ptr %604, i64 0
  %606 = load double, ptr %605, align 8, !tbaa !14
  %607 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %608 = load ptr, ptr %607, align 8, !tbaa !13
  %609 = getelementptr inbounds double, ptr %608, i64 0
  %610 = load double, ptr %609, align 8, !tbaa !14
  %611 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %606, double noundef %610)
  br i1 %611, label %622, label %612

612:                                              ; preds = %602
  %613 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %614 = load ptr, ptr %613, align 8, !tbaa !13
  %615 = getelementptr inbounds double, ptr %614, i64 1
  %616 = load double, ptr %615, align 8, !tbaa !14
  %617 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %618 = load ptr, ptr %617, align 8, !tbaa !13
  %619 = getelementptr inbounds double, ptr %618, i64 1
  %620 = load double, ptr %619, align 8, !tbaa !14
  %621 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %616, double noundef %620)
  br label %622

622:                                              ; preds = %612, %602, %599
  %623 = phi i1 [ true, %602 ], [ true, %599 ], [ %621, %612 ]
  %624 = zext i1 %623 to i8
  store i8 %624, ptr %9, align 1, !tbaa !5
  %625 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %626 = load ptr, ptr %625, align 8, !tbaa !13
  %627 = getelementptr inbounds double, ptr %626, i64 0
  %628 = load double, ptr %627, align 8, !tbaa !14
  %629 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %630 = load ptr, ptr %629, align 8, !tbaa !13
  %631 = getelementptr inbounds double, ptr %630, i64 0
  %632 = load double, ptr %631, align 8, !tbaa !14
  %633 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %634 = load ptr, ptr %633, align 8, !tbaa !13
  %635 = getelementptr inbounds double, ptr %634, i64 1
  %636 = load double, ptr %635, align 8, !tbaa !14
  %637 = call double @llvm.fmuladd.f64(double %628, double %632, double %636)
  %638 = fsub double %637, 1.100000e+01
  %639 = load ptr, ptr %4, align 8, !tbaa !9
  %640 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %638, ptr noundef %639)
  %641 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %642 = load ptr, ptr %641, align 8, !tbaa !13
  %643 = getelementptr inbounds double, ptr %642, i64 0
  %644 = load double, ptr %643, align 8, !tbaa !14
  %645 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %646 = load ptr, ptr %645, align 8, !tbaa !13
  %647 = getelementptr inbounds double, ptr %646, i64 1
  %648 = load double, ptr %647, align 8, !tbaa !14
  %649 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %650 = load ptr, ptr %649, align 8, !tbaa !13
  %651 = getelementptr inbounds double, ptr %650, i64 1
  %652 = load double, ptr %651, align 8, !tbaa !14
  %653 = call double @llvm.fmuladd.f64(double %648, double %652, double %644)
  %654 = fsub double %653, 7.000000e+00
  %655 = load ptr, ptr %4, align 8, !tbaa !9
  %656 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %654, ptr noundef %655)
  %657 = fadd double %640, %656
  store double %657, ptr %14, align 8, !tbaa !14
  %658 = load i8, ptr %9, align 1, !tbaa !5, !range !20, !noundef !21
  %659 = trunc i8 %658 to i1
  br i1 %659, label %671, label %660

660:                                              ; preds = %622
  %661 = load double, ptr %15, align 8, !tbaa !14
  %662 = load double, ptr %14, align 8, !tbaa !14
  %663 = fsub double %661, %662
  %664 = load ptr, ptr %4, align 8, !tbaa !9
  %665 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %663, ptr noundef %664)
  %666 = load double, ptr %14, align 8, !tbaa !14
  %667 = load ptr, ptr %4, align 8, !tbaa !9
  %668 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %666, double noundef 1.000000e+00, ptr noundef %667)
  %669 = fdiv double %665, %668
  %670 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %669, double noundef 5.000000e-14)
  br label %671

671:                                              ; preds = %660, %622
  %672 = phi i1 [ true, %622 ], [ %670, %660 ]
  %673 = zext i1 %672 to i8
  store i8 %673, ptr %9, align 1, !tbaa !5
  br label %675

674:                                              ; preds = %594
  store i8 1, ptr %8, align 1, !tbaa !5
  br label %675

675:                                              ; preds = %674, %671
  %676 = load i8, ptr %9, align 1, !tbaa !5, !range !20, !noundef !21
  %677 = trunc i8 %676 to i1
  br i1 %677, label %683, label %678

678:                                              ; preds = %675
  %679 = getelementptr inbounds %"struct.alglib_impl::nleqreport", ptr %22, i32 0, i32 1
  %680 = load i64, ptr %679, align 8, !tbaa !43
  %681 = load i64, ptr %18, align 8, !tbaa !11
  %682 = icmp ne i64 %680, %681
  br label %683

683:                                              ; preds = %678, %675
  %684 = phi i1 [ true, %675 ], [ %682, %678 ]
  %685 = zext i1 %684 to i8
  store i8 %685, ptr %9, align 1, !tbaa !5
  %686 = load i8, ptr %9, align 1, !tbaa !5, !range !20, !noundef !21
  %687 = trunc i8 %686 to i1
  br i1 %687, label %693, label %688

688:                                              ; preds = %683
  %689 = getelementptr inbounds %"struct.alglib_impl::nleqreport", ptr %22, i32 0, i32 2
  %690 = load i64, ptr %689, align 8, !tbaa !44
  %691 = load i64, ptr %19, align 8, !tbaa !11
  %692 = icmp ne i64 %690, %691
  br label %693

693:                                              ; preds = %688, %683
  %694 = phi i1 [ true, %683 ], [ %692, %688 ]
  %695 = zext i1 %694 to i8
  store i8 %695, ptr %9, align 1, !tbaa !5
  %696 = load i8, ptr %9, align 1, !tbaa !5, !range !20, !noundef !21
  %697 = trunc i8 %696 to i1
  br i1 %697, label %704, label %698

698:                                              ; preds = %693
  %699 = getelementptr inbounds %"struct.alglib_impl::nleqreport", ptr %22, i32 0, i32 0
  %700 = load i64, ptr %699, align 8, !tbaa !45
  %701 = load i64, ptr %20, align 8, !tbaa !11
  %702 = sub nsw i64 %701, 1
  %703 = icmp ne i64 %700, %702
  br label %704

704:                                              ; preds = %698, %693
  %705 = phi i1 [ true, %693 ], [ %703, %698 ]
  %706 = zext i1 %705 to i8
  store i8 %706, ptr %9, align 1, !tbaa !5
  %707 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %11, i64 noundef 2, ptr noundef %707)
  %708 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %16, i64 noundef 2, ptr noundef %708)
  %709 = load ptr, ptr %4, align 8, !tbaa !9
  %710 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %709)
  %711 = call double @llvm.fmuladd.f64(double 2.000000e+01, double %710, double 2.000000e+01)
  %712 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %713 = load ptr, ptr %712, align 8, !tbaa !13
  %714 = getelementptr inbounds double, ptr %713, i64 0
  store double %711, ptr %714, align 8, !tbaa !14
  %715 = load ptr, ptr %4, align 8, !tbaa !9
  %716 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %715)
  %717 = call double @llvm.fmuladd.f64(double 2.000000e+01, double %716, double 2.000000e+01)
  %718 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %719 = load ptr, ptr %718, align 8, !tbaa !13
  %720 = getelementptr inbounds double, ptr %719, i64 1
  store double %717, ptr %720, align 8, !tbaa !14
  %721 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %722 = load ptr, ptr %721, align 8, !tbaa !13
  %723 = getelementptr inbounds double, ptr %722, i64 0
  %724 = load double, ptr %723, align 8, !tbaa !14
  %725 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %726 = load ptr, ptr %725, align 8, !tbaa !13
  %727 = getelementptr inbounds double, ptr %726, i64 0
  store double %724, ptr %727, align 8, !tbaa !14
  %728 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %11, i32 0, i32 4
  %729 = load ptr, ptr %728, align 8, !tbaa !13
  %730 = getelementptr inbounds double, ptr %729, i64 1
  %731 = load double, ptr %730, align 8, !tbaa !14
  %732 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %733 = load ptr, ptr %732, align 8, !tbaa !13
  %734 = getelementptr inbounds double, ptr %733, i64 1
  store double %731, ptr %734, align 8, !tbaa !14
  %735 = load ptr, ptr %4, align 8, !tbaa !9
  %736 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %735)
  %737 = call double @llvm.fmuladd.f64(double 1.000000e-01, double %736, double 1.000000e-01)
  store double %737, ptr %26, align 8, !tbaa !14
  store double 1.000000e-09, ptr %25, align 8, !tbaa !14
  %738 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12nleqcreatelmEllPNS_9ae_vectorEPNS_9nleqstateEPNS_8ae_stateE(i64 noundef 2, i64 noundef 2, ptr noundef %11, ptr noundef %21, ptr noundef %738)
  %739 = load double, ptr %26, align 8, !tbaa !14
  %740 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13nleqsetstpmaxEPNS_9nleqstateEdPNS_8ae_stateE(ptr noundef %21, double noundef %739, ptr noundef %740)
  %741 = load double, ptr %25, align 8, !tbaa !14
  %742 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11nleqsetcondEPNS_9nleqstateEdlPNS_8ae_stateE(ptr noundef %21, double noundef %741, i64 noundef 0, ptr noundef %742)
  %743 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11nleqsetxrepEPNS_9nleqstateEbPNS_8ae_stateE(ptr noundef %21, i1 noundef zeroext true, ptr noundef %743)
  br label %744

744:                                              ; preds = %827, %704
  %745 = load ptr, ptr %4, align 8, !tbaa !9
  %746 = call noundef zeroext i1 @_ZN11alglib_impl13nleqiterationEPNS_9nleqstateEPNS_8ae_stateE(ptr noundef %21, ptr noundef %745)
  br i1 %746, label %747, label %828

747:                                              ; preds = %744
  %748 = getelementptr inbounds %"struct.alglib_impl::nleqstate", ptr %21, i32 0, i32 10
  %749 = load i8, ptr %748, align 8, !tbaa !41, !range !20, !noundef !21
  %750 = trunc i8 %749 to i1
  br i1 %750, label %755, label %751

751:                                              ; preds = %747
  %752 = getelementptr inbounds %"struct.alglib_impl::nleqstate", ptr %21, i32 0, i32 11
  %753 = load i8, ptr %752, align 1, !tbaa !42, !range !20, !noundef !21
  %754 = trunc i8 %753 to i1
  br i1 %754, label %755, label %757

755:                                              ; preds = %751, %747
  %756 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL24testnlequnit_testfunchbmPN11alglib_impl9nleqstateEPNS_8ae_stateE(ptr noundef %21, ptr noundef %756)
  br label %757

757:                                              ; preds = %755, %751
  %758 = getelementptr inbounds %"struct.alglib_impl::nleqstate", ptr %21, i32 0, i32 10
  %759 = load i8, ptr %758, align 8, !tbaa !41, !range !20, !noundef !21
  %760 = trunc i8 %759 to i1
  br i1 %760, label %769, label %761

761:                                              ; preds = %757
  %762 = getelementptr inbounds %"struct.alglib_impl::nleqstate", ptr %21, i32 0, i32 11
  %763 = load i8, ptr %762, align 1, !tbaa !42, !range !20, !noundef !21
  %764 = trunc i8 %763 to i1
  br i1 %764, label %769, label %765

765:                                              ; preds = %761
  %766 = getelementptr inbounds %"struct.alglib_impl::nleqstate", ptr %21, i32 0, i32 12
  %767 = load i8, ptr %766, align 2, !tbaa !31, !range !20, !noundef !21
  %768 = trunc i8 %767 to i1
  br i1 %768, label %769, label %806

769:                                              ; preds = %765, %761, %757
  %770 = load i8, ptr %9, align 1, !tbaa !5, !range !20, !noundef !21
  %771 = trunc i8 %770 to i1
  br i1 %771, label %803, label %772

772:                                              ; preds = %769
  %773 = getelementptr inbounds %"struct.alglib_impl::nleqstate", ptr %21, i32 0, i32 6
  %774 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %773, i32 0, i32 4
  %775 = load ptr, ptr %774, align 8, !tbaa !13
  %776 = getelementptr inbounds double, ptr %775, i64 0
  %777 = load double, ptr %776, align 8, !tbaa !14
  %778 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %779 = load ptr, ptr %778, align 8, !tbaa !13
  %780 = getelementptr inbounds double, ptr %779, i64 0
  %781 = load double, ptr %780, align 8, !tbaa !14
  %782 = fsub double %777, %781
  %783 = load ptr, ptr %4, align 8, !tbaa !9
  %784 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %782, ptr noundef %783)
  %785 = getelementptr inbounds %"struct.alglib_impl::nleqstate", ptr %21, i32 0, i32 6
  %786 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %785, i32 0, i32 4
  %787 = load ptr, ptr %786, align 8, !tbaa !13
  %788 = getelementptr inbounds double, ptr %787, i64 1
  %789 = load double, ptr %788, align 8, !tbaa !14
  %790 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %791 = load ptr, ptr %790, align 8, !tbaa !13
  %792 = getelementptr inbounds double, ptr %791, i64 1
  %793 = load double, ptr %792, align 8, !tbaa !14
  %794 = fsub double %789, %793
  %795 = load ptr, ptr %4, align 8, !tbaa !9
  %796 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %794, ptr noundef %795)
  %797 = fadd double %784, %796
  %798 = load ptr, ptr %4, align 8, !tbaa !9
  %799 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %797, ptr noundef %798)
  %800 = load double, ptr %26, align 8, !tbaa !14
  %801 = fmul double 1.000010e+00, %800
  %802 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %799, double noundef %801)
  br label %803

803:                                              ; preds = %772, %769
  %804 = phi i1 [ true, %769 ], [ %802, %772 ]
  %805 = zext i1 %804 to i8
  store i8 %805, ptr %9, align 1, !tbaa !5
  br label %806

806:                                              ; preds = %803, %765
  %807 = getelementptr inbounds %"struct.alglib_impl::nleqstate", ptr %21, i32 0, i32 12
  %808 = load i8, ptr %807, align 2, !tbaa !31, !range !20, !noundef !21
  %809 = trunc i8 %808 to i1
  br i1 %809, label %810, label %827

810:                                              ; preds = %806
  %811 = getelementptr inbounds %"struct.alglib_impl::nleqstate", ptr %21, i32 0, i32 6
  %812 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %811, i32 0, i32 4
  %813 = load ptr, ptr %812, align 8, !tbaa !13
  %814 = getelementptr inbounds double, ptr %813, i64 0
  %815 = load double, ptr %814, align 8, !tbaa !14
  %816 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %817 = load ptr, ptr %816, align 8, !tbaa !13
  %818 = getelementptr inbounds double, ptr %817, i64 0
  store double %815, ptr %818, align 8, !tbaa !14
  %819 = getelementptr inbounds %"struct.alglib_impl::nleqstate", ptr %21, i32 0, i32 6
  %820 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %819, i32 0, i32 4
  %821 = load ptr, ptr %820, align 8, !tbaa !13
  %822 = getelementptr inbounds double, ptr %821, i64 1
  %823 = load double, ptr %822, align 8, !tbaa !14
  %824 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %825 = load ptr, ptr %824, align 8, !tbaa !13
  %826 = getelementptr inbounds double, ptr %825, i64 1
  store double %823, ptr %826, align 8, !tbaa !14
  br label %827

827:                                              ; preds = %810, %806
  br label %744, !llvm.loop !46

828:                                              ; preds = %744
  %829 = load i8, ptr %7, align 1, !tbaa !5, !range !20, !noundef !21
  %830 = trunc i8 %829 to i1
  br i1 %830, label %837, label %831

831:                                              ; preds = %828
  %832 = load i8, ptr %8, align 1, !tbaa !5, !range !20, !noundef !21
  %833 = trunc i8 %832 to i1
  br i1 %833, label %837, label %834

834:                                              ; preds = %831
  %835 = load i8, ptr %9, align 1, !tbaa !5, !range !20, !noundef !21
  %836 = trunc i8 %835 to i1
  br label %837

837:                                              ; preds = %834, %831, %828
  %838 = phi i1 [ true, %831 ], [ true, %828 ], [ %836, %834 ]
  %839 = zext i1 %838 to i8
  store i8 %839, ptr %6, align 1, !tbaa !5
  %840 = load i8, ptr %3, align 1, !tbaa !5, !range !20, !noundef !21
  %841 = trunc i8 %840 to i1
  br i1 %841, label %876, label %842

842:                                              ; preds = %837
  %843 = call i32 (ptr, ...) @printf(ptr noundef @.str.755)
  %844 = call i32 (ptr, ...) @printf(ptr noundef @.str.756)
  %845 = load i8, ptr %7, align 1, !tbaa !5, !range !20, !noundef !21
  %846 = trunc i8 %845 to i1
  br i1 %846, label %847, label %849

847:                                              ; preds = %842
  %848 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %851

849:                                              ; preds = %842
  %850 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %851

851:                                              ; preds = %849, %847
  %852 = call i32 (ptr, ...) @printf(ptr noundef @.str.757)
  %853 = load i8, ptr %8, align 1, !tbaa !5, !range !20, !noundef !21
  %854 = trunc i8 %853 to i1
  br i1 %854, label %855, label %857

855:                                              ; preds = %851
  %856 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %859

857:                                              ; preds = %851
  %858 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %859

859:                                              ; preds = %857, %855
  %860 = call i32 (ptr, ...) @printf(ptr noundef @.str.342)
  %861 = load i8, ptr %9, align 1, !tbaa !5, !range !20, !noundef !21
  %862 = trunc i8 %861 to i1
  br i1 %862, label %863, label %865

863:                                              ; preds = %859
  %864 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %867

865:                                              ; preds = %859
  %866 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %867

867:                                              ; preds = %865, %863
  %868 = load i8, ptr %6, align 1, !tbaa !5, !range !20, !noundef !21
  %869 = trunc i8 %868 to i1
  br i1 %869, label %870, label %872

870:                                              ; preds = %867
  %871 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %874

872:                                              ; preds = %867
  %873 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %874

874:                                              ; preds = %872, %870
  %875 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %876

876:                                              ; preds = %874, %837
  %877 = load i8, ptr %6, align 1, !tbaa !5, !range !20, !noundef !21
  %878 = trunc i8 %877 to i1
  %879 = xor i1 %878, true
  %880 = zext i1 %879 to i8
  store i8 %880, ptr %27, align 1, !tbaa !5
  %881 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %881)
  %882 = load i8, ptr %27, align 1, !tbaa !5, !range !20, !noundef !21
  %883 = trunc i8 %882 to i1
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 840, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 8, 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 %883
}

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

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

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

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

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

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

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

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

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

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nocallback nofree 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 = !{!7, !7, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"double", !7, i64 0}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = !{!19, !12, i64 24}
!19 = !{!"_ZTSN11alglib_impl10nleqreportE", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24}
!20 = !{i8 0, i8 2}
!21 = !{}
!22 = distinct !{!22, !17}
!23 = distinct !{!23, !17}
!24 = distinct !{!24, !17}
!25 = distinct !{!25, !17}
!26 = distinct !{!26, !17}
!27 = distinct !{!27, !17}
!28 = distinct !{!28, !17}
!29 = distinct !{!29, !17}
!30 = distinct !{!30, !17}
!31 = !{!32, !6, i64 266}
!32 = !{!"_ZTSN11alglib_impl9nleqstateE", !12, i64 0, !12, i64 8, !15, i64 16, !12, i64 24, !6, i64 32, !15, i64 40, !33, i64 48, !15, i64 112, !33, i64 120, !35, i64 184, !6, i64 264, !6, i64 265, !6, i64 266, !36, i64 272, !12, i64 536, !12, i64 544, !12, i64 552, !12, i64 560, !33, i64 568, !15, i64 632, !15, i64 640, !33, i64 648, !33, i64 712, !33, i64 776}
!33 = !{!"_ZTSN11alglib_impl9ae_vectorE", !12, i64 0, !12, i64 8, !6, i64 16, !34, i64 24, !7, i64 56}
!34 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24}
!35 = !{!"_ZTSN11alglib_impl9ae_matrixE", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !6, i64 32, !34, i64 40, !7, i64 72}
!36 = !{!"_ZTSN11alglib_impl10rcommstateE", !37, i64 0, !33, i64 8, !33, i64 72, !33, i64 136, !33, i64 200}
!37 = !{!"int", !7, i64 0}
!38 = distinct !{!38, !17}
!39 = !{!32, !15, i64 112}
!40 = distinct !{!40, !17}
!41 = !{!32, !6, i64 264}
!42 = !{!32, !6, i64 265}
!43 = !{!19, !12, i64 8}
!44 = !{!19, !12, i64 16}
!45 = !{!19, !12, i64 0}
!46 = distinct !{!46, !17}


; 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::nleqstate" = type { i64, i64, double, i64, i8, double, %"struct.alglib_impl::ae_vector", double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", i8, i8, i8, %"struct.alglib_impl::rcommstate", i64, i64, i64, i64, %"struct.alglib_impl::ae_vector", double, double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::ae_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%union.anon.0 = type { ptr }
%"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::nleqreport" = type { i64, 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.342 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.755 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.756 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.757 = 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_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef, ptr noundef) local_unnamed_addr #1

declare noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef, double 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 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_impl10ae_maxrealEddPNS_8ae_stateE(double noundef, double noundef, ptr noundef) local_unnamed_addr #1

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

declare noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_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 void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z8testnleqbPN11alglib_impl8ae_stateE(i1 noundef zeroext %0, ptr noundef %1) local_unnamed_addr #5 {
  %3 = alloca %"struct.alglib_impl::ae_frame", align 8
  %4 = alloca %"struct.alglib_impl::ae_vector", align 8
  %5 = alloca %"struct.alglib_impl::ae_vector", align 8
  %6 = alloca %"struct.alglib_impl::nleqstate", align 8
  %7 = alloca %"struct.alglib_impl::nleqreport", align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %4) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %5) #6
  call void @llvm.lifetime.start.p0(i64 840, ptr nonnull %6) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #6
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %1, ptr noundef nonnull %3)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %4, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %5, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(840) %6, i8 0, i64 840, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %7, i8 0, i64 32, i1 false)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %4, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %5, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl15_nleqstate_initEPvPNS_8ae_stateEb(ptr noundef nonnull %6, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl16_nleqreport_initEPvPNS_8ae_stateEb(ptr noundef nonnull %7, ptr noundef %1, i1 noundef zeroext true)
  %8 = getelementptr inbounds i8, ptr %4, i64 56
  %9 = getelementptr inbounds i8, ptr %7, i64 24
  br label %10

10:                                               ; preds = %2, %122
  %.0215 = phi i8 [ 0, %2 ], [ %.3, %122 ]
  %.0172214 = phi i64 [ 0, %2 ], [ %123, %122 ]
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef 2, ptr noundef %1)
  %11 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %12 = call double @llvm.fmuladd.f64(double %11, double 2.000000e+01, double -1.000000e+01)
  %13 = load ptr, ptr %8, align 8, !tbaa !5
  store double %12, ptr %13, align 8, !tbaa !8
  %14 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %15 = call double @llvm.fmuladd.f64(double %14, double 2.000000e+01, double -1.000000e+01)
  %16 = load ptr, ptr %8, align 8, !tbaa !5
  %17 = getelementptr inbounds i8, ptr %16, i64 8
  store double %15, ptr %17, align 8, !tbaa !8
  call void @_ZN11alglib_impl12nleqcreatelmEllPNS_9ae_vectorEPNS_9nleqstateEPNS_8ae_stateE(i64 noundef 2, i64 noundef 2, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef %1)
  call void @_ZN11alglib_impl11nleqsetcondEPNS_9nleqstateEdlPNS_8ae_stateE(ptr noundef nonnull %6, double noundef 1.000000e-09, i64 noundef 0, ptr noundef %1)
  %18 = call noundef zeroext i1 @_ZN11alglib_impl13nleqiterationEPNS_9nleqstateEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef %1)
  br i1 %18, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %10, %.lr.ph
  call void @_ZL24testnlequnit_testfunchbmPN11alglib_impl9nleqstateEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef %1)
  %19 = call noundef zeroext i1 @_ZN11alglib_impl13nleqiterationEPNS_9nleqstateEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef %1)
  br i1 %19, label %.lr.ph, label %._crit_edge, !llvm.loop !10

._crit_edge:                                      ; preds = %.lr.ph, %10
  call void @_ZN11alglib_impl11nleqresultsEPNS_9nleqstateEPNS_9ae_vectorEPNS_10nleqreportEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef nonnull %4, ptr noundef nonnull %7, ptr noundef %1)
  %20 = load i64, ptr %9, align 8, !tbaa !12
  %21 = icmp sgt i64 %20, 0
  br i1 %21, label %22, label %42

22:                                               ; preds = %._crit_edge
  %23 = trunc nuw i8 %.0215 to i1
  br i1 %23, label %42, label %24

24:                                               ; preds = %22
  %25 = load ptr, ptr %8, align 8, !tbaa !5
  %26 = load double, ptr %25, align 8, !tbaa !8
  %27 = getelementptr inbounds i8, ptr %25, i64 8
  %28 = load double, ptr %27, align 8, !tbaa !8
  %29 = call double @llvm.fmuladd.f64(double %26, double %26, double %28)
  %30 = fadd double %29, -1.100000e+01
  %31 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %30, ptr noundef %1)
  %32 = load ptr, ptr %8, align 8, !tbaa !5
  %33 = load double, ptr %32, align 8, !tbaa !8
  %34 = getelementptr inbounds i8, ptr %32, i64 8
  %35 = load double, ptr %34, align 8, !tbaa !8
  %36 = call double @llvm.fmuladd.f64(double %35, double %35, double %33)
  %37 = fadd double %36, -7.000000e+00
  %38 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %37, ptr noundef %1)
  %39 = fadd double %31, %38
  %40 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef 1.000000e-09, ptr noundef %1)
  %41 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %39, double noundef %40)
  br label %42

42:                                               ; preds = %._crit_edge, %22, %24
  %.1 = phi i1 [ true, %22 ], [ %41, %24 ], [ true, %._crit_edge ]
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef 2, ptr noundef %1)
  %43 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %44 = call double @llvm.fmuladd.f64(double %43, double 2.000000e+01, double -1.000000e+01)
  %45 = load ptr, ptr %8, align 8, !tbaa !5
  store double %44, ptr %45, align 8, !tbaa !8
  %46 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %47 = call double @llvm.fmuladd.f64(double %46, double 2.000000e+01, double -1.000000e+01)
  %48 = load ptr, ptr %8, align 8, !tbaa !5
  %49 = getelementptr inbounds i8, ptr %48, i64 8
  store double %47, ptr %49, align 8, !tbaa !8
  call void @_ZN11alglib_impl12nleqcreatelmEllPNS_9ae_vectorEPNS_9nleqstateEPNS_8ae_stateE(i64 noundef 2, i64 noundef 2, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef %1)
  call void @_ZN11alglib_impl11nleqsetcondEPNS_9nleqstateEdlPNS_8ae_stateE(ptr noundef nonnull %6, double noundef 1.000000e-09, i64 noundef 0, ptr noundef %1)
  %50 = call noundef zeroext i1 @_ZN11alglib_impl13nleqiterationEPNS_9nleqstateEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef %1)
  br i1 %50, label %.lr.ph200, label %._crit_edge201

.lr.ph200:                                        ; preds = %42, %.lr.ph200
  call void @_ZL24testnlequnit_testfunchbmPN11alglib_impl9nleqstateEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef %1)
  %51 = call noundef zeroext i1 @_ZN11alglib_impl13nleqiterationEPNS_9nleqstateEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef %1)
  br i1 %51, label %.lr.ph200, label %._crit_edge201, !llvm.loop !15

._crit_edge201:                                   ; preds = %.lr.ph200, %42
  call void @_ZN11alglib_impl11nleqresultsEPNS_9nleqstateEPNS_9ae_vectorEPNS_10nleqreportEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef nonnull %4, ptr noundef nonnull %7, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef 2, ptr noundef %1)
  %52 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %53 = call double @llvm.fmuladd.f64(double %52, double 2.000000e+01, double -1.000000e+01)
  %54 = load ptr, ptr %8, align 8, !tbaa !5
  store double %53, ptr %54, align 8, !tbaa !8
  %55 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %56 = call double @llvm.fmuladd.f64(double %55, double 2.000000e+01, double -1.000000e+01)
  %57 = load ptr, ptr %8, align 8, !tbaa !5
  %58 = getelementptr inbounds i8, ptr %57, i64 8
  store double %56, ptr %58, align 8, !tbaa !8
  call void @_ZN11alglib_impl15nleqrestartfromEPNS_9nleqstateEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef nonnull %4, ptr noundef %1)
  %59 = call noundef zeroext i1 @_ZN11alglib_impl13nleqiterationEPNS_9nleqstateEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef %1)
  br i1 %59, label %.lr.ph203, label %._crit_edge204

.lr.ph203:                                        ; preds = %._crit_edge201, %.lr.ph203
  call void @_ZL24testnlequnit_testfunchbmPN11alglib_impl9nleqstateEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef %1)
  %60 = call noundef zeroext i1 @_ZN11alglib_impl13nleqiterationEPNS_9nleqstateEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef %1)
  br i1 %60, label %.lr.ph203, label %._crit_edge204, !llvm.loop !16

._crit_edge204:                                   ; preds = %.lr.ph203, %._crit_edge201
  call void @_ZN11alglib_impl11nleqresultsEPNS_9nleqstateEPNS_9ae_vectorEPNS_10nleqreportEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef nonnull %4, ptr noundef nonnull %7, ptr noundef %1)
  %61 = load i64, ptr %9, align 8, !tbaa !12
  %62 = icmp slt i64 %61, 1
  %brmerge = or i1 %.1, %62
  br i1 %brmerge, label %81, label %63

63:                                               ; preds = %._crit_edge204
  %64 = load ptr, ptr %8, align 8, !tbaa !5
  %65 = load double, ptr %64, align 8, !tbaa !8
  %66 = getelementptr inbounds i8, ptr %64, i64 8
  %67 = load double, ptr %66, align 8, !tbaa !8
  %68 = call double @llvm.fmuladd.f64(double %65, double %65, double %67)
  %69 = fadd double %68, -1.100000e+01
  %70 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %69, ptr noundef %1)
  %71 = load ptr, ptr %8, align 8, !tbaa !5
  %72 = load double, ptr %71, align 8, !tbaa !8
  %73 = getelementptr inbounds i8, ptr %71, i64 8
  %74 = load double, ptr %73, align 8, !tbaa !8
  %75 = call double @llvm.fmuladd.f64(double %74, double %74, double %72)
  %76 = fadd double %75, -7.000000e+00
  %77 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %76, ptr noundef %1)
  %78 = fadd double %70, %77
  %79 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef 1.000000e-09, ptr noundef %1)
  %80 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %78, double noundef %79)
  br label %81

81:                                               ; preds = %._crit_edge204, %63
  %.2 = phi i1 [ %80, %63 ], [ true, %._crit_edge204 ]
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef 2, ptr noundef %1)
  %82 = load ptr, ptr %8, align 8, !tbaa !5
  store double 1.000000e+02, ptr %82, align 8, !tbaa !8
  %83 = load ptr, ptr %8, align 8, !tbaa !5
  %84 = getelementptr inbounds i8, ptr %83, i64 8
  store double 1.000000e+02, ptr %84, align 8, !tbaa !8
  call void @_ZN11alglib_impl12nleqcreatelmEllPNS_9ae_vectorEPNS_9nleqstateEPNS_8ae_stateE(i64 noundef 2, i64 noundef 2, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef %1)
  call void @_ZN11alglib_impl11nleqsetcondEPNS_9nleqstateEdlPNS_8ae_stateE(ptr noundef nonnull %6, double noundef 1.000000e-09, i64 noundef 0, ptr noundef %1)
  call void @_ZN11alglib_impl13nleqsetstpmaxEPNS_9nleqstateEdPNS_8ae_stateE(ptr noundef nonnull %6, double noundef 1.000000e-02, ptr noundef %1)
  %85 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 100, ptr noundef %1)
  %.not205 = icmp slt i64 %85, 0
  br i1 %.not205, label %._crit_edge209, label %.lr.ph208

.lr.ph208:                                        ; preds = %81, %87
  %.0185206 = phi i64 [ %88, %87 ], [ 0, %81 ]
  %86 = call noundef zeroext i1 @_ZN11alglib_impl13nleqiterationEPNS_9nleqstateEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef %1)
  br i1 %86, label %87, label %._crit_edge209

87:                                               ; preds = %.lr.ph208
  call void @_ZL24testnlequnit_testfunchbmPN11alglib_impl9nleqstateEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef %1)
  %88 = add nuw i64 %.0185206, 1
  %exitcond.not = icmp eq i64 %.0185206, %85
  br i1 %exitcond.not, label %._crit_edge209, label %.lr.ph208, !llvm.loop !17

._crit_edge209:                                   ; preds = %87, %.lr.ph208, %81
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef 2, ptr noundef %1)
  %89 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %90 = call double @llvm.fmuladd.f64(double %89, double 2.000000e+01, double -1.000000e+01)
  %91 = load ptr, ptr %8, align 8, !tbaa !5
  store double %90, ptr %91, align 8, !tbaa !8
  %92 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %93 = call double @llvm.fmuladd.f64(double %92, double 2.000000e+01, double -1.000000e+01)
  %94 = load ptr, ptr %8, align 8, !tbaa !5
  %95 = getelementptr inbounds i8, ptr %94, i64 8
  store double %93, ptr %95, align 8, !tbaa !8
  call void @_ZN11alglib_impl15nleqrestartfromEPNS_9nleqstateEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef nonnull %4, ptr noundef %1)
  %96 = call noundef zeroext i1 @_ZN11alglib_impl13nleqiterationEPNS_9nleqstateEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef %1)
  br i1 %96, label %.lr.ph212, label %._crit_edge213

.lr.ph212:                                        ; preds = %._crit_edge209, %.lr.ph212
  call void @_ZL24testnlequnit_testfunchbmPN11alglib_impl9nleqstateEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef %1)
  %97 = call noundef zeroext i1 @_ZN11alglib_impl13nleqiterationEPNS_9nleqstateEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef %1)
  br i1 %97, label %.lr.ph212, label %._crit_edge213, !llvm.loop !18

._crit_edge213:                                   ; preds = %.lr.ph212, %._crit_edge209
  call void @_ZN11alglib_impl11nleqresultsEPNS_9nleqstateEPNS_9ae_vectorEPNS_10nleqreportEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef nonnull %4, ptr noundef nonnull %7, ptr noundef %1)
  %98 = load i64, ptr %9, align 8, !tbaa !12
  %99 = icmp sgt i64 %98, 0
  br i1 %99, label %100, label %122

100:                                              ; preds = %._crit_edge213
  br i1 %.2, label %119, label %101

101:                                              ; preds = %100
  %102 = load ptr, ptr %8, align 8, !tbaa !5
  %103 = load double, ptr %102, align 8, !tbaa !8
  %104 = getelementptr inbounds i8, ptr %102, i64 8
  %105 = load double, ptr %104, align 8, !tbaa !8
  %106 = call double @llvm.fmuladd.f64(double %103, double %103, double %105)
  %107 = fadd double %106, -1.100000e+01
  %108 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %107, ptr noundef %1)
  %109 = load ptr, ptr %8, align 8, !tbaa !5
  %110 = load double, ptr %109, align 8, !tbaa !8
  %111 = getelementptr inbounds i8, ptr %109, i64 8
  %112 = load double, ptr %111, align 8, !tbaa !8
  %113 = call double @llvm.fmuladd.f64(double %112, double %112, double %110)
  %114 = fadd double %113, -7.000000e+00
  %115 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %114, ptr noundef %1)
  %116 = fadd double %108, %115
  %117 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef 1.000000e-09, ptr noundef %1)
  %118 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %116, double noundef %117)
  br label %119

119:                                              ; preds = %101, %100
  %120 = phi i1 [ true, %100 ], [ %118, %101 ]
  %121 = zext i1 %120 to i8
  br label %122

122:                                              ; preds = %._crit_edge213, %119
  %.3 = phi i8 [ %121, %119 ], [ 1, %._crit_edge213 ]
  %123 = add nuw nsw i64 %.0172214, 1
  %exitcond267.not = icmp eq i64 %123, 100
  br i1 %exitcond267.not, label %.preheader196, label %10, !llvm.loop !19

.preheader196:                                    ; preds = %122, %157
  %.4220 = phi i8 [ %.5, %157 ], [ %.3, %122 ]
  %.1173219 = phi i64 [ %158, %157 ], [ 0, %122 ]
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef 2, ptr noundef %1)
  %124 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %125 = call double @llvm.fmuladd.f64(double %124, double 2.000000e+01, double -1.000000e+01)
  %126 = load ptr, ptr %8, align 8, !tbaa !5
  store double %125, ptr %126, align 8, !tbaa !8
  %127 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %128 = call double @llvm.fmuladd.f64(double %127, double 2.000000e+01, double -1.000000e+01)
  %129 = load ptr, ptr %8, align 8, !tbaa !5
  %130 = getelementptr inbounds i8, ptr %129, i64 8
  store double %128, ptr %130, align 8, !tbaa !8
  call void @_ZN11alglib_impl12nleqcreatelmEllPNS_9ae_vectorEPNS_9nleqstateEPNS_8ae_stateE(i64 noundef 2, i64 noundef 1, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef %1)
  call void @_ZN11alglib_impl11nleqsetcondEPNS_9nleqstateEdlPNS_8ae_stateE(ptr noundef nonnull %6, double noundef 1.000000e-09, i64 noundef 0, ptr noundef %1)
  %131 = call noundef zeroext i1 @_ZN11alglib_impl13nleqiterationEPNS_9nleqstateEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef %1)
  br i1 %131, label %.lr.ph217, label %._crit_edge218

.lr.ph217:                                        ; preds = %.preheader196, %.lr.ph217
  call void @_ZL24testnlequnit_testfunchb1PN11alglib_impl9nleqstateEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef %1)
  %132 = call noundef zeroext i1 @_ZN11alglib_impl13nleqiterationEPNS_9nleqstateEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef %1)
  br i1 %132, label %.lr.ph217, label %._crit_edge218, !llvm.loop !20

._crit_edge218:                                   ; preds = %.lr.ph217, %.preheader196
  call void @_ZN11alglib_impl11nleqresultsEPNS_9nleqstateEPNS_9ae_vectorEPNS_10nleqreportEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef nonnull %4, ptr noundef nonnull %7, ptr noundef %1)
  %133 = load i64, ptr %9, align 8, !tbaa !12
  %134 = icmp sgt i64 %133, 0
  br i1 %134, label %135, label %157

135:                                              ; preds = %._crit_edge218
  %136 = trunc nuw i8 %.4220 to i1
  br i1 %136, label %154, label %137

137:                                              ; preds = %135
  %138 = load ptr, ptr %8, align 8, !tbaa !5
  %139 = load double, ptr %138, align 8, !tbaa !8
  %140 = getelementptr inbounds i8, ptr %138, i64 8
  %141 = load double, ptr %140, align 8, !tbaa !8
  %142 = call double @llvm.fmuladd.f64(double %139, double %139, double %141)
  %143 = fadd double %142, -1.100000e+01
  %144 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %143, ptr noundef %1)
  %145 = load ptr, ptr %8, align 8, !tbaa !5
  %146 = load double, ptr %145, align 8, !tbaa !8
  %147 = getelementptr inbounds i8, ptr %145, i64 8
  %148 = load double, ptr %147, align 8, !tbaa !8
  %149 = call double @llvm.fmuladd.f64(double %148, double %148, double %146)
  %150 = fadd double %149, -7.000000e+00
  %151 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %150, ptr noundef %1)
  %152 = fadd double %144, %151
  %153 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %152, double noundef 1.000000e-09)
  br label %154

154:                                              ; preds = %137, %135
  %155 = phi i1 [ true, %135 ], [ %153, %137 ]
  %156 = zext i1 %155 to i8
  br label %157

157:                                              ; preds = %._crit_edge218, %154
  %.5 = phi i8 [ %156, %154 ], [ 1, %._crit_edge218 ]
  %158 = add nuw nsw i64 %.1173219, 1
  %exitcond268.not = icmp eq i64 %158, 100
  br i1 %exitcond268.not, label %.preheader195.preheader, label %.preheader196, !llvm.loop !21

.preheader195.preheader:                          ; preds = %157
  %159 = trunc nuw i8 %.5 to i1
  br label %.preheader195

.preheader195:                                    ; preds = %.preheader195.preheader, %._crit_edge223
  %.6225 = phi i1 [ %171, %._crit_edge223 ], [ %159, %.preheader195.preheader ]
  %.2174224 = phi i64 [ %172, %._crit_edge223 ], [ 0, %.preheader195.preheader ]
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef 2, ptr noundef %1)
  %160 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %161 = call double @llvm.fmuladd.f64(double %160, double 2.000000e+01, double -1.000000e+01)
  %162 = load ptr, ptr %8, align 8, !tbaa !5
  store double %161, ptr %162, align 8, !tbaa !8
  %163 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %164 = call double @llvm.fmuladd.f64(double %163, double 2.000000e+01, double -1.000000e+01)
  %165 = load ptr, ptr %8, align 8, !tbaa !5
  %166 = getelementptr inbounds i8, ptr %165, i64 8
  store double %164, ptr %166, align 8, !tbaa !8
  call void @_ZN11alglib_impl12nleqcreatelmEllPNS_9ae_vectorEPNS_9nleqstateEPNS_8ae_stateE(i64 noundef 2, i64 noundef 3, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef %1)
  call void @_ZN11alglib_impl11nleqsetcondEPNS_9nleqstateEdlPNS_8ae_stateE(ptr noundef nonnull %6, double noundef 1.000000e-09, i64 noundef 0, ptr noundef %1)
  %167 = call noundef zeroext i1 @_ZN11alglib_impl13nleqiterationEPNS_9nleqstateEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef %1)
  br i1 %167, label %.lr.ph222, label %._crit_edge223

.lr.ph222:                                        ; preds = %.preheader195, %.lr.ph222
  call void @_ZL25testnlequnit_testfuncshbmPN11alglib_impl9nleqstateEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef %1)
  %168 = call noundef zeroext i1 @_ZN11alglib_impl13nleqiterationEPNS_9nleqstateEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef %1)
  br i1 %168, label %.lr.ph222, label %._crit_edge223, !llvm.loop !22

._crit_edge223:                                   ; preds = %.lr.ph222, %.preheader195
  call void @_ZN11alglib_impl11nleqresultsEPNS_9nleqstateEPNS_9ae_vectorEPNS_10nleqreportEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef nonnull %4, ptr noundef nonnull %7, ptr noundef %1)
  %169 = load i64, ptr %9, align 8
  %170 = icmp ne i64 %169, -4
  %171 = select i1 %.6225, i1 true, i1 %170
  %172 = add nuw nsw i64 %.2174224, 1
  %exitcond269.not = icmp eq i64 %172, 100
  br i1 %exitcond269.not, label %173, label %.preheader195, !llvm.loop !23

173:                                              ; preds = %._crit_edge223
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef 2, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %5, i64 noundef 2, ptr noundef %1)
  %174 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %175 = call double @llvm.fmuladd.f64(double %174, double 2.000000e+01, double -1.000000e+01)
  %176 = load ptr, ptr %8, align 8, !tbaa !5
  store double %175, ptr %176, align 8, !tbaa !8
  %177 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %178 = call double @llvm.fmuladd.f64(double %177, double 2.000000e+01, double -1.000000e+01)
  %179 = load ptr, ptr %8, align 8, !tbaa !5
  %180 = getelementptr inbounds i8, ptr %179, i64 8
  store double %178, ptr %180, align 8, !tbaa !8
  %181 = getelementptr inbounds i8, ptr %5, i64 56
  %182 = load ptr, ptr %181, align 8, !tbaa !5
  store double 1.000000e+300, ptr %182, align 8, !tbaa !8
  %183 = load ptr, ptr %181, align 8, !tbaa !5
  %184 = getelementptr inbounds i8, ptr %183, i64 8
  store double 1.000000e+300, ptr %184, align 8, !tbaa !8
  call void @_ZN11alglib_impl12nleqcreatelmEllPNS_9ae_vectorEPNS_9nleqstateEPNS_8ae_stateE(i64 noundef 2, i64 noundef 2, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef %1)
  call void @_ZN11alglib_impl11nleqsetcondEPNS_9nleqstateEdlPNS_8ae_stateE(ptr noundef nonnull %6, double noundef 0x3EB0C6F7A0B5ED8D, i64 noundef 0, ptr noundef %1)
  call void @_ZN11alglib_impl11nleqsetxrepEPNS_9nleqstateEbPNS_8ae_stateE(ptr noundef nonnull %6, i1 noundef zeroext true, ptr noundef %1)
  %185 = call noundef zeroext i1 @_ZN11alglib_impl13nleqiterationEPNS_9nleqstateEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef %1)
  br i1 %185, label %.lr.ph228.lr.ph, label %.outer._crit_edge

.lr.ph228.lr.ph:                                  ; preds = %173
  %186 = getelementptr inbounds i8, ptr %6, i64 266
  %187 = getelementptr inbounds i8, ptr %6, i64 264
  %188 = getelementptr inbounds i8, ptr %6, i64 265
  %189 = getelementptr inbounds i8, ptr %6, i64 104
  %190 = getelementptr inbounds i8, ptr %6, i64 112
  br label %.lr.ph228

.lr.ph228:                                        ; preds = %.lr.ph228.lr.ph, %.outer
  %.0175.ph246 = phi i64 [ 0, %.lr.ph228.lr.ph ], [ %245, %.outer ]
  %.0176.ph245 = phi i64 [ 0, %.lr.ph228.lr.ph ], [ %.0176227, %.outer ]
  %.0178.ph244 = phi i64 [ 0, %.lr.ph228.lr.ph ], [ %.0178226, %.outer ]
  %.0181.ph243 = phi i1 [ true, %.lr.ph228.lr.ph ], [ false, %.outer ]
  %.0183.ph242 = phi double [ 1.000000e+300, %.lr.ph228.lr.ph ], [ %244, %.outer ]
  %.0187.ph241 = phi i8 [ 0, %.lr.ph228.lr.ph ], [ %240, %.outer ]
  br label %191

191:                                              ; preds = %.lr.ph228, %247
  %.0176227 = phi i64 [ %.0176.ph245, %.lr.ph228 ], [ %.1177, %247 ]
  %.0178226 = phi i64 [ %.0178.ph244, %.lr.ph228 ], [ %.2180, %247 ]
  %192 = load i8, ptr %186, align 2, !tbaa !24, !range !33, !noundef !34
  %193 = trunc nuw i8 %192 to i1
  br i1 %193, label %194, label %247

194:                                              ; preds = %191
  br i1 %.0181.ph243, label %.preheader.preheader, label %.loopexit

.preheader.preheader:                             ; preds = %194
  %195 = trunc nuw i8 %.0187.ph241 to i1
  br i1 %195, label %.loopexit.loopexit, label %.preheader.1

.preheader.1:                                     ; preds = %.preheader.preheader
  %196 = load ptr, ptr %189, align 8, !tbaa !5
  %197 = load double, ptr %196, align 8, !tbaa !8
  %198 = load ptr, ptr %8, align 8, !tbaa !5
  %199 = load double, ptr %198, align 8, !tbaa !8
  %200 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %197, double noundef %199)
  br i1 %200, label %.loopexit.loopexit, label %201

201:                                              ; preds = %.preheader.1
  %202 = load ptr, ptr %189, align 8, !tbaa !5
  %203 = getelementptr inbounds i8, ptr %202, i64 8
  %204 = load double, ptr %203, align 8, !tbaa !8
  %205 = load ptr, ptr %8, align 8, !tbaa !5
  %206 = getelementptr inbounds i8, ptr %205, i64 8
  %207 = load double, ptr %206, align 8, !tbaa !8
  %208 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %204, double noundef %207)
  br label %.loopexit.loopexit

.loopexit.loopexit:                               ; preds = %.preheader.preheader, %201, %.preheader.1
  %209 = phi i1 [ true, %.preheader.1 ], [ %208, %201 ], [ true, %.preheader.preheader ]
  %210 = zext i1 %209 to i8
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit, %194
  %.2189 = phi i8 [ %.0187.ph241, %194 ], [ %210, %.loopexit.loopexit ]
  %211 = trunc nuw i8 %.2189 to i1
  br i1 %211, label %215, label %212

212:                                              ; preds = %.loopexit
  %213 = load double, ptr %190, align 8, !tbaa !35
  %214 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %213, double noundef %.0183.ph242)
  br label %215

215:                                              ; preds = %212, %.loopexit
  %216 = phi i1 [ true, %.loopexit ], [ %214, %212 ]
  %217 = load ptr, ptr %189, align 8, !tbaa !5
  %218 = load double, ptr %217, align 8, !tbaa !8
  %219 = getelementptr inbounds i8, ptr %217, i64 8
  %220 = load double, ptr %219, align 8, !tbaa !8
  %221 = call double @llvm.fmuladd.f64(double %218, double %218, double %220)
  %222 = fadd double %221, -1.100000e+01
  %223 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %222, ptr noundef %1)
  %224 = load ptr, ptr %189, align 8, !tbaa !5
  %225 = load double, ptr %224, align 8, !tbaa !8
  %226 = getelementptr inbounds i8, ptr %224, i64 8
  %227 = load double, ptr %226, align 8, !tbaa !8
  %228 = call double @llvm.fmuladd.f64(double %227, double %227, double %225)
  %229 = fadd double %228, -7.000000e+00
  %230 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %229, ptr noundef %1)
  br i1 %216, label %.outer, label %231

231:                                              ; preds = %215
  %232 = fadd double %223, %230
  %233 = load double, ptr %190, align 8, !tbaa !35
  %234 = fsub double %232, %233
  %235 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %234, ptr noundef %1)
  %236 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %232, double noundef 1.000000e+00, ptr noundef %1)
  %237 = fdiv double %235, %236
  %238 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %237, double noundef 5.000000e-14)
  br label %.outer

.outer:                                           ; preds = %231, %215
  %239 = phi i1 [ true, %215 ], [ %238, %231 ]
  %240 = zext i1 %239 to i8
  %241 = load ptr, ptr %181, align 8, !tbaa !5
  %242 = load ptr, ptr %189, align 8, !tbaa !5
  %243 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef 1)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %241, i64 noundef 1, ptr noundef %242, i64 noundef 1, i64 noundef %243)
  %244 = load double, ptr %190, align 8, !tbaa !35
  %245 = add nuw nsw i64 %.0175.ph246, 1
  %246 = call noundef zeroext i1 @_ZN11alglib_impl13nleqiterationEPNS_9nleqstateEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef %1)
  br i1 %246, label %.lr.ph228, label %.outer._crit_edge, !llvm.loop !36

247:                                              ; preds = %191
  %248 = load i8, ptr %187, align 8, !tbaa !37, !range !33, !noundef !34
  %249 = zext nneg i8 %248 to i64
  %spec.select = add nsw i64 %.0178226, %249
  %250 = load i8, ptr %188, align 1, !tbaa !38, !range !33, !noundef !34
  %251 = zext nneg i8 %250 to i64
  %.2180 = add nsw i64 %spec.select, %251
  %.1177 = add nsw i64 %.0176227, %251
  call void @_ZL24testnlequnit_testfunchbmPN11alglib_impl9nleqstateEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef %1)
  %252 = call noundef zeroext i1 @_ZN11alglib_impl13nleqiterationEPNS_9nleqstateEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef %1)
  br i1 %252, label %191, label %.outer._crit_edge.loopexit, !llvm.loop !36

.outer._crit_edge.loopexit:                       ; preds = %247
  %253 = add nsw i64 %.0175.ph246, -1
  br label %.outer._crit_edge

.outer._crit_edge:                                ; preds = %.outer, %.outer._crit_edge.loopexit, %173
  %.0187.ph.lcssa = phi i8 [ 0, %173 ], [ %.0187.ph241, %.outer._crit_edge.loopexit ], [ %240, %.outer ]
  %.0183.ph.lcssa = phi double [ 1.000000e+300, %173 ], [ %.0183.ph242, %.outer._crit_edge.loopexit ], [ %244, %.outer ]
  %.0175.ph.lcssa = phi i64 [ -1, %173 ], [ %253, %.outer._crit_edge.loopexit ], [ %.0175.ph246, %.outer ]
  %.0178.lcssa = phi i64 [ 0, %173 ], [ %.2180, %.outer._crit_edge.loopexit ], [ %.0178226, %.outer ]
  %.0176.lcssa = phi i64 [ 0, %173 ], [ %.1177, %.outer._crit_edge.loopexit ], [ %.0176227, %.outer ]
  call void @_ZN11alglib_impl11nleqresultsEPNS_9nleqstateEPNS_9ae_vectorEPNS_10nleqreportEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef nonnull %4, ptr noundef nonnull %7, ptr noundef %1)
  %254 = load i64, ptr %9, align 8, !tbaa !12
  %255 = icmp slt i64 %254, 1
  br i1 %255, label %296, label %256

256:                                              ; preds = %.outer._crit_edge
  %257 = trunc nuw i8 %.0187.ph.lcssa to i1
  br i1 %257, label %272, label %258

258:                                              ; preds = %256
  %259 = load ptr, ptr %181, align 8, !tbaa !5
  %260 = load double, ptr %259, align 8, !tbaa !8
  %261 = load ptr, ptr %8, align 8, !tbaa !5
  %262 = load double, ptr %261, align 8, !tbaa !8
  %263 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %260, double noundef %262)
  br i1 %263, label %272, label %264

264:                                              ; preds = %258
  %265 = load ptr, ptr %181, align 8, !tbaa !5
  %266 = getelementptr inbounds i8, ptr %265, i64 8
  %267 = load double, ptr %266, align 8, !tbaa !8
  %268 = load ptr, ptr %8, align 8, !tbaa !5
  %269 = getelementptr inbounds i8, ptr %268, i64 8
  %270 = load double, ptr %269, align 8, !tbaa !8
  %271 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %267, double noundef %270)
  br label %272

272:                                              ; preds = %264, %258, %256
  %273 = phi i1 [ true, %258 ], [ true, %256 ], [ %271, %264 ]
  %274 = load ptr, ptr %8, align 8, !tbaa !5
  %275 = load double, ptr %274, align 8, !tbaa !8
  %276 = getelementptr inbounds i8, ptr %274, i64 8
  %277 = load double, ptr %276, align 8, !tbaa !8
  %278 = call double @llvm.fmuladd.f64(double %275, double %275, double %277)
  %279 = fadd double %278, -1.100000e+01
  %280 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %279, ptr noundef %1)
  %281 = load ptr, ptr %8, align 8, !tbaa !5
  %282 = load double, ptr %281, align 8, !tbaa !8
  %283 = getelementptr inbounds i8, ptr %281, i64 8
  %284 = load double, ptr %283, align 8, !tbaa !8
  %285 = call double @llvm.fmuladd.f64(double %284, double %284, double %282)
  %286 = fadd double %285, -7.000000e+00
  %287 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %286, ptr noundef %1)
  br i1 %273, label %296, label %288

288:                                              ; preds = %272
  %289 = fadd double %280, %287
  %290 = fsub double %.0183.ph.lcssa, %289
  %291 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %290, ptr noundef %1)
  %292 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %289, double noundef 1.000000e+00, ptr noundef %1)
  %293 = fdiv double %291, %292
  %294 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %293, double noundef 5.000000e-14)
  %295 = zext i1 %294 to i8
  br label %296

296:                                              ; preds = %272, %288, %.outer._crit_edge
  %.3190 = phi i8 [ %.0187.ph.lcssa, %.outer._crit_edge ], [ 1, %272 ], [ %295, %288 ]
  %297 = trunc nuw i8 %.3190 to i1
  %298 = getelementptr inbounds i8, ptr %7, i64 8
  %299 = load i64, ptr %298, align 8
  %300 = icmp ne i64 %299, %.0178.lcssa
  %301 = select i1 %297, i1 true, i1 %300
  %302 = getelementptr inbounds i8, ptr %7, i64 16
  %303 = load i64, ptr %302, align 8
  %304 = icmp ne i64 %303, %.0176.lcssa
  %305 = select i1 %301, i1 true, i1 %304
  %306 = load i64, ptr %7, align 8
  %307 = icmp ne i64 %306, %.0175.ph.lcssa
  %308 = select i1 %305, i1 true, i1 %307
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef 2, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %5, i64 noundef 2, ptr noundef %1)
  %309 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %310 = call double @llvm.fmuladd.f64(double %309, double 2.000000e+01, double 2.000000e+01)
  %311 = load ptr, ptr %8, align 8, !tbaa !5
  store double %310, ptr %311, align 8, !tbaa !8
  %312 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %313 = call double @llvm.fmuladd.f64(double %312, double 2.000000e+01, double 2.000000e+01)
  %314 = load ptr, ptr %8, align 8, !tbaa !5
  %315 = getelementptr inbounds i8, ptr %314, i64 8
  store double %313, ptr %315, align 8, !tbaa !8
  %316 = load ptr, ptr %8, align 8, !tbaa !5
  %317 = load double, ptr %316, align 8, !tbaa !8
  %318 = load ptr, ptr %181, align 8, !tbaa !5
  store double %317, ptr %318, align 8, !tbaa !8
  %319 = load ptr, ptr %8, align 8, !tbaa !5
  %320 = getelementptr inbounds i8, ptr %319, i64 8
  %321 = load double, ptr %320, align 8, !tbaa !8
  %322 = load ptr, ptr %181, align 8, !tbaa !5
  %323 = getelementptr inbounds i8, ptr %322, i64 8
  store double %321, ptr %323, align 8, !tbaa !8
  %324 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %325 = call double @llvm.fmuladd.f64(double %324, double 1.000000e-01, double 1.000000e-01)
  call void @_ZN11alglib_impl12nleqcreatelmEllPNS_9ae_vectorEPNS_9nleqstateEPNS_8ae_stateE(i64 noundef 2, i64 noundef 2, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef %1)
  call void @_ZN11alglib_impl13nleqsetstpmaxEPNS_9nleqstateEdPNS_8ae_stateE(ptr noundef nonnull %6, double noundef %325, ptr noundef %1)
  call void @_ZN11alglib_impl11nleqsetcondEPNS_9nleqstateEdlPNS_8ae_stateE(ptr noundef nonnull %6, double noundef 1.000000e-09, i64 noundef 0, ptr noundef %1)
  call void @_ZN11alglib_impl11nleqsetxrepEPNS_9nleqstateEbPNS_8ae_stateE(ptr noundef nonnull %6, i1 noundef zeroext true, ptr noundef %1)
  %326 = call noundef zeroext i1 @_ZN11alglib_impl13nleqiterationEPNS_9nleqstateEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef %1)
  br i1 %326, label %.lr.ph254, label %._crit_edge255

.lr.ph254:                                        ; preds = %296
  %327 = zext i1 %308 to i8
  %328 = getelementptr inbounds i8, ptr %6, i64 264
  %329 = getelementptr inbounds i8, ptr %6, i64 265
  %330 = getelementptr inbounds i8, ptr %6, i64 266
  %331 = getelementptr inbounds i8, ptr %6, i64 104
  %332 = fmul double %325, 1.000010e+00
  br label %333

333:                                              ; preds = %.lr.ph254, %384
  %.4191252 = phi i8 [ %327, %.lr.ph254 ], [ %.5192, %384 ]
  %334 = load i8, ptr %328, align 8, !tbaa !37, !range !33, !noundef !34
  %335 = trunc nuw i8 %334 to i1
  br i1 %335, label %339, label %336

336:                                              ; preds = %333
  %337 = load i8, ptr %329, align 1, !tbaa !38, !range !33, !noundef !34
  %338 = trunc nuw i8 %337 to i1
  br i1 %338, label %339, label %340

339:                                              ; preds = %336, %333
  call void @_ZL24testnlequnit_testfunchbmPN11alglib_impl9nleqstateEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef %1)
  %.pre = load i8, ptr %328, align 8, !tbaa !37, !range !33
  br label %340

340:                                              ; preds = %339, %336
  %341 = phi i8 [ %.pre, %339 ], [ %334, %336 ]
  %342 = trunc nuw i8 %341 to i1
  br i1 %342, label %349, label %343

343:                                              ; preds = %340
  %344 = load i8, ptr %329, align 1, !tbaa !38, !range !33, !noundef !34
  %345 = trunc nuw i8 %344 to i1
  br i1 %345, label %349, label %346

346:                                              ; preds = %343
  %347 = load i8, ptr %330, align 2, !tbaa !24, !range !33, !noundef !34
  %348 = trunc nuw i8 %347 to i1
  br i1 %348, label %349, label %372

349:                                              ; preds = %346, %343, %340
  %350 = trunc nuw i8 %.4191252 to i1
  br i1 %350, label %369, label %351

351:                                              ; preds = %349
  %352 = load ptr, ptr %331, align 8, !tbaa !5
  %353 = load double, ptr %352, align 8, !tbaa !8
  %354 = load ptr, ptr %181, align 8, !tbaa !5
  %355 = load double, ptr %354, align 8, !tbaa !8
  %356 = fsub double %353, %355
  %357 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %356, ptr noundef %1)
  %358 = load ptr, ptr %331, align 8, !tbaa !5
  %359 = getelementptr inbounds i8, ptr %358, i64 8
  %360 = load double, ptr %359, align 8, !tbaa !8
  %361 = load ptr, ptr %181, align 8, !tbaa !5
  %362 = getelementptr inbounds i8, ptr %361, i64 8
  %363 = load double, ptr %362, align 8, !tbaa !8
  %364 = fsub double %360, %363
  %365 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %364, ptr noundef %1)
  %366 = fadd double %357, %365
  %367 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %366, ptr noundef %1)
  %368 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %367, double noundef %332)
  br label %369

369:                                              ; preds = %351, %349
  %370 = phi i1 [ true, %349 ], [ %368, %351 ]
  %371 = zext i1 %370 to i8
  %.pre270 = load i8, ptr %330, align 2, !tbaa !24, !range !33
  br label %372

372:                                              ; preds = %369, %346
  %373 = phi i8 [ %.pre270, %369 ], [ %347, %346 ]
  %.5192 = phi i8 [ %371, %369 ], [ %.4191252, %346 ]
  %374 = trunc nuw i8 %373 to i1
  br i1 %374, label %375, label %384

375:                                              ; preds = %372
  %376 = load ptr, ptr %331, align 8, !tbaa !5
  %377 = load double, ptr %376, align 8, !tbaa !8
  %378 = load ptr, ptr %181, align 8, !tbaa !5
  store double %377, ptr %378, align 8, !tbaa !8
  %379 = load ptr, ptr %331, align 8, !tbaa !5
  %380 = getelementptr inbounds i8, ptr %379, i64 8
  %381 = load double, ptr %380, align 8, !tbaa !8
  %382 = load ptr, ptr %181, align 8, !tbaa !5
  %383 = getelementptr inbounds i8, ptr %382, i64 8
  store double %381, ptr %383, align 8, !tbaa !8
  br label %384

384:                                              ; preds = %375, %372
  %385 = call noundef zeroext i1 @_ZN11alglib_impl13nleqiterationEPNS_9nleqstateEPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef %1)
  br i1 %385, label %333, label %._crit_edge255.loopexit, !llvm.loop !39

._crit_edge255.loopexit:                          ; preds = %384
  %386 = trunc nuw i8 %.5192 to i1
  br label %._crit_edge255

._crit_edge255:                                   ; preds = %._crit_edge255.loopexit, %296
  %.4191.lcssa = phi i1 [ %308, %296 ], [ %386, %._crit_edge255.loopexit ]
  %387 = or i1 %171, %255
  %spec.select279 = select i1 %387, i1 true, i1 %.4191.lcssa
  br i1 %0, label %398, label %388

388:                                              ; preds = %._crit_edge255
  %389 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.755)
  %390 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.756)
  %.str.7..str.6 = select i1 %171, ptr @.str.7, ptr @.str.6
  %391 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.7..str.6)
  %392 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.757)
  %.str.6.sink280 = select i1 %255, ptr @.str.7, ptr @.str.6
  %393 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink280)
  %394 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.342)
  %.str.6.sink281 = select i1 %.4191.lcssa, ptr @.str.7, ptr @.str.6
  %395 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink281)
  %.str.2.sink = select i1 %spec.select279, ptr @.str.1, ptr @.str.2
  %396 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.2.sink)
  %397 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3)
  br label %398

398:                                              ; preds = %388, %._crit_edge255
  %399 = xor i1 %spec.select279, true
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1)
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 840, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #6
  ret i1 %399
}

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

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

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

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

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

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

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

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

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

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

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

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

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 = !{!"omnipotent char", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !9, i64 0}
!9 = !{!"double", !6, i64 0}
!10 = distinct !{!10, !11}
!11 = !{!"llvm.loop.mustprogress"}
!12 = !{!13, !14, i64 24}
!13 = !{!"_ZTSN11alglib_impl10nleqreportE", !14, i64 0, !14, i64 8, !14, i64 16, !14, i64 24}
!14 = !{!"long", !6, i64 0}
!15 = distinct !{!15, !11}
!16 = distinct !{!16, !11}
!17 = distinct !{!17, !11}
!18 = distinct !{!18, !11}
!19 = distinct !{!19, !11}
!20 = distinct !{!20, !11}
!21 = distinct !{!21, !11}
!22 = distinct !{!22, !11}
!23 = distinct !{!23, !11}
!24 = !{!25, !26, i64 266}
!25 = !{!"_ZTSN11alglib_impl9nleqstateE", !14, i64 0, !14, i64 8, !9, i64 16, !14, i64 24, !26, i64 32, !9, i64 40, !27, i64 48, !9, i64 112, !27, i64 120, !30, i64 184, !26, i64 264, !26, i64 265, !26, i64 266, !31, i64 272, !14, i64 536, !14, i64 544, !14, i64 552, !14, i64 560, !27, i64 568, !9, i64 632, !9, i64 640, !27, i64 648, !27, i64 712, !27, i64 776}
!26 = !{!"bool", !6, i64 0}
!27 = !{!"_ZTSN11alglib_impl9ae_vectorE", !14, i64 0, !14, i64 8, !26, i64 16, !28, i64 24, !6, i64 56}
!28 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !29, i64 0, !29, i64 8, !29, i64 16, !29, i64 24}
!29 = !{!"any pointer", !6, i64 0}
!30 = !{!"_ZTSN11alglib_impl9ae_matrixE", !14, i64 0, !14, i64 8, !14, i64 16, !14, i64 24, !26, i64 32, !28, i64 40, !6, i64 72}
!31 = !{!"_ZTSN11alglib_impl10rcommstateE", !32, i64 0, !27, i64 8, !27, i64 72, !27, i64 136, !27, i64 200}
!32 = !{!"int", !6, i64 0}
!33 = !{i8 0, i8 2}
!34 = !{}
!35 = !{!25, !9, i64 112}
!36 = distinct !{!36, !11}
!37 = !{!25, !26, i64 264}
!38 = !{!25, !26, i64 265}
!39 = distinct !{!39, !11}


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