; 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::ssgdstate" = type { i64, i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, double, double, double, double, double, i64, double, %"struct.alglib_impl::ae_vector", double, %"struct.alglib_impl::ae_vector", i8, i8, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::hqrndstate", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, double, double, i64, i64, %"struct.alglib_impl::rcommstate", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::sparsematrix" }
%"struct.alglib_impl::ae_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.1 }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%union.anon.1 = type { ptr }
%"struct.alglib_impl::hqrndstate" = type { 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::ae_vector" = type { i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%union.anon.0 = 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 }

@.str.208 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.212 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.612 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.708 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.733 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.1119 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1120 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1130 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.1251 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.1428 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.1429 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1430 = external hidden unnamed_addr constant [102 x i8], align 1
@_ZN11alglib_implL22ssgd_secanttoblurratioE = external hidden global double, align 8
@.str.1431 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.1432 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.1433 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.1434 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.1435 = external hidden unnamed_addr constant [103 x i8], align 1
@.str.1436 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.1437 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.1438 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.1439 = external hidden unnamed_addr constant [103 x i8], align 1
@_ZN11alglib_implL16ssgd_sqjmomentumE = external hidden global double, align 8
@.str.1440 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.1441 = external hidden unnamed_addr constant [38 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

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

declare noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef, ptr noundef) #2

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

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

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

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

declare noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef) #2

declare void @_ZN11alglib_impl36tracevectorunscaledunshiftedautoprecEPKNS_9ae_vectorElS2_bS2_bPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef, i1 noundef zeroext, ptr noundef, i1 noundef zeroext, ptr noundef) #2

declare void @_ZN11alglib_impl19tracevectorautoprecEPKNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef) #2

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

declare void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef, double noundef, ptr noundef, ptr noundef) #2

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

declare noundef double @_ZN11alglib_impl6rdotv2ElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef, ptr noundef, ptr noundef) #2

declare void @_ZN11alglib_impl5raddvEldPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef, double noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @_ZN11alglib_impl5rmulvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef, double noundef, ptr noundef, ptr noundef) #2

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

declare noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef, ptr noundef) #2

declare noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef, ptr noundef) #2

declare noundef double @_ZN11alglib_impl5rmax3EdddPNS_8ae_stateE(double noundef, double noundef, double noundef, ptr noundef) #2

declare noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef, i64 noundef, ptr noundef) #2

declare void @_ZN11alglib_impl10rmergemaxvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @_ZN11alglib_impl10rmergeminvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @_ZN11alglib_impl9hqrndseedEllPNS_10hqrndstateEPNS_8ae_stateE(i64 noundef, i64 noundef, ptr noundef, ptr noundef) #2

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN11alglib_impl13ssgditerationEPNS_9ssgdstateEbPNS_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 i8, align 1
  %12 = alloca i8, align 1
  %13 = alloca i64, align 8
  %14 = alloca i64, align 8
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca i8, align 1
  %26 = alloca i32, align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  %27 = zext i1 %1 to i8
  store i8 %27, 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 1, ptr %11) #5
  call void @llvm.lifetime.start.p0(i64 1, 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 8, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #5
  %28 = load ptr, ptr %5, align 8, !tbaa !5
  %29 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %28, i32 0, i32 45
  %30 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %29, i32 0, i32 0
  %31 = load i32, ptr %30, align 8, !tbaa !11
  %32 = icmp sge i32 %31, 0
  br i1 %32, label %33, label %157

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

157:                                              ; preds = %3
  store i64 359, ptr %8, align 8, !tbaa !23
  store i64 -58, ptr %9, align 8, !tbaa !23
  store i64 -919, ptr %10, align 8, !tbaa !23
  store i64 -909, ptr %13, align 8, !tbaa !23
  store i64 81, ptr %14, align 8, !tbaa !23
  store i64 255, ptr %15, align 8, !tbaa !23
  store i64 74, ptr %16, align 8, !tbaa !23
  store i8 0, ptr %11, align 1, !tbaa !9
  store i8 1, ptr %12, align 1, !tbaa !9
  store double 2.050000e+02, ptr %17, align 8, !tbaa !26
  store double -8.380000e+02, ptr %18, align 8, !tbaa !26
  store double 9.390000e+02, ptr %19, align 8, !tbaa !26
  store double -5.260000e+02, ptr %20, align 8, !tbaa !26
  store double 7.630000e+02, ptr %21, align 8, !tbaa !26
  store double -5.410000e+02, ptr %22, align 8, !tbaa !26
  store double -6.980000e+02, ptr %23, align 8, !tbaa !26
  store double -9.000000e+02, ptr %24, align 8, !tbaa !26
  br label %158

158:                                              ; preds = %157, %33
  %159 = load ptr, ptr %5, align 8, !tbaa !5
  %160 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %159, i32 0, i32 45
  %161 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %160, i32 0, i32 0
  %162 = load i32, ptr %161, align 8, !tbaa !11
  %163 = icmp eq i32 %162, 0
  br i1 %163, label %164, label %165

164:                                              ; preds = %158
  br label %275

165:                                              ; preds = %158
  %166 = load ptr, ptr %5, align 8, !tbaa !5
  %167 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %166, i32 0, i32 45
  %168 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %167, i32 0, i32 0
  %169 = load i32, ptr %168, align 8, !tbaa !11
  %170 = icmp eq i32 %169, 1
  br i1 %170, label %171, label %172

171:                                              ; preds = %165
  br label %432

172:                                              ; preds = %165
  %173 = load ptr, ptr %5, align 8, !tbaa !5
  %174 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %173, i32 0, i32 45
  %175 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %174, i32 0, i32 0
  %176 = load i32, ptr %175, align 8, !tbaa !11
  %177 = icmp eq i32 %176, 2
  br i1 %177, label %178, label %179

178:                                              ; preds = %172
  br label %606

179:                                              ; preds = %172
  %180 = load ptr, ptr %5, align 8, !tbaa !5
  %181 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %180, i32 0, i32 45
  %182 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %181, i32 0, i32 0
  %183 = load i32, ptr %182, align 8, !tbaa !11
  %184 = icmp eq i32 %183, 3
  br i1 %184, label %185, label %186

185:                                              ; preds = %179
  br label %671

186:                                              ; preds = %179
  %187 = load ptr, ptr %5, align 8, !tbaa !5
  %188 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %187, i32 0, i32 0
  %189 = load i64, ptr %188, align 8, !tbaa !27
  store i64 %189, ptr %8, align 8, !tbaa !23
  %190 = load ptr, ptr %5, align 8, !tbaa !5
  %191 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %190, i32 0, i32 1
  %192 = load i64, ptr %191, align 8, !tbaa !28
  store i64 %192, ptr %9, align 8, !tbaa !23
  %193 = load ptr, ptr %5, align 8, !tbaa !5
  %194 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %193, i32 0, i32 2
  %195 = load i64, ptr %194, align 8, !tbaa !29
  store i64 %195, ptr %10, align 8, !tbaa !23
  %196 = call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef @.str.1428)
  %197 = zext i1 %196 to i8
  store i8 %197, ptr %11, align 1, !tbaa !9
  %198 = load i8, ptr %11, align 1, !tbaa !9, !range !24, !noundef !25
  %199 = trunc i8 %198 to i1
  br i1 %199, label %200, label %202

200:                                              ; preds = %186
  %201 = call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef @.str.1429)
  br label %202

202:                                              ; preds = %200, %186
  %203 = phi i1 [ false, %186 ], [ %201, %200 ]
  %204 = zext i1 %203 to i8
  store i8 %204, ptr %12, align 1, !tbaa !9
  %205 = load ptr, ptr %5, align 8, !tbaa !5
  %206 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_implL23ssgd_clearrequestfieldsEPNS_9ssgdstateEPNS_8ae_stateE(ptr noundef %205, ptr noundef %206)
  %207 = load ptr, ptr %5, align 8, !tbaa !5
  %208 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %207, i32 0, i32 34
  %209 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl9hqrndseedEllPNS_10hqrndstateEPNS_8ae_stateE(i64 noundef 3366544, i64 noundef 86335763, ptr noundef %208, ptr noundef %209)
  %210 = load i64, ptr %8, align 8, !tbaa !23
  %211 = load ptr, ptr %5, align 8, !tbaa !5
  %212 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %211, i32 0, i32 51
  %213 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %210, ptr noundef %212, ptr noundef %213)
  %214 = load i64, ptr %8, align 8, !tbaa !23
  %215 = load ptr, ptr %5, align 8, !tbaa !5
  %216 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %215, i32 0, i32 52
  %217 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %214, ptr noundef %216, ptr noundef %217)
  %218 = load i64, ptr %8, align 8, !tbaa !23
  %219 = load ptr, ptr %5, align 8, !tbaa !5
  %220 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %219, i32 0, i32 38
  %221 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %218, ptr noundef %220, ptr noundef %221)
  %222 = load i64, ptr %8, align 8, !tbaa !23
  %223 = load ptr, ptr %5, align 8, !tbaa !5
  %224 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %223, i32 0, i32 3
  %225 = load ptr, ptr %5, align 8, !tbaa !5
  %226 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %225, i32 0, i32 37
  %227 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %222, ptr noundef %224, ptr noundef %226, ptr noundef %227)
  %228 = load i64, ptr %8, align 8, !tbaa !23
  %229 = load ptr, ptr %5, align 8, !tbaa !5
  %230 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %229, i32 0, i32 7
  %231 = load ptr, ptr %5, align 8, !tbaa !5
  %232 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %231, i32 0, i32 37
  %233 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl10rmergemaxvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %228, ptr noundef %230, ptr noundef %232, ptr noundef %233)
  %234 = load i64, ptr %8, align 8, !tbaa !23
  %235 = load ptr, ptr %5, align 8, !tbaa !5
  %236 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %235, i32 0, i32 8
  %237 = load ptr, ptr %5, align 8, !tbaa !5
  %238 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %237, i32 0, i32 37
  %239 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl10rmergeminvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %234, ptr noundef %236, ptr noundef %238, ptr noundef %239)
  %240 = load i64, ptr %8, align 8, !tbaa !23
  %241 = load ptr, ptr %5, align 8, !tbaa !5
  %242 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %241, i32 0, i32 39
  %243 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %240, double noundef 0.000000e+00, ptr noundef %242, ptr noundef %243)
  %244 = load ptr, ptr %5, align 8, !tbaa !5
  %245 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %244, i32 0, i32 43
  store i64 0, ptr %245, align 8, !tbaa !30
  %246 = load ptr, ptr %5, align 8, !tbaa !5
  %247 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %246, i32 0, i32 44
  store i64 0, ptr %247, align 8, !tbaa !31
  store double 5.000000e-16, ptr %21, align 8, !tbaa !26
  %248 = load i64, ptr %10, align 8, !tbaa !23
  %249 = add nsw i64 1, %248
  %250 = load ptr, ptr %5, align 8, !tbaa !5
  %251 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %250, i32 0, i32 32
  %252 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %249, double noundef 5.000000e-16, ptr noundef %251, ptr noundef %252)
  %253 = load i64, ptr %10, align 8, !tbaa !23
  %254 = add nsw i64 1, %253
  %255 = load ptr, ptr %5, align 8, !tbaa !5
  %256 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %255, i32 0, i32 33
  %257 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %254, double noundef 1.000000e+00, ptr noundef %256, ptr noundef %257)
  store double 1.000000e+00, ptr %22, align 8, !tbaa !26
  %258 = load i64, ptr %8, align 8, !tbaa !23
  %259 = load ptr, ptr %5, align 8, !tbaa !5
  %260 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %259, i32 0, i32 37
  %261 = load ptr, ptr %5, align 8, !tbaa !5
  %262 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %261, i32 0, i32 35
  %263 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %258, ptr noundef %260, ptr noundef %262, ptr noundef %263)
  %264 = load i64, ptr %8, align 8, !tbaa !23
  %265 = load ptr, ptr %5, align 8, !tbaa !5
  %266 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %265, i32 0, i32 35
  %267 = load ptr, ptr %5, align 8, !tbaa !5
  %268 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %267, i32 0, i32 27
  %269 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %264, ptr noundef %266, ptr noundef %268, ptr noundef %269)
  %270 = load ptr, ptr %5, align 8, !tbaa !5
  %271 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %270, i32 0, i32 30
  store i8 1, ptr %271, align 8, !tbaa !32
  %272 = load ptr, ptr %5, align 8, !tbaa !5
  %273 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %272, i32 0, i32 45
  %274 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %273, i32 0, i32 0
  store i32 0, ptr %274, align 8, !tbaa !11
  br label %996

275:                                              ; preds = %164
  %276 = load ptr, ptr %5, align 8, !tbaa !5
  %277 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %276, i32 0, i32 30
  store i8 0, ptr %277, align 8, !tbaa !32
  %278 = load i64, ptr %10, align 8, !tbaa !23
  %279 = add nsw i64 1, %278
  %280 = load ptr, ptr %5, align 8, !tbaa !5
  %281 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %280, i32 0, i32 29
  %282 = load ptr, ptr %5, align 8, !tbaa !5
  %283 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %282, i32 0, i32 36
  %284 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %279, ptr noundef %281, ptr noundef %283, ptr noundef %284)
  %285 = load i64, ptr %8, align 8, !tbaa !23
  %286 = load ptr, ptr %5, align 8, !tbaa !5
  %287 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %286, i32 0, i32 47
  %288 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %285, ptr noundef %287, ptr noundef %288)
  %289 = load i64, ptr %8, align 8, !tbaa !23
  %290 = load ptr, ptr %5, align 8, !tbaa !5
  %291 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %290, i32 0, i32 48
  %292 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %289, ptr noundef %291, ptr noundef %292)
  %293 = load i64, ptr %10, align 8, !tbaa !23
  %294 = add nsw i64 1, %293
  %295 = load ptr, ptr %5, align 8, !tbaa !5
  %296 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %295, i32 0, i32 49
  %297 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %294, ptr noundef %296, ptr noundef %297)
  %298 = load i64, ptr %10, align 8, !tbaa !23
  %299 = add nsw i64 1, %298
  %300 = load ptr, ptr %5, align 8, !tbaa !5
  %301 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %300, i32 0, i32 50
  %302 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %299, ptr noundef %301, ptr noundef %302)
  %303 = load i8, ptr %11, align 1, !tbaa !9, !range !24, !noundef !25
  %304 = trunc i8 %303 to i1
  br i1 %304, label %305, label %312

305:                                              ; preds = %275
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.612)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.212)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1430)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.212)
  %306 = load i64, ptr %8, align 8, !tbaa !23
  %307 = trunc i64 %306 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.708, i32 noundef %307)
  %308 = load i64, ptr %9, align 8, !tbaa !23
  %309 = trunc i64 %308 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1119, i32 noundef %309)
  %310 = load i64, ptr %10, align 8, !tbaa !23
  %311 = trunc i64 %310 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1120, i32 noundef %311)
  br label %312

312:                                              ; preds = %305, %275
  store i64 0, ptr %13, align 8, !tbaa !23
  br label %313

313:                                              ; preds = %986, %312
  %314 = load i64, ptr %13, align 8, !tbaa !23
  %315 = load ptr, ptr %5, align 8, !tbaa !5
  %316 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %315, i32 0, i32 25
  %317 = load i64, ptr %316, align 8, !tbaa !33
  %318 = sub nsw i64 %317, 1
  %319 = icmp sgt i64 %314, %318
  br i1 %319, label %320, label %321

320:                                              ; preds = %313
  br label %989

321:                                              ; preds = %313
  %322 = load i64, ptr %8, align 8, !tbaa !23
  %323 = load ptr, ptr %5, align 8, !tbaa !5
  %324 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %323, i32 0, i32 35
  %325 = load ptr, ptr %5, align 8, !tbaa !5
  %326 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %325, i32 0, i32 37
  %327 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %322, ptr noundef %324, ptr noundef %326, ptr noundef %327)
  store i64 0, ptr %14, align 8, !tbaa !23
  br label %328

328:                                              ; preds = %914, %321
  %329 = load i64, ptr %14, align 8, !tbaa !23
  %330 = load ptr, ptr %5, align 8, !tbaa !5
  %331 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %330, i32 0, i32 19
  %332 = load i64, ptr %331, align 8, !tbaa !34
  %333 = sub nsw i64 %332, 1
  %334 = icmp sgt i64 %329, %333
  br i1 %334, label %335, label %336

335:                                              ; preds = %328
  br label %986

336:                                              ; preds = %328
  %337 = load i64, ptr %14, align 8, !tbaa !23
  %338 = sitofp i64 %337 to double
  %339 = load ptr, ptr %5, align 8, !tbaa !5
  %340 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %339, i32 0, i32 19
  %341 = load i64, ptr %340, align 8, !tbaa !34
  %342 = sub nsw i64 %341, 1
  %343 = load ptr, ptr %7, align 8, !tbaa !5
  %344 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %342, i64 noundef 1, ptr noundef %343)
  %345 = sitofp i64 %344 to double
  %346 = fdiv double %338, %345
  store double %346, ptr %23, align 8, !tbaa !26
  %347 = load ptr, ptr %5, align 8, !tbaa !5
  %348 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %347, i32 0, i32 20
  %349 = load double, ptr %348, align 8, !tbaa !35
  %350 = load ptr, ptr %5, align 8, !tbaa !5
  %351 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %350, i32 0, i32 21
  %352 = load double, ptr %351, align 8, !tbaa !36
  %353 = load ptr, ptr %5, align 8, !tbaa !5
  %354 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %353, i32 0, i32 20
  %355 = load double, ptr %354, align 8, !tbaa !35
  %356 = fdiv double %352, %355
  %357 = load ptr, ptr %7, align 8, !tbaa !5
  %358 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef %356, ptr noundef %357)
  %359 = load double, ptr %23, align 8, !tbaa !26
  %360 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %359, double -1.000000e+00)
  %361 = load ptr, ptr %7, align 8, !tbaa !5
  %362 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %360, double noundef 0.000000e+00, ptr noundef %361)
  %363 = fmul double %358, %362
  %364 = load ptr, ptr %7, align 8, !tbaa !5
  %365 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %363, ptr noundef %364)
  %366 = fmul double %349, %365
  %367 = load ptr, ptr %5, align 8, !tbaa !5
  %368 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %367, i32 0, i32 40
  store double %366, ptr %368, align 8, !tbaa !37
  %369 = load ptr, ptr %5, align 8, !tbaa !5
  %370 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %369, i32 0, i32 23
  %371 = load double, ptr %370, align 8, !tbaa !38
  %372 = load ptr, ptr %5, align 8, !tbaa !5
  %373 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %372, i32 0, i32 24
  %374 = load double, ptr %373, align 8, !tbaa !39
  %375 = load ptr, ptr %5, align 8, !tbaa !5
  %376 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %375, i32 0, i32 23
  %377 = load double, ptr %376, align 8, !tbaa !38
  %378 = fdiv double %374, %377
  %379 = load ptr, ptr %7, align 8, !tbaa !5
  %380 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef %378, ptr noundef %379)
  %381 = load i64, ptr %13, align 8, !tbaa !23
  %382 = sitofp i64 %381 to double
  %383 = fmul double %380, %382
  %384 = load ptr, ptr %5, align 8, !tbaa !5
  %385 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %384, i32 0, i32 25
  %386 = load i64, ptr %385, align 8, !tbaa !33
  %387 = sub nsw i64 %386, 1
  %388 = load ptr, ptr %7, align 8, !tbaa !5
  %389 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %387, i64 noundef 1, ptr noundef %388)
  %390 = sitofp i64 %389 to double
  %391 = fdiv double %383, %390
  %392 = load ptr, ptr %7, align 8, !tbaa !5
  %393 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %391, ptr noundef %392)
  %394 = fmul double %371, %393
  %395 = load ptr, ptr %5, align 8, !tbaa !5
  %396 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %395, i32 0, i32 41
  store double %394, ptr %396, align 8, !tbaa !40
  %397 = load double, ptr @_ZN11alglib_implL22ssgd_secanttoblurratioE, align 8, !tbaa !26
  %398 = load ptr, ptr %5, align 8, !tbaa !5
  %399 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %398, i32 0, i32 41
  %400 = load double, ptr %399, align 8, !tbaa !40
  %401 = fmul double %397, %400
  %402 = load ptr, ptr %5, align 8, !tbaa !5
  %403 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %402, i32 0, i32 42
  store double %401, ptr %403, align 8, !tbaa !41
  %404 = load i8, ptr %11, align 1, !tbaa !9, !range !24, !noundef !25
  %405 = trunc i8 %404 to i1
  br i1 %405, label %406, label %420

406:                                              ; preds = %336
  %407 = load i64, ptr %14, align 8, !tbaa !23
  %408 = trunc i64 %407 to i32
  %409 = load i64, ptr %13, align 8, !tbaa !23
  %410 = trunc i64 %409 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1251, i32 noundef %408, i32 noundef %410)
  %411 = load ptr, ptr %5, align 8, !tbaa !5
  %412 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %411, i32 0, i32 40
  %413 = load double, ptr %412, align 8, !tbaa !37
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1431, double noundef %413)
  %414 = load ptr, ptr %5, align 8, !tbaa !5
  %415 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %414, i32 0, i32 41
  %416 = load double, ptr %415, align 8, !tbaa !40
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1432, double noundef %416)
  %417 = load ptr, ptr %5, align 8, !tbaa !5
  %418 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %417, i32 0, i32 42
  %419 = load double, ptr %418, align 8, !tbaa !41
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1433, double noundef %419)
  br label %420

420:                                              ; preds = %406, %336
  %421 = load i64, ptr %8, align 8, !tbaa !23
  %422 = load ptr, ptr %5, align 8, !tbaa !5
  %423 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %422, i32 0, i32 37
  %424 = load ptr, ptr %5, align 8, !tbaa !5
  %425 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %424, i32 0, i32 27
  %426 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %421, ptr noundef %423, ptr noundef %425, ptr noundef %426)
  %427 = load ptr, ptr %5, align 8, !tbaa !5
  %428 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %427, i32 0, i32 30
  store i8 1, ptr %428, align 8, !tbaa !32
  %429 = load ptr, ptr %5, align 8, !tbaa !5
  %430 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %429, i32 0, i32 45
  %431 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %430, i32 0, i32 0
  store i32 1, ptr %431, align 8, !tbaa !11
  br label %996

432:                                              ; preds = %171
  %433 = load ptr, ptr %5, align 8, !tbaa !5
  %434 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %433, i32 0, i32 30
  store i8 0, ptr %434, align 8, !tbaa !32
  %435 = load ptr, ptr %5, align 8, !tbaa !5
  %436 = load ptr, ptr %5, align 8, !tbaa !5
  %437 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %436, i32 0, i32 27
  %438 = load ptr, ptr %5, align 8, !tbaa !5
  %439 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %438, i32 0, i32 29
  %440 = load ptr, ptr %7, align 8, !tbaa !5
  %441 = call noundef double @_ZN11alglib_implL20ssgd_penalizedtargetEPNS_9ssgdstateEPKNS_9ae_vectorES4_PNS_8ae_stateE(ptr noundef %435, ptr noundef %437, ptr noundef %439, ptr noundef %440)
  store double %441, ptr %17, align 8, !tbaa !26
  %442 = load ptr, ptr %5, align 8, !tbaa !5
  %443 = load ptr, ptr %5, align 8, !tbaa !5
  %444 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %443, i32 0, i32 35
  %445 = load ptr, ptr %5, align 8, !tbaa !5
  %446 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %445, i32 0, i32 36
  %447 = load ptr, ptr %7, align 8, !tbaa !5
  %448 = call noundef double @_ZN11alglib_implL20ssgd_penalizedtargetEPNS_9ssgdstateEPKNS_9ae_vectorES4_PNS_8ae_stateE(ptr noundef %442, ptr noundef %444, ptr noundef %446, ptr noundef %447)
  store double %448, ptr %18, align 8, !tbaa !26
  %449 = load i8, ptr %12, align 1, !tbaa !9, !range !24, !noundef !25
  %450 = trunc i8 %449 to i1
  br i1 %450, label %451, label %464

451:                                              ; preds = %432
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1434)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1130)
  %452 = load ptr, ptr %5, align 8, !tbaa !5
  %453 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %452, i32 0, i32 37
  %454 = load i64, ptr %8, align 8, !tbaa !23
  %455 = load ptr, ptr %5, align 8, !tbaa !5
  %456 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %455, i32 0, i32 4
  %457 = load ptr, ptr %5, align 8, !tbaa !5
  %458 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %457, i32 0, i32 4
  %459 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl36tracevectorunscaledunshiftedautoprecEPKNS_9ae_vectorElS2_bS2_bPNS_8ae_stateE(ptr noundef %453, i64 noundef %454, ptr noundef %456, i1 noundef zeroext true, ptr noundef %458, i1 noundef zeroext false, ptr noundef %459)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.208)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.733)
  %460 = load ptr, ptr %5, align 8, !tbaa !5
  %461 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %460, i32 0, i32 37
  %462 = load i64, ptr %8, align 8, !tbaa !23
  %463 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl19tracevectorautoprecEPKNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef %461, i64 noundef 0, i64 noundef %462, ptr noundef %463)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.208)
  br label %464

464:                                              ; preds = %451, %432
  %465 = load double, ptr %17, align 8, !tbaa !26
  %466 = load double, ptr %18, align 8, !tbaa !26
  %467 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %465, double noundef %466)
  br i1 %467, label %468, label %482

468:                                              ; preds = %464
  %469 = load i64, ptr %8, align 8, !tbaa !23
  %470 = load ptr, ptr %5, align 8, !tbaa !5
  %471 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %470, i32 0, i32 37
  %472 = load ptr, ptr %5, align 8, !tbaa !5
  %473 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %472, i32 0, i32 35
  %474 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %469, ptr noundef %471, ptr noundef %473, ptr noundef %474)
  %475 = load i64, ptr %10, align 8, !tbaa !23
  %476 = add nsw i64 1, %475
  %477 = load ptr, ptr %5, align 8, !tbaa !5
  %478 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %477, i32 0, i32 29
  %479 = load ptr, ptr %5, align 8, !tbaa !5
  %480 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %479, i32 0, i32 36
  %481 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %476, ptr noundef %478, ptr noundef %480, ptr noundef %481)
  br label %482

482:                                              ; preds = %468, %464
  %483 = load i8, ptr %11, align 1, !tbaa !9, !range !24, !noundef !25
  %484 = trunc i8 %483 to i1
  br i1 %484, label %485, label %510

485:                                              ; preds = %482
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1435)
  %486 = load ptr, ptr %5, align 8, !tbaa !5
  %487 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %486, i32 0, i32 29
  %488 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %487, i32 0, i32 4
  %489 = load ptr, ptr %488, align 8, !tbaa !22
  %490 = getelementptr inbounds double, ptr %489, i64 0
  %491 = load double, ptr %490, align 8, !tbaa !26
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1436, double noundef %491)
  %492 = load double, ptr %17, align 8, !tbaa !26
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1437, double noundef %492)
  %493 = load ptr, ptr %5, align 8, !tbaa !5
  %494 = load ptr, ptr %5, align 8, !tbaa !5
  %495 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %494, i32 0, i32 37
  %496 = load ptr, ptr %7, align 8, !tbaa !5
  %497 = call noundef double @_ZN11alglib_implL16ssgd_lcviolationEPNS_9ssgdstateEPKNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %493, ptr noundef %495, ptr noundef %496)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1438, double noundef %497)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1439)
  %498 = load ptr, ptr %5, align 8, !tbaa !5
  %499 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %498, i32 0, i32 36
  %500 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %499, i32 0, i32 4
  %501 = load ptr, ptr %500, align 8, !tbaa !22
  %502 = getelementptr inbounds double, ptr %501, i64 0
  %503 = load double, ptr %502, align 8, !tbaa !26
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1436, double noundef %503)
  %504 = load double, ptr %18, align 8, !tbaa !26
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1437, double noundef %504)
  %505 = load ptr, ptr %5, align 8, !tbaa !5
  %506 = load ptr, ptr %5, align 8, !tbaa !5
  %507 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %506, i32 0, i32 35
  %508 = load ptr, ptr %7, align 8, !tbaa !5
  %509 = call noundef double @_ZN11alglib_implL16ssgd_lcviolationEPNS_9ssgdstateEPKNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %505, ptr noundef %507, ptr noundef %508)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1438, double noundef %509)
  br label %510

510:                                              ; preds = %485, %482
  store i64 0, ptr %15, align 8, !tbaa !23
  br label %511

511:                                              ; preds = %541, %510
  %512 = load i64, ptr %15, align 8, !tbaa !23
  %513 = load i64, ptr %8, align 8, !tbaa !23
  %514 = sub nsw i64 %513, 1
  %515 = icmp sle i64 %512, %514
  br i1 %515, label %516, label %544

516:                                              ; preds = %511
  %517 = load ptr, ptr %5, align 8, !tbaa !5
  %518 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %517, i32 0, i32 34
  %519 = load ptr, ptr %7, align 8, !tbaa !5
  %520 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %518, ptr noundef %519)
  %521 = fsub double %520, 5.000000e-01
  %522 = load ptr, ptr %5, align 8, !tbaa !5
  %523 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %522, i32 0, i32 51
  %524 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %523, i32 0, i32 4
  %525 = load ptr, ptr %524, align 8, !tbaa !22
  %526 = load i64, ptr %15, align 8, !tbaa !23
  %527 = getelementptr inbounds double, ptr %525, i64 %526
  store double %521, ptr %527, align 8, !tbaa !26
  %528 = load ptr, ptr %5, align 8, !tbaa !5
  %529 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %528, i32 0, i32 51
  %530 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %529, i32 0, i32 4
  %531 = load ptr, ptr %530, align 8, !tbaa !22
  %532 = load i64, ptr %15, align 8, !tbaa !23
  %533 = getelementptr inbounds double, ptr %531, i64 %532
  %534 = load double, ptr %533, align 8, !tbaa !26
  %535 = load ptr, ptr %5, align 8, !tbaa !5
  %536 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %535, i32 0, i32 52
  %537 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %536, i32 0, i32 4
  %538 = load ptr, ptr %537, align 8, !tbaa !22
  %539 = load i64, ptr %15, align 8, !tbaa !23
  %540 = getelementptr inbounds double, ptr %538, i64 %539
  store double %534, ptr %540, align 8, !tbaa !26
  br label %541

541:                                              ; preds = %516
  %542 = load i64, ptr %15, align 8, !tbaa !23
  %543 = add nsw i64 %542, 1
  store i64 %543, ptr %15, align 8, !tbaa !23
  br label %511, !llvm.loop !42

544:                                              ; preds = %511
  %545 = load i64, ptr %10, align 8, !tbaa !23
  %546 = add nsw i64 1, %545
  %547 = load ptr, ptr %5, align 8, !tbaa !5
  %548 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %547, i32 0, i32 46
  %549 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %546, double noundef 0.000000e+00, ptr noundef %548, ptr noundef %549)
  store i64 0, ptr %15, align 8, !tbaa !23
  br label %550

550:                                              ; preds = %820, %544
  %551 = load i64, ptr %15, align 8, !tbaa !23
  %552 = load i64, ptr %8, align 8, !tbaa !23
  %553 = sub nsw i64 %552, 1
  %554 = icmp sgt i64 %551, %553
  br i1 %554, label %555, label %556

555:                                              ; preds = %550
  br label %853

556:                                              ; preds = %550
  %557 = load i64, ptr %8, align 8, !tbaa !23
  %558 = load ptr, ptr %5, align 8, !tbaa !5
  %559 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %558, i32 0, i32 37
  %560 = load ptr, ptr %5, align 8, !tbaa !5
  %561 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %560, i32 0, i32 27
  %562 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %557, ptr noundef %559, ptr noundef %561, ptr noundef %562)
  %563 = load i64, ptr %8, align 8, !tbaa !23
  %564 = load ptr, ptr %5, align 8, !tbaa !5
  %565 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %564, i32 0, i32 41
  %566 = load double, ptr %565, align 8, !tbaa !40
  %567 = load ptr, ptr %5, align 8, !tbaa !5
  %568 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %567, i32 0, i32 51
  %569 = load ptr, ptr %5, align 8, !tbaa !5
  %570 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %569, i32 0, i32 27
  %571 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl5raddvEldPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %563, double noundef %566, ptr noundef %568, ptr noundef %570, ptr noundef %571)
  %572 = load ptr, ptr %5, align 8, !tbaa !5
  %573 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %572, i32 0, i32 27
  %574 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %573, i32 0, i32 4
  %575 = load ptr, ptr %574, align 8, !tbaa !22
  %576 = load i64, ptr %15, align 8, !tbaa !23
  %577 = getelementptr inbounds double, ptr %575, i64 %576
  %578 = load double, ptr %577, align 8, !tbaa !26
  %579 = load ptr, ptr %5, align 8, !tbaa !5
  %580 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %579, i32 0, i32 42
  %581 = load double, ptr %580, align 8, !tbaa !41
  %582 = fsub double %578, %581
  %583 = load ptr, ptr %5, align 8, !tbaa !5
  %584 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %583, i32 0, i32 27
  %585 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %584, i32 0, i32 4
  %586 = load ptr, ptr %585, align 8, !tbaa !22
  %587 = load i64, ptr %15, align 8, !tbaa !23
  %588 = getelementptr inbounds double, ptr %586, i64 %587
  store double %582, ptr %588, align 8, !tbaa !26
  %589 = load i64, ptr %8, align 8, !tbaa !23
  %590 = load ptr, ptr %5, align 8, !tbaa !5
  %591 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %590, i32 0, i32 7
  %592 = load ptr, ptr %5, align 8, !tbaa !5
  %593 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %592, i32 0, i32 27
  %594 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl10rmergemaxvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %589, ptr noundef %591, ptr noundef %593, ptr noundef %594)
  %595 = load i64, ptr %8, align 8, !tbaa !23
  %596 = load ptr, ptr %5, align 8, !tbaa !5
  %597 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %596, i32 0, i32 8
  %598 = load ptr, ptr %5, align 8, !tbaa !5
  %599 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %598, i32 0, i32 27
  %600 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl10rmergeminvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %595, ptr noundef %597, ptr noundef %599, ptr noundef %600)
  %601 = load ptr, ptr %5, align 8, !tbaa !5
  %602 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %601, i32 0, i32 30
  store i8 1, ptr %602, align 8, !tbaa !32
  %603 = load ptr, ptr %5, align 8, !tbaa !5
  %604 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %603, i32 0, i32 45
  %605 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %604, i32 0, i32 0
  store i32 2, ptr %605, align 8, !tbaa !11
  br label %996

606:                                              ; preds = %178
  %607 = load ptr, ptr %5, align 8, !tbaa !5
  %608 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %607, i32 0, i32 30
  store i8 0, ptr %608, align 8, !tbaa !32
  %609 = load i64, ptr %8, align 8, !tbaa !23
  %610 = load ptr, ptr %5, align 8, !tbaa !5
  %611 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %610, i32 0, i32 27
  %612 = load ptr, ptr %5, align 8, !tbaa !5
  %613 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %612, i32 0, i32 47
  %614 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %609, ptr noundef %611, ptr noundef %613, ptr noundef %614)
  %615 = load i64, ptr %10, align 8, !tbaa !23
  %616 = add nsw i64 1, %615
  %617 = load ptr, ptr %5, align 8, !tbaa !5
  %618 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %617, i32 0, i32 29
  %619 = load ptr, ptr %5, align 8, !tbaa !5
  %620 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %619, i32 0, i32 49
  %621 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %616, ptr noundef %618, ptr noundef %620, ptr noundef %621)
  %622 = load i64, ptr %8, align 8, !tbaa !23
  %623 = load ptr, ptr %5, align 8, !tbaa !5
  %624 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %623, i32 0, i32 37
  %625 = load ptr, ptr %5, align 8, !tbaa !5
  %626 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %625, i32 0, i32 27
  %627 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %622, ptr noundef %624, ptr noundef %626, ptr noundef %627)
  %628 = load i64, ptr %8, align 8, !tbaa !23
  %629 = load ptr, ptr %5, align 8, !tbaa !5
  %630 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %629, i32 0, i32 41
  %631 = load double, ptr %630, align 8, !tbaa !40
  %632 = load ptr, ptr %5, align 8, !tbaa !5
  %633 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %632, i32 0, i32 52
  %634 = load ptr, ptr %5, align 8, !tbaa !5
  %635 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %634, i32 0, i32 27
  %636 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl5raddvEldPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %628, double noundef %631, ptr noundef %633, ptr noundef %635, ptr noundef %636)
  %637 = load ptr, ptr %5, align 8, !tbaa !5
  %638 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %637, i32 0, i32 27
  %639 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %638, i32 0, i32 4
  %640 = load ptr, ptr %639, align 8, !tbaa !22
  %641 = load i64, ptr %15, align 8, !tbaa !23
  %642 = getelementptr inbounds double, ptr %640, i64 %641
  %643 = load double, ptr %642, align 8, !tbaa !26
  %644 = load ptr, ptr %5, align 8, !tbaa !5
  %645 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %644, i32 0, i32 42
  %646 = load double, ptr %645, align 8, !tbaa !41
  %647 = fadd double %643, %646
  %648 = load ptr, ptr %5, align 8, !tbaa !5
  %649 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %648, i32 0, i32 27
  %650 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %649, i32 0, i32 4
  %651 = load ptr, ptr %650, align 8, !tbaa !22
  %652 = load i64, ptr %15, align 8, !tbaa !23
  %653 = getelementptr inbounds double, ptr %651, i64 %652
  store double %647, ptr %653, align 8, !tbaa !26
  %654 = load i64, ptr %8, align 8, !tbaa !23
  %655 = load ptr, ptr %5, align 8, !tbaa !5
  %656 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %655, i32 0, i32 7
  %657 = load ptr, ptr %5, align 8, !tbaa !5
  %658 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %657, i32 0, i32 27
  %659 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl10rmergemaxvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %654, ptr noundef %656, ptr noundef %658, ptr noundef %659)
  %660 = load i64, ptr %8, align 8, !tbaa !23
  %661 = load ptr, ptr %5, align 8, !tbaa !5
  %662 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %661, i32 0, i32 8
  %663 = load ptr, ptr %5, align 8, !tbaa !5
  %664 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %663, i32 0, i32 27
  %665 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl10rmergeminvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %660, ptr noundef %662, ptr noundef %664, ptr noundef %665)
  %666 = load ptr, ptr %5, align 8, !tbaa !5
  %667 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %666, i32 0, i32 30
  store i8 1, ptr %667, align 8, !tbaa !32
  %668 = load ptr, ptr %5, align 8, !tbaa !5
  %669 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %668, i32 0, i32 45
  %670 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %669, i32 0, i32 0
  store i32 3, ptr %670, align 8, !tbaa !11
  br label %996

671:                                              ; preds = %185
  %672 = load ptr, ptr %5, align 8, !tbaa !5
  %673 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %672, i32 0, i32 30
  store i8 0, ptr %673, align 8, !tbaa !32
  %674 = load i64, ptr %8, align 8, !tbaa !23
  %675 = load ptr, ptr %5, align 8, !tbaa !5
  %676 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %675, i32 0, i32 27
  %677 = load ptr, ptr %5, align 8, !tbaa !5
  %678 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %677, i32 0, i32 48
  %679 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %674, ptr noundef %676, ptr noundef %678, ptr noundef %679)
  %680 = load i64, ptr %10, align 8, !tbaa !23
  %681 = add nsw i64 1, %680
  %682 = load ptr, ptr %5, align 8, !tbaa !5
  %683 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %682, i32 0, i32 29
  %684 = load ptr, ptr %5, align 8, !tbaa !5
  %685 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %684, i32 0, i32 50
  %686 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %681, ptr noundef %683, ptr noundef %685, ptr noundef %686)
  store i64 0, ptr %16, align 8, !tbaa !23
  br label %687

687:                                              ; preds = %728, %671
  %688 = load i64, ptr %16, align 8, !tbaa !23
  %689 = load i64, ptr %10, align 8, !tbaa !23
  %690 = icmp sle i64 %688, %689
  br i1 %690, label %691, label %731

691:                                              ; preds = %687
  %692 = load ptr, ptr %5, align 8, !tbaa !5
  %693 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %692, i32 0, i32 50
  %694 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %693, i32 0, i32 4
  %695 = load ptr, ptr %694, align 8, !tbaa !22
  %696 = load i64, ptr %16, align 8, !tbaa !23
  %697 = getelementptr inbounds double, ptr %695, i64 %696
  %698 = load double, ptr %697, align 8, !tbaa !26
  %699 = load ptr, ptr %5, align 8, !tbaa !5
  %700 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %699, i32 0, i32 49
  %701 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %700, i32 0, i32 4
  %702 = load ptr, ptr %701, align 8, !tbaa !22
  %703 = load i64, ptr %16, align 8, !tbaa !23
  %704 = getelementptr inbounds double, ptr %702, i64 %703
  %705 = load double, ptr %704, align 8, !tbaa !26
  %706 = fsub double %698, %705
  %707 = load ptr, ptr %5, align 8, !tbaa !5
  %708 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %707, i32 0, i32 42
  %709 = load double, ptr %708, align 8, !tbaa !41
  %710 = fmul double 2.000000e+00, %709
  %711 = fdiv double %706, %710
  store double %711, ptr %24, align 8, !tbaa !26
  %712 = load ptr, ptr %5, align 8, !tbaa !5
  %713 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %712, i32 0, i32 46
  %714 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %713, i32 0, i32 4
  %715 = load ptr, ptr %714, align 8, !tbaa !22
  %716 = load i64, ptr %16, align 8, !tbaa !23
  %717 = getelementptr inbounds double, ptr %715, i64 %716
  %718 = load double, ptr %717, align 8, !tbaa !26
  %719 = load double, ptr %24, align 8, !tbaa !26
  %720 = load double, ptr %24, align 8, !tbaa !26
  %721 = call double @llvm.fmuladd.f64(double %719, double %720, double %718)
  %722 = load ptr, ptr %5, align 8, !tbaa !5
  %723 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %722, i32 0, i32 46
  %724 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %723, i32 0, i32 4
  %725 = load ptr, ptr %724, align 8, !tbaa !22
  %726 = load i64, ptr %16, align 8, !tbaa !23
  %727 = getelementptr inbounds double, ptr %725, i64 %726
  store double %721, ptr %727, align 8, !tbaa !26
  br label %728

728:                                              ; preds = %691
  %729 = load i64, ptr %16, align 8, !tbaa !23
  %730 = add nsw i64 %729, 1
  store i64 %730, ptr %16, align 8, !tbaa !23
  br label %687, !llvm.loop !44

731:                                              ; preds = %687
  %732 = load ptr, ptr %5, align 8, !tbaa !5
  %733 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %732, i32 0, i32 50
  %734 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %733, i32 0, i32 4
  %735 = load ptr, ptr %734, align 8, !tbaa !22
  %736 = getelementptr inbounds double, ptr %735, i64 0
  %737 = load double, ptr %736, align 8, !tbaa !26
  %738 = load ptr, ptr %5, align 8, !tbaa !5
  %739 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %738, i32 0, i32 49
  %740 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %739, i32 0, i32 4
  %741 = load ptr, ptr %740, align 8, !tbaa !22
  %742 = getelementptr inbounds double, ptr %741, i64 0
  %743 = load double, ptr %742, align 8, !tbaa !26
  %744 = fsub double %737, %743
  %745 = load ptr, ptr %5, align 8, !tbaa !5
  %746 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %745, i32 0, i32 33
  %747 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %746, i32 0, i32 4
  %748 = load ptr, ptr %747, align 8, !tbaa !22
  %749 = getelementptr inbounds double, ptr %748, i64 0
  %750 = load double, ptr %749, align 8, !tbaa !26
  %751 = fmul double 2.000000e+00, %750
  %752 = load ptr, ptr %5, align 8, !tbaa !5
  %753 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %752, i32 0, i32 42
  %754 = load double, ptr %753, align 8, !tbaa !41
  %755 = fmul double %751, %754
  %756 = fdiv double %744, %755
  %757 = load ptr, ptr %5, align 8, !tbaa !5
  %758 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %757, i32 0, i32 38
  %759 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %758, i32 0, i32 4
  %760 = load ptr, ptr %759, align 8, !tbaa !22
  %761 = load i64, ptr %15, align 8, !tbaa !23
  %762 = getelementptr inbounds double, ptr %760, i64 %761
  store double %756, ptr %762, align 8, !tbaa !26
  store i64 0, ptr %16, align 8, !tbaa !23
  br label %763

763:                                              ; preds = %817, %731
  %764 = load i64, ptr %16, align 8, !tbaa !23
  %765 = load i64, ptr %10, align 8, !tbaa !23
  %766 = sub nsw i64 %765, 1
  %767 = icmp sle i64 %764, %766
  br i1 %767, label %768, label %820

768:                                              ; preds = %763
  %769 = load ptr, ptr %5, align 8, !tbaa !5
  %770 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %769, i32 0, i32 38
  %771 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %770, i32 0, i32 4
  %772 = load ptr, ptr %771, align 8, !tbaa !22
  %773 = load i64, ptr %15, align 8, !tbaa !23
  %774 = getelementptr inbounds double, ptr %772, i64 %773
  %775 = load double, ptr %774, align 8, !tbaa !26
  %776 = load ptr, ptr %5, align 8, !tbaa !5
  %777 = load ptr, ptr %5, align 8, !tbaa !5
  %778 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %777, i32 0, i32 50
  %779 = load i64, ptr %16, align 8, !tbaa !23
  %780 = load ptr, ptr %5, align 8, !tbaa !5
  %781 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %780, i32 0, i32 33
  %782 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %781, i32 0, i32 4
  %783 = load ptr, ptr %782, align 8, !tbaa !22
  %784 = load i64, ptr %16, align 8, !tbaa !23
  %785 = add nsw i64 1, %784
  %786 = getelementptr inbounds double, ptr %783, i64 %785
  %787 = load double, ptr %786, align 8, !tbaa !26
  %788 = load ptr, ptr %7, align 8, !tbaa !5
  %789 = call noundef double @_ZN11alglib_implL21ssgd_scalednlcpenaltyEPNS_9ssgdstateEPKNS_9ae_vectorEldPNS_8ae_stateE(ptr noundef %776, ptr noundef %778, i64 noundef %779, double noundef %787, ptr noundef %788)
  %790 = load ptr, ptr %5, align 8, !tbaa !5
  %791 = load ptr, ptr %5, align 8, !tbaa !5
  %792 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %791, i32 0, i32 49
  %793 = load i64, ptr %16, align 8, !tbaa !23
  %794 = load ptr, ptr %5, align 8, !tbaa !5
  %795 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %794, i32 0, i32 33
  %796 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %795, i32 0, i32 4
  %797 = load ptr, ptr %796, align 8, !tbaa !22
  %798 = load i64, ptr %16, align 8, !tbaa !23
  %799 = add nsw i64 1, %798
  %800 = getelementptr inbounds double, ptr %797, i64 %799
  %801 = load double, ptr %800, align 8, !tbaa !26
  %802 = load ptr, ptr %7, align 8, !tbaa !5
  %803 = call noundef double @_ZN11alglib_implL21ssgd_scalednlcpenaltyEPNS_9ssgdstateEPKNS_9ae_vectorEldPNS_8ae_stateE(ptr noundef %790, ptr noundef %792, i64 noundef %793, double noundef %801, ptr noundef %802)
  %804 = fsub double %789, %803
  %805 = load ptr, ptr %5, align 8, !tbaa !5
  %806 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %805, i32 0, i32 42
  %807 = load double, ptr %806, align 8, !tbaa !41
  %808 = fmul double 2.000000e+00, %807
  %809 = fdiv double %804, %808
  %810 = fadd double %775, %809
  %811 = load ptr, ptr %5, align 8, !tbaa !5
  %812 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %811, i32 0, i32 38
  %813 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %812, i32 0, i32 4
  %814 = load ptr, ptr %813, align 8, !tbaa !22
  %815 = load i64, ptr %15, align 8, !tbaa !23
  %816 = getelementptr inbounds double, ptr %814, i64 %815
  store double %810, ptr %816, align 8, !tbaa !26
  br label %817

817:                                              ; preds = %768
  %818 = load i64, ptr %16, align 8, !tbaa !23
  %819 = add nsw i64 %818, 1
  store i64 %819, ptr %16, align 8, !tbaa !23
  br label %763, !llvm.loop !45

820:                                              ; preds = %763
  %821 = load ptr, ptr %5, align 8, !tbaa !5
  %822 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %821, i32 0, i32 38
  %823 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %822, i32 0, i32 4
  %824 = load ptr, ptr %823, align 8, !tbaa !22
  %825 = load i64, ptr %15, align 8, !tbaa !23
  %826 = getelementptr inbounds double, ptr %824, i64 %825
  %827 = load double, ptr %826, align 8, !tbaa !26
  %828 = load ptr, ptr %5, align 8, !tbaa !5
  %829 = load ptr, ptr %5, align 8, !tbaa !5
  %830 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %829, i32 0, i32 48
  %831 = load ptr, ptr %7, align 8, !tbaa !5
  %832 = call noundef double @_ZN11alglib_implL14ssgd_lcpenaltyEPNS_9ssgdstateEPKNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %828, ptr noundef %830, ptr noundef %831)
  %833 = load ptr, ptr %5, align 8, !tbaa !5
  %834 = load ptr, ptr %5, align 8, !tbaa !5
  %835 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %834, i32 0, i32 47
  %836 = load ptr, ptr %7, align 8, !tbaa !5
  %837 = call noundef double @_ZN11alglib_implL14ssgd_lcpenaltyEPNS_9ssgdstateEPKNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %833, ptr noundef %835, ptr noundef %836)
  %838 = fsub double %832, %837
  %839 = load ptr, ptr %5, align 8, !tbaa !5
  %840 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %839, i32 0, i32 42
  %841 = load double, ptr %840, align 8, !tbaa !41
  %842 = fmul double 2.000000e+00, %841
  %843 = fdiv double %838, %842
  %844 = fadd double %827, %843
  %845 = load ptr, ptr %5, align 8, !tbaa !5
  %846 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %845, i32 0, i32 38
  %847 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %846, i32 0, i32 4
  %848 = load ptr, ptr %847, align 8, !tbaa !22
  %849 = load i64, ptr %15, align 8, !tbaa !23
  %850 = getelementptr inbounds double, ptr %848, i64 %849
  store double %844, ptr %850, align 8, !tbaa !26
  %851 = load i64, ptr %15, align 8, !tbaa !23
  %852 = add nsw i64 %851, 1
  store i64 %852, ptr %15, align 8, !tbaa !23
  br label %550

853:                                              ; preds = %555
  store i64 0, ptr %15, align 8, !tbaa !23
  br label %854

854:                                              ; preds = %901, %853
  %855 = load i64, ptr %15, align 8, !tbaa !23
  %856 = load i64, ptr %10, align 8, !tbaa !23
  %857 = icmp sle i64 %855, %856
  br i1 %857, label %858, label %904

858:                                              ; preds = %854
  %859 = load ptr, ptr %5, align 8, !tbaa !5
  %860 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %859, i32 0, i32 32
  %861 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %860, i32 0, i32 4
  %862 = load ptr, ptr %861, align 8, !tbaa !22
  %863 = load i64, ptr %15, align 8, !tbaa !23
  %864 = getelementptr inbounds double, ptr %862, i64 %863
  %865 = load double, ptr %864, align 8, !tbaa !26
  %866 = load double, ptr @_ZN11alglib_implL16ssgd_sqjmomentumE, align 8, !tbaa !26
  %867 = fsub double 1.000000e+00, %866
  %868 = load double, ptr @_ZN11alglib_implL16ssgd_sqjmomentumE, align 8, !tbaa !26
  %869 = load ptr, ptr %5, align 8, !tbaa !5
  %870 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %869, i32 0, i32 46
  %871 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %870, i32 0, i32 4
  %872 = load ptr, ptr %871, align 8, !tbaa !22
  %873 = load i64, ptr %16, align 8, !tbaa !23
  %874 = getelementptr inbounds double, ptr %872, i64 %873
  %875 = load double, ptr %874, align 8, !tbaa !26
  %876 = load ptr, ptr %7, align 8, !tbaa !5
  %877 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %875, ptr noundef %876)
  %878 = fmul double %868, %877
  %879 = call double @llvm.fmuladd.f64(double %865, double %867, double %878)
  %880 = load ptr, ptr %5, align 8, !tbaa !5
  %881 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %880, i32 0, i32 32
  %882 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %881, i32 0, i32 4
  %883 = load ptr, ptr %882, align 8, !tbaa !22
  %884 = load i64, ptr %15, align 8, !tbaa !23
  %885 = getelementptr inbounds double, ptr %883, i64 %884
  store double %879, ptr %885, align 8, !tbaa !26
  %886 = load ptr, ptr %5, align 8, !tbaa !5
  %887 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %886, i32 0, i32 32
  %888 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %887, i32 0, i32 4
  %889 = load ptr, ptr %888, align 8, !tbaa !22
  %890 = load i64, ptr %15, align 8, !tbaa !23
  %891 = getelementptr inbounds double, ptr %889, i64 %890
  %892 = load double, ptr %891, align 8, !tbaa !26
  %893 = load ptr, ptr %7, align 8, !tbaa !5
  %894 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %892, double noundef 1.000000e+00, ptr noundef %893)
  %895 = load ptr, ptr %5, align 8, !tbaa !5
  %896 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %895, i32 0, i32 33
  %897 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %896, i32 0, i32 4
  %898 = load ptr, ptr %897, align 8, !tbaa !22
  %899 = load i64, ptr %15, align 8, !tbaa !23
  %900 = getelementptr inbounds double, ptr %898, i64 %899
  store double %894, ptr %900, align 8, !tbaa !26
  br label %901

901:                                              ; preds = %858
  %902 = load i64, ptr %15, align 8, !tbaa !23
  %903 = add nsw i64 %902, 1
  store i64 %903, ptr %15, align 8, !tbaa !23
  br label %854, !llvm.loop !46

904:                                              ; preds = %854
  %905 = load i8, ptr %11, align 1, !tbaa !9, !range !24, !noundef !25
  %906 = trunc i8 %905 to i1
  br i1 %906, label %907, label %914

907:                                              ; preds = %904
  %908 = load ptr, ptr %5, align 8, !tbaa !5
  %909 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %908, i32 0, i32 33
  %910 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %909, i32 0, i32 4
  %911 = load ptr, ptr %910, align 8, !tbaa !22
  %912 = getelementptr inbounds double, ptr %911, i64 0
  %913 = load double, ptr %912, align 8, !tbaa !26
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1440, double noundef %913)
  br label %914

914:                                              ; preds = %907, %904
  %915 = load i64, ptr %8, align 8, !tbaa !23
  %916 = load ptr, ptr %5, align 8, !tbaa !5
  %917 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %916, i32 0, i32 38
  %918 = load ptr, ptr %7, align 8, !tbaa !5
  %919 = call noundef double @_ZN11alglib_impl6rdotv2ElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %915, ptr noundef %917, ptr noundef %918)
  %920 = load ptr, ptr %7, align 8, !tbaa !5
  %921 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %919, ptr noundef %920)
  store double %921, ptr %24, align 8, !tbaa !26
  %922 = load double, ptr %21, align 8, !tbaa !26
  %923 = load double, ptr @_ZN11alglib_implL16ssgd_sqjmomentumE, align 8, !tbaa !26
  %924 = fsub double 1.000000e+00, %923
  %925 = load double, ptr @_ZN11alglib_implL16ssgd_sqjmomentumE, align 8, !tbaa !26
  %926 = load double, ptr %24, align 8, !tbaa !26
  %927 = fmul double %925, %926
  %928 = call double @llvm.fmuladd.f64(double %922, double %924, double %927)
  store double %928, ptr %21, align 8, !tbaa !26
  %929 = load double, ptr %21, align 8, !tbaa !26
  %930 = load double, ptr %24, align 8, !tbaa !26
  %931 = load ptr, ptr %7, align 8, !tbaa !5
  %932 = call noundef double @_ZN11alglib_impl5rmax3EdddPNS_8ae_stateE(double noundef %929, double noundef %930, double noundef 1.000000e+00, ptr noundef %931)
  store double %932, ptr %22, align 8, !tbaa !26
  %933 = load i64, ptr %8, align 8, !tbaa !23
  %934 = load double, ptr %22, align 8, !tbaa !26
  %935 = fdiv double 1.000000e+00, %934
  %936 = load ptr, ptr %5, align 8, !tbaa !5
  %937 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %936, i32 0, i32 38
  %938 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl5rmulvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %933, double noundef %935, ptr noundef %937, ptr noundef %938)
  %939 = load i64, ptr %8, align 8, !tbaa !23
  %940 = load ptr, ptr %5, align 8, !tbaa !5
  %941 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %940, i32 0, i32 22
  %942 = load double, ptr %941, align 8, !tbaa !47
  %943 = load ptr, ptr %5, align 8, !tbaa !5
  %944 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %943, i32 0, i32 39
  %945 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl5rmulvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %939, double noundef %942, ptr noundef %944, ptr noundef %945)
  %946 = load i64, ptr %8, align 8, !tbaa !23
  %947 = load ptr, ptr %5, align 8, !tbaa !5
  %948 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %947, i32 0, i32 22
  %949 = load double, ptr %948, align 8, !tbaa !47
  %950 = fsub double 1.000000e+00, %949
  %951 = load ptr, ptr %5, align 8, !tbaa !5
  %952 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %951, i32 0, i32 38
  %953 = load ptr, ptr %5, align 8, !tbaa !5
  %954 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %953, i32 0, i32 39
  %955 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl5raddvEldPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %946, double noundef %950, ptr noundef %952, ptr noundef %954, ptr noundef %955)
  %956 = load i64, ptr %8, align 8, !tbaa !23
  %957 = load ptr, ptr %5, align 8, !tbaa !5
  %958 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %957, i32 0, i32 40
  %959 = load double, ptr %958, align 8, !tbaa !37
  %960 = fneg double %959
  %961 = load ptr, ptr %5, align 8, !tbaa !5
  %962 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %961, i32 0, i32 39
  %963 = load ptr, ptr %5, align 8, !tbaa !5
  %964 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %963, i32 0, i32 37
  %965 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl5raddvEldPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %956, double noundef %960, ptr noundef %962, ptr noundef %964, ptr noundef %965)
  %966 = load i64, ptr %8, align 8, !tbaa !23
  %967 = load ptr, ptr %5, align 8, !tbaa !5
  %968 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %967, i32 0, i32 7
  %969 = load ptr, ptr %5, align 8, !tbaa !5
  %970 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %969, i32 0, i32 37
  %971 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl10rmergemaxvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %966, ptr noundef %968, ptr noundef %970, ptr noundef %971)
  %972 = load i64, ptr %8, align 8, !tbaa !23
  %973 = load ptr, ptr %5, align 8, !tbaa !5
  %974 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %973, i32 0, i32 8
  %975 = load ptr, ptr %5, align 8, !tbaa !5
  %976 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %975, i32 0, i32 37
  %977 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN11alglib_impl10rmergeminvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %972, ptr noundef %974, ptr noundef %976, ptr noundef %977)
  %978 = load ptr, ptr %5, align 8, !tbaa !5
  %979 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %978, i32 0, i32 43
  %980 = load i64, ptr %979, align 8, !tbaa !30
  %981 = add nsw i64 %980, 1
  %982 = load ptr, ptr %5, align 8, !tbaa !5
  %983 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %982, i32 0, i32 43
  store i64 %981, ptr %983, align 8, !tbaa !30
  %984 = load i64, ptr %14, align 8, !tbaa !23
  %985 = add nsw i64 %984, 1
  store i64 %985, ptr %14, align 8, !tbaa !23
  br label %328

986:                                              ; preds = %335
  %987 = load i64, ptr %13, align 8, !tbaa !23
  %988 = add nsw i64 %987, 1
  store i64 %988, ptr %13, align 8, !tbaa !23
  br label %313

989:                                              ; preds = %320
  %990 = load i8, ptr %11, align 1, !tbaa !9, !range !24, !noundef !25
  %991 = trunc i8 %990 to i1
  br i1 %991, label %992, label %993

992:                                              ; preds = %989
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.1441)
  br label %993

993:                                              ; preds = %992, %989
  store i8 0, ptr %25, align 1, !tbaa !9
  %994 = load i8, ptr %25, align 1, !tbaa !9, !range !24, !noundef !25
  %995 = trunc i8 %994 to i1
  store i1 %995, ptr %4, align 1
  store i32 1, ptr %26, align 4
  br label %1122

996:                                              ; preds = %606, %556, %420, %202
  store i8 1, ptr %25, align 1, !tbaa !9
  %997 = load i64, ptr %8, align 8, !tbaa !23
  %998 = load ptr, ptr %5, align 8, !tbaa !5
  %999 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %998, i32 0, i32 45
  %1000 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %999, i32 0, i32 1
  %1001 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1000, i32 0, i32 4
  %1002 = load ptr, ptr %1001, align 8, !tbaa !22
  %1003 = getelementptr inbounds i64, ptr %1002, i64 0
  store i64 %997, ptr %1003, align 8, !tbaa !23
  %1004 = load i64, ptr %9, align 8, !tbaa !23
  %1005 = load ptr, ptr %5, align 8, !tbaa !5
  %1006 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %1005, i32 0, i32 45
  %1007 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1006, i32 0, i32 1
  %1008 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1007, i32 0, i32 4
  %1009 = load ptr, ptr %1008, align 8, !tbaa !22
  %1010 = getelementptr inbounds i64, ptr %1009, i64 1
  store i64 %1004, ptr %1010, align 8, !tbaa !23
  %1011 = load i64, ptr %10, align 8, !tbaa !23
  %1012 = load ptr, ptr %5, align 8, !tbaa !5
  %1013 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %1012, i32 0, i32 45
  %1014 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1013, i32 0, i32 1
  %1015 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1014, i32 0, i32 4
  %1016 = load ptr, ptr %1015, align 8, !tbaa !22
  %1017 = getelementptr inbounds i64, ptr %1016, i64 2
  store i64 %1011, ptr %1017, align 8, !tbaa !23
  %1018 = load i64, ptr %13, align 8, !tbaa !23
  %1019 = load ptr, ptr %5, align 8, !tbaa !5
  %1020 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %1019, i32 0, i32 45
  %1021 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1020, i32 0, i32 1
  %1022 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1021, i32 0, i32 4
  %1023 = load ptr, ptr %1022, align 8, !tbaa !22
  %1024 = getelementptr inbounds i64, ptr %1023, i64 3
  store i64 %1018, ptr %1024, align 8, !tbaa !23
  %1025 = load i64, ptr %14, align 8, !tbaa !23
  %1026 = load ptr, ptr %5, align 8, !tbaa !5
  %1027 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %1026, i32 0, i32 45
  %1028 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1027, i32 0, i32 1
  %1029 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1028, i32 0, i32 4
  %1030 = load ptr, ptr %1029, align 8, !tbaa !22
  %1031 = getelementptr inbounds i64, ptr %1030, i64 4
  store i64 %1025, ptr %1031, align 8, !tbaa !23
  %1032 = load i64, ptr %15, align 8, !tbaa !23
  %1033 = load ptr, ptr %5, align 8, !tbaa !5
  %1034 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %1033, i32 0, i32 45
  %1035 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1034, i32 0, i32 1
  %1036 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1035, i32 0, i32 4
  %1037 = load ptr, ptr %1036, align 8, !tbaa !22
  %1038 = getelementptr inbounds i64, ptr %1037, i64 5
  store i64 %1032, ptr %1038, align 8, !tbaa !23
  %1039 = load i64, ptr %16, align 8, !tbaa !23
  %1040 = load ptr, ptr %5, align 8, !tbaa !5
  %1041 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %1040, i32 0, i32 45
  %1042 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1041, i32 0, i32 1
  %1043 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1042, i32 0, i32 4
  %1044 = load ptr, ptr %1043, align 8, !tbaa !22
  %1045 = getelementptr inbounds i64, ptr %1044, i64 6
  store i64 %1039, ptr %1045, align 8, !tbaa !23
  %1046 = load i8, ptr %11, align 1, !tbaa !9, !range !24, !noundef !25
  %1047 = trunc i8 %1046 to i1
  %1048 = load ptr, ptr %5, align 8, !tbaa !5
  %1049 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %1048, i32 0, i32 45
  %1050 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1049, i32 0, i32 2
  %1051 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1050, i32 0, i32 4
  %1052 = load ptr, ptr %1051, align 8, !tbaa !22
  %1053 = getelementptr inbounds i8, ptr %1052, i64 0
  %1054 = zext i1 %1047 to i8
  store i8 %1054, ptr %1053, align 1, !tbaa !9
  %1055 = load i8, ptr %12, align 1, !tbaa !9, !range !24, !noundef !25
  %1056 = trunc i8 %1055 to i1
  %1057 = load ptr, ptr %5, align 8, !tbaa !5
  %1058 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %1057, i32 0, i32 45
  %1059 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1058, i32 0, i32 2
  %1060 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1059, i32 0, i32 4
  %1061 = load ptr, ptr %1060, align 8, !tbaa !22
  %1062 = getelementptr inbounds i8, ptr %1061, i64 1
  %1063 = zext i1 %1056 to i8
  store i8 %1063, ptr %1062, align 1, !tbaa !9
  %1064 = load double, ptr %17, align 8, !tbaa !26
  %1065 = load ptr, ptr %5, align 8, !tbaa !5
  %1066 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %1065, i32 0, i32 45
  %1067 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1066, i32 0, i32 3
  %1068 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1067, i32 0, i32 4
  %1069 = load ptr, ptr %1068, align 8, !tbaa !22
  %1070 = getelementptr inbounds double, ptr %1069, i64 0
  store double %1064, ptr %1070, align 8, !tbaa !26
  %1071 = load double, ptr %18, align 8, !tbaa !26
  %1072 = load ptr, ptr %5, align 8, !tbaa !5
  %1073 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %1072, i32 0, i32 45
  %1074 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1073, i32 0, i32 3
  %1075 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1074, i32 0, i32 4
  %1076 = load ptr, ptr %1075, align 8, !tbaa !22
  %1077 = getelementptr inbounds double, ptr %1076, i64 1
  store double %1071, ptr %1077, align 8, !tbaa !26
  %1078 = load double, ptr %19, align 8, !tbaa !26
  %1079 = load ptr, ptr %5, align 8, !tbaa !5
  %1080 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %1079, i32 0, i32 45
  %1081 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1080, i32 0, i32 3
  %1082 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1081, i32 0, i32 4
  %1083 = load ptr, ptr %1082, align 8, !tbaa !22
  %1084 = getelementptr inbounds double, ptr %1083, i64 2
  store double %1078, ptr %1084, align 8, !tbaa !26
  %1085 = load double, ptr %20, align 8, !tbaa !26
  %1086 = load ptr, ptr %5, align 8, !tbaa !5
  %1087 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %1086, i32 0, i32 45
  %1088 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1087, i32 0, i32 3
  %1089 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1088, i32 0, i32 4
  %1090 = load ptr, ptr %1089, align 8, !tbaa !22
  %1091 = getelementptr inbounds double, ptr %1090, i64 3
  store double %1085, ptr %1091, align 8, !tbaa !26
  %1092 = load double, ptr %21, align 8, !tbaa !26
  %1093 = load ptr, ptr %5, align 8, !tbaa !5
  %1094 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %1093, i32 0, i32 45
  %1095 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1094, i32 0, i32 3
  %1096 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1095, i32 0, i32 4
  %1097 = load ptr, ptr %1096, align 8, !tbaa !22
  %1098 = getelementptr inbounds double, ptr %1097, i64 4
  store double %1092, ptr %1098, align 8, !tbaa !26
  %1099 = load double, ptr %22, align 8, !tbaa !26
  %1100 = load ptr, ptr %5, align 8, !tbaa !5
  %1101 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %1100, i32 0, i32 45
  %1102 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1101, i32 0, i32 3
  %1103 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1102, i32 0, i32 4
  %1104 = load ptr, ptr %1103, align 8, !tbaa !22
  %1105 = getelementptr inbounds double, ptr %1104, i64 5
  store double %1099, ptr %1105, align 8, !tbaa !26
  %1106 = load double, ptr %23, align 8, !tbaa !26
  %1107 = load ptr, ptr %5, align 8, !tbaa !5
  %1108 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %1107, i32 0, i32 45
  %1109 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1108, i32 0, i32 3
  %1110 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1109, i32 0, i32 4
  %1111 = load ptr, ptr %1110, align 8, !tbaa !22
  %1112 = getelementptr inbounds double, ptr %1111, i64 6
  store double %1106, ptr %1112, align 8, !tbaa !26
  %1113 = load double, ptr %24, align 8, !tbaa !26
  %1114 = load ptr, ptr %5, align 8, !tbaa !5
  %1115 = getelementptr inbounds %"struct.alglib_impl::ssgdstate", ptr %1114, i32 0, i32 45
  %1116 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1115, i32 0, i32 3
  %1117 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1116, i32 0, i32 4
  %1118 = load ptr, ptr %1117, align 8, !tbaa !22
  %1119 = getelementptr inbounds double, ptr %1118, i64 7
  store double %1113, ptr %1119, align 8, !tbaa !26
  %1120 = load i8, ptr %25, align 1, !tbaa !9, !range !24, !noundef !25
  %1121 = trunc i8 %1120 to i1
  store i1 %1121, ptr %4, align 1
  store i32 1, ptr %26, align 4
  br label %1122

1122:                                             ; preds = %996, %993
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 8, 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 1, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 1, 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
  %1123 = load i1, ptr %4, align 1
  ret i1 %1123
}

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

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

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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, !20, i64 1784}
!12 = !{!"_ZTSN11alglib_impl9ssgdstateE", !13, i64 0, !13, i64 8, !13, i64 16, !14, i64 24, !14, i64 88, !14, i64 152, !14, i64 216, !14, i64 280, !14, i64 344, !16, i64 408, !14, i64 488, !14, i64 552, !14, i64 616, !14, i64 680, !14, i64 744, !14, i64 808, !14, i64 872, !14, i64 936, !14, i64 1000, !13, i64 1064, !17, i64 1072, !17, i64 1080, !17, i64 1088, !17, i64 1096, !17, i64 1104, !13, i64 1112, !17, i64 1120, !14, i64 1128, !17, i64 1192, !14, i64 1200, !10, i64 1264, !10, i64 1265, !14, i64 1272, !14, i64 1336, !18, i64 1400, !14, i64 1424, !14, i64 1488, !14, i64 1552, !14, i64 1616, !14, i64 1680, !17, i64 1744, !17, i64 1752, !17, i64 1760, !13, i64 1768, !13, i64 1776, !19, i64 1784, !14, i64 2048, !14, i64 2112, !14, i64 2176, !14, i64 2240, !14, i64 2304, !14, i64 2368, !14, i64 2432, !14, i64 2496, !21, i64 2560}
!13 = !{!"long", !7, i64 0}
!14 = !{!"_ZTSN11alglib_impl9ae_vectorE", !13, i64 0, !13, i64 8, !10, i64 16, !15, i64 24, !7, i64 56}
!15 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!16 = !{!"_ZTSN11alglib_impl9ae_matrixE", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !10, i64 32, !15, i64 40, !7, i64 72}
!17 = !{!"double", !7, i64 0}
!18 = !{!"_ZTSN11alglib_impl10hqrndstateE", !13, i64 0, !13, i64 8, !13, i64 16}
!19 = !{!"_ZTSN11alglib_impl10rcommstateE", !20, i64 0, !14, i64 8, !14, i64 72, !14, i64 136, !14, i64 200}
!20 = !{!"int", !7, i64 0}
!21 = !{!"_ZTSN11alglib_impl12sparsematrixE", !14, i64 0, !14, i64 64, !14, i64 128, !14, i64 192, !14, i64 256, !13, i64 320, !13, i64 328, !13, i64 336, !13, i64 344, !13, i64 352, !13, i64 360}
!22 = !{!7, !7, i64 0}
!23 = !{!13, !13, i64 0}
!24 = !{i8 0, i8 2}
!25 = !{}
!26 = !{!17, !17, i64 0}
!27 = !{!12, !13, i64 0}
!28 = !{!12, !13, i64 8}
!29 = !{!12, !13, i64 16}
!30 = !{!12, !13, i64 1768}
!31 = !{!12, !13, i64 1776}
!32 = !{!12, !10, i64 1264}
!33 = !{!12, !13, i64 1112}
!34 = !{!12, !13, i64 1064}
!35 = !{!12, !17, i64 1072}
!36 = !{!12, !17, i64 1080}
!37 = !{!12, !17, i64 1744}
!38 = !{!12, !17, i64 1096}
!39 = !{!12, !17, i64 1104}
!40 = !{!12, !17, i64 1752}
!41 = !{!12, !17, i64 1760}
!42 = distinct !{!42, !43}
!43 = !{!"llvm.loop.mustprogress"}
!44 = distinct !{!44, !43}
!45 = distinct !{!45, !43}
!46 = distinct !{!46, !43}
!47 = !{!12, !17, i64 1088}


; 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.212 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.612 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.708 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.733 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.1119 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1120 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1130 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.1251 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.1428 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.1429 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1430 = external hidden unnamed_addr constant [102 x i8], align 1
@_ZN11alglib_implL22ssgd_secanttoblurratioE = external hidden local_unnamed_addr global double, align 8
@.str.1431 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.1432 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.1433 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.1434 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.1435 = external hidden unnamed_addr constant [103 x i8], align 1
@.str.1436 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.1437 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.1438 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.1439 = external hidden unnamed_addr constant [103 x i8], align 1
@_ZN11alglib_implL16ssgd_sqjmomentumE = external hidden local_unnamed_addr global double, align 8
@.str.1440 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.1441 = external hidden unnamed_addr constant [38 x i8], align 1

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

declare noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(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_impl10ae_fp_lessEdd(double noundef, double noundef) local_unnamed_addr #1

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

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

declare noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef) local_unnamed_addr #1

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

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

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

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

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

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

declare noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #1

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

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

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

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

7:                                                ; preds = %3
  %8 = getelementptr inbounds i8, ptr %0, i64 1848
  %9 = load ptr, ptr %8, align 8, !tbaa !20
  %10 = load i64, ptr %9, align 8, !tbaa !21
  %11 = getelementptr inbounds i8, ptr %9, i64 8
  %12 = load i64, ptr %11, align 8, !tbaa !21
  %13 = getelementptr inbounds i8, ptr %9, i64 16
  %14 = load i64, ptr %13, align 8, !tbaa !21
  %15 = getelementptr inbounds i8, ptr %9, i64 24
  %16 = load i64, ptr %15, align 8, !tbaa !21
  %17 = getelementptr inbounds i8, ptr %9, i64 32
  %18 = load i64, ptr %17, align 8, !tbaa !21
  %19 = getelementptr inbounds i8, ptr %9, i64 40
  %20 = load i64, ptr %19, align 8, !tbaa !21
  %21 = getelementptr inbounds i8, ptr %9, i64 48
  %22 = load i64, ptr %21, align 8, !tbaa !21
  %23 = getelementptr inbounds i8, ptr %0, i64 1912
  %24 = load ptr, ptr %23, align 8, !tbaa !20
  %25 = load i8, ptr %24, align 1, !tbaa !22, !range !23, !noundef !24
  %26 = getelementptr inbounds i8, ptr %24, i64 1
  %27 = load i8, ptr %26, align 1, !tbaa !22, !range !23, !noundef !24
  %28 = getelementptr inbounds i8, ptr %0, i64 1976
  %29 = load ptr, ptr %28, align 8, !tbaa !20
  %30 = load double, ptr %29, align 8, !tbaa !25
  %31 = getelementptr inbounds i8, ptr %29, i64 8
  %32 = load double, ptr %31, align 8, !tbaa !25
  %33 = getelementptr inbounds i8, ptr %29, i64 16
  %34 = load double, ptr %33, align 8, !tbaa !25
  %35 = getelementptr inbounds i8, ptr %29, i64 24
  %36 = load double, ptr %35, align 8, !tbaa !25
  %37 = getelementptr inbounds i8, ptr %29, i64 32
  %38 = load double, ptr %37, align 8, !tbaa !25
  %39 = getelementptr inbounds i8, ptr %29, i64 40
  %40 = load double, ptr %39, align 8, !tbaa !25
  %41 = getelementptr inbounds i8, ptr %29, i64 48
  %42 = load double, ptr %41, align 8, !tbaa !25
  %43 = getelementptr inbounds i8, ptr %29, i64 56
  %44 = load double, ptr %43, align 8, !tbaa !25
  br label %45

45:                                               ; preds = %3, %7
  %.0451 = phi i64 [ %10, %7 ], [ 359, %3 ]
  %.0449 = phi i64 [ %12, %7 ], [ -58, %3 ]
  %.0447 = phi i64 [ %14, %7 ], [ -919, %3 ]
  %.0445 = phi i8 [ %25, %7 ], [ 0, %3 ]
  %.0443 = phi i8 [ %27, %7 ], [ 1, %3 ]
  %.0439 = phi i64 [ %16, %7 ], [ -909, %3 ]
  %.0436 = phi i64 [ %18, %7 ], [ 81, %3 ]
  %.0429 = phi i64 [ %20, %7 ], [ 255, %3 ]
  %.0423 = phi i64 [ %22, %7 ], [ 74, %3 ]
  %.0418 = phi double [ %30, %7 ], [ 2.050000e+02, %3 ]
  %.0413 = phi double [ %32, %7 ], [ -8.380000e+02, %3 ]
  %.0412 = phi double [ %34, %7 ], [ 9.390000e+02, %3 ]
  %.0411 = phi double [ %36, %7 ], [ -5.260000e+02, %3 ]
  %.0407 = phi double [ %38, %7 ], [ 7.630000e+02, %3 ]
  %.0403 = phi double [ %40, %7 ], [ -5.410000e+02, %3 ]
  %.0401 = phi double [ %42, %7 ], [ -6.980000e+02, %3 ]
  %.0 = phi double [ %44, %7 ], [ -9.000000e+02, %3 ]
  switch i32 %5, label %46 [
    i32 0, label %75
    i32 1, label %147
    i32 2, label %214
    i32 3, label %234
  ]

46:                                               ; preds = %45
  %47 = load i64, ptr %0, align 8, !tbaa !26
  %48 = getelementptr inbounds i8, ptr %0, i64 8
  %49 = load i64, ptr %48, align 8, !tbaa !27
  %50 = getelementptr inbounds i8, ptr %0, i64 16
  %51 = load i64, ptr %50, align 8, !tbaa !28
  %52 = tail call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef nonnull @.str.1428)
  %53 = zext i1 %52 to i8
  br i1 %52, label %54, label %57

54:                                               ; preds = %46
  %55 = tail call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef nonnull @.str.1429)
  %56 = zext i1 %55 to i8
  br label %57

57:                                               ; preds = %54, %46
  %58 = phi i8 [ 0, %46 ], [ %56, %54 ]
  tail call void @_ZN11alglib_implL23ssgd_clearrequestfieldsEPNS_9ssgdstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %2)
  %59 = getelementptr inbounds i8, ptr %0, i64 1400
  tail call void @_ZN11alglib_impl9hqrndseedEllPNS_10hqrndstateEPNS_8ae_stateE(i64 noundef 3366544, i64 noundef 86335763, ptr noundef nonnull %59, ptr noundef %2)
  %60 = getelementptr inbounds i8, ptr %0, i64 2368
  tail call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %47, ptr noundef nonnull %60, ptr noundef %2)
  %61 = getelementptr inbounds i8, ptr %0, i64 2432
  tail call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %47, ptr noundef nonnull %61, ptr noundef %2)
  %62 = getelementptr inbounds i8, ptr %0, i64 1616
  tail call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %47, ptr noundef nonnull %62, ptr noundef %2)
  %63 = getelementptr inbounds i8, ptr %0, i64 24
  %64 = getelementptr inbounds i8, ptr %0, i64 1552
  tail call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %47, ptr noundef nonnull %63, ptr noundef nonnull %64, ptr noundef %2)
  %65 = getelementptr inbounds i8, ptr %0, i64 280
  tail call void @_ZN11alglib_impl10rmergemaxvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %47, ptr noundef nonnull %65, ptr noundef nonnull %64, ptr noundef %2)
  %66 = getelementptr inbounds i8, ptr %0, i64 344
  tail call void @_ZN11alglib_impl10rmergeminvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %47, ptr noundef nonnull %66, ptr noundef nonnull %64, ptr noundef %2)
  %67 = getelementptr inbounds i8, ptr %0, i64 1680
  tail call void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %47, double noundef 0.000000e+00, ptr noundef nonnull %67, ptr noundef %2)
  %68 = getelementptr inbounds i8, ptr %0, i64 1768
  %69 = add nsw i64 %51, 1
  %70 = getelementptr inbounds i8, ptr %0, i64 1272
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %68, i8 0, i64 16, i1 false)
  tail call void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %69, double noundef 5.000000e-16, ptr noundef nonnull %70, ptr noundef %2)
  %71 = getelementptr inbounds i8, ptr %0, i64 1336
  tail call void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %69, double noundef 1.000000e+00, ptr noundef nonnull %71, ptr noundef %2)
  %72 = getelementptr inbounds i8, ptr %0, i64 1424
  tail call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %47, ptr noundef nonnull %64, ptr noundef nonnull %72, ptr noundef %2)
  %73 = getelementptr inbounds i8, ptr %0, i64 1128
  tail call void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %47, ptr noundef nonnull %72, ptr noundef nonnull %73, ptr noundef %2)
  %74 = getelementptr inbounds i8, ptr %0, i64 1264
  br label %369

75:                                               ; preds = %45
  %76 = getelementptr inbounds i8, ptr %0, i64 1264
  store i8 0, ptr %76, align 8, !tbaa !29
  %77 = add nsw i64 %.0447, 1
  %78 = getelementptr inbounds i8, ptr %0, i64 1200
  %79 = getelementptr inbounds i8, ptr %0, i64 1488
  tail call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %77, ptr noundef nonnull %78, ptr noundef nonnull %79, ptr noundef %2)
  %80 = getelementptr inbounds i8, ptr %0, i64 2112
  tail call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %.0451, ptr noundef nonnull %80, ptr noundef %2)
  %81 = getelementptr inbounds i8, ptr %0, i64 2176
  tail call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %.0451, ptr noundef nonnull %81, ptr noundef %2)
  %82 = getelementptr inbounds i8, ptr %0, i64 2240
  tail call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %77, ptr noundef nonnull %82, ptr noundef %2)
  %83 = getelementptr inbounds i8, ptr %0, i64 2304
  tail call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %77, ptr noundef nonnull %83, ptr noundef %2)
  %84 = trunc nuw i8 %.0445 to i1
  br i1 %84, label %85, label %89

85:                                               ; preds = %75
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.612)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.212)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1430)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.212)
  %86 = trunc i64 %.0451 to i32
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.708, i32 noundef %86)
  %87 = trunc i64 %.0449 to i32
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1119, i32 noundef %87)
  %88 = trunc i64 %.0447 to i32
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1120, i32 noundef %88)
  br label %89

89:                                               ; preds = %75, %85, %364
  %.1440 = phi i64 [ %365, %364 ], [ 0, %85 ], [ 0, %75 ]
  %.1430 = phi i64 [ %.2431, %364 ], [ %.0429, %85 ], [ %.0429, %75 ]
  %.1424 = phi i64 [ %.2425, %364 ], [ %.0423, %85 ], [ %.0423, %75 ]
  %.1419 = phi double [ %.2420, %364 ], [ %.0418, %85 ], [ %.0418, %75 ]
  %.1414 = phi double [ %.2415, %364 ], [ %.0413, %85 ], [ %.0413, %75 ]
  %.1408 = phi double [ %.2409, %364 ], [ %.0407, %85 ], [ %.0407, %75 ]
  %.1404 = phi double [ %.2405, %364 ], [ %.0403, %85 ], [ %.0403, %75 ]
  %.1 = phi double [ %.2, %364 ], [ %.0, %85 ], [ %.0, %75 ]
  %90 = getelementptr inbounds i8, ptr %0, i64 1112
  %91 = load i64, ptr %90, align 8, !tbaa !30
  %.not460 = icmp slt i64 %.1440, %91
  br i1 %.not460, label %92, label %366

92:                                               ; preds = %89
  %93 = getelementptr inbounds i8, ptr %0, i64 1424
  %94 = getelementptr inbounds i8, ptr %0, i64 1552
  tail call void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.0451, ptr noundef nonnull %93, ptr noundef nonnull %94, ptr noundef %2)
  br label %95

95:                                               ; preds = %339, %92
  %.2441 = phi i64 [ %.1440, %92 ], [ %.0439, %339 ]
  %.1437 = phi i64 [ 0, %92 ], [ %363, %339 ]
  %.2431 = phi i64 [ %.1430, %92 ], [ %.5434.lcssa, %339 ]
  %.2425 = phi i64 [ %.1424, %92 ], [ %.3426, %339 ]
  %.2420 = phi double [ %.1419, %92 ], [ %.3421, %339 ]
  %.2415 = phi double [ %.1414, %92 ], [ %.3416, %339 ]
  %.2409 = phi double [ %.1408, %92 ], [ %346, %339 ]
  %.2405 = phi double [ %.1404, %92 ], [ %347, %339 ]
  %.2 = phi double [ %.1, %92 ], [ %342, %339 ]
  %96 = getelementptr inbounds i8, ptr %0, i64 1064
  %97 = load i64, ptr %96, align 8, !tbaa !31
  %.not461 = icmp slt i64 %.1437, %97
  br i1 %.not461, label %98, label %364

98:                                               ; preds = %95
  %99 = add nsw i64 %97, -1
  %100 = sitofp i64 %.1437 to double
  %101 = tail call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %99, i64 noundef 1, ptr noundef %2)
  %102 = sitofp i64 %101 to double
  %103 = fdiv double %100, %102
  %104 = getelementptr inbounds i8, ptr %0, i64 1072
  %105 = load double, ptr %104, align 8, !tbaa !32
  %106 = getelementptr inbounds i8, ptr %0, i64 1080
  %107 = load double, ptr %106, align 8, !tbaa !33
  %108 = fdiv double %107, %105
  %109 = tail call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef %108, ptr noundef %2)
  %110 = tail call double @llvm.fmuladd.f64(double %103, double 2.000000e+00, double -1.000000e+00)
  %111 = tail call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %110, double noundef 0.000000e+00, ptr noundef %2)
  %112 = fmul double %109, %111
  %113 = tail call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %112, ptr noundef %2)
  %114 = fmul double %105, %113
  %115 = getelementptr inbounds i8, ptr %0, i64 1744
  store double %114, ptr %115, align 8, !tbaa !34
  %116 = getelementptr inbounds i8, ptr %0, i64 1096
  %117 = load double, ptr %116, align 8, !tbaa !35
  %118 = getelementptr inbounds i8, ptr %0, i64 1104
  %119 = load double, ptr %118, align 8, !tbaa !36
  %120 = fdiv double %119, %117
  %121 = tail call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef %120, ptr noundef %2)
  %122 = sitofp i64 %.2441 to double
  %123 = fmul double %121, %122
  %124 = getelementptr inbounds i8, ptr %0, i64 1112
  %125 = load i64, ptr %124, align 8, !tbaa !30
  %126 = add nsw i64 %125, -1
  %127 = tail call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %126, i64 noundef 1, ptr noundef %2)
  %128 = sitofp i64 %127 to double
  %129 = fdiv double %123, %128
  %130 = tail call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %129, ptr noundef %2)
  %131 = fmul double %117, %130
  %132 = getelementptr inbounds i8, ptr %0, i64 1752
  store double %131, ptr %132, align 8, !tbaa !37
  %133 = load double, ptr @_ZN11alglib_implL22ssgd_secanttoblurratioE, align 8, !tbaa !25
  %134 = fmul double %131, %133
  %135 = getelementptr inbounds i8, ptr %0, i64 1760
  store double %134, ptr %135, align 8, !tbaa !38
  %136 = trunc nuw i8 %.0445 to i1
  br i1 %136, label %137, label %143

137:                                              ; preds = %98
  %138 = trunc i64 %.1437 to i32
  %139 = trunc i64 %.2441 to i32
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1251, i32 noundef %138, i32 noundef %139)
  %140 = load double, ptr %115, align 8, !tbaa !34
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1431, double noundef %140)
  %141 = load double, ptr %132, align 8, !tbaa !37
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1432, double noundef %141)
  %142 = load double, ptr %135, align 8, !tbaa !38
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1433, double noundef %142)
  br label %143

143:                                              ; preds = %137, %98
  %144 = getelementptr inbounds i8, ptr %0, i64 1552
  %145 = getelementptr inbounds i8, ptr %0, i64 1128
  tail call void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.0451, ptr noundef nonnull %144, ptr noundef nonnull %145, ptr noundef %2)
  %146 = getelementptr inbounds i8, ptr %0, i64 1264
  br label %369

147:                                              ; preds = %45
  %148 = getelementptr inbounds i8, ptr %0, i64 1264
  store i8 0, ptr %148, align 8, !tbaa !29
  %149 = getelementptr inbounds i8, ptr %0, i64 1128
  %150 = getelementptr inbounds i8, ptr %0, i64 1200
  %151 = tail call noundef double @_ZN11alglib_implL20ssgd_penalizedtargetEPNS_9ssgdstateEPKNS_9ae_vectorES4_PNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %149, ptr noundef nonnull %150, ptr noundef %2)
  %152 = getelementptr inbounds i8, ptr %0, i64 1424
  %153 = getelementptr inbounds i8, ptr %0, i64 1488
  %154 = tail call noundef double @_ZN11alglib_implL20ssgd_penalizedtargetEPNS_9ssgdstateEPKNS_9ae_vectorES4_PNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %152, ptr noundef nonnull %153, ptr noundef %2)
  %155 = trunc nuw i8 %.0443 to i1
  br i1 %155, label %156, label %159

156:                                              ; preds = %147
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1434)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1130)
  %157 = getelementptr inbounds i8, ptr %0, i64 1552
  %158 = getelementptr inbounds i8, ptr %0, i64 88
  tail call void @_ZN11alglib_impl36tracevectorunscaledunshiftedautoprecEPKNS_9ae_vectorElS2_bS2_bPNS_8ae_stateE(ptr noundef nonnull %157, i64 noundef %.0451, ptr noundef nonnull %158, i1 noundef zeroext true, ptr noundef nonnull %158, i1 noundef zeroext false, ptr noundef %2)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.208)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.733)
  tail call void @_ZN11alglib_impl19tracevectorautoprecEPKNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef nonnull %157, i64 noundef 0, i64 noundef %.0451, ptr noundef %2)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.208)
  br label %159

159:                                              ; preds = %156, %147
  %160 = tail call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %151, double noundef %154)
  br i1 %160, label %161, label %164

161:                                              ; preds = %159
  %162 = getelementptr inbounds i8, ptr %0, i64 1552
  tail call void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.0451, ptr noundef nonnull %162, ptr noundef nonnull %152, ptr noundef %2)
  %163 = add nsw i64 %.0447, 1
  tail call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %163, ptr noundef nonnull %150, ptr noundef nonnull %153, ptr noundef %2)
  br label %164

164:                                              ; preds = %161, %159
  %165 = trunc nuw i8 %.0445 to i1
  br i1 %165, label %166, label %176

166:                                              ; preds = %164
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1435)
  %167 = getelementptr inbounds i8, ptr %0, i64 1256
  %168 = load ptr, ptr %167, align 8, !tbaa !20
  %169 = load double, ptr %168, align 8, !tbaa !25
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1436, double noundef %169)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1437, double noundef %151)
  %170 = getelementptr inbounds i8, ptr %0, i64 1552
  %171 = tail call noundef double @_ZN11alglib_implL16ssgd_lcviolationEPNS_9ssgdstateEPKNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %170, ptr noundef %2)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1438, double noundef %171)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1439)
  %172 = getelementptr inbounds i8, ptr %0, i64 1544
  %173 = load ptr, ptr %172, align 8, !tbaa !20
  %174 = load double, ptr %173, align 8, !tbaa !25
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1436, double noundef %174)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1437, double noundef %154)
  %175 = tail call noundef double @_ZN11alglib_implL16ssgd_lcviolationEPNS_9ssgdstateEPKNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %152, ptr noundef %2)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1438, double noundef %175)
  br label %176

176:                                              ; preds = %166, %164
  %.not457.not470 = icmp sgt i64 %.0451, 0
  br i1 %.not457.not470, label %.lr.ph473, label %._crit_edge474

.lr.ph473:                                        ; preds = %176
  %177 = getelementptr inbounds i8, ptr %0, i64 1400
  %178 = getelementptr inbounds i8, ptr %0, i64 2424
  %179 = getelementptr inbounds i8, ptr %0, i64 2488
  br label %180

180:                                              ; preds = %.lr.ph473, %180
  %.3432471 = phi i64 [ 0, %.lr.ph473 ], [ %190, %180 ]
  %181 = tail call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %177, ptr noundef %2)
  %182 = fadd double %181, -5.000000e-01
  %183 = load ptr, ptr %178, align 8, !tbaa !20
  %184 = getelementptr inbounds double, ptr %183, i64 %.3432471
  store double %182, ptr %184, align 8, !tbaa !25
  %185 = load ptr, ptr %178, align 8, !tbaa !20
  %186 = getelementptr inbounds double, ptr %185, i64 %.3432471
  %187 = load double, ptr %186, align 8, !tbaa !25
  %188 = load ptr, ptr %179, align 8, !tbaa !20
  %189 = getelementptr inbounds double, ptr %188, i64 %.3432471
  store double %187, ptr %189, align 8, !tbaa !25
  %190 = add nuw nsw i64 %.3432471, 1
  %exitcond483.not = icmp eq i64 %190, %.0451
  br i1 %exitcond483.not, label %._crit_edge474, label %180, !llvm.loop !39

._crit_edge474:                                   ; preds = %180, %176
  %191 = add nsw i64 %.0447, 1
  %192 = getelementptr inbounds i8, ptr %0, i64 2048
  tail call void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %191, double noundef 0.000000e+00, ptr noundef nonnull %192, ptr noundef %2)
  br label %193

193:                                              ; preds = %._crit_edge468, %._crit_edge474
  %.4433 = phi i64 [ 0, %._crit_edge474 ], [ %312, %._crit_edge468 ]
  %.3426 = phi i64 [ %.0423, %._crit_edge474 ], [ %.5428.lcssa, %._crit_edge468 ]
  %.3421 = phi double [ %151, %._crit_edge474 ], [ %.0418, %._crit_edge468 ]
  %.3416 = phi double [ %154, %._crit_edge474 ], [ %.0413, %._crit_edge468 ]
  %.3 = phi double [ %.0, %._crit_edge474 ], [ %.4.lcssa, %._crit_edge468 ]
  %.not458 = icmp slt i64 %.4433, %.0451
  br i1 %.not458, label %198, label %.preheader

.preheader:                                       ; preds = %193
  %.not459475 = icmp slt i64 %.0447, 0
  br i1 %.not459475, label %._crit_edge478, label %.lr.ph477

.lr.ph477:                                        ; preds = %.preheader
  %194 = getelementptr inbounds i8, ptr %0, i64 1328
  %195 = getelementptr inbounds i8, ptr %0, i64 2104
  %196 = getelementptr inbounds i8, ptr %0, i64 1392
  %197 = add nuw i64 %.0447, 1
  br label %313

198:                                              ; preds = %193
  %199 = getelementptr inbounds i8, ptr %0, i64 1552
  %200 = getelementptr inbounds i8, ptr %0, i64 1128
  tail call void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.0451, ptr noundef nonnull %199, ptr noundef nonnull %200, ptr noundef %2)
  %201 = getelementptr inbounds i8, ptr %0, i64 1752
  %202 = load double, ptr %201, align 8, !tbaa !37
  %203 = getelementptr inbounds i8, ptr %0, i64 2368
  tail call void @_ZN11alglib_impl5raddvEldPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.0451, double noundef %202, ptr noundef nonnull %203, ptr noundef nonnull %200, ptr noundef %2)
  %204 = getelementptr inbounds i8, ptr %0, i64 1184
  %205 = load ptr, ptr %204, align 8, !tbaa !20
  %206 = getelementptr inbounds double, ptr %205, i64 %.4433
  %207 = load double, ptr %206, align 8, !tbaa !25
  %208 = getelementptr inbounds i8, ptr %0, i64 1760
  %209 = load double, ptr %208, align 8, !tbaa !38
  %210 = fsub double %207, %209
  store double %210, ptr %206, align 8, !tbaa !25
  %211 = getelementptr inbounds i8, ptr %0, i64 280
  tail call void @_ZN11alglib_impl10rmergemaxvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.0451, ptr noundef nonnull %211, ptr noundef nonnull %200, ptr noundef %2)
  %212 = getelementptr inbounds i8, ptr %0, i64 344
  tail call void @_ZN11alglib_impl10rmergeminvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.0451, ptr noundef nonnull %212, ptr noundef nonnull %200, ptr noundef %2)
  %213 = getelementptr inbounds i8, ptr %0, i64 1264
  br label %369

214:                                              ; preds = %45
  %215 = getelementptr inbounds i8, ptr %0, i64 1264
  store i8 0, ptr %215, align 8, !tbaa !29
  %216 = getelementptr inbounds i8, ptr %0, i64 1128
  %217 = getelementptr inbounds i8, ptr %0, i64 2112
  tail call void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.0451, ptr noundef nonnull %216, ptr noundef nonnull %217, ptr noundef %2)
  %218 = add nsw i64 %.0447, 1
  %219 = getelementptr inbounds i8, ptr %0, i64 1200
  %220 = getelementptr inbounds i8, ptr %0, i64 2240
  tail call void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %218, ptr noundef nonnull %219, ptr noundef nonnull %220, ptr noundef %2)
  %221 = getelementptr inbounds i8, ptr %0, i64 1552
  tail call void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.0451, ptr noundef nonnull %221, ptr noundef nonnull %216, ptr noundef %2)
  %222 = getelementptr inbounds i8, ptr %0, i64 1752
  %223 = load double, ptr %222, align 8, !tbaa !37
  %224 = getelementptr inbounds i8, ptr %0, i64 2432
  tail call void @_ZN11alglib_impl5raddvEldPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.0451, double noundef %223, ptr noundef nonnull %224, ptr noundef nonnull %216, ptr noundef %2)
  %225 = getelementptr inbounds i8, ptr %0, i64 1184
  %226 = load ptr, ptr %225, align 8, !tbaa !20
  %227 = getelementptr inbounds double, ptr %226, i64 %.0429
  %228 = load double, ptr %227, align 8, !tbaa !25
  %229 = getelementptr inbounds i8, ptr %0, i64 1760
  %230 = load double, ptr %229, align 8, !tbaa !38
  %231 = fadd double %228, %230
  store double %231, ptr %227, align 8, !tbaa !25
  %232 = getelementptr inbounds i8, ptr %0, i64 280
  tail call void @_ZN11alglib_impl10rmergemaxvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.0451, ptr noundef nonnull %232, ptr noundef nonnull %216, ptr noundef %2)
  %233 = getelementptr inbounds i8, ptr %0, i64 344
  tail call void @_ZN11alglib_impl10rmergeminvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.0451, ptr noundef nonnull %233, ptr noundef nonnull %216, ptr noundef %2)
  br label %369

234:                                              ; preds = %45
  %235 = getelementptr inbounds i8, ptr %0, i64 1264
  store i8 0, ptr %235, align 8, !tbaa !29
  %236 = getelementptr inbounds i8, ptr %0, i64 1128
  %237 = getelementptr inbounds i8, ptr %0, i64 2176
  tail call void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.0451, ptr noundef nonnull %236, ptr noundef nonnull %237, ptr noundef %2)
  %238 = add i64 %.0447, 1
  %239 = getelementptr inbounds i8, ptr %0, i64 1200
  %240 = getelementptr inbounds i8, ptr %0, i64 2304
  tail call void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %238, ptr noundef nonnull %239, ptr noundef nonnull %240, ptr noundef %2)
  %.not462 = icmp slt i64 %.0447, 0
  br i1 %.not462, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %234
  %241 = getelementptr inbounds i8, ptr %0, i64 2360
  %242 = getelementptr inbounds i8, ptr %0, i64 2296
  %243 = getelementptr inbounds i8, ptr %0, i64 1760
  %244 = getelementptr inbounds i8, ptr %0, i64 2104
  br label %245

245:                                              ; preds = %.lr.ph, %245
  %.4427463 = phi i64 [ 0, %.lr.ph ], [ %260, %245 ]
  %246 = load ptr, ptr %241, align 8, !tbaa !20
  %247 = getelementptr inbounds double, ptr %246, i64 %.4427463
  %248 = load double, ptr %247, align 8, !tbaa !25
  %249 = load ptr, ptr %242, align 8, !tbaa !20
  %250 = getelementptr inbounds double, ptr %249, i64 %.4427463
  %251 = load double, ptr %250, align 8, !tbaa !25
  %252 = fsub double %248, %251
  %253 = load double, ptr %243, align 8, !tbaa !38
  %254 = fmul double %253, 2.000000e+00
  %255 = fdiv double %252, %254
  %256 = load ptr, ptr %244, align 8, !tbaa !20
  %257 = getelementptr inbounds double, ptr %256, i64 %.4427463
  %258 = load double, ptr %257, align 8, !tbaa !25
  %259 = tail call double @llvm.fmuladd.f64(double %255, double %255, double %258)
  store double %259, ptr %257, align 8, !tbaa !25
  %260 = add nuw i64 %.4427463, 1
  %exitcond.not = icmp eq i64 %.4427463, %.0447
  br i1 %exitcond.not, label %._crit_edge, label %245, !llvm.loop !41

._crit_edge:                                      ; preds = %245, %234
  %.4.lcssa = phi double [ %.0, %234 ], [ %255, %245 ]
  %261 = getelementptr inbounds i8, ptr %0, i64 2360
  %262 = load ptr, ptr %261, align 8, !tbaa !20
  %263 = load double, ptr %262, align 8, !tbaa !25
  %264 = getelementptr inbounds i8, ptr %0, i64 2240
  %265 = getelementptr inbounds i8, ptr %0, i64 2296
  %266 = load ptr, ptr %265, align 8, !tbaa !20
  %267 = load double, ptr %266, align 8, !tbaa !25
  %268 = fsub double %263, %267
  %269 = getelementptr inbounds i8, ptr %0, i64 1392
  %270 = load ptr, ptr %269, align 8, !tbaa !20
  %271 = load double, ptr %270, align 8, !tbaa !25
  %272 = fmul double %271, 2.000000e+00
  %273 = getelementptr inbounds i8, ptr %0, i64 1760
  %274 = load double, ptr %273, align 8, !tbaa !38
  %275 = fmul double %272, %274
  %276 = fdiv double %268, %275
  %277 = getelementptr inbounds i8, ptr %0, i64 1672
  %278 = load ptr, ptr %277, align 8, !tbaa !20
  %279 = getelementptr inbounds double, ptr %278, i64 %.0429
  store double %276, ptr %279, align 8, !tbaa !25
  %.not456.not464 = icmp sgt i64 %.0447, 0
  br i1 %.not456.not464, label %.lr.ph467, label %._crit_edge468

.lr.ph467:                                        ; preds = %._crit_edge, %.lr.ph467
  %.5428465 = phi i64 [ %284, %.lr.ph467 ], [ 0, %._crit_edge ]
  %280 = load ptr, ptr %277, align 8, !tbaa !20
  %281 = getelementptr inbounds double, ptr %280, i64 %.0429
  %282 = load double, ptr %281, align 8, !tbaa !25
  %283 = load ptr, ptr %269, align 8, !tbaa !20
  %284 = add nuw nsw i64 %.5428465, 1
  %285 = getelementptr inbounds double, ptr %283, i64 %284
  %286 = load double, ptr %285, align 8, !tbaa !25
  %287 = tail call noundef double @_ZN11alglib_implL21ssgd_scalednlcpenaltyEPNS_9ssgdstateEPKNS_9ae_vectorEldPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %240, i64 noundef %.5428465, double noundef %286, ptr noundef %2)
  %288 = load ptr, ptr %269, align 8, !tbaa !20
  %289 = getelementptr inbounds double, ptr %288, i64 %284
  %290 = load double, ptr %289, align 8, !tbaa !25
  %291 = tail call noundef double @_ZN11alglib_implL21ssgd_scalednlcpenaltyEPNS_9ssgdstateEPKNS_9ae_vectorEldPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %264, i64 noundef %.5428465, double noundef %290, ptr noundef %2)
  %292 = fsub double %287, %291
  %293 = load double, ptr %273, align 8, !tbaa !38
  %294 = fmul double %293, 2.000000e+00
  %295 = fdiv double %292, %294
  %296 = fadd double %282, %295
  %297 = load ptr, ptr %277, align 8, !tbaa !20
  %298 = getelementptr inbounds double, ptr %297, i64 %.0429
  store double %296, ptr %298, align 8, !tbaa !25
  %exitcond482.not = icmp eq i64 %284, %.0447
  br i1 %exitcond482.not, label %._crit_edge468, label %.lr.ph467, !llvm.loop !42

._crit_edge468:                                   ; preds = %.lr.ph467, %._crit_edge
  %.5428.lcssa = phi i64 [ 0, %._crit_edge ], [ %.0447, %.lr.ph467 ]
  %299 = load ptr, ptr %277, align 8, !tbaa !20
  %300 = getelementptr inbounds double, ptr %299, i64 %.0429
  %301 = load double, ptr %300, align 8, !tbaa !25
  %302 = tail call noundef double @_ZN11alglib_implL14ssgd_lcpenaltyEPNS_9ssgdstateEPKNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %237, ptr noundef %2)
  %303 = getelementptr inbounds i8, ptr %0, i64 2112
  %304 = tail call noundef double @_ZN11alglib_implL14ssgd_lcpenaltyEPNS_9ssgdstateEPKNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %303, ptr noundef %2)
  %305 = fsub double %302, %304
  %306 = load double, ptr %273, align 8, !tbaa !38
  %307 = fmul double %306, 2.000000e+00
  %308 = fdiv double %305, %307
  %309 = fadd double %301, %308
  %310 = load ptr, ptr %277, align 8, !tbaa !20
  %311 = getelementptr inbounds double, ptr %310, i64 %.0429
  store double %309, ptr %311, align 8, !tbaa !25
  %312 = add nsw i64 %.0429, 1
  br label %193

313:                                              ; preds = %.lr.ph477, %313
  %.5434476 = phi i64 [ 0, %.lr.ph477 ], [ %333, %313 ]
  %314 = load ptr, ptr %194, align 8, !tbaa !20
  %315 = getelementptr inbounds double, ptr %314, i64 %.5434476
  %316 = load double, ptr %315, align 8, !tbaa !25
  %317 = load double, ptr @_ZN11alglib_implL16ssgd_sqjmomentumE, align 8, !tbaa !25
  %318 = fsub double 1.000000e+00, %317
  %319 = load ptr, ptr %195, align 8, !tbaa !20
  %320 = getelementptr inbounds double, ptr %319, i64 %.3426
  %321 = load double, ptr %320, align 8, !tbaa !25
  %322 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %321, ptr noundef %2)
  %323 = fmul double %317, %322
  %324 = tail call double @llvm.fmuladd.f64(double %316, double %318, double %323)
  %325 = load ptr, ptr %194, align 8, !tbaa !20
  %326 = getelementptr inbounds double, ptr %325, i64 %.5434476
  store double %324, ptr %326, align 8, !tbaa !25
  %327 = load ptr, ptr %194, align 8, !tbaa !20
  %328 = getelementptr inbounds double, ptr %327, i64 %.5434476
  %329 = load double, ptr %328, align 8, !tbaa !25
  %330 = tail call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %329, double noundef 1.000000e+00, ptr noundef %2)
  %331 = load ptr, ptr %196, align 8, !tbaa !20
  %332 = getelementptr inbounds double, ptr %331, i64 %.5434476
  store double %330, ptr %332, align 8, !tbaa !25
  %333 = add nuw i64 %.5434476, 1
  %exitcond484.not = icmp eq i64 %.5434476, %.0447
  br i1 %exitcond484.not, label %._crit_edge478, label %313, !llvm.loop !43

._crit_edge478:                                   ; preds = %313, %.preheader
  %.5434.lcssa = phi i64 [ 0, %.preheader ], [ %197, %313 ]
  %334 = trunc nuw i8 %.0445 to i1
  br i1 %334, label %335, label %339

335:                                              ; preds = %._crit_edge478
  %336 = getelementptr inbounds i8, ptr %0, i64 1392
  %337 = load ptr, ptr %336, align 8, !tbaa !20
  %338 = load double, ptr %337, align 8, !tbaa !25
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1440, double noundef %338)
  br label %339

339:                                              ; preds = %335, %._crit_edge478
  %340 = getelementptr inbounds i8, ptr %0, i64 1616
  %341 = tail call noundef double @_ZN11alglib_impl6rdotv2ElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %.0451, ptr noundef nonnull %340, ptr noundef %2)
  %342 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %341, ptr noundef %2)
  %343 = load double, ptr @_ZN11alglib_implL16ssgd_sqjmomentumE, align 8, !tbaa !25
  %344 = fsub double 1.000000e+00, %343
  %345 = fmul double %342, %343
  %346 = tail call double @llvm.fmuladd.f64(double %.0407, double %344, double %345)
  %347 = tail call noundef double @_ZN11alglib_impl5rmax3EdddPNS_8ae_stateE(double noundef %346, double noundef %342, double noundef 1.000000e+00, ptr noundef %2)
  %348 = fdiv double 1.000000e+00, %347
  tail call void @_ZN11alglib_impl5rmulvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %.0451, double noundef %348, ptr noundef nonnull %340, ptr noundef %2)
  %349 = getelementptr inbounds i8, ptr %0, i64 1088
  %350 = load double, ptr %349, align 8, !tbaa !44
  %351 = getelementptr inbounds i8, ptr %0, i64 1680
  tail call void @_ZN11alglib_impl5rmulvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %.0451, double noundef %350, ptr noundef nonnull %351, ptr noundef %2)
  %352 = load double, ptr %349, align 8, !tbaa !44
  %353 = fsub double 1.000000e+00, %352
  tail call void @_ZN11alglib_impl5raddvEldPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.0451, double noundef %353, ptr noundef nonnull %340, ptr noundef nonnull %351, ptr noundef %2)
  %354 = getelementptr inbounds i8, ptr %0, i64 1744
  %355 = load double, ptr %354, align 8, !tbaa !34
  %356 = fneg double %355
  %357 = getelementptr inbounds i8, ptr %0, i64 1552
  tail call void @_ZN11alglib_impl5raddvEldPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.0451, double noundef %356, ptr noundef nonnull %351, ptr noundef nonnull %357, ptr noundef %2)
  %358 = getelementptr inbounds i8, ptr %0, i64 280
  tail call void @_ZN11alglib_impl10rmergemaxvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.0451, ptr noundef nonnull %358, ptr noundef nonnull %357, ptr noundef %2)
  %359 = getelementptr inbounds i8, ptr %0, i64 344
  tail call void @_ZN11alglib_impl10rmergeminvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.0451, ptr noundef nonnull %359, ptr noundef nonnull %357, ptr noundef %2)
  %360 = getelementptr inbounds i8, ptr %0, i64 1768
  %361 = load i64, ptr %360, align 8, !tbaa !45
  %362 = add nsw i64 %361, 1
  store i64 %362, ptr %360, align 8, !tbaa !45
  %363 = add nsw i64 %.0436, 1
  br label %95

364:                                              ; preds = %95
  %365 = add nsw i64 %.2441, 1
  br label %89

366:                                              ; preds = %89
  %367 = trunc nuw i8 %.0445 to i1
  br i1 %367, label %368, label %406

368:                                              ; preds = %366
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.1441)
  br label %406

369:                                              ; preds = %214, %198, %143, %57
  %.sink485 = phi ptr [ %215, %214 ], [ %213, %198 ], [ %146, %143 ], [ %74, %57 ]
  %.sink = phi i32 [ 3, %214 ], [ 2, %198 ], [ 1, %143 ], [ 0, %57 ]
  %.1452 = phi i64 [ %.0451, %214 ], [ %.0451, %198 ], [ %.0451, %143 ], [ %47, %57 ]
  %.1450 = phi i64 [ %.0449, %214 ], [ %.0449, %198 ], [ %.0449, %143 ], [ %49, %57 ]
  %.1448 = phi i64 [ %.0447, %214 ], [ %.0447, %198 ], [ %.0447, %143 ], [ %51, %57 ]
  %.1446 = phi i8 [ %.0445, %214 ], [ %.0445, %198 ], [ %.0445, %143 ], [ %53, %57 ]
  %.1444 = phi i8 [ %.0443, %214 ], [ %.0443, %198 ], [ %.0443, %143 ], [ %58, %57 ]
  %.3442 = phi i64 [ %.0439, %214 ], [ %.0439, %198 ], [ %.2441, %143 ], [ %.0439, %57 ]
  %.2438 = phi i64 [ %.0436, %214 ], [ %.0436, %198 ], [ %.1437, %143 ], [ %.0436, %57 ]
  %.6435 = phi i64 [ %.0429, %214 ], [ %.4433, %198 ], [ %.2431, %143 ], [ %.0429, %57 ]
  %.6 = phi i64 [ %.0423, %214 ], [ %.3426, %198 ], [ %.2425, %143 ], [ %.0423, %57 ]
  %.4422 = phi double [ %.0418, %214 ], [ %.3421, %198 ], [ %.2420, %143 ], [ %.0418, %57 ]
  %.4417 = phi double [ %.0413, %214 ], [ %.3416, %198 ], [ %.2415, %143 ], [ %.0413, %57 ]
  %.3410 = phi double [ %.0407, %214 ], [ %.0407, %198 ], [ %.2409, %143 ], [ 5.000000e-16, %57 ]
  %.3406 = phi double [ %.0403, %214 ], [ %.0403, %198 ], [ %.2405, %143 ], [ 1.000000e+00, %57 ]
  %.1402 = phi double [ %.0401, %214 ], [ %.0401, %198 ], [ %103, %143 ], [ %.0401, %57 ]
  %.5 = phi double [ %.0, %214 ], [ %.3, %198 ], [ %.2, %143 ], [ %.0, %57 ]
  store i8 1, ptr %.sink485, align 8, !tbaa !29
  store i32 %.sink, ptr %4, align 8, !tbaa !5
  %370 = getelementptr inbounds i8, ptr %0, i64 1848
  %371 = load ptr, ptr %370, align 8, !tbaa !20
  store i64 %.1452, ptr %371, align 8, !tbaa !21
  %372 = load ptr, ptr %370, align 8, !tbaa !20
  %373 = getelementptr inbounds i8, ptr %372, i64 8
  store i64 %.1450, ptr %373, align 8, !tbaa !21
  %374 = load ptr, ptr %370, align 8, !tbaa !20
  %375 = getelementptr inbounds i8, ptr %374, i64 16
  store i64 %.1448, ptr %375, align 8, !tbaa !21
  %376 = load ptr, ptr %370, align 8, !tbaa !20
  %377 = getelementptr inbounds i8, ptr %376, i64 24
  store i64 %.3442, ptr %377, align 8, !tbaa !21
  %378 = load ptr, ptr %370, align 8, !tbaa !20
  %379 = getelementptr inbounds i8, ptr %378, i64 32
  store i64 %.2438, ptr %379, align 8, !tbaa !21
  %380 = load ptr, ptr %370, align 8, !tbaa !20
  %381 = getelementptr inbounds i8, ptr %380, i64 40
  store i64 %.6435, ptr %381, align 8, !tbaa !21
  %382 = load ptr, ptr %370, align 8, !tbaa !20
  %383 = getelementptr inbounds i8, ptr %382, i64 48
  store i64 %.6, ptr %383, align 8, !tbaa !21
  %384 = getelementptr inbounds i8, ptr %0, i64 1912
  %385 = load ptr, ptr %384, align 8, !tbaa !20
  %386 = and i8 %.1446, 1
  store i8 %386, ptr %385, align 1, !tbaa !22
  %387 = load ptr, ptr %384, align 8, !tbaa !20
  %388 = getelementptr inbounds i8, ptr %387, i64 1
  %389 = and i8 %.1444, 1
  store i8 %389, ptr %388, align 1, !tbaa !22
  %390 = getelementptr inbounds i8, ptr %0, i64 1976
  %391 = load ptr, ptr %390, align 8, !tbaa !20
  store double %.4422, ptr %391, align 8, !tbaa !25
  %392 = load ptr, ptr %390, align 8, !tbaa !20
  %393 = getelementptr inbounds i8, ptr %392, i64 8
  store double %.4417, ptr %393, align 8, !tbaa !25
  %394 = load ptr, ptr %390, align 8, !tbaa !20
  %395 = getelementptr inbounds i8, ptr %394, i64 16
  store double %.0412, ptr %395, align 8, !tbaa !25
  %396 = load ptr, ptr %390, align 8, !tbaa !20
  %397 = getelementptr inbounds i8, ptr %396, i64 24
  store double %.0411, ptr %397, align 8, !tbaa !25
  %398 = load ptr, ptr %390, align 8, !tbaa !20
  %399 = getelementptr inbounds i8, ptr %398, i64 32
  store double %.3410, ptr %399, align 8, !tbaa !25
  %400 = load ptr, ptr %390, align 8, !tbaa !20
  %401 = getelementptr inbounds i8, ptr %400, i64 40
  store double %.3406, ptr %401, align 8, !tbaa !25
  %402 = load ptr, ptr %390, align 8, !tbaa !20
  %403 = getelementptr inbounds i8, ptr %402, i64 48
  store double %.1402, ptr %403, align 8, !tbaa !25
  %404 = load ptr, ptr %390, align 8, !tbaa !20
  %405 = getelementptr inbounds i8, ptr %404, i64 56
  store double %.5, ptr %405, align 8, !tbaa !25
  br label %406

406:                                              ; preds = %366, %368, %369
  %.0453 = phi i1 [ true, %369 ], [ false, %368 ], [ false, %366 ]
  ret i1 %.0453
}

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef double @_ZN11alglib_implL21ssgd_scalednlcpenaltyEPNS_9ssgdstateEPKNS_9ae_vectorEldPNS_8ae_stateE(ptr noundef, ptr noundef, i64 noundef, double noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !18, i64 1784}
!6 = !{!"_ZTSN11alglib_impl9ssgdstateE", !7, i64 0, !7, i64 8, !7, i64 16, !10, i64 24, !10, i64 88, !10, i64 152, !10, i64 216, !10, i64 280, !10, i64 344, !14, i64 408, !10, i64 488, !10, i64 552, !10, i64 616, !10, i64 680, !10, i64 744, !10, i64 808, !10, i64 872, !10, i64 936, !10, i64 1000, !7, i64 1064, !15, i64 1072, !15, i64 1080, !15, i64 1088, !15, i64 1096, !15, i64 1104, !7, i64 1112, !15, i64 1120, !10, i64 1128, !15, i64 1192, !10, i64 1200, !11, i64 1264, !11, i64 1265, !10, i64 1272, !10, i64 1336, !16, i64 1400, !10, i64 1424, !10, i64 1488, !10, i64 1552, !10, i64 1616, !10, i64 1680, !15, i64 1744, !15, i64 1752, !15, i64 1760, !7, i64 1768, !7, i64 1776, !17, i64 1784, !10, i64 2048, !10, i64 2112, !10, i64 2176, !10, i64 2240, !10, i64 2304, !10, i64 2368, !10, i64 2432, !10, i64 2496, !19, i64 2560}
!7 = !{!"long", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTSN11alglib_impl9ae_vectorE", !7, i64 0, !7, i64 8, !11, i64 16, !12, i64 24, !8, i64 56}
!11 = !{!"bool", !8, i64 0}
!12 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24}
!13 = !{!"any pointer", !8, i64 0}
!14 = !{!"_ZTSN11alglib_impl9ae_matrixE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !11, i64 32, !12, i64 40, !8, i64 72}
!15 = !{!"double", !8, i64 0}
!16 = !{!"_ZTSN11alglib_impl10hqrndstateE", !7, i64 0, !7, i64 8, !7, i64 16}
!17 = !{!"_ZTSN11alglib_impl10rcommstateE", !18, i64 0, !10, i64 8, !10, i64 72, !10, i64 136, !10, i64 200}
!18 = !{!"int", !8, i64 0}
!19 = !{!"_ZTSN11alglib_impl12sparsematrixE", !10, i64 0, !10, i64 64, !10, i64 128, !10, i64 192, !10, i64 256, !7, i64 320, !7, i64 328, !7, i64 336, !7, i64 344, !7, i64 352, !7, i64 360}
!20 = !{!8, !8, i64 0}
!21 = !{!7, !7, i64 0}
!22 = !{!11, !11, i64 0}
!23 = !{i8 0, i8 2}
!24 = !{}
!25 = !{!15, !15, i64 0}
!26 = !{!6, !7, i64 0}
!27 = !{!6, !7, i64 8}
!28 = !{!6, !7, i64 16}
!29 = !{!6, !11, i64 1264}
!30 = !{!6, !7, i64 1112}
!31 = !{!6, !7, i64 1064}
!32 = !{!6, !15, i64 1072}
!33 = !{!6, !15, i64 1080}
!34 = !{!6, !15, i64 1744}
!35 = !{!6, !15, i64 1096}
!36 = !{!6, !15, i64 1104}
!37 = !{!6, !15, i64 1752}
!38 = !{!6, !15, i64 1760}
!39 = distinct !{!39, !40}
!40 = !{!"llvm.loop.mustprogress"}
!41 = distinct !{!41, !40}
!42 = distinct !{!42, !40}
!43 = distinct !{!43, !40}
!44 = !{!6, !15, i64 1088}
!45 = !{!6, !7, i64 1768}


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