; 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::dfgmstate" = type { i64, i64, i64, i64, i8, i64, double, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, i64, i64, double, i64, %"struct.alglib_impl::ae_vector", double, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::rcommstate", %"struct.alglib_impl::rcommstate", %"struct.alglib_impl::rcommstate", i8, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, double, %"struct.alglib_impl::ae_matrix", i64, %"struct.alglib_impl::hqrndstate", %"struct.alglib_impl::df2psmodel", %"struct.alglib_impl::dfolsamodel", i8, i8, i64, double, %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::vipmstate", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::matinvreport", i64, i64, i64 }
%"struct.alglib_impl::rcommstate" = type { i32, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::hqrndstate" = type { i64, i64, i64 }
%"struct.alglib_impl::df2psmodel" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix" }
%"struct.alglib_impl::dfolsamodel" = type { %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix" }
%"struct.alglib_impl::ae_vector" = type { i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%union.anon.0 = type { ptr }
%"struct.alglib_impl::vipmstate" = type { i8, i8, i64, i64, double, double, double, i8, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::ae_vector", i64, i8, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, %"struct.alglib_impl::vipmvars", %"struct.alglib_impl::vipmvars", %"struct.alglib_impl::vipmvars", %"struct.alglib_impl::vipmvars", %"struct.alglib_impl::vipmvars", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64, i64, i64, i64, i8, i8, i64, i8, i8, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::vipmreducedsparsesystem", %"struct.alglib_impl::vipmrighthandside", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::vipmvars", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::sparsematrix" }
%"struct.alglib_impl::vipmreducedsparsesystem" = type { %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::spcholanalysis", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::spcholanalysis" = type { i64, i64, i64, i8, i64, double, double, double, double, %"struct.alglib_impl::ae_vector", i8, i8, i8, i8, i8, %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i8, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i8, i8, %"struct.alglib_impl::spcholadj", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_nxpool", %"struct.alglib_impl::ae_nxpool", %"struct.alglib_impl::ae_nxpool", %"struct.alglib_impl::ae_nxpool", %"struct.alglib_impl::ae_nxpool", %"struct.alglib_impl::ae_nxpool", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::amdbuffer", %"struct.alglib_impl::priorityamdbuffers", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::spcholadj" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::ae_nxpool" = type { i64, i64, i64, i64, %"struct.alglib_impl::ae_dyn_block", %"struct.alglib_impl::ae_lock", %"struct.alglib_impl::ae_dyn_block" }
%"struct.alglib_impl::ae_lock" = type { ptr, %"struct.alglib_impl::ae_dyn_block", i8 }
%"struct.alglib_impl::amdbuffer" = type { i64, i8, i8, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::amdknset", %"struct.alglib_impl::amdknset", %"struct.alglib_impl::amdknset", %"struct.alglib_impl::amdllmatrix", %"struct.alglib_impl::amdvertexset", %"struct.alglib_impl::niset", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::niset", %"struct.alglib_impl::niset", %"struct.alglib_impl::niset", %"struct.alglib_impl::niset", %"struct.alglib_impl::niset", %"struct.alglib_impl::niset", %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::niset", %"struct.alglib_impl::niset", %"struct.alglib_impl::amdknset", %"struct.alglib_impl::niset", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix" }
%"struct.alglib_impl::amdllmatrix" = type { i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64 }
%"struct.alglib_impl::amdvertexset" = type { i64, i8, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::amdknset" = type { i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64 }
%"struct.alglib_impl::niset" = type { i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64 }
%"struct.alglib_impl::priorityamdbuffers" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::amdbuffer", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix" }
%"struct.alglib_impl::vipmrighthandside" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::vipmvars" = type { i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::ae_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.1 }
%union.anon.1 = type { ptr }
%"struct.alglib_impl::sparsematrix" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64, i64, i64, i64 }
%"struct.alglib_impl::matinvreport" = type { i64, double, double }

@.str.208 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.713 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.1137 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.1325 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.1326 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1327 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.1328 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.1329 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.1330 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.1331 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.1332 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.1333 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.1334 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.1335 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.1336 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.1337 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.1338 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.1339 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.1340 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.1341 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.1342 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.1343 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.1344 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.1345 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.1346 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.1347 = external hidden unnamed_addr constant [37 x i8], align 1
@_ZN11alglib_implL19dfgenmod_minhistoryE = external hidden global i64, align 8
@.str.1348 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.1349 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.1350 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.1351 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.1352 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.1353 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.1354 = external hidden unnamed_addr constant [100 x i8], align 1
@_ZN11alglib_implL20dfgenmod_gammasafetyE = external hidden global double, align 8
@.str.1355 = external hidden unnamed_addr constant [62 x i8], align 1
@_ZN11alglib_implL20dfgenmod_omegasafetyE = external hidden global double, align 8
@_ZN11alglib_implL15dfgenmod_alpha2E = external hidden global double, align 8
@_ZN11alglib_implL15dfgenmod_alpha1E = external hidden global double, align 8
@.str.1356 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.1357 = external hidden unnamed_addr constant [99 x i8], align 1
@_ZN11alglib_implL17dfgenmod_gammabadE = external hidden global double, align 8
@.str.1358 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.1359 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.1360 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.1361 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.1362 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.1363 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.1364 = external hidden unnamed_addr constant [34 x i8], align 1
@_ZN11alglib_implL13dfgenmod_eta2E = external hidden global double, align 8
@.str.1365 = external hidden unnamed_addr constant [50 x i8], align 1
@_ZN11alglib_implL17dfgenmod_gammaincE = external hidden global double, align 8
@_ZN11alglib_implL18dfgenmod_gammainc2E = external hidden global double, align 8
@.str.1366 = external hidden unnamed_addr constant [49 x i8], align 1
@_ZN11alglib_implL17dfgenmod_gammadecE = external hidden global double, align 8
@.str.1367 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.1368 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.1369 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.1370 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.1371 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.1372 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.1373 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.1374 = external hidden unnamed_addr constant [83 x i8], align 1
@.str.1375 = external hidden unnamed_addr constant [110 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

declare void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 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_impl8coalesceEddPNS_8ae_stateE(double noundef, 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_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_impl8ae_fp_eqEdd(double noundef, double noundef) #1

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN11alglib_impl13dfgmiterationEPNS_9dfgmstateEbPNS_8ae_stateE(ptr noundef %0, i1 noundef zeroext %1, ptr noundef %2) #3 {
  %4 = alloca i1, align 1
  %5 = alloca ptr, align 8
  %6 = alloca i8, align 1
  %7 = alloca ptr, align 8
  %8 = alloca i64, align 8
  %9 = alloca i64, align 8
  %10 = alloca i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  %21 = alloca i8, align 1
  %22 = alloca i8, align 1
  %23 = alloca i32, align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  %24 = zext i1 %1 to i8
  store i8 %24, ptr %6, align 1, !tbaa !9
  store ptr %2, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #5
  %25 = load ptr, ptr %5, align 8, !tbaa !5
  %26 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %25, i32 0, i32 26
  %27 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %26, i32 0, i32 0
  %28 = load i32, ptr %27, align 8, !tbaa !11
  %29 = icmp sge i32 %28, 0
  br i1 %29, label %30, label %131

30:                                               ; preds = %3
  %31 = load ptr, ptr %5, align 8, !tbaa !5
  %32 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %31, i32 0, i32 26
  %33 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %32, i32 0, i32 1
  %34 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %33, i32 0, i32 4
  %35 = load ptr, ptr %34, align 8, !tbaa !39
  %36 = getelementptr inbounds i64, ptr %35, i64 0
  %37 = load i64, ptr %36, align 8, !tbaa !40
  store i64 %37, ptr %8, align 8, !tbaa !40
  %38 = load ptr, ptr %5, align 8, !tbaa !5
  %39 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %38, i32 0, i32 26
  %40 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %39, i32 0, i32 1
  %41 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %40, i32 0, i32 4
  %42 = load ptr, ptr %41, align 8, !tbaa !39
  %43 = getelementptr inbounds i64, ptr %42, i64 1
  %44 = load i64, ptr %43, align 8, !tbaa !40
  store i64 %44, ptr %9, align 8, !tbaa !40
  %45 = load ptr, ptr %5, align 8, !tbaa !5
  %46 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %45, i32 0, i32 26
  %47 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %46, i32 0, i32 1
  %48 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %47, i32 0, i32 4
  %49 = load ptr, ptr %48, align 8, !tbaa !39
  %50 = getelementptr inbounds i64, ptr %49, i64 2
  %51 = load i64, ptr %50, align 8, !tbaa !40
  store i64 %51, ptr %10, align 8, !tbaa !40
  %52 = load ptr, ptr %5, align 8, !tbaa !5
  %53 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %52, i32 0, i32 26
  %54 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %53, i32 0, i32 1
  %55 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %54, i32 0, i32 4
  %56 = load ptr, ptr %55, align 8, !tbaa !39
  %57 = getelementptr inbounds i64, ptr %56, i64 3
  %58 = load i64, ptr %57, align 8, !tbaa !40
  store i64 %58, ptr %11, align 8, !tbaa !40
  %59 = load ptr, ptr %5, align 8, !tbaa !5
  %60 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %59, i32 0, i32 26
  %61 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %60, i32 0, i32 1
  %62 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %61, i32 0, i32 4
  %63 = load ptr, ptr %62, align 8, !tbaa !39
  %64 = getelementptr inbounds i64, ptr %63, i64 4
  %65 = load i64, ptr %64, align 8, !tbaa !40
  store i64 %65, ptr %12, align 8, !tbaa !40
  %66 = load ptr, ptr %5, align 8, !tbaa !5
  %67 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %66, i32 0, i32 26
  %68 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %67, i32 0, i32 2
  %69 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %68, i32 0, i32 4
  %70 = load ptr, ptr %69, align 8, !tbaa !39
  %71 = getelementptr inbounds i8, ptr %70, i64 0
  %72 = load i8, ptr %71, align 1, !tbaa !9, !range !41, !noundef !42
  %73 = trunc i8 %72 to i1
  %74 = zext i1 %73 to i8
  store i8 %74, ptr %21, align 1, !tbaa !9
  %75 = load ptr, ptr %5, align 8, !tbaa !5
  %76 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %75, i32 0, i32 26
  %77 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %76, i32 0, i32 3
  %78 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %77, i32 0, i32 4
  %79 = load ptr, ptr %78, align 8, !tbaa !39
  %80 = getelementptr inbounds double, ptr %79, i64 0
  %81 = load double, ptr %80, align 8, !tbaa !43
  store double %81, ptr %13, align 8, !tbaa !43
  %82 = load ptr, ptr %5, align 8, !tbaa !5
  %83 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %82, i32 0, i32 26
  %84 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %83, i32 0, i32 3
  %85 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %84, i32 0, i32 4
  %86 = load ptr, ptr %85, align 8, !tbaa !39
  %87 = getelementptr inbounds double, ptr %86, i64 1
  %88 = load double, ptr %87, align 8, !tbaa !43
  store double %88, ptr %14, align 8, !tbaa !43
  %89 = load ptr, ptr %5, align 8, !tbaa !5
  %90 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %89, i32 0, i32 26
  %91 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %90, i32 0, i32 3
  %92 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %91, i32 0, i32 4
  %93 = load ptr, ptr %92, align 8, !tbaa !39
  %94 = getelementptr inbounds double, ptr %93, i64 2
  %95 = load double, ptr %94, align 8, !tbaa !43
  store double %95, ptr %15, align 8, !tbaa !43
  %96 = load ptr, ptr %5, align 8, !tbaa !5
  %97 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %96, i32 0, i32 26
  %98 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %97, i32 0, i32 3
  %99 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %98, i32 0, i32 4
  %100 = load ptr, ptr %99, align 8, !tbaa !39
  %101 = getelementptr inbounds double, ptr %100, i64 3
  %102 = load double, ptr %101, align 8, !tbaa !43
  store double %102, ptr %16, align 8, !tbaa !43
  %103 = load ptr, ptr %5, align 8, !tbaa !5
  %104 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %103, i32 0, i32 26
  %105 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %104, i32 0, i32 3
  %106 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %105, i32 0, i32 4
  %107 = load ptr, ptr %106, align 8, !tbaa !39
  %108 = getelementptr inbounds double, ptr %107, i64 4
  %109 = load double, ptr %108, align 8, !tbaa !43
  store double %109, ptr %17, align 8, !tbaa !43
  %110 = load ptr, ptr %5, align 8, !tbaa !5
  %111 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %110, i32 0, i32 26
  %112 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %111, i32 0, i32 3
  %113 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %112, i32 0, i32 4
  %114 = load ptr, ptr %113, align 8, !tbaa !39
  %115 = getelementptr inbounds double, ptr %114, i64 5
  %116 = load double, ptr %115, align 8, !tbaa !43
  store double %116, ptr %18, align 8, !tbaa !43
  %117 = load ptr, ptr %5, align 8, !tbaa !5
  %118 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %117, i32 0, i32 26
  %119 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %118, i32 0, i32 3
  %120 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %119, i32 0, i32 4
  %121 = load ptr, ptr %120, align 8, !tbaa !39
  %122 = getelementptr inbounds double, ptr %121, i64 6
  %123 = load double, ptr %122, align 8, !tbaa !43
  store double %123, ptr %19, align 8, !tbaa !43
  %124 = load ptr, ptr %5, align 8, !tbaa !5
  %125 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %124, i32 0, i32 26
  %126 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %125, i32 0, i32 3
  %127 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %126, i32 0, i32 4
  %128 = load ptr, ptr %127, align 8, !tbaa !39
  %129 = getelementptr inbounds double, ptr %128, i64 7
  %130 = load double, ptr %129, align 8, !tbaa !43
  store double %130, ptr %20, align 8, !tbaa !43
  br label %132

131:                                              ; preds = %3
  store i64 359, ptr %8, align 8, !tbaa !40
  store i64 -58, ptr %9, align 8, !tbaa !40
  store i64 -919, ptr %10, align 8, !tbaa !40
  store i64 -909, ptr %11, align 8, !tbaa !40
  store i64 81, ptr %12, align 8, !tbaa !40
  store i8 1, ptr %21, align 1, !tbaa !9
  store double 7.400000e+01, ptr %13, align 8, !tbaa !43
  store double -7.880000e+02, ptr %14, align 8, !tbaa !43
  store double 8.090000e+02, ptr %15, align 8, !tbaa !43
  store double 2.050000e+02, ptr %16, align 8, !tbaa !43
  store double -8.380000e+02, ptr %17, align 8, !tbaa !43
  store double 9.390000e+02, ptr %18, align 8, !tbaa !43
  store double -5.260000e+02, ptr %19, align 8, !tbaa !43
  store double 7.630000e+02, ptr %20, align 8, !tbaa !43
  br label %132

132:                                              ; preds = %131, %30
  %133 = load ptr, ptr %5, align 8, !tbaa !5
  %134 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %133, i32 0, i32 26
  %135 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %134, i32 0, i32 0
  %136 = load i32, ptr %135, align 8, !tbaa !11
  %137 = icmp eq i32 %136, 0
  br i1 %137, label %138, label %139

138:                                              ; preds = %132
  br label %301

139:                                              ; preds = %132
  %140 = load ptr, ptr %5, align 8, !tbaa !5
  %141 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %140, i32 0, i32 26
  %142 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %141, i32 0, i32 0
  %143 = load i32, ptr %142, align 8, !tbaa !11
  %144 = icmp eq i32 %143, 1
  br i1 %144, label %145, label %146

145:                                              ; preds = %139
  br label %444

146:                                              ; preds = %139
  %147 = load ptr, ptr %5, align 8, !tbaa !5
  %148 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %147, i32 0, i32 26
  %149 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %148, i32 0, i32 0
  %150 = load i32, ptr %149, align 8, !tbaa !11
  %151 = icmp eq i32 %150, 2
  br i1 %151, label %152, label %153

152:                                              ; preds = %146
  br label %827

153:                                              ; preds = %146
  %154 = load ptr, ptr %5, align 8, !tbaa !5
  %155 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %154, i32 0, i32 26
  %156 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %155, i32 0, i32 0
  %157 = load i32, ptr %156, align 8, !tbaa !11
  %158 = icmp eq i32 %157, 3
  br i1 %158, label %159, label %160

159:                                              ; preds = %153
  br label %857

160:                                              ; preds = %153
  %161 = load ptr, ptr %5, align 8, !tbaa !5
  %162 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %161, i32 0, i32 26
  %163 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %162, i32 0, i32 0
  %164 = load i32, ptr %163, align 8, !tbaa !11
  %165 = icmp eq i32 %164, 4
  br i1 %165, label %166, label %167

166:                                              ; preds = %160
  br label %1166

167:                                              ; preds = %160
  %168 = load ptr, ptr %5, align 8, !tbaa !5
  %169 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %168, i32 0, i32 26
  %170 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %169, i32 0, i32 0
  %171 = load i32, ptr %170, align 8, !tbaa !11
  %172 = icmp eq i32 %171, 5
  br i1 %172, label %173, label %174

173:                                              ; preds = %167
  br label %1254

174:                                              ; preds = %167
  %175 = load ptr, ptr %5, align 8, !tbaa !5
  %176 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %175, i32 0, i32 26
  %177 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %176, i32 0, i32 0
  %178 = load i32, ptr %177, align 8, !tbaa !11
  %179 = icmp eq i32 %178, 6
  br i1 %179, label %180, label %181

180:                                              ; preds = %174
  br label %1363

181:                                              ; preds = %174
  %182 = load ptr, ptr %5, align 8, !tbaa !5
  %183 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %182, i32 0, i32 0
  %184 = load i64, ptr %183, align 8, !tbaa !44
  store i64 %184, ptr %10, align 8, !tbaa !40
  %185 = load ptr, ptr %5, align 8, !tbaa !5
  %186 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %185, i32 0, i32 1
  %187 = load i64, ptr %186, align 8, !tbaa !45
  store i64 %187, ptr %11, align 8, !tbaa !40
  %188 = load ptr, ptr %5, align 8, !tbaa !5
  %189 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %188, i32 0, i32 3
  %190 = load i64, ptr %189, align 8, !tbaa !46
  store i64 %190, ptr %12, align 8, !tbaa !40
  %191 = load ptr, ptr %5, align 8, !tbaa !5
  %192 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %191, i32 0, i32 29
  %193 = load i8, ptr %192, align 8, !tbaa !47, !range !41, !noundef !42
  %194 = trunc i8 %193 to i1
  br i1 %194, label %195, label %208

195:                                              ; preds = %181
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1325)
  %196 = load ptr, ptr %5, align 8, !tbaa !5
  %197 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %196, i32 0, i32 5
  %198 = load i64, ptr %197, align 8, !tbaa !48
  %199 = icmp eq i64 %198, 0
  br i1 %199, label %200, label %201

200:                                              ; preds = %195
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1326)
  br label %201

201:                                              ; preds = %200, %195
  %202 = load ptr, ptr %5, align 8, !tbaa !5
  %203 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %202, i32 0, i32 5
  %204 = load i64, ptr %203, align 8, !tbaa !48
  %205 = icmp eq i64 %204, 1
  br i1 %205, label %206, label %207

206:                                              ; preds = %201
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1327)
  br label %207

207:                                              ; preds = %206, %201
  br label %208

208:                                              ; preds = %207, %181
  %209 = load i64, ptr %10, align 8, !tbaa !40
  %210 = load ptr, ptr %5, align 8, !tbaa !5
  %211 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %210, i32 0, i32 34
  %212 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %209, ptr noundef %211, ptr noundef %212)
  %213 = load i64, ptr %11, align 8, !tbaa !40
  %214 = load i64, ptr %12, align 8, !tbaa !40
  %215 = add nsw i64 %213, %214
  %216 = load ptr, ptr %5, align 8, !tbaa !5
  %217 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %216, i32 0, i32 35
  %218 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %215, ptr noundef %217, ptr noundef %218)
  %219 = load i64, ptr %10, align 8, !tbaa !40
  %220 = load ptr, ptr %5, align 8, !tbaa !5
  %221 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %220, i32 0, i32 39
  %222 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %219, ptr noundef %221, ptr noundef %222)
  %223 = load i64, ptr %10, align 8, !tbaa !40
  %224 = load ptr, ptr %5, align 8, !tbaa !5
  %225 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %224, i32 0, i32 40
  %226 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %223, ptr noundef %225, ptr noundef %226)
  %227 = load i64, ptr %11, align 8, !tbaa !40
  %228 = load i64, ptr %12, align 8, !tbaa !40
  %229 = add nsw i64 %227, %228
  %230 = load ptr, ptr %5, align 8, !tbaa !5
  %231 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %230, i32 0, i32 42
  %232 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %229, ptr noundef %231, ptr noundef %232)
  %233 = load ptr, ptr %5, align 8, !tbaa !5
  %234 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %233, i32 0, i32 50
  store i8 0, ptr %234, align 8, !tbaa !49
  %235 = load ptr, ptr %5, align 8, !tbaa !5
  %236 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %235, i32 0, i32 51
  store i8 1, ptr %236, align 1, !tbaa !50
  %237 = load ptr, ptr %5, align 8, !tbaa !5
  %238 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_implL20dfgenmod_inithistoryEPNS_9dfgmstateEPNS_8ae_stateE(ptr noundef %237, ptr noundef %238)
  %239 = load ptr, ptr %5, align 8, !tbaa !5
  %240 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %239, i32 0, i32 32
  store double 0.000000e+00, ptr %240, align 8, !tbaa !51
  %241 = load ptr, ptr %5, align 8, !tbaa !5
  %242 = load ptr, ptr %5, align 8, !tbaa !5
  %243 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %242, i32 0, i32 6
  %244 = load double, ptr %243, align 8, !tbaa !52
  %245 = load ptr, ptr %7, align 8, !tbaa !5
  %246 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %244, double noundef 1.000000e-01, ptr noundef %245)
  %247 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_implL26dfgenmod_updatetrustregionEPNS_9dfgmstateEdPNS_8ae_stateE(ptr noundef %241, double noundef %246, ptr noundef %247)
  %248 = load ptr, ptr %5, align 8, !tbaa !5
  %249 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %248, i32 0, i32 32
  %250 = load double, ptr %249, align 8, !tbaa !51
  %251 = load ptr, ptr %5, align 8, !tbaa !5
  %252 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %251, i32 0, i32 33
  store double %250, ptr %252, align 8, !tbaa !53
  %253 = load ptr, ptr %5, align 8, !tbaa !5
  %254 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %253, i32 0, i32 46
  store i64 0, ptr %254, align 8, !tbaa !54
  br label %255

255:                                              ; preds = %1398, %875, %834, %518, %208
  %256 = load ptr, ptr %5, align 8, !tbaa !5
  %257 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %256, i32 0, i32 46
  %258 = load i64, ptr %257, align 8, !tbaa !54
  %259 = icmp ne i64 %258, 0
  br i1 %259, label %260, label %261

260:                                              ; preds = %255
  br label %424

261:                                              ; preds = %255
  %262 = load ptr, ptr %5, align 8, !tbaa !5
  %263 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %262, i32 0, i32 27
  %264 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %263, i32 0, i32 1
  %265 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %264, i64 noundef 10, ptr noundef %265)
  %266 = load ptr, ptr %5, align 8, !tbaa !5
  %267 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %266, i32 0, i32 27
  %268 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %267, i32 0, i32 2
  %269 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %268, i64 noundef 1, ptr noundef %269)
  %270 = load ptr, ptr %5, align 8, !tbaa !5
  %271 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %270, i32 0, i32 27
  %272 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %271, i32 0, i32 3
  %273 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %272, i64 noundef 9, ptr noundef %273)
  %274 = load ptr, ptr %5, align 8, !tbaa !5
  %275 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %274, i32 0, i32 27
  %276 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %275, i32 0, i32 0
  store i32 -1, ptr %276, align 8, !tbaa !55
  br label %277

277:                                              ; preds = %301, %261
  %278 = load ptr, ptr %5, align 8, !tbaa !5
  %279 = load ptr, ptr %7, align 8, !tbaa !5
  %280 = call noundef zeroext i1 @_ZN11alglib_implL34dfgenmod_improveworkingsetgeometryEPNS_9dfgmstateEPNS_8ae_stateE(ptr noundef %278, ptr noundef %279)
  br i1 %280, label %282, label %281

281:                                              ; preds = %277
  br label %302

282:                                              ; preds = %277
  %283 = load ptr, ptr %5, align 8, !tbaa !5
  %284 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %283, i32 0, i32 20
  %285 = load i64, ptr %284, align 8, !tbaa !56
  %286 = icmp eq i64 %285, 4
  br i1 %286, label %287, label %297

287:                                              ; preds = %282
  %288 = load ptr, ptr %5, align 8, !tbaa !5
  %289 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %288, i32 0, i32 70
  %290 = load i64, ptr %289, align 8, !tbaa !57
  %291 = load ptr, ptr %5, align 8, !tbaa !5
  %292 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %291, i32 0, i32 23
  %293 = load i64, ptr %292, align 8, !tbaa !58
  %294 = add nsw i64 %290, %293
  %295 = load ptr, ptr %5, align 8, !tbaa !5
  %296 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %295, i32 0, i32 70
  store i64 %294, ptr %296, align 8, !tbaa !57
  br label %297

297:                                              ; preds = %287, %282
  %298 = load ptr, ptr %5, align 8, !tbaa !5
  %299 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %298, i32 0, i32 26
  %300 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %299, i32 0, i32 0
  store i32 0, ptr %300, align 8, !tbaa !11
  br label %1452

301:                                              ; preds = %138
  br label %277

302:                                              ; preds = %281
  %303 = load ptr, ptr %5, align 8, !tbaa !5
  %304 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %303, i32 0, i32 68
  %305 = load i64, ptr %304, align 8, !tbaa !59
  %306 = icmp sle i64 %305, 0
  %307 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %306, ptr noundef @.str.1328, ptr noundef %307)
  %308 = load ptr, ptr %5, align 8, !tbaa !5
  %309 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %308, i32 0, i32 68
  %310 = load i64, ptr %309, align 8, !tbaa !59
  %311 = icmp slt i64 %310, 0
  br i1 %311, label %312, label %313

312:                                              ; preds = %302
  br label %1402

313:                                              ; preds = %302
  %314 = load ptr, ptr %5, align 8, !tbaa !5
  %315 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %314, i32 0, i32 46
  %316 = load i64, ptr %315, align 8, !tbaa !54
  %317 = icmp sgt i64 %316, 0
  %318 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %317, ptr noundef @.str.1329, ptr noundef %318)
  %319 = load ptr, ptr %5, align 8, !tbaa !5
  %320 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %319, i32 0, i32 2
  %321 = load i64, ptr %320, align 8, !tbaa !60
  %322 = icmp eq i64 %321, 0
  %323 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %322, ptr noundef @.str.1330, ptr noundef %323)
  %324 = load ptr, ptr %5, align 8, !tbaa !5
  %325 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %324, i32 0, i32 3
  %326 = load i64, ptr %325, align 8, !tbaa !46
  %327 = icmp eq i64 %326, 0
  %328 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %327, ptr noundef @.str.1331, ptr noundef %328)
  %329 = load ptr, ptr %5, align 8, !tbaa !5
  %330 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %329, i32 0, i32 4
  %331 = load i8, ptr %330, align 8, !tbaa !61, !range !41, !noundef !42
  %332 = trunc i8 %331 to i1
  %333 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %332, ptr noundef @.str.1332, ptr noundef %333)
  %334 = load i64, ptr %11, align 8, !tbaa !40
  %335 = load i64, ptr %12, align 8, !tbaa !40
  %336 = add nsw i64 %334, %335
  %337 = load ptr, ptr %5, align 8, !tbaa !5
  %338 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %337, i32 0, i32 41
  %339 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %336, ptr noundef %338, ptr noundef %339)
  store i64 0, ptr %9, align 8, !tbaa !40
  br label %340

340:                                              ; preds = %369, %313
  %341 = load i64, ptr %9, align 8, !tbaa !40
  %342 = load i64, ptr %11, align 8, !tbaa !40
  %343 = load i64, ptr %12, align 8, !tbaa !40
  %344 = add nsw i64 %342, %343
  %345 = sub nsw i64 %344, 1
  %346 = icmp sle i64 %341, %345
  br i1 %346, label %347, label %372

347:                                              ; preds = %340
  %348 = load ptr, ptr %5, align 8, !tbaa !5
  %349 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %348, i32 0, i32 45
  %350 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %349, i32 0, i32 6
  %351 = load ptr, ptr %350, align 8, !tbaa !39
  %352 = load ptr, ptr %5, align 8, !tbaa !5
  %353 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %352, i32 0, i32 46
  %354 = load i64, ptr %353, align 8, !tbaa !54
  %355 = sub nsw i64 %354, 1
  %356 = getelementptr inbounds ptr, ptr %351, i64 %355
  %357 = load ptr, ptr %356, align 8, !tbaa !5
  %358 = load i64, ptr %10, align 8, !tbaa !40
  %359 = load i64, ptr %9, align 8, !tbaa !40
  %360 = add nsw i64 %358, %359
  %361 = getelementptr inbounds double, ptr %357, i64 %360
  %362 = load double, ptr %361, align 8, !tbaa !43
  %363 = load ptr, ptr %5, align 8, !tbaa !5
  %364 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %363, i32 0, i32 41
  %365 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %364, i32 0, i32 4
  %366 = load ptr, ptr %365, align 8, !tbaa !39
  %367 = load i64, ptr %9, align 8, !tbaa !40
  %368 = getelementptr inbounds double, ptr %366, i64 %367
  store double %362, ptr %368, align 8, !tbaa !43
  br label %369

369:                                              ; preds = %347
  %370 = load i64, ptr %9, align 8, !tbaa !40
  %371 = add nsw i64 %370, 1
  store i64 %371, ptr %9, align 8, !tbaa !40
  br label %340, !llvm.loop !62

372:                                              ; preds = %340
  %373 = load ptr, ptr %5, align 8, !tbaa !5
  %374 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %373, i32 0, i32 43
  store double 0.000000e+00, ptr %374, align 8, !tbaa !64
  store i64 0, ptr %9, align 8, !tbaa !40
  br label %375

375:                                              ; preds = %418, %372
  %376 = load i64, ptr %9, align 8, !tbaa !40
  %377 = load i64, ptr %11, align 8, !tbaa !40
  %378 = sub nsw i64 %377, 1
  %379 = icmp sle i64 %376, %378
  br i1 %379, label %380, label %421

380:                                              ; preds = %375
  %381 = load ptr, ptr %5, align 8, !tbaa !5
  %382 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %381, i32 0, i32 43
  %383 = load double, ptr %382, align 8, !tbaa !64
  %384 = load ptr, ptr %5, align 8, !tbaa !5
  %385 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %384, i32 0, i32 45
  %386 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %385, i32 0, i32 6
  %387 = load ptr, ptr %386, align 8, !tbaa !39
  %388 = load ptr, ptr %5, align 8, !tbaa !5
  %389 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %388, i32 0, i32 46
  %390 = load i64, ptr %389, align 8, !tbaa !54
  %391 = sub nsw i64 %390, 1
  %392 = getelementptr inbounds ptr, ptr %387, i64 %391
  %393 = load ptr, ptr %392, align 8, !tbaa !5
  %394 = load i64, ptr %10, align 8, !tbaa !40
  %395 = load i64, ptr %9, align 8, !tbaa !40
  %396 = add nsw i64 %394, %395
  %397 = getelementptr inbounds double, ptr %393, i64 %396
  %398 = load double, ptr %397, align 8, !tbaa !43
  %399 = fmul double 5.000000e-01, %398
  %400 = load ptr, ptr %5, align 8, !tbaa !5
  %401 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %400, i32 0, i32 45
  %402 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %401, i32 0, i32 6
  %403 = load ptr, ptr %402, align 8, !tbaa !39
  %404 = load ptr, ptr %5, align 8, !tbaa !5
  %405 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %404, i32 0, i32 46
  %406 = load i64, ptr %405, align 8, !tbaa !54
  %407 = sub nsw i64 %406, 1
  %408 = getelementptr inbounds ptr, ptr %403, i64 %407
  %409 = load ptr, ptr %408, align 8, !tbaa !5
  %410 = load i64, ptr %10, align 8, !tbaa !40
  %411 = load i64, ptr %9, align 8, !tbaa !40
  %412 = add nsw i64 %410, %411
  %413 = getelementptr inbounds double, ptr %409, i64 %412
  %414 = load double, ptr %413, align 8, !tbaa !43
  %415 = call double @llvm.fmuladd.f64(double %399, double %414, double %383)
  %416 = load ptr, ptr %5, align 8, !tbaa !5
  %417 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %416, i32 0, i32 43
  store double %415, ptr %417, align 8, !tbaa !64
  br label %418

418:                                              ; preds = %380
  %419 = load i64, ptr %9, align 8, !tbaa !40
  %420 = add nsw i64 %419, 1
  store i64 %420, ptr %9, align 8, !tbaa !40
  br label %375, !llvm.loop !65

421:                                              ; preds = %375
  %422 = load ptr, ptr %5, align 8, !tbaa !5
  %423 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %422, i32 0, i32 44
  store double 0.000000e+00, ptr %423, align 8, !tbaa !66
  br label %424

424:                                              ; preds = %421, %260
  %425 = load ptr, ptr %5, align 8, !tbaa !5
  %426 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_implL22dfgenmod_updatehistoryEPNS_9dfgmstateEPNS_8ae_stateE(ptr noundef %425, ptr noundef %426)
  %427 = load ptr, ptr %5, align 8, !tbaa !5
  %428 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %427, i32 0, i32 20
  store i64 -1, ptr %428, align 8, !tbaa !56
  %429 = load i64, ptr %10, align 8, !tbaa !40
  %430 = load ptr, ptr %5, align 8, !tbaa !5
  %431 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %430, i32 0, i32 38
  %432 = load ptr, ptr %5, align 8, !tbaa !5
  %433 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %432, i32 0, i32 21
  %434 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %429, ptr noundef %431, ptr noundef %433, ptr noundef %434)
  %435 = load ptr, ptr %5, align 8, !tbaa !5
  %436 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %435, i32 0, i32 43
  %437 = load double, ptr %436, align 8, !tbaa !64
  %438 = fmul double 2.000000e+00, %437
  %439 = load ptr, ptr %5, align 8, !tbaa !5
  %440 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %439, i32 0, i32 22
  store double %438, ptr %440, align 8, !tbaa !67
  %441 = load ptr, ptr %5, align 8, !tbaa !5
  %442 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %441, i32 0, i32 26
  %443 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %442, i32 0, i32 0
  store i32 1, ptr %443, align 8, !tbaa !11
  br label %1452

444:                                              ; preds = %145
  %445 = load ptr, ptr %5, align 8, !tbaa !5
  %446 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %445, i32 0, i32 17
  %447 = load i64, ptr %446, align 8, !tbaa !68
  %448 = icmp sgt i64 %447, 0
  br i1 %448, label %449, label %466

449:                                              ; preds = %444
  %450 = load ptr, ptr %5, align 8, !tbaa !5
  %451 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %450, i32 0, i32 69
  %452 = load i64, ptr %451, align 8, !tbaa !69
  %453 = load ptr, ptr %5, align 8, !tbaa !5
  %454 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %453, i32 0, i32 17
  %455 = load i64, ptr %454, align 8, !tbaa !68
  %456 = icmp sge i64 %452, %455
  br i1 %456, label %457, label %466

457:                                              ; preds = %449
  %458 = load ptr, ptr %5, align 8, !tbaa !5
  %459 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %458, i32 0, i32 29
  %460 = load i8, ptr %459, align 8, !tbaa !47, !range !41, !noundef !42
  %461 = trunc i8 %460 to i1
  br i1 %461, label %462, label %463

462:                                              ; preds = %457
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1333)
  br label %463

463:                                              ; preds = %462, %457
  %464 = load ptr, ptr %5, align 8, !tbaa !5
  %465 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %464, i32 0, i32 68
  store i64 5, ptr %465, align 8, !tbaa !59
  br label %1402

466:                                              ; preds = %449, %444
  %467 = load ptr, ptr %5, align 8, !tbaa !5
  %468 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %467, i32 0, i32 33
  %469 = load double, ptr %468, align 8, !tbaa !53
  %470 = load ptr, ptr %5, align 8, !tbaa !5
  %471 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %470, i32 0, i32 16
  %472 = load double, ptr %471, align 8, !tbaa !70
  %473 = load ptr, ptr %5, align 8, !tbaa !5
  %474 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %473, i32 0, i32 19
  %475 = load double, ptr %474, align 8, !tbaa !71
  %476 = load ptr, ptr %7, align 8, !tbaa !5
  %477 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %472, double noundef %475, ptr noundef %476)
  %478 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %469, double noundef %477)
  br i1 %478, label %479, label %546

479:                                              ; preds = %466
  %480 = load ptr, ptr %5, align 8, !tbaa !5
  %481 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %480, i32 0, i32 52
  %482 = load i64, ptr %481, align 8, !tbaa !72
  %483 = icmp sgt i64 %482, 0
  br i1 %483, label %484, label %519

484:                                              ; preds = %479
  %485 = load ptr, ptr %5, align 8, !tbaa !5
  %486 = load ptr, ptr %5, align 8, !tbaa !5
  %487 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %486, i32 0, i32 6
  %488 = load double, ptr %487, align 8, !tbaa !52
  %489 = load ptr, ptr %7, align 8, !tbaa !5
  %490 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %488, double noundef 1.000000e-01, ptr noundef %489)
  %491 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_implL26dfgenmod_updatetrustregionEPNS_9dfgmstateEdPNS_8ae_stateE(ptr noundef %485, double noundef %490, ptr noundef %491)
  %492 = load ptr, ptr %5, align 8, !tbaa !5
  %493 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %492, i32 0, i32 32
  %494 = load double, ptr %493, align 8, !tbaa !51
  %495 = load ptr, ptr %5, align 8, !tbaa !5
  %496 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %495, i32 0, i32 33
  store double %494, ptr %496, align 8, !tbaa !53
  %497 = load ptr, ptr %5, align 8, !tbaa !5
  %498 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %497, i32 0, i32 46
  store i64 0, ptr %498, align 8, !tbaa !54
  %499 = load ptr, ptr %5, align 8, !tbaa !5
  %500 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %499, i32 0, i32 58
  store i64 0, ptr %500, align 8, !tbaa !73
  %501 = load ptr, ptr %5, align 8, !tbaa !5
  %502 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %501, i32 0, i32 59
  store i64 0, ptr %502, align 8, !tbaa !74
  %503 = load ptr, ptr %5, align 8, !tbaa !5
  %504 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %503, i32 0, i32 52
  %505 = load i64, ptr %504, align 8, !tbaa !72
  %506 = sub nsw i64 %505, 1
  %507 = load ptr, ptr %5, align 8, !tbaa !5
  %508 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %507, i32 0, i32 52
  store i64 %506, ptr %508, align 8, !tbaa !72
  %509 = load ptr, ptr %5, align 8, !tbaa !5
  %510 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %509, i32 0, i32 29
  %511 = load i8, ptr %510, align 8, !tbaa !47, !range !41, !noundef !42
  %512 = trunc i8 %511 to i1
  br i1 %512, label %513, label %518

513:                                              ; preds = %484
  %514 = load ptr, ptr %5, align 8, !tbaa !5
  %515 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %514, i32 0, i32 52
  %516 = load i64, ptr %515, align 8, !tbaa !72
  %517 = trunc i64 %516 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1334, i32 noundef %517)
  br label %518

518:                                              ; preds = %513, %484
  br label %255

519:                                              ; preds = %479
  %520 = load ptr, ptr %5, align 8, !tbaa !5
  %521 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %520, i32 0, i32 33
  %522 = load double, ptr %521, align 8, !tbaa !53
  %523 = load ptr, ptr %5, align 8, !tbaa !5
  %524 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %523, i32 0, i32 16
  %525 = load double, ptr %524, align 8, !tbaa !70
  %526 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %522, double noundef %525)
  br i1 %526, label %527, label %536

527:                                              ; preds = %519
  %528 = load ptr, ptr %5, align 8, !tbaa !5
  %529 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %528, i32 0, i32 29
  %530 = load i8, ptr %529, align 8, !tbaa !47, !range !41, !noundef !42
  %531 = trunc i8 %530 to i1
  br i1 %531, label %532, label %533

532:                                              ; preds = %527
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1335)
  br label %533

533:                                              ; preds = %532, %527
  %534 = load ptr, ptr %5, align 8, !tbaa !5
  %535 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %534, i32 0, i32 68
  store i64 2, ptr %535, align 8, !tbaa !59
  br label %545

536:                                              ; preds = %519
  %537 = load ptr, ptr %5, align 8, !tbaa !5
  %538 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %537, i32 0, i32 29
  %539 = load i8, ptr %538, align 8, !tbaa !47, !range !41, !noundef !42
  %540 = trunc i8 %539 to i1
  br i1 %540, label %541, label %542

541:                                              ; preds = %536
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1336)
  br label %542

542:                                              ; preds = %541, %536
  %543 = load ptr, ptr %5, align 8, !tbaa !5
  %544 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %543, i32 0, i32 68
  store i64 7, ptr %544, align 8, !tbaa !59
  br label %545

545:                                              ; preds = %542, %533
  br label %1402

546:                                              ; preds = %466
  %547 = load i8, ptr %6, align 1, !tbaa !9, !range !41, !noundef !42
  %548 = trunc i8 %547 to i1
  br i1 %548, label %549, label %558

549:                                              ; preds = %546
  %550 = load ptr, ptr %5, align 8, !tbaa !5
  %551 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %550, i32 0, i32 29
  %552 = load i8, ptr %551, align 8, !tbaa !47, !range !41, !noundef !42
  %553 = trunc i8 %552 to i1
  br i1 %553, label %554, label %555

554:                                              ; preds = %549
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1337)
  br label %555

555:                                              ; preds = %554, %549
  %556 = load ptr, ptr %5, align 8, !tbaa !5
  %557 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %556, i32 0, i32 68
  store i64 8, ptr %557, align 8, !tbaa !59
  br label %1402

558:                                              ; preds = %546
  %559 = load ptr, ptr %5, align 8, !tbaa !5
  %560 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %559, i32 0, i32 29
  %561 = load i8, ptr %560, align 8, !tbaa !47, !range !41, !noundef !42
  %562 = trunc i8 %561 to i1
  br i1 %562, label %563, label %706

563:                                              ; preds = %558
  %564 = load ptr, ptr %5, align 8, !tbaa !5
  %565 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %564, i32 0, i32 69
  %566 = load i64, ptr %565, align 8, !tbaa !69
  %567 = trunc i64 %566 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.713, i32 noundef %567)
  %568 = load ptr, ptr %5, align 8, !tbaa !5
  %569 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %568, i32 0, i32 32
  %570 = load double, ptr %569, align 8, !tbaa !51
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1338, double noundef %570)
  %571 = load ptr, ptr %5, align 8, !tbaa !5
  %572 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %571, i32 0, i32 33
  %573 = load double, ptr %572, align 8, !tbaa !53
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1339, double noundef %573)
  %574 = load ptr, ptr %5, align 8, !tbaa !5
  %575 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %574, i32 0, i32 2
  %576 = load i64, ptr %575, align 8, !tbaa !60
  %577 = icmp eq i64 %576, 0
  br i1 %577, label %578, label %583

578:                                              ; preds = %563
  %579 = load ptr, ptr %5, align 8, !tbaa !5
  %580 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %579, i32 0, i32 3
  %581 = load i64, ptr %580, align 8, !tbaa !46
  %582 = icmp eq i64 %581, 0
  br label %583

583:                                              ; preds = %578, %563
  %584 = phi i1 [ false, %563 ], [ %582, %578 ]
  %585 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %584, ptr noundef @.str.1340, ptr noundef %585)
  %586 = load i64, ptr %10, align 8, !tbaa !40
  %587 = load ptr, ptr %5, align 8, !tbaa !5
  %588 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %587, i32 0, i32 38
  %589 = load ptr, ptr %7, align 8, !tbaa !5
  %590 = call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %586, ptr noundef %588, ptr noundef %589)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1137, double noundef %590)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1341)
  %591 = load ptr, ptr %5, align 8, !tbaa !5
  %592 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %591, i32 0, i32 70
  %593 = load i64, ptr %592, align 8, !tbaa !57
  %594 = trunc i64 %593 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1342, i32 noundef %594)
  %595 = load ptr, ptr %5, align 8, !tbaa !5
  %596 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %595, i32 0, i32 70
  %597 = load i64, ptr %596, align 8, !tbaa !57
  %598 = sitofp i64 %597 to double
  %599 = load i64, ptr %10, align 8, !tbaa !40
  %600 = add nsw i64 %599, 1
  %601 = sitofp i64 %600 to double
  %602 = fdiv double %598, %601
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1343, double noundef %602)
  %603 = load i64, ptr %10, align 8, !tbaa !40
  %604 = load ptr, ptr %5, align 8, !tbaa !5
  %605 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %604, i32 0, i32 60
  %606 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %603, ptr noundef %605, ptr noundef %606)
  %607 = load i64, ptr %10, align 8, !tbaa !40
  %608 = load ptr, ptr %5, align 8, !tbaa !5
  %609 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %608, i32 0, i32 61
  %610 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %607, ptr noundef %609, ptr noundef %610)
  %611 = load ptr, ptr %5, align 8, !tbaa !5
  %612 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %611, i32 0, i32 31
  %613 = load i64, ptr %10, align 8, !tbaa !40
  %614 = load ptr, ptr %5, align 8, !tbaa !5
  %615 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %614, i32 0, i32 45
  %616 = load ptr, ptr %5, align 8, !tbaa !5
  %617 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %616, i32 0, i32 46
  %618 = load i64, ptr %617, align 8, !tbaa !54
  %619 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_implL28dfgenmod_mostandleastdistantEPKNS_9ae_vectorElPKNS_9ae_matrixElPdPlS6_S7_PNS_8ae_stateE(ptr noundef %612, i64 noundef %613, ptr noundef %615, i64 noundef %618, ptr noundef %18, ptr noundef %8, ptr noundef %20, ptr noundef %9, ptr noundef %619)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1344)
  %620 = load double, ptr %18, align 8, !tbaa !43
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1345, double noundef %620)
  %621 = load double, ptr %20, align 8, !tbaa !43
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1346, double noundef %621)
  %622 = load ptr, ptr %5, align 8, !tbaa !5
  %623 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %622, i32 0, i32 7
  %624 = load i64, ptr %623, align 8, !tbaa !75
  %625 = icmp sgt i64 %624, 0
  br i1 %625, label %626, label %705

626:                                              ; preds = %583
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1347)
  %627 = load ptr, ptr %5, align 8, !tbaa !5
  %628 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %627, i32 0, i32 58
  %629 = load i64, ptr %628, align 8, !tbaa !73
  %630 = load i64, ptr @_ZN11alglib_implL19dfgenmod_minhistoryE, align 8, !tbaa !40
  %631 = icmp sge i64 %629, %630
  br i1 %631, label %632, label %703

632:                                              ; preds = %626
  %633 = load ptr, ptr %5, align 8, !tbaa !5
  %634 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %633, i32 0, i32 57
  %635 = load ptr, ptr %5, align 8, !tbaa !5
  %636 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %635, i32 0, i32 56
  %637 = load ptr, ptr %5, align 8, !tbaa !5
  %638 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %637, i32 0, i32 58
  %639 = load i64, ptr %638, align 8, !tbaa !73
  %640 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl10linreglineEPKNS_9ae_vectorES2_lPdS3_S3_PNS_8ae_stateE(ptr noundef %634, ptr noundef %636, i64 noundef %639, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %640)
  %641 = load double, ptr %19, align 8, !tbaa !43
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1348, double noundef %641)
  %642 = load double, ptr %20, align 8, !tbaa !43
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1349, double noundef %642)
  store double 0.000000e+00, ptr %18, align 8, !tbaa !43
  store double 0.000000e+00, ptr %19, align 8, !tbaa !43
  store double 0.000000e+00, ptr %20, align 8, !tbaa !43
  store i64 0, ptr %8, align 8, !tbaa !40
  br label %643

643:                                              ; preds = %687, %632
  %644 = load i64, ptr %8, align 8, !tbaa !40
  %645 = load ptr, ptr %5, align 8, !tbaa !5
  %646 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %645, i32 0, i32 58
  %647 = load i64, ptr %646, align 8, !tbaa !73
  %648 = sub nsw i64 %647, 1
  %649 = icmp sle i64 %644, %648
  br i1 %649, label %650, label %690

650:                                              ; preds = %643
  %651 = load ptr, ptr %5, align 8, !tbaa !5
  %652 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %651, i32 0, i32 55
  %653 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %652, i32 0, i32 4
  %654 = load ptr, ptr %653, align 8, !tbaa !39
  %655 = load i64, ptr %8, align 8, !tbaa !40
  %656 = getelementptr inbounds double, ptr %654, i64 %655
  %657 = load double, ptr %656, align 8, !tbaa !43
  %658 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %657, double noundef 0.000000e+00)
  br i1 %658, label %659, label %662

659:                                              ; preds = %650
  %660 = load double, ptr %18, align 8, !tbaa !43
  %661 = fadd double %660, 1.000000e+00
  store double %661, ptr %18, align 8, !tbaa !43
  br label %662

662:                                              ; preds = %659, %650
  %663 = load ptr, ptr %5, align 8, !tbaa !5
  %664 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %663, i32 0, i32 55
  %665 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %664, i32 0, i32 4
  %666 = load ptr, ptr %665, align 8, !tbaa !39
  %667 = load i64, ptr %8, align 8, !tbaa !40
  %668 = getelementptr inbounds double, ptr %666, i64 %667
  %669 = load double, ptr %668, align 8, !tbaa !43
  %670 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %669, double noundef 0.000000e+00)
  br i1 %670, label %671, label %674

671:                                              ; preds = %662
  %672 = load double, ptr %19, align 8, !tbaa !43
  %673 = fadd double %672, 1.000000e+00
  store double %673, ptr %19, align 8, !tbaa !43
  br label %674

674:                                              ; preds = %671, %662
  %675 = load ptr, ptr %5, align 8, !tbaa !5
  %676 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %675, i32 0, i32 55
  %677 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %676, i32 0, i32 4
  %678 = load ptr, ptr %677, align 8, !tbaa !39
  %679 = load i64, ptr %8, align 8, !tbaa !40
  %680 = getelementptr inbounds double, ptr %678, i64 %679
  %681 = load double, ptr %680, align 8, !tbaa !43
  %682 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %681, double noundef 0.000000e+00)
  br i1 %682, label %683, label %686

683:                                              ; preds = %674
  %684 = load double, ptr %20, align 8, !tbaa !43
  %685 = fadd double %684, 1.000000e+00
  store double %685, ptr %20, align 8, !tbaa !43
  br label %686

686:                                              ; preds = %683, %674
  br label %687

687:                                              ; preds = %686
  %688 = load i64, ptr %8, align 8, !tbaa !40
  %689 = add nsw i64 %688, 1
  store i64 %689, ptr %8, align 8, !tbaa !40
  br label %643, !llvm.loop !76

690:                                              ; preds = %643
  %691 = load double, ptr %18, align 8, !tbaa !43
  %692 = load ptr, ptr %7, align 8, !tbaa !5
  %693 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %691, ptr noundef %692)
  %694 = trunc i64 %693 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1350, i32 noundef %694)
  %695 = load double, ptr %19, align 8, !tbaa !43
  %696 = load ptr, ptr %7, align 8, !tbaa !5
  %697 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %695, ptr noundef %696)
  %698 = trunc i64 %697 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1351, i32 noundef %698)
  %699 = load double, ptr %20, align 8, !tbaa !43
  %700 = load ptr, ptr %7, align 8, !tbaa !5
  %701 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %699, ptr noundef %700)
  %702 = trunc i64 %701 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1352, i32 noundef %702)
  br label %704

703:                                              ; preds = %626
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1353)
  br label %704

704:                                              ; preds = %703, %690
  br label %705

705:                                              ; preds = %704, %583
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.208)
  br label %706

706:                                              ; preds = %705, %558
  %707 = load ptr, ptr %5, align 8, !tbaa !5
  %708 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_implL28dfgenmod_preparetrialrequestEPNS_9dfgmstateEPdS2_PNS_8ae_stateE(ptr noundef %707, ptr noundef %13, ptr noundef %14, ptr noundef %708)
  %709 = load ptr, ptr %5, align 8, !tbaa !5
  %710 = load ptr, ptr %5, align 8, !tbaa !5
  %711 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %710, i32 0, i32 39
  %712 = load ptr, ptr %7, align 8, !tbaa !5
  %713 = call noundef double @_ZN11alglib_implL34dfgenmod_normrelativetotrustregionEPKNS_9dfgmstateEPKNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %709, ptr noundef %711, ptr noundef %712)
  store double %713, ptr %17, align 8, !tbaa !43
  %714 = load ptr, ptr %5, align 8, !tbaa !5
  %715 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %714, i32 0, i32 29
  %716 = load i8, ptr %715, align 8, !tbaa !47, !range !41, !noundef !42
  %717 = trunc i8 %716 to i1
  br i1 %717, label %718, label %730

718:                                              ; preds = %706
  %719 = load double, ptr %17, align 8, !tbaa !43
  %720 = load double, ptr %13, align 8, !tbaa !43
  %721 = load ptr, ptr %5, align 8, !tbaa !5
  %722 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %721, i32 0, i32 43
  %723 = load double, ptr %722, align 8, !tbaa !64
  %724 = fsub double %720, %723
  %725 = load double, ptr %14, align 8, !tbaa !43
  %726 = load ptr, ptr %5, align 8, !tbaa !5
  %727 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %726, i32 0, i32 44
  %728 = load double, ptr %727, align 8, !tbaa !66
  %729 = fsub double %725, %728
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1354, double noundef %719, double noundef %724, double noundef %729)
  br label %730

730:                                              ; preds = %718, %706
  %731 = load double, ptr %17, align 8, !tbaa !43
  %732 = load ptr, ptr %5, align 8, !tbaa !5
  %733 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %732, i32 0, i32 32
  %734 = load double, ptr %733, align 8, !tbaa !51
  %735 = fmul double %731, %734
  %736 = load double, ptr @_ZN11alglib_implL20dfgenmod_gammasafetyE, align 8, !tbaa !43
  %737 = load ptr, ptr %5, align 8, !tbaa !5
  %738 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %737, i32 0, i32 33
  %739 = load double, ptr %738, align 8, !tbaa !53
  %740 = fmul double %736, %739
  %741 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %735, double noundef %740)
  br i1 %741, label %742, label %743

742:                                              ; preds = %730
  br label %838

743:                                              ; preds = %730
  %744 = load ptr, ptr %5, align 8, !tbaa !5
  %745 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %744, i32 0, i32 29
  %746 = load i8, ptr %745, align 8, !tbaa !47, !range !41, !noundef !42
  %747 = trunc i8 %746 to i1
  br i1 %747, label %748, label %749

748:                                              ; preds = %743
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1355)
  br label %749

749:                                              ; preds = %748, %743
  %750 = load ptr, ptr %5, align 8, !tbaa !5
  %751 = load double, ptr @_ZN11alglib_implL20dfgenmod_omegasafetyE, align 8, !tbaa !43
  %752 = load ptr, ptr %5, align 8, !tbaa !5
  %753 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %752, i32 0, i32 32
  %754 = load double, ptr %753, align 8, !tbaa !51
  %755 = fmul double %751, %754
  %756 = load ptr, ptr %5, align 8, !tbaa !5
  %757 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %756, i32 0, i32 33
  %758 = load double, ptr %757, align 8, !tbaa !53
  %759 = load ptr, ptr %7, align 8, !tbaa !5
  %760 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %755, double noundef %758, ptr noundef %759)
  %761 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_implL26dfgenmod_updatetrustregionEPNS_9dfgmstateEdPNS_8ae_stateE(ptr noundef %750, double noundef %760, ptr noundef %761)
  %762 = load ptr, ptr %5, align 8, !tbaa !5
  %763 = load ptr, ptr %7, align 8, !tbaa !5
  %764 = call noundef zeroext i1 @_ZN11alglib_implL24dfgenmod_deltakatminimumEPKNS_9dfgmstateEPNS_8ae_stateE(ptr noundef %762, ptr noundef %763)
  br i1 %764, label %765, label %779

765:                                              ; preds = %749
  %766 = load ptr, ptr %5, align 8, !tbaa !5
  %767 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %766, i32 0, i32 33
  %768 = load double, ptr %767, align 8, !tbaa !53
  store double %768, ptr %18, align 8, !tbaa !43
  %769 = load ptr, ptr %5, align 8, !tbaa !5
  %770 = load double, ptr @_ZN11alglib_implL15dfgenmod_alpha2E, align 8, !tbaa !43
  %771 = load double, ptr %18, align 8, !tbaa !43
  %772 = fmul double %770, %771
  %773 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_implL26dfgenmod_updatetrustregionEPNS_9dfgmstateEdPNS_8ae_stateE(ptr noundef %769, double noundef %772, ptr noundef %773)
  %774 = load double, ptr @_ZN11alglib_implL15dfgenmod_alpha1E, align 8, !tbaa !43
  %775 = load double, ptr %18, align 8, !tbaa !43
  %776 = fmul double %774, %775
  %777 = load ptr, ptr %5, align 8, !tbaa !5
  %778 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %777, i32 0, i32 33
  store double %776, ptr %778, align 8, !tbaa !53
  br label %779

779:                                              ; preds = %765, %749
  %780 = load ptr, ptr %5, align 8, !tbaa !5
  %781 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_implL30dfgenmod_sendstepdenialtomodelEPNS_9dfgmstateEPNS_8ae_stateE(ptr noundef %780, ptr noundef %781)
  %782 = load ptr, ptr %5, align 8, !tbaa !5
  %783 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %782, i32 0, i32 29
  %784 = load i8, ptr %783, align 8, !tbaa !47, !range !41, !noundef !42
  %785 = trunc i8 %784 to i1
  br i1 %785, label %786, label %787

786:                                              ; preds = %779
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1356)
  br label %787

787:                                              ; preds = %786, %779
  %788 = load ptr, ptr %5, align 8, !tbaa !5
  %789 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %788, i32 0, i32 27
  %790 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %789, i32 0, i32 1
  %791 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %790, i64 noundef 10, ptr noundef %791)
  %792 = load ptr, ptr %5, align 8, !tbaa !5
  %793 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %792, i32 0, i32 27
  %794 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %793, i32 0, i32 2
  %795 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %794, i64 noundef 1, ptr noundef %795)
  %796 = load ptr, ptr %5, align 8, !tbaa !5
  %797 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %796, i32 0, i32 27
  %798 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %797, i32 0, i32 3
  %799 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %798, i64 noundef 9, ptr noundef %799)
  %800 = load ptr, ptr %5, align 8, !tbaa !5
  %801 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %800, i32 0, i32 27
  %802 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %801, i32 0, i32 0
  store i32 -1, ptr %802, align 8, !tbaa !55
  br label %803

803:                                              ; preds = %827, %787
  %804 = load ptr, ptr %5, align 8, !tbaa !5
  %805 = load ptr, ptr %7, align 8, !tbaa !5
  %806 = call noundef zeroext i1 @_ZN11alglib_implL34dfgenmod_improveworkingsetgeometryEPNS_9dfgmstateEPNS_8ae_stateE(ptr noundef %804, ptr noundef %805)
  br i1 %806, label %808, label %807

807:                                              ; preds = %803
  br label %828

808:                                              ; preds = %803
  %809 = load ptr, ptr %5, align 8, !tbaa !5
  %810 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %809, i32 0, i32 20
  %811 = load i64, ptr %810, align 8, !tbaa !56
  %812 = icmp eq i64 %811, 4
  br i1 %812, label %813, label %823

813:                                              ; preds = %808
  %814 = load ptr, ptr %5, align 8, !tbaa !5
  %815 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %814, i32 0, i32 70
  %816 = load i64, ptr %815, align 8, !tbaa !57
  %817 = load ptr, ptr %5, align 8, !tbaa !5
  %818 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %817, i32 0, i32 23
  %819 = load i64, ptr %818, align 8, !tbaa !58
  %820 = add nsw i64 %816, %819
  %821 = load ptr, ptr %5, align 8, !tbaa !5
  %822 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %821, i32 0, i32 70
  store i64 %820, ptr %822, align 8, !tbaa !57
  br label %823

823:                                              ; preds = %813, %808
  %824 = load ptr, ptr %5, align 8, !tbaa !5
  %825 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %824, i32 0, i32 26
  %826 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %825, i32 0, i32 0
  store i32 2, ptr %826, align 8, !tbaa !11
  br label %1452

827:                                              ; preds = %152
  br label %803

828:                                              ; preds = %807
  %829 = load ptr, ptr %5, align 8, !tbaa !5
  %830 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %829, i32 0, i32 68
  %831 = load i64, ptr %830, align 8, !tbaa !59
  %832 = icmp ne i64 %831, 0
  br i1 %832, label %833, label %834

833:                                              ; preds = %828
  br label %1402

834:                                              ; preds = %828
  %835 = load ptr, ptr %5, align 8, !tbaa !5
  %836 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %835, i32 0, i32 69
  %837 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %836, ptr noundef %837)
  br label %255

838:                                              ; preds = %742
  %839 = load ptr, ptr %5, align 8, !tbaa !5
  %840 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %839, i32 0, i32 20
  %841 = load i64, ptr %840, align 8, !tbaa !56
  %842 = icmp eq i64 %841, 4
  br i1 %842, label %843, label %853

843:                                              ; preds = %838
  %844 = load ptr, ptr %5, align 8, !tbaa !5
  %845 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %844, i32 0, i32 70
  %846 = load i64, ptr %845, align 8, !tbaa !57
  %847 = load ptr, ptr %5, align 8, !tbaa !5
  %848 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %847, i32 0, i32 23
  %849 = load i64, ptr %848, align 8, !tbaa !58
  %850 = add nsw i64 %846, %849
  %851 = load ptr, ptr %5, align 8, !tbaa !5
  %852 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %851, i32 0, i32 70
  store i64 %850, ptr %852, align 8, !tbaa !57
  br label %853

853:                                              ; preds = %843, %838
  %854 = load ptr, ptr %5, align 8, !tbaa !5
  %855 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %854, i32 0, i32 26
  %856 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %855, i32 0, i32 0
  store i32 3, ptr %856, align 8, !tbaa !11
  br label %1452

857:                                              ; preds = %159
  %858 = load ptr, ptr %5, align 8, !tbaa !5
  %859 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %858, i32 0, i32 25
  %860 = load i64, ptr %11, align 8, !tbaa !40
  %861 = load i64, ptr %12, align 8, !tbaa !40
  %862 = add nsw i64 %860, %861
  %863 = load ptr, ptr %5, align 8, !tbaa !5
  %864 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %863, i32 0, i32 23
  %865 = load i64, ptr %864, align 8, !tbaa !58
  %866 = mul nsw i64 %862, %865
  %867 = load ptr, ptr %7, align 8, !tbaa !5
  %868 = call noundef zeroext i1 @_ZN11alglib_impl14isfinitevectorEPKNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %859, i64 noundef %866, ptr noundef %867)
  br i1 %868, label %902, label %869

869:                                              ; preds = %857
  %870 = load ptr, ptr %5, align 8, !tbaa !5
  %871 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %870, i32 0, i32 29
  %872 = load i8, ptr %871, align 8, !tbaa !47, !range !41, !noundef !42
  %873 = trunc i8 %872 to i1
  br i1 %873, label %874, label %875

874:                                              ; preds = %869
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1357)
  br label %875

875:                                              ; preds = %874, %869
  %876 = load ptr, ptr %5, align 8, !tbaa !5
  %877 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %876, i32 0, i32 50
  store i8 1, ptr %877, align 8, !tbaa !49
  %878 = load ptr, ptr %5, align 8, !tbaa !5
  %879 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %878, i32 0, i32 51
  store i8 0, ptr %879, align 1, !tbaa !50
  %880 = load ptr, ptr %5, align 8, !tbaa !5
  %881 = load double, ptr @_ZN11alglib_implL17dfgenmod_gammabadE, align 8, !tbaa !43
  %882 = load ptr, ptr %5, align 8, !tbaa !5
  %883 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %882, i32 0, i32 32
  %884 = load double, ptr %883, align 8, !tbaa !51
  %885 = fmul double %881, %884
  %886 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_implL26dfgenmod_updatetrustregionEPNS_9dfgmstateEdPNS_8ae_stateE(ptr noundef %880, double noundef %885, ptr noundef %886)
  %887 = load ptr, ptr %5, align 8, !tbaa !5
  %888 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %887, i32 0, i32 32
  %889 = load double, ptr %888, align 8, !tbaa !51
  %890 = load ptr, ptr %5, align 8, !tbaa !5
  %891 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %890, i32 0, i32 33
  %892 = load double, ptr %891, align 8, !tbaa !53
  %893 = load ptr, ptr %7, align 8, !tbaa !5
  %894 = call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %889, double noundef %892, ptr noundef %893)
  %895 = load ptr, ptr %5, align 8, !tbaa !5
  %896 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %895, i32 0, i32 33
  store double %894, ptr %896, align 8, !tbaa !53
  %897 = load ptr, ptr %5, align 8, !tbaa !5
  %898 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_implL30dfgenmod_sendstepdenialtomodelEPNS_9dfgmstateEPNS_8ae_stateE(ptr noundef %897, ptr noundef %898)
  %899 = load ptr, ptr %5, align 8, !tbaa !5
  %900 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %899, i32 0, i32 69
  %901 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %900, ptr noundef %901)
  br label %255

902:                                              ; preds = %857
  %903 = load ptr, ptr %5, align 8, !tbaa !5
  %904 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_implL28dfgenmod_processtrialrequestEPNS_9dfgmstateEPdS2_PNS_8ae_stateE(ptr noundef %903, ptr noundef %15, ptr noundef %16, ptr noundef %904)
  %905 = load ptr, ptr %5, align 8, !tbaa !5
  %906 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %905, i32 0, i32 29
  %907 = load i8, ptr %906, align 8, !tbaa !47, !range !41, !noundef !42
  %908 = trunc i8 %907 to i1
  br i1 %908, label %909, label %920

909:                                              ; preds = %902
  %910 = load double, ptr %15, align 8, !tbaa !43
  %911 = load ptr, ptr %5, align 8, !tbaa !5
  %912 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %911, i32 0, i32 43
  %913 = load double, ptr %912, align 8, !tbaa !64
  %914 = fsub double %910, %913
  %915 = load double, ptr %16, align 8, !tbaa !43
  %916 = load ptr, ptr %5, align 8, !tbaa !5
  %917 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %916, i32 0, i32 44
  %918 = load double, ptr %917, align 8, !tbaa !66
  %919 = fsub double %915, %918
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1358, double noundef %914, double noundef %919)
  br label %920

920:                                              ; preds = %909, %902
  %921 = load ptr, ptr %5, align 8, !tbaa !5
  %922 = load ptr, ptr %5, align 8, !tbaa !5
  %923 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %922, i32 0, i32 43
  %924 = load double, ptr %923, align 8, !tbaa !64
  %925 = load ptr, ptr %5, align 8, !tbaa !5
  %926 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %925, i32 0, i32 44
  %927 = load double, ptr %926, align 8, !tbaa !66
  %928 = load double, ptr %13, align 8, !tbaa !43
  %929 = load double, ptr %14, align 8, !tbaa !43
  %930 = load double, ptr %15, align 8, !tbaa !43
  %931 = load double, ptr %16, align 8, !tbaa !43
  %932 = load ptr, ptr %7, align 8, !tbaa !5
  %933 = call noundef zeroext i1 @_ZN11alglib_implL31dfgenmod_testacceptancebyfilterEPKNS_9dfgmstateEddddddPNS_8ae_stateE(ptr noundef %921, double noundef %924, double noundef %927, double noundef %928, double noundef %929, double noundef %930, double noundef %931, ptr noundef %932)
  %934 = zext i1 %933 to i8
  store i8 %934, ptr %21, align 1, !tbaa !9
  %935 = load i8, ptr %21, align 1, !tbaa !9, !range !41, !noundef !42
  %936 = trunc i8 %935 to i1
  br i1 %936, label %938, label %937

937:                                              ; preds = %920
  br label %1174

938:                                              ; preds = %920
  %939 = load ptr, ptr %5, align 8, !tbaa !5
  %940 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %939, i32 0, i32 29
  %941 = load i8, ptr %940, align 8, !tbaa !47, !range !41, !noundef !42
  %942 = trunc i8 %941 to i1
  br i1 %942, label %943, label %968

943:                                              ; preds = %938
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1359)
  %944 = load ptr, ptr %5, align 8, !tbaa !5
  %945 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %944, i32 0, i32 51
  %946 = load i8, ptr %945, align 1, !tbaa !50, !range !41, !noundef !42
  %947 = trunc i8 %946 to i1
  br i1 %947, label %949, label %948

948:                                              ; preds = %943
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1360)
  br label %949

949:                                              ; preds = %948, %943
  %950 = load ptr, ptr %5, align 8, !tbaa !5
  %951 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %950, i32 0, i32 43
  %952 = load double, ptr %951, align 8, !tbaa !64
  %953 = load double, ptr %15, align 8, !tbaa !43
  %954 = load double, ptr %15, align 8, !tbaa !43
  %955 = load ptr, ptr %5, align 8, !tbaa !5
  %956 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %955, i32 0, i32 43
  %957 = load double, ptr %956, align 8, !tbaa !64
  %958 = fsub double %954, %957
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1361, double noundef %952, double noundef %953, double noundef %958)
  %959 = load ptr, ptr %5, align 8, !tbaa !5
  %960 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %959, i32 0, i32 44
  %961 = load double, ptr %960, align 8, !tbaa !66
  %962 = load double, ptr %16, align 8, !tbaa !43
  %963 = load double, ptr %16, align 8, !tbaa !43
  %964 = load ptr, ptr %5, align 8, !tbaa !5
  %965 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %964, i32 0, i32 44
  %966 = load double, ptr %965, align 8, !tbaa !66
  %967 = fsub double %963, %966
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1362, double noundef %961, double noundef %962, double noundef %967)
  br label %968

968:                                              ; preds = %949, %938
  %969 = load ptr, ptr %5, align 8, !tbaa !5
  %970 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %969, i32 0, i32 2
  %971 = load i64, ptr %970, align 8, !tbaa !60
  %972 = icmp eq i64 %971, 0
  br i1 %972, label %973, label %978

973:                                              ; preds = %968
  %974 = load ptr, ptr %5, align 8, !tbaa !5
  %975 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %974, i32 0, i32 3
  %976 = load i64, ptr %975, align 8, !tbaa !46
  %977 = icmp eq i64 %976, 0
  br label %978

978:                                              ; preds = %973, %968
  %979 = phi i1 [ false, %968 ], [ %977, %973 ]
  %980 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %979, ptr noundef @.str.1363, ptr noundef %980)
  %981 = load ptr, ptr %5, align 8, !tbaa !5
  %982 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %981, i32 0, i32 44
  %983 = load double, ptr %982, align 8, !tbaa !66
  %984 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %983, double noundef 0.000000e+00)
  br i1 %984, label %985, label %988

985:                                              ; preds = %978
  %986 = load double, ptr %16, align 8, !tbaa !43
  %987 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %986, double noundef 0.000000e+00)
  br label %988

988:                                              ; preds = %985, %978
  %989 = phi i1 [ false, %978 ], [ %987, %985 ]
  %990 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %989, ptr noundef @.str.1364, ptr noundef %990)
  %991 = load double, ptr %13, align 8, !tbaa !43
  %992 = load ptr, ptr %5, align 8, !tbaa !5
  %993 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %992, i32 0, i32 43
  %994 = load double, ptr %993, align 8, !tbaa !64
  %995 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %991, double noundef %994)
  br i1 %995, label %996, label %1033

996:                                              ; preds = %988
  %997 = load ptr, ptr %5, align 8, !tbaa !5
  %998 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %997, i32 0, i32 43
  %999 = load double, ptr %998, align 8, !tbaa !64
  %1000 = load double, ptr %15, align 8, !tbaa !43
  %1001 = fsub double %999, %1000
  %1002 = load ptr, ptr %5, align 8, !tbaa !5
  %1003 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1002, i32 0, i32 43
  %1004 = load double, ptr %1003, align 8, !tbaa !64
  %1005 = load double, ptr %13, align 8, !tbaa !43
  %1006 = fsub double %1004, %1005
  %1007 = fdiv double %1001, %1006
  %1008 = load double, ptr @_ZN11alglib_implL13dfgenmod_eta2E, align 8, !tbaa !43
  %1009 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1007, double noundef %1008)
  br i1 %1009, label %1010, label %1033

1010:                                             ; preds = %996
  %1011 = load ptr, ptr %5, align 8, !tbaa !5
  %1012 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1011, i32 0, i32 29
  %1013 = load i8, ptr %1012, align 8, !tbaa !47, !range !41, !noundef !42
  %1014 = trunc i8 %1013 to i1
  br i1 %1014, label %1015, label %1016

1015:                                             ; preds = %1010
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1365)
  br label %1016

1016:                                             ; preds = %1015, %1010
  %1017 = load ptr, ptr %5, align 8, !tbaa !5
  %1018 = load double, ptr @_ZN11alglib_implL17dfgenmod_gammaincE, align 8, !tbaa !43
  %1019 = load ptr, ptr %5, align 8, !tbaa !5
  %1020 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1019, i32 0, i32 32
  %1021 = load double, ptr %1020, align 8, !tbaa !51
  %1022 = fmul double %1018, %1021
  %1023 = load double, ptr @_ZN11alglib_implL18dfgenmod_gammainc2E, align 8, !tbaa !43
  %1024 = load double, ptr %17, align 8, !tbaa !43
  %1025 = load ptr, ptr %5, align 8, !tbaa !5
  %1026 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1025, i32 0, i32 32
  %1027 = load double, ptr %1026, align 8, !tbaa !51
  %1028 = fmul double %1024, %1027
  %1029 = fmul double %1023, %1028
  %1030 = load ptr, ptr %7, align 8, !tbaa !5
  %1031 = call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %1022, double noundef %1029, ptr noundef %1030)
  %1032 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_implL26dfgenmod_updatetrustregionEPNS_9dfgmstateEdPNS_8ae_stateE(ptr noundef %1017, double noundef %1031, ptr noundef %1032)
  br label %1062

1033:                                             ; preds = %996, %988
  %1034 = load ptr, ptr %5, align 8, !tbaa !5
  %1035 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1034, i32 0, i32 29
  %1036 = load i8, ptr %1035, align 8, !tbaa !47, !range !41, !noundef !42
  %1037 = trunc i8 %1036 to i1
  br i1 %1037, label %1038, label %1039

1038:                                             ; preds = %1033
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1366)
  br label %1039

1039:                                             ; preds = %1038, %1033
  %1040 = load double, ptr @_ZN11alglib_implL17dfgenmod_gammadecE, align 8, !tbaa !43
  %1041 = load double, ptr %17, align 8, !tbaa !43
  %1042 = load ptr, ptr %7, align 8, !tbaa !5
  %1043 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1040, double noundef %1041, ptr noundef %1042)
  %1044 = load ptr, ptr %5, align 8, !tbaa !5
  %1045 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1044, i32 0, i32 32
  %1046 = load double, ptr %1045, align 8, !tbaa !51
  %1047 = fmul double %1043, %1046
  store double %1047, ptr %18, align 8, !tbaa !43
  %1048 = load double, ptr %18, align 8, !tbaa !43
  %1049 = load ptr, ptr %5, align 8, !tbaa !5
  %1050 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1049, i32 0, i32 33
  %1051 = load double, ptr %1050, align 8, !tbaa !53
  %1052 = fmul double 1.500000e+00, %1051
  %1053 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %1048, double noundef %1052)
  br i1 %1053, label %1054, label %1058

1054:                                             ; preds = %1039
  %1055 = load ptr, ptr %5, align 8, !tbaa !5
  %1056 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1055, i32 0, i32 33
  %1057 = load double, ptr %1056, align 8, !tbaa !53
  store double %1057, ptr %18, align 8, !tbaa !43
  br label %1058

1058:                                             ; preds = %1054, %1039
  %1059 = load ptr, ptr %5, align 8, !tbaa !5
  %1060 = load double, ptr %18, align 8, !tbaa !43
  %1061 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_implL26dfgenmod_updatetrustregionEPNS_9dfgmstateEdPNS_8ae_stateE(ptr noundef %1059, double noundef %1060, ptr noundef %1061)
  br label %1062

1062:                                             ; preds = %1058, %1016
  %1063 = load i64, ptr %10, align 8, !tbaa !40
  %1064 = load ptr, ptr %5, align 8, !tbaa !5
  %1065 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1064, i32 0, i32 38
  %1066 = load ptr, ptr %5, align 8, !tbaa !5
  %1067 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1066, i32 0, i32 34
  %1068 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %1063, ptr noundef %1065, ptr noundef %1067, ptr noundef %1068)
  %1069 = load i64, ptr %11, align 8, !tbaa !40
  %1070 = load ptr, ptr %5, align 8, !tbaa !5
  %1071 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1070, i32 0, i32 3
  %1072 = load i64, ptr %1071, align 8, !tbaa !46
  %1073 = add nsw i64 %1069, %1072
  %1074 = load ptr, ptr %5, align 8, !tbaa !5
  %1075 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1074, i32 0, i32 41
  %1076 = load ptr, ptr %5, align 8, !tbaa !5
  %1077 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1076, i32 0, i32 35
  %1078 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %1073, ptr noundef %1075, ptr noundef %1077, ptr noundef %1078)
  %1079 = load ptr, ptr %5, align 8, !tbaa !5
  %1080 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1079, i32 0, i32 43
  %1081 = load double, ptr %1080, align 8, !tbaa !64
  %1082 = load ptr, ptr %5, align 8, !tbaa !5
  %1083 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1082, i32 0, i32 36
  store double %1081, ptr %1083, align 8, !tbaa !77
  %1084 = load ptr, ptr %5, align 8, !tbaa !5
  %1085 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1084, i32 0, i32 44
  %1086 = load double, ptr %1085, align 8, !tbaa !66
  %1087 = load ptr, ptr %5, align 8, !tbaa !5
  %1088 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1087, i32 0, i32 37
  store double %1086, ptr %1088, align 8, !tbaa !78
  %1089 = load i64, ptr %10, align 8, !tbaa !40
  %1090 = load ptr, ptr %5, align 8, !tbaa !5
  %1091 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1090, i32 0, i32 40
  %1092 = load ptr, ptr %5, align 8, !tbaa !5
  %1093 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1092, i32 0, i32 38
  %1094 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %1089, ptr noundef %1091, ptr noundef %1093, ptr noundef %1094)
  %1095 = load i64, ptr %11, align 8, !tbaa !40
  %1096 = load ptr, ptr %5, align 8, !tbaa !5
  %1097 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1096, i32 0, i32 3
  %1098 = load i64, ptr %1097, align 8, !tbaa !46
  %1099 = add nsw i64 %1095, %1098
  %1100 = load ptr, ptr %5, align 8, !tbaa !5
  %1101 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1100, i32 0, i32 42
  %1102 = load ptr, ptr %5, align 8, !tbaa !5
  %1103 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1102, i32 0, i32 41
  %1104 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %1099, ptr noundef %1101, ptr noundef %1103, ptr noundef %1104)
  %1105 = load double, ptr %15, align 8, !tbaa !43
  %1106 = load ptr, ptr %5, align 8, !tbaa !5
  %1107 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1106, i32 0, i32 43
  store double %1105, ptr %1107, align 8, !tbaa !64
  %1108 = load double, ptr %16, align 8, !tbaa !43
  %1109 = load ptr, ptr %5, align 8, !tbaa !5
  %1110 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1109, i32 0, i32 44
  store double %1108, ptr %1110, align 8, !tbaa !66
  %1111 = load ptr, ptr %5, align 8, !tbaa !5
  %1112 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1111, i32 0, i32 51
  store i8 1, ptr %1112, align 1, !tbaa !50
  %1113 = load ptr, ptr %5, align 8, !tbaa !5
  %1114 = load double, ptr %15, align 8, !tbaa !43
  %1115 = load double, ptr %16, align 8, !tbaa !43
  %1116 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_implL21dfgenmod_sendtofilterEPKNS_9dfgmstateEddPNS_8ae_stateE(ptr noundef %1113, double noundef %1114, double noundef %1115, ptr noundef %1116)
  %1117 = load ptr, ptr %5, align 8, !tbaa !5
  %1118 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1117, i32 0, i32 29
  %1119 = load i8, ptr %1118, align 8, !tbaa !47, !range !41, !noundef !42
  %1120 = trunc i8 %1119 to i1
  br i1 %1120, label %1121, label %1122

1121:                                             ; preds = %1062
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1367)
  br label %1122

1122:                                             ; preds = %1121, %1062
  %1123 = load ptr, ptr %5, align 8, !tbaa !5
  %1124 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1123, i32 0, i32 28
  %1125 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1124, i32 0, i32 1
  %1126 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %1125, i64 noundef 7, ptr noundef %1126)
  %1127 = load ptr, ptr %5, align 8, !tbaa !5
  %1128 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1127, i32 0, i32 28
  %1129 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1128, i32 0, i32 3
  %1130 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %1129, i64 noundef 3, ptr noundef %1130)
  %1131 = load ptr, ptr %5, align 8, !tbaa !5
  %1132 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1131, i32 0, i32 28
  %1133 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1132, i32 0, i32 0
  store i32 -1, ptr %1133, align 8, !tbaa !79
  br label %1134

1134:                                             ; preds = %1166, %1122
  %1135 = load ptr, ptr %5, align 8, !tbaa !5
  %1136 = load ptr, ptr %5, align 8, !tbaa !5
  %1137 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1136, i32 0, i32 34
  %1138 = load ptr, ptr %5, align 8, !tbaa !5
  %1139 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1138, i32 0, i32 40
  %1140 = load ptr, ptr %5, align 8, !tbaa !5
  %1141 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1140, i32 0, i32 42
  %1142 = load double, ptr %15, align 8, !tbaa !43
  %1143 = load double, ptr %16, align 8, !tbaa !43
  %1144 = load ptr, ptr %7, align 8, !tbaa !5
  %1145 = call noundef zeroext i1 @_ZN11alglib_implL33dfgenmod_updateworkingsetandmodelEPNS_9dfgmstateEPKNS_9ae_vectorES4_S4_ddbPNS_8ae_stateE(ptr noundef %1135, ptr noundef %1137, ptr noundef %1139, ptr noundef %1141, double noundef %1142, double noundef %1143, i1 noundef zeroext true, ptr noundef %1144)
  br i1 %1145, label %1147, label %1146

1146:                                             ; preds = %1134
  br label %1167

1147:                                             ; preds = %1134
  %1148 = load ptr, ptr %5, align 8, !tbaa !5
  %1149 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1148, i32 0, i32 20
  %1150 = load i64, ptr %1149, align 8, !tbaa !56
  %1151 = icmp eq i64 %1150, 4
  br i1 %1151, label %1152, label %1162

1152:                                             ; preds = %1147
  %1153 = load ptr, ptr %5, align 8, !tbaa !5
  %1154 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1153, i32 0, i32 70
  %1155 = load i64, ptr %1154, align 8, !tbaa !57
  %1156 = load ptr, ptr %5, align 8, !tbaa !5
  %1157 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1156, i32 0, i32 23
  %1158 = load i64, ptr %1157, align 8, !tbaa !58
  %1159 = add nsw i64 %1155, %1158
  %1160 = load ptr, ptr %5, align 8, !tbaa !5
  %1161 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1160, i32 0, i32 70
  store i64 %1159, ptr %1161, align 8, !tbaa !57
  br label %1162

1162:                                             ; preds = %1152, %1147
  %1163 = load ptr, ptr %5, align 8, !tbaa !5
  %1164 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1163, i32 0, i32 26
  %1165 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1164, i32 0, i32 0
  store i32 4, ptr %1165, align 8, !tbaa !11
  br label %1452

1166:                                             ; preds = %166
  br label %1134

1167:                                             ; preds = %1146
  %1168 = load ptr, ptr %5, align 8, !tbaa !5
  %1169 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1168, i32 0, i32 68
  %1170 = load i64, ptr %1169, align 8, !tbaa !59
  %1171 = icmp ne i64 %1170, 0
  br i1 %1171, label %1172, label %1173

1172:                                             ; preds = %1167
  br label %1402

1173:                                             ; preds = %1167
  br label %1398

1174:                                             ; preds = %937
  %1175 = load ptr, ptr %5, align 8, !tbaa !5
  %1176 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1175, i32 0, i32 29
  %1177 = load i8, ptr %1176, align 8, !tbaa !47, !range !41, !noundef !42
  %1178 = trunc i8 %1177 to i1
  br i1 %1178, label %1179, label %1180

1179:                                             ; preds = %1174
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1368)
  br label %1180

1180:                                             ; preds = %1179, %1174
  %1181 = load double, ptr @_ZN11alglib_implL17dfgenmod_gammadecE, align 8, !tbaa !43
  %1182 = load double, ptr %17, align 8, !tbaa !43
  %1183 = load ptr, ptr %7, align 8, !tbaa !5
  %1184 = call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %1181, double noundef %1182, ptr noundef %1183)
  %1185 = load ptr, ptr %5, align 8, !tbaa !5
  %1186 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1185, i32 0, i32 32
  %1187 = load double, ptr %1186, align 8, !tbaa !51
  %1188 = fmul double %1184, %1187
  store double %1188, ptr %18, align 8, !tbaa !43
  %1189 = load double, ptr %18, align 8, !tbaa !43
  %1190 = load ptr, ptr %5, align 8, !tbaa !5
  %1191 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1190, i32 0, i32 33
  %1192 = load double, ptr %1191, align 8, !tbaa !53
  %1193 = fmul double 1.500000e+00, %1192
  %1194 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %1189, double noundef %1193)
  br i1 %1194, label %1195, label %1199

1195:                                             ; preds = %1180
  %1196 = load ptr, ptr %5, align 8, !tbaa !5
  %1197 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1196, i32 0, i32 33
  %1198 = load double, ptr %1197, align 8, !tbaa !53
  store double %1198, ptr %18, align 8, !tbaa !43
  br label %1199

1199:                                             ; preds = %1195, %1180
  %1200 = load ptr, ptr %5, align 8, !tbaa !5
  %1201 = load double, ptr %18, align 8, !tbaa !43
  %1202 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_implL26dfgenmod_updatetrustregionEPNS_9dfgmstateEdPNS_8ae_stateE(ptr noundef %1200, double noundef %1201, ptr noundef %1202)
  %1203 = load ptr, ptr %5, align 8, !tbaa !5
  %1204 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_implL30dfgenmod_sendstepdenialtomodelEPNS_9dfgmstateEPNS_8ae_stateE(ptr noundef %1203, ptr noundef %1204)
  %1205 = load ptr, ptr %5, align 8, !tbaa !5
  %1206 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1205, i32 0, i32 29
  %1207 = load i8, ptr %1206, align 8, !tbaa !47, !range !41, !noundef !42
  %1208 = trunc i8 %1207 to i1
  br i1 %1208, label %1209, label %1210

1209:                                             ; preds = %1199
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1367)
  br label %1210

1210:                                             ; preds = %1209, %1199
  %1211 = load ptr, ptr %5, align 8, !tbaa !5
  %1212 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1211, i32 0, i32 28
  %1213 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1212, i32 0, i32 1
  %1214 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %1213, i64 noundef 7, ptr noundef %1214)
  %1215 = load ptr, ptr %5, align 8, !tbaa !5
  %1216 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1215, i32 0, i32 28
  %1217 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1216, i32 0, i32 3
  %1218 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %1217, i64 noundef 3, ptr noundef %1218)
  %1219 = load ptr, ptr %5, align 8, !tbaa !5
  %1220 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1219, i32 0, i32 28
  %1221 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1220, i32 0, i32 0
  store i32 -1, ptr %1221, align 8, !tbaa !79
  br label %1222

1222:                                             ; preds = %1254, %1210
  %1223 = load ptr, ptr %5, align 8, !tbaa !5
  %1224 = load ptr, ptr %5, align 8, !tbaa !5
  %1225 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1224, i32 0, i32 38
  %1226 = load ptr, ptr %5, align 8, !tbaa !5
  %1227 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1226, i32 0, i32 40
  %1228 = load ptr, ptr %5, align 8, !tbaa !5
  %1229 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1228, i32 0, i32 42
  %1230 = load double, ptr %15, align 8, !tbaa !43
  %1231 = load double, ptr %16, align 8, !tbaa !43
  %1232 = load ptr, ptr %7, align 8, !tbaa !5
  %1233 = call noundef zeroext i1 @_ZN11alglib_implL33dfgenmod_updateworkingsetandmodelEPNS_9dfgmstateEPKNS_9ae_vectorES4_S4_ddbPNS_8ae_stateE(ptr noundef %1223, ptr noundef %1225, ptr noundef %1227, ptr noundef %1229, double noundef %1230, double noundef %1231, i1 noundef zeroext false, ptr noundef %1232)
  br i1 %1233, label %1235, label %1234

1234:                                             ; preds = %1222
  br label %1255

1235:                                             ; preds = %1222
  %1236 = load ptr, ptr %5, align 8, !tbaa !5
  %1237 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1236, i32 0, i32 20
  %1238 = load i64, ptr %1237, align 8, !tbaa !56
  %1239 = icmp eq i64 %1238, 4
  br i1 %1239, label %1240, label %1250

1240:                                             ; preds = %1235
  %1241 = load ptr, ptr %5, align 8, !tbaa !5
  %1242 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1241, i32 0, i32 70
  %1243 = load i64, ptr %1242, align 8, !tbaa !57
  %1244 = load ptr, ptr %5, align 8, !tbaa !5
  %1245 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1244, i32 0, i32 23
  %1246 = load i64, ptr %1245, align 8, !tbaa !58
  %1247 = add nsw i64 %1243, %1246
  %1248 = load ptr, ptr %5, align 8, !tbaa !5
  %1249 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1248, i32 0, i32 70
  store i64 %1247, ptr %1249, align 8, !tbaa !57
  br label %1250

1250:                                             ; preds = %1240, %1235
  %1251 = load ptr, ptr %5, align 8, !tbaa !5
  %1252 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1251, i32 0, i32 26
  %1253 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1252, i32 0, i32 0
  store i32 5, ptr %1253, align 8, !tbaa !11
  br label %1452

1254:                                             ; preds = %173
  br label %1222

1255:                                             ; preds = %1234
  %1256 = load ptr, ptr %5, align 8, !tbaa !5
  %1257 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1256, i32 0, i32 68
  %1258 = load i64, ptr %1257, align 8, !tbaa !59
  %1259 = icmp ne i64 %1258, 0
  br i1 %1259, label %1260, label %1261

1260:                                             ; preds = %1255
  br label %1402

1261:                                             ; preds = %1255
  %1262 = load ptr, ptr %5, align 8, !tbaa !5
  %1263 = load ptr, ptr %7, align 8, !tbaa !5
  %1264 = call noundef zeroext i1 @_ZN11alglib_implL28dfgenmod_restartautodetectedEPKNS_9dfgmstateEPNS_8ae_stateE(ptr noundef %1262, ptr noundef %1263)
  br i1 %1264, label %1265, label %1270

1265:                                             ; preds = %1261
  %1266 = load ptr, ptr %5, align 8, !tbaa !5
  %1267 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1266, i32 0, i32 52
  %1268 = load i64, ptr %1267, align 8, !tbaa !72
  %1269 = icmp sgt i64 %1268, 0
  br i1 %1269, label %1271, label %1270

1270:                                             ; preds = %1265, %1261
  br label %1312

1271:                                             ; preds = %1265
  %1272 = load ptr, ptr %5, align 8, !tbaa !5
  %1273 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1272, i32 0, i32 29
  %1274 = load i8, ptr %1273, align 8, !tbaa !47, !range !41, !noundef !42
  %1275 = trunc i8 %1274 to i1
  br i1 %1275, label %1276, label %1277

1276:                                             ; preds = %1271
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1369)
  br label %1277

1277:                                             ; preds = %1276, %1271
  %1278 = load ptr, ptr %5, align 8, !tbaa !5
  %1279 = load ptr, ptr %5, align 8, !tbaa !5
  %1280 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1279, i32 0, i32 6
  %1281 = load double, ptr %1280, align 8, !tbaa !52
  %1282 = load ptr, ptr %7, align 8, !tbaa !5
  %1283 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %1281, double noundef 1.000000e-01, ptr noundef %1282)
  %1284 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_implL26dfgenmod_updatetrustregionEPNS_9dfgmstateEdPNS_8ae_stateE(ptr noundef %1278, double noundef %1283, ptr noundef %1284)
  %1285 = load ptr, ptr %5, align 8, !tbaa !5
  %1286 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1285, i32 0, i32 32
  %1287 = load double, ptr %1286, align 8, !tbaa !51
  %1288 = load ptr, ptr %5, align 8, !tbaa !5
  %1289 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1288, i32 0, i32 33
  store double %1287, ptr %1289, align 8, !tbaa !53
  %1290 = load ptr, ptr %5, align 8, !tbaa !5
  %1291 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1290, i32 0, i32 46
  store i64 0, ptr %1291, align 8, !tbaa !54
  %1292 = load ptr, ptr %5, align 8, !tbaa !5
  %1293 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1292, i32 0, i32 58
  store i64 0, ptr %1293, align 8, !tbaa !73
  %1294 = load ptr, ptr %5, align 8, !tbaa !5
  %1295 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1294, i32 0, i32 59
  store i64 0, ptr %1295, align 8, !tbaa !74
  %1296 = load ptr, ptr %5, align 8, !tbaa !5
  %1297 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1296, i32 0, i32 52
  %1298 = load i64, ptr %1297, align 8, !tbaa !72
  %1299 = sub nsw i64 %1298, 1
  %1300 = load ptr, ptr %5, align 8, !tbaa !5
  %1301 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1300, i32 0, i32 52
  store i64 %1299, ptr %1301, align 8, !tbaa !72
  %1302 = load ptr, ptr %5, align 8, !tbaa !5
  %1303 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1302, i32 0, i32 29
  %1304 = load i8, ptr %1303, align 8, !tbaa !47, !range !41, !noundef !42
  %1305 = trunc i8 %1304 to i1
  br i1 %1305, label %1306, label %1311

1306:                                             ; preds = %1277
  %1307 = load ptr, ptr %5, align 8, !tbaa !5
  %1308 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1307, i32 0, i32 52
  %1309 = load i64, ptr %1308, align 8, !tbaa !72
  %1310 = trunc i64 %1309 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1370, i32 noundef %1310)
  br label %1311

1311:                                             ; preds = %1306, %1277
  br label %1397

1312:                                             ; preds = %1270
  %1313 = load ptr, ptr %5, align 8, !tbaa !5
  %1314 = load ptr, ptr %7, align 8, !tbaa !5
  %1315 = call noundef zeroext i1 @_ZN11alglib_implL35dfgenmod_workingsetneedsimprovementEPNS_9dfgmstateEPNS_8ae_stateE(ptr noundef %1313, ptr noundef %1314)
  br i1 %1315, label %1317, label %1316

1316:                                             ; preds = %1312
  br label %1371

1317:                                             ; preds = %1312
  %1318 = load ptr, ptr %5, align 8, !tbaa !5
  %1319 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1318, i32 0, i32 29
  %1320 = load i8, ptr %1319, align 8, !tbaa !47, !range !41, !noundef !42
  %1321 = trunc i8 %1320 to i1
  br i1 %1321, label %1322, label %1323

1322:                                             ; preds = %1317
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1371)
  br label %1323

1323:                                             ; preds = %1322, %1317
  %1324 = load ptr, ptr %5, align 8, !tbaa !5
  %1325 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1324, i32 0, i32 27
  %1326 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1325, i32 0, i32 1
  %1327 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %1326, i64 noundef 10, ptr noundef %1327)
  %1328 = load ptr, ptr %5, align 8, !tbaa !5
  %1329 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1328, i32 0, i32 27
  %1330 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1329, i32 0, i32 2
  %1331 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %1330, i64 noundef 1, ptr noundef %1331)
  %1332 = load ptr, ptr %5, align 8, !tbaa !5
  %1333 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1332, i32 0, i32 27
  %1334 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1333, i32 0, i32 3
  %1335 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %1334, i64 noundef 9, ptr noundef %1335)
  %1336 = load ptr, ptr %5, align 8, !tbaa !5
  %1337 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1336, i32 0, i32 27
  %1338 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1337, i32 0, i32 0
  store i32 -1, ptr %1338, align 8, !tbaa !55
  br label %1339

1339:                                             ; preds = %1363, %1323
  %1340 = load ptr, ptr %5, align 8, !tbaa !5
  %1341 = load ptr, ptr %7, align 8, !tbaa !5
  %1342 = call noundef zeroext i1 @_ZN11alglib_implL34dfgenmod_improveworkingsetgeometryEPNS_9dfgmstateEPNS_8ae_stateE(ptr noundef %1340, ptr noundef %1341)
  br i1 %1342, label %1344, label %1343

1343:                                             ; preds = %1339
  br label %1364

1344:                                             ; preds = %1339
  %1345 = load ptr, ptr %5, align 8, !tbaa !5
  %1346 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1345, i32 0, i32 20
  %1347 = load i64, ptr %1346, align 8, !tbaa !56
  %1348 = icmp eq i64 %1347, 4
  br i1 %1348, label %1349, label %1359

1349:                                             ; preds = %1344
  %1350 = load ptr, ptr %5, align 8, !tbaa !5
  %1351 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1350, i32 0, i32 70
  %1352 = load i64, ptr %1351, align 8, !tbaa !57
  %1353 = load ptr, ptr %5, align 8, !tbaa !5
  %1354 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1353, i32 0, i32 23
  %1355 = load i64, ptr %1354, align 8, !tbaa !58
  %1356 = add nsw i64 %1352, %1355
  %1357 = load ptr, ptr %5, align 8, !tbaa !5
  %1358 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1357, i32 0, i32 70
  store i64 %1356, ptr %1358, align 8, !tbaa !57
  br label %1359

1359:                                             ; preds = %1349, %1344
  %1360 = load ptr, ptr %5, align 8, !tbaa !5
  %1361 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1360, i32 0, i32 26
  %1362 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1361, i32 0, i32 0
  store i32 6, ptr %1362, align 8, !tbaa !11
  br label %1452

1363:                                             ; preds = %180
  br label %1339

1364:                                             ; preds = %1343
  %1365 = load ptr, ptr %5, align 8, !tbaa !5
  %1366 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1365, i32 0, i32 68
  %1367 = load i64, ptr %1366, align 8, !tbaa !59
  %1368 = icmp ne i64 %1367, 0
  br i1 %1368, label %1369, label %1370

1369:                                             ; preds = %1364
  br label %1402

1370:                                             ; preds = %1364
  br label %1396

1371:                                             ; preds = %1316
  %1372 = load ptr, ptr %5, align 8, !tbaa !5
  %1373 = load ptr, ptr %7, align 8, !tbaa !5
  %1374 = call noundef zeroext i1 @_ZN11alglib_implL24dfgenmod_deltakatminimumEPKNS_9dfgmstateEPNS_8ae_stateE(ptr noundef %1372, ptr noundef %1373)
  br i1 %1374, label %1375, label %1395

1375:                                             ; preds = %1371
  %1376 = load ptr, ptr %5, align 8, !tbaa !5
  %1377 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1376, i32 0, i32 29
  %1378 = load i8, ptr %1377, align 8, !tbaa !47, !range !41, !noundef !42
  %1379 = trunc i8 %1378 to i1
  br i1 %1379, label %1380, label %1381

1380:                                             ; preds = %1375
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1372)
  br label %1381

1381:                                             ; preds = %1380, %1375
  %1382 = load ptr, ptr %5, align 8, !tbaa !5
  %1383 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1382, i32 0, i32 33
  %1384 = load double, ptr %1383, align 8, !tbaa !53
  store double %1384, ptr %18, align 8, !tbaa !43
  %1385 = load ptr, ptr %5, align 8, !tbaa !5
  %1386 = load double, ptr @_ZN11alglib_implL15dfgenmod_alpha2E, align 8, !tbaa !43
  %1387 = load double, ptr %18, align 8, !tbaa !43
  %1388 = fmul double %1386, %1387
  %1389 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_implL26dfgenmod_updatetrustregionEPNS_9dfgmstateEdPNS_8ae_stateE(ptr noundef %1385, double noundef %1388, ptr noundef %1389)
  %1390 = load double, ptr @_ZN11alglib_implL15dfgenmod_alpha1E, align 8, !tbaa !43
  %1391 = load double, ptr %18, align 8, !tbaa !43
  %1392 = fmul double %1390, %1391
  %1393 = load ptr, ptr %5, align 8, !tbaa !5
  %1394 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1393, i32 0, i32 33
  store double %1392, ptr %1394, align 8, !tbaa !53
  br label %1395

1395:                                             ; preds = %1381, %1371
  br label %1396

1396:                                             ; preds = %1395, %1370
  br label %1397

1397:                                             ; preds = %1396, %1311
  br label %1398

1398:                                             ; preds = %1397, %1173
  %1399 = load ptr, ptr %5, align 8, !tbaa !5
  %1400 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1399, i32 0, i32 69
  %1401 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %1400, ptr noundef %1401)
  br label %255

1402:                                             ; preds = %1369, %1260, %1172, %833, %555, %545, %463, %312
  %1403 = load ptr, ptr %5, align 8, !tbaa !5
  %1404 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1403, i32 0, i32 68
  %1405 = load i64, ptr %1404, align 8, !tbaa !59
  %1406 = icmp ne i64 %1405, 0
  %1407 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1406, ptr noundef @.str.1373, ptr noundef %1407)
  %1408 = load ptr, ptr %5, align 8, !tbaa !5
  %1409 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1408, i32 0, i32 68
  %1410 = load i64, ptr %1409, align 8, !tbaa !59
  %1411 = icmp slt i64 %1410, 0
  br i1 %1411, label %1412, label %1415

1412:                                             ; preds = %1402
  store i8 0, ptr %22, align 1, !tbaa !9
  %1413 = load i8, ptr %22, align 1, !tbaa !9, !range !41, !noundef !42
  %1414 = trunc i8 %1413 to i1
  store i1 %1414, ptr %4, align 1
  store i32 1, ptr %23, align 4
  br label %1555

1415:                                             ; preds = %1402
  %1416 = load ptr, ptr %5, align 8, !tbaa !5
  %1417 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1416, i32 0, i32 50
  %1418 = load i8, ptr %1417, align 8, !tbaa !49, !range !41, !noundef !42
  %1419 = trunc i8 %1418 to i1
  br i1 %1419, label %1420, label %1449

1420:                                             ; preds = %1415
  %1421 = load ptr, ptr %5, align 8, !tbaa !5
  %1422 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1421, i32 0, i32 51
  %1423 = load i8, ptr %1422, align 1, !tbaa !50, !range !41, !noundef !42
  %1424 = trunc i8 %1423 to i1
  br i1 %1424, label %1436, label %1425

1425:                                             ; preds = %1420
  %1426 = load ptr, ptr %5, align 8, !tbaa !5
  %1427 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1426, i32 0, i32 29
  %1428 = load i8, ptr %1427, align 8, !tbaa !47, !range !41, !noundef !42
  %1429 = trunc i8 %1428 to i1
  br i1 %1429, label %1430, label %1431

1430:                                             ; preds = %1425
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1374)
  br label %1431

1431:                                             ; preds = %1430, %1425
  %1432 = load ptr, ptr %5, align 8, !tbaa !5
  %1433 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1432, i32 0, i32 68
  store i64 -8, ptr %1433, align 8, !tbaa !59
  store i8 0, ptr %22, align 1, !tbaa !9
  %1434 = load i8, ptr %22, align 1, !tbaa !9, !range !41, !noundef !42
  %1435 = trunc i8 %1434 to i1
  store i1 %1435, ptr %4, align 1
  store i32 1, ptr %23, align 4
  br label %1555

1436:                                             ; preds = %1420
  %1437 = load ptr, ptr %5, align 8, !tbaa !5
  %1438 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1437, i32 0, i32 29
  %1439 = load i8, ptr %1438, align 8, !tbaa !47, !range !41, !noundef !42
  %1440 = trunc i8 %1439 to i1
  br i1 %1440, label %1441, label %1442

1441:                                             ; preds = %1436
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1375)
  br label %1442

1442:                                             ; preds = %1441, %1436
  %1443 = load ptr, ptr %5, align 8, !tbaa !5
  %1444 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1443, i32 0, i32 68
  %1445 = load i64, ptr %1444, align 8, !tbaa !59
  %1446 = add nsw i64 %1445, 800
  %1447 = load ptr, ptr %5, align 8, !tbaa !5
  %1448 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1447, i32 0, i32 68
  store i64 %1446, ptr %1448, align 8, !tbaa !59
  br label %1449

1449:                                             ; preds = %1442, %1415
  store i8 0, ptr %22, align 1, !tbaa !9
  %1450 = load i8, ptr %22, align 1, !tbaa !9, !range !41, !noundef !42
  %1451 = trunc i8 %1450 to i1
  store i1 %1451, ptr %4, align 1
  store i32 1, ptr %23, align 4
  br label %1555

1452:                                             ; preds = %1359, %1250, %1162, %853, %823, %424, %297
  store i8 1, ptr %22, align 1, !tbaa !9
  %1453 = load i64, ptr %8, align 8, !tbaa !40
  %1454 = load ptr, ptr %5, align 8, !tbaa !5
  %1455 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1454, i32 0, i32 26
  %1456 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1455, i32 0, i32 1
  %1457 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1456, i32 0, i32 4
  %1458 = load ptr, ptr %1457, align 8, !tbaa !39
  %1459 = getelementptr inbounds i64, ptr %1458, i64 0
  store i64 %1453, ptr %1459, align 8, !tbaa !40
  %1460 = load i64, ptr %9, align 8, !tbaa !40
  %1461 = load ptr, ptr %5, align 8, !tbaa !5
  %1462 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1461, i32 0, i32 26
  %1463 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1462, i32 0, i32 1
  %1464 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1463, i32 0, i32 4
  %1465 = load ptr, ptr %1464, align 8, !tbaa !39
  %1466 = getelementptr inbounds i64, ptr %1465, i64 1
  store i64 %1460, ptr %1466, align 8, !tbaa !40
  %1467 = load i64, ptr %10, align 8, !tbaa !40
  %1468 = load ptr, ptr %5, align 8, !tbaa !5
  %1469 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1468, i32 0, i32 26
  %1470 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1469, i32 0, i32 1
  %1471 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1470, i32 0, i32 4
  %1472 = load ptr, ptr %1471, align 8, !tbaa !39
  %1473 = getelementptr inbounds i64, ptr %1472, i64 2
  store i64 %1467, ptr %1473, align 8, !tbaa !40
  %1474 = load i64, ptr %11, align 8, !tbaa !40
  %1475 = load ptr, ptr %5, align 8, !tbaa !5
  %1476 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1475, i32 0, i32 26
  %1477 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1476, i32 0, i32 1
  %1478 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1477, i32 0, i32 4
  %1479 = load ptr, ptr %1478, align 8, !tbaa !39
  %1480 = getelementptr inbounds i64, ptr %1479, i64 3
  store i64 %1474, ptr %1480, align 8, !tbaa !40
  %1481 = load i64, ptr %12, align 8, !tbaa !40
  %1482 = load ptr, ptr %5, align 8, !tbaa !5
  %1483 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1482, i32 0, i32 26
  %1484 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1483, i32 0, i32 1
  %1485 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1484, i32 0, i32 4
  %1486 = load ptr, ptr %1485, align 8, !tbaa !39
  %1487 = getelementptr inbounds i64, ptr %1486, i64 4
  store i64 %1481, ptr %1487, align 8, !tbaa !40
  %1488 = load i8, ptr %21, align 1, !tbaa !9, !range !41, !noundef !42
  %1489 = trunc i8 %1488 to i1
  %1490 = load ptr, ptr %5, align 8, !tbaa !5
  %1491 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1490, i32 0, i32 26
  %1492 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1491, i32 0, i32 2
  %1493 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1492, i32 0, i32 4
  %1494 = load ptr, ptr %1493, align 8, !tbaa !39
  %1495 = getelementptr inbounds i8, ptr %1494, i64 0
  %1496 = zext i1 %1489 to i8
  store i8 %1496, ptr %1495, align 1, !tbaa !9
  %1497 = load double, ptr %13, align 8, !tbaa !43
  %1498 = load ptr, ptr %5, align 8, !tbaa !5
  %1499 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1498, i32 0, i32 26
  %1500 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1499, i32 0, i32 3
  %1501 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1500, i32 0, i32 4
  %1502 = load ptr, ptr %1501, align 8, !tbaa !39
  %1503 = getelementptr inbounds double, ptr %1502, i64 0
  store double %1497, ptr %1503, align 8, !tbaa !43
  %1504 = load double, ptr %14, align 8, !tbaa !43
  %1505 = load ptr, ptr %5, align 8, !tbaa !5
  %1506 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1505, i32 0, i32 26
  %1507 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1506, i32 0, i32 3
  %1508 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1507, i32 0, i32 4
  %1509 = load ptr, ptr %1508, align 8, !tbaa !39
  %1510 = getelementptr inbounds double, ptr %1509, i64 1
  store double %1504, ptr %1510, align 8, !tbaa !43
  %1511 = load double, ptr %15, align 8, !tbaa !43
  %1512 = load ptr, ptr %5, align 8, !tbaa !5
  %1513 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1512, i32 0, i32 26
  %1514 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1513, i32 0, i32 3
  %1515 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1514, i32 0, i32 4
  %1516 = load ptr, ptr %1515, align 8, !tbaa !39
  %1517 = getelementptr inbounds double, ptr %1516, i64 2
  store double %1511, ptr %1517, align 8, !tbaa !43
  %1518 = load double, ptr %16, align 8, !tbaa !43
  %1519 = load ptr, ptr %5, align 8, !tbaa !5
  %1520 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1519, i32 0, i32 26
  %1521 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1520, i32 0, i32 3
  %1522 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1521, i32 0, i32 4
  %1523 = load ptr, ptr %1522, align 8, !tbaa !39
  %1524 = getelementptr inbounds double, ptr %1523, i64 3
  store double %1518, ptr %1524, align 8, !tbaa !43
  %1525 = load double, ptr %17, align 8, !tbaa !43
  %1526 = load ptr, ptr %5, align 8, !tbaa !5
  %1527 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1526, i32 0, i32 26
  %1528 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1527, i32 0, i32 3
  %1529 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1528, i32 0, i32 4
  %1530 = load ptr, ptr %1529, align 8, !tbaa !39
  %1531 = getelementptr inbounds double, ptr %1530, i64 4
  store double %1525, ptr %1531, align 8, !tbaa !43
  %1532 = load double, ptr %18, align 8, !tbaa !43
  %1533 = load ptr, ptr %5, align 8, !tbaa !5
  %1534 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1533, i32 0, i32 26
  %1535 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1534, i32 0, i32 3
  %1536 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1535, i32 0, i32 4
  %1537 = load ptr, ptr %1536, align 8, !tbaa !39
  %1538 = getelementptr inbounds double, ptr %1537, i64 5
  store double %1532, ptr %1538, align 8, !tbaa !43
  %1539 = load double, ptr %19, align 8, !tbaa !43
  %1540 = load ptr, ptr %5, align 8, !tbaa !5
  %1541 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1540, i32 0, i32 26
  %1542 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1541, i32 0, i32 3
  %1543 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1542, i32 0, i32 4
  %1544 = load ptr, ptr %1543, align 8, !tbaa !39
  %1545 = getelementptr inbounds double, ptr %1544, i64 6
  store double %1539, ptr %1545, align 8, !tbaa !43
  %1546 = load double, ptr %20, align 8, !tbaa !43
  %1547 = load ptr, ptr %5, align 8, !tbaa !5
  %1548 = getelementptr inbounds %"struct.alglib_impl::dfgmstate", ptr %1547, i32 0, i32 26
  %1549 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1548, i32 0, i32 3
  %1550 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1549, i32 0, i32 4
  %1551 = load ptr, ptr %1550, align 8, !tbaa !39
  %1552 = getelementptr inbounds double, ptr %1551, i64 7
  store double %1546, ptr %1552, align 8, !tbaa !43
  %1553 = load i8, ptr %22, align 1, !tbaa !9, !range !41, !noundef !42
  %1554 = trunc i8 %1553 to i1
  store i1 %1554, ptr %4, align 1
  store i32 1, ptr %23, align 4
  br label %1555

1555:                                             ; preds = %1452, %1449, %1431, %1412
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #5
  %1556 = load i1, ptr %4, align 1
  ret i1 %1556
}

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef double @_ZN11alglib_implL34dfgenmod_normrelativetotrustregionEPKNS_9dfgmstateEPKNS_9ae_vectorEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) #3

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN11alglib_implL28dfgenmod_restartautodetectedEPKNS_9dfgmstateEPNS_8ae_stateE(ptr noundef, ptr noundef) #4

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{!12, !18, i64 824}
!12 = !{!"_ZTSN11alglib_impl9dfgmstateE", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !10, i64 32, !13, i64 40, !14, i64 48, !13, i64 56, !15, i64 64, !15, i64 128, !15, i64 192, !15, i64 256, !15, i64 320, !15, i64 384, !15, i64 448, !15, i64 512, !14, i64 576, !13, i64 584, !13, i64 592, !14, i64 600, !13, i64 608, !15, i64 616, !14, i64 680, !13, i64 688, !15, i64 696, !15, i64 760, !17, i64 824, !17, i64 1088, !17, i64 1352, !10, i64 1616, !15, i64 1624, !15, i64 1688, !14, i64 1752, !14, i64 1760, !15, i64 1768, !15, i64 1832, !14, i64 1896, !14, i64 1904, !15, i64 1912, !15, i64 1976, !15, i64 2040, !15, i64 2104, !15, i64 2168, !14, i64 2232, !14, i64 2240, !19, i64 2248, !13, i64 2328, !20, i64 2336, !21, i64 2360, !22, i64 2648, !10, i64 3176, !10, i64 3177, !13, i64 3184, !14, i64 3192, !19, i64 3200, !15, i64 3280, !15, i64 3344, !15, i64 3408, !13, i64 3472, !13, i64 3480, !15, i64 3488, !15, i64 3552, !15, i64 3616, !15, i64 3680, !23, i64 3744, !19, i64 30392, !24, i64 30472, !38, i64 30840, !13, i64 30864, !13, i64 30872, !13, i64 30880}
!13 = !{!"long", !7, i64 0}
!14 = !{!"double", !7, i64 0}
!15 = !{!"_ZTSN11alglib_impl9ae_vectorE", !13, i64 0, !13, i64 8, !10, i64 16, !16, i64 24, !7, i64 56}
!16 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!17 = !{!"_ZTSN11alglib_impl10rcommstateE", !18, i64 0, !15, i64 8, !15, i64 72, !15, i64 136, !15, i64 200}
!18 = !{!"int", !7, i64 0}
!19 = !{!"_ZTSN11alglib_impl9ae_matrixE", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !10, i64 32, !16, i64 40, !7, i64 72}
!20 = !{!"_ZTSN11alglib_impl10hqrndstateE", !13, i64 0, !13, i64 8, !13, i64 16}
!21 = !{!"_ZTSN11alglib_impl10df2psmodelE", !15, i64 0, !19, i64 64, !15, i64 144, !19, i64 208}
!22 = !{!"_ZTSN11alglib_impl11dfolsamodelE", !19, i64 0, !19, i64 80, !19, i64 160, !15, i64 240, !19, i64 304, !15, i64 384, !19, i64 448}
!23 = !{!"_ZTSN11alglib_impl9vipmstateE", !10, i64 0, !10, i64 1, !13, i64 8, !13, i64 16, !14, i64 24, !14, i64 32, !14, i64 40, !10, i64 48, !15, i64 56, !15, i64 120, !15, i64 184, !14, i64 248, !15, i64 256, !19, i64 320, !24, i64 400, !15, i64 768, !13, i64 832, !10, i64 840, !15, i64 848, !15, i64 912, !15, i64 976, !15, i64 1040, !15, i64 1104, !15, i64 1168, !19, i64 1232, !19, i64 1312, !24, i64 1392, !24, i64 1760, !24, i64 2128, !15, i64 2496, !15, i64 2560, !15, i64 2624, !15, i64 2688, !15, i64 2752, !13, i64 2816, !13, i64 2824, !25, i64 2832, !25, i64 3488, !25, i64 4144, !25, i64 4800, !25, i64 5456, !15, i64 6112, !15, i64 6176, !15, i64 6240, !15, i64 6304, !15, i64 6368, !13, i64 6432, !13, i64 6440, !13, i64 6448, !13, i64 6456, !13, i64 6464, !13, i64 6472, !10, i64 6480, !10, i64 6481, !13, i64 6488, !10, i64 6496, !10, i64 6497, !15, i64 6504, !15, i64 6568, !15, i64 6632, !15, i64 6696, !15, i64 6760, !15, i64 6824, !15, i64 6888, !15, i64 6952, !15, i64 7016, !15, i64 7080, !15, i64 7144, !15, i64 7208, !15, i64 7272, !15, i64 7336, !15, i64 7400, !19, i64 7464, !15, i64 7544, !15, i64 7608, !15, i64 7672, !15, i64 7736, !15, i64 7800, !26, i64 7864, !37, i64 23944, !15, i64 24584, !15, i64 24648, !15, i64 24712, !15, i64 24776, !15, i64 24840, !15, i64 24904, !15, i64 24968, !15, i64 25032, !25, i64 25096, !15, i64 25752, !15, i64 25816, !15, i64 25880, !15, i64 25944, !15, i64 26008, !19, i64 26072, !15, i64 26152, !15, i64 26216, !24, i64 26280}
!24 = !{!"_ZTSN11alglib_impl12sparsematrixE", !15, i64 0, !15, i64 64, !15, i64 128, !15, i64 192, !15, i64 256, !13, i64 320, !13, i64 328, !13, i64 336, !13, i64 344, !13, i64 352, !13, i64 360}
!25 = !{!"_ZTSN11alglib_impl8vipmvarsE", !13, i64 0, !13, i64 8, !15, i64 16, !15, i64 80, !15, i64 144, !15, i64 208, !15, i64 272, !15, i64 336, !15, i64 400, !15, i64 464, !15, i64 528, !15, i64 592}
!26 = !{!"_ZTSN11alglib_impl23vipmreducedsparsesystemE", !24, i64 0, !15, i64 368, !15, i64 432, !15, i64 496, !15, i64 560, !13, i64 624, !27, i64 632, !15, i64 15696, !15, i64 15760, !15, i64 15824, !15, i64 15888, !15, i64 15952, !15, i64 16016}
!27 = !{!"_ZTSN11alglib_impl14spcholanalysisE", !13, i64 0, !13, i64 8, !13, i64 16, !10, i64 24, !13, i64 32, !14, i64 40, !14, i64 48, !14, i64 56, !14, i64 64, !15, i64 72, !10, i64 136, !10, i64 137, !10, i64 138, !10, i64 139, !10, i64 140, !15, i64 144, !13, i64 208, !15, i64 216, !15, i64 280, !15, i64 344, !15, i64 408, !15, i64 472, !15, i64 536, !10, i64 600, !15, i64 608, !15, i64 672, !15, i64 736, !15, i64 800, !15, i64 864, !15, i64 928, !10, i64 992, !10, i64 993, !28, i64 1000, !15, i64 1512, !15, i64 1576, !15, i64 1640, !15, i64 1704, !15, i64 1768, !15, i64 1832, !29, i64 1896, !29, i64 2040, !29, i64 2184, !29, i64 2328, !29, i64 2472, !29, i64 2616, !15, i64 2760, !15, i64 2824, !15, i64 2888, !15, i64 2952, !15, i64 3016, !31, i64 3080, !36, i64 7464, !15, i64 13816, !15, i64 13880, !15, i64 13944, !15, i64 14008, !15, i64 14072, !15, i64 14136, !24, i64 14200, !24, i64 14568, !15, i64 14936, !15, i64 15000}
!28 = !{!"_ZTSN11alglib_impl9spcholadjE", !15, i64 0, !15, i64 64, !15, i64 128, !15, i64 192, !15, i64 256, !15, i64 320, !15, i64 384, !15, i64 448}
!29 = !{!"_ZTSN11alglib_impl9ae_nxpoolE", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !16, i64 32, !30, i64 64, !16, i64 112}
!30 = !{!"_ZTSN11alglib_impl7ae_lockE", !6, i64 0, !16, i64 8, !10, i64 40}
!31 = !{!"_ZTSN11alglib_impl9amdbufferE", !13, i64 0, !10, i64 8, !10, i64 9, !15, i64 16, !15, i64 80, !15, i64 144, !32, i64 208, !32, i64 568, !32, i64 928, !33, i64 1288, !34, i64 1496, !35, i64 1968, !15, i64 2120, !15, i64 2184, !15, i64 2248, !35, i64 2312, !35, i64 2464, !35, i64 2616, !35, i64 2768, !35, i64 2920, !35, i64 3072, !15, i64 3224, !13, i64 3288, !35, i64 3296, !35, i64 3448, !32, i64 3600, !35, i64 3960, !15, i64 4112, !15, i64 4176, !15, i64 4240, !19, i64 4304}
!32 = !{!"_ZTSN11alglib_impl8amdknsetE", !13, i64 0, !13, i64 8, !15, i64 16, !15, i64 80, !15, i64 144, !15, i64 208, !15, i64 272, !13, i64 336, !13, i64 344, !13, i64 352}
!33 = !{!"_ZTSN11alglib_impl11amdllmatrixE", !13, i64 0, !15, i64 8, !15, i64 72, !15, i64 136, !13, i64 200}
!34 = !{!"_ZTSN11alglib_impl12amdvertexsetE", !13, i64 0, !10, i64 8, !13, i64 16, !15, i64 24, !15, i64 88, !15, i64 152, !15, i64 216, !15, i64 280, !15, i64 344, !15, i64 408}
!35 = !{!"_ZTSN11alglib_impl5nisetE", !13, i64 0, !13, i64 8, !15, i64 16, !15, i64 80, !13, i64 144}
!36 = !{!"_ZTSN11alglib_impl18priorityamdbuffersE", !15, i64 0, !15, i64 64, !31, i64 128, !24, i64 4512, !24, i64 4880, !24, i64 5248, !24, i64 5616, !24, i64 5984}
!37 = !{!"_ZTSN11alglib_impl17vipmrighthandsideE", !15, i64 0, !15, i64 64, !15, i64 128, !15, i64 192, !15, i64 256, !15, i64 320, !15, i64 384, !15, i64 448, !15, i64 512, !15, i64 576}
!38 = !{!"_ZTSN11alglib_impl12matinvreportE", !13, i64 0, !14, i64 8, !14, i64 16}
!39 = !{!7, !7, i64 0}
!40 = !{!13, !13, i64 0}
!41 = !{i8 0, i8 2}
!42 = !{}
!43 = !{!14, !14, i64 0}
!44 = !{!12, !13, i64 0}
!45 = !{!12, !13, i64 8}
!46 = !{!12, !13, i64 24}
!47 = !{!12, !10, i64 1616}
!48 = !{!12, !13, i64 40}
!49 = !{!12, !10, i64 3176}
!50 = !{!12, !10, i64 3177}
!51 = !{!12, !14, i64 1752}
!52 = !{!12, !14, i64 48}
!53 = !{!12, !14, i64 1760}
!54 = !{!12, !13, i64 2328}
!55 = !{!12, !18, i64 1088}
!56 = !{!12, !13, i64 608}
!57 = !{!12, !13, i64 30880}
!58 = !{!12, !13, i64 688}
!59 = !{!12, !13, i64 30864}
!60 = !{!12, !13, i64 16}
!61 = !{!12, !10, i64 32}
!62 = distinct !{!62, !63}
!63 = !{!"llvm.loop.mustprogress"}
!64 = !{!12, !14, i64 2232}
!65 = distinct !{!65, !63}
!66 = !{!12, !14, i64 2240}
!67 = !{!12, !14, i64 680}
!68 = !{!12, !13, i64 584}
!69 = !{!12, !13, i64 30872}
!70 = !{!12, !14, i64 576}
!71 = !{!12, !14, i64 600}
!72 = !{!12, !13, i64 3184}
!73 = !{!12, !13, i64 3472}
!74 = !{!12, !13, i64 3480}
!75 = !{!12, !13, i64 56}
!76 = distinct !{!76, !63}
!77 = !{!12, !14, i64 1896}
!78 = !{!12, !14, i64 1904}
!79 = !{!12, !18, i64 1352}


; 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.208 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.713 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.1137 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.1325 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.1326 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1327 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.1328 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.1329 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.1330 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.1331 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.1332 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.1333 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.1334 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.1335 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.1336 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.1337 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.1338 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.1339 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.1340 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.1341 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.1342 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.1343 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.1344 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.1345 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.1346 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.1347 = external hidden unnamed_addr constant [37 x i8], align 1
@_ZN11alglib_implL19dfgenmod_minhistoryE = external hidden local_unnamed_addr global i64, align 8
@.str.1348 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.1349 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.1350 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.1351 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.1352 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.1353 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.1354 = external hidden unnamed_addr constant [100 x i8], align 1
@_ZN11alglib_implL20dfgenmod_gammasafetyE = external hidden local_unnamed_addr global double, align 8
@.str.1355 = external hidden unnamed_addr constant [62 x i8], align 1
@_ZN11alglib_implL20dfgenmod_omegasafetyE = external hidden local_unnamed_addr global double, align 8
@_ZN11alglib_implL15dfgenmod_alpha2E = external hidden local_unnamed_addr global double, align 8
@_ZN11alglib_implL15dfgenmod_alpha1E = external hidden local_unnamed_addr global double, align 8
@.str.1356 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.1357 = external hidden unnamed_addr constant [99 x i8], align 1
@_ZN11alglib_implL17dfgenmod_gammabadE = external hidden local_unnamed_addr global double, align 8
@.str.1358 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.1359 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.1360 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.1361 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.1362 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.1363 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.1364 = external hidden unnamed_addr constant [34 x i8], align 1
@_ZN11alglib_implL13dfgenmod_eta2E = external hidden local_unnamed_addr global double, align 8
@.str.1365 = external hidden unnamed_addr constant [50 x i8], align 1
@_ZN11alglib_implL17dfgenmod_gammaincE = external hidden local_unnamed_addr global double, align 8
@_ZN11alglib_implL18dfgenmod_gammainc2E = external hidden local_unnamed_addr global double, align 8
@.str.1366 = external hidden unnamed_addr constant [49 x i8], align 1
@_ZN11alglib_implL17dfgenmod_gammadecE = external hidden local_unnamed_addr global double, align 8
@.str.1367 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.1368 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.1369 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.1370 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.1371 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.1372 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.1373 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.1374 = external hidden unnamed_addr constant [83 x i8], align 1
@.str.1375 = external hidden unnamed_addr constant [110 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN11alglib_impl13dfgmiterationEPNS_9dfgmstateEbPNS_8ae_stateE(ptr noundef %0, i1 noundef zeroext %1, ptr noundef %2) local_unnamed_addr #3 {
  %4 = alloca i64, align 8
  %5 = alloca i64, align 8
  %6 = alloca double, align 8
  %7 = alloca double, align 8
  %8 = alloca double, align 8
  %9 = alloca double, align 8
  %10 = alloca double, align 8
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #6
  %13 = getelementptr inbounds i8, ptr %0, i64 824
  %14 = load i32, ptr %13, align 8, !tbaa !5
  %15 = icmp sgt i32 %14, -1
  br i1 %15, label %16, label %48

16:                                               ; preds = %3
  %17 = getelementptr inbounds i8, ptr %0, i64 888
  %18 = load ptr, ptr %17, align 8, !tbaa !37
  %19 = load i64, ptr %18, align 8, !tbaa !38
  %20 = getelementptr inbounds i8, ptr %18, i64 8
  %21 = load i64, ptr %20, align 8, !tbaa !38
  %22 = getelementptr inbounds i8, ptr %18, i64 16
  %23 = load i64, ptr %22, align 8, !tbaa !38
  %24 = getelementptr inbounds i8, ptr %18, i64 24
  %25 = load i64, ptr %24, align 8, !tbaa !38
  %26 = getelementptr inbounds i8, ptr %18, i64 32
  %27 = load i64, ptr %26, align 8, !tbaa !38
  %28 = getelementptr inbounds i8, ptr %0, i64 952
  %29 = load ptr, ptr %28, align 8, !tbaa !37
  %30 = load i8, ptr %29, align 1, !tbaa !39, !range !40, !noundef !41
  %31 = getelementptr inbounds i8, ptr %0, i64 1016
  %32 = load ptr, ptr %31, align 8, !tbaa !37
  %33 = load double, ptr %32, align 8, !tbaa !42
  %34 = getelementptr inbounds i8, ptr %32, i64 8
  %35 = load double, ptr %34, align 8, !tbaa !42
  %36 = getelementptr inbounds i8, ptr %32, i64 16
  %37 = load double, ptr %36, align 8, !tbaa !42
  %38 = getelementptr inbounds i8, ptr %32, i64 24
  %39 = load double, ptr %38, align 8, !tbaa !42
  %40 = getelementptr inbounds i8, ptr %32, i64 32
  %41 = load double, ptr %40, align 8, !tbaa !42
  %42 = getelementptr inbounds i8, ptr %32, i64 40
  %43 = load double, ptr %42, align 8, !tbaa !42
  %44 = getelementptr inbounds i8, ptr %32, i64 48
  %45 = load double, ptr %44, align 8, !tbaa !42
  %46 = getelementptr inbounds i8, ptr %32, i64 56
  %47 = load double, ptr %46, align 8, !tbaa !42
  br label %48

48:                                               ; preds = %3, %16
  %.sink499 = phi i64 [ %19, %16 ], [ 359, %3 ]
  %.sink498 = phi i64 [ %21, %16 ], [ -58, %3 ]
  %.sink497 = phi double [ %33, %16 ], [ 7.400000e+01, %3 ]
  %.sink496 = phi double [ %35, %16 ], [ -7.880000e+02, %3 ]
  %.sink495 = phi double [ %37, %16 ], [ 8.090000e+02, %3 ]
  %.sink494 = phi double [ %39, %16 ], [ 2.050000e+02, %3 ]
  %.sink493 = phi double [ %43, %16 ], [ 9.390000e+02, %3 ]
  %.sink = phi double [ %45, %16 ], [ -5.260000e+02, %3 ]
  %storemerge = phi double [ %47, %16 ], [ 7.630000e+02, %3 ]
  %.0454 = phi i64 [ %23, %16 ], [ -919, %3 ]
  %.0449 = phi i64 [ %25, %16 ], [ -909, %3 ]
  %.0444 = phi i64 [ %27, %16 ], [ 81, %3 ]
  %.0438 = phi double [ %41, %16 ], [ -8.380000e+02, %3 ]
  %.0 = phi i8 [ %30, %16 ], [ 1, %3 ]
  store i64 %.sink499, ptr %4, align 8
  store i64 %.sink498, ptr %5, align 8
  store double %.sink497, ptr %6, align 8
  store double %.sink496, ptr %7, align 8
  store double %.sink495, ptr %8, align 8
  store double %.sink494, ptr %9, align 8
  store double %.sink493, ptr %10, align 8
  store double %.sink, ptr %11, align 8
  store double %storemerge, ptr %12, align 8, !tbaa !42
  switch i32 %14, label %49 [
    i32 0, label %91
    i32 1, label %205
    i32 2, label %395
    i32 3, label %422
    i32 4, label %566
    i32 5, label %609
    i32 6, label %667
  ]

49:                                               ; preds = %48
  %50 = load i64, ptr %0, align 8, !tbaa !43
  %51 = getelementptr inbounds i8, ptr %0, i64 8
  %52 = load i64, ptr %51, align 8, !tbaa !44
  %53 = getelementptr inbounds i8, ptr %0, i64 24
  %54 = load i64, ptr %53, align 8, !tbaa !45
  %55 = getelementptr inbounds i8, ptr %0, i64 1616
  %56 = load i8, ptr %55, align 8, !tbaa !46, !range !40, !noundef !41
  %57 = trunc nuw i8 %56 to i1
  br i1 %57, label %58, label %67

58:                                               ; preds = %49
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1325)
  %59 = getelementptr inbounds i8, ptr %0, i64 40
  %60 = load i64, ptr %59, align 8, !tbaa !47
  %61 = icmp eq i64 %60, 0
  br i1 %61, label %62, label %63

62:                                               ; preds = %58
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1326)
  %.pr = load i64, ptr %59, align 8, !tbaa !47
  br label %63

63:                                               ; preds = %62, %58
  %64 = phi i64 [ %.pr, %62 ], [ %60, %58 ]
  %65 = icmp eq i64 %64, 1
  br i1 %65, label %66, label %67

66:                                               ; preds = %63
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1327)
  br label %67

67:                                               ; preds = %63, %66, %49
  %68 = getelementptr inbounds i8, ptr %0, i64 1768
  tail call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %50, ptr noundef nonnull %68, ptr noundef %2)
  %69 = add nsw i64 %54, %52
  %70 = getelementptr inbounds i8, ptr %0, i64 1832
  tail call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %69, ptr noundef nonnull %70, ptr noundef %2)
  %71 = getelementptr inbounds i8, ptr %0, i64 1976
  tail call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %50, ptr noundef nonnull %71, ptr noundef %2)
  %72 = getelementptr inbounds i8, ptr %0, i64 2040
  tail call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %50, ptr noundef nonnull %72, ptr noundef %2)
  %73 = getelementptr inbounds i8, ptr %0, i64 2168
  tail call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %69, ptr noundef nonnull %73, ptr noundef %2)
  %74 = getelementptr inbounds i8, ptr %0, i64 3176
  store i8 0, ptr %74, align 8, !tbaa !48
  %75 = getelementptr inbounds i8, ptr %0, i64 3177
  store i8 1, ptr %75, align 1, !tbaa !49
  tail call void @_ZN11alglib_implL20dfgenmod_inithistoryEPNS_9dfgmstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %2)
  %76 = getelementptr inbounds i8, ptr %0, i64 1752
  store double 0.000000e+00, ptr %76, align 8, !tbaa !50
  %77 = getelementptr inbounds i8, ptr %0, i64 48
  %78 = load double, ptr %77, align 8, !tbaa !51
  %79 = tail call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %78, double noundef 1.000000e-01, ptr noundef %2)
  tail call void @_ZN11alglib_implL26dfgenmod_updatetrustregionEPNS_9dfgmstateEdPNS_8ae_stateE(ptr noundef nonnull %0, double noundef %79, ptr noundef %2)
  %80 = load double, ptr %76, align 8, !tbaa !50
  %81 = getelementptr inbounds i8, ptr %0, i64 1760
  store double %80, ptr %81, align 8, !tbaa !52
  %82 = getelementptr inbounds i8, ptr %0, i64 2328
  store i64 0, ptr %82, align 8, !tbaa !53
  br label %83

83:                                               ; preds = %229, %242, %697, %434, %410, %67
  %.1455 = phi i64 [ %.0454, %242 ], [ %.0454, %229 ], [ %.0454, %410 ], [ %.0454, %697 ], [ %.0454, %434 ], [ %50, %67 ]
  %.1450 = phi i64 [ %.0449, %242 ], [ %.0449, %229 ], [ %.0449, %410 ], [ %.0449, %697 ], [ %.0449, %434 ], [ %52, %67 ]
  %.1445 = phi i64 [ %.0444, %242 ], [ %.0444, %229 ], [ %.0444, %410 ], [ %.0444, %697 ], [ %.0444, %434 ], [ %54, %67 ]
  %.1439 = phi double [ %.0438, %242 ], [ %.0438, %229 ], [ %.4442, %410 ], [ %.0438, %697 ], [ %.0438, %434 ], [ %.0438, %67 ]
  %.1 = phi i8 [ %.0, %242 ], [ %.0, %229 ], [ %.0, %410 ], [ %.7, %697 ], [ %.0, %434 ], [ %.0, %67 ]
  %84 = getelementptr inbounds i8, ptr %0, i64 2328
  %85 = load i64, ptr %84, align 8, !tbaa !53
  %.not473 = icmp eq i64 %85, 0
  br i1 %.not473, label %86, label %197

86:                                               ; preds = %83
  %87 = getelementptr inbounds i8, ptr %0, i64 1088
  %88 = getelementptr inbounds i8, ptr %0, i64 1096
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %88, i64 noundef 10, ptr noundef %2)
  %89 = getelementptr inbounds i8, ptr %0, i64 1160
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %89, i64 noundef 1, ptr noundef %2)
  %90 = getelementptr inbounds i8, ptr %0, i64 1224
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %90, i64 noundef 9, ptr noundef %2)
  store i32 -1, ptr %87, align 8, !tbaa !54
  br label %91

91:                                               ; preds = %48, %86
  %.2456 = phi i64 [ %.0454, %48 ], [ %.1455, %86 ]
  %.2451 = phi i64 [ %.0449, %48 ], [ %.1450, %86 ]
  %.2446 = phi i64 [ %.0444, %48 ], [ %.1445, %86 ]
  %.2440 = phi double [ %.0438, %48 ], [ %.1439, %86 ]
  %.2 = phi i8 [ %.0, %48 ], [ %.1, %86 ]
  %92 = call noundef zeroext i1 @_ZN11alglib_implL34dfgenmod_improveworkingsetgeometryEPNS_9dfgmstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %2)
  br i1 %92, label %93, label %103

93:                                               ; preds = %91
  %94 = getelementptr inbounds i8, ptr %0, i64 608
  %95 = load i64, ptr %94, align 8, !tbaa !55
  %96 = icmp eq i64 %95, 4
  br i1 %96, label %97, label %723

97:                                               ; preds = %93
  %98 = getelementptr inbounds i8, ptr %0, i64 30880
  %99 = load i64, ptr %98, align 8, !tbaa !56
  %100 = getelementptr inbounds i8, ptr %0, i64 688
  %101 = load i64, ptr %100, align 8, !tbaa !57
  %102 = add nsw i64 %101, %99
  store i64 %102, ptr %98, align 8, !tbaa !56
  br label %723

103:                                              ; preds = %91
  %104 = getelementptr inbounds i8, ptr %0, i64 30864
  %105 = load i64, ptr %104, align 8, !tbaa !58
  %106 = icmp slt i64 %105, 1
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %106, ptr noundef nonnull @.str.1328, ptr noundef %2)
  %107 = load i64, ptr %104, align 8, !tbaa !58
  %108 = icmp slt i64 %107, 0
  br i1 %108, label %700, label %109

109:                                              ; preds = %103
  %110 = getelementptr inbounds i8, ptr %0, i64 2328
  %111 = load i64, ptr %110, align 8, !tbaa !53
  %112 = icmp sgt i64 %111, 0
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %112, ptr noundef nonnull @.str.1329, ptr noundef %2)
  %113 = getelementptr inbounds i8, ptr %0, i64 16
  %114 = load i64, ptr %113, align 8, !tbaa !59
  %115 = icmp eq i64 %114, 0
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %115, ptr noundef nonnull @.str.1330, ptr noundef %2)
  %116 = getelementptr inbounds i8, ptr %0, i64 24
  %117 = load i64, ptr %116, align 8, !tbaa !45
  %118 = icmp eq i64 %117, 0
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %118, ptr noundef nonnull @.str.1331, ptr noundef %2)
  %119 = getelementptr inbounds i8, ptr %0, i64 32
  %120 = load i8, ptr %119, align 8, !tbaa !60, !range !40, !noundef !41
  %121 = trunc nuw i8 %120 to i1
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %121, ptr noundef nonnull @.str.1332, ptr noundef %2)
  %122 = add nsw i64 %.2446, %.2451
  %123 = getelementptr inbounds i8, ptr %0, i64 2104
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %122, ptr noundef nonnull %123, ptr noundef %2)
  %.not475.not480 = icmp sgt i64 %122, 0
  br i1 %.not475.not480, label %.lr.ph483, label %._crit_edge484

.lr.ph483:                                        ; preds = %109
  %124 = getelementptr inbounds i8, ptr %0, i64 2320
  %125 = load i64, ptr %110, align 8, !tbaa !53
  %126 = getelementptr inbounds i8, ptr %0, i64 2160
  %127 = add i64 %.2446, %.2451
  %xtraiter = and i64 %122, 1
  %128 = icmp eq i64 %127, 1
  br i1 %128, label %._crit_edge484.loopexit.unr-lcssa, label %.lr.ph483.new

.lr.ph483.new:                                    ; preds = %.lr.ph483
  %unroll_iter = and i64 %122, 9223372036854775806
  br label %129

129:                                              ; preds = %129, %.lr.ph483.new
  %storemerge474481 = phi i64 [ 0, %.lr.ph483.new ], [ %149, %129 ]
  %niter = phi i64 [ 0, %.lr.ph483.new ], [ %niter.next.1, %129 ]
  %130 = load ptr, ptr %124, align 8, !tbaa !37
  %131 = getelementptr ptr, ptr %130, i64 %125
  %132 = getelementptr i8, ptr %131, i64 -8
  %133 = load ptr, ptr %132, align 8, !tbaa !61
  %134 = getelementptr double, ptr %133, i64 %.2456
  %135 = getelementptr double, ptr %134, i64 %storemerge474481
  %136 = load double, ptr %135, align 8, !tbaa !42
  %137 = load ptr, ptr %126, align 8, !tbaa !37
  %138 = getelementptr inbounds double, ptr %137, i64 %storemerge474481
  store double %136, ptr %138, align 8, !tbaa !42
  %139 = or disjoint i64 %storemerge474481, 1
  %140 = load ptr, ptr %124, align 8, !tbaa !37
  %141 = getelementptr ptr, ptr %140, i64 %125
  %142 = getelementptr i8, ptr %141, i64 -8
  %143 = load ptr, ptr %142, align 8, !tbaa !61
  %144 = getelementptr double, ptr %143, i64 %.2456
  %145 = getelementptr double, ptr %144, i64 %139
  %146 = load double, ptr %145, align 8, !tbaa !42
  %147 = load ptr, ptr %126, align 8, !tbaa !37
  %148 = getelementptr inbounds double, ptr %147, i64 %139
  store double %146, ptr %148, align 8, !tbaa !42
  %149 = add nuw nsw i64 %storemerge474481, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge484.loopexit.unr-lcssa, label %129, !llvm.loop !62

._crit_edge484.loopexit.unr-lcssa:                ; preds = %129, %.lr.ph483
  %storemerge474481.unr = phi i64 [ 0, %.lr.ph483 ], [ %149, %129 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge484, label %._crit_edge484.loopexit.epilog-lcssa

._crit_edge484.loopexit.epilog-lcssa:             ; preds = %._crit_edge484.loopexit.unr-lcssa
  %150 = load ptr, ptr %124, align 8, !tbaa !37
  %151 = getelementptr ptr, ptr %150, i64 %125
  %152 = getelementptr i8, ptr %151, i64 -8
  %153 = load ptr, ptr %152, align 8, !tbaa !61
  %154 = getelementptr double, ptr %153, i64 %.2456
  %155 = getelementptr double, ptr %154, i64 %storemerge474481.unr
  %156 = load double, ptr %155, align 8, !tbaa !42
  %157 = load ptr, ptr %126, align 8, !tbaa !37
  %158 = getelementptr inbounds double, ptr %157, i64 %storemerge474481.unr
  store double %156, ptr %158, align 8, !tbaa !42
  br label %._crit_edge484

._crit_edge484:                                   ; preds = %._crit_edge484.loopexit.epilog-lcssa, %._crit_edge484.loopexit.unr-lcssa, %109
  %159 = getelementptr inbounds i8, ptr %0, i64 2232
  store double 0.000000e+00, ptr %159, align 8, !tbaa !64
  %.not477.not485 = icmp sgt i64 %.2451, 0
  br i1 %.not477.not485, label %.lr.ph488, label %._crit_edge489

.lr.ph488:                                        ; preds = %._crit_edge484
  %160 = getelementptr inbounds i8, ptr %0, i64 2320
  %161 = load ptr, ptr %160, align 8, !tbaa !37
  %162 = load i64, ptr %110, align 8, !tbaa !53
  %163 = getelementptr ptr, ptr %161, i64 %162
  %164 = getelementptr i8, ptr %163, i64 -8
  %165 = load ptr, ptr %164, align 8, !tbaa !61
  %166 = getelementptr double, ptr %165, i64 %.2456
  %xtraiter514 = and i64 %.2451, 3
  %167 = icmp ult i64 %.2451, 4
  br i1 %167, label %._crit_edge489.loopexit.unr-lcssa, label %.lr.ph488.new

.lr.ph488.new:                                    ; preds = %.lr.ph488
  %unroll_iter516 = and i64 %.2451, 9223372036854775804
  br label %168

168:                                              ; preds = %168, %.lr.ph488.new
  %169 = phi double [ 0.000000e+00, %.lr.ph488.new ], [ %188, %168 ]
  %storemerge476486 = phi i64 [ 0, %.lr.ph488.new ], [ %189, %168 ]
  %niter517 = phi i64 [ 0, %.lr.ph488.new ], [ %niter517.next.3, %168 ]
  %170 = getelementptr double, ptr %166, i64 %storemerge476486
  %171 = load double, ptr %170, align 8, !tbaa !42
  %172 = fmul double %171, 5.000000e-01
  %173 = call double @llvm.fmuladd.f64(double %172, double %171, double %169)
  store double %173, ptr %159, align 8, !tbaa !64
  %174 = or disjoint i64 %storemerge476486, 1
  %175 = getelementptr double, ptr %166, i64 %174
  %176 = load double, ptr %175, align 8, !tbaa !42
  %177 = fmul double %176, 5.000000e-01
  %178 = call double @llvm.fmuladd.f64(double %177, double %176, double %173)
  store double %178, ptr %159, align 8, !tbaa !64
  %179 = or disjoint i64 %storemerge476486, 2
  %180 = getelementptr double, ptr %166, i64 %179
  %181 = load double, ptr %180, align 8, !tbaa !42
  %182 = fmul double %181, 5.000000e-01
  %183 = call double @llvm.fmuladd.f64(double %182, double %181, double %178)
  store double %183, ptr %159, align 8, !tbaa !64
  %184 = or disjoint i64 %storemerge476486, 3
  %185 = getelementptr double, ptr %166, i64 %184
  %186 = load double, ptr %185, align 8, !tbaa !42
  %187 = fmul double %186, 5.000000e-01
  %188 = call double @llvm.fmuladd.f64(double %187, double %186, double %183)
  store double %188, ptr %159, align 8, !tbaa !64
  %189 = add nuw nsw i64 %storemerge476486, 4
  %niter517.next.3 = add i64 %niter517, 4
  %niter517.ncmp.3 = icmp eq i64 %niter517.next.3, %unroll_iter516
  br i1 %niter517.ncmp.3, label %._crit_edge489.loopexit.unr-lcssa, label %168, !llvm.loop !65

._crit_edge489.loopexit.unr-lcssa:                ; preds = %168, %.lr.ph488
  %.unr = phi double [ 0.000000e+00, %.lr.ph488 ], [ %188, %168 ]
  %storemerge476486.unr = phi i64 [ 0, %.lr.ph488 ], [ %189, %168 ]
  %lcmp.mod515.not = icmp eq i64 %xtraiter514, 0
  br i1 %lcmp.mod515.not, label %._crit_edge489, label %.epil.preheader513

.epil.preheader513:                               ; preds = %._crit_edge489.loopexit.unr-lcssa, %.epil.preheader513
  %190 = phi double [ %194, %.epil.preheader513 ], [ %.unr, %._crit_edge489.loopexit.unr-lcssa ]
  %storemerge476486.epil = phi i64 [ %195, %.epil.preheader513 ], [ %storemerge476486.unr, %._crit_edge489.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader513 ], [ 0, %._crit_edge489.loopexit.unr-lcssa ]
  %191 = getelementptr double, ptr %166, i64 %storemerge476486.epil
  %192 = load double, ptr %191, align 8, !tbaa !42
  %193 = fmul double %192, 5.000000e-01
  %194 = call double @llvm.fmuladd.f64(double %193, double %192, double %190)
  store double %194, ptr %159, align 8, !tbaa !64
  %195 = add nuw nsw i64 %storemerge476486.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter514
  br i1 %epil.iter.cmp.not, label %._crit_edge489, label %.epil.preheader513, !llvm.loop !66

._crit_edge489:                                   ; preds = %._crit_edge489.loopexit.unr-lcssa, %.epil.preheader513, %._crit_edge484
  %storemerge476.lcssa = phi i64 [ 0, %._crit_edge484 ], [ %.2451, %.epil.preheader513 ], [ %.2451, %._crit_edge489.loopexit.unr-lcssa ]
  store i64 %storemerge476.lcssa, ptr %5, align 8, !tbaa !38
  %196 = getelementptr inbounds i8, ptr %0, i64 2240
  store double 0.000000e+00, ptr %196, align 8, !tbaa !68
  br label %197

197:                                              ; preds = %83, %._crit_edge489
  %.3457 = phi i64 [ %.2456, %._crit_edge489 ], [ %.1455, %83 ]
  %.3452 = phi i64 [ %.2451, %._crit_edge489 ], [ %.1450, %83 ]
  %.3447 = phi i64 [ %.2446, %._crit_edge489 ], [ %.1445, %83 ]
  %.3441 = phi double [ %.2440, %._crit_edge489 ], [ %.1439, %83 ]
  %.3 = phi i8 [ %.2, %._crit_edge489 ], [ %.1, %83 ]
  call void @_ZN11alglib_implL22dfgenmod_updatehistoryEPNS_9dfgmstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %2)
  %198 = getelementptr inbounds i8, ptr %0, i64 608
  store i64 -1, ptr %198, align 8, !tbaa !55
  %199 = getelementptr inbounds i8, ptr %0, i64 1912
  %200 = getelementptr inbounds i8, ptr %0, i64 616
  call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.3457, ptr noundef nonnull %199, ptr noundef nonnull %200, ptr noundef %2)
  %201 = getelementptr inbounds i8, ptr %0, i64 2232
  %202 = load double, ptr %201, align 8, !tbaa !64
  %203 = fmul double %202, 2.000000e+00
  %204 = getelementptr inbounds i8, ptr %0, i64 680
  store double %203, ptr %204, align 8, !tbaa !69
  br label %723

205:                                              ; preds = %48
  %206 = getelementptr inbounds i8, ptr %0, i64 584
  %207 = load i64, ptr %206, align 8, !tbaa !70
  %208 = icmp sgt i64 %207, 0
  br i1 %208, label %209, label %216

209:                                              ; preds = %205
  %210 = getelementptr inbounds i8, ptr %0, i64 30872
  %211 = load i64, ptr %210, align 8, !tbaa !71
  %.not468 = icmp slt i64 %211, %207
  br i1 %.not468, label %216, label %212

212:                                              ; preds = %209
  %213 = getelementptr inbounds i8, ptr %0, i64 1616
  %214 = load i8, ptr %213, align 8, !tbaa !46, !range !40, !noundef !41
  %215 = trunc nuw i8 %214 to i1
  br i1 %215, label %.sink.split.sink.split, label %.sink.split

216:                                              ; preds = %209, %205
  %217 = getelementptr inbounds i8, ptr %0, i64 1760
  %218 = load double, ptr %217, align 8, !tbaa !52
  %219 = getelementptr inbounds i8, ptr %0, i64 576
  %220 = load double, ptr %219, align 8, !tbaa !72
  %221 = getelementptr inbounds i8, ptr %0, i64 600
  %222 = load double, ptr %221, align 8, !tbaa !73
  %223 = tail call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %220, double noundef %222, ptr noundef %2)
  %224 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %218, double noundef %223)
  br i1 %224, label %225, label %251

225:                                              ; preds = %216
  %226 = getelementptr inbounds i8, ptr %0, i64 3184
  %227 = load i64, ptr %226, align 8, !tbaa !74
  %228 = icmp sgt i64 %227, 0
  br i1 %228, label %229, label %244

229:                                              ; preds = %225
  %230 = getelementptr inbounds i8, ptr %0, i64 48
  %231 = load double, ptr %230, align 8, !tbaa !51
  %232 = tail call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %231, double noundef 1.000000e-01, ptr noundef %2)
  tail call void @_ZN11alglib_implL26dfgenmod_updatetrustregionEPNS_9dfgmstateEdPNS_8ae_stateE(ptr noundef nonnull %0, double noundef %232, ptr noundef %2)
  %233 = getelementptr inbounds i8, ptr %0, i64 1752
  %234 = load double, ptr %233, align 8, !tbaa !50
  store double %234, ptr %217, align 8, !tbaa !52
  %235 = getelementptr inbounds i8, ptr %0, i64 2328
  store i64 0, ptr %235, align 8, !tbaa !53
  %236 = getelementptr inbounds i8, ptr %0, i64 3472
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %236, i8 0, i64 16, i1 false)
  %237 = load i64, ptr %226, align 8, !tbaa !74
  %238 = add nsw i64 %237, -1
  store i64 %238, ptr %226, align 8, !tbaa !74
  %239 = getelementptr inbounds i8, ptr %0, i64 1616
  %240 = load i8, ptr %239, align 8, !tbaa !46, !range !40, !noundef !41
  %241 = trunc nuw i8 %240 to i1
  br i1 %241, label %242, label %83

242:                                              ; preds = %229
  %243 = trunc i64 %238 to i32
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1334, i32 noundef %243)
  br label %83

244:                                              ; preds = %225
  %245 = load double, ptr %217, align 8, !tbaa !52
  %246 = load double, ptr %219, align 8, !tbaa !72
  %247 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %245, double noundef %246)
  %248 = getelementptr inbounds i8, ptr %0, i64 1616
  %249 = load i8, ptr %248, align 8, !tbaa !46, !range !40, !noundef !41
  %250 = trunc nuw i8 %249 to i1
  %.str.1335..str.1336 = select i1 %247, ptr @.str.1335, ptr @.str.1336
  %. = select i1 %247, i64 2, i64 7
  br i1 %250, label %.sink.split.sink.split, label %.sink.split

251:                                              ; preds = %216
  %252 = getelementptr inbounds i8, ptr %0, i64 1616
  %253 = load i8, ptr %252, align 8, !tbaa !46, !range !40, !noundef !41
  %254 = trunc nuw i8 %253 to i1
  br i1 %1, label %255, label %256

255:                                              ; preds = %251
  br i1 %254, label %.sink.split.sink.split, label %.sink.split

256:                                              ; preds = %251
  br i1 %254, label %257, label %346

257:                                              ; preds = %256
  %258 = getelementptr inbounds i8, ptr %0, i64 30872
  %259 = load i64, ptr %258, align 8, !tbaa !71
  %260 = trunc i64 %259 to i32
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.713, i32 noundef %260)
  %261 = getelementptr inbounds i8, ptr %0, i64 1752
  %262 = load double, ptr %261, align 8, !tbaa !50
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1338, double noundef %262)
  %263 = load double, ptr %217, align 8, !tbaa !52
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1339, double noundef %263)
  %264 = getelementptr inbounds i8, ptr %0, i64 16
  %265 = load i64, ptr %264, align 8, !tbaa !59
  %266 = icmp eq i64 %265, 0
  br i1 %266, label %267, label %271

267:                                              ; preds = %257
  %268 = getelementptr inbounds i8, ptr %0, i64 24
  %269 = load i64, ptr %268, align 8, !tbaa !45
  %270 = icmp eq i64 %269, 0
  br label %271

271:                                              ; preds = %267, %257
  %272 = phi i1 [ false, %257 ], [ %270, %267 ]
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %272, ptr noundef nonnull @.str.1340, ptr noundef %2)
  %273 = getelementptr inbounds i8, ptr %0, i64 1912
  %274 = tail call noundef double @_ZN11alglib_impl8rmaxabsvElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %.0454, ptr noundef nonnull %273, ptr noundef %2)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1137, double noundef %274)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1341)
  %275 = getelementptr inbounds i8, ptr %0, i64 30880
  %276 = load i64, ptr %275, align 8, !tbaa !56
  %277 = trunc i64 %276 to i32
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1342, i32 noundef %277)
  %278 = load i64, ptr %275, align 8, !tbaa !56
  %279 = sitofp i64 %278 to double
  %280 = add nsw i64 %.0454, 1
  %281 = sitofp i64 %280 to double
  %282 = fdiv double %279, %281
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1343, double noundef %282)
  %283 = getelementptr inbounds i8, ptr %0, i64 3488
  tail call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %.0454, ptr noundef nonnull %283, ptr noundef %2)
  %284 = getelementptr inbounds i8, ptr %0, i64 3552
  tail call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %.0454, ptr noundef nonnull %284, ptr noundef %2)
  %285 = getelementptr inbounds i8, ptr %0, i64 1688
  %286 = getelementptr inbounds i8, ptr %0, i64 2248
  %287 = getelementptr inbounds i8, ptr %0, i64 2328
  %288 = load i64, ptr %287, align 8, !tbaa !53
  call void @_ZN11alglib_implL28dfgenmod_mostandleastdistantEPKNS_9ae_vectorElPKNS_9ae_matrixElPdPlS6_S7_PNS_8ae_stateE(ptr noundef nonnull %285, i64 noundef %.0454, ptr noundef nonnull %286, i64 noundef %288, ptr noundef nonnull %10, ptr noundef nonnull %4, ptr noundef nonnull %12, ptr noundef nonnull %5, ptr noundef %2)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1344)
  %289 = load double, ptr %10, align 8, !tbaa !42
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1345, double noundef %289)
  %290 = load double, ptr %12, align 8, !tbaa !42
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1346, double noundef %290)
  %291 = getelementptr inbounds i8, ptr %0, i64 56
  %292 = load i64, ptr %291, align 8, !tbaa !75
  %293 = icmp sgt i64 %292, 0
  br i1 %293, label %294, label %345

294:                                              ; preds = %271
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1347)
  %295 = getelementptr inbounds i8, ptr %0, i64 3472
  %296 = load i64, ptr %295, align 8, !tbaa !76
  %297 = load i64, ptr @_ZN11alglib_implL19dfgenmod_minhistoryE, align 8, !tbaa !38
  %.not469 = icmp slt i64 %296, %297
  br i1 %.not469, label %344, label %298

298:                                              ; preds = %294
  %299 = getelementptr inbounds i8, ptr %0, i64 3408
  %300 = getelementptr inbounds i8, ptr %0, i64 3344
  call void @_ZN11alglib_impl10linreglineEPKNS_9ae_vectorES2_lPdS3_S3_PNS_8ae_stateE(ptr noundef nonnull %299, ptr noundef nonnull %300, i64 noundef %296, ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef %2)
  %301 = load double, ptr %11, align 8, !tbaa !42
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1348, double noundef %301)
  %302 = load double, ptr %12, align 8, !tbaa !42
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1349, double noundef %302)
  store double 0.000000e+00, ptr %10, align 8, !tbaa !42
  store double 0.000000e+00, ptr %11, align 8, !tbaa !42
  store double 0.000000e+00, ptr %12, align 8, !tbaa !42
  store i64 0, ptr %4, align 8, !tbaa !38
  %303 = load i64, ptr %295, align 8, !tbaa !76
  %.not471.not478 = icmp sgt i64 %303, 0
  br i1 %.not471.not478, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %298
  %304 = getelementptr inbounds i8, ptr %0, i64 3336
  br label %305

305:                                              ; preds = %.lr.ph, %331
  %storemerge470479 = phi i64 [ 0, %.lr.ph ], [ %333, %331 ]
  %306 = load ptr, ptr %304, align 8, !tbaa !37
  %307 = getelementptr inbounds double, ptr %306, i64 %storemerge470479
  %308 = load double, ptr %307, align 8, !tbaa !42
  %309 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %308, double noundef 0.000000e+00)
  br i1 %309, label %310, label %313

310:                                              ; preds = %305
  %311 = load double, ptr %10, align 8, !tbaa !42
  %312 = fadd double %311, 1.000000e+00
  store double %312, ptr %10, align 8, !tbaa !42
  br label %313

313:                                              ; preds = %310, %305
  %314 = load ptr, ptr %304, align 8, !tbaa !37
  %315 = load i64, ptr %4, align 8, !tbaa !38
  %316 = getelementptr inbounds double, ptr %314, i64 %315
  %317 = load double, ptr %316, align 8, !tbaa !42
  %318 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %317, double noundef 0.000000e+00)
  br i1 %318, label %319, label %322

319:                                              ; preds = %313
  %320 = load double, ptr %11, align 8, !tbaa !42
  %321 = fadd double %320, 1.000000e+00
  store double %321, ptr %11, align 8, !tbaa !42
  br label %322

322:                                              ; preds = %319, %313
  %323 = load ptr, ptr %304, align 8, !tbaa !37
  %324 = load i64, ptr %4, align 8, !tbaa !38
  %325 = getelementptr inbounds double, ptr %323, i64 %324
  %326 = load double, ptr %325, align 8, !tbaa !42
  %327 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %326, double noundef 0.000000e+00)
  br i1 %327, label %328, label %331

328:                                              ; preds = %322
  %329 = load double, ptr %12, align 8, !tbaa !42
  %330 = fadd double %329, 1.000000e+00
  store double %330, ptr %12, align 8, !tbaa !42
  br label %331

331:                                              ; preds = %322, %328
  %332 = load i64, ptr %4, align 8, !tbaa !38
  %333 = add nsw i64 %332, 1
  store i64 %333, ptr %4, align 8, !tbaa !38
  %334 = load i64, ptr %295, align 8, !tbaa !76
  %.not471.not = icmp slt i64 %333, %334
  br i1 %.not471.not, label %305, label %._crit_edge.loopexit, !llvm.loop !77

._crit_edge.loopexit:                             ; preds = %331
  %.pre507 = load double, ptr %10, align 8, !tbaa !42
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %298
  %335 = phi double [ %.pre507, %._crit_edge.loopexit ], [ 0.000000e+00, %298 ]
  %336 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %335, ptr noundef %2)
  %337 = trunc i64 %336 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1350, i32 noundef %337)
  %338 = load double, ptr %11, align 8, !tbaa !42
  %339 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %338, ptr noundef %2)
  %340 = trunc i64 %339 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1351, i32 noundef %340)
  %341 = load double, ptr %12, align 8, !tbaa !42
  %342 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %341, ptr noundef %2)
  %343 = trunc i64 %342 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1352, i32 noundef %343)
  br label %345

344:                                              ; preds = %294
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1353)
  br label %345

345:                                              ; preds = %._crit_edge, %344, %271
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.208)
  br label %346

346:                                              ; preds = %345, %256
  call void @_ZN11alglib_implL28dfgenmod_preparetrialrequestEPNS_9dfgmstateEPdS2_PNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef %2)
  %347 = getelementptr inbounds i8, ptr %0, i64 1976
  %348 = call noundef double @_ZN11alglib_implL34dfgenmod_normrelativetotrustregionEPKNS_9dfgmstateEPKNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %347, ptr noundef %2)
  %349 = load i8, ptr %252, align 8, !tbaa !46, !range !40, !noundef !41
  %350 = trunc nuw i8 %349 to i1
  br i1 %350, label %351, label %360

351:                                              ; preds = %346
  %352 = load double, ptr %6, align 8, !tbaa !42
  %353 = getelementptr inbounds i8, ptr %0, i64 2232
  %354 = load double, ptr %353, align 8, !tbaa !64
  %355 = fsub double %352, %354
  %356 = load double, ptr %7, align 8, !tbaa !42
  %357 = getelementptr inbounds i8, ptr %0, i64 2240
  %358 = load double, ptr %357, align 8, !tbaa !68
  %359 = fsub double %356, %358
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1354, double noundef %348, double noundef %355, double noundef %359)
  br label %360

360:                                              ; preds = %351, %346
  %361 = getelementptr inbounds i8, ptr %0, i64 1752
  %362 = load double, ptr %361, align 8, !tbaa !50
  %363 = fmul double %348, %362
  %364 = load double, ptr @_ZN11alglib_implL20dfgenmod_gammasafetyE, align 8, !tbaa !42
  %365 = load double, ptr %217, align 8, !tbaa !52
  %366 = fmul double %364, %365
  %367 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %363, double noundef %366)
  br i1 %367, label %412, label %368

368:                                              ; preds = %360
  %369 = load i8, ptr %252, align 8, !tbaa !46, !range !40, !noundef !41
  %370 = trunc nuw i8 %369 to i1
  br i1 %370, label %371, label %372

371:                                              ; preds = %368
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1355)
  br label %372

372:                                              ; preds = %371, %368
  %373 = load double, ptr @_ZN11alglib_implL20dfgenmod_omegasafetyE, align 8, !tbaa !42
  %374 = load double, ptr %361, align 8, !tbaa !50
  %375 = fmul double %373, %374
  %376 = load double, ptr %217, align 8, !tbaa !52
  %377 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %375, double noundef %376, ptr noundef %2)
  call void @_ZN11alglib_implL26dfgenmod_updatetrustregionEPNS_9dfgmstateEdPNS_8ae_stateE(ptr noundef nonnull %0, double noundef %377, ptr noundef %2)
  %378 = call noundef zeroext i1 @_ZN11alglib_implL24dfgenmod_deltakatminimumEPKNS_9dfgmstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %2)
  br i1 %378, label %379, label %386

379:                                              ; preds = %372
  %380 = load double, ptr %217, align 8, !tbaa !52
  store double %380, ptr %10, align 8, !tbaa !42
  %381 = load double, ptr @_ZN11alglib_implL15dfgenmod_alpha2E, align 8, !tbaa !42
  %382 = fmul double %380, %381
  call void @_ZN11alglib_implL26dfgenmod_updatetrustregionEPNS_9dfgmstateEdPNS_8ae_stateE(ptr noundef nonnull %0, double noundef %382, ptr noundef %2)
  %383 = load double, ptr @_ZN11alglib_implL15dfgenmod_alpha1E, align 8, !tbaa !42
  %384 = load double, ptr %10, align 8, !tbaa !42
  %385 = fmul double %383, %384
  store double %385, ptr %217, align 8, !tbaa !52
  br label %386

386:                                              ; preds = %379, %372
  call void @_ZN11alglib_implL30dfgenmod_sendstepdenialtomodelEPNS_9dfgmstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %2)
  %387 = load i8, ptr %252, align 8, !tbaa !46, !range !40, !noundef !41
  %388 = trunc nuw i8 %387 to i1
  br i1 %388, label %389, label %390

389:                                              ; preds = %386
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1356)
  br label %390

390:                                              ; preds = %389, %386
  %391 = getelementptr inbounds i8, ptr %0, i64 1088
  %392 = getelementptr inbounds i8, ptr %0, i64 1096
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %392, i64 noundef 10, ptr noundef %2)
  %393 = getelementptr inbounds i8, ptr %0, i64 1160
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %393, i64 noundef 1, ptr noundef %2)
  %394 = getelementptr inbounds i8, ptr %0, i64 1224
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %394, i64 noundef 9, ptr noundef %2)
  store i32 -1, ptr %391, align 8, !tbaa !54
  br label %395

395:                                              ; preds = %48, %390
  %.4442 = phi double [ %348, %390 ], [ %.0438, %48 ]
  %396 = call noundef zeroext i1 @_ZN11alglib_implL34dfgenmod_improveworkingsetgeometryEPNS_9dfgmstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %2)
  br i1 %396, label %397, label %407

397:                                              ; preds = %395
  %398 = getelementptr inbounds i8, ptr %0, i64 608
  %399 = load i64, ptr %398, align 8, !tbaa !55
  %400 = icmp eq i64 %399, 4
  br i1 %400, label %401, label %723

401:                                              ; preds = %397
  %402 = getelementptr inbounds i8, ptr %0, i64 30880
  %403 = load i64, ptr %402, align 8, !tbaa !56
  %404 = getelementptr inbounds i8, ptr %0, i64 688
  %405 = load i64, ptr %404, align 8, !tbaa !57
  %406 = add nsw i64 %405, %403
  store i64 %406, ptr %402, align 8, !tbaa !56
  br label %723

407:                                              ; preds = %395
  %408 = getelementptr inbounds i8, ptr %0, i64 30864
  %409 = load i64, ptr %408, align 8, !tbaa !58
  %.not472 = icmp eq i64 %409, 0
  br i1 %.not472, label %410, label %700

410:                                              ; preds = %407
  %411 = getelementptr inbounds i8, ptr %0, i64 30872
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %411, ptr noundef %2)
  br label %83

412:                                              ; preds = %360
  %413 = getelementptr inbounds i8, ptr %0, i64 608
  %414 = load i64, ptr %413, align 8, !tbaa !55
  %415 = icmp eq i64 %414, 4
  br i1 %415, label %416, label %723

416:                                              ; preds = %412
  %417 = getelementptr inbounds i8, ptr %0, i64 30880
  %418 = load i64, ptr %417, align 8, !tbaa !56
  %419 = getelementptr inbounds i8, ptr %0, i64 688
  %420 = load i64, ptr %419, align 8, !tbaa !57
  %421 = add nsw i64 %420, %418
  store i64 %421, ptr %417, align 8, !tbaa !56
  br label %723

422:                                              ; preds = %48
  %423 = getelementptr inbounds i8, ptr %0, i64 760
  %424 = add nsw i64 %.0444, %.0449
  %425 = getelementptr inbounds i8, ptr %0, i64 688
  %426 = load i64, ptr %425, align 8, !tbaa !57
  %427 = mul nsw i64 %426, %424
  %428 = tail call noundef zeroext i1 @_ZN11alglib_impl14isfinitevectorEPKNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %423, i64 noundef %427, ptr noundef %2)
  br i1 %428, label %446, label %429

429:                                              ; preds = %422
  %430 = getelementptr inbounds i8, ptr %0, i64 1616
  %431 = load i8, ptr %430, align 8, !tbaa !46, !range !40, !noundef !41
  %432 = trunc nuw i8 %431 to i1
  br i1 %432, label %433, label %434

433:                                              ; preds = %429
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1357)
  br label %434

434:                                              ; preds = %433, %429
  %435 = getelementptr inbounds i8, ptr %0, i64 3176
  store i8 1, ptr %435, align 8, !tbaa !48
  %436 = getelementptr inbounds i8, ptr %0, i64 3177
  store i8 0, ptr %436, align 1, !tbaa !49
  %437 = load double, ptr @_ZN11alglib_implL17dfgenmod_gammabadE, align 8, !tbaa !42
  %438 = getelementptr inbounds i8, ptr %0, i64 1752
  %439 = load double, ptr %438, align 8, !tbaa !50
  %440 = fmul double %437, %439
  tail call void @_ZN11alglib_implL26dfgenmod_updatetrustregionEPNS_9dfgmstateEdPNS_8ae_stateE(ptr noundef nonnull %0, double noundef %440, ptr noundef %2)
  %441 = load double, ptr %438, align 8, !tbaa !50
  %442 = getelementptr inbounds i8, ptr %0, i64 1760
  %443 = load double, ptr %442, align 8, !tbaa !52
  %444 = tail call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %441, double noundef %443, ptr noundef %2)
  store double %444, ptr %442, align 8, !tbaa !52
  tail call void @_ZN11alglib_implL30dfgenmod_sendstepdenialtomodelEPNS_9dfgmstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %2)
  %445 = getelementptr inbounds i8, ptr %0, i64 30872
  tail call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %445, ptr noundef %2)
  br label %83

446:                                              ; preds = %422
  call void @_ZN11alglib_implL28dfgenmod_processtrialrequestEPNS_9dfgmstateEPdS2_PNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %8, ptr noundef nonnull %9, ptr noundef %2)
  %447 = getelementptr inbounds i8, ptr %0, i64 1616
  %448 = load i8, ptr %447, align 8, !tbaa !46, !range !40, !noundef !41
  %449 = trunc nuw i8 %448 to i1
  br i1 %449, label %450, label %459

450:                                              ; preds = %446
  %451 = load double, ptr %8, align 8, !tbaa !42
  %452 = getelementptr inbounds i8, ptr %0, i64 2232
  %453 = load double, ptr %452, align 8, !tbaa !64
  %454 = fsub double %451, %453
  %455 = load double, ptr %9, align 8, !tbaa !42
  %456 = getelementptr inbounds i8, ptr %0, i64 2240
  %457 = load double, ptr %456, align 8, !tbaa !68
  %458 = fsub double %455, %457
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1358, double noundef %454, double noundef %458)
  br label %459

459:                                              ; preds = %450, %446
  %460 = getelementptr inbounds i8, ptr %0, i64 2232
  %461 = load double, ptr %460, align 8, !tbaa !64
  %462 = getelementptr inbounds i8, ptr %0, i64 2240
  %463 = load double, ptr %462, align 8, !tbaa !68
  %464 = load double, ptr %6, align 8, !tbaa !42
  %465 = load double, ptr %7, align 8, !tbaa !42
  %466 = load double, ptr %8, align 8, !tbaa !42
  %467 = load double, ptr %9, align 8, !tbaa !42
  %468 = call noundef zeroext i1 @_ZN11alglib_implL31dfgenmod_testacceptancebyfilterEPKNS_9dfgmstateEddddddPNS_8ae_stateE(ptr noundef nonnull %0, double noundef %461, double noundef %463, double noundef %464, double noundef %465, double noundef %466, double noundef %467, ptr noundef %2)
  %469 = load i8, ptr %447, align 8, !tbaa !46, !range !40, !noundef !41
  %470 = trunc nuw i8 %469 to i1
  br i1 %468, label %471, label %586

471:                                              ; preds = %459
  br i1 %470, label %472, label %484

472:                                              ; preds = %471
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1359)
  %473 = getelementptr inbounds i8, ptr %0, i64 3177
  %474 = load i8, ptr %473, align 1, !tbaa !49, !range !40, !noundef !41
  %475 = trunc nuw i8 %474 to i1
  br i1 %475, label %477, label %476

476:                                              ; preds = %472
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1360)
  br label %477

477:                                              ; preds = %476, %472
  %478 = load double, ptr %460, align 8, !tbaa !64
  %479 = load double, ptr %8, align 8, !tbaa !42
  %480 = fsub double %479, %478
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1361, double noundef %478, double noundef %479, double noundef %480)
  %481 = load double, ptr %462, align 8, !tbaa !68
  %482 = load double, ptr %9, align 8, !tbaa !42
  %483 = fsub double %482, %481
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1362, double noundef %481, double noundef %482, double noundef %483)
  br label %484

484:                                              ; preds = %477, %471
  %485 = getelementptr inbounds i8, ptr %0, i64 16
  %486 = load i64, ptr %485, align 8, !tbaa !59
  %487 = icmp eq i64 %486, 0
  br i1 %487, label %488, label %492

488:                                              ; preds = %484
  %489 = getelementptr inbounds i8, ptr %0, i64 24
  %490 = load i64, ptr %489, align 8, !tbaa !45
  %491 = icmp eq i64 %490, 0
  br label %492

492:                                              ; preds = %488, %484
  %493 = phi i1 [ false, %484 ], [ %491, %488 ]
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %493, ptr noundef nonnull @.str.1363, ptr noundef %2)
  %494 = load double, ptr %462, align 8, !tbaa !68
  %495 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %494, double noundef 0.000000e+00)
  br i1 %495, label %496, label %499

496:                                              ; preds = %492
  %497 = load double, ptr %9, align 8, !tbaa !42
  %498 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %497, double noundef 0.000000e+00)
  br label %499

499:                                              ; preds = %496, %492
  %500 = phi i1 [ false, %492 ], [ %498, %496 ]
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %500, ptr noundef nonnull @.str.1364, ptr noundef %2)
  %501 = load double, ptr %6, align 8, !tbaa !42
  %502 = load double, ptr %460, align 8, !tbaa !64
  %503 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %501, double noundef %502)
  br i1 %503, label %504, label %526

504:                                              ; preds = %499
  %505 = load double, ptr %460, align 8, !tbaa !64
  %506 = load double, ptr %8, align 8, !tbaa !42
  %507 = fsub double %505, %506
  %508 = load double, ptr %6, align 8, !tbaa !42
  %509 = fsub double %505, %508
  %510 = fdiv double %507, %509
  %511 = load double, ptr @_ZN11alglib_implL13dfgenmod_eta2E, align 8, !tbaa !42
  %512 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %510, double noundef %511)
  br i1 %512, label %513, label %526

513:                                              ; preds = %504
  %514 = load i8, ptr %447, align 8, !tbaa !46, !range !40, !noundef !41
  %515 = trunc nuw i8 %514 to i1
  br i1 %515, label %516, label %517

516:                                              ; preds = %513
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1365)
  br label %517

517:                                              ; preds = %516, %513
  %518 = load double, ptr @_ZN11alglib_implL17dfgenmod_gammaincE, align 8, !tbaa !42
  %519 = getelementptr inbounds i8, ptr %0, i64 1752
  %520 = load double, ptr %519, align 8, !tbaa !50
  %521 = fmul double %518, %520
  %522 = load double, ptr @_ZN11alglib_implL18dfgenmod_gammainc2E, align 8, !tbaa !42
  %523 = fmul double %.0438, %520
  %524 = fmul double %522, %523
  %525 = call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %521, double noundef %524, ptr noundef %2)
  br label %542

526:                                              ; preds = %504, %499
  %527 = load i8, ptr %447, align 8, !tbaa !46, !range !40, !noundef !41
  %528 = trunc nuw i8 %527 to i1
  br i1 %528, label %529, label %530

529:                                              ; preds = %526
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1366)
  br label %530

530:                                              ; preds = %529, %526
  %531 = load double, ptr @_ZN11alglib_implL17dfgenmod_gammadecE, align 8, !tbaa !42
  %532 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %531, double noundef %.0438, ptr noundef %2)
  %533 = getelementptr inbounds i8, ptr %0, i64 1752
  %534 = load double, ptr %533, align 8, !tbaa !50
  %535 = fmul double %532, %534
  store double %535, ptr %10, align 8, !tbaa !42
  %536 = getelementptr inbounds i8, ptr %0, i64 1760
  %537 = load double, ptr %536, align 8, !tbaa !52
  %538 = fmul double %537, 1.500000e+00
  %539 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %535, double noundef %538)
  br i1 %539, label %540, label %._crit_edge503

._crit_edge503:                                   ; preds = %530
  %.pre504 = load double, ptr %10, align 8, !tbaa !42
  br label %542

540:                                              ; preds = %530
  %541 = load double, ptr %536, align 8, !tbaa !52
  store double %541, ptr %10, align 8, !tbaa !42
  br label %542

542:                                              ; preds = %540, %._crit_edge503, %517
  %.sink509 = phi double [ %525, %517 ], [ %.pre504, %._crit_edge503 ], [ %541, %540 ]
  call void @_ZN11alglib_implL26dfgenmod_updatetrustregionEPNS_9dfgmstateEdPNS_8ae_stateE(ptr noundef nonnull %0, double noundef %.sink509, ptr noundef %2)
  %543 = getelementptr inbounds i8, ptr %0, i64 1912
  %544 = getelementptr inbounds i8, ptr %0, i64 1768
  call void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.0454, ptr noundef nonnull %543, ptr noundef nonnull %544, ptr noundef %2)
  %545 = getelementptr inbounds i8, ptr %0, i64 24
  %546 = load i64, ptr %545, align 8, !tbaa !45
  %547 = add nsw i64 %546, %.0449
  %548 = getelementptr inbounds i8, ptr %0, i64 2104
  %549 = getelementptr inbounds i8, ptr %0, i64 1832
  call void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %547, ptr noundef nonnull %548, ptr noundef nonnull %549, ptr noundef %2)
  %550 = getelementptr inbounds i8, ptr %0, i64 1896
  %551 = load <2 x double>, ptr %460, align 8, !tbaa !42
  store <2 x double> %551, ptr %550, align 8, !tbaa !42
  %552 = getelementptr inbounds i8, ptr %0, i64 2040
  call void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.0454, ptr noundef nonnull %552, ptr noundef nonnull %543, ptr noundef %2)
  %553 = load i64, ptr %545, align 8, !tbaa !45
  %554 = add nsw i64 %553, %.0449
  %555 = getelementptr inbounds i8, ptr %0, i64 2168
  call void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %554, ptr noundef nonnull %555, ptr noundef nonnull %548, ptr noundef %2)
  %556 = load double, ptr %8, align 8, !tbaa !42
  store double %556, ptr %460, align 8, !tbaa !64
  %557 = load double, ptr %9, align 8, !tbaa !42
  store double %557, ptr %462, align 8, !tbaa !68
  %558 = getelementptr inbounds i8, ptr %0, i64 3177
  store i8 1, ptr %558, align 1, !tbaa !49
  call void @_ZN11alglib_implL21dfgenmod_sendtofilterEPKNS_9dfgmstateEddPNS_8ae_stateE(ptr noundef nonnull %0, double noundef %556, double noundef %557, ptr noundef %2)
  %559 = load i8, ptr %447, align 8, !tbaa !46, !range !40, !noundef !41
  %560 = trunc nuw i8 %559 to i1
  br i1 %560, label %561, label %562

561:                                              ; preds = %542
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1367)
  br label %562

562:                                              ; preds = %561, %542
  %563 = getelementptr inbounds i8, ptr %0, i64 1352
  %564 = getelementptr inbounds i8, ptr %0, i64 1360
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %564, i64 noundef 7, ptr noundef %2)
  %565 = getelementptr inbounds i8, ptr %0, i64 1488
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %565, i64 noundef 3, ptr noundef %2)
  store i32 -1, ptr %563, align 8, !tbaa !78
  %.pre505 = load double, ptr %8, align 8, !tbaa !42
  %.pre506 = load double, ptr %9, align 8, !tbaa !42
  br label %566

566:                                              ; preds = %48, %562
  %567 = phi double [ %.pre506, %562 ], [ %.sink494, %48 ]
  %568 = phi double [ %.pre505, %562 ], [ %.sink495, %48 ]
  %.4 = phi i8 [ 1, %562 ], [ %.0, %48 ]
  %569 = getelementptr inbounds i8, ptr %0, i64 1768
  %570 = getelementptr inbounds i8, ptr %0, i64 2040
  %571 = getelementptr inbounds i8, ptr %0, i64 2168
  %572 = call noundef zeroext i1 @_ZN11alglib_implL33dfgenmod_updateworkingsetandmodelEPNS_9dfgmstateEPKNS_9ae_vectorES4_S4_ddbPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %569, ptr noundef nonnull %570, ptr noundef nonnull %571, double noundef %568, double noundef %567, i1 noundef zeroext true, ptr noundef %2)
  br i1 %572, label %573, label %583

573:                                              ; preds = %566
  %574 = getelementptr inbounds i8, ptr %0, i64 608
  %575 = load i64, ptr %574, align 8, !tbaa !55
  %576 = icmp eq i64 %575, 4
  br i1 %576, label %577, label %723

577:                                              ; preds = %573
  %578 = getelementptr inbounds i8, ptr %0, i64 30880
  %579 = load i64, ptr %578, align 8, !tbaa !56
  %580 = getelementptr inbounds i8, ptr %0, i64 688
  %581 = load i64, ptr %580, align 8, !tbaa !57
  %582 = add nsw i64 %581, %579
  store i64 %582, ptr %578, align 8, !tbaa !56
  br label %723

583:                                              ; preds = %566
  %584 = getelementptr inbounds i8, ptr %0, i64 30864
  %585 = load i64, ptr %584, align 8, !tbaa !58
  %.not467 = icmp eq i64 %585, 0
  br i1 %.not467, label %697, label %700

586:                                              ; preds = %459
  br i1 %470, label %587, label %588

587:                                              ; preds = %586
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1368)
  br label %588

588:                                              ; preds = %587, %586
  %589 = load double, ptr @_ZN11alglib_implL17dfgenmod_gammadecE, align 8, !tbaa !42
  %590 = call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %589, double noundef %.0438, ptr noundef %2)
  %591 = getelementptr inbounds i8, ptr %0, i64 1752
  %592 = load double, ptr %591, align 8, !tbaa !50
  %593 = fmul double %590, %592
  store double %593, ptr %10, align 8, !tbaa !42
  %594 = getelementptr inbounds i8, ptr %0, i64 1760
  %595 = load double, ptr %594, align 8, !tbaa !52
  %596 = fmul double %595, 1.500000e+00
  %597 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %593, double noundef %596)
  br i1 %597, label %598, label %._crit_edge500

._crit_edge500:                                   ; preds = %588
  %.pre = load double, ptr %10, align 8, !tbaa !42
  br label %600

598:                                              ; preds = %588
  %599 = load double, ptr %594, align 8, !tbaa !52
  store double %599, ptr %10, align 8, !tbaa !42
  br label %600

600:                                              ; preds = %._crit_edge500, %598
  %601 = phi double [ %.pre, %._crit_edge500 ], [ %599, %598 ]
  call void @_ZN11alglib_implL26dfgenmod_updatetrustregionEPNS_9dfgmstateEdPNS_8ae_stateE(ptr noundef nonnull %0, double noundef %601, ptr noundef %2)
  call void @_ZN11alglib_implL30dfgenmod_sendstepdenialtomodelEPNS_9dfgmstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %2)
  %602 = load i8, ptr %447, align 8, !tbaa !46, !range !40, !noundef !41
  %603 = trunc nuw i8 %602 to i1
  br i1 %603, label %604, label %605

604:                                              ; preds = %600
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1367)
  br label %605

605:                                              ; preds = %604, %600
  %606 = getelementptr inbounds i8, ptr %0, i64 1352
  %607 = getelementptr inbounds i8, ptr %0, i64 1360
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %607, i64 noundef 7, ptr noundef %2)
  %608 = getelementptr inbounds i8, ptr %0, i64 1488
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %608, i64 noundef 3, ptr noundef %2)
  store i32 -1, ptr %606, align 8, !tbaa !78
  %.pre501 = load double, ptr %8, align 8, !tbaa !42
  %.pre502 = load double, ptr %9, align 8, !tbaa !42
  br label %609

609:                                              ; preds = %48, %605
  %610 = phi double [ %.pre502, %605 ], [ %.sink494, %48 ]
  %611 = phi double [ %.pre501, %605 ], [ %.sink495, %48 ]
  %.5 = phi i8 [ 0, %605 ], [ %.0, %48 ]
  %612 = getelementptr inbounds i8, ptr %0, i64 1912
  %613 = getelementptr inbounds i8, ptr %0, i64 2040
  %614 = getelementptr inbounds i8, ptr %0, i64 2168
  %615 = call noundef zeroext i1 @_ZN11alglib_implL33dfgenmod_updateworkingsetandmodelEPNS_9dfgmstateEPKNS_9ae_vectorES4_S4_ddbPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %612, ptr noundef nonnull %613, ptr noundef nonnull %614, double noundef %611, double noundef %610, i1 noundef zeroext false, ptr noundef %2)
  br i1 %615, label %616, label %626

616:                                              ; preds = %609
  %617 = getelementptr inbounds i8, ptr %0, i64 608
  %618 = load i64, ptr %617, align 8, !tbaa !55
  %619 = icmp eq i64 %618, 4
  br i1 %619, label %620, label %723

620:                                              ; preds = %616
  %621 = getelementptr inbounds i8, ptr %0, i64 30880
  %622 = load i64, ptr %621, align 8, !tbaa !56
  %623 = getelementptr inbounds i8, ptr %0, i64 688
  %624 = load i64, ptr %623, align 8, !tbaa !57
  %625 = add nsw i64 %624, %622
  store i64 %625, ptr %621, align 8, !tbaa !56
  br label %723

626:                                              ; preds = %609
  %627 = getelementptr inbounds i8, ptr %0, i64 30864
  %628 = load i64, ptr %627, align 8, !tbaa !58
  %.not = icmp eq i64 %628, 0
  br i1 %.not, label %629, label %700

629:                                              ; preds = %626
  %630 = call noundef zeroext i1 @_ZN11alglib_implL28dfgenmod_restartautodetectedEPKNS_9dfgmstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %2)
  br i1 %630, label %631, label %655

631:                                              ; preds = %629
  %632 = getelementptr inbounds i8, ptr %0, i64 3184
  %633 = load i64, ptr %632, align 8, !tbaa !74
  %634 = icmp sgt i64 %633, 0
  br i1 %634, label %635, label %655

635:                                              ; preds = %631
  %636 = getelementptr inbounds i8, ptr %0, i64 1616
  %637 = load i8, ptr %636, align 8, !tbaa !46, !range !40, !noundef !41
  %638 = trunc nuw i8 %637 to i1
  br i1 %638, label %639, label %640

639:                                              ; preds = %635
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1369)
  br label %640

640:                                              ; preds = %639, %635
  %641 = getelementptr inbounds i8, ptr %0, i64 48
  %642 = load double, ptr %641, align 8, !tbaa !51
  %643 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %642, double noundef 1.000000e-01, ptr noundef %2)
  call void @_ZN11alglib_implL26dfgenmod_updatetrustregionEPNS_9dfgmstateEdPNS_8ae_stateE(ptr noundef nonnull %0, double noundef %643, ptr noundef %2)
  %644 = getelementptr inbounds i8, ptr %0, i64 1752
  %645 = load double, ptr %644, align 8, !tbaa !50
  %646 = getelementptr inbounds i8, ptr %0, i64 1760
  store double %645, ptr %646, align 8, !tbaa !52
  %647 = getelementptr inbounds i8, ptr %0, i64 2328
  store i64 0, ptr %647, align 8, !tbaa !53
  %648 = getelementptr inbounds i8, ptr %0, i64 3472
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %648, i8 0, i64 16, i1 false)
  %649 = load i64, ptr %632, align 8, !tbaa !74
  %650 = add nsw i64 %649, -1
  store i64 %650, ptr %632, align 8, !tbaa !74
  %651 = load i8, ptr %636, align 8, !tbaa !46, !range !40, !noundef !41
  %652 = trunc nuw i8 %651 to i1
  br i1 %652, label %653, label %697

653:                                              ; preds = %640
  %654 = trunc i64 %650 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1370, i32 noundef %654)
  br label %697

655:                                              ; preds = %629, %631
  %656 = call noundef zeroext i1 @_ZN11alglib_implL35dfgenmod_workingsetneedsimprovementEPNS_9dfgmstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %2)
  br i1 %656, label %657, label %682

657:                                              ; preds = %655
  %658 = getelementptr inbounds i8, ptr %0, i64 1616
  %659 = load i8, ptr %658, align 8, !tbaa !46, !range !40, !noundef !41
  %660 = trunc nuw i8 %659 to i1
  br i1 %660, label %661, label %662

661:                                              ; preds = %657
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1371)
  br label %662

662:                                              ; preds = %661, %657
  %663 = getelementptr inbounds i8, ptr %0, i64 1088
  %664 = getelementptr inbounds i8, ptr %0, i64 1096
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %664, i64 noundef 10, ptr noundef %2)
  %665 = getelementptr inbounds i8, ptr %0, i64 1160
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %665, i64 noundef 1, ptr noundef %2)
  %666 = getelementptr inbounds i8, ptr %0, i64 1224
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %666, i64 noundef 9, ptr noundef %2)
  store i32 -1, ptr %663, align 8, !tbaa !54
  br label %667

667:                                              ; preds = %48, %662
  %.6 = phi i8 [ %.5, %662 ], [ %.0, %48 ]
  %668 = call noundef zeroext i1 @_ZN11alglib_implL34dfgenmod_improveworkingsetgeometryEPNS_9dfgmstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %2)
  br i1 %668, label %669, label %679

669:                                              ; preds = %667
  %670 = getelementptr inbounds i8, ptr %0, i64 608
  %671 = load i64, ptr %670, align 8, !tbaa !55
  %672 = icmp eq i64 %671, 4
  br i1 %672, label %673, label %723

673:                                              ; preds = %669
  %674 = getelementptr inbounds i8, ptr %0, i64 30880
  %675 = load i64, ptr %674, align 8, !tbaa !56
  %676 = getelementptr inbounds i8, ptr %0, i64 688
  %677 = load i64, ptr %676, align 8, !tbaa !57
  %678 = add nsw i64 %677, %675
  store i64 %678, ptr %674, align 8, !tbaa !56
  br label %723

679:                                              ; preds = %667
  %680 = getelementptr inbounds i8, ptr %0, i64 30864
  %681 = load i64, ptr %680, align 8, !tbaa !58
  %.not466 = icmp eq i64 %681, 0
  br i1 %.not466, label %697, label %700

682:                                              ; preds = %655
  %683 = call noundef zeroext i1 @_ZN11alglib_implL24dfgenmod_deltakatminimumEPKNS_9dfgmstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %2)
  br i1 %683, label %684, label %697

684:                                              ; preds = %682
  %685 = getelementptr inbounds i8, ptr %0, i64 1616
  %686 = load i8, ptr %685, align 8, !tbaa !46, !range !40, !noundef !41
  %687 = trunc nuw i8 %686 to i1
  br i1 %687, label %688, label %689

688:                                              ; preds = %684
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1372)
  br label %689

689:                                              ; preds = %688, %684
  %690 = getelementptr inbounds i8, ptr %0, i64 1760
  %691 = load double, ptr %690, align 8, !tbaa !52
  store double %691, ptr %10, align 8, !tbaa !42
  %692 = load double, ptr @_ZN11alglib_implL15dfgenmod_alpha2E, align 8, !tbaa !42
  %693 = fmul double %691, %692
  call void @_ZN11alglib_implL26dfgenmod_updatetrustregionEPNS_9dfgmstateEdPNS_8ae_stateE(ptr noundef nonnull %0, double noundef %693, ptr noundef %2)
  %694 = load double, ptr @_ZN11alglib_implL15dfgenmod_alpha1E, align 8, !tbaa !42
  %695 = load double, ptr %10, align 8, !tbaa !42
  %696 = fmul double %694, %695
  store double %696, ptr %690, align 8, !tbaa !52
  br label %697

697:                                              ; preds = %653, %640, %682, %689, %679, %583
  %.7 = phi i8 [ %.4, %583 ], [ %.5, %653 ], [ %.5, %640 ], [ %.6, %679 ], [ %.5, %689 ], [ %.5, %682 ]
  %698 = getelementptr inbounds i8, ptr %0, i64 30872
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %698, ptr noundef %2)
  br label %83

.sink.split.sink.split:                           ; preds = %244, %255, %212
  %.str.1337.sink = phi ptr [ @.str.1333, %212 ], [ @.str.1337, %255 ], [ %.str.1335..str.1336, %244 ]
  %.sink510.ph = phi i64 [ 5, %212 ], [ 8, %255 ], [ %., %244 ]
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull %.str.1337.sink)
  br label %.sink.split

.sink.split:                                      ; preds = %244, %.sink.split.sink.split, %255, %212
  %.sink510 = phi i64 [ 5, %212 ], [ 8, %255 ], [ %.sink510.ph, %.sink.split.sink.split ], [ %., %244 ]
  %699 = getelementptr inbounds i8, ptr %0, i64 30864
  store i64 %.sink510, ptr %699, align 8, !tbaa !58
  br label %700

700:                                              ; preds = %.sink.split, %679, %626, %583, %407, %103
  %701 = getelementptr inbounds i8, ptr %0, i64 30864
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext true, ptr noundef nonnull @.str.1373, ptr noundef %2)
  %702 = load i64, ptr %701, align 8, !tbaa !58
  %703 = icmp slt i64 %702, 0
  br i1 %703, label %762, label %704

704:                                              ; preds = %700
  %705 = getelementptr inbounds i8, ptr %0, i64 3176
  %706 = load i8, ptr %705, align 8, !tbaa !48, !range !40, !noundef !41
  %707 = trunc nuw i8 %706 to i1
  br i1 %707, label %708, label %762

708:                                              ; preds = %704
  %709 = getelementptr inbounds i8, ptr %0, i64 3177
  %710 = load i8, ptr %709, align 1, !tbaa !49, !range !40, !noundef !41
  %711 = trunc nuw i8 %710 to i1
  %712 = getelementptr inbounds i8, ptr %0, i64 1616
  %713 = load i8, ptr %712, align 8, !tbaa !46, !range !40, !noundef !41
  %714 = trunc nuw i8 %713 to i1
  br i1 %711, label %718, label %715

715:                                              ; preds = %708
  br i1 %714, label %716, label %717

716:                                              ; preds = %715
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1374)
  br label %717

717:                                              ; preds = %716, %715
  store i64 -8, ptr %701, align 8, !tbaa !58
  br label %762

718:                                              ; preds = %708
  br i1 %714, label %719, label %720

719:                                              ; preds = %718
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1375)
  %.pre508 = load i64, ptr %701, align 8, !tbaa !58
  br label %720

720:                                              ; preds = %719, %718
  %721 = phi i64 [ %.pre508, %719 ], [ %702, %718 ]
  %722 = add nsw i64 %721, 800
  store i64 %722, ptr %701, align 8, !tbaa !58
  br label %762

723:                                              ; preds = %669, %673, %616, %620, %573, %577, %412, %416, %397, %401, %93, %97, %197
  %.sink512 = phi i32 [ 1, %197 ], [ 0, %97 ], [ 0, %93 ], [ 2, %401 ], [ 2, %397 ], [ 3, %416 ], [ 3, %412 ], [ 4, %577 ], [ 4, %573 ], [ 5, %620 ], [ 5, %616 ], [ 6, %673 ], [ 6, %669 ]
  %.4458 = phi i64 [ %.3457, %197 ], [ %.2456, %97 ], [ %.2456, %93 ], [ %.0454, %401 ], [ %.0454, %397 ], [ %.0454, %416 ], [ %.0454, %412 ], [ %.0454, %577 ], [ %.0454, %573 ], [ %.0454, %620 ], [ %.0454, %616 ], [ %.0454, %673 ], [ %.0454, %669 ]
  %.4453 = phi i64 [ %.3452, %197 ], [ %.2451, %97 ], [ %.2451, %93 ], [ %.0449, %401 ], [ %.0449, %397 ], [ %.0449, %416 ], [ %.0449, %412 ], [ %.0449, %577 ], [ %.0449, %573 ], [ %.0449, %620 ], [ %.0449, %616 ], [ %.0449, %673 ], [ %.0449, %669 ]
  %.4448 = phi i64 [ %.3447, %197 ], [ %.2446, %97 ], [ %.2446, %93 ], [ %.0444, %401 ], [ %.0444, %397 ], [ %.0444, %416 ], [ %.0444, %412 ], [ %.0444, %577 ], [ %.0444, %573 ], [ %.0444, %620 ], [ %.0444, %616 ], [ %.0444, %673 ], [ %.0444, %669 ]
  %.5443 = phi double [ %.3441, %197 ], [ %.2440, %97 ], [ %.2440, %93 ], [ %.4442, %401 ], [ %.4442, %397 ], [ %348, %416 ], [ %348, %412 ], [ %.0438, %577 ], [ %.0438, %573 ], [ %.0438, %620 ], [ %.0438, %616 ], [ %.0438, %673 ], [ %.0438, %669 ]
  %.8 = phi i8 [ %.3, %197 ], [ %.2, %97 ], [ %.2, %93 ], [ %.0, %401 ], [ %.0, %397 ], [ %.0, %416 ], [ %.0, %412 ], [ %.4, %577 ], [ %.4, %573 ], [ %.5, %620 ], [ %.5, %616 ], [ %.6, %673 ], [ %.6, %669 ]
  store i32 %.sink512, ptr %13, align 8, !tbaa !5
  %724 = load i64, ptr %4, align 8, !tbaa !38
  %725 = getelementptr inbounds i8, ptr %0, i64 888
  %726 = load ptr, ptr %725, align 8, !tbaa !37
  store i64 %724, ptr %726, align 8, !tbaa !38
  %727 = load i64, ptr %5, align 8, !tbaa !38
  %728 = load ptr, ptr %725, align 8, !tbaa !37
  %729 = getelementptr inbounds i8, ptr %728, i64 8
  store i64 %727, ptr %729, align 8, !tbaa !38
  %730 = load ptr, ptr %725, align 8, !tbaa !37
  %731 = getelementptr inbounds i8, ptr %730, i64 16
  store i64 %.4458, ptr %731, align 8, !tbaa !38
  %732 = load ptr, ptr %725, align 8, !tbaa !37
  %733 = getelementptr inbounds i8, ptr %732, i64 24
  store i64 %.4453, ptr %733, align 8, !tbaa !38
  %734 = load ptr, ptr %725, align 8, !tbaa !37
  %735 = getelementptr inbounds i8, ptr %734, i64 32
  store i64 %.4448, ptr %735, align 8, !tbaa !38
  %736 = getelementptr inbounds i8, ptr %0, i64 952
  %737 = load ptr, ptr %736, align 8, !tbaa !37
  %738 = and i8 %.8, 1
  store i8 %738, ptr %737, align 1, !tbaa !39
  %739 = load double, ptr %6, align 8, !tbaa !42
  %740 = getelementptr inbounds i8, ptr %0, i64 1016
  %741 = load ptr, ptr %740, align 8, !tbaa !37
  store double %739, ptr %741, align 8, !tbaa !42
  %742 = load double, ptr %7, align 8, !tbaa !42
  %743 = load ptr, ptr %740, align 8, !tbaa !37
  %744 = getelementptr inbounds i8, ptr %743, i64 8
  store double %742, ptr %744, align 8, !tbaa !42
  %745 = load double, ptr %8, align 8, !tbaa !42
  %746 = load ptr, ptr %740, align 8, !tbaa !37
  %747 = getelementptr inbounds i8, ptr %746, i64 16
  store double %745, ptr %747, align 8, !tbaa !42
  %748 = load double, ptr %9, align 8, !tbaa !42
  %749 = load ptr, ptr %740, align 8, !tbaa !37
  %750 = getelementptr inbounds i8, ptr %749, i64 24
  store double %748, ptr %750, align 8, !tbaa !42
  %751 = load ptr, ptr %740, align 8, !tbaa !37
  %752 = getelementptr inbounds i8, ptr %751, i64 32
  store double %.5443, ptr %752, align 8, !tbaa !42
  %753 = load double, ptr %10, align 8, !tbaa !42
  %754 = load ptr, ptr %740, align 8, !tbaa !37
  %755 = getelementptr inbounds i8, ptr %754, i64 40
  store double %753, ptr %755, align 8, !tbaa !42
  %756 = load double, ptr %11, align 8, !tbaa !42
  %757 = load ptr, ptr %740, align 8, !tbaa !37
  %758 = getelementptr inbounds i8, ptr %757, i64 48
  store double %756, ptr %758, align 8, !tbaa !42
  %759 = load double, ptr %12, align 8, !tbaa !42
  %760 = load ptr, ptr %740, align 8, !tbaa !37
  %761 = getelementptr inbounds i8, ptr %760, i64 56
  store double %759, ptr %761, align 8, !tbaa !42
  br label %762

762:                                              ; preds = %704, %720, %700, %723, %717
  %.0459 = phi i1 [ true, %723 ], [ false, %717 ], [ false, %700 ], [ false, %720 ], [ false, %704 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #6
  ret i1 %.0459
}

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef double @_ZN11alglib_implL34dfgenmod_normrelativetotrustregionEPKNS_9dfgmstateEPKNS_9ae_vectorEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN11alglib_implL28dfgenmod_restartautodetectedEPKNS_9dfgmstateEPNS_8ae_stateE(ptr noundef, ptr noundef) local_unnamed_addr #4

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !16, i64 824}
!6 = !{!"_ZTSN11alglib_impl9dfgmstateE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !10, i64 32, !7, i64 40, !11, i64 48, !7, i64 56, !12, i64 64, !12, i64 128, !12, i64 192, !12, i64 256, !12, i64 320, !12, i64 384, !12, i64 448, !12, i64 512, !11, i64 576, !7, i64 584, !7, i64 592, !11, i64 600, !7, i64 608, !12, i64 616, !11, i64 680, !7, i64 688, !12, i64 696, !12, i64 760, !15, i64 824, !15, i64 1088, !15, i64 1352, !10, i64 1616, !12, i64 1624, !12, i64 1688, !11, i64 1752, !11, i64 1760, !12, i64 1768, !12, i64 1832, !11, i64 1896, !11, i64 1904, !12, i64 1912, !12, i64 1976, !12, i64 2040, !12, i64 2104, !12, i64 2168, !11, i64 2232, !11, i64 2240, !17, i64 2248, !7, i64 2328, !18, i64 2336, !19, i64 2360, !20, i64 2648, !10, i64 3176, !10, i64 3177, !7, i64 3184, !11, i64 3192, !17, i64 3200, !12, i64 3280, !12, i64 3344, !12, i64 3408, !7, i64 3472, !7, i64 3480, !12, i64 3488, !12, i64 3552, !12, i64 3616, !12, i64 3680, !21, i64 3744, !17, i64 30392, !22, i64 30472, !36, i64 30840, !7, i64 30864, !7, i64 30872, !7, i64 30880}
!7 = !{!"long", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"bool", !8, i64 0}
!11 = !{!"double", !8, i64 0}
!12 = !{!"_ZTSN11alglib_impl9ae_vectorE", !7, i64 0, !7, i64 8, !10, i64 16, !13, i64 24, !8, i64 56}
!13 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !14, i64 0, !14, i64 8, !14, i64 16, !14, i64 24}
!14 = !{!"any pointer", !8, i64 0}
!15 = !{!"_ZTSN11alglib_impl10rcommstateE", !16, i64 0, !12, i64 8, !12, i64 72, !12, i64 136, !12, i64 200}
!16 = !{!"int", !8, i64 0}
!17 = !{!"_ZTSN11alglib_impl9ae_matrixE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !10, i64 32, !13, i64 40, !8, i64 72}
!18 = !{!"_ZTSN11alglib_impl10hqrndstateE", !7, i64 0, !7, i64 8, !7, i64 16}
!19 = !{!"_ZTSN11alglib_impl10df2psmodelE", !12, i64 0, !17, i64 64, !12, i64 144, !17, i64 208}
!20 = !{!"_ZTSN11alglib_impl11dfolsamodelE", !17, i64 0, !17, i64 80, !17, i64 160, !12, i64 240, !17, i64 304, !12, i64 384, !17, i64 448}
!21 = !{!"_ZTSN11alglib_impl9vipmstateE", !10, i64 0, !10, i64 1, !7, i64 8, !7, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !10, i64 48, !12, i64 56, !12, i64 120, !12, i64 184, !11, i64 248, !12, i64 256, !17, i64 320, !22, i64 400, !12, i64 768, !7, i64 832, !10, i64 840, !12, i64 848, !12, i64 912, !12, i64 976, !12, i64 1040, !12, i64 1104, !12, i64 1168, !17, i64 1232, !17, i64 1312, !22, i64 1392, !22, i64 1760, !22, i64 2128, !12, i64 2496, !12, i64 2560, !12, i64 2624, !12, i64 2688, !12, i64 2752, !7, i64 2816, !7, i64 2824, !23, i64 2832, !23, i64 3488, !23, i64 4144, !23, i64 4800, !23, i64 5456, !12, i64 6112, !12, i64 6176, !12, i64 6240, !12, i64 6304, !12, i64 6368, !7, i64 6432, !7, i64 6440, !7, i64 6448, !7, i64 6456, !7, i64 6464, !7, i64 6472, !10, i64 6480, !10, i64 6481, !7, i64 6488, !10, i64 6496, !10, i64 6497, !12, i64 6504, !12, i64 6568, !12, i64 6632, !12, i64 6696, !12, i64 6760, !12, i64 6824, !12, i64 6888, !12, i64 6952, !12, i64 7016, !12, i64 7080, !12, i64 7144, !12, i64 7208, !12, i64 7272, !12, i64 7336, !12, i64 7400, !17, i64 7464, !12, i64 7544, !12, i64 7608, !12, i64 7672, !12, i64 7736, !12, i64 7800, !24, i64 7864, !35, i64 23944, !12, i64 24584, !12, i64 24648, !12, i64 24712, !12, i64 24776, !12, i64 24840, !12, i64 24904, !12, i64 24968, !12, i64 25032, !23, i64 25096, !12, i64 25752, !12, i64 25816, !12, i64 25880, !12, i64 25944, !12, i64 26008, !17, i64 26072, !12, i64 26152, !12, i64 26216, !22, i64 26280}
!22 = !{!"_ZTSN11alglib_impl12sparsematrixE", !12, i64 0, !12, i64 64, !12, i64 128, !12, i64 192, !12, i64 256, !7, i64 320, !7, i64 328, !7, i64 336, !7, i64 344, !7, i64 352, !7, i64 360}
!23 = !{!"_ZTSN11alglib_impl8vipmvarsE", !7, i64 0, !7, i64 8, !12, i64 16, !12, i64 80, !12, i64 144, !12, i64 208, !12, i64 272, !12, i64 336, !12, i64 400, !12, i64 464, !12, i64 528, !12, i64 592}
!24 = !{!"_ZTSN11alglib_impl23vipmreducedsparsesystemE", !22, i64 0, !12, i64 368, !12, i64 432, !12, i64 496, !12, i64 560, !7, i64 624, !25, i64 632, !12, i64 15696, !12, i64 15760, !12, i64 15824, !12, i64 15888, !12, i64 15952, !12, i64 16016}
!25 = !{!"_ZTSN11alglib_impl14spcholanalysisE", !7, i64 0, !7, i64 8, !7, i64 16, !10, i64 24, !7, i64 32, !11, i64 40, !11, i64 48, !11, i64 56, !11, i64 64, !12, i64 72, !10, i64 136, !10, i64 137, !10, i64 138, !10, i64 139, !10, i64 140, !12, i64 144, !7, i64 208, !12, i64 216, !12, i64 280, !12, i64 344, !12, i64 408, !12, i64 472, !12, i64 536, !10, i64 600, !12, i64 608, !12, i64 672, !12, i64 736, !12, i64 800, !12, i64 864, !12, i64 928, !10, i64 992, !10, i64 993, !26, i64 1000, !12, i64 1512, !12, i64 1576, !12, i64 1640, !12, i64 1704, !12, i64 1768, !12, i64 1832, !27, i64 1896, !27, i64 2040, !27, i64 2184, !27, i64 2328, !27, i64 2472, !27, i64 2616, !12, i64 2760, !12, i64 2824, !12, i64 2888, !12, i64 2952, !12, i64 3016, !29, i64 3080, !34, i64 7464, !12, i64 13816, !12, i64 13880, !12, i64 13944, !12, i64 14008, !12, i64 14072, !12, i64 14136, !22, i64 14200, !22, i64 14568, !12, i64 14936, !12, i64 15000}
!26 = !{!"_ZTSN11alglib_impl9spcholadjE", !12, i64 0, !12, i64 64, !12, i64 128, !12, i64 192, !12, i64 256, !12, i64 320, !12, i64 384, !12, i64 448}
!27 = !{!"_ZTSN11alglib_impl9ae_nxpoolE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !13, i64 32, !28, i64 64, !13, i64 112}
!28 = !{!"_ZTSN11alglib_impl7ae_lockE", !14, i64 0, !13, i64 8, !10, i64 40}
!29 = !{!"_ZTSN11alglib_impl9amdbufferE", !7, i64 0, !10, i64 8, !10, i64 9, !12, i64 16, !12, i64 80, !12, i64 144, !30, i64 208, !30, i64 568, !30, i64 928, !31, i64 1288, !32, i64 1496, !33, i64 1968, !12, i64 2120, !12, i64 2184, !12, i64 2248, !33, i64 2312, !33, i64 2464, !33, i64 2616, !33, i64 2768, !33, i64 2920, !33, i64 3072, !12, i64 3224, !7, i64 3288, !33, i64 3296, !33, i64 3448, !30, i64 3600, !33, i64 3960, !12, i64 4112, !12, i64 4176, !12, i64 4240, !17, i64 4304}
!30 = !{!"_ZTSN11alglib_impl8amdknsetE", !7, i64 0, !7, i64 8, !12, i64 16, !12, i64 80, !12, i64 144, !12, i64 208, !12, i64 272, !7, i64 336, !7, i64 344, !7, i64 352}
!31 = !{!"_ZTSN11alglib_impl11amdllmatrixE", !7, i64 0, !12, i64 8, !12, i64 72, !12, i64 136, !7, i64 200}
!32 = !{!"_ZTSN11alglib_impl12amdvertexsetE", !7, i64 0, !10, i64 8, !7, i64 16, !12, i64 24, !12, i64 88, !12, i64 152, !12, i64 216, !12, i64 280, !12, i64 344, !12, i64 408}
!33 = !{!"_ZTSN11alglib_impl5nisetE", !7, i64 0, !7, i64 8, !12, i64 16, !12, i64 80, !7, i64 144}
!34 = !{!"_ZTSN11alglib_impl18priorityamdbuffersE", !12, i64 0, !12, i64 64, !29, i64 128, !22, i64 4512, !22, i64 4880, !22, i64 5248, !22, i64 5616, !22, i64 5984}
!35 = !{!"_ZTSN11alglib_impl17vipmrighthandsideE", !12, i64 0, !12, i64 64, !12, i64 128, !12, i64 192, !12, i64 256, !12, i64 320, !12, i64 384, !12, i64 448, !12, i64 512, !12, i64 576}
!36 = !{!"_ZTSN11alglib_impl12matinvreportE", !7, i64 0, !11, i64 8, !11, i64 16}
!37 = !{!8, !8, i64 0}
!38 = !{!7, !7, i64 0}
!39 = !{!10, !10, i64 0}
!40 = !{i8 0, i8 2}
!41 = !{}
!42 = !{!11, !11, i64 0}
!43 = !{!6, !7, i64 0}
!44 = !{!6, !7, i64 8}
!45 = !{!6, !7, i64 24}
!46 = !{!6, !10, i64 1616}
!47 = !{!6, !7, i64 40}
!48 = !{!6, !10, i64 3176}
!49 = !{!6, !10, i64 3177}
!50 = !{!6, !11, i64 1752}
!51 = !{!6, !11, i64 48}
!52 = !{!6, !11, i64 1760}
!53 = !{!6, !7, i64 2328}
!54 = !{!6, !16, i64 1088}
!55 = !{!6, !7, i64 608}
!56 = !{!6, !7, i64 30880}
!57 = !{!6, !7, i64 688}
!58 = !{!6, !7, i64 30864}
!59 = !{!6, !7, i64 16}
!60 = !{!6, !10, i64 32}
!61 = !{!14, !14, i64 0}
!62 = distinct !{!62, !63}
!63 = !{!"llvm.loop.mustprogress"}
!64 = !{!6, !11, i64 2232}
!65 = distinct !{!65, !63}
!66 = distinct !{!66, !67}
!67 = !{!"llvm.loop.unroll.disable"}
!68 = !{!6, !11, i64 2240}
!69 = !{!6, !11, i64 680}
!70 = !{!6, !7, i64 584}
!71 = !{!6, !7, i64 30872}
!72 = !{!6, !11, i64 576}
!73 = !{!6, !11, i64 600}
!74 = !{!6, !7, i64 3184}
!75 = !{!6, !7, i64 56}
!76 = !{!6, !7, i64 3472}
!77 = distinct !{!77, !63}
!78 = !{!6, !16, i64 1352}


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