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

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

%"struct.alglib_impl::linesearchstate" = type { double, double, double, double, double, double, i8, i64, i8, i64, double, double, double, double, double, double, double, double, double, double, double, double, double, double, i64, double, i64, double, double, double, %"struct.alglib_impl::rcommstate" }
%"struct.alglib_impl::rcommstate" = type { i32, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::ae_vector" = type { i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%union.anon.0 = type { ptr }

@.str.359 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.360 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.361 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.362 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.363 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.364 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.365 = external hidden unnamed_addr constant [83 x i8], align 1
@.str.366 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.367 = external hidden unnamed_addr constant [91 x i8], align 1
@.str.368 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.369 = external hidden unnamed_addr constant [37 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

13:                                               ; preds = %2
  br label %15

14:                                               ; preds = %2
  br label %15

15:                                               ; preds = %14, %13
  %16 = load ptr, ptr %4, align 8, !tbaa !5
  %17 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %16, i32 0, i32 30
  %18 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %17, i32 0, i32 0
  %19 = load i32, ptr %18, align 8, !tbaa !9
  %20 = icmp eq i32 %19, 0
  br i1 %20, label %21, label %22

21:                                               ; preds = %15
  br label %121

22:                                               ; preds = %15
  %23 = load ptr, ptr %4, align 8, !tbaa !5
  %24 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %23, i32 0, i32 30
  %25 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %24, i32 0, i32 0
  %26 = load i32, ptr %25, align 8, !tbaa !9
  %27 = icmp eq i32 %26, 1
  br i1 %27, label %28, label %29

28:                                               ; preds = %22
  br label %217

29:                                               ; preds = %22
  %30 = load ptr, ptr %4, align 8, !tbaa !5
  %31 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %30, i32 0, i32 30
  %32 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %31, i32 0, i32 0
  %33 = load i32, ptr %32, align 8, !tbaa !9
  %34 = icmp eq i32 %33, 2
  br i1 %34, label %35, label %36

35:                                               ; preds = %29
  br label %486

36:                                               ; preds = %29
  %37 = load ptr, ptr %4, align 8, !tbaa !5
  %38 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %37, i32 0, i32 30
  %39 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %38, i32 0, i32 0
  %40 = load i32, ptr %39, align 8, !tbaa !9
  %41 = icmp eq i32 %40, 3
  br i1 %41, label %42, label %43

42:                                               ; preds = %36
  br label %563

43:                                               ; preds = %36
  %44 = load ptr, ptr %4, align 8, !tbaa !5
  %45 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %44, i32 0, i32 30
  %46 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %45, i32 0, i32 0
  %47 = load i32, ptr %46, align 8, !tbaa !9
  %48 = icmp eq i32 %47, 4
  br i1 %48, label %49, label %50

49:                                               ; preds = %43
  br label %675

50:                                               ; preds = %43
  %51 = load ptr, ptr %4, align 8, !tbaa !5
  %52 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %51, i32 0, i32 8
  %53 = load i8, ptr %52, align 8, !tbaa !18, !range !19, !noundef !20
  %54 = trunc i8 %53 to i1
  br i1 %54, label %55, label %60

55:                                               ; preds = %50
  %56 = load ptr, ptr %4, align 8, !tbaa !5
  %57 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %56, i32 0, i32 9
  %58 = load i64, ptr %57, align 8, !tbaa !21
  %59 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11traceanglesElPNS_8ae_stateE(i64 noundef %58, ptr noundef %59)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.359)
  br label %60

60:                                               ; preds = %55, %50
  %61 = load ptr, ptr %4, align 8, !tbaa !5
  %62 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %61, i32 0, i32 1
  %63 = load double, ptr %62, align 8, !tbaa !22
  %64 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %63, double noundef 0.000000e+00)
  br i1 %64, label %65, label %85

65:                                               ; preds = %60
  %66 = load ptr, ptr %4, align 8, !tbaa !5
  %67 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %66, i32 0, i32 8
  %68 = load i8, ptr %67, align 8, !tbaa !18, !range !19, !noundef !20
  %69 = trunc i8 %68 to i1
  br i1 %69, label %70, label %78

70:                                               ; preds = %65
  %71 = load ptr, ptr %4, align 8, !tbaa !5
  %72 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %71, i32 0, i32 9
  %73 = load i64, ptr %72, align 8, !tbaa !21
  %74 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11traceanglesElPNS_8ae_stateE(i64 noundef %73, ptr noundef %74)
  %75 = load ptr, ptr %4, align 8, !tbaa !5
  %76 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %75, i32 0, i32 1
  %77 = load double, ptr %76, align 8, !tbaa !22
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.360, double noundef %77)
  br label %78

78:                                               ; preds = %70, %65
  %79 = load ptr, ptr %4, align 8, !tbaa !5
  %80 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %79, i32 0, i32 25
  store double 0.000000e+00, ptr %80, align 8, !tbaa !23
  %81 = load ptr, ptr %4, align 8, !tbaa !5
  %82 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %81, i32 0, i32 26
  store i64 0, ptr %82, align 8, !tbaa !24
  store i8 0, ptr %6, align 1, !tbaa !25
  %83 = load i8, ptr %6, align 1, !tbaa !25, !range !19, !noundef !20
  %84 = trunc i8 %83 to i1
  store i1 %84, ptr %3, align 1
  store i32 1, ptr %7, align 4
  br label %872

85:                                               ; preds = %60
  %86 = load ptr, ptr %4, align 8, !tbaa !5
  %87 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %86, i32 0, i32 24
  store i64 0, ptr %87, align 8, !tbaa !26
  %88 = load ptr, ptr %4, align 8, !tbaa !5
  %89 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %88, i32 0, i32 0
  %90 = load double, ptr %89, align 8, !tbaa !27
  %91 = load ptr, ptr %4, align 8, !tbaa !5
  %92 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %91, i32 0, i32 13
  store double %90, ptr %92, align 8, !tbaa !28
  %93 = load ptr, ptr %4, align 8, !tbaa !5
  %94 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %93, i32 0, i32 1
  %95 = load double, ptr %94, align 8, !tbaa !22
  %96 = load ptr, ptr %4, align 8, !tbaa !5
  %97 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %96, i32 0, i32 14
  store double %95, ptr %97, align 8, !tbaa !29
  %98 = load ptr, ptr %4, align 8, !tbaa !5
  %99 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %98, i32 0, i32 12
  store double 0.000000e+00, ptr %99, align 8, !tbaa !30
  %100 = load ptr, ptr %4, align 8, !tbaa !5
  %101 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %100, i32 0, i32 2
  %102 = load double, ptr %101, align 8, !tbaa !31
  %103 = load ptr, ptr %4, align 8, !tbaa !5
  %104 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %103, i32 0, i32 15
  store double %102, ptr %104, align 8, !tbaa !32
  %105 = load ptr, ptr %4, align 8, !tbaa !5
  %106 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %105, i32 0, i32 10
  store double 0.000000e+00, ptr %106, align 8, !tbaa !33
  %107 = load ptr, ptr %4, align 8, !tbaa !5
  %108 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %107, i32 0, i32 0
  %109 = load double, ptr %108, align 8, !tbaa !27
  %110 = load ptr, ptr %4, align 8, !tbaa !5
  %111 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %110, i32 0, i32 11
  store double %109, ptr %111, align 8, !tbaa !34
  br label %112

112:                                              ; preds = %516, %85
  %113 = load ptr, ptr %4, align 8, !tbaa !5
  %114 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %113, i32 0, i32 15
  %115 = load double, ptr %114, align 8, !tbaa !32
  %116 = load ptr, ptr %4, align 8, !tbaa !5
  %117 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %116, i32 0, i32 27
  store double %115, ptr %117, align 8, !tbaa !35
  %118 = load ptr, ptr %4, align 8, !tbaa !5
  %119 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %118, i32 0, i32 30
  %120 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %119, i32 0, i32 0
  store i32 0, ptr %120, align 8, !tbaa !9
  br label %869

121:                                              ; preds = %21
  %122 = load ptr, ptr %4, align 8, !tbaa !5
  %123 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %122, i32 0, i32 28
  %124 = load double, ptr %123, align 8, !tbaa !36
  %125 = load ptr, ptr %4, align 8, !tbaa !5
  %126 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %125, i32 0, i32 16
  store double %124, ptr %126, align 8, !tbaa !37
  %127 = load ptr, ptr %4, align 8, !tbaa !5
  %128 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %127, i32 0, i32 29
  %129 = load double, ptr %128, align 8, !tbaa !38
  %130 = load ptr, ptr %4, align 8, !tbaa !5
  %131 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %130, i32 0, i32 17
  store double %129, ptr %131, align 8, !tbaa !39
  %132 = load ptr, ptr %4, align 8, !tbaa !5
  %133 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %132, i32 0, i32 24
  %134 = load i64, ptr %133, align 8, !tbaa !26
  %135 = add nsw i64 %134, 1
  %136 = load ptr, ptr %4, align 8, !tbaa !5
  %137 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %136, i32 0, i32 24
  store i64 %135, ptr %137, align 8, !tbaa !26
  %138 = load ptr, ptr %4, align 8, !tbaa !5
  %139 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %138, i32 0, i32 8
  %140 = load i8, ptr %139, align 8, !tbaa !18, !range !19, !noundef !20
  %141 = trunc i8 %140 to i1
  br i1 %141, label %142, label %160

142:                                              ; preds = %121
  %143 = load ptr, ptr %4, align 8, !tbaa !5
  %144 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %143, i32 0, i32 9
  %145 = load i64, ptr %144, align 8, !tbaa !21
  %146 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11traceanglesElPNS_8ae_stateE(i64 noundef %145, ptr noundef %146)
  %147 = load ptr, ptr %4, align 8, !tbaa !5
  %148 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %147, i32 0, i32 15
  %149 = load double, ptr %148, align 8, !tbaa !32
  %150 = load ptr, ptr %4, align 8, !tbaa !5
  %151 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %150, i32 0, i32 16
  %152 = load double, ptr %151, align 8, !tbaa !37
  %153 = load ptr, ptr %4, align 8, !tbaa !5
  %154 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %153, i32 0, i32 0
  %155 = load double, ptr %154, align 8, !tbaa !27
  %156 = fsub double %152, %155
  %157 = load ptr, ptr %4, align 8, !tbaa !5
  %158 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %157, i32 0, i32 17
  %159 = load double, ptr %158, align 8, !tbaa !39
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.361, double noundef %149, double noundef %156, double noundef %159)
  br label %160

160:                                              ; preds = %142, %121
  %161 = load ptr, ptr %4, align 8, !tbaa !5
  %162 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %161, i32 0, i32 10
  %163 = load double, ptr %162, align 8, !tbaa !33
  %164 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %163, double noundef 0.000000e+00)
  br i1 %164, label %173, label %165

165:                                              ; preds = %160
  %166 = load ptr, ptr %4, align 8, !tbaa !5
  %167 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %166, i32 0, i32 16
  %168 = load double, ptr %167, align 8, !tbaa !37
  %169 = load ptr, ptr %4, align 8, !tbaa !5
  %170 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %169, i32 0, i32 11
  %171 = load double, ptr %170, align 8, !tbaa !34
  %172 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %168, double noundef %171)
  br i1 %172, label %173, label %184

173:                                              ; preds = %165, %160
  %174 = load ptr, ptr %4, align 8, !tbaa !5
  %175 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %174, i32 0, i32 15
  %176 = load double, ptr %175, align 8, !tbaa !32
  %177 = load ptr, ptr %4, align 8, !tbaa !5
  %178 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %177, i32 0, i32 10
  store double %176, ptr %178, align 8, !tbaa !33
  %179 = load ptr, ptr %4, align 8, !tbaa !5
  %180 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %179, i32 0, i32 16
  %181 = load double, ptr %180, align 8, !tbaa !37
  %182 = load ptr, ptr %4, align 8, !tbaa !5
  %183 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %182, i32 0, i32 11
  store double %181, ptr %183, align 8, !tbaa !34
  br label %184

184:                                              ; preds = %173, %165
  %185 = load ptr, ptr %4, align 8, !tbaa !5
  %186 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %185, i32 0, i32 24
  %187 = load i64, ptr %186, align 8, !tbaa !26
  %188 = load ptr, ptr %4, align 8, !tbaa !5
  %189 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %188, i32 0, i32 7
  %190 = load i64, ptr %189, align 8, !tbaa !40
  %191 = sub nsw i64 %190, 1
  %192 = icmp slt i64 %187, %191
  br i1 %192, label %193, label %194

193:                                              ; preds = %184
  br label %248

194:                                              ; preds = %184
  %195 = load ptr, ptr %4, align 8, !tbaa !5
  %196 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %195, i32 0, i32 10
  %197 = load double, ptr %196, align 8, !tbaa !33
  %198 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %197, double noundef 0.000000e+00)
  %199 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %198, ptr noundef @.str.362, ptr noundef %199)
  %200 = load ptr, ptr %4, align 8, !tbaa !5
  %201 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %200, i32 0, i32 15
  %202 = load double, ptr %201, align 8, !tbaa !32
  %203 = load ptr, ptr %4, align 8, !tbaa !5
  %204 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %203, i32 0, i32 10
  %205 = load double, ptr %204, align 8, !tbaa !33
  %206 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %202, double noundef %205)
  br i1 %206, label %207, label %208

207:                                              ; preds = %194
  br label %224

208:                                              ; preds = %194
  %209 = load ptr, ptr %4, align 8, !tbaa !5
  %210 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %209, i32 0, i32 10
  %211 = load double, ptr %210, align 8, !tbaa !33
  %212 = load ptr, ptr %4, align 8, !tbaa !5
  %213 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %212, i32 0, i32 27
  store double %211, ptr %213, align 8, !tbaa !35
  %214 = load ptr, ptr %4, align 8, !tbaa !5
  %215 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %214, i32 0, i32 30
  %216 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %215, i32 0, i32 0
  store i32 1, ptr %216, align 8, !tbaa !9
  br label %869

217:                                              ; preds = %28
  %218 = load ptr, ptr %4, align 8, !tbaa !5
  %219 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %218, i32 0, i32 24
  %220 = load i64, ptr %219, align 8, !tbaa !26
  %221 = add nsw i64 %220, 1
  %222 = load ptr, ptr %4, align 8, !tbaa !5
  %223 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %222, i32 0, i32 24
  store i64 %221, ptr %223, align 8, !tbaa !26
  br label %224

224:                                              ; preds = %217, %207
  %225 = load ptr, ptr %4, align 8, !tbaa !5
  %226 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %225, i32 0, i32 10
  %227 = load double, ptr %226, align 8, !tbaa !33
  %228 = load ptr, ptr %4, align 8, !tbaa !5
  %229 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %228, i32 0, i32 25
  store double %227, ptr %229, align 8, !tbaa !23
  %230 = load ptr, ptr %4, align 8, !tbaa !5
  %231 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %230, i32 0, i32 26
  store i64 3, ptr %231, align 8, !tbaa !24
  %232 = load ptr, ptr %4, align 8, !tbaa !5
  %233 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %232, i32 0, i32 8
  %234 = load i8, ptr %233, align 8, !tbaa !18, !range !19, !noundef !20
  %235 = trunc i8 %234 to i1
  br i1 %235, label %236, label %245

236:                                              ; preds = %224
  %237 = load ptr, ptr %4, align 8, !tbaa !5
  %238 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %237, i32 0, i32 9
  %239 = load i64, ptr %238, align 8, !tbaa !21
  %240 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11traceanglesElPNS_8ae_stateE(i64 noundef %239, ptr noundef %240)
  %241 = load ptr, ptr %4, align 8, !tbaa !5
  %242 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %241, i32 0, i32 7
  %243 = load i64, ptr %242, align 8, !tbaa !40
  %244 = trunc i64 %243 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.363, i32 noundef %244)
  br label %245

245:                                              ; preds = %236, %224
  store i8 0, ptr %6, align 1, !tbaa !25
  %246 = load i8, ptr %6, align 1, !tbaa !25, !range !19, !noundef !20
  %247 = trunc i8 %246 to i1
  store i1 %247, ptr %3, align 1
  store i32 1, ptr %7, align 4
  br label %872

248:                                              ; preds = %193
  %249 = load ptr, ptr %4, align 8, !tbaa !5
  %250 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %249, i32 0, i32 16
  %251 = load double, ptr %250, align 8, !tbaa !37
  %252 = load ptr, ptr %4, align 8, !tbaa !5
  %253 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %252, i32 0, i32 0
  %254 = load double, ptr %253, align 8, !tbaa !27
  %255 = load ptr, ptr %4, align 8, !tbaa !5
  %256 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %255, i32 0, i32 4
  %257 = load double, ptr %256, align 8, !tbaa !41
  %258 = load ptr, ptr %4, align 8, !tbaa !5
  %259 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %258, i32 0, i32 15
  %260 = load double, ptr %259, align 8, !tbaa !32
  %261 = fmul double %257, %260
  %262 = load ptr, ptr %4, align 8, !tbaa !5
  %263 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %262, i32 0, i32 1
  %264 = load double, ptr %263, align 8, !tbaa !22
  %265 = call double @llvm.fmuladd.f64(double %261, double %264, double %254)
  %266 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %251, double noundef %265)
  br i1 %266, label %267, label %319

267:                                              ; preds = %248
  %268 = load ptr, ptr %4, align 8, !tbaa !5
  %269 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %268, i32 0, i32 17
  %270 = load double, ptr %269, align 8, !tbaa !39
  %271 = load ptr, ptr %5, align 8, !tbaa !5
  %272 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %270, ptr noundef %271)
  %273 = load ptr, ptr %4, align 8, !tbaa !5
  %274 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %273, i32 0, i32 5
  %275 = load double, ptr %274, align 8, !tbaa !42
  %276 = fneg double %275
  %277 = load ptr, ptr %4, align 8, !tbaa !5
  %278 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %277, i32 0, i32 1
  %279 = load double, ptr %278, align 8, !tbaa !22
  %280 = fmul double %276, %279
  %281 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %272, double noundef %280)
  br i1 %281, label %299, label %282

282:                                              ; preds = %267
  %283 = load ptr, ptr %4, align 8, !tbaa !5
  %284 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %283, i32 0, i32 6
  %285 = load i8, ptr %284, align 8, !tbaa !43, !range !19, !noundef !20
  %286 = trunc i8 %285 to i1
  br i1 %286, label %319, label %287

287:                                              ; preds = %282
  %288 = load ptr, ptr %4, align 8, !tbaa !5
  %289 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %288, i32 0, i32 17
  %290 = load double, ptr %289, align 8, !tbaa !39
  %291 = load ptr, ptr %4, align 8, !tbaa !5
  %292 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %291, i32 0, i32 5
  %293 = load double, ptr %292, align 8, !tbaa !42
  %294 = load ptr, ptr %4, align 8, !tbaa !5
  %295 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %294, i32 0, i32 1
  %296 = load double, ptr %295, align 8, !tbaa !22
  %297 = fmul double %293, %296
  %298 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %290, double noundef %297)
  br i1 %298, label %299, label %319

299:                                              ; preds = %287, %267
  %300 = load ptr, ptr %4, align 8, !tbaa !5
  %301 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %300, i32 0, i32 15
  %302 = load double, ptr %301, align 8, !tbaa !32
  %303 = load ptr, ptr %4, align 8, !tbaa !5
  %304 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %303, i32 0, i32 25
  store double %302, ptr %304, align 8, !tbaa !23
  %305 = load ptr, ptr %4, align 8, !tbaa !5
  %306 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %305, i32 0, i32 26
  store i64 1, ptr %306, align 8, !tbaa !24
  %307 = load ptr, ptr %4, align 8, !tbaa !5
  %308 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %307, i32 0, i32 8
  %309 = load i8, ptr %308, align 8, !tbaa !18, !range !19, !noundef !20
  %310 = trunc i8 %309 to i1
  br i1 %310, label %311, label %316

311:                                              ; preds = %299
  %312 = load ptr, ptr %4, align 8, !tbaa !5
  %313 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %312, i32 0, i32 9
  %314 = load i64, ptr %313, align 8, !tbaa !21
  %315 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11traceanglesElPNS_8ae_stateE(i64 noundef %314, ptr noundef %315)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.364)
  br label %316

316:                                              ; preds = %311, %299
  store i8 0, ptr %6, align 1, !tbaa !25
  %317 = load i8, ptr %6, align 1, !tbaa !25, !range !19, !noundef !20
  %318 = trunc i8 %317 to i1
  store i1 %318, ptr %3, align 1
  store i32 1, ptr %7, align 4
  br label %872

319:                                              ; preds = %287, %282, %248
  %320 = load ptr, ptr %4, align 8, !tbaa !5
  %321 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %320, i32 0, i32 16
  %322 = load double, ptr %321, align 8, !tbaa !37
  %323 = load ptr, ptr %4, align 8, !tbaa !5
  %324 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %323, i32 0, i32 0
  %325 = load double, ptr %324, align 8, !tbaa !27
  %326 = load ptr, ptr %4, align 8, !tbaa !5
  %327 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %326, i32 0, i32 4
  %328 = load double, ptr %327, align 8, !tbaa !41
  %329 = load ptr, ptr %4, align 8, !tbaa !5
  %330 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %329, i32 0, i32 15
  %331 = load double, ptr %330, align 8, !tbaa !32
  %332 = fmul double %328, %331
  %333 = load ptr, ptr %4, align 8, !tbaa !5
  %334 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %333, i32 0, i32 1
  %335 = load double, ptr %334, align 8, !tbaa !22
  %336 = call double @llvm.fmuladd.f64(double %332, double %335, double %325)
  %337 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %322, double noundef %336)
  br i1 %337, label %346, label %338

338:                                              ; preds = %319
  %339 = load ptr, ptr %4, align 8, !tbaa !5
  %340 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %339, i32 0, i32 16
  %341 = load double, ptr %340, align 8, !tbaa !37
  %342 = load ptr, ptr %4, align 8, !tbaa !5
  %343 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %342, i32 0, i32 13
  %344 = load double, ptr %343, align 8, !tbaa !28
  %345 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %341, double noundef %344)
  br i1 %345, label %346, label %393

346:                                              ; preds = %338, %319
  %347 = load ptr, ptr %4, align 8, !tbaa !5
  %348 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %347, i32 0, i32 12
  %349 = load double, ptr %348, align 8, !tbaa !30
  %350 = load ptr, ptr %4, align 8, !tbaa !5
  %351 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %350, i32 0, i32 18
  store double %349, ptr %351, align 8, !tbaa !44
  %352 = load ptr, ptr %4, align 8, !tbaa !5
  %353 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %352, i32 0, i32 15
  %354 = load double, ptr %353, align 8, !tbaa !32
  %355 = load ptr, ptr %4, align 8, !tbaa !5
  %356 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %355, i32 0, i32 19
  store double %354, ptr %356, align 8, !tbaa !45
  %357 = load ptr, ptr %4, align 8, !tbaa !5
  %358 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %357, i32 0, i32 13
  %359 = load double, ptr %358, align 8, !tbaa !28
  %360 = load ptr, ptr %4, align 8, !tbaa !5
  %361 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %360, i32 0, i32 20
  store double %359, ptr %361, align 8, !tbaa !46
  %362 = load ptr, ptr %4, align 8, !tbaa !5
  %363 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %362, i32 0, i32 16
  %364 = load double, ptr %363, align 8, !tbaa !37
  %365 = load ptr, ptr %4, align 8, !tbaa !5
  %366 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %365, i32 0, i32 21
  store double %364, ptr %366, align 8, !tbaa !47
  %367 = load ptr, ptr %4, align 8, !tbaa !5
  %368 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %367, i32 0, i32 14
  %369 = load double, ptr %368, align 8, !tbaa !29
  %370 = load ptr, ptr %4, align 8, !tbaa !5
  %371 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %370, i32 0, i32 22
  store double %369, ptr %371, align 8, !tbaa !48
  %372 = load ptr, ptr %4, align 8, !tbaa !5
  %373 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %372, i32 0, i32 17
  %374 = load double, ptr %373, align 8, !tbaa !39
  %375 = load ptr, ptr %4, align 8, !tbaa !5
  %376 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %375, i32 0, i32 23
  store double %374, ptr %376, align 8, !tbaa !49
  %377 = load ptr, ptr %4, align 8, !tbaa !5
  %378 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %377, i32 0, i32 8
  %379 = load i8, ptr %378, align 8, !tbaa !18, !range !19, !noundef !20
  %380 = trunc i8 %379 to i1
  br i1 %380, label %381, label %392

381:                                              ; preds = %346
  %382 = load ptr, ptr %4, align 8, !tbaa !5
  %383 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %382, i32 0, i32 9
  %384 = load i64, ptr %383, align 8, !tbaa !21
  %385 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11traceanglesElPNS_8ae_stateE(i64 noundef %384, ptr noundef %385)
  %386 = load ptr, ptr %4, align 8, !tbaa !5
  %387 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %386, i32 0, i32 18
  %388 = load double, ptr %387, align 8, !tbaa !44
  %389 = load ptr, ptr %4, align 8, !tbaa !5
  %390 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %389, i32 0, i32 19
  %391 = load double, ptr %390, align 8, !tbaa !45
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.365, double noundef %388, double noundef %391)
  br label %392

392:                                              ; preds = %381, %346
  br label %543

393:                                              ; preds = %338
  %394 = load ptr, ptr %4, align 8, !tbaa !5
  %395 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %394, i32 0, i32 17
  %396 = load double, ptr %395, align 8, !tbaa !39
  %397 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %396, double noundef 0.000000e+00)
  br i1 %397, label %398, label %445

398:                                              ; preds = %393
  %399 = load ptr, ptr %4, align 8, !tbaa !5
  %400 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %399, i32 0, i32 12
  %401 = load double, ptr %400, align 8, !tbaa !30
  %402 = load ptr, ptr %4, align 8, !tbaa !5
  %403 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %402, i32 0, i32 19
  store double %401, ptr %403, align 8, !tbaa !45
  %404 = load ptr, ptr %4, align 8, !tbaa !5
  %405 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %404, i32 0, i32 15
  %406 = load double, ptr %405, align 8, !tbaa !32
  %407 = load ptr, ptr %4, align 8, !tbaa !5
  %408 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %407, i32 0, i32 18
  store double %406, ptr %408, align 8, !tbaa !44
  %409 = load ptr, ptr %4, align 8, !tbaa !5
  %410 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %409, i32 0, i32 13
  %411 = load double, ptr %410, align 8, !tbaa !28
  %412 = load ptr, ptr %4, align 8, !tbaa !5
  %413 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %412, i32 0, i32 21
  store double %411, ptr %413, align 8, !tbaa !47
  %414 = load ptr, ptr %4, align 8, !tbaa !5
  %415 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %414, i32 0, i32 16
  %416 = load double, ptr %415, align 8, !tbaa !37
  %417 = load ptr, ptr %4, align 8, !tbaa !5
  %418 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %417, i32 0, i32 20
  store double %416, ptr %418, align 8, !tbaa !46
  %419 = load ptr, ptr %4, align 8, !tbaa !5
  %420 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %419, i32 0, i32 14
  %421 = load double, ptr %420, align 8, !tbaa !29
  %422 = load ptr, ptr %4, align 8, !tbaa !5
  %423 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %422, i32 0, i32 23
  store double %421, ptr %423, align 8, !tbaa !49
  %424 = load ptr, ptr %4, align 8, !tbaa !5
  %425 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %424, i32 0, i32 17
  %426 = load double, ptr %425, align 8, !tbaa !39
  %427 = load ptr, ptr %4, align 8, !tbaa !5
  %428 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %427, i32 0, i32 22
  store double %426, ptr %428, align 8, !tbaa !48
  %429 = load ptr, ptr %4, align 8, !tbaa !5
  %430 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %429, i32 0, i32 8
  %431 = load i8, ptr %430, align 8, !tbaa !18, !range !19, !noundef !20
  %432 = trunc i8 %431 to i1
  br i1 %432, label %433, label %444

433:                                              ; preds = %398
  %434 = load ptr, ptr %4, align 8, !tbaa !5
  %435 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %434, i32 0, i32 9
  %436 = load i64, ptr %435, align 8, !tbaa !21
  %437 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11traceanglesElPNS_8ae_stateE(i64 noundef %436, ptr noundef %437)
  %438 = load ptr, ptr %4, align 8, !tbaa !5
  %439 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %438, i32 0, i32 19
  %440 = load double, ptr %439, align 8, !tbaa !45
  %441 = load ptr, ptr %4, align 8, !tbaa !5
  %442 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %441, i32 0, i32 18
  %443 = load double, ptr %442, align 8, !tbaa !44
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.366, double noundef %440, double noundef %443)
  br label %444

444:                                              ; preds = %433, %398
  br label %543

445:                                              ; preds = %393
  %446 = load ptr, ptr %4, align 8, !tbaa !5
  %447 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %446, i32 0, i32 15
  %448 = load double, ptr %447, align 8, !tbaa !32
  %449 = load ptr, ptr %4, align 8, !tbaa !5
  %450 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %449, i32 0, i32 3
  %451 = load double, ptr %450, align 8, !tbaa !50
  %452 = fmul double 0x3FEFF7CED916872B, %451
  %453 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %448, double noundef %452)
  br i1 %453, label %463, label %454

454:                                              ; preds = %445
  %455 = load ptr, ptr %4, align 8, !tbaa !5
  %456 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %455, i32 0, i32 15
  %457 = load double, ptr %456, align 8, !tbaa !32
  %458 = load ptr, ptr %4, align 8, !tbaa !5
  %459 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %458, i32 0, i32 12
  %460 = load double, ptr %459, align 8, !tbaa !30
  %461 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %457, double noundef %460)
  br i1 %461, label %463, label %462

462:                                              ; preds = %454
  br label %516

463:                                              ; preds = %454, %445
  %464 = load ptr, ptr %4, align 8, !tbaa !5
  %465 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %464, i32 0, i32 10
  %466 = load double, ptr %465, align 8, !tbaa !33
  %467 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %466, double noundef 0.000000e+00)
  %468 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %467, ptr noundef @.str.362, ptr noundef %468)
  %469 = load ptr, ptr %4, align 8, !tbaa !5
  %470 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %469, i32 0, i32 15
  %471 = load double, ptr %470, align 8, !tbaa !32
  %472 = load ptr, ptr %4, align 8, !tbaa !5
  %473 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %472, i32 0, i32 10
  %474 = load double, ptr %473, align 8, !tbaa !33
  %475 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %471, double noundef %474)
  br i1 %475, label %476, label %477

476:                                              ; preds = %463
  br label %493

477:                                              ; preds = %463
  %478 = load ptr, ptr %4, align 8, !tbaa !5
  %479 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %478, i32 0, i32 10
  %480 = load double, ptr %479, align 8, !tbaa !33
  %481 = load ptr, ptr %4, align 8, !tbaa !5
  %482 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %481, i32 0, i32 27
  store double %480, ptr %482, align 8, !tbaa !35
  %483 = load ptr, ptr %4, align 8, !tbaa !5
  %484 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %483, i32 0, i32 30
  %485 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %484, i32 0, i32 0
  store i32 2, ptr %485, align 8, !tbaa !9
  br label %869

486:                                              ; preds = %35
  %487 = load ptr, ptr %4, align 8, !tbaa !5
  %488 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %487, i32 0, i32 24
  %489 = load i64, ptr %488, align 8, !tbaa !26
  %490 = add nsw i64 %489, 1
  %491 = load ptr, ptr %4, align 8, !tbaa !5
  %492 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %491, i32 0, i32 24
  store i64 %490, ptr %492, align 8, !tbaa !26
  br label %493

493:                                              ; preds = %486, %476
  %494 = load ptr, ptr %4, align 8, !tbaa !5
  %495 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %494, i32 0, i32 8
  %496 = load i8, ptr %495, align 8, !tbaa !18, !range !19, !noundef !20
  %497 = trunc i8 %496 to i1
  br i1 %497, label %498, label %506

498:                                              ; preds = %493
  %499 = load ptr, ptr %4, align 8, !tbaa !5
  %500 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %499, i32 0, i32 9
  %501 = load i64, ptr %500, align 8, !tbaa !21
  %502 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11traceanglesElPNS_8ae_stateE(i64 noundef %501, ptr noundef %502)
  %503 = load ptr, ptr %4, align 8, !tbaa !5
  %504 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %503, i32 0, i32 10
  %505 = load double, ptr %504, align 8, !tbaa !33
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.367, double noundef %505)
  br label %506

506:                                              ; preds = %498, %493
  %507 = load ptr, ptr %4, align 8, !tbaa !5
  %508 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %507, i32 0, i32 10
  %509 = load double, ptr %508, align 8, !tbaa !33
  %510 = load ptr, ptr %4, align 8, !tbaa !5
  %511 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %510, i32 0, i32 25
  store double %509, ptr %511, align 8, !tbaa !23
  %512 = load ptr, ptr %4, align 8, !tbaa !5
  %513 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %512, i32 0, i32 26
  store i64 5, ptr %513, align 8, !tbaa !24
  store i8 0, ptr %6, align 1, !tbaa !25
  %514 = load i8, ptr %6, align 1, !tbaa !25, !range !19, !noundef !20
  %515 = trunc i8 %514 to i1
  store i1 %515, ptr %3, align 1
  store i32 1, ptr %7, align 4
  br label %872

516:                                              ; preds = %462
  %517 = load ptr, ptr %4, align 8, !tbaa !5
  %518 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %517, i32 0, i32 16
  %519 = load double, ptr %518, align 8, !tbaa !37
  %520 = load ptr, ptr %4, align 8, !tbaa !5
  %521 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %520, i32 0, i32 13
  store double %519, ptr %521, align 8, !tbaa !28
  %522 = load ptr, ptr %4, align 8, !tbaa !5
  %523 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %522, i32 0, i32 17
  %524 = load double, ptr %523, align 8, !tbaa !39
  %525 = load ptr, ptr %4, align 8, !tbaa !5
  %526 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %525, i32 0, i32 14
  store double %524, ptr %526, align 8, !tbaa !29
  %527 = load ptr, ptr %4, align 8, !tbaa !5
  %528 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %527, i32 0, i32 15
  %529 = load double, ptr %528, align 8, !tbaa !32
  %530 = load ptr, ptr %4, align 8, !tbaa !5
  %531 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %530, i32 0, i32 12
  store double %529, ptr %531, align 8, !tbaa !30
  %532 = load ptr, ptr %4, align 8, !tbaa !5
  %533 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %532, i32 0, i32 15
  %534 = load double, ptr %533, align 8, !tbaa !32
  %535 = fmul double 2.000000e+00, %534
  %536 = load ptr, ptr %4, align 8, !tbaa !5
  %537 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %536, i32 0, i32 3
  %538 = load double, ptr %537, align 8, !tbaa !50
  %539 = load ptr, ptr %5, align 8, !tbaa !5
  %540 = call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %535, double noundef %538, ptr noundef %539)
  %541 = load ptr, ptr %4, align 8, !tbaa !5
  %542 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %541, i32 0, i32 15
  store double %540, ptr %542, align 8, !tbaa !32
  br label %112

543:                                              ; preds = %444, %392
  br label %544

544:                                              ; preds = %865, %543
  %545 = load ptr, ptr %4, align 8, !tbaa !5
  %546 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %545, i32 0, i32 18
  %547 = load double, ptr %546, align 8, !tbaa !44
  %548 = load ptr, ptr %4, align 8, !tbaa !5
  %549 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %548, i32 0, i32 19
  %550 = load double, ptr %549, align 8, !tbaa !45
  %551 = fadd double %547, %550
  %552 = fmul double 5.000000e-01, %551
  %553 = load ptr, ptr %4, align 8, !tbaa !5
  %554 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %553, i32 0, i32 15
  store double %552, ptr %554, align 8, !tbaa !32
  %555 = load ptr, ptr %4, align 8, !tbaa !5
  %556 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %555, i32 0, i32 15
  %557 = load double, ptr %556, align 8, !tbaa !32
  %558 = load ptr, ptr %4, align 8, !tbaa !5
  %559 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %558, i32 0, i32 27
  store double %557, ptr %559, align 8, !tbaa !35
  %560 = load ptr, ptr %4, align 8, !tbaa !5
  %561 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %560, i32 0, i32 30
  %562 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %561, i32 0, i32 0
  store i32 3, ptr %562, align 8, !tbaa !9
  br label %869

563:                                              ; preds = %42
  %564 = load ptr, ptr %4, align 8, !tbaa !5
  %565 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %564, i32 0, i32 28
  %566 = load double, ptr %565, align 8, !tbaa !36
  %567 = load ptr, ptr %4, align 8, !tbaa !5
  %568 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %567, i32 0, i32 16
  store double %566, ptr %568, align 8, !tbaa !37
  %569 = load ptr, ptr %4, align 8, !tbaa !5
  %570 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %569, i32 0, i32 29
  %571 = load double, ptr %570, align 8, !tbaa !38
  %572 = load ptr, ptr %4, align 8, !tbaa !5
  %573 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %572, i32 0, i32 17
  store double %571, ptr %573, align 8, !tbaa !39
  %574 = load ptr, ptr %4, align 8, !tbaa !5
  %575 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %574, i32 0, i32 24
  %576 = load i64, ptr %575, align 8, !tbaa !26
  %577 = add nsw i64 %576, 1
  %578 = load ptr, ptr %4, align 8, !tbaa !5
  %579 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %578, i32 0, i32 24
  store i64 %577, ptr %579, align 8, !tbaa !26
  %580 = load ptr, ptr %4, align 8, !tbaa !5
  %581 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %580, i32 0, i32 8
  %582 = load i8, ptr %581, align 8, !tbaa !18, !range !19, !noundef !20
  %583 = trunc i8 %582 to i1
  br i1 %583, label %584, label %618

584:                                              ; preds = %563
  %585 = load ptr, ptr %4, align 8, !tbaa !5
  %586 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %585, i32 0, i32 9
  %587 = load i64, ptr %586, align 8, !tbaa !21
  %588 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11traceanglesElPNS_8ae_stateE(i64 noundef %587, ptr noundef %588)
  %589 = load ptr, ptr %4, align 8, !tbaa !5
  %590 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %589, i32 0, i32 15
  %591 = load double, ptr %590, align 8, !tbaa !32
  %592 = load ptr, ptr %4, align 8, !tbaa !5
  %593 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %592, i32 0, i32 16
  %594 = load double, ptr %593, align 8, !tbaa !37
  %595 = load ptr, ptr %4, align 8, !tbaa !5
  %596 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %595, i32 0, i32 0
  %597 = load double, ptr %596, align 8, !tbaa !27
  %598 = fsub double %594, %597
  %599 = load ptr, ptr %4, align 8, !tbaa !5
  %600 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %599, i32 0, i32 17
  %601 = load double, ptr %600, align 8, !tbaa !39
  %602 = load ptr, ptr %4, align 8, !tbaa !5
  %603 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %602, i32 0, i32 18
  %604 = load double, ptr %603, align 8, !tbaa !44
  %605 = load ptr, ptr %4, align 8, !tbaa !5
  %606 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %605, i32 0, i32 19
  %607 = load double, ptr %606, align 8, !tbaa !45
  %608 = load ptr, ptr %5, align 8, !tbaa !5
  %609 = call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %604, double noundef %607, ptr noundef %608)
  %610 = load ptr, ptr %4, align 8, !tbaa !5
  %611 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %610, i32 0, i32 18
  %612 = load double, ptr %611, align 8, !tbaa !44
  %613 = load ptr, ptr %4, align 8, !tbaa !5
  %614 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %613, i32 0, i32 19
  %615 = load double, ptr %614, align 8, !tbaa !45
  %616 = load ptr, ptr %5, align 8, !tbaa !5
  %617 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %612, double noundef %615, ptr noundef %616)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.368, double noundef %591, double noundef %598, double noundef %601, double noundef %609, double noundef %617)
  br label %618

618:                                              ; preds = %584, %563
  %619 = load ptr, ptr %4, align 8, !tbaa !5
  %620 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %619, i32 0, i32 10
  %621 = load double, ptr %620, align 8, !tbaa !33
  %622 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %621, double noundef 0.000000e+00)
  %623 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %622, ptr noundef @.str.369, ptr noundef %623)
  %624 = load ptr, ptr %4, align 8, !tbaa !5
  %625 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %624, i32 0, i32 16
  %626 = load double, ptr %625, align 8, !tbaa !37
  %627 = load ptr, ptr %4, align 8, !tbaa !5
  %628 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %627, i32 0, i32 11
  %629 = load double, ptr %628, align 8, !tbaa !34
  %630 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %626, double noundef %629)
  br i1 %630, label %631, label %642

631:                                              ; preds = %618
  %632 = load ptr, ptr %4, align 8, !tbaa !5
  %633 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %632, i32 0, i32 15
  %634 = load double, ptr %633, align 8, !tbaa !32
  %635 = load ptr, ptr %4, align 8, !tbaa !5
  %636 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %635, i32 0, i32 10
  store double %634, ptr %636, align 8, !tbaa !33
  %637 = load ptr, ptr %4, align 8, !tbaa !5
  %638 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %637, i32 0, i32 16
  %639 = load double, ptr %638, align 8, !tbaa !37
  %640 = load ptr, ptr %4, align 8, !tbaa !5
  %641 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %640, i32 0, i32 11
  store double %639, ptr %641, align 8, !tbaa !34
  br label %642

642:                                              ; preds = %631, %618
  %643 = load ptr, ptr %4, align 8, !tbaa !5
  %644 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %643, i32 0, i32 24
  %645 = load i64, ptr %644, align 8, !tbaa !26
  %646 = load ptr, ptr %4, align 8, !tbaa !5
  %647 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %646, i32 0, i32 7
  %648 = load i64, ptr %647, align 8, !tbaa !40
  %649 = sub nsw i64 %648, 1
  %650 = icmp slt i64 %645, %649
  br i1 %650, label %651, label %652

651:                                              ; preds = %642
  br label %706

652:                                              ; preds = %642
  %653 = load ptr, ptr %4, align 8, !tbaa !5
  %654 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %653, i32 0, i32 10
  %655 = load double, ptr %654, align 8, !tbaa !33
  %656 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %655, double noundef 0.000000e+00)
  %657 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %656, ptr noundef @.str.362, ptr noundef %657)
  %658 = load ptr, ptr %4, align 8, !tbaa !5
  %659 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %658, i32 0, i32 15
  %660 = load double, ptr %659, align 8, !tbaa !32
  %661 = load ptr, ptr %4, align 8, !tbaa !5
  %662 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %661, i32 0, i32 10
  %663 = load double, ptr %662, align 8, !tbaa !33
  %664 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %660, double noundef %663)
  br i1 %664, label %665, label %666

665:                                              ; preds = %652
  br label %682

666:                                              ; preds = %652
  %667 = load ptr, ptr %4, align 8, !tbaa !5
  %668 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %667, i32 0, i32 10
  %669 = load double, ptr %668, align 8, !tbaa !33
  %670 = load ptr, ptr %4, align 8, !tbaa !5
  %671 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %670, i32 0, i32 27
  store double %669, ptr %671, align 8, !tbaa !35
  %672 = load ptr, ptr %4, align 8, !tbaa !5
  %673 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %672, i32 0, i32 30
  %674 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %673, i32 0, i32 0
  store i32 4, ptr %674, align 8, !tbaa !9
  br label %869

675:                                              ; preds = %49
  %676 = load ptr, ptr %4, align 8, !tbaa !5
  %677 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %676, i32 0, i32 24
  %678 = load i64, ptr %677, align 8, !tbaa !26
  %679 = add nsw i64 %678, 1
  %680 = load ptr, ptr %4, align 8, !tbaa !5
  %681 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %680, i32 0, i32 24
  store i64 %679, ptr %681, align 8, !tbaa !26
  br label %682

682:                                              ; preds = %675, %665
  %683 = load ptr, ptr %4, align 8, !tbaa !5
  %684 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %683, i32 0, i32 10
  %685 = load double, ptr %684, align 8, !tbaa !33
  %686 = load ptr, ptr %4, align 8, !tbaa !5
  %687 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %686, i32 0, i32 25
  store double %685, ptr %687, align 8, !tbaa !23
  %688 = load ptr, ptr %4, align 8, !tbaa !5
  %689 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %688, i32 0, i32 26
  store i64 3, ptr %689, align 8, !tbaa !24
  %690 = load ptr, ptr %4, align 8, !tbaa !5
  %691 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %690, i32 0, i32 8
  %692 = load i8, ptr %691, align 8, !tbaa !18, !range !19, !noundef !20
  %693 = trunc i8 %692 to i1
  br i1 %693, label %694, label %703

694:                                              ; preds = %682
  %695 = load ptr, ptr %4, align 8, !tbaa !5
  %696 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %695, i32 0, i32 9
  %697 = load i64, ptr %696, align 8, !tbaa !21
  %698 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11traceanglesElPNS_8ae_stateE(i64 noundef %697, ptr noundef %698)
  %699 = load ptr, ptr %4, align 8, !tbaa !5
  %700 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %699, i32 0, i32 7
  %701 = load i64, ptr %700, align 8, !tbaa !40
  %702 = trunc i64 %701 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.363, i32 noundef %702)
  br label %703

703:                                              ; preds = %694, %682
  store i8 0, ptr %6, align 1, !tbaa !25
  %704 = load i8, ptr %6, align 1, !tbaa !25, !range !19, !noundef !20
  %705 = trunc i8 %704 to i1
  store i1 %705, ptr %3, align 1
  store i32 1, ptr %7, align 4
  br label %872

706:                                              ; preds = %651
  %707 = load ptr, ptr %4, align 8, !tbaa !5
  %708 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %707, i32 0, i32 16
  %709 = load double, ptr %708, align 8, !tbaa !37
  %710 = load ptr, ptr %4, align 8, !tbaa !5
  %711 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %710, i32 0, i32 0
  %712 = load double, ptr %711, align 8, !tbaa !27
  %713 = load ptr, ptr %4, align 8, !tbaa !5
  %714 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %713, i32 0, i32 4
  %715 = load double, ptr %714, align 8, !tbaa !41
  %716 = load ptr, ptr %4, align 8, !tbaa !5
  %717 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %716, i32 0, i32 15
  %718 = load double, ptr %717, align 8, !tbaa !32
  %719 = fmul double %715, %718
  %720 = load ptr, ptr %4, align 8, !tbaa !5
  %721 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %720, i32 0, i32 1
  %722 = load double, ptr %721, align 8, !tbaa !22
  %723 = call double @llvm.fmuladd.f64(double %719, double %722, double %712)
  %724 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %709, double noundef %723)
  br i1 %724, label %725, label %777

725:                                              ; preds = %706
  %726 = load ptr, ptr %4, align 8, !tbaa !5
  %727 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %726, i32 0, i32 17
  %728 = load double, ptr %727, align 8, !tbaa !39
  %729 = load ptr, ptr %5, align 8, !tbaa !5
  %730 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %728, ptr noundef %729)
  %731 = load ptr, ptr %4, align 8, !tbaa !5
  %732 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %731, i32 0, i32 5
  %733 = load double, ptr %732, align 8, !tbaa !42
  %734 = fneg double %733
  %735 = load ptr, ptr %4, align 8, !tbaa !5
  %736 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %735, i32 0, i32 1
  %737 = load double, ptr %736, align 8, !tbaa !22
  %738 = fmul double %734, %737
  %739 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %730, double noundef %738)
  br i1 %739, label %757, label %740

740:                                              ; preds = %725
  %741 = load ptr, ptr %4, align 8, !tbaa !5
  %742 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %741, i32 0, i32 6
  %743 = load i8, ptr %742, align 8, !tbaa !43, !range !19, !noundef !20
  %744 = trunc i8 %743 to i1
  br i1 %744, label %777, label %745

745:                                              ; preds = %740
  %746 = load ptr, ptr %4, align 8, !tbaa !5
  %747 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %746, i32 0, i32 17
  %748 = load double, ptr %747, align 8, !tbaa !39
  %749 = load ptr, ptr %4, align 8, !tbaa !5
  %750 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %749, i32 0, i32 5
  %751 = load double, ptr %750, align 8, !tbaa !42
  %752 = load ptr, ptr %4, align 8, !tbaa !5
  %753 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %752, i32 0, i32 1
  %754 = load double, ptr %753, align 8, !tbaa !22
  %755 = fmul double %751, %754
  %756 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %748, double noundef %755)
  br i1 %756, label %757, label %777

757:                                              ; preds = %745, %725
  %758 = load ptr, ptr %4, align 8, !tbaa !5
  %759 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %758, i32 0, i32 15
  %760 = load double, ptr %759, align 8, !tbaa !32
  %761 = load ptr, ptr %4, align 8, !tbaa !5
  %762 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %761, i32 0, i32 25
  store double %760, ptr %762, align 8, !tbaa !23
  %763 = load ptr, ptr %4, align 8, !tbaa !5
  %764 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %763, i32 0, i32 26
  store i64 1, ptr %764, align 8, !tbaa !24
  %765 = load ptr, ptr %4, align 8, !tbaa !5
  %766 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %765, i32 0, i32 8
  %767 = load i8, ptr %766, align 8, !tbaa !18, !range !19, !noundef !20
  %768 = trunc i8 %767 to i1
  br i1 %768, label %769, label %774

769:                                              ; preds = %757
  %770 = load ptr, ptr %4, align 8, !tbaa !5
  %771 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %770, i32 0, i32 9
  %772 = load i64, ptr %771, align 8, !tbaa !21
  %773 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11traceanglesElPNS_8ae_stateE(i64 noundef %772, ptr noundef %773)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.364)
  br label %774

774:                                              ; preds = %769, %757
  store i8 0, ptr %6, align 1, !tbaa !25
  %775 = load i8, ptr %6, align 1, !tbaa !25, !range !19, !noundef !20
  %776 = trunc i8 %775 to i1
  store i1 %776, ptr %3, align 1
  store i32 1, ptr %7, align 4
  br label %872

777:                                              ; preds = %745, %740, %706
  %778 = load ptr, ptr %4, align 8, !tbaa !5
  %779 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %778, i32 0, i32 16
  %780 = load double, ptr %779, align 8, !tbaa !37
  %781 = load ptr, ptr %4, align 8, !tbaa !5
  %782 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %781, i32 0, i32 0
  %783 = load double, ptr %782, align 8, !tbaa !27
  %784 = load ptr, ptr %4, align 8, !tbaa !5
  %785 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %784, i32 0, i32 4
  %786 = load double, ptr %785, align 8, !tbaa !41
  %787 = load ptr, ptr %4, align 8, !tbaa !5
  %788 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %787, i32 0, i32 27
  %789 = load double, ptr %788, align 8, !tbaa !35
  %790 = fmul double %786, %789
  %791 = load ptr, ptr %4, align 8, !tbaa !5
  %792 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %791, i32 0, i32 1
  %793 = load double, ptr %792, align 8, !tbaa !22
  %794 = call double @llvm.fmuladd.f64(double %790, double %793, double %783)
  %795 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %780, double noundef %794)
  br i1 %795, label %804, label %796

796:                                              ; preds = %777
  %797 = load ptr, ptr %4, align 8, !tbaa !5
  %798 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %797, i32 0, i32 16
  %799 = load double, ptr %798, align 8, !tbaa !37
  %800 = load ptr, ptr %4, align 8, !tbaa !5
  %801 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %800, i32 0, i32 20
  %802 = load double, ptr %801, align 8, !tbaa !46
  %803 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %799, double noundef %802)
  br i1 %803, label %804, label %820

804:                                              ; preds = %796, %777
  %805 = load ptr, ptr %4, align 8, !tbaa !5
  %806 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %805, i32 0, i32 15
  %807 = load double, ptr %806, align 8, !tbaa !32
  %808 = load ptr, ptr %4, align 8, !tbaa !5
  %809 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %808, i32 0, i32 19
  store double %807, ptr %809, align 8, !tbaa !45
  %810 = load ptr, ptr %4, align 8, !tbaa !5
  %811 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %810, i32 0, i32 16
  %812 = load double, ptr %811, align 8, !tbaa !37
  %813 = load ptr, ptr %4, align 8, !tbaa !5
  %814 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %813, i32 0, i32 21
  store double %812, ptr %814, align 8, !tbaa !47
  %815 = load ptr, ptr %4, align 8, !tbaa !5
  %816 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %815, i32 0, i32 17
  %817 = load double, ptr %816, align 8, !tbaa !39
  %818 = load ptr, ptr %4, align 8, !tbaa !5
  %819 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %818, i32 0, i32 23
  store double %817, ptr %819, align 8, !tbaa !49
  br label %865

820:                                              ; preds = %796
  %821 = load ptr, ptr %4, align 8, !tbaa !5
  %822 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %821, i32 0, i32 17
  %823 = load double, ptr %822, align 8, !tbaa !39
  %824 = load ptr, ptr %4, align 8, !tbaa !5
  %825 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %824, i32 0, i32 19
  %826 = load double, ptr %825, align 8, !tbaa !45
  %827 = load ptr, ptr %4, align 8, !tbaa !5
  %828 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %827, i32 0, i32 18
  %829 = load double, ptr %828, align 8, !tbaa !44
  %830 = fsub double %826, %829
  %831 = fmul double %823, %830
  %832 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %831, double noundef 0.000000e+00)
  br i1 %832, label %833, label %849

833:                                              ; preds = %820
  %834 = load ptr, ptr %4, align 8, !tbaa !5
  %835 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %834, i32 0, i32 18
  %836 = load double, ptr %835, align 8, !tbaa !44
  %837 = load ptr, ptr %4, align 8, !tbaa !5
  %838 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %837, i32 0, i32 19
  store double %836, ptr %838, align 8, !tbaa !45
  %839 = load ptr, ptr %4, align 8, !tbaa !5
  %840 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %839, i32 0, i32 20
  %841 = load double, ptr %840, align 8, !tbaa !46
  %842 = load ptr, ptr %4, align 8, !tbaa !5
  %843 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %842, i32 0, i32 21
  store double %841, ptr %843, align 8, !tbaa !47
  %844 = load ptr, ptr %4, align 8, !tbaa !5
  %845 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %844, i32 0, i32 22
  %846 = load double, ptr %845, align 8, !tbaa !48
  %847 = load ptr, ptr %4, align 8, !tbaa !5
  %848 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %847, i32 0, i32 23
  store double %846, ptr %848, align 8, !tbaa !49
  br label %849

849:                                              ; preds = %833, %820
  %850 = load ptr, ptr %4, align 8, !tbaa !5
  %851 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %850, i32 0, i32 15
  %852 = load double, ptr %851, align 8, !tbaa !32
  %853 = load ptr, ptr %4, align 8, !tbaa !5
  %854 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %853, i32 0, i32 18
  store double %852, ptr %854, align 8, !tbaa !44
  %855 = load ptr, ptr %4, align 8, !tbaa !5
  %856 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %855, i32 0, i32 16
  %857 = load double, ptr %856, align 8, !tbaa !37
  %858 = load ptr, ptr %4, align 8, !tbaa !5
  %859 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %858, i32 0, i32 20
  store double %857, ptr %859, align 8, !tbaa !46
  %860 = load ptr, ptr %4, align 8, !tbaa !5
  %861 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %860, i32 0, i32 17
  %862 = load double, ptr %861, align 8, !tbaa !39
  %863 = load ptr, ptr %4, align 8, !tbaa !5
  %864 = getelementptr inbounds %"struct.alglib_impl::linesearchstate", ptr %863, i32 0, i32 22
  store double %862, ptr %864, align 8, !tbaa !48
  br label %865

865:                                              ; preds = %849, %804
  br label %544

866:                                              ; No predecessors!
  store i8 0, ptr %6, align 1, !tbaa !25
  %867 = load i8, ptr %6, align 1, !tbaa !25, !range !19, !noundef !20
  %868 = trunc i8 %867 to i1
  store i1 %868, ptr %3, align 1
  store i32 1, ptr %7, align 4
  br label %872

869:                                              ; preds = %666, %544, %477, %208, %112
  store i8 1, ptr %6, align 1, !tbaa !25
  %870 = load i8, ptr %6, align 1, !tbaa !25, !range !19, !noundef !20
  %871 = trunc i8 %870 to i1
  store i1 %871, ptr %3, align 1
  store i32 1, ptr %7, align 4
  br label %872

872:                                              ; preds = %869, %866, %774, %703, %506, %316, %245, %78
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #4
  %873 = load i1, ptr %3, align 1
  ret i1 %873
}

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !15, i64 240}
!10 = !{!"_ZTSN11alglib_impl15linesearchstateE", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !12, i64 48, !13, i64 56, !12, i64 64, !13, i64 72, !11, i64 80, !11, i64 88, !11, i64 96, !11, i64 104, !11, i64 112, !11, i64 120, !11, i64 128, !11, i64 136, !11, i64 144, !11, i64 152, !11, i64 160, !11, i64 168, !11, i64 176, !11, i64 184, !13, i64 192, !11, i64 200, !13, i64 208, !11, i64 216, !11, i64 224, !11, i64 232, !14, i64 240}
!11 = !{!"double", !7, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{!"long", !7, i64 0}
!14 = !{!"_ZTSN11alglib_impl10rcommstateE", !15, i64 0, !16, i64 8, !16, i64 72, !16, i64 136, !16, i64 200}
!15 = !{!"int", !7, i64 0}
!16 = !{!"_ZTSN11alglib_impl9ae_vectorE", !13, i64 0, !13, i64 8, !12, i64 16, !17, i64 24, !7, i64 56}
!17 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!18 = !{!10, !12, i64 64}
!19 = !{i8 0, i8 2}
!20 = !{}
!21 = !{!10, !13, i64 72}
!22 = !{!10, !11, i64 8}
!23 = !{!10, !11, i64 200}
!24 = !{!10, !13, i64 208}
!25 = !{!12, !12, i64 0}
!26 = !{!10, !13, i64 192}
!27 = !{!10, !11, i64 0}
!28 = !{!10, !11, i64 104}
!29 = !{!10, !11, i64 112}
!30 = !{!10, !11, i64 96}
!31 = !{!10, !11, i64 16}
!32 = !{!10, !11, i64 120}
!33 = !{!10, !11, i64 80}
!34 = !{!10, !11, i64 88}
!35 = !{!10, !11, i64 216}
!36 = !{!10, !11, i64 224}
!37 = !{!10, !11, i64 128}
!38 = !{!10, !11, i64 232}
!39 = !{!10, !11, i64 136}
!40 = !{!10, !13, i64 56}
!41 = !{!10, !11, i64 32}
!42 = !{!10, !11, i64 40}
!43 = !{!10, !12, i64 48}
!44 = !{!10, !11, i64 144}
!45 = !{!10, !11, i64 152}
!46 = !{!10, !11, i64 160}
!47 = !{!10, !11, i64 168}
!48 = !{!10, !11, i64 176}
!49 = !{!10, !11, i64 184}
!50 = !{!10, !11, i64 24}


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

@.str.359 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.360 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.361 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.362 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.363 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.364 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.365 = external hidden unnamed_addr constant [83 x i8], align 1
@.str.366 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.367 = external hidden unnamed_addr constant [91 x i8], align 1
@.str.368 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.369 = external hidden unnamed_addr constant [37 x i8], align 1

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

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

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

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

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

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

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

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

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

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

declare noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef, double noundef, ptr noundef) local_unnamed_addr #0

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN11alglib_impl19linesearchiterationEPNS_15linesearchstateEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1) local_unnamed_addr #2 {
  %3 = getelementptr inbounds i8, ptr %0, i64 240
  %4 = load i32, ptr %3, align 8, !tbaa !5
  switch i32 %4, label %5 [
    i32 0, label %39
    i32 1, label %87
    i32 2, label %227
    i32 3, label %262
    i32 4, label %317
  ]

5:                                                ; preds = %2
  %6 = getelementptr inbounds i8, ptr %0, i64 64
  %7 = load i8, ptr %6, align 8, !tbaa !17, !range !18, !noundef !19
  %8 = trunc nuw i8 %7 to i1
  br i1 %8, label %9, label %12

9:                                                ; preds = %5
  %10 = getelementptr inbounds i8, ptr %0, i64 72
  %11 = load i64, ptr %10, align 8, !tbaa !20
  tail call void @_ZN11alglib_impl11traceanglesElPNS_8ae_stateE(i64 noundef %11, ptr noundef %1)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.359)
  br label %12

12:                                               ; preds = %9, %5
  %13 = getelementptr inbounds i8, ptr %0, i64 8
  %14 = load double, ptr %13, align 8, !tbaa !21
  %15 = tail call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %14, double noundef 0.000000e+00)
  br i1 %15, label %16, label %25

16:                                               ; preds = %12
  %17 = load i8, ptr %6, align 8, !tbaa !17, !range !18, !noundef !19
  %18 = trunc nuw i8 %17 to i1
  br i1 %18, label %19, label %23

19:                                               ; preds = %16
  %20 = getelementptr inbounds i8, ptr %0, i64 72
  %21 = load i64, ptr %20, align 8, !tbaa !20
  tail call void @_ZN11alglib_impl11traceanglesElPNS_8ae_stateE(i64 noundef %21, ptr noundef %1)
  %22 = load double, ptr %13, align 8, !tbaa !21
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.360, double noundef %22)
  br label %23

23:                                               ; preds = %19, %16
  %24 = getelementptr inbounds i8, ptr %0, i64 200
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %24, i8 0, i64 16, i1 false)
  br label %418

25:                                               ; preds = %12
  %26 = getelementptr inbounds i8, ptr %0, i64 192
  store i64 0, ptr %26, align 8, !tbaa !22
  %27 = getelementptr inbounds i8, ptr %0, i64 104
  %28 = load <2 x double>, ptr %0, align 8, !tbaa !23
  store <2 x double> %28, ptr %27, align 8, !tbaa !23
  %29 = getelementptr inbounds i8, ptr %0, i64 96
  store double 0.000000e+00, ptr %29, align 8, !tbaa !24
  %30 = getelementptr inbounds i8, ptr %0, i64 16
  %31 = load double, ptr %30, align 8, !tbaa !25
  %32 = getelementptr inbounds i8, ptr %0, i64 120
  store double %31, ptr %32, align 8, !tbaa !26
  %33 = getelementptr inbounds i8, ptr %0, i64 80
  store double 0.000000e+00, ptr %33, align 8, !tbaa !27
  %34 = getelementptr inbounds i8, ptr %0, i64 88
  %35 = extractelement <2 x double> %28, i64 0
  store double %35, ptr %34, align 8, !tbaa !28
  br label %36

36:                                               ; preds = %245, %25
  %37 = phi double [ %252, %245 ], [ %31, %25 ]
  %38 = getelementptr inbounds i8, ptr %0, i64 216
  store double %37, ptr %38, align 8, !tbaa !29
  store i32 0, ptr %3, align 8, !tbaa !5
  br label %418

39:                                               ; preds = %2
  %40 = getelementptr inbounds i8, ptr %0, i64 224
  %41 = getelementptr inbounds i8, ptr %0, i64 128
  %42 = getelementptr inbounds i8, ptr %0, i64 136
  %43 = load <2 x double>, ptr %40, align 8, !tbaa !23
  store <2 x double> %43, ptr %41, align 8, !tbaa !23
  %44 = getelementptr inbounds i8, ptr %0, i64 192
  %45 = load i64, ptr %44, align 8, !tbaa !22
  %46 = add nsw i64 %45, 1
  store i64 %46, ptr %44, align 8, !tbaa !22
  %47 = getelementptr inbounds i8, ptr %0, i64 64
  %48 = load i8, ptr %47, align 8, !tbaa !17, !range !18, !noundef !19
  %49 = trunc nuw i8 %48 to i1
  br i1 %49, label %50, label %59

50:                                               ; preds = %39
  %51 = getelementptr inbounds i8, ptr %0, i64 72
  %52 = load i64, ptr %51, align 8, !tbaa !20
  tail call void @_ZN11alglib_impl11traceanglesElPNS_8ae_stateE(i64 noundef %52, ptr noundef %1)
  %53 = getelementptr inbounds i8, ptr %0, i64 120
  %54 = load double, ptr %53, align 8, !tbaa !26
  %55 = load double, ptr %41, align 8, !tbaa !30
  %56 = load double, ptr %0, align 8, !tbaa !31
  %57 = fsub double %55, %56
  %58 = load double, ptr %42, align 8, !tbaa !32
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.361, double noundef %54, double noundef %57, double noundef %58)
  br label %59

59:                                               ; preds = %50, %39
  %60 = getelementptr inbounds i8, ptr %0, i64 80
  %61 = load double, ptr %60, align 8, !tbaa !27
  %62 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %61, double noundef 0.000000e+00)
  br i1 %62, label %68, label %63

63:                                               ; preds = %59
  %64 = load double, ptr %41, align 8, !tbaa !30
  %65 = getelementptr inbounds i8, ptr %0, i64 88
  %66 = load double, ptr %65, align 8, !tbaa !28
  %67 = tail call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %64, double noundef %66)
  br i1 %67, label %68, label %71

68:                                               ; preds = %63, %59
  %69 = getelementptr inbounds i8, ptr %0, i64 120
  %70 = load <2 x double>, ptr %69, align 8, !tbaa !23
  store <2 x double> %70, ptr %60, align 8, !tbaa !23
  br label %71

71:                                               ; preds = %68, %63
  %72 = load i64, ptr %44, align 8, !tbaa !22
  %73 = getelementptr inbounds i8, ptr %0, i64 56
  %74 = load i64, ptr %73, align 8, !tbaa !33
  %75 = add nsw i64 %74, -1
  %76 = icmp slt i64 %72, %75
  br i1 %76, label %105, label %77

77:                                               ; preds = %71
  %78 = load double, ptr %60, align 8, !tbaa !27
  %79 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %78, double noundef 0.000000e+00)
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %79, ptr noundef nonnull @.str.362, ptr noundef %1)
  %80 = getelementptr inbounds i8, ptr %0, i64 120
  %81 = load double, ptr %80, align 8, !tbaa !26
  %82 = load double, ptr %60, align 8, !tbaa !27
  %83 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %81, double noundef %82)
  br i1 %83, label %91, label %84

84:                                               ; preds = %77
  %85 = load double, ptr %60, align 8, !tbaa !27
  %86 = getelementptr inbounds i8, ptr %0, i64 216
  store double %85, ptr %86, align 8, !tbaa !29
  store i32 1, ptr %3, align 8, !tbaa !5
  br label %418

87:                                               ; preds = %2
  %88 = getelementptr inbounds i8, ptr %0, i64 192
  %89 = load i64, ptr %88, align 8, !tbaa !22
  %90 = add nsw i64 %89, 1
  store i64 %90, ptr %88, align 8, !tbaa !22
  br label %91

91:                                               ; preds = %77, %87
  %92 = getelementptr inbounds i8, ptr %0, i64 80
  %93 = load double, ptr %92, align 8, !tbaa !27
  %94 = getelementptr inbounds i8, ptr %0, i64 200
  store double %93, ptr %94, align 8, !tbaa !34
  %95 = getelementptr inbounds i8, ptr %0, i64 208
  store i64 3, ptr %95, align 8, !tbaa !35
  %96 = getelementptr inbounds i8, ptr %0, i64 64
  %97 = load i8, ptr %96, align 8, !tbaa !17, !range !18, !noundef !19
  %98 = trunc nuw i8 %97 to i1
  br i1 %98, label %99, label %418

99:                                               ; preds = %91
  %100 = getelementptr inbounds i8, ptr %0, i64 72
  %101 = load i64, ptr %100, align 8, !tbaa !20
  tail call void @_ZN11alglib_impl11traceanglesElPNS_8ae_stateE(i64 noundef %101, ptr noundef %1)
  %102 = getelementptr inbounds i8, ptr %0, i64 56
  %103 = load i64, ptr %102, align 8, !tbaa !33
  %104 = trunc i64 %103 to i32
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.363, i32 noundef %104)
  br label %418

105:                                              ; preds = %71
  %106 = load double, ptr %41, align 8, !tbaa !30
  %107 = load double, ptr %0, align 8, !tbaa !31
  %108 = getelementptr inbounds i8, ptr %0, i64 32
  %109 = load double, ptr %108, align 8, !tbaa !36
  %110 = getelementptr inbounds i8, ptr %0, i64 120
  %111 = load double, ptr %110, align 8, !tbaa !26
  %112 = fmul double %109, %111
  %113 = getelementptr inbounds i8, ptr %0, i64 8
  %114 = load double, ptr %113, align 8, !tbaa !21
  %115 = tail call double @llvm.fmuladd.f64(double %112, double %114, double %107)
  %116 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %106, double noundef %115)
  br i1 %116, label %117, label %145

117:                                              ; preds = %105
  %118 = load double, ptr %42, align 8, !tbaa !32
  %119 = tail call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %118, ptr noundef %1)
  %120 = getelementptr inbounds i8, ptr %0, i64 40
  %121 = load double, ptr %120, align 8, !tbaa !37
  %122 = fneg double %121
  %123 = load double, ptr %113, align 8, !tbaa !21
  %124 = fmul double %123, %122
  %125 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %119, double noundef %124)
  br i1 %125, label %136, label %126

126:                                              ; preds = %117
  %127 = getelementptr inbounds i8, ptr %0, i64 48
  %128 = load i8, ptr %127, align 8, !tbaa !38, !range !18, !noundef !19
  %129 = trunc nuw i8 %128 to i1
  br i1 %129, label %145, label %130

130:                                              ; preds = %126
  %131 = load double, ptr %42, align 8, !tbaa !32
  %132 = load double, ptr %120, align 8, !tbaa !37
  %133 = load double, ptr %113, align 8, !tbaa !21
  %134 = fmul double %132, %133
  %135 = tail call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %131, double noundef %134)
  br i1 %135, label %136, label %145

136:                                              ; preds = %130, %117
  %137 = load double, ptr %110, align 8, !tbaa !26
  %138 = getelementptr inbounds i8, ptr %0, i64 200
  store double %137, ptr %138, align 8, !tbaa !34
  %139 = getelementptr inbounds i8, ptr %0, i64 208
  store i64 1, ptr %139, align 8, !tbaa !35
  %140 = load i8, ptr %47, align 8, !tbaa !17, !range !18, !noundef !19
  %141 = trunc nuw i8 %140 to i1
  br i1 %141, label %142, label %418

142:                                              ; preds = %136
  %143 = getelementptr inbounds i8, ptr %0, i64 72
  %144 = load i64, ptr %143, align 8, !tbaa !20
  tail call void @_ZN11alglib_impl11traceanglesElPNS_8ae_stateE(i64 noundef %144, ptr noundef %1)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.364)
  br label %418

145:                                              ; preds = %130, %126, %105
  %146 = load double, ptr %41, align 8, !tbaa !30
  %147 = load double, ptr %0, align 8, !tbaa !31
  %148 = load double, ptr %108, align 8, !tbaa !36
  %149 = load double, ptr %110, align 8, !tbaa !26
  %150 = fmul double %148, %149
  %151 = load double, ptr %113, align 8, !tbaa !21
  %152 = tail call double @llvm.fmuladd.f64(double %150, double %151, double %147)
  %153 = tail call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %146, double noundef %152)
  br i1 %153, label %159, label %154

154:                                              ; preds = %145
  %155 = load double, ptr %41, align 8, !tbaa !30
  %156 = getelementptr inbounds i8, ptr %0, i64 104
  %157 = load double, ptr %156, align 8, !tbaa !39
  %158 = tail call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %155, double noundef %157)
  br i1 %158, label %159, label %182

159:                                              ; preds = %154, %145
  %160 = getelementptr inbounds i8, ptr %0, i64 96
  %161 = load double, ptr %160, align 8, !tbaa !24
  %162 = getelementptr inbounds i8, ptr %0, i64 144
  store double %161, ptr %162, align 8, !tbaa !40
  %163 = load double, ptr %110, align 8, !tbaa !26
  %164 = getelementptr inbounds i8, ptr %0, i64 152
  store double %163, ptr %164, align 8, !tbaa !41
  %165 = getelementptr inbounds i8, ptr %0, i64 104
  %166 = load double, ptr %165, align 8, !tbaa !39
  %167 = getelementptr inbounds i8, ptr %0, i64 160
  store double %166, ptr %167, align 8, !tbaa !42
  %168 = load double, ptr %41, align 8, !tbaa !30
  %169 = getelementptr inbounds i8, ptr %0, i64 168
  store double %168, ptr %169, align 8, !tbaa !43
  %170 = getelementptr inbounds i8, ptr %0, i64 112
  %171 = load double, ptr %170, align 8, !tbaa !44
  %172 = getelementptr inbounds i8, ptr %0, i64 176
  store double %171, ptr %172, align 8, !tbaa !45
  %173 = load double, ptr %42, align 8, !tbaa !32
  %174 = getelementptr inbounds i8, ptr %0, i64 184
  store double %173, ptr %174, align 8, !tbaa !46
  %175 = load i8, ptr %47, align 8, !tbaa !17, !range !18, !noundef !19
  %176 = trunc nuw i8 %175 to i1
  br i1 %176, label %177, label %253

177:                                              ; preds = %159
  %178 = getelementptr inbounds i8, ptr %0, i64 72
  %179 = load i64, ptr %178, align 8, !tbaa !20
  tail call void @_ZN11alglib_impl11traceanglesElPNS_8ae_stateE(i64 noundef %179, ptr noundef %1)
  %180 = load double, ptr %162, align 8, !tbaa !40
  %181 = load double, ptr %164, align 8, !tbaa !41
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.365, double noundef %180, double noundef %181)
  br label %253

182:                                              ; preds = %154
  %183 = load double, ptr %42, align 8, !tbaa !32
  %184 = tail call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %183, double noundef 0.000000e+00)
  br i1 %184, label %185, label %207

185:                                              ; preds = %182
  %186 = getelementptr inbounds i8, ptr %0, i64 96
  %187 = load double, ptr %186, align 8, !tbaa !24
  %188 = getelementptr inbounds i8, ptr %0, i64 152
  store double %187, ptr %188, align 8, !tbaa !41
  %189 = load double, ptr %110, align 8, !tbaa !26
  %190 = getelementptr inbounds i8, ptr %0, i64 144
  store double %189, ptr %190, align 8, !tbaa !40
  %191 = load double, ptr %156, align 8, !tbaa !39
  %192 = getelementptr inbounds i8, ptr %0, i64 168
  store double %191, ptr %192, align 8, !tbaa !43
  %193 = load double, ptr %41, align 8, !tbaa !30
  %194 = getelementptr inbounds i8, ptr %0, i64 160
  store double %193, ptr %194, align 8, !tbaa !42
  %195 = getelementptr inbounds i8, ptr %0, i64 112
  %196 = load double, ptr %195, align 8, !tbaa !44
  %197 = getelementptr inbounds i8, ptr %0, i64 184
  store double %196, ptr %197, align 8, !tbaa !46
  %198 = load double, ptr %42, align 8, !tbaa !32
  %199 = getelementptr inbounds i8, ptr %0, i64 176
  store double %198, ptr %199, align 8, !tbaa !45
  %200 = load i8, ptr %47, align 8, !tbaa !17, !range !18, !noundef !19
  %201 = trunc nuw i8 %200 to i1
  br i1 %201, label %202, label %253

202:                                              ; preds = %185
  %203 = getelementptr inbounds i8, ptr %0, i64 72
  %204 = load i64, ptr %203, align 8, !tbaa !20
  tail call void @_ZN11alglib_impl11traceanglesElPNS_8ae_stateE(i64 noundef %204, ptr noundef %1)
  %205 = load double, ptr %188, align 8, !tbaa !41
  %206 = load double, ptr %190, align 8, !tbaa !40
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.366, double noundef %205, double noundef %206)
  br label %253

207:                                              ; preds = %182
  %208 = load double, ptr %110, align 8, !tbaa !26
  %209 = getelementptr inbounds i8, ptr %0, i64 24
  %210 = load double, ptr %209, align 8, !tbaa !47
  %211 = fmul double %210, 0x3FEFF7CED916872B
  %212 = tail call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %208, double noundef %211)
  br i1 %212, label %218, label %213

213:                                              ; preds = %207
  %214 = load double, ptr %110, align 8, !tbaa !26
  %215 = getelementptr inbounds i8, ptr %0, i64 96
  %216 = load double, ptr %215, align 8, !tbaa !24
  %217 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %214, double noundef %216)
  br i1 %217, label %218, label %245

218:                                              ; preds = %213, %207
  %219 = load double, ptr %60, align 8, !tbaa !27
  %220 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %219, double noundef 0.000000e+00)
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %220, ptr noundef nonnull @.str.362, ptr noundef %1)
  %221 = load double, ptr %110, align 8, !tbaa !26
  %222 = load double, ptr %60, align 8, !tbaa !27
  %223 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %221, double noundef %222)
  br i1 %223, label %231, label %224

224:                                              ; preds = %218
  %225 = load double, ptr %60, align 8, !tbaa !27
  %226 = getelementptr inbounds i8, ptr %0, i64 216
  store double %225, ptr %226, align 8, !tbaa !29
  store i32 2, ptr %3, align 8, !tbaa !5
  br label %418

227:                                              ; preds = %2
  %228 = getelementptr inbounds i8, ptr %0, i64 192
  %229 = load i64, ptr %228, align 8, !tbaa !22
  %230 = add nsw i64 %229, 1
  store i64 %230, ptr %228, align 8, !tbaa !22
  br label %231

231:                                              ; preds = %218, %227
  %232 = getelementptr inbounds i8, ptr %0, i64 64
  %233 = load i8, ptr %232, align 8, !tbaa !17, !range !18, !noundef !19
  %234 = trunc nuw i8 %233 to i1
  br i1 %234, label %235, label %240

235:                                              ; preds = %231
  %236 = getelementptr inbounds i8, ptr %0, i64 72
  %237 = load i64, ptr %236, align 8, !tbaa !20
  tail call void @_ZN11alglib_impl11traceanglesElPNS_8ae_stateE(i64 noundef %237, ptr noundef %1)
  %238 = getelementptr inbounds i8, ptr %0, i64 80
  %239 = load double, ptr %238, align 8, !tbaa !27
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.367, double noundef %239)
  br label %240

240:                                              ; preds = %235, %231
  %241 = getelementptr inbounds i8, ptr %0, i64 80
  %242 = load double, ptr %241, align 8, !tbaa !27
  %243 = getelementptr inbounds i8, ptr %0, i64 200
  store double %242, ptr %243, align 8, !tbaa !34
  %244 = getelementptr inbounds i8, ptr %0, i64 208
  store i64 5, ptr %244, align 8, !tbaa !35
  br label %418

245:                                              ; preds = %213
  %246 = load double, ptr %42, align 8, !tbaa !32
  %247 = getelementptr inbounds i8, ptr %0, i64 112
  store double %246, ptr %247, align 8, !tbaa !44
  %248 = load <2 x double>, ptr %110, align 8, !tbaa !23
  store <2 x double> %248, ptr %215, align 8, !tbaa !23
  %249 = extractelement <2 x double> %248, i64 0
  %250 = fmul double %249, 2.000000e+00
  %251 = load double, ptr %209, align 8, !tbaa !47
  %252 = tail call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %250, double noundef %251, ptr noundef %1)
  store double %252, ptr %110, align 8, !tbaa !26
  br label %36

253:                                              ; preds = %390, %413, %177, %159, %202, %185
  %254 = getelementptr inbounds i8, ptr %0, i64 144
  %255 = load double, ptr %254, align 8, !tbaa !40
  %256 = getelementptr inbounds i8, ptr %0, i64 152
  %257 = load double, ptr %256, align 8, !tbaa !41
  %258 = fadd double %255, %257
  %259 = fmul double %258, 5.000000e-01
  %260 = getelementptr inbounds i8, ptr %0, i64 120
  store double %259, ptr %260, align 8, !tbaa !26
  %261 = getelementptr inbounds i8, ptr %0, i64 216
  store double %259, ptr %261, align 8, !tbaa !29
  store i32 3, ptr %3, align 8, !tbaa !5
  br label %418

262:                                              ; preds = %2
  %263 = getelementptr inbounds i8, ptr %0, i64 224
  %264 = getelementptr inbounds i8, ptr %0, i64 128
  %265 = getelementptr inbounds i8, ptr %0, i64 136
  %266 = load <2 x double>, ptr %263, align 8, !tbaa !23
  store <2 x double> %266, ptr %264, align 8, !tbaa !23
  %267 = getelementptr inbounds i8, ptr %0, i64 192
  %268 = load i64, ptr %267, align 8, !tbaa !22
  %269 = add nsw i64 %268, 1
  store i64 %269, ptr %267, align 8, !tbaa !22
  %270 = getelementptr inbounds i8, ptr %0, i64 64
  %271 = load i8, ptr %270, align 8, !tbaa !17, !range !18, !noundef !19
  %272 = trunc nuw i8 %271 to i1
  br i1 %272, label %273, label %290

273:                                              ; preds = %262
  %274 = getelementptr inbounds i8, ptr %0, i64 72
  %275 = load i64, ptr %274, align 8, !tbaa !20
  tail call void @_ZN11alglib_impl11traceanglesElPNS_8ae_stateE(i64 noundef %275, ptr noundef %1)
  %276 = getelementptr inbounds i8, ptr %0, i64 120
  %277 = load double, ptr %276, align 8, !tbaa !26
  %278 = load double, ptr %264, align 8, !tbaa !30
  %279 = load double, ptr %0, align 8, !tbaa !31
  %280 = fsub double %278, %279
  %281 = load double, ptr %265, align 8, !tbaa !32
  %282 = getelementptr inbounds i8, ptr %0, i64 144
  %283 = load double, ptr %282, align 8, !tbaa !40
  %284 = getelementptr inbounds i8, ptr %0, i64 152
  %285 = load double, ptr %284, align 8, !tbaa !41
  %286 = tail call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %283, double noundef %285, ptr noundef %1)
  %287 = load double, ptr %282, align 8, !tbaa !40
  %288 = load double, ptr %284, align 8, !tbaa !41
  %289 = tail call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %287, double noundef %288, ptr noundef %1)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.368, double noundef %277, double noundef %280, double noundef %281, double noundef %286, double noundef %289)
  br label %290

290:                                              ; preds = %273, %262
  %291 = getelementptr inbounds i8, ptr %0, i64 80
  %292 = load double, ptr %291, align 8, !tbaa !27
  %293 = tail call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %292, double noundef 0.000000e+00)
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %293, ptr noundef nonnull @.str.369, ptr noundef %1)
  %294 = load double, ptr %264, align 8, !tbaa !30
  %295 = getelementptr inbounds i8, ptr %0, i64 88
  %296 = load double, ptr %295, align 8, !tbaa !28
  %297 = tail call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %294, double noundef %296)
  br i1 %297, label %298, label %301

298:                                              ; preds = %290
  %299 = getelementptr inbounds i8, ptr %0, i64 120
  %300 = load <2 x double>, ptr %299, align 8, !tbaa !23
  store <2 x double> %300, ptr %291, align 8, !tbaa !23
  br label %301

301:                                              ; preds = %298, %290
  %302 = load i64, ptr %267, align 8, !tbaa !22
  %303 = getelementptr inbounds i8, ptr %0, i64 56
  %304 = load i64, ptr %303, align 8, !tbaa !33
  %305 = add nsw i64 %304, -1
  %306 = icmp slt i64 %302, %305
  br i1 %306, label %335, label %307

307:                                              ; preds = %301
  %308 = load double, ptr %291, align 8, !tbaa !27
  %309 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %308, double noundef 0.000000e+00)
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %309, ptr noundef nonnull @.str.362, ptr noundef %1)
  %310 = getelementptr inbounds i8, ptr %0, i64 120
  %311 = load double, ptr %310, align 8, !tbaa !26
  %312 = load double, ptr %291, align 8, !tbaa !27
  %313 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %311, double noundef %312)
  br i1 %313, label %321, label %314

314:                                              ; preds = %307
  %315 = load double, ptr %291, align 8, !tbaa !27
  %316 = getelementptr inbounds i8, ptr %0, i64 216
  store double %315, ptr %316, align 8, !tbaa !29
  store i32 4, ptr %3, align 8, !tbaa !5
  br label %418

317:                                              ; preds = %2
  %318 = getelementptr inbounds i8, ptr %0, i64 192
  %319 = load i64, ptr %318, align 8, !tbaa !22
  %320 = add nsw i64 %319, 1
  store i64 %320, ptr %318, align 8, !tbaa !22
  br label %321

321:                                              ; preds = %307, %317
  %322 = getelementptr inbounds i8, ptr %0, i64 80
  %323 = load double, ptr %322, align 8, !tbaa !27
  %324 = getelementptr inbounds i8, ptr %0, i64 200
  store double %323, ptr %324, align 8, !tbaa !34
  %325 = getelementptr inbounds i8, ptr %0, i64 208
  store i64 3, ptr %325, align 8, !tbaa !35
  %326 = getelementptr inbounds i8, ptr %0, i64 64
  %327 = load i8, ptr %326, align 8, !tbaa !17, !range !18, !noundef !19
  %328 = trunc nuw i8 %327 to i1
  br i1 %328, label %329, label %418

329:                                              ; preds = %321
  %330 = getelementptr inbounds i8, ptr %0, i64 72
  %331 = load i64, ptr %330, align 8, !tbaa !20
  tail call void @_ZN11alglib_impl11traceanglesElPNS_8ae_stateE(i64 noundef %331, ptr noundef %1)
  %332 = getelementptr inbounds i8, ptr %0, i64 56
  %333 = load i64, ptr %332, align 8, !tbaa !33
  %334 = trunc i64 %333 to i32
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.363, i32 noundef %334)
  br label %418

335:                                              ; preds = %301
  %336 = load double, ptr %264, align 8, !tbaa !30
  %337 = load double, ptr %0, align 8, !tbaa !31
  %338 = getelementptr inbounds i8, ptr %0, i64 32
  %339 = load double, ptr %338, align 8, !tbaa !36
  %340 = getelementptr inbounds i8, ptr %0, i64 120
  %341 = load double, ptr %340, align 8, !tbaa !26
  %342 = fmul double %339, %341
  %343 = getelementptr inbounds i8, ptr %0, i64 8
  %344 = load double, ptr %343, align 8, !tbaa !21
  %345 = tail call double @llvm.fmuladd.f64(double %342, double %344, double %337)
  %346 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %336, double noundef %345)
  br i1 %346, label %347, label %375

347:                                              ; preds = %335
  %348 = load double, ptr %265, align 8, !tbaa !32
  %349 = tail call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %348, ptr noundef %1)
  %350 = getelementptr inbounds i8, ptr %0, i64 40
  %351 = load double, ptr %350, align 8, !tbaa !37
  %352 = fneg double %351
  %353 = load double, ptr %343, align 8, !tbaa !21
  %354 = fmul double %353, %352
  %355 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %349, double noundef %354)
  br i1 %355, label %366, label %356

356:                                              ; preds = %347
  %357 = getelementptr inbounds i8, ptr %0, i64 48
  %358 = load i8, ptr %357, align 8, !tbaa !38, !range !18, !noundef !19
  %359 = trunc nuw i8 %358 to i1
  br i1 %359, label %375, label %360

360:                                              ; preds = %356
  %361 = load double, ptr %265, align 8, !tbaa !32
  %362 = load double, ptr %350, align 8, !tbaa !37
  %363 = load double, ptr %343, align 8, !tbaa !21
  %364 = fmul double %362, %363
  %365 = tail call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %361, double noundef %364)
  br i1 %365, label %366, label %375

366:                                              ; preds = %360, %347
  %367 = load double, ptr %340, align 8, !tbaa !26
  %368 = getelementptr inbounds i8, ptr %0, i64 200
  store double %367, ptr %368, align 8, !tbaa !34
  %369 = getelementptr inbounds i8, ptr %0, i64 208
  store i64 1, ptr %369, align 8, !tbaa !35
  %370 = load i8, ptr %270, align 8, !tbaa !17, !range !18, !noundef !19
  %371 = trunc nuw i8 %370 to i1
  br i1 %371, label %372, label %418

372:                                              ; preds = %366
  %373 = getelementptr inbounds i8, ptr %0, i64 72
  %374 = load i64, ptr %373, align 8, !tbaa !20
  tail call void @_ZN11alglib_impl11traceanglesElPNS_8ae_stateE(i64 noundef %374, ptr noundef %1)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.364)
  br label %418

375:                                              ; preds = %360, %356, %335
  %376 = load double, ptr %264, align 8, !tbaa !30
  %377 = load double, ptr %0, align 8, !tbaa !31
  %378 = load double, ptr %338, align 8, !tbaa !36
  %379 = getelementptr inbounds i8, ptr %0, i64 216
  %380 = load double, ptr %379, align 8, !tbaa !29
  %381 = fmul double %378, %380
  %382 = load double, ptr %343, align 8, !tbaa !21
  %383 = tail call double @llvm.fmuladd.f64(double %381, double %382, double %377)
  %384 = tail call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %376, double noundef %383)
  br i1 %384, label %390, label %385

385:                                              ; preds = %375
  %386 = load double, ptr %264, align 8, !tbaa !30
  %387 = getelementptr inbounds i8, ptr %0, i64 160
  %388 = load double, ptr %387, align 8, !tbaa !42
  %389 = tail call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %386, double noundef %388)
  br i1 %389, label %390, label %397

390:                                              ; preds = %385, %375
  %391 = load double, ptr %340, align 8, !tbaa !26
  %392 = getelementptr inbounds i8, ptr %0, i64 152
  store double %391, ptr %392, align 8, !tbaa !41
  %393 = load double, ptr %264, align 8, !tbaa !30
  %394 = getelementptr inbounds i8, ptr %0, i64 168
  store double %393, ptr %394, align 8, !tbaa !43
  %395 = load double, ptr %265, align 8, !tbaa !32
  %396 = getelementptr inbounds i8, ptr %0, i64 184
  store double %395, ptr %396, align 8, !tbaa !46
  br label %253

397:                                              ; preds = %385
  %398 = load double, ptr %265, align 8, !tbaa !32
  %399 = getelementptr inbounds i8, ptr %0, i64 152
  %400 = load double, ptr %399, align 8, !tbaa !41
  %401 = getelementptr inbounds i8, ptr %0, i64 144
  %402 = load double, ptr %401, align 8, !tbaa !40
  %403 = fsub double %400, %402
  %404 = fmul double %398, %403
  %405 = tail call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %404, double noundef 0.000000e+00)
  br i1 %405, label %406, label %413

406:                                              ; preds = %397
  %407 = load double, ptr %401, align 8, !tbaa !40
  store double %407, ptr %399, align 8, !tbaa !41
  %408 = load double, ptr %387, align 8, !tbaa !42
  %409 = getelementptr inbounds i8, ptr %0, i64 168
  store double %408, ptr %409, align 8, !tbaa !43
  %410 = getelementptr inbounds i8, ptr %0, i64 176
  %411 = load double, ptr %410, align 8, !tbaa !45
  %412 = getelementptr inbounds i8, ptr %0, i64 184
  store double %411, ptr %412, align 8, !tbaa !46
  br label %413

413:                                              ; preds = %406, %397
  %414 = load double, ptr %340, align 8, !tbaa !26
  store double %414, ptr %401, align 8, !tbaa !40
  %415 = load double, ptr %264, align 8, !tbaa !30
  store double %415, ptr %387, align 8, !tbaa !42
  %416 = load double, ptr %265, align 8, !tbaa !32
  %417 = getelementptr inbounds i8, ptr %0, i64 176
  store double %416, ptr %417, align 8, !tbaa !45
  br label %253

418:                                              ; preds = %36, %84, %224, %253, %314, %366, %372, %321, %329, %136, %142, %91, %99, %240, %23
  %.0 = phi i1 [ false, %240 ], [ false, %23 ], [ false, %99 ], [ false, %91 ], [ false, %142 ], [ false, %136 ], [ false, %329 ], [ false, %321 ], [ false, %372 ], [ false, %366 ], [ true, %314 ], [ true, %253 ], [ true, %224 ], [ true, %84 ], [ true, %36 ]
  ret i1 %.0
}

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !13, i64 240}
!6 = !{!"_ZTSN11alglib_impl15linesearchstateE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !10, i64 48, !11, i64 56, !10, i64 64, !11, i64 72, !7, i64 80, !7, i64 88, !7, i64 96, !7, i64 104, !7, i64 112, !7, i64 120, !7, i64 128, !7, i64 136, !7, i64 144, !7, i64 152, !7, i64 160, !7, i64 168, !7, i64 176, !7, i64 184, !11, i64 192, !7, i64 200, !11, i64 208, !7, i64 216, !7, i64 224, !7, i64 232, !12, i64 240}
!7 = !{!"double", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"bool", !8, i64 0}
!11 = !{!"long", !8, i64 0}
!12 = !{!"_ZTSN11alglib_impl10rcommstateE", !13, i64 0, !14, i64 8, !14, i64 72, !14, i64 136, !14, i64 200}
!13 = !{!"int", !8, i64 0}
!14 = !{!"_ZTSN11alglib_impl9ae_vectorE", !11, i64 0, !11, i64 8, !10, i64 16, !15, i64 24, !8, i64 56}
!15 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !16, i64 0, !16, i64 8, !16, i64 16, !16, i64 24}
!16 = !{!"any pointer", !8, i64 0}
!17 = !{!6, !10, i64 64}
!18 = !{i8 0, i8 2}
!19 = !{}
!20 = !{!6, !11, i64 72}
!21 = !{!6, !7, i64 8}
!22 = !{!6, !11, i64 192}
!23 = !{!7, !7, i64 0}
!24 = !{!6, !7, i64 96}
!25 = !{!6, !7, i64 16}
!26 = !{!6, !7, i64 120}
!27 = !{!6, !7, i64 80}
!28 = !{!6, !7, i64 88}
!29 = !{!6, !7, i64 216}
!30 = !{!6, !7, i64 128}
!31 = !{!6, !7, i64 0}
!32 = !{!6, !7, i64 136}
!33 = !{!6, !11, i64 56}
!34 = !{!6, !7, i64 200}
!35 = !{!6, !11, i64 208}
!36 = !{!6, !7, i64 32}
!37 = !{!6, !7, i64 40}
!38 = !{!6, !10, i64 48}
!39 = !{!6, !7, i64 104}
!40 = !{!6, !7, i64 144}
!41 = !{!6, !7, i64 152}
!42 = !{!6, !7, i64 160}
!43 = !{!6, !7, i64 168}
!44 = !{!6, !7, i64 112}
!45 = !{!6, !7, i64 176}
!46 = !{!6, !7, i64 184}
!47 = !{!6, !7, i64 24}


; Effective O3 passes: BDCEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,MemCpyOptPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass