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

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

%"struct.alglib_impl::ae_frame" = type { %"struct.alglib_impl::ae_dyn_block" }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%"struct.alglib_impl::ae_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%union.anon.0 = type { ptr }
%"struct.alglib_impl::ae_vector" = type { i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon }
%union.anon = type { ptr }
%"struct.alglib_impl::snnlssolver" = type { i64, i64, i64, %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_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::hqrndstate" = type { i64, i64, i64 }

@.str.1 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.317 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.318 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.319 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.320 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.321 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.322 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.323 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.324 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.325 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.326 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.327 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.328 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.329 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.330 = external hidden unnamed_addr constant [43 x i8], align 1

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

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

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

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

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

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

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) #1

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

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

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

declare noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef) #1

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

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

declare noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) #1

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

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

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

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

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

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

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

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

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

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

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

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

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

44:                                               ; preds = %216, %2
  %45 = load i64, ptr %17, align 8, !tbaa !11
  %46 = load i64, ptr %30, align 8, !tbaa !11
  %47 = icmp sle i64 %45, %46
  br i1 %47, label %48, label %219

48:                                               ; preds = %44
  store i64 0, ptr %16, align 8, !tbaa !11
  %49 = load i64, ptr %17, align 8, !tbaa !11
  store i64 %49, ptr %18, align 8, !tbaa !11
  %50 = load i64, ptr %17, align 8, !tbaa !11
  %51 = load i64, ptr %17, align 8, !tbaa !11
  %52 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %19, i64 noundef %50, i64 noundef %51, ptr noundef %52)
  %53 = load i64, ptr %17, align 8, !tbaa !11
  %54 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %23, i64 noundef %53, ptr noundef %54)
  %55 = load i64, ptr %17, align 8, !tbaa !11
  %56 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %21, i64 noundef %55, ptr noundef %56)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %57

57:                                               ; preds = %112, %48
  %58 = load i64, ptr %12, align 8, !tbaa !11
  %59 = load i64, ptr %17, align 8, !tbaa !11
  %60 = sub nsw i64 %59, 1
  %61 = icmp sle i64 %58, %60
  br i1 %61, label %62, label %115

62:                                               ; preds = %57
  store i64 0, ptr %13, align 8, !tbaa !11
  br label %63

63:                                               ; preds = %76, %62
  %64 = load i64, ptr %13, align 8, !tbaa !11
  %65 = load i64, ptr %17, align 8, !tbaa !11
  %66 = sub nsw i64 %65, 1
  %67 = icmp sle i64 %64, %66
  br i1 %67, label %68, label %79

68:                                               ; preds = %63
  %69 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 6
  %70 = load ptr, ptr %69, align 8, !tbaa !15
  %71 = load i64, ptr %12, align 8, !tbaa !11
  %72 = getelementptr inbounds ptr, ptr %70, i64 %71
  %73 = load ptr, ptr %72, align 8, !tbaa !9
  %74 = load i64, ptr %13, align 8, !tbaa !11
  %75 = getelementptr inbounds double, ptr %73, i64 %74
  store double 0.000000e+00, ptr %75, align 8, !tbaa !13
  br label %76

76:                                               ; preds = %68
  %77 = load i64, ptr %13, align 8, !tbaa !11
  %78 = add nsw i64 %77, 1
  store i64 %78, ptr %13, align 8, !tbaa !11
  br label %63, !llvm.loop !16

79:                                               ; preds = %63
  %80 = load ptr, ptr %4, align 8, !tbaa !9
  %81 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef %27, i64 noundef 2, ptr noundef %80)
  %82 = add nsw i64 1, %81
  %83 = sitofp i64 %82 to double
  %84 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 6
  %85 = load ptr, ptr %84, align 8, !tbaa !15
  %86 = load i64, ptr %12, align 8, !tbaa !11
  %87 = getelementptr inbounds ptr, ptr %85, i64 %86
  %88 = load ptr, ptr %87, align 8, !tbaa !9
  %89 = load i64, ptr %12, align 8, !tbaa !11
  %90 = getelementptr inbounds double, ptr %88, i64 %89
  store double %83, ptr %90, align 8, !tbaa !13
  %91 = load ptr, ptr %4, align 8, !tbaa !9
  %92 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef %27, i64 noundef 2, ptr noundef %91)
  %93 = add nsw i64 1, %92
  %94 = load ptr, ptr %4, align 8, !tbaa !9
  %95 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef %27, i64 noundef 2, ptr noundef %94)
  %96 = mul nsw i64 2, %95
  %97 = sub nsw i64 %96, 1
  %98 = mul nsw i64 %93, %97
  %99 = sitofp i64 %98 to double
  %100 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %23, i32 0, i32 4
  %101 = load ptr, ptr %100, align 8, !tbaa !15
  %102 = load i64, ptr %12, align 8, !tbaa !11
  %103 = getelementptr inbounds double, ptr %101, i64 %102
  store double %99, ptr %103, align 8, !tbaa !13
  %104 = load ptr, ptr %4, align 8, !tbaa !9
  %105 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %27, ptr noundef %104)
  %106 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %105, double noundef 5.000000e-01)
  %107 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %108 = load ptr, ptr %107, align 8, !tbaa !15
  %109 = load i64, ptr %12, align 8, !tbaa !11
  %110 = getelementptr inbounds i8, ptr %108, i64 %109
  %111 = zext i1 %106 to i8
  store i8 %111, ptr %110, align 1, !tbaa !5
  br label %112

112:                                              ; preds = %79
  %113 = load i64, ptr %12, align 8, !tbaa !11
  %114 = add nsw i64 %113, 1
  store i64 %114, ptr %12, align 8, !tbaa !11
  br label %57, !llvm.loop !18

115:                                              ; preds = %57
  %116 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl9snnlsinitElllPNS_11snnlssolverEPNS_8ae_stateE(i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef %26, ptr noundef %116)
  %117 = load i64, ptr %17, align 8, !tbaa !11
  %118 = load i64, ptr %17, align 8, !tbaa !11
  %119 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15snnlssetproblemEPNS_11snnlssolverEPNS_9ae_matrixEPNS_9ae_vectorElllPNS_8ae_stateE(ptr noundef %26, ptr noundef %19, ptr noundef %23, i64 noundef 0, i64 noundef %117, i64 noundef %118, ptr noundef %119)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %120

120:                                              ; preds = %136, %115
  %121 = load i64, ptr %12, align 8, !tbaa !11
  %122 = load i64, ptr %17, align 8, !tbaa !11
  %123 = sub nsw i64 %122, 1
  %124 = icmp sle i64 %121, %123
  br i1 %124, label %125, label %139

125:                                              ; preds = %120
  %126 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %127 = load ptr, ptr %126, align 8, !tbaa !15
  %128 = load i64, ptr %12, align 8, !tbaa !11
  %129 = getelementptr inbounds i8, ptr %127, i64 %128
  %130 = load i8, ptr %129, align 1, !tbaa !5, !range !19, !noundef !20
  %131 = trunc i8 %130 to i1
  br i1 %131, label %135, label %132

132:                                              ; preds = %125
  %133 = load i64, ptr %12, align 8, !tbaa !11
  %134 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12snnlsdropnncEPNS_11snnlssolverElPNS_8ae_stateE(ptr noundef %26, i64 noundef %133, ptr noundef %134)
  br label %135

135:                                              ; preds = %132, %125
  br label %136

136:                                              ; preds = %135
  %137 = load i64, ptr %12, align 8, !tbaa !11
  %138 = add nsw i64 %137, 1
  store i64 %138, ptr %12, align 8, !tbaa !11
  br label %120, !llvm.loop !21

139:                                              ; preds = %120
  %140 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl10snnlssolveEPNS_11snnlssolverEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %26, ptr noundef %24, ptr noundef %140)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %141

141:                                              ; preds = %212, %139
  %142 = load i64, ptr %12, align 8, !tbaa !11
  %143 = load i64, ptr %17, align 8, !tbaa !11
  %144 = sub nsw i64 %143, 1
  %145 = icmp sle i64 %142, %144
  br i1 %145, label %146, label %215

146:                                              ; preds = %141
  %147 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %148 = load ptr, ptr %147, align 8, !tbaa !15
  %149 = load i64, ptr %12, align 8, !tbaa !11
  %150 = getelementptr inbounds i8, ptr %148, i64 %149
  %151 = load i8, ptr %150, align 1, !tbaa !5, !range !19, !noundef !20
  %152 = trunc i8 %151 to i1
  br i1 %152, label %153, label %186

153:                                              ; preds = %146
  %154 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %24, i32 0, i32 4
  %155 = load ptr, ptr %154, align 8, !tbaa !15
  %156 = load i64, ptr %12, align 8, !tbaa !11
  %157 = getelementptr inbounds double, ptr %155, i64 %156
  %158 = load double, ptr %157, align 8, !tbaa !13
  %159 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %23, i32 0, i32 4
  %160 = load ptr, ptr %159, align 8, !tbaa !15
  %161 = load i64, ptr %12, align 8, !tbaa !11
  %162 = getelementptr inbounds double, ptr %160, i64 %161
  %163 = load double, ptr %162, align 8, !tbaa !13
  %164 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 6
  %165 = load ptr, ptr %164, align 8, !tbaa !15
  %166 = load i64, ptr %12, align 8, !tbaa !11
  %167 = getelementptr inbounds ptr, ptr %165, i64 %166
  %168 = load ptr, ptr %167, align 8, !tbaa !9
  %169 = load i64, ptr %12, align 8, !tbaa !11
  %170 = getelementptr inbounds double, ptr %168, i64 %169
  %171 = load double, ptr %170, align 8, !tbaa !13
  %172 = fdiv double %163, %171
  %173 = load ptr, ptr %4, align 8, !tbaa !9
  %174 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %172, double noundef 0.000000e+00, ptr noundef %173)
  %175 = fsub double %158, %174
  %176 = load ptr, ptr %4, align 8, !tbaa !9
  %177 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %175, ptr noundef %176)
  %178 = load double, ptr %11, align 8, !tbaa !13
  %179 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %177, double noundef %178)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %8, i1 noundef zeroext %179, ptr noundef @.str.8, i32 noundef 26539, ptr noundef @.str.317)
  %180 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %24, i32 0, i32 4
  %181 = load ptr, ptr %180, align 8, !tbaa !15
  %182 = load i64, ptr %12, align 8, !tbaa !11
  %183 = getelementptr inbounds double, ptr %181, i64 %182
  %184 = load double, ptr %183, align 8, !tbaa !13
  %185 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %184, double noundef 0.000000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %8, i1 noundef zeroext %185, ptr noundef @.str.8, i32 noundef 26540, ptr noundef @.str.318)
  br label %211

186:                                              ; preds = %146
  %187 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %24, i32 0, i32 4
  %188 = load ptr, ptr %187, align 8, !tbaa !15
  %189 = load i64, ptr %12, align 8, !tbaa !11
  %190 = getelementptr inbounds double, ptr %188, i64 %189
  %191 = load double, ptr %190, align 8, !tbaa !13
  %192 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %23, i32 0, i32 4
  %193 = load ptr, ptr %192, align 8, !tbaa !15
  %194 = load i64, ptr %12, align 8, !tbaa !11
  %195 = getelementptr inbounds double, ptr %193, i64 %194
  %196 = load double, ptr %195, align 8, !tbaa !13
  %197 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 6
  %198 = load ptr, ptr %197, align 8, !tbaa !15
  %199 = load i64, ptr %12, align 8, !tbaa !11
  %200 = getelementptr inbounds ptr, ptr %198, i64 %199
  %201 = load ptr, ptr %200, align 8, !tbaa !9
  %202 = load i64, ptr %12, align 8, !tbaa !11
  %203 = getelementptr inbounds double, ptr %201, i64 %202
  %204 = load double, ptr %203, align 8, !tbaa !13
  %205 = fdiv double %196, %204
  %206 = fsub double %191, %205
  %207 = load ptr, ptr %4, align 8, !tbaa !9
  %208 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %206, ptr noundef %207)
  %209 = load double, ptr %11, align 8, !tbaa !13
  %210 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %208, double noundef %209)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %8, i1 noundef zeroext %210, ptr noundef @.str.8, i32 noundef 26544, ptr noundef @.str.319)
  br label %211

211:                                              ; preds = %186, %153
  br label %212

212:                                              ; preds = %211
  %213 = load i64, ptr %12, align 8, !tbaa !11
  %214 = add nsw i64 %213, 1
  store i64 %214, ptr %12, align 8, !tbaa !11
  br label %141, !llvm.loop !22

215:                                              ; preds = %141
  br label %216

216:                                              ; preds = %215
  %217 = load i64, ptr %17, align 8, !tbaa !11
  %218 = add nsw i64 %217, 1
  store i64 %218, ptr %17, align 8, !tbaa !11
  br label %44, !llvm.loop !23

219:                                              ; preds = %44
  store double 1.000000e-05, ptr %11, align 8, !tbaa !13
  store i64 0, ptr %16, align 8, !tbaa !11
  br label %220

220:                                              ; preds = %603, %219
  %221 = load i64, ptr %16, align 8, !tbaa !11
  %222 = load i64, ptr %30, align 8, !tbaa !11
  %223 = icmp sle i64 %221, %222
  br i1 %223, label %224, label %606

224:                                              ; preds = %220
  store i64 0, ptr %17, align 8, !tbaa !11
  br label %225

225:                                              ; preds = %599, %224
  %226 = load i64, ptr %17, align 8, !tbaa !11
  %227 = load i64, ptr %30, align 8, !tbaa !11
  %228 = icmp sle i64 %226, %227
  br i1 %228, label %229, label %602

229:                                              ; preds = %225
  %230 = load i64, ptr %16, align 8, !tbaa !11
  store i64 %230, ptr %18, align 8, !tbaa !11
  br label %231

231:                                              ; preds = %595, %229
  %232 = load i64, ptr %18, align 8, !tbaa !11
  %233 = load i64, ptr %16, align 8, !tbaa !11
  %234 = load i64, ptr %17, align 8, !tbaa !11
  %235 = add nsw i64 %233, %234
  %236 = load i64, ptr %30, align 8, !tbaa !11
  %237 = add nsw i64 %235, %236
  %238 = icmp sle i64 %232, %237
  br i1 %238, label %239, label %598

239:                                              ; preds = %231
  %240 = load i64, ptr %16, align 8, !tbaa !11
  %241 = load i64, ptr %17, align 8, !tbaa !11
  %242 = add nsw i64 %240, %241
  %243 = icmp eq i64 %242, 0
  br i1 %243, label %244, label %245

244:                                              ; preds = %239
  br label %595

245:                                              ; preds = %239
  %246 = load i64, ptr %18, align 8, !tbaa !11
  %247 = icmp eq i64 %246, 0
  br i1 %247, label %248, label %249

248:                                              ; preds = %245
  br label %595

249:                                              ; preds = %245
  %250 = load i64, ptr %17, align 8, !tbaa !11
  %251 = icmp sgt i64 %250, 0
  br i1 %251, label %252, label %286

252:                                              ; preds = %249
  %253 = load i64, ptr %18, align 8, !tbaa !11
  %254 = load i64, ptr %17, align 8, !tbaa !11
  %255 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %19, i64 noundef %253, i64 noundef %254, ptr noundef %255)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %256

256:                                              ; preds = %282, %252
  %257 = load i64, ptr %12, align 8, !tbaa !11
  %258 = load i64, ptr %18, align 8, !tbaa !11
  %259 = sub nsw i64 %258, 1
  %260 = icmp sle i64 %257, %259
  br i1 %260, label %261, label %285

261:                                              ; preds = %256
  store i64 0, ptr %13, align 8, !tbaa !11
  br label %262

262:                                              ; preds = %278, %261
  %263 = load i64, ptr %13, align 8, !tbaa !11
  %264 = load i64, ptr %17, align 8, !tbaa !11
  %265 = sub nsw i64 %264, 1
  %266 = icmp sle i64 %263, %265
  br i1 %266, label %267, label %281

267:                                              ; preds = %262
  %268 = load ptr, ptr %4, align 8, !tbaa !9
  %269 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %268)
  %270 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %269, double -1.000000e+00)
  %271 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 6
  %272 = load ptr, ptr %271, align 8, !tbaa !15
  %273 = load i64, ptr %12, align 8, !tbaa !11
  %274 = getelementptr inbounds ptr, ptr %272, i64 %273
  %275 = load ptr, ptr %274, align 8, !tbaa !9
  %276 = load i64, ptr %13, align 8, !tbaa !11
  %277 = getelementptr inbounds double, ptr %275, i64 %276
  store double %270, ptr %277, align 8, !tbaa !13
  br label %278

278:                                              ; preds = %267
  %279 = load i64, ptr %13, align 8, !tbaa !11
  %280 = add nsw i64 %279, 1
  store i64 %280, ptr %13, align 8, !tbaa !11
  br label %262, !llvm.loop !24

281:                                              ; preds = %262
  br label %282

282:                                              ; preds = %281
  %283 = load i64, ptr %12, align 8, !tbaa !11
  %284 = add nsw i64 %283, 1
  store i64 %284, ptr %12, align 8, !tbaa !11
  br label %256, !llvm.loop !25

285:                                              ; preds = %256
  br label %286

286:                                              ; preds = %285, %249
  %287 = load i64, ptr %18, align 8, !tbaa !11
  %288 = load i64, ptr %16, align 8, !tbaa !11
  %289 = load i64, ptr %17, align 8, !tbaa !11
  %290 = add nsw i64 %288, %289
  %291 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %20, i64 noundef %287, i64 noundef %290, ptr noundef %291)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %292

292:                                              ; preds = %317, %286
  %293 = load i64, ptr %12, align 8, !tbaa !11
  %294 = load i64, ptr %18, align 8, !tbaa !11
  %295 = sub nsw i64 %294, 1
  %296 = icmp sle i64 %293, %295
  br i1 %296, label %297, label %320

297:                                              ; preds = %292
  store i64 0, ptr %13, align 8, !tbaa !11
  br label %298

298:                                              ; preds = %313, %297
  %299 = load i64, ptr %13, align 8, !tbaa !11
  %300 = load i64, ptr %16, align 8, !tbaa !11
  %301 = load i64, ptr %17, align 8, !tbaa !11
  %302 = add nsw i64 %300, %301
  %303 = sub nsw i64 %302, 1
  %304 = icmp sle i64 %299, %303
  br i1 %304, label %305, label %316

305:                                              ; preds = %298
  %306 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %20, i32 0, i32 6
  %307 = load ptr, ptr %306, align 8, !tbaa !15
  %308 = load i64, ptr %12, align 8, !tbaa !11
  %309 = getelementptr inbounds ptr, ptr %307, i64 %308
  %310 = load ptr, ptr %309, align 8, !tbaa !9
  %311 = load i64, ptr %13, align 8, !tbaa !11
  %312 = getelementptr inbounds double, ptr %310, i64 %311
  store double 0.000000e+00, ptr %312, align 8, !tbaa !13
  br label %313

313:                                              ; preds = %305
  %314 = load i64, ptr %13, align 8, !tbaa !11
  %315 = add nsw i64 %314, 1
  store i64 %315, ptr %13, align 8, !tbaa !11
  br label %298, !llvm.loop !26

316:                                              ; preds = %298
  br label %317

317:                                              ; preds = %316
  %318 = load i64, ptr %12, align 8, !tbaa !11
  %319 = add nsw i64 %318, 1
  store i64 %319, ptr %12, align 8, !tbaa !11
  br label %292, !llvm.loop !27

320:                                              ; preds = %292
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %321

321:                                              ; preds = %334, %320
  %322 = load i64, ptr %12, align 8, !tbaa !11
  %323 = load i64, ptr %16, align 8, !tbaa !11
  %324 = sub nsw i64 %323, 1
  %325 = icmp sle i64 %322, %324
  br i1 %325, label %326, label %337

326:                                              ; preds = %321
  %327 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %20, i32 0, i32 6
  %328 = load ptr, ptr %327, align 8, !tbaa !15
  %329 = load i64, ptr %12, align 8, !tbaa !11
  %330 = getelementptr inbounds ptr, ptr %328, i64 %329
  %331 = load ptr, ptr %330, align 8, !tbaa !9
  %332 = load i64, ptr %12, align 8, !tbaa !11
  %333 = getelementptr inbounds double, ptr %331, i64 %332
  store double 1.000000e+00, ptr %333, align 8, !tbaa !13
  br label %334

334:                                              ; preds = %326
  %335 = load i64, ptr %12, align 8, !tbaa !11
  %336 = add nsw i64 %335, 1
  store i64 %336, ptr %12, align 8, !tbaa !11
  br label %321, !llvm.loop !28

337:                                              ; preds = %321
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %338

338:                                              ; preds = %371, %337
  %339 = load i64, ptr %12, align 8, !tbaa !11
  %340 = load i64, ptr %18, align 8, !tbaa !11
  %341 = sub nsw i64 %340, 1
  %342 = icmp sle i64 %339, %341
  br i1 %342, label %343, label %374

343:                                              ; preds = %338
  store i64 0, ptr %13, align 8, !tbaa !11
  br label %344

344:                                              ; preds = %367, %343
  %345 = load i64, ptr %13, align 8, !tbaa !11
  %346 = load i64, ptr %17, align 8, !tbaa !11
  %347 = sub nsw i64 %346, 1
  %348 = icmp sle i64 %345, %347
  br i1 %348, label %349, label %370

349:                                              ; preds = %344
  %350 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 6
  %351 = load ptr, ptr %350, align 8, !tbaa !15
  %352 = load i64, ptr %12, align 8, !tbaa !11
  %353 = getelementptr inbounds ptr, ptr %351, i64 %352
  %354 = load ptr, ptr %353, align 8, !tbaa !9
  %355 = load i64, ptr %13, align 8, !tbaa !11
  %356 = getelementptr inbounds double, ptr %354, i64 %355
  %357 = load double, ptr %356, align 8, !tbaa !13
  %358 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %20, i32 0, i32 6
  %359 = load ptr, ptr %358, align 8, !tbaa !15
  %360 = load i64, ptr %12, align 8, !tbaa !11
  %361 = getelementptr inbounds ptr, ptr %359, i64 %360
  %362 = load ptr, ptr %361, align 8, !tbaa !9
  %363 = load i64, ptr %16, align 8, !tbaa !11
  %364 = load i64, ptr %13, align 8, !tbaa !11
  %365 = add nsw i64 %363, %364
  %366 = getelementptr inbounds double, ptr %362, i64 %365
  store double %357, ptr %366, align 8, !tbaa !13
  br label %367

367:                                              ; preds = %349
  %368 = load i64, ptr %13, align 8, !tbaa !11
  %369 = add nsw i64 %368, 1
  store i64 %369, ptr %13, align 8, !tbaa !11
  br label %344, !llvm.loop !29

370:                                              ; preds = %344
  br label %371

371:                                              ; preds = %370
  %372 = load i64, ptr %12, align 8, !tbaa !11
  %373 = add nsw i64 %372, 1
  store i64 %373, ptr %12, align 8, !tbaa !11
  br label %338, !llvm.loop !30

374:                                              ; preds = %338
  %375 = load i64, ptr %18, align 8, !tbaa !11
  %376 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %23, i64 noundef %375, ptr noundef %376)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %377

377:                                              ; preds = %390, %374
  %378 = load i64, ptr %12, align 8, !tbaa !11
  %379 = load i64, ptr %18, align 8, !tbaa !11
  %380 = sub nsw i64 %379, 1
  %381 = icmp sle i64 %378, %380
  br i1 %381, label %382, label %393

382:                                              ; preds = %377
  %383 = load ptr, ptr %4, align 8, !tbaa !9
  %384 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %383)
  %385 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %384, double -1.000000e+00)
  %386 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %23, i32 0, i32 4
  %387 = load ptr, ptr %386, align 8, !tbaa !15
  %388 = load i64, ptr %12, align 8, !tbaa !11
  %389 = getelementptr inbounds double, ptr %387, i64 %388
  store double %385, ptr %389, align 8, !tbaa !13
  br label %390

390:                                              ; preds = %382
  %391 = load i64, ptr %12, align 8, !tbaa !11
  %392 = add nsw i64 %391, 1
  store i64 %392, ptr %12, align 8, !tbaa !11
  br label %377, !llvm.loop !31

393:                                              ; preds = %377
  %394 = load i64, ptr %16, align 8, !tbaa !11
  %395 = load i64, ptr %17, align 8, !tbaa !11
  %396 = add nsw i64 %394, %395
  %397 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %21, i64 noundef %396, ptr noundef %397)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %398

398:                                              ; preds = %414, %393
  %399 = load i64, ptr %12, align 8, !tbaa !11
  %400 = load i64, ptr %16, align 8, !tbaa !11
  %401 = load i64, ptr %17, align 8, !tbaa !11
  %402 = add nsw i64 %400, %401
  %403 = sub nsw i64 %402, 1
  %404 = icmp sle i64 %399, %403
  br i1 %404, label %405, label %417

405:                                              ; preds = %398
  %406 = load ptr, ptr %4, align 8, !tbaa !9
  %407 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %406)
  %408 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %407, double noundef 5.000000e-01)
  %409 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %410 = load ptr, ptr %409, align 8, !tbaa !15
  %411 = load i64, ptr %12, align 8, !tbaa !11
  %412 = getelementptr inbounds i8, ptr %410, i64 %411
  %413 = zext i1 %408 to i8
  store i8 %413, ptr %412, align 1, !tbaa !5
  br label %414

414:                                              ; preds = %405
  %415 = load i64, ptr %12, align 8, !tbaa !11
  %416 = add nsw i64 %415, 1
  store i64 %416, ptr %12, align 8, !tbaa !11
  br label %398, !llvm.loop !32

417:                                              ; preds = %398
  %418 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl9snnlsinitElllPNS_11snnlssolverEPNS_8ae_stateE(i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef %26, ptr noundef %418)
  %419 = load i64, ptr %16, align 8, !tbaa !11
  %420 = load i64, ptr %17, align 8, !tbaa !11
  %421 = load i64, ptr %18, align 8, !tbaa !11
  %422 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15snnlssetproblemEPNS_11snnlssolverEPNS_9ae_matrixEPNS_9ae_vectorElllPNS_8ae_stateE(ptr noundef %26, ptr noundef %19, ptr noundef %23, i64 noundef %419, i64 noundef %420, i64 noundef %421, ptr noundef %422)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %423

423:                                              ; preds = %441, %417
  %424 = load i64, ptr %12, align 8, !tbaa !11
  %425 = load i64, ptr %16, align 8, !tbaa !11
  %426 = load i64, ptr %17, align 8, !tbaa !11
  %427 = add nsw i64 %425, %426
  %428 = sub nsw i64 %427, 1
  %429 = icmp sle i64 %424, %428
  br i1 %429, label %430, label %444

430:                                              ; preds = %423
  %431 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %432 = load ptr, ptr %431, align 8, !tbaa !15
  %433 = load i64, ptr %12, align 8, !tbaa !11
  %434 = getelementptr inbounds i8, ptr %432, i64 %433
  %435 = load i8, ptr %434, align 1, !tbaa !5, !range !19, !noundef !20
  %436 = trunc i8 %435 to i1
  br i1 %436, label %440, label %437

437:                                              ; preds = %430
  %438 = load i64, ptr %12, align 8, !tbaa !11
  %439 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12snnlsdropnncEPNS_11snnlssolverElPNS_8ae_stateE(ptr noundef %26, i64 noundef %438, ptr noundef %439)
  br label %440

440:                                              ; preds = %437, %430
  br label %441

441:                                              ; preds = %440
  %442 = load i64, ptr %12, align 8, !tbaa !11
  %443 = add nsw i64 %442, 1
  store i64 %443, ptr %12, align 8, !tbaa !11
  br label %423, !llvm.loop !33

444:                                              ; preds = %423
  %445 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl10snnlssolveEPNS_11snnlssolverEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %26, ptr noundef %24, ptr noundef %445)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %446

446:                                              ; preds = %469, %444
  %447 = load i64, ptr %12, align 8, !tbaa !11
  %448 = load i64, ptr %16, align 8, !tbaa !11
  %449 = load i64, ptr %17, align 8, !tbaa !11
  %450 = add nsw i64 %448, %449
  %451 = sub nsw i64 %450, 1
  %452 = icmp sle i64 %447, %451
  br i1 %452, label %453, label %472

453:                                              ; preds = %446
  %454 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %455 = load ptr, ptr %454, align 8, !tbaa !15
  %456 = load i64, ptr %12, align 8, !tbaa !11
  %457 = getelementptr inbounds i8, ptr %455, i64 %456
  %458 = load i8, ptr %457, align 1, !tbaa !5, !range !19, !noundef !20
  %459 = trunc i8 %458 to i1
  br i1 %459, label %460, label %467

460:                                              ; preds = %453
  %461 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %24, i32 0, i32 4
  %462 = load ptr, ptr %461, align 8, !tbaa !15
  %463 = load i64, ptr %12, align 8, !tbaa !11
  %464 = getelementptr inbounds double, ptr %462, i64 %463
  %465 = load double, ptr %464, align 8, !tbaa !13
  %466 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %465, double noundef 0.000000e+00)
  br label %467

467:                                              ; preds = %460, %453
  %468 = phi i1 [ false, %453 ], [ %466, %460 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %6, i1 noundef zeroext %468, ptr noundef @.str.8, i32 noundef 26645, ptr noundef @.str.320)
  br label %469

469:                                              ; preds = %467
  %470 = load i64, ptr %12, align 8, !tbaa !11
  %471 = add nsw i64 %470, 1
  store i64 %471, ptr %12, align 8, !tbaa !11
  br label %446, !llvm.loop !34

472:                                              ; preds = %446
  %473 = load i64, ptr %16, align 8, !tbaa !11
  %474 = load i64, ptr %17, align 8, !tbaa !11
  %475 = add nsw i64 %473, %474
  %476 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %22, i64 noundef %475, ptr noundef %476)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %477

477:                                              ; preds = %506, %472
  %478 = load i64, ptr %12, align 8, !tbaa !11
  %479 = load i64, ptr %16, align 8, !tbaa !11
  %480 = load i64, ptr %17, align 8, !tbaa !11
  %481 = add nsw i64 %479, %480
  %482 = sub nsw i64 %481, 1
  %483 = icmp sle i64 %478, %482
  br i1 %483, label %484, label %509

484:                                              ; preds = %477
  %485 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %23, i32 0, i32 4
  %486 = load ptr, ptr %485, align 8, !tbaa !15
  %487 = getelementptr inbounds double, ptr %486, i64 0
  %488 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %20, i32 0, i32 6
  %489 = load ptr, ptr %488, align 8, !tbaa !15
  %490 = getelementptr inbounds ptr, ptr %489, i64 0
  %491 = load ptr, ptr %490, align 8, !tbaa !9
  %492 = load i64, ptr %12, align 8, !tbaa !11
  %493 = getelementptr inbounds double, ptr %491, i64 %492
  %494 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %20, i32 0, i32 2
  %495 = load i64, ptr %494, align 8, !tbaa !35
  %496 = load i64, ptr %18, align 8, !tbaa !11
  %497 = sub nsw i64 %496, 1
  %498 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %497)
  %499 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %487, i64 noundef 1, ptr noundef %493, i64 noundef %495, i64 noundef %498)
  store double %499, ptr %15, align 8, !tbaa !13
  %500 = load double, ptr %15, align 8, !tbaa !13
  %501 = fneg double %500
  %502 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %22, i32 0, i32 4
  %503 = load ptr, ptr %502, align 8, !tbaa !15
  %504 = load i64, ptr %12, align 8, !tbaa !11
  %505 = getelementptr inbounds double, ptr %503, i64 %504
  store double %501, ptr %505, align 8, !tbaa !13
  br label %506

506:                                              ; preds = %484
  %507 = load i64, ptr %12, align 8, !tbaa !11
  %508 = add nsw i64 %507, 1
  store i64 %508, ptr %12, align 8, !tbaa !11
  br label %477, !llvm.loop !38

509:                                              ; preds = %477
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %510

510:                                              ; preds = %546, %509
  %511 = load i64, ptr %12, align 8, !tbaa !11
  %512 = load i64, ptr %18, align 8, !tbaa !11
  %513 = sub nsw i64 %512, 1
  %514 = icmp sle i64 %511, %513
  br i1 %514, label %515, label %549

515:                                              ; preds = %510
  %516 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %20, i32 0, i32 6
  %517 = load ptr, ptr %516, align 8, !tbaa !15
  %518 = load i64, ptr %12, align 8, !tbaa !11
  %519 = getelementptr inbounds ptr, ptr %517, i64 %518
  %520 = load ptr, ptr %519, align 8, !tbaa !9
  %521 = getelementptr inbounds double, ptr %520, i64 0
  %522 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %24, i32 0, i32 4
  %523 = load ptr, ptr %522, align 8, !tbaa !15
  %524 = getelementptr inbounds double, ptr %523, i64 0
  %525 = load i64, ptr %16, align 8, !tbaa !11
  %526 = load i64, ptr %17, align 8, !tbaa !11
  %527 = add nsw i64 %525, %526
  %528 = sub nsw i64 %527, 1
  %529 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %528)
  %530 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %521, i64 noundef 1, ptr noundef %524, i64 noundef 1, i64 noundef %529)
  store double %530, ptr %15, align 8, !tbaa !13
  %531 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %22, i32 0, i32 4
  %532 = load ptr, ptr %531, align 8, !tbaa !15
  %533 = getelementptr inbounds double, ptr %532, i64 0
  %534 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %20, i32 0, i32 6
  %535 = load ptr, ptr %534, align 8, !tbaa !15
  %536 = load i64, ptr %12, align 8, !tbaa !11
  %537 = getelementptr inbounds ptr, ptr %535, i64 %536
  %538 = load ptr, ptr %537, align 8, !tbaa !9
  %539 = getelementptr inbounds double, ptr %538, i64 0
  %540 = load i64, ptr %16, align 8, !tbaa !11
  %541 = load i64, ptr %17, align 8, !tbaa !11
  %542 = add nsw i64 %540, %541
  %543 = sub nsw i64 %542, 1
  %544 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %543)
  %545 = load double, ptr %15, align 8, !tbaa !13
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %533, i64 noundef 1, ptr noundef %539, i64 noundef 1, i64 noundef %544, double noundef %545)
  br label %546

546:                                              ; preds = %515
  %547 = load i64, ptr %12, align 8, !tbaa !11
  %548 = add nsw i64 %547, 1
  store i64 %548, ptr %12, align 8, !tbaa !11
  br label %510, !llvm.loop !39

549:                                              ; preds = %510
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %550

550:                                              ; preds = %591, %549
  %551 = load i64, ptr %12, align 8, !tbaa !11
  %552 = load i64, ptr %16, align 8, !tbaa !11
  %553 = load i64, ptr %17, align 8, !tbaa !11
  %554 = add nsw i64 %552, %553
  %555 = sub nsw i64 %554, 1
  %556 = icmp sle i64 %551, %555
  br i1 %556, label %557, label %594

557:                                              ; preds = %550
  %558 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %559 = load ptr, ptr %558, align 8, !tbaa !15
  %560 = load i64, ptr %12, align 8, !tbaa !11
  %561 = getelementptr inbounds i8, ptr %559, i64 %560
  %562 = load i8, ptr %561, align 1, !tbaa !5, !range !19, !noundef !20
  %563 = trunc i8 %562 to i1
  br i1 %563, label %564, label %571

564:                                              ; preds = %557
  %565 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %24, i32 0, i32 4
  %566 = load ptr, ptr %565, align 8, !tbaa !15
  %567 = load i64, ptr %12, align 8, !tbaa !11
  %568 = getelementptr inbounds double, ptr %566, i64 %567
  %569 = load double, ptr %568, align 8, !tbaa !13
  %570 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %569, double noundef 0.000000e+00)
  br i1 %570, label %571, label %581

571:                                              ; preds = %564, %557
  %572 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %22, i32 0, i32 4
  %573 = load ptr, ptr %572, align 8, !tbaa !15
  %574 = load i64, ptr %12, align 8, !tbaa !11
  %575 = getelementptr inbounds double, ptr %573, i64 %574
  %576 = load double, ptr %575, align 8, !tbaa !13
  %577 = load ptr, ptr %4, align 8, !tbaa !9
  %578 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %576, ptr noundef %577)
  %579 = load double, ptr %11, align 8, !tbaa !13
  %580 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %578, double noundef %579)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %6, i1 noundef zeroext %580, ptr noundef @.str.8, i32 noundef 26667, ptr noundef @.str.321)
  br label %590

581:                                              ; preds = %564
  %582 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %22, i32 0, i32 4
  %583 = load ptr, ptr %582, align 8, !tbaa !15
  %584 = load i64, ptr %12, align 8, !tbaa !11
  %585 = getelementptr inbounds double, ptr %583, i64 %584
  %586 = load double, ptr %585, align 8, !tbaa !13
  %587 = load double, ptr %11, align 8, !tbaa !13
  %588 = fneg double %587
  %589 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %586, double noundef %588)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %6, i1 noundef zeroext %589, ptr noundef @.str.8, i32 noundef 26671, ptr noundef @.str.322)
  br label %590

590:                                              ; preds = %581, %571
  br label %591

591:                                              ; preds = %590
  %592 = load i64, ptr %12, align 8, !tbaa !11
  %593 = add nsw i64 %592, 1
  store i64 %593, ptr %12, align 8, !tbaa !11
  br label %550, !llvm.loop !40

594:                                              ; preds = %550
  br label %595

595:                                              ; preds = %594, %248, %244
  %596 = load i64, ptr %18, align 8, !tbaa !11
  %597 = add nsw i64 %596, 1
  store i64 %597, ptr %18, align 8, !tbaa !11
  br label %231, !llvm.loop !41

598:                                              ; preds = %231
  br label %599

599:                                              ; preds = %598
  %600 = load i64, ptr %17, align 8, !tbaa !11
  %601 = add nsw i64 %600, 1
  store i64 %601, ptr %17, align 8, !tbaa !11
  br label %225, !llvm.loop !42

602:                                              ; preds = %225
  br label %603

603:                                              ; preds = %602
  %604 = load i64, ptr %16, align 8, !tbaa !11
  %605 = add nsw i64 %604, 1
  store i64 %605, ptr %16, align 8, !tbaa !11
  br label %220, !llvm.loop !43

606:                                              ; preds = %220
  store double 0x3E7AD7F29ABCAF48, ptr %29, align 8, !tbaa !13
  store i64 0, ptr %16, align 8, !tbaa !11
  br label %607

607:                                              ; preds = %958, %606
  %608 = load i64, ptr %16, align 8, !tbaa !11
  %609 = load i64, ptr %30, align 8, !tbaa !11
  %610 = icmp sle i64 %608, %609
  br i1 %610, label %611, label %961

611:                                              ; preds = %607
  store i64 0, ptr %17, align 8, !tbaa !11
  br label %612

612:                                              ; preds = %954, %611
  %613 = load i64, ptr %17, align 8, !tbaa !11
  %614 = load i64, ptr %30, align 8, !tbaa !11
  %615 = icmp sle i64 %613, %614
  br i1 %615, label %616, label %957

616:                                              ; preds = %612
  %617 = load i64, ptr %16, align 8, !tbaa !11
  store i64 %617, ptr %18, align 8, !tbaa !11
  br label %618

618:                                              ; preds = %950, %616
  %619 = load i64, ptr %18, align 8, !tbaa !11
  %620 = load i64, ptr %16, align 8, !tbaa !11
  %621 = load i64, ptr %17, align 8, !tbaa !11
  %622 = add nsw i64 %620, %621
  %623 = load i64, ptr %30, align 8, !tbaa !11
  %624 = add nsw i64 %622, %623
  %625 = icmp sle i64 %619, %624
  br i1 %625, label %626, label %953

626:                                              ; preds = %618
  store i64 0, ptr %14, align 8, !tbaa !11
  br label %627

627:                                              ; preds = %946, %626
  %628 = load i64, ptr %14, align 8, !tbaa !11
  %629 = icmp sle i64 %628, 20
  br i1 %629, label %630, label %949

630:                                              ; preds = %627
  %631 = load i64, ptr %16, align 8, !tbaa !11
  %632 = load i64, ptr %17, align 8, !tbaa !11
  %633 = add nsw i64 %631, %632
  %634 = icmp eq i64 %633, 0
  br i1 %634, label %635, label %636

635:                                              ; preds = %630
  br label %946

636:                                              ; preds = %630
  %637 = load i64, ptr %18, align 8, !tbaa !11
  %638 = icmp eq i64 %637, 0
  br i1 %638, label %639, label %640

639:                                              ; preds = %636
  br label %946

640:                                              ; preds = %636
  %641 = load i64, ptr %18, align 8, !tbaa !11
  %642 = load i64, ptr %16, align 8, !tbaa !11
  %643 = load i64, ptr %17, align 8, !tbaa !11
  %644 = add nsw i64 %642, %643
  %645 = icmp slt i64 %641, %644
  br i1 %645, label %646, label %647

646:                                              ; preds = %640
  br label %946

647:                                              ; preds = %640
  %648 = load i64, ptr %14, align 8, !tbaa !11
  %649 = sub nsw i64 0, %648
  %650 = sitofp i64 %649 to double
  %651 = load ptr, ptr %4, align 8, !tbaa !9
  %652 = call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef 1.000000e+01, double noundef %650, ptr noundef %651)
  store double %652, ptr %28, align 8, !tbaa !13
  %653 = load i64, ptr %17, align 8, !tbaa !11
  %654 = icmp sgt i64 %653, 0
  br i1 %654, label %655, label %689

655:                                              ; preds = %647
  %656 = load i64, ptr %18, align 8, !tbaa !11
  %657 = load i64, ptr %17, align 8, !tbaa !11
  %658 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %19, i64 noundef %656, i64 noundef %657, ptr noundef %658)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %659

659:                                              ; preds = %685, %655
  %660 = load i64, ptr %12, align 8, !tbaa !11
  %661 = load i64, ptr %18, align 8, !tbaa !11
  %662 = sub nsw i64 %661, 1
  %663 = icmp sle i64 %660, %662
  br i1 %663, label %664, label %688

664:                                              ; preds = %659
  store i64 0, ptr %13, align 8, !tbaa !11
  br label %665

665:                                              ; preds = %681, %664
  %666 = load i64, ptr %13, align 8, !tbaa !11
  %667 = load i64, ptr %17, align 8, !tbaa !11
  %668 = sub nsw i64 %667, 1
  %669 = icmp sle i64 %666, %668
  br i1 %669, label %670, label %684

670:                                              ; preds = %665
  %671 = load ptr, ptr %4, align 8, !tbaa !9
  %672 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %27, ptr noundef %671)
  %673 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %672, double -1.000000e+00)
  %674 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 6
  %675 = load ptr, ptr %674, align 8, !tbaa !15
  %676 = load i64, ptr %12, align 8, !tbaa !11
  %677 = getelementptr inbounds ptr, ptr %675, i64 %676
  %678 = load ptr, ptr %677, align 8, !tbaa !9
  %679 = load i64, ptr %13, align 8, !tbaa !11
  %680 = getelementptr inbounds double, ptr %678, i64 %679
  store double %673, ptr %680, align 8, !tbaa !13
  br label %681

681:                                              ; preds = %670
  %682 = load i64, ptr %13, align 8, !tbaa !11
  %683 = add nsw i64 %682, 1
  store i64 %683, ptr %13, align 8, !tbaa !11
  br label %665, !llvm.loop !44

684:                                              ; preds = %665
  br label %685

685:                                              ; preds = %684
  %686 = load i64, ptr %12, align 8, !tbaa !11
  %687 = add nsw i64 %686, 1
  store i64 %687, ptr %12, align 8, !tbaa !11
  br label %659, !llvm.loop !45

688:                                              ; preds = %659
  br label %689

689:                                              ; preds = %688, %647
  %690 = load i64, ptr %18, align 8, !tbaa !11
  %691 = load i64, ptr %16, align 8, !tbaa !11
  %692 = load i64, ptr %17, align 8, !tbaa !11
  %693 = add nsw i64 %691, %692
  %694 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %20, i64 noundef %690, i64 noundef %693, ptr noundef %694)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %695

695:                                              ; preds = %720, %689
  %696 = load i64, ptr %12, align 8, !tbaa !11
  %697 = load i64, ptr %18, align 8, !tbaa !11
  %698 = sub nsw i64 %697, 1
  %699 = icmp sle i64 %696, %698
  br i1 %699, label %700, label %723

700:                                              ; preds = %695
  store i64 0, ptr %13, align 8, !tbaa !11
  br label %701

701:                                              ; preds = %716, %700
  %702 = load i64, ptr %13, align 8, !tbaa !11
  %703 = load i64, ptr %16, align 8, !tbaa !11
  %704 = load i64, ptr %17, align 8, !tbaa !11
  %705 = add nsw i64 %703, %704
  %706 = sub nsw i64 %705, 1
  %707 = icmp sle i64 %702, %706
  br i1 %707, label %708, label %719

708:                                              ; preds = %701
  %709 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %20, i32 0, i32 6
  %710 = load ptr, ptr %709, align 8, !tbaa !15
  %711 = load i64, ptr %12, align 8, !tbaa !11
  %712 = getelementptr inbounds ptr, ptr %710, i64 %711
  %713 = load ptr, ptr %712, align 8, !tbaa !9
  %714 = load i64, ptr %13, align 8, !tbaa !11
  %715 = getelementptr inbounds double, ptr %713, i64 %714
  store double 0.000000e+00, ptr %715, align 8, !tbaa !13
  br label %716

716:                                              ; preds = %708
  %717 = load i64, ptr %13, align 8, !tbaa !11
  %718 = add nsw i64 %717, 1
  store i64 %718, ptr %13, align 8, !tbaa !11
  br label %701, !llvm.loop !46

719:                                              ; preds = %701
  br label %720

720:                                              ; preds = %719
  %721 = load i64, ptr %12, align 8, !tbaa !11
  %722 = add nsw i64 %721, 1
  store i64 %722, ptr %12, align 8, !tbaa !11
  br label %695, !llvm.loop !47

723:                                              ; preds = %695
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %724

724:                                              ; preds = %737, %723
  %725 = load i64, ptr %12, align 8, !tbaa !11
  %726 = load i64, ptr %16, align 8, !tbaa !11
  %727 = sub nsw i64 %726, 1
  %728 = icmp sle i64 %725, %727
  br i1 %728, label %729, label %740

729:                                              ; preds = %724
  %730 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %20, i32 0, i32 6
  %731 = load ptr, ptr %730, align 8, !tbaa !15
  %732 = load i64, ptr %12, align 8, !tbaa !11
  %733 = getelementptr inbounds ptr, ptr %731, i64 %732
  %734 = load ptr, ptr %733, align 8, !tbaa !9
  %735 = load i64, ptr %12, align 8, !tbaa !11
  %736 = getelementptr inbounds double, ptr %734, i64 %735
  store double 1.000000e+00, ptr %736, align 8, !tbaa !13
  br label %737

737:                                              ; preds = %729
  %738 = load i64, ptr %12, align 8, !tbaa !11
  %739 = add nsw i64 %738, 1
  store i64 %739, ptr %12, align 8, !tbaa !11
  br label %724, !llvm.loop !48

740:                                              ; preds = %724
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %741

741:                                              ; preds = %774, %740
  %742 = load i64, ptr %12, align 8, !tbaa !11
  %743 = load i64, ptr %18, align 8, !tbaa !11
  %744 = sub nsw i64 %743, 1
  %745 = icmp sle i64 %742, %744
  br i1 %745, label %746, label %777

746:                                              ; preds = %741
  store i64 0, ptr %13, align 8, !tbaa !11
  br label %747

747:                                              ; preds = %770, %746
  %748 = load i64, ptr %13, align 8, !tbaa !11
  %749 = load i64, ptr %17, align 8, !tbaa !11
  %750 = sub nsw i64 %749, 1
  %751 = icmp sle i64 %748, %750
  br i1 %751, label %752, label %773

752:                                              ; preds = %747
  %753 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 6
  %754 = load ptr, ptr %753, align 8, !tbaa !15
  %755 = load i64, ptr %12, align 8, !tbaa !11
  %756 = getelementptr inbounds ptr, ptr %754, i64 %755
  %757 = load ptr, ptr %756, align 8, !tbaa !9
  %758 = load i64, ptr %13, align 8, !tbaa !11
  %759 = getelementptr inbounds double, ptr %757, i64 %758
  %760 = load double, ptr %759, align 8, !tbaa !13
  %761 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %20, i32 0, i32 6
  %762 = load ptr, ptr %761, align 8, !tbaa !15
  %763 = load i64, ptr %12, align 8, !tbaa !11
  %764 = getelementptr inbounds ptr, ptr %762, i64 %763
  %765 = load ptr, ptr %764, align 8, !tbaa !9
  %766 = load i64, ptr %16, align 8, !tbaa !11
  %767 = load i64, ptr %13, align 8, !tbaa !11
  %768 = add nsw i64 %766, %767
  %769 = getelementptr inbounds double, ptr %765, i64 %768
  store double %760, ptr %769, align 8, !tbaa !13
  br label %770

770:                                              ; preds = %752
  %771 = load i64, ptr %13, align 8, !tbaa !11
  %772 = add nsw i64 %771, 1
  store i64 %772, ptr %13, align 8, !tbaa !11
  br label %747, !llvm.loop !49

773:                                              ; preds = %747
  br label %774

774:                                              ; preds = %773
  %775 = load i64, ptr %12, align 8, !tbaa !11
  %776 = add nsw i64 %775, 1
  store i64 %776, ptr %12, align 8, !tbaa !11
  br label %741, !llvm.loop !50

777:                                              ; preds = %741
  %778 = load i64, ptr %16, align 8, !tbaa !11
  %779 = load i64, ptr %17, align 8, !tbaa !11
  %780 = add nsw i64 %778, %779
  %781 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %25, i64 noundef %780, ptr noundef %781)
  %782 = load i64, ptr %16, align 8, !tbaa !11
  %783 = load i64, ptr %17, align 8, !tbaa !11
  %784 = add nsw i64 %782, %783
  %785 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %21, i64 noundef %784, ptr noundef %785)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %786

786:                                              ; preds = %814, %777
  %787 = load i64, ptr %12, align 8, !tbaa !11
  %788 = load i64, ptr %16, align 8, !tbaa !11
  %789 = load i64, ptr %17, align 8, !tbaa !11
  %790 = add nsw i64 %788, %789
  %791 = sub nsw i64 %790, 1
  %792 = icmp sle i64 %787, %791
  br i1 %792, label %793, label %817

793:                                              ; preds = %786
  %794 = load double, ptr %28, align 8, !tbaa !13
  %795 = load ptr, ptr %4, align 8, !tbaa !9
  %796 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %27, ptr noundef %795)
  %797 = fsub double %796, 5.000000e-01
  %798 = fmul double %794, %797
  %799 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %25, i32 0, i32 4
  %800 = load ptr, ptr %799, align 8, !tbaa !15
  %801 = load i64, ptr %12, align 8, !tbaa !11
  %802 = getelementptr inbounds double, ptr %800, i64 %801
  store double %798, ptr %802, align 8, !tbaa !13
  %803 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %25, i32 0, i32 4
  %804 = load ptr, ptr %803, align 8, !tbaa !15
  %805 = load i64, ptr %12, align 8, !tbaa !11
  %806 = getelementptr inbounds double, ptr %804, i64 %805
  %807 = load double, ptr %806, align 8, !tbaa !13
  %808 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %807, double noundef 0.000000e+00)
  %809 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %810 = load ptr, ptr %809, align 8, !tbaa !15
  %811 = load i64, ptr %12, align 8, !tbaa !11
  %812 = getelementptr inbounds i8, ptr %810, i64 %811
  %813 = zext i1 %808 to i8
  store i8 %813, ptr %812, align 1, !tbaa !5
  br label %814

814:                                              ; preds = %793
  %815 = load i64, ptr %12, align 8, !tbaa !11
  %816 = add nsw i64 %815, 1
  store i64 %816, ptr %12, align 8, !tbaa !11
  br label %786, !llvm.loop !51

817:                                              ; preds = %786
  %818 = load i64, ptr %18, align 8, !tbaa !11
  %819 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %23, i64 noundef %818, ptr noundef %819)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %820

820:                                              ; preds = %858, %817
  %821 = load i64, ptr %12, align 8, !tbaa !11
  %822 = load i64, ptr %18, align 8, !tbaa !11
  %823 = sub nsw i64 %822, 1
  %824 = icmp sle i64 %821, %823
  br i1 %824, label %825, label %861

825:                                              ; preds = %820
  store double 0.000000e+00, ptr %15, align 8, !tbaa !13
  store i64 0, ptr %13, align 8, !tbaa !11
  br label %826

826:                                              ; preds = %849, %825
  %827 = load i64, ptr %13, align 8, !tbaa !11
  %828 = load i64, ptr %16, align 8, !tbaa !11
  %829 = load i64, ptr %17, align 8, !tbaa !11
  %830 = add nsw i64 %828, %829
  %831 = sub nsw i64 %830, 1
  %832 = icmp sle i64 %827, %831
  br i1 %832, label %833, label %852

833:                                              ; preds = %826
  %834 = load double, ptr %15, align 8, !tbaa !13
  %835 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %20, i32 0, i32 6
  %836 = load ptr, ptr %835, align 8, !tbaa !15
  %837 = load i64, ptr %12, align 8, !tbaa !11
  %838 = getelementptr inbounds ptr, ptr %836, i64 %837
  %839 = load ptr, ptr %838, align 8, !tbaa !9
  %840 = load i64, ptr %13, align 8, !tbaa !11
  %841 = getelementptr inbounds double, ptr %839, i64 %840
  %842 = load double, ptr %841, align 8, !tbaa !13
  %843 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %25, i32 0, i32 4
  %844 = load ptr, ptr %843, align 8, !tbaa !15
  %845 = load i64, ptr %13, align 8, !tbaa !11
  %846 = getelementptr inbounds double, ptr %844, i64 %845
  %847 = load double, ptr %846, align 8, !tbaa !13
  %848 = call double @llvm.fmuladd.f64(double %842, double %847, double %834)
  store double %848, ptr %15, align 8, !tbaa !13
  br label %849

849:                                              ; preds = %833
  %850 = load i64, ptr %13, align 8, !tbaa !11
  %851 = add nsw i64 %850, 1
  store i64 %851, ptr %13, align 8, !tbaa !11
  br label %826, !llvm.loop !52

852:                                              ; preds = %826
  %853 = load double, ptr %15, align 8, !tbaa !13
  %854 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %23, i32 0, i32 4
  %855 = load ptr, ptr %854, align 8, !tbaa !15
  %856 = load i64, ptr %12, align 8, !tbaa !11
  %857 = getelementptr inbounds double, ptr %855, i64 %856
  store double %853, ptr %857, align 8, !tbaa !13
  br label %858

858:                                              ; preds = %852
  %859 = load i64, ptr %12, align 8, !tbaa !11
  %860 = add nsw i64 %859, 1
  store i64 %860, ptr %12, align 8, !tbaa !11
  br label %820, !llvm.loop !53

861:                                              ; preds = %820
  %862 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl9snnlsinitElllPNS_11snnlssolverEPNS_8ae_stateE(i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef %26, ptr noundef %862)
  %863 = load i64, ptr %16, align 8, !tbaa !11
  %864 = load i64, ptr %17, align 8, !tbaa !11
  %865 = load i64, ptr %18, align 8, !tbaa !11
  %866 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15snnlssetproblemEPNS_11snnlssolverEPNS_9ae_matrixEPNS_9ae_vectorElllPNS_8ae_stateE(ptr noundef %26, ptr noundef %19, ptr noundef %23, i64 noundef %863, i64 noundef %864, i64 noundef %865, ptr noundef %866)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %867

867:                                              ; preds = %885, %861
  %868 = load i64, ptr %12, align 8, !tbaa !11
  %869 = load i64, ptr %16, align 8, !tbaa !11
  %870 = load i64, ptr %17, align 8, !tbaa !11
  %871 = add nsw i64 %869, %870
  %872 = sub nsw i64 %871, 1
  %873 = icmp sle i64 %868, %872
  br i1 %873, label %874, label %888

874:                                              ; preds = %867
  %875 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %876 = load ptr, ptr %875, align 8, !tbaa !15
  %877 = load i64, ptr %12, align 8, !tbaa !11
  %878 = getelementptr inbounds i8, ptr %876, i64 %877
  %879 = load i8, ptr %878, align 1, !tbaa !5, !range !19, !noundef !20
  %880 = trunc i8 %879 to i1
  br i1 %880, label %884, label %881

881:                                              ; preds = %874
  %882 = load i64, ptr %12, align 8, !tbaa !11
  %883 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12snnlsdropnncEPNS_11snnlssolverElPNS_8ae_stateE(ptr noundef %26, i64 noundef %882, ptr noundef %883)
  br label %884

884:                                              ; preds = %881, %874
  br label %885

885:                                              ; preds = %884
  %886 = load i64, ptr %12, align 8, !tbaa !11
  %887 = add nsw i64 %886, 1
  store i64 %887, ptr %12, align 8, !tbaa !11
  br label %867, !llvm.loop !54

888:                                              ; preds = %867
  %889 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl10snnlssolveEPNS_11snnlssolverEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %26, ptr noundef %24, ptr noundef %889)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %890

890:                                              ; preds = %913, %888
  %891 = load i64, ptr %12, align 8, !tbaa !11
  %892 = load i64, ptr %16, align 8, !tbaa !11
  %893 = load i64, ptr %17, align 8, !tbaa !11
  %894 = add nsw i64 %892, %893
  %895 = sub nsw i64 %894, 1
  %896 = icmp sle i64 %891, %895
  br i1 %896, label %897, label %916

897:                                              ; preds = %890
  %898 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %899 = load ptr, ptr %898, align 8, !tbaa !15
  %900 = load i64, ptr %12, align 8, !tbaa !11
  %901 = getelementptr inbounds i8, ptr %899, i64 %900
  %902 = load i8, ptr %901, align 1, !tbaa !5, !range !19, !noundef !20
  %903 = trunc i8 %902 to i1
  br i1 %903, label %904, label %911

904:                                              ; preds = %897
  %905 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %24, i32 0, i32 4
  %906 = load ptr, ptr %905, align 8, !tbaa !15
  %907 = load i64, ptr %12, align 8, !tbaa !11
  %908 = getelementptr inbounds double, ptr %906, i64 %907
  %909 = load double, ptr %908, align 8, !tbaa !13
  %910 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %909, double noundef 0.000000e+00)
  br label %911

911:                                              ; preds = %904, %897
  %912 = phi i1 [ false, %897 ], [ %910, %904 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %7, i1 noundef zeroext %912, ptr noundef @.str.8, i32 noundef 26788, ptr noundef @.str.323)
  br label %913

913:                                              ; preds = %911
  %914 = load i64, ptr %12, align 8, !tbaa !11
  %915 = add nsw i64 %914, 1
  store i64 %915, ptr %12, align 8, !tbaa !11
  br label %890, !llvm.loop !55

916:                                              ; preds = %890
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %917

917:                                              ; preds = %942, %916
  %918 = load i64, ptr %12, align 8, !tbaa !11
  %919 = load i64, ptr %16, align 8, !tbaa !11
  %920 = load i64, ptr %17, align 8, !tbaa !11
  %921 = add nsw i64 %919, %920
  %922 = sub nsw i64 %921, 1
  %923 = icmp sle i64 %918, %922
  br i1 %923, label %924, label %945

924:                                              ; preds = %917
  %925 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %25, i32 0, i32 4
  %926 = load ptr, ptr %925, align 8, !tbaa !15
  %927 = load i64, ptr %12, align 8, !tbaa !11
  %928 = getelementptr inbounds double, ptr %926, i64 %927
  %929 = load double, ptr %928, align 8, !tbaa !13
  %930 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %24, i32 0, i32 4
  %931 = load ptr, ptr %930, align 8, !tbaa !15
  %932 = load i64, ptr %12, align 8, !tbaa !11
  %933 = getelementptr inbounds double, ptr %931, i64 %932
  %934 = load double, ptr %933, align 8, !tbaa !13
  %935 = fsub double %929, %934
  %936 = load ptr, ptr %4, align 8, !tbaa !9
  %937 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %935, ptr noundef %936)
  %938 = load double, ptr %28, align 8, !tbaa !13
  %939 = load double, ptr %29, align 8, !tbaa !13
  %940 = fmul double %938, %939
  %941 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %937, double noundef %940)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %7, i1 noundef zeroext %941, ptr noundef @.str.8, i32 noundef 26796, ptr noundef @.str.324)
  br label %942

942:                                              ; preds = %924
  %943 = load i64, ptr %12, align 8, !tbaa !11
  %944 = add nsw i64 %943, 1
  store i64 %944, ptr %12, align 8, !tbaa !11
  br label %917, !llvm.loop !56

945:                                              ; preds = %917
  br label %946

946:                                              ; preds = %945, %646, %639, %635
  %947 = load i64, ptr %14, align 8, !tbaa !11
  %948 = add nsw i64 %947, 1
  store i64 %948, ptr %14, align 8, !tbaa !11
  br label %627, !llvm.loop !57

949:                                              ; preds = %627
  br label %950

950:                                              ; preds = %949
  %951 = load i64, ptr %18, align 8, !tbaa !11
  %952 = add nsw i64 %951, 1
  store i64 %952, ptr %18, align 8, !tbaa !11
  br label %618, !llvm.loop !58

953:                                              ; preds = %618
  br label %954

954:                                              ; preds = %953
  %955 = load i64, ptr %17, align 8, !tbaa !11
  %956 = add nsw i64 %955, 1
  store i64 %956, ptr %17, align 8, !tbaa !11
  br label %612, !llvm.loop !59

957:                                              ; preds = %612
  br label %958

958:                                              ; preds = %957
  %959 = load i64, ptr %16, align 8, !tbaa !11
  %960 = add nsw i64 %959, 1
  store i64 %960, ptr %16, align 8, !tbaa !11
  br label %607, !llvm.loop !60

961:                                              ; preds = %607
  store double 1.000000e-04, ptr %11, align 8, !tbaa !13
  store i64 0, ptr %16, align 8, !tbaa !11
  br label %962

962:                                              ; preds = %1261, %961
  %963 = load i64, ptr %16, align 8, !tbaa !11
  %964 = load i64, ptr %30, align 8, !tbaa !11
  %965 = icmp sle i64 %963, %964
  br i1 %965, label %966, label %1264

966:                                              ; preds = %962
  store i64 0, ptr %17, align 8, !tbaa !11
  br label %967

967:                                              ; preds = %1257, %966
  %968 = load i64, ptr %17, align 8, !tbaa !11
  %969 = load i64, ptr %30, align 8, !tbaa !11
  %970 = icmp sle i64 %968, %969
  br i1 %970, label %971, label %1260

971:                                              ; preds = %967
  %972 = load i64, ptr %16, align 8, !tbaa !11
  store i64 %972, ptr %18, align 8, !tbaa !11
  br label %973

973:                                              ; preds = %1253, %971
  %974 = load i64, ptr %18, align 8, !tbaa !11
  %975 = load i64, ptr %16, align 8, !tbaa !11
  %976 = load i64, ptr %17, align 8, !tbaa !11
  %977 = add nsw i64 %975, %976
  %978 = load i64, ptr %30, align 8, !tbaa !11
  %979 = add nsw i64 %977, %978
  %980 = icmp sle i64 %974, %979
  br i1 %980, label %981, label %1256

981:                                              ; preds = %973
  %982 = load i64, ptr %16, align 8, !tbaa !11
  %983 = load i64, ptr %17, align 8, !tbaa !11
  %984 = add nsw i64 %982, %983
  %985 = icmp eq i64 %984, 0
  br i1 %985, label %986, label %987

986:                                              ; preds = %981
  br label %1253

987:                                              ; preds = %981
  %988 = load i64, ptr %18, align 8, !tbaa !11
  %989 = icmp eq i64 %988, 0
  br i1 %989, label %990, label %991

990:                                              ; preds = %987
  br label %1253

991:                                              ; preds = %987
  %992 = load i64, ptr %17, align 8, !tbaa !11
  %993 = icmp sgt i64 %992, 0
  br i1 %993, label %994, label %1027

994:                                              ; preds = %991
  %995 = load i64, ptr %18, align 8, !tbaa !11
  %996 = load i64, ptr %17, align 8, !tbaa !11
  %997 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %19, i64 noundef %995, i64 noundef %996, ptr noundef %997)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %998

998:                                              ; preds = %1023, %994
  %999 = load i64, ptr %12, align 8, !tbaa !11
  %1000 = load i64, ptr %18, align 8, !tbaa !11
  %1001 = sub nsw i64 %1000, 1
  %1002 = icmp sle i64 %999, %1001
  br i1 %1002, label %1003, label %1026

1003:                                             ; preds = %998
  store i64 0, ptr %13, align 8, !tbaa !11
  br label %1004

1004:                                             ; preds = %1019, %1003
  %1005 = load i64, ptr %13, align 8, !tbaa !11
  %1006 = load i64, ptr %17, align 8, !tbaa !11
  %1007 = sub nsw i64 %1006, 1
  %1008 = icmp sle i64 %1005, %1007
  br i1 %1008, label %1009, label %1022

1009:                                             ; preds = %1004
  %1010 = load ptr, ptr %4, align 8, !tbaa !9
  %1011 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %27, ptr noundef %1010)
  %1012 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 6
  %1013 = load ptr, ptr %1012, align 8, !tbaa !15
  %1014 = load i64, ptr %12, align 8, !tbaa !11
  %1015 = getelementptr inbounds ptr, ptr %1013, i64 %1014
  %1016 = load ptr, ptr %1015, align 8, !tbaa !9
  %1017 = load i64, ptr %13, align 8, !tbaa !11
  %1018 = getelementptr inbounds double, ptr %1016, i64 %1017
  store double %1011, ptr %1018, align 8, !tbaa !13
  br label %1019

1019:                                             ; preds = %1009
  %1020 = load i64, ptr %13, align 8, !tbaa !11
  %1021 = add nsw i64 %1020, 1
  store i64 %1021, ptr %13, align 8, !tbaa !11
  br label %1004, !llvm.loop !61

1022:                                             ; preds = %1004
  br label %1023

1023:                                             ; preds = %1022
  %1024 = load i64, ptr %12, align 8, !tbaa !11
  %1025 = add nsw i64 %1024, 1
  store i64 %1025, ptr %12, align 8, !tbaa !11
  br label %998, !llvm.loop !62

1026:                                             ; preds = %998
  br label %1027

1027:                                             ; preds = %1026, %991
  %1028 = load i64, ptr %18, align 8, !tbaa !11
  %1029 = load i64, ptr %16, align 8, !tbaa !11
  %1030 = load i64, ptr %17, align 8, !tbaa !11
  %1031 = add nsw i64 %1029, %1030
  %1032 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %20, i64 noundef %1028, i64 noundef %1031, ptr noundef %1032)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %1033

1033:                                             ; preds = %1058, %1027
  %1034 = load i64, ptr %12, align 8, !tbaa !11
  %1035 = load i64, ptr %18, align 8, !tbaa !11
  %1036 = sub nsw i64 %1035, 1
  %1037 = icmp sle i64 %1034, %1036
  br i1 %1037, label %1038, label %1061

1038:                                             ; preds = %1033
  store i64 0, ptr %13, align 8, !tbaa !11
  br label %1039

1039:                                             ; preds = %1054, %1038
  %1040 = load i64, ptr %13, align 8, !tbaa !11
  %1041 = load i64, ptr %16, align 8, !tbaa !11
  %1042 = load i64, ptr %17, align 8, !tbaa !11
  %1043 = add nsw i64 %1041, %1042
  %1044 = sub nsw i64 %1043, 1
  %1045 = icmp sle i64 %1040, %1044
  br i1 %1045, label %1046, label %1057

1046:                                             ; preds = %1039
  %1047 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %20, i32 0, i32 6
  %1048 = load ptr, ptr %1047, align 8, !tbaa !15
  %1049 = load i64, ptr %12, align 8, !tbaa !11
  %1050 = getelementptr inbounds ptr, ptr %1048, i64 %1049
  %1051 = load ptr, ptr %1050, align 8, !tbaa !9
  %1052 = load i64, ptr %13, align 8, !tbaa !11
  %1053 = getelementptr inbounds double, ptr %1051, i64 %1052
  store double 0.000000e+00, ptr %1053, align 8, !tbaa !13
  br label %1054

1054:                                             ; preds = %1046
  %1055 = load i64, ptr %13, align 8, !tbaa !11
  %1056 = add nsw i64 %1055, 1
  store i64 %1056, ptr %13, align 8, !tbaa !11
  br label %1039, !llvm.loop !63

1057:                                             ; preds = %1039
  br label %1058

1058:                                             ; preds = %1057
  %1059 = load i64, ptr %12, align 8, !tbaa !11
  %1060 = add nsw i64 %1059, 1
  store i64 %1060, ptr %12, align 8, !tbaa !11
  br label %1033, !llvm.loop !64

1061:                                             ; preds = %1033
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %1062

1062:                                             ; preds = %1075, %1061
  %1063 = load i64, ptr %12, align 8, !tbaa !11
  %1064 = load i64, ptr %16, align 8, !tbaa !11
  %1065 = sub nsw i64 %1064, 1
  %1066 = icmp sle i64 %1063, %1065
  br i1 %1066, label %1067, label %1078

1067:                                             ; preds = %1062
  %1068 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %20, i32 0, i32 6
  %1069 = load ptr, ptr %1068, align 8, !tbaa !15
  %1070 = load i64, ptr %12, align 8, !tbaa !11
  %1071 = getelementptr inbounds ptr, ptr %1069, i64 %1070
  %1072 = load ptr, ptr %1071, align 8, !tbaa !9
  %1073 = load i64, ptr %12, align 8, !tbaa !11
  %1074 = getelementptr inbounds double, ptr %1072, i64 %1073
  store double 1.000000e+00, ptr %1074, align 8, !tbaa !13
  br label %1075

1075:                                             ; preds = %1067
  %1076 = load i64, ptr %12, align 8, !tbaa !11
  %1077 = add nsw i64 %1076, 1
  store i64 %1077, ptr %12, align 8, !tbaa !11
  br label %1062, !llvm.loop !65

1078:                                             ; preds = %1062
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %1079

1079:                                             ; preds = %1112, %1078
  %1080 = load i64, ptr %12, align 8, !tbaa !11
  %1081 = load i64, ptr %18, align 8, !tbaa !11
  %1082 = sub nsw i64 %1081, 1
  %1083 = icmp sle i64 %1080, %1082
  br i1 %1083, label %1084, label %1115

1084:                                             ; preds = %1079
  store i64 0, ptr %13, align 8, !tbaa !11
  br label %1085

1085:                                             ; preds = %1108, %1084
  %1086 = load i64, ptr %13, align 8, !tbaa !11
  %1087 = load i64, ptr %17, align 8, !tbaa !11
  %1088 = sub nsw i64 %1087, 1
  %1089 = icmp sle i64 %1086, %1088
  br i1 %1089, label %1090, label %1111

1090:                                             ; preds = %1085
  %1091 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 6
  %1092 = load ptr, ptr %1091, align 8, !tbaa !15
  %1093 = load i64, ptr %12, align 8, !tbaa !11
  %1094 = getelementptr inbounds ptr, ptr %1092, i64 %1093
  %1095 = load ptr, ptr %1094, align 8, !tbaa !9
  %1096 = load i64, ptr %13, align 8, !tbaa !11
  %1097 = getelementptr inbounds double, ptr %1095, i64 %1096
  %1098 = load double, ptr %1097, align 8, !tbaa !13
  %1099 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %20, i32 0, i32 6
  %1100 = load ptr, ptr %1099, align 8, !tbaa !15
  %1101 = load i64, ptr %12, align 8, !tbaa !11
  %1102 = getelementptr inbounds ptr, ptr %1100, i64 %1101
  %1103 = load ptr, ptr %1102, align 8, !tbaa !9
  %1104 = load i64, ptr %16, align 8, !tbaa !11
  %1105 = load i64, ptr %13, align 8, !tbaa !11
  %1106 = add nsw i64 %1104, %1105
  %1107 = getelementptr inbounds double, ptr %1103, i64 %1106
  store double %1098, ptr %1107, align 8, !tbaa !13
  br label %1108

1108:                                             ; preds = %1090
  %1109 = load i64, ptr %13, align 8, !tbaa !11
  %1110 = add nsw i64 %1109, 1
  store i64 %1110, ptr %13, align 8, !tbaa !11
  br label %1085, !llvm.loop !66

1111:                                             ; preds = %1085
  br label %1112

1112:                                             ; preds = %1111
  %1113 = load i64, ptr %12, align 8, !tbaa !11
  %1114 = add nsw i64 %1113, 1
  store i64 %1114, ptr %12, align 8, !tbaa !11
  br label %1079, !llvm.loop !67

1115:                                             ; preds = %1079
  %1116 = load i64, ptr %18, align 8, !tbaa !11
  %1117 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %23, i64 noundef %1116, ptr noundef %1117)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %1118

1118:                                             ; preds = %1130, %1115
  %1119 = load i64, ptr %12, align 8, !tbaa !11
  %1120 = load i64, ptr %18, align 8, !tbaa !11
  %1121 = sub nsw i64 %1120, 1
  %1122 = icmp sle i64 %1119, %1121
  br i1 %1122, label %1123, label %1133

1123:                                             ; preds = %1118
  %1124 = load ptr, ptr %4, align 8, !tbaa !9
  %1125 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %27, ptr noundef %1124)
  %1126 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %23, i32 0, i32 4
  %1127 = load ptr, ptr %1126, align 8, !tbaa !15
  %1128 = load i64, ptr %12, align 8, !tbaa !11
  %1129 = getelementptr inbounds double, ptr %1127, i64 %1128
  store double %1125, ptr %1129, align 8, !tbaa !13
  br label %1130

1130:                                             ; preds = %1123
  %1131 = load i64, ptr %12, align 8, !tbaa !11
  %1132 = add nsw i64 %1131, 1
  store i64 %1132, ptr %12, align 8, !tbaa !11
  br label %1118, !llvm.loop !68

1133:                                             ; preds = %1118
  %1134 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl9snnlsinitElllPNS_11snnlssolverEPNS_8ae_stateE(i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef %26, ptr noundef %1134)
  %1135 = load i64, ptr %16, align 8, !tbaa !11
  %1136 = load i64, ptr %17, align 8, !tbaa !11
  %1137 = load i64, ptr %18, align 8, !tbaa !11
  %1138 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15snnlssetproblemEPNS_11snnlssolverEPNS_9ae_matrixEPNS_9ae_vectorElllPNS_8ae_stateE(ptr noundef %26, ptr noundef %19, ptr noundef %23, i64 noundef %1135, i64 noundef %1136, i64 noundef %1137, ptr noundef %1138)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %1139

1139:                                             ; preds = %1149, %1133
  %1140 = load i64, ptr %12, align 8, !tbaa !11
  %1141 = load i64, ptr %16, align 8, !tbaa !11
  %1142 = load i64, ptr %17, align 8, !tbaa !11
  %1143 = add nsw i64 %1141, %1142
  %1144 = sub nsw i64 %1143, 1
  %1145 = icmp sle i64 %1140, %1144
  br i1 %1145, label %1146, label %1152

1146:                                             ; preds = %1139
  %1147 = load i64, ptr %12, align 8, !tbaa !11
  %1148 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12snnlsdropnncEPNS_11snnlssolverElPNS_8ae_stateE(ptr noundef %26, i64 noundef %1147, ptr noundef %1148)
  br label %1149

1149:                                             ; preds = %1146
  %1150 = load i64, ptr %12, align 8, !tbaa !11
  %1151 = add nsw i64 %1150, 1
  store i64 %1151, ptr %12, align 8, !tbaa !11
  br label %1139, !llvm.loop !69

1152:                                             ; preds = %1139
  %1153 = getelementptr inbounds %"struct.alglib_impl::snnlssolver", ptr %26, i32 0, i32 7
  store i64 1, ptr %1153, align 8, !tbaa !70
  %1154 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl10snnlssolveEPNS_11snnlssolverEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %26, ptr noundef %24, ptr noundef %1154)
  %1155 = load i64, ptr %16, align 8, !tbaa !11
  %1156 = load i64, ptr %17, align 8, !tbaa !11
  %1157 = add nsw i64 %1155, %1156
  %1158 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %22, i64 noundef %1157, ptr noundef %1158)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %1159

1159:                                             ; preds = %1188, %1152
  %1160 = load i64, ptr %12, align 8, !tbaa !11
  %1161 = load i64, ptr %16, align 8, !tbaa !11
  %1162 = load i64, ptr %17, align 8, !tbaa !11
  %1163 = add nsw i64 %1161, %1162
  %1164 = sub nsw i64 %1163, 1
  %1165 = icmp sle i64 %1160, %1164
  br i1 %1165, label %1166, label %1191

1166:                                             ; preds = %1159
  %1167 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %23, i32 0, i32 4
  %1168 = load ptr, ptr %1167, align 8, !tbaa !15
  %1169 = getelementptr inbounds double, ptr %1168, i64 0
  %1170 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %20, i32 0, i32 6
  %1171 = load ptr, ptr %1170, align 8, !tbaa !15
  %1172 = getelementptr inbounds ptr, ptr %1171, i64 0
  %1173 = load ptr, ptr %1172, align 8, !tbaa !9
  %1174 = load i64, ptr %12, align 8, !tbaa !11
  %1175 = getelementptr inbounds double, ptr %1173, i64 %1174
  %1176 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %20, i32 0, i32 2
  %1177 = load i64, ptr %1176, align 8, !tbaa !35
  %1178 = load i64, ptr %18, align 8, !tbaa !11
  %1179 = sub nsw i64 %1178, 1
  %1180 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1179)
  %1181 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %1169, i64 noundef 1, ptr noundef %1175, i64 noundef %1177, i64 noundef %1180)
  store double %1181, ptr %15, align 8, !tbaa !13
  %1182 = load double, ptr %15, align 8, !tbaa !13
  %1183 = fneg double %1182
  %1184 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %22, i32 0, i32 4
  %1185 = load ptr, ptr %1184, align 8, !tbaa !15
  %1186 = load i64, ptr %12, align 8, !tbaa !11
  %1187 = getelementptr inbounds double, ptr %1185, i64 %1186
  store double %1183, ptr %1187, align 8, !tbaa !13
  br label %1188

1188:                                             ; preds = %1166
  %1189 = load i64, ptr %12, align 8, !tbaa !11
  %1190 = add nsw i64 %1189, 1
  store i64 %1190, ptr %12, align 8, !tbaa !11
  br label %1159, !llvm.loop !73

1191:                                             ; preds = %1159
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %1192

1192:                                             ; preds = %1228, %1191
  %1193 = load i64, ptr %12, align 8, !tbaa !11
  %1194 = load i64, ptr %18, align 8, !tbaa !11
  %1195 = sub nsw i64 %1194, 1
  %1196 = icmp sle i64 %1193, %1195
  br i1 %1196, label %1197, label %1231

1197:                                             ; preds = %1192
  %1198 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %20, i32 0, i32 6
  %1199 = load ptr, ptr %1198, align 8, !tbaa !15
  %1200 = load i64, ptr %12, align 8, !tbaa !11
  %1201 = getelementptr inbounds ptr, ptr %1199, i64 %1200
  %1202 = load ptr, ptr %1201, align 8, !tbaa !9
  %1203 = getelementptr inbounds double, ptr %1202, i64 0
  %1204 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %24, i32 0, i32 4
  %1205 = load ptr, ptr %1204, align 8, !tbaa !15
  %1206 = getelementptr inbounds double, ptr %1205, i64 0
  %1207 = load i64, ptr %16, align 8, !tbaa !11
  %1208 = load i64, ptr %17, align 8, !tbaa !11
  %1209 = add nsw i64 %1207, %1208
  %1210 = sub nsw i64 %1209, 1
  %1211 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1210)
  %1212 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %1203, i64 noundef 1, ptr noundef %1206, i64 noundef 1, i64 noundef %1211)
  store double %1212, ptr %15, align 8, !tbaa !13
  %1213 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %22, i32 0, i32 4
  %1214 = load ptr, ptr %1213, align 8, !tbaa !15
  %1215 = getelementptr inbounds double, ptr %1214, i64 0
  %1216 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %20, i32 0, i32 6
  %1217 = load ptr, ptr %1216, align 8, !tbaa !15
  %1218 = load i64, ptr %12, align 8, !tbaa !11
  %1219 = getelementptr inbounds ptr, ptr %1217, i64 %1218
  %1220 = load ptr, ptr %1219, align 8, !tbaa !9
  %1221 = getelementptr inbounds double, ptr %1220, i64 0
  %1222 = load i64, ptr %16, align 8, !tbaa !11
  %1223 = load i64, ptr %17, align 8, !tbaa !11
  %1224 = add nsw i64 %1222, %1223
  %1225 = sub nsw i64 %1224, 1
  %1226 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1225)
  %1227 = load double, ptr %15, align 8, !tbaa !13
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %1215, i64 noundef 1, ptr noundef %1221, i64 noundef 1, i64 noundef %1226, double noundef %1227)
  br label %1228

1228:                                             ; preds = %1197
  %1229 = load i64, ptr %12, align 8, !tbaa !11
  %1230 = add nsw i64 %1229, 1
  store i64 %1230, ptr %12, align 8, !tbaa !11
  br label %1192, !llvm.loop !74

1231:                                             ; preds = %1192
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %1232

1232:                                             ; preds = %1249, %1231
  %1233 = load i64, ptr %12, align 8, !tbaa !11
  %1234 = load i64, ptr %16, align 8, !tbaa !11
  %1235 = load i64, ptr %17, align 8, !tbaa !11
  %1236 = add nsw i64 %1234, %1235
  %1237 = sub nsw i64 %1236, 1
  %1238 = icmp sle i64 %1233, %1237
  br i1 %1238, label %1239, label %1252

1239:                                             ; preds = %1232
  %1240 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %22, i32 0, i32 4
  %1241 = load ptr, ptr %1240, align 8, !tbaa !15
  %1242 = load i64, ptr %12, align 8, !tbaa !11
  %1243 = getelementptr inbounds double, ptr %1241, i64 %1242
  %1244 = load double, ptr %1243, align 8, !tbaa !13
  %1245 = load ptr, ptr %4, align 8, !tbaa !9
  %1246 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1244, ptr noundef %1245)
  %1247 = load double, ptr %11, align 8, !tbaa !13
  %1248 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1246, double noundef %1247)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1248, ptr noundef @.str.8, i32 noundef 26914, ptr noundef @.str.325)
  br label %1249

1249:                                             ; preds = %1239
  %1250 = load i64, ptr %12, align 8, !tbaa !11
  %1251 = add nsw i64 %1250, 1
  store i64 %1251, ptr %12, align 8, !tbaa !11
  br label %1232, !llvm.loop !75

1252:                                             ; preds = %1232
  br label %1253

1253:                                             ; preds = %1252, %990, %986
  %1254 = load i64, ptr %18, align 8, !tbaa !11
  %1255 = add nsw i64 %1254, 1
  store i64 %1255, ptr %18, align 8, !tbaa !11
  br label %973, !llvm.loop !76

1256:                                             ; preds = %973
  br label %1257

1257:                                             ; preds = %1256
  %1258 = load i64, ptr %17, align 8, !tbaa !11
  %1259 = add nsw i64 %1258, 1
  store i64 %1259, ptr %17, align 8, !tbaa !11
  br label %967, !llvm.loop !77

1260:                                             ; preds = %967
  br label %1261

1261:                                             ; preds = %1260
  %1262 = load i64, ptr %16, align 8, !tbaa !11
  %1263 = add nsw i64 %1262, 1
  store i64 %1263, ptr %16, align 8, !tbaa !11
  br label %962, !llvm.loop !78

1264:                                             ; preds = %962
  %1265 = load i8, ptr %6, align 1, !tbaa !5, !range !19, !noundef !20
  %1266 = trunc i8 %1265 to i1
  br i1 %1266, label %1276, label %1267

1267:                                             ; preds = %1264
  %1268 = load i8, ptr %7, align 1, !tbaa !5, !range !19, !noundef !20
  %1269 = trunc i8 %1268 to i1
  br i1 %1269, label %1276, label %1270

1270:                                             ; preds = %1267
  %1271 = load i8, ptr %8, align 1, !tbaa !5, !range !19, !noundef !20
  %1272 = trunc i8 %1271 to i1
  br i1 %1272, label %1276, label %1273

1273:                                             ; preds = %1270
  %1274 = load i8, ptr %9, align 1, !tbaa !5, !range !19, !noundef !20
  %1275 = trunc i8 %1274 to i1
  br label %1276

1276:                                             ; preds = %1273, %1270, %1267, %1264
  %1277 = phi i1 [ true, %1270 ], [ true, %1267 ], [ true, %1264 ], [ %1275, %1273 ]
  %1278 = zext i1 %1277 to i8
  store i8 %1278, ptr %10, align 1, !tbaa !5
  %1279 = load i8, ptr %3, align 1, !tbaa !5, !range !19, !noundef !20
  %1280 = trunc i8 %1279 to i1
  br i1 %1280, label %1323, label %1281

1281:                                             ; preds = %1276
  %1282 = call i32 (ptr, ...) @printf(ptr noundef @.str.326)
  %1283 = call i32 (ptr, ...) @printf(ptr noundef @.str.327)
  %1284 = load i8, ptr %6, align 1, !tbaa !5, !range !19, !noundef !20
  %1285 = trunc i8 %1284 to i1
  br i1 %1285, label %1286, label %1288

1286:                                             ; preds = %1281
  %1287 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1290

1288:                                             ; preds = %1281
  %1289 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1290

1290:                                             ; preds = %1288, %1286
  %1291 = call i32 (ptr, ...) @printf(ptr noundef @.str.328)
  %1292 = load i8, ptr %7, align 1, !tbaa !5, !range !19, !noundef !20
  %1293 = trunc i8 %1292 to i1
  br i1 %1293, label %1294, label %1296

1294:                                             ; preds = %1290
  %1295 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1298

1296:                                             ; preds = %1290
  %1297 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1298

1298:                                             ; preds = %1296, %1294
  %1299 = call i32 (ptr, ...) @printf(ptr noundef @.str.329)
  %1300 = load i8, ptr %8, align 1, !tbaa !5, !range !19, !noundef !20
  %1301 = trunc i8 %1300 to i1
  br i1 %1301, label %1302, label %1304

1302:                                             ; preds = %1298
  %1303 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1306

1304:                                             ; preds = %1298
  %1305 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1306

1306:                                             ; preds = %1304, %1302
  %1307 = call i32 (ptr, ...) @printf(ptr noundef @.str.330)
  %1308 = load i8, ptr %9, align 1, !tbaa !5, !range !19, !noundef !20
  %1309 = trunc i8 %1308 to i1
  br i1 %1309, label %1310, label %1312

1310:                                             ; preds = %1306
  %1311 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1314

1312:                                             ; preds = %1306
  %1313 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1314

1314:                                             ; preds = %1312, %1310
  %1315 = load i8, ptr %10, align 1, !tbaa !5, !range !19, !noundef !20
  %1316 = trunc i8 %1315 to i1
  br i1 %1316, label %1317, label %1319

1317:                                             ; preds = %1314
  %1318 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %1321

1319:                                             ; preds = %1314
  %1320 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1321

1321:                                             ; preds = %1319, %1317
  %1322 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1323

1323:                                             ; preds = %1321, %1276
  %1324 = load i8, ptr %10, align 1, !tbaa !5, !range !19, !noundef !20
  %1325 = trunc i8 %1324 to i1
  %1326 = xor i1 %1325, true
  %1327 = zext i1 %1326 to i8
  store i8 %1327, ptr %31, align 1, !tbaa !5
  %1328 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1328)
  %1329 = load i8, ptr %31, align 1, !tbaa !5, !range !19, !noundef !20
  %1330 = trunc i8 %1329 to i1
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 1640, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 80, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 80, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #5
  ret i1 %1330
}

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"bool", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"double", !7, i64 0}
!15 = !{!7, !7, i64 0}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = distinct !{!18, !17}
!19 = !{i8 0, i8 2}
!20 = !{}
!21 = distinct !{!21, !17}
!22 = distinct !{!22, !17}
!23 = distinct !{!23, !17}
!24 = distinct !{!24, !17}
!25 = distinct !{!25, !17}
!26 = distinct !{!26, !17}
!27 = distinct !{!27, !17}
!28 = distinct !{!28, !17}
!29 = distinct !{!29, !17}
!30 = distinct !{!30, !17}
!31 = distinct !{!31, !17}
!32 = distinct !{!32, !17}
!33 = distinct !{!33, !17}
!34 = distinct !{!34, !17}
!35 = !{!36, !12, i64 16}
!36 = !{!"_ZTSN11alglib_impl9ae_matrixE", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !6, i64 32, !37, i64 40, !7, i64 72}
!37 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24}
!38 = distinct !{!38, !17}
!39 = distinct !{!39, !17}
!40 = distinct !{!40, !17}
!41 = distinct !{!41, !17}
!42 = distinct !{!42, !17}
!43 = distinct !{!43, !17}
!44 = distinct !{!44, !17}
!45 = distinct !{!45, !17}
!46 = distinct !{!46, !17}
!47 = distinct !{!47, !17}
!48 = distinct !{!48, !17}
!49 = distinct !{!49, !17}
!50 = distinct !{!50, !17}
!51 = distinct !{!51, !17}
!52 = distinct !{!52, !17}
!53 = distinct !{!53, !17}
!54 = distinct !{!54, !17}
!55 = distinct !{!55, !17}
!56 = distinct !{!56, !17}
!57 = distinct !{!57, !17}
!58 = distinct !{!58, !17}
!59 = distinct !{!59, !17}
!60 = distinct !{!60, !17}
!61 = distinct !{!61, !17}
!62 = distinct !{!62, !17}
!63 = distinct !{!63, !17}
!64 = distinct !{!64, !17}
!65 = distinct !{!65, !17}
!66 = distinct !{!66, !17}
!67 = distinct !{!67, !17}
!68 = distinct !{!68, !17}
!69 = distinct !{!69, !17}
!70 = !{!71, !12, i64 240}
!71 = !{!"_ZTSN11alglib_impl11snnlssolverE", !12, i64 0, !12, i64 8, !12, i64 16, !36, i64 24, !72, i64 104, !72, i64 168, !14, i64 232, !12, i64 240, !72, i64 248, !72, i64 312, !36, i64 376, !36, i64 456, !36, i64 536, !72, i64 616, !72, i64 680, !72, i64 744, !72, i64 808, !72, i64 872, !72, i64 936, !72, i64 1000, !72, i64 1064, !72, i64 1128, !72, i64 1192, !72, i64 1256, !72, i64 1320, !72, i64 1384, !72, i64 1448, !72, i64 1512, !72, i64 1576}
!72 = !{!"_ZTSN11alglib_impl9ae_vectorE", !12, i64 0, !12, i64 8, !6, i64 16, !37, i64 24, !7, i64 56}
!73 = distinct !{!73, !17}
!74 = distinct !{!74, !17}
!75 = distinct !{!75, !17}
!76 = distinct !{!76, !17}
!77 = distinct !{!77, !17}
!78 = distinct !{!78, !17}


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

%"struct.alglib_impl::ae_frame" = type { %"struct.alglib_impl::ae_dyn_block" }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%"struct.alglib_impl::ae_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%union.anon.0 = type { ptr }
%"struct.alglib_impl::ae_vector" = type { i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon }
%union.anon = type { ptr }
%"struct.alglib_impl::snnlssolver" = type { i64, i64, i64, %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_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::hqrndstate" = type { i64, i64, i64 }

@.str.1 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.317 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.318 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.319 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.320 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.321 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.322 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.323 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.324 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.325 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.326 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.327 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.328 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.329 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.330 = external hidden unnamed_addr constant [43 x i8], align 1

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

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

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

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

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

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

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) local_unnamed_addr #1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z9testsnnlsbPN11alglib_impl8ae_stateE(i1 noundef zeroext %0, ptr noundef %1) local_unnamed_addr #5 {
  %3 = alloca %"struct.alglib_impl::ae_frame", align 8
  %4 = alloca i8, align 1
  %5 = alloca i8, align 1
  %6 = alloca i8, align 1
  %7 = alloca i8, align 1
  %8 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %9 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %10 = alloca %"struct.alglib_impl::ae_vector", align 8
  %11 = alloca %"struct.alglib_impl::ae_vector", align 8
  %12 = alloca %"struct.alglib_impl::ae_vector", align 8
  %13 = alloca %"struct.alglib_impl::ae_vector", align 8
  %14 = alloca %"struct.alglib_impl::ae_vector", align 8
  %15 = alloca %"struct.alglib_impl::snnlssolver", align 8
  %16 = alloca %"struct.alglib_impl::hqrndstate", align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #7
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %8) #7
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %9) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %10) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %11) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %12) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %13) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %14) #7
  call void @llvm.lifetime.start.p0(i64 1640, ptr nonnull %15) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #7
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %1, ptr noundef nonnull %3)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %8, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %9, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %10, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %11, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %12, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %13, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %14, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1640) %15, i8 0, i64 1640, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %16, i8 0, i64 24, i1 false)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %8, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %9, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %10, i64 noundef 0, i64 noundef 1, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %11, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %12, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %13, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %14, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl17_snnlssolver_initEPvPNS_8ae_stateEb(ptr noundef nonnull %15, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl16_hqrndstate_initEPvPNS_8ae_stateEb(ptr noundef nonnull %16, ptr noundef %1, i1 noundef zeroext true)
  store i8 0, ptr %4, align 1, !tbaa !5
  store i8 0, ptr %5, align 1, !tbaa !5
  store i8 0, ptr %6, align 1, !tbaa !5
  store i8 0, ptr %7, align 1, !tbaa !5
  call void @_ZN11alglib_impl14hqrndrandomizeEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  %17 = getelementptr inbounds i8, ptr %8, i64 72
  %18 = getelementptr inbounds i8, ptr %12, i64 56
  %19 = getelementptr inbounds i8, ptr %10, i64 56
  %20 = getelementptr inbounds i8, ptr %13, i64 56
  br label %24

.preheader544:                                    ; preds = %115
  %21 = getelementptr inbounds i8, ptr %9, i64 72
  %22 = getelementptr inbounds i8, ptr %9, i64 16
  %23 = getelementptr inbounds i8, ptr %11, i64 56
  br label %.preheader543

24:                                               ; preds = %2, %115
  %indvar = phi i64 [ 0, %2 ], [ %indvar.next, %115 ]
  %.0440553 = phi i64 [ 1, %2 ], [ %116, %115 ]
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.0440553, i64 noundef %.0440553, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %.0440553, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %10, i64 noundef %.0440553, ptr noundef %1)
  %xtraiter = and i64 %.0440553, 3
  %25 = icmp ult i64 %indvar, 3
  %unroll_iter = and i64 %.0440553, 9223372036854775804
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br label %.preheader545

.preheader545:                                    ; preds = %24, %.epilog-lcssa
  %.0550 = phi i64 [ 0, %24 ], [ %72, %.epilog-lcssa ]
  br i1 %25, label %.unr-lcssa, label %.preheader545.new

.preheader545.new:                                ; preds = %.preheader545, %.preheader545.new
  %.0426549 = phi i64 [ %45, %.preheader545.new ], [ 0, %.preheader545 ]
  %niter = phi i64 [ %niter.next.3, %.preheader545.new ], [ 0, %.preheader545 ]
  %26 = load ptr, ptr %17, align 8, !tbaa !9
  %27 = getelementptr inbounds ptr, ptr %26, i64 %.0550
  %28 = load ptr, ptr %27, align 8, !tbaa !10
  %29 = getelementptr inbounds double, ptr %28, i64 %.0426549
  store double 0.000000e+00, ptr %29, align 8, !tbaa !12
  %30 = or disjoint i64 %.0426549, 1
  %31 = load ptr, ptr %17, align 8, !tbaa !9
  %32 = getelementptr inbounds ptr, ptr %31, i64 %.0550
  %33 = load ptr, ptr %32, align 8, !tbaa !10
  %34 = getelementptr inbounds double, ptr %33, i64 %30
  store double 0.000000e+00, ptr %34, align 8, !tbaa !12
  %35 = or disjoint i64 %.0426549, 2
  %36 = load ptr, ptr %17, align 8, !tbaa !9
  %37 = getelementptr inbounds ptr, ptr %36, i64 %.0550
  %38 = load ptr, ptr %37, align 8, !tbaa !10
  %39 = getelementptr inbounds double, ptr %38, i64 %35
  store double 0.000000e+00, ptr %39, align 8, !tbaa !12
  %40 = or disjoint i64 %.0426549, 3
  %41 = load ptr, ptr %17, align 8, !tbaa !9
  %42 = getelementptr inbounds ptr, ptr %41, i64 %.0550
  %43 = load ptr, ptr %42, align 8, !tbaa !10
  %44 = getelementptr inbounds double, ptr %43, i64 %40
  store double 0.000000e+00, ptr %44, align 8, !tbaa !12
  %45 = add nuw nsw i64 %.0426549, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %.unr-lcssa, label %.preheader545.new, !llvm.loop !14

.unr-lcssa:                                       ; preds = %.preheader545.new, %.preheader545
  %.0426549.unr = phi i64 [ 0, %.preheader545 ], [ %45, %.preheader545.new ]
  br i1 %lcmp.mod.not, label %.epilog-lcssa, label %.epil.preheader

.epil.preheader:                                  ; preds = %.unr-lcssa, %.epil.preheader
  %.0426549.epil = phi i64 [ %50, %.epil.preheader ], [ %.0426549.unr, %.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader ], [ 0, %.unr-lcssa ]
  %46 = load ptr, ptr %17, align 8, !tbaa !9
  %47 = getelementptr inbounds ptr, ptr %46, i64 %.0550
  %48 = load ptr, ptr %47, align 8, !tbaa !10
  %49 = getelementptr inbounds double, ptr %48, i64 %.0426549.epil
  store double 0.000000e+00, ptr %49, align 8, !tbaa !12
  %50 = add nuw nsw i64 %.0426549.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %.epilog-lcssa, label %.epil.preheader, !llvm.loop !16

.epilog-lcssa:                                    ; preds = %.epil.preheader, %.unr-lcssa
  %51 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef nonnull %16, i64 noundef 2, ptr noundef %1)
  %52 = add nsw i64 %51, 1
  %53 = sitofp i64 %52 to double
  %54 = load ptr, ptr %17, align 8, !tbaa !9
  %55 = getelementptr inbounds ptr, ptr %54, i64 %.0550
  %56 = load ptr, ptr %55, align 8, !tbaa !10
  %57 = getelementptr inbounds double, ptr %56, i64 %.0550
  store double %53, ptr %57, align 8, !tbaa !12
  %58 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef nonnull %16, i64 noundef 2, ptr noundef %1)
  %59 = add nsw i64 %58, 1
  %60 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef nonnull %16, i64 noundef 2, ptr noundef %1)
  %61 = shl nsw i64 %60, 1
  %62 = add nsw i64 %61, -1
  %63 = mul nsw i64 %62, %59
  %64 = sitofp i64 %63 to double
  %65 = load ptr, ptr %18, align 8, !tbaa !9
  %66 = getelementptr inbounds double, ptr %65, i64 %.0550
  store double %64, ptr %66, align 8, !tbaa !12
  %67 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  %68 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %67, double noundef 5.000000e-01)
  %69 = load ptr, ptr %19, align 8, !tbaa !9
  %70 = getelementptr inbounds i8, ptr %69, i64 %.0550
  %71 = zext i1 %68 to i8
  store i8 %71, ptr %70, align 1, !tbaa !5
  %72 = add nuw nsw i64 %.0550, 1
  %exitcond722.not = icmp eq i64 %72, %.0440553
  br i1 %exitcond722.not, label %73, label %.preheader545, !llvm.loop !18

73:                                               ; preds = %.epilog-lcssa
  call void @_ZN11alglib_impl9snnlsinitElllPNS_11snnlssolverEPNS_8ae_stateE(i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %15, ptr noundef %1)
  call void @_ZN11alglib_impl15snnlssetproblemEPNS_11snnlssolverEPNS_9ae_matrixEPNS_9ae_vectorElllPNS_8ae_stateE(ptr noundef nonnull %15, ptr noundef nonnull %8, ptr noundef nonnull %12, i64 noundef 0, i64 noundef %.0440553, i64 noundef %.0440553, ptr noundef %1)
  br label %74

74:                                               ; preds = %73, %80
  %.1551 = phi i64 [ 0, %73 ], [ %81, %80 ]
  %75 = load ptr, ptr %19, align 8, !tbaa !9
  %76 = getelementptr inbounds i8, ptr %75, i64 %.1551
  %77 = load i8, ptr %76, align 1, !tbaa !5, !range !19, !noundef !20
  %78 = trunc nuw i8 %77 to i1
  br i1 %78, label %80, label %79

79:                                               ; preds = %74
  call void @_ZN11alglib_impl12snnlsdropnncEPNS_11snnlssolverElPNS_8ae_stateE(ptr noundef nonnull %15, i64 noundef %.1551, ptr noundef %1)
  br label %80

80:                                               ; preds = %74, %79
  %81 = add nuw nsw i64 %.1551, 1
  %exitcond723.not = icmp eq i64 %81, %.0440553
  br i1 %exitcond723.not, label %82, label %74, !llvm.loop !21

82:                                               ; preds = %80
  call void @_ZN11alglib_impl10snnlssolveEPNS_11snnlssolverEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %15, ptr noundef nonnull %13, ptr noundef %1)
  br label %83

83:                                               ; preds = %82, %113
  %.2552 = phi i64 [ 0, %82 ], [ %114, %113 ]
  %84 = load ptr, ptr %19, align 8, !tbaa !9
  %85 = getelementptr inbounds i8, ptr %84, i64 %.2552
  %86 = load i8, ptr %85, align 1, !tbaa !5, !range !19, !noundef !20
  %87 = trunc nuw i8 %86 to i1
  %88 = load ptr, ptr %20, align 8, !tbaa !9
  %89 = getelementptr inbounds double, ptr %88, i64 %.2552
  %90 = load double, ptr %89, align 8, !tbaa !12
  %91 = load ptr, ptr %18, align 8, !tbaa !9
  %92 = getelementptr inbounds double, ptr %91, i64 %.2552
  %93 = load double, ptr %92, align 8, !tbaa !12
  %94 = load ptr, ptr %17, align 8, !tbaa !9
  %95 = getelementptr inbounds ptr, ptr %94, i64 %.2552
  %96 = load ptr, ptr %95, align 8, !tbaa !10
  %97 = getelementptr inbounds double, ptr %96, i64 %.2552
  %98 = load double, ptr %97, align 8, !tbaa !12
  %99 = fdiv double %93, %98
  br i1 %87, label %100, label %109

100:                                              ; preds = %83
  %101 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %99, double noundef 0.000000e+00, ptr noundef %1)
  %102 = fsub double %90, %101
  %103 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %102, ptr noundef %1)
  %104 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %103, double noundef 0x3D719799812DEA11)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %6, i1 noundef zeroext %104, ptr noundef nonnull @.str.8, i32 noundef 26539, ptr noundef nonnull @.str.317)
  %105 = load ptr, ptr %20, align 8, !tbaa !9
  %106 = getelementptr inbounds double, ptr %105, i64 %.2552
  %107 = load double, ptr %106, align 8, !tbaa !12
  %108 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %107, double noundef 0.000000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %6, i1 noundef zeroext %108, ptr noundef nonnull @.str.8, i32 noundef 26540, ptr noundef nonnull @.str.318)
  br label %113

109:                                              ; preds = %83
  %110 = fsub double %90, %99
  %111 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %110, ptr noundef %1)
  %112 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %111, double noundef 0x3D719799812DEA11)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %6, i1 noundef zeroext %112, ptr noundef nonnull @.str.8, i32 noundef 26544, ptr noundef nonnull @.str.319)
  br label %113

113:                                              ; preds = %100, %109
  %114 = add nuw nsw i64 %.2552, 1
  %exitcond724.not = icmp eq i64 %114, %.0440553
  br i1 %exitcond724.not, label %115, label %83, !llvm.loop !22

115:                                              ; preds = %113
  %116 = add nuw nsw i64 %.0440553, 1
  %exitcond725.not = icmp eq i64 %116, 11
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond725.not, label %.preheader544, label %24, !llvm.loop !23

.preheader543:                                    ; preds = %.preheader544, %300
  %.0444605 = phi i64 [ 0, %.preheader544 ], [ %301, %300 ]
  %.not492.not561.not = icmp eq i64 %.0444605, 0
  %xtraiter779 = and i64 %.0444605, 3
  %117 = icmp ult i64 %.0444605, 4
  %unroll_iter782 = and i64 %.0444605, 9223372036854775804
  %lcmp.mod781.not = icmp eq i64 %xtraiter779, 0
  br label %.lr.ph601

.preheader532:                                    ; preds = %300
  %118 = getelementptr inbounds i8, ptr %14, i64 56
  br label %.preheader531

.lr.ph601:                                        ; preds = %._crit_edge602, %.preheader543
  %.1441603 = phi i64 [ 0, %.preheader543 ], [ %299, %._crit_edge602 ]
  %119 = add nuw nsw i64 %.1441603, %.0444605
  %.fr712 = freeze i64 %119
  %120 = add nuw nsw i64 %.fr712, 10
  %121 = icmp eq i64 %.fr712, 0
  %.not489 = icmp eq i64 %.1441603, 0
  %122 = add nsw i64 %.fr712, -1
  br i1 %121, label %._crit_edge602, label %.lr.ph601.split.preheader

.lr.ph601.split.preheader:                        ; preds = %.lr.ph601
  %xtraiter774 = and i64 %.fr712, 3
  %123 = icmp ult i64 %.fr712, 4
  %unroll_iter777 = and i64 %.fr712, -4
  %lcmp.mod776.not = icmp eq i64 %xtraiter774, 0
  %xtraiter785 = and i64 %.1441603, 1
  %124 = icmp eq i64 %.1441603, 1
  %unroll_iter788 = and i64 %.1441603, 9223372036854775806
  %lcmp.mod787.not = icmp eq i64 %xtraiter785, 0
  br label %.lr.ph601.split

.lr.ph601.split:                                  ; preds = %.lr.ph601.split.preheader, %.loopexit537
  %.0437599 = phi i64 [ %298, %.loopexit537 ], [ %.0444605, %.lr.ph601.split.preheader ]
  %umax739 = call i64 @llvm.umax.i64(i64 %.0437599, i64 1)
  %125 = icmp eq i64 %.0437599, 0
  br i1 %125, label %.loopexit537, label %126

126:                                              ; preds = %.lr.ph601.split
  br i1 %.not489, label %.preheader534.us.preheader, label %.preheader535.lr.ph

.preheader535.lr.ph:                              ; preds = %126
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.0437599, i64 noundef %.1441603, ptr noundef %1)
  br label %.preheader535

.preheader535:                                    ; preds = %.preheader535.lr.ph, %135
  %.3556 = phi i64 [ 0, %.preheader535.lr.ph ], [ %136, %135 ]
  br label %127

127:                                              ; preds = %.preheader535, %127
  %.1427554 = phi i64 [ 0, %.preheader535 ], [ %134, %127 ]
  %128 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %129 = call double @llvm.fmuladd.f64(double %128, double 2.000000e+00, double -1.000000e+00)
  %130 = load ptr, ptr %17, align 8, !tbaa !9
  %131 = getelementptr inbounds ptr, ptr %130, i64 %.3556
  %132 = load ptr, ptr %131, align 8, !tbaa !10
  %133 = getelementptr inbounds double, ptr %132, i64 %.1427554
  store double %129, ptr %133, align 8, !tbaa !12
  %134 = add nuw nsw i64 %.1427554, 1
  %exitcond726.not = icmp eq i64 %134, %.1441603
  br i1 %exitcond726.not, label %135, label %127, !llvm.loop !24

135:                                              ; preds = %127
  %136 = add nuw nsw i64 %.3556, 1
  %.not490.not = icmp ult i64 %136, %.0437599
  br i1 %.not490.not, label %.preheader535, label %.preheader534.us.preheader, !llvm.loop !25

.preheader534.us.preheader:                       ; preds = %135, %126
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.0437599, i64 noundef %.fr712, ptr noundef %1)
  br label %.preheader534.us

.preheader534.us:                                 ; preds = %.preheader534.us.preheader, %._crit_edge.us
  %.4560.us = phi i64 [ %162, %._crit_edge.us ], [ 0, %.preheader534.us.preheader ]
  br i1 %123, label %._crit_edge.us.unr-lcssa, label %.preheader534.us.new

.preheader534.us.new:                             ; preds = %.preheader534.us, %.preheader534.us.new
  %.2428558.us = phi i64 [ %156, %.preheader534.us.new ], [ 0, %.preheader534.us ]
  %niter778 = phi i64 [ %niter778.next.3, %.preheader534.us.new ], [ 0, %.preheader534.us ]
  %137 = load ptr, ptr %21, align 8, !tbaa !9
  %138 = getelementptr inbounds ptr, ptr %137, i64 %.4560.us
  %139 = load ptr, ptr %138, align 8, !tbaa !10
  %140 = getelementptr inbounds double, ptr %139, i64 %.2428558.us
  store double 0.000000e+00, ptr %140, align 8, !tbaa !12
  %141 = or disjoint i64 %.2428558.us, 1
  %142 = load ptr, ptr %21, align 8, !tbaa !9
  %143 = getelementptr inbounds ptr, ptr %142, i64 %.4560.us
  %144 = load ptr, ptr %143, align 8, !tbaa !10
  %145 = getelementptr inbounds double, ptr %144, i64 %141
  store double 0.000000e+00, ptr %145, align 8, !tbaa !12
  %146 = or disjoint i64 %.2428558.us, 2
  %147 = load ptr, ptr %21, align 8, !tbaa !9
  %148 = getelementptr inbounds ptr, ptr %147, i64 %.4560.us
  %149 = load ptr, ptr %148, align 8, !tbaa !10
  %150 = getelementptr inbounds double, ptr %149, i64 %146
  store double 0.000000e+00, ptr %150, align 8, !tbaa !12
  %151 = or disjoint i64 %.2428558.us, 3
  %152 = load ptr, ptr %21, align 8, !tbaa !9
  %153 = getelementptr inbounds ptr, ptr %152, i64 %.4560.us
  %154 = load ptr, ptr %153, align 8, !tbaa !10
  %155 = getelementptr inbounds double, ptr %154, i64 %151
  store double 0.000000e+00, ptr %155, align 8, !tbaa !12
  %156 = add nuw nsw i64 %.2428558.us, 4
  %niter778.next.3 = add i64 %niter778, 4
  %niter778.ncmp.3 = icmp eq i64 %niter778.next.3, %unroll_iter777
  br i1 %niter778.ncmp.3, label %._crit_edge.us.unr-lcssa, label %.preheader534.us.new, !llvm.loop !26

._crit_edge.us.unr-lcssa:                         ; preds = %.preheader534.us.new, %.preheader534.us
  %.2428558.us.unr = phi i64 [ 0, %.preheader534.us ], [ %156, %.preheader534.us.new ]
  br i1 %lcmp.mod776.not, label %._crit_edge.us, label %.epil.preheader773

.epil.preheader773:                               ; preds = %._crit_edge.us.unr-lcssa, %.epil.preheader773
  %.2428558.us.epil = phi i64 [ %161, %.epil.preheader773 ], [ %.2428558.us.unr, %._crit_edge.us.unr-lcssa ]
  %epil.iter775 = phi i64 [ %epil.iter775.next, %.epil.preheader773 ], [ 0, %._crit_edge.us.unr-lcssa ]
  %157 = load ptr, ptr %21, align 8, !tbaa !9
  %158 = getelementptr inbounds ptr, ptr %157, i64 %.4560.us
  %159 = load ptr, ptr %158, align 8, !tbaa !10
  %160 = getelementptr inbounds double, ptr %159, i64 %.2428558.us.epil
  store double 0.000000e+00, ptr %160, align 8, !tbaa !12
  %161 = add nuw nsw i64 %.2428558.us.epil, 1
  %epil.iter775.next = add i64 %epil.iter775, 1
  %epil.iter775.cmp.not = icmp eq i64 %epil.iter775.next, %xtraiter774
  br i1 %epil.iter775.cmp.not, label %._crit_edge.us, label %.epil.preheader773, !llvm.loop !27

._crit_edge.us:                                   ; preds = %.epil.preheader773, %._crit_edge.us.unr-lcssa
  %162 = add nuw nsw i64 %.4560.us, 1
  %exitcond728.not = icmp eq i64 %162, %umax739
  br i1 %exitcond728.not, label %..preheader540_crit_edge, label %.preheader534.us, !llvm.loop !28

..preheader540_crit_edge:                         ; preds = %._crit_edge.us
  %163 = add nsw i64 %.0437599, -1
  br i1 %.not492.not561.not, label %.preheader539, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %..preheader540_crit_edge
  br i1 %117, label %.preheader539.loopexit.unr-lcssa, label %.lr.ph

.preheader539.loopexit.unr-lcssa:                 ; preds = %.lr.ph, %.lr.ph.preheader
  %.5562.unr = phi i64 [ 0, %.lr.ph.preheader ], [ %221, %.lr.ph ]
  br i1 %lcmp.mod781.not, label %.preheader539, label %.lr.ph.epil

.lr.ph.epil:                                      ; preds = %.preheader539.loopexit.unr-lcssa, %.lr.ph.epil
  %.5562.epil = phi i64 [ %168, %.lr.ph.epil ], [ %.5562.unr, %.preheader539.loopexit.unr-lcssa ]
  %epil.iter780 = phi i64 [ %epil.iter780.next, %.lr.ph.epil ], [ 0, %.preheader539.loopexit.unr-lcssa ]
  %164 = load ptr, ptr %21, align 8, !tbaa !9
  %165 = getelementptr inbounds ptr, ptr %164, i64 %.5562.epil
  %166 = load ptr, ptr %165, align 8, !tbaa !10
  %167 = getelementptr inbounds double, ptr %166, i64 %.5562.epil
  store double 1.000000e+00, ptr %167, align 8, !tbaa !12
  %168 = add nuw nsw i64 %.5562.epil, 1
  %epil.iter780.next = add i64 %epil.iter780, 1
  %epil.iter780.cmp.not = icmp eq i64 %epil.iter780.next, %xtraiter779
  br i1 %epil.iter780.cmp.not, label %.preheader539, label %.lr.ph.epil, !llvm.loop !29

.preheader539:                                    ; preds = %.preheader539.loopexit.unr-lcssa, %.lr.ph.epil, %..preheader540_crit_edge
  br i1 %.not489, label %._crit_edge568, label %.preheader533.us

.preheader533.us:                                 ; preds = %.preheader539, %._crit_edge.us569
  %.6567.us = phi i64 [ %201, %._crit_edge.us569 ], [ 0, %.preheader539 ]
  br i1 %124, label %._crit_edge.us569.unr-lcssa, label %.preheader533.us.new

.preheader533.us.new:                             ; preds = %.preheader533.us, %.preheader533.us.new
  %.3429564.us = phi i64 [ %190, %.preheader533.us.new ], [ 0, %.preheader533.us ]
  %niter789 = phi i64 [ %niter789.next.1, %.preheader533.us.new ], [ 0, %.preheader533.us ]
  %169 = load ptr, ptr %17, align 8, !tbaa !9
  %170 = getelementptr inbounds ptr, ptr %169, i64 %.6567.us
  %171 = load ptr, ptr %170, align 8, !tbaa !10
  %172 = getelementptr inbounds double, ptr %171, i64 %.3429564.us
  %173 = load double, ptr %172, align 8, !tbaa !12
  %174 = load ptr, ptr %21, align 8, !tbaa !9
  %175 = getelementptr inbounds ptr, ptr %174, i64 %.6567.us
  %176 = load ptr, ptr %175, align 8, !tbaa !10
  %177 = getelementptr inbounds double, ptr %176, i64 %.0444605
  %178 = getelementptr inbounds double, ptr %177, i64 %.3429564.us
  store double %173, ptr %178, align 8, !tbaa !12
  %179 = or disjoint i64 %.3429564.us, 1
  %180 = load ptr, ptr %17, align 8, !tbaa !9
  %181 = getelementptr inbounds ptr, ptr %180, i64 %.6567.us
  %182 = load ptr, ptr %181, align 8, !tbaa !10
  %183 = getelementptr inbounds double, ptr %182, i64 %179
  %184 = load double, ptr %183, align 8, !tbaa !12
  %185 = load ptr, ptr %21, align 8, !tbaa !9
  %186 = getelementptr inbounds ptr, ptr %185, i64 %.6567.us
  %187 = load ptr, ptr %186, align 8, !tbaa !10
  %188 = getelementptr inbounds double, ptr %187, i64 %.0444605
  %189 = getelementptr inbounds double, ptr %188, i64 %179
  store double %184, ptr %189, align 8, !tbaa !12
  %190 = add nuw nsw i64 %.3429564.us, 2
  %niter789.next.1 = add i64 %niter789, 2
  %niter789.ncmp.1 = icmp eq i64 %niter789.next.1, %unroll_iter788
  br i1 %niter789.ncmp.1, label %._crit_edge.us569.unr-lcssa, label %.preheader533.us.new, !llvm.loop !30

._crit_edge.us569.unr-lcssa:                      ; preds = %.preheader533.us.new, %.preheader533.us
  %.3429564.us.unr = phi i64 [ 0, %.preheader533.us ], [ %190, %.preheader533.us.new ]
  br i1 %lcmp.mod787.not, label %._crit_edge.us569, label %._crit_edge.us569.epilog-lcssa

._crit_edge.us569.epilog-lcssa:                   ; preds = %._crit_edge.us569.unr-lcssa
  %191 = load ptr, ptr %17, align 8, !tbaa !9
  %192 = getelementptr inbounds ptr, ptr %191, i64 %.6567.us
  %193 = load ptr, ptr %192, align 8, !tbaa !10
  %194 = getelementptr inbounds double, ptr %193, i64 %.3429564.us.unr
  %195 = load double, ptr %194, align 8, !tbaa !12
  %196 = load ptr, ptr %21, align 8, !tbaa !9
  %197 = getelementptr inbounds ptr, ptr %196, i64 %.6567.us
  %198 = load ptr, ptr %197, align 8, !tbaa !10
  %199 = getelementptr inbounds double, ptr %198, i64 %.0444605
  %200 = getelementptr inbounds double, ptr %199, i64 %.3429564.us.unr
  store double %195, ptr %200, align 8, !tbaa !12
  br label %._crit_edge.us569

._crit_edge.us569:                                ; preds = %._crit_edge.us569.unr-lcssa, %._crit_edge.us569.epilog-lcssa
  %201 = add nuw nsw i64 %.6567.us, 1
  %exitcond732.not = icmp eq i64 %201, %umax739
  br i1 %exitcond732.not, label %._crit_edge568, label %.preheader533.us, !llvm.loop !31

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %.5562 = phi i64 [ %221, %.lr.ph ], [ 0, %.lr.ph.preheader ]
  %niter783 = phi i64 [ %niter783.next.3, %.lr.ph ], [ 0, %.lr.ph.preheader ]
  %202 = load ptr, ptr %21, align 8, !tbaa !9
  %203 = getelementptr inbounds ptr, ptr %202, i64 %.5562
  %204 = load ptr, ptr %203, align 8, !tbaa !10
  %205 = getelementptr inbounds double, ptr %204, i64 %.5562
  store double 1.000000e+00, ptr %205, align 8, !tbaa !12
  %206 = or disjoint i64 %.5562, 1
  %207 = load ptr, ptr %21, align 8, !tbaa !9
  %208 = getelementptr inbounds ptr, ptr %207, i64 %206
  %209 = load ptr, ptr %208, align 8, !tbaa !10
  %210 = getelementptr inbounds double, ptr %209, i64 %206
  store double 1.000000e+00, ptr %210, align 8, !tbaa !12
  %211 = or disjoint i64 %.5562, 2
  %212 = load ptr, ptr %21, align 8, !tbaa !9
  %213 = getelementptr inbounds ptr, ptr %212, i64 %211
  %214 = load ptr, ptr %213, align 8, !tbaa !10
  %215 = getelementptr inbounds double, ptr %214, i64 %211
  store double 1.000000e+00, ptr %215, align 8, !tbaa !12
  %216 = or disjoint i64 %.5562, 3
  %217 = load ptr, ptr %21, align 8, !tbaa !9
  %218 = getelementptr inbounds ptr, ptr %217, i64 %216
  %219 = load ptr, ptr %218, align 8, !tbaa !10
  %220 = getelementptr inbounds double, ptr %219, i64 %216
  store double 1.000000e+00, ptr %220, align 8, !tbaa !12
  %221 = add nuw nsw i64 %.5562, 4
  %niter783.next.3 = add i64 %niter783, 4
  %niter783.ncmp.3 = icmp eq i64 %niter783.next.3, %unroll_iter782
  br i1 %niter783.ncmp.3, label %.preheader539.loopexit.unr-lcssa, label %.lr.ph, !llvm.loop !32

._crit_edge568:                                   ; preds = %._crit_edge.us569, %.preheader539
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %.0437599, ptr noundef %1)
  br label %222

222:                                              ; preds = %._crit_edge568, %222
  %.7571 = phi i64 [ 0, %._crit_edge568 ], [ %227, %222 ]
  %223 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %224 = call double @llvm.fmuladd.f64(double %223, double 2.000000e+00, double -1.000000e+00)
  %225 = load ptr, ptr %18, align 8, !tbaa !9
  %226 = getelementptr inbounds double, ptr %225, i64 %.7571
  store double %224, ptr %226, align 8, !tbaa !12
  %227 = add nuw nsw i64 %.7571, 1
  %exitcond734.not = icmp eq i64 %227, %umax739
  br i1 %exitcond734.not, label %.lr.ph576.preheader, label %222, !llvm.loop !33

.lr.ph576.preheader:                              ; preds = %222
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %10, i64 noundef %.fr712, ptr noundef %1)
  br label %.lr.ph576

.lr.ph576:                                        ; preds = %.lr.ph576.preheader, %.lr.ph576
  %.8574 = phi i64 [ %233, %.lr.ph576 ], [ 0, %.lr.ph576.preheader ]
  %228 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %229 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %228, double noundef 5.000000e-01)
  %230 = load ptr, ptr %19, align 8, !tbaa !9
  %231 = getelementptr inbounds i8, ptr %230, i64 %.8574
  %232 = zext i1 %229 to i8
  store i8 %232, ptr %231, align 1, !tbaa !5
  %233 = add nuw i64 %.8574, 1
  %exitcond735.not = icmp eq i64 %233, %.fr712
  br i1 %exitcond735.not, label %.lr.ph581.preheader, label %.lr.ph576, !llvm.loop !34

.lr.ph581.preheader:                              ; preds = %.lr.ph576
  call void @_ZN11alglib_impl9snnlsinitElllPNS_11snnlssolverEPNS_8ae_stateE(i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %15, ptr noundef %1)
  call void @_ZN11alglib_impl15snnlssetproblemEPNS_11snnlssolverEPNS_9ae_matrixEPNS_9ae_vectorElllPNS_8ae_stateE(ptr noundef nonnull %15, ptr noundef nonnull %8, ptr noundef nonnull %12, i64 noundef %.0444605, i64 noundef %.1441603, i64 noundef %.0437599, ptr noundef %1)
  br label %.lr.ph581

.lr.ph581:                                        ; preds = %.lr.ph581.preheader, %239
  %.9579 = phi i64 [ %240, %239 ], [ 0, %.lr.ph581.preheader ]
  %234 = load ptr, ptr %19, align 8, !tbaa !9
  %235 = getelementptr inbounds i8, ptr %234, i64 %.9579
  %236 = load i8, ptr %235, align 1, !tbaa !5, !range !19, !noundef !20
  %237 = trunc nuw i8 %236 to i1
  br i1 %237, label %239, label %238

238:                                              ; preds = %.lr.ph581
  call void @_ZN11alglib_impl12snnlsdropnncEPNS_11snnlssolverElPNS_8ae_stateE(ptr noundef nonnull %15, i64 noundef %.9579, ptr noundef %1)
  br label %239

239:                                              ; preds = %.lr.ph581, %238
  %240 = add nuw i64 %.9579, 1
  %exitcond736.not = icmp eq i64 %240, %.fr712
  br i1 %exitcond736.not, label %.lr.ph586.preheader, label %.lr.ph581, !llvm.loop !35

.lr.ph586.preheader:                              ; preds = %239
  call void @_ZN11alglib_impl10snnlssolveEPNS_11snnlssolverEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %15, ptr noundef nonnull %13, ptr noundef %1)
  br label %.lr.ph586

.lr.ph586:                                        ; preds = %.lr.ph586.preheader, %250
  %.10584 = phi i64 [ %252, %250 ], [ 0, %.lr.ph586.preheader ]
  %241 = load ptr, ptr %19, align 8, !tbaa !9
  %242 = getelementptr inbounds i8, ptr %241, i64 %.10584
  %243 = load i8, ptr %242, align 1, !tbaa !5, !range !19, !noundef !20
  %244 = trunc nuw i8 %243 to i1
  br i1 %244, label %245, label %250

245:                                              ; preds = %.lr.ph586
  %246 = load ptr, ptr %20, align 8, !tbaa !9
  %247 = getelementptr inbounds double, ptr %246, i64 %.10584
  %248 = load double, ptr %247, align 8, !tbaa !12
  %249 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %248, double noundef 0.000000e+00)
  br label %250

250:                                              ; preds = %245, %.lr.ph586
  %251 = phi i1 [ false, %.lr.ph586 ], [ %249, %245 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %251, ptr noundef nonnull @.str.8, i32 noundef 26645, ptr noundef nonnull @.str.320)
  %252 = add nuw i64 %.10584, 1
  %exitcond737.not = icmp eq i64 %252, %.fr712
  br i1 %exitcond737.not, label %.lr.ph591.preheader, label %.lr.ph586, !llvm.loop !36

.lr.ph591.preheader:                              ; preds = %250
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %.fr712, ptr noundef %1)
  br label %.lr.ph591

.lr.ph591:                                        ; preds = %.lr.ph591.preheader, %.lr.ph591
  %.11589 = phi i64 [ %263, %.lr.ph591 ], [ 0, %.lr.ph591.preheader ]
  %253 = load ptr, ptr %18, align 8, !tbaa !9
  %254 = load ptr, ptr %21, align 8, !tbaa !9
  %255 = load ptr, ptr %254, align 8, !tbaa !10
  %256 = getelementptr inbounds double, ptr %255, i64 %.11589
  %257 = load i64, ptr %22, align 8, !tbaa !37
  %258 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %163)
  %259 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %253, i64 noundef 1, ptr noundef %256, i64 noundef %257, i64 noundef %258)
  %260 = fneg double %259
  %261 = load ptr, ptr %23, align 8, !tbaa !9
  %262 = getelementptr inbounds double, ptr %261, i64 %.11589
  store double %260, ptr %262, align 8, !tbaa !12
  %263 = add nuw i64 %.11589, 1
  %exitcond738.not = icmp eq i64 %263, %.fr712
  br i1 %exitcond738.not, label %.preheader538, label %.lr.ph591, !llvm.loop !41

.preheader538:                                    ; preds = %.lr.ph591, %.preheader538
  %.12593 = phi i64 [ %275, %.preheader538 ], [ 0, %.lr.ph591 ]
  %264 = load ptr, ptr %21, align 8, !tbaa !9
  %265 = getelementptr inbounds ptr, ptr %264, i64 %.12593
  %266 = load ptr, ptr %265, align 8, !tbaa !10
  %267 = load ptr, ptr %20, align 8, !tbaa !9
  %268 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %122)
  %269 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %266, i64 noundef 1, ptr noundef %267, i64 noundef 1, i64 noundef %268)
  %270 = load ptr, ptr %23, align 8, !tbaa !9
  %271 = load ptr, ptr %21, align 8, !tbaa !9
  %272 = getelementptr inbounds ptr, ptr %271, i64 %.12593
  %273 = load ptr, ptr %272, align 8, !tbaa !10
  %274 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %122)
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %270, i64 noundef 1, ptr noundef %273, i64 noundef 1, i64 noundef %274, double noundef %269)
  %275 = add nuw nsw i64 %.12593, 1
  %exitcond740.not = icmp eq i64 %275, %umax739
  br i1 %exitcond740.not, label %.lr.ph597, label %.preheader538, !llvm.loop !42

.lr.ph597:                                        ; preds = %.preheader538, %296
  %.13596 = phi i64 [ %297, %296 ], [ 0, %.preheader538 ]
  %276 = load ptr, ptr %19, align 8, !tbaa !9
  %277 = getelementptr inbounds i8, ptr %276, i64 %.13596
  %278 = load i8, ptr %277, align 1, !tbaa !5, !range !19, !noundef !20
  %279 = trunc nuw i8 %278 to i1
  br i1 %279, label %280, label %285

280:                                              ; preds = %.lr.ph597
  %281 = load ptr, ptr %20, align 8, !tbaa !9
  %282 = getelementptr inbounds double, ptr %281, i64 %.13596
  %283 = load double, ptr %282, align 8, !tbaa !12
  %284 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %283, double noundef 0.000000e+00)
  br i1 %284, label %285, label %291

285:                                              ; preds = %280, %.lr.ph597
  %286 = load ptr, ptr %23, align 8, !tbaa !9
  %287 = getelementptr inbounds double, ptr %286, i64 %.13596
  %288 = load double, ptr %287, align 8, !tbaa !12
  %289 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %288, ptr noundef %1)
  %290 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %289, double noundef 1.000000e-05)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %290, ptr noundef nonnull @.str.8, i32 noundef 26667, ptr noundef nonnull @.str.321)
  br label %296

291:                                              ; preds = %280
  %292 = load ptr, ptr %23, align 8, !tbaa !9
  %293 = getelementptr inbounds double, ptr %292, i64 %.13596
  %294 = load double, ptr %293, align 8, !tbaa !12
  %295 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %294, double noundef -1.000000e-05)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %295, ptr noundef nonnull @.str.8, i32 noundef 26671, ptr noundef nonnull @.str.322)
  br label %296

296:                                              ; preds = %285, %291
  %297 = add nuw i64 %.13596, 1
  %exitcond741.not = icmp eq i64 %297, %.fr712
  br i1 %exitcond741.not, label %.loopexit537, label %.lr.ph597, !llvm.loop !43

.loopexit537:                                     ; preds = %296, %.lr.ph601.split
  %298 = add nuw nsw i64 %.0437599, 1
  %.not488.not = icmp ult i64 %.0437599, %120
  br i1 %.not488.not, label %.lr.ph601.split, label %._crit_edge602, !llvm.loop !44

._crit_edge602:                                   ; preds = %.loopexit537, %.lr.ph601
  %299 = add nuw nsw i64 %.1441603, 1
  %exitcond742.not = icmp eq i64 %299, 11
  br i1 %exitcond742.not, label %300, label %.lr.ph601, !llvm.loop !45

300:                                              ; preds = %._crit_edge602
  %301 = add nuw nsw i64 %.0444605, 1
  %exitcond743.not = icmp eq i64 %301, 11
  br i1 %exitcond743.not, label %.preheader532, label %.preheader543, !llvm.loop !46

.preheader531:                                    ; preds = %.preheader532, %498
  %indvars.iv = phi i64 [ 11, %.preheader532 ], [ %indvars.iv.next, %498 ]
  %.1445663 = phi i64 [ 0, %.preheader532 ], [ %499, %498 ]
  %302 = add nsw i64 %.1445663, -1
  %303 = add nsw i64 %.1445663, -1
  %.not477.not613.not = icmp eq i64 %.1445663, 0
  %xtraiter796 = and i64 %.1445663, 3
  %304 = icmp ult i64 %.1445663, 4
  %unroll_iter799 = and i64 %.1445663, 9223372036854775804
  %lcmp.mod798.not = icmp eq i64 %xtraiter796, 0
  br label %.preheader529.lr.ph

.preheader519:                                    ; preds = %498
  %305 = getelementptr inbounds i8, ptr %15, i64 240
  br label %.preheader518

.preheader529.lr.ph:                              ; preds = %._crit_edge661, %.preheader531
  %indvars.iv748 = phi i64 [ %indvars.iv, %.preheader531 ], [ %indvars.iv.next749, %._crit_edge661 ]
  %.2442662 = phi i64 [ 0, %.preheader531 ], [ %497, %._crit_edge661 ]
  %306 = add nuw i64 %.1445663, %.2442662
  %307 = add i64 %302, %.2442662
  %308 = add nuw i64 %.1445663, %.2442662
  %309 = add i64 %303, %.2442662
  %310 = add nuw nsw i64 %.2442662, %.1445663
  %311 = add nsw i64 %310, -1
  %.not474 = icmp eq i64 %.2442662, 0
  %.not486.not608.not = icmp eq i64 %310, 0
  %xtraiter791 = and i64 %308, 3
  %312 = icmp ult i64 %309, 3
  %unroll_iter794 = and i64 %308, -4
  %lcmp.mod793.not = icmp eq i64 %xtraiter791, 0
  %xtraiter802 = and i64 %.2442662, 1
  %313 = icmp eq i64 %.2442662, 1
  %unroll_iter805 = and i64 %.2442662, 9223372036854775806
  %lcmp.mod804.not = icmp eq i64 %xtraiter802, 0
  %xtraiter808 = and i64 %306, 3
  %314 = icmp ult i64 %307, 3
  %unroll_iter812 = and i64 %306, -4
  %lcmp.mod810.not = icmp eq i64 %xtraiter808, 0
  br label %.preheader529

.preheader529:                                    ; preds = %.preheader529.lr.ph, %.split658.us
  %.1438660 = phi i64 [ %.1445663, %.preheader529.lr.ph ], [ %496, %.split658.us ]
  %.not509 = icmp ult i64 %311, %.1438660
  br i1 %.not509, label %.preheader529.split.us, label %.split658.us

.preheader529.split.us:                           ; preds = %.preheader529, %.loopexit525.us
  %.0448646.us = phi i64 [ %426, %.loopexit525.us ], [ 0, %.preheader529 ]
  %315 = sub nsw i64 0, %.0448646.us
  %316 = sitofp i64 %315 to double
  %317 = call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef 1.000000e+01, double noundef %316, ptr noundef %1)
  br i1 %.not474, label %.loopexit528.us, label %318

318:                                              ; preds = %.preheader529.split.us
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.1438660, i64 noundef %.2442662, ptr noundef %1)
  br label %.preheader523.us

319:                                              ; preds = %321
  %320 = add nuw nsw i64 %.14607.us, 1
  %.not475.not.us = icmp ult i64 %320, %.1438660
  br i1 %.not475.not.us, label %.preheader523.us, label %.loopexit528.us, !llvm.loop !47

321:                                              ; preds = %.preheader523.us, %321
  %.4430606.us = phi i64 [ 0, %.preheader523.us ], [ %328, %321 ]
  %322 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  %323 = call double @llvm.fmuladd.f64(double %322, double 2.000000e+00, double -1.000000e+00)
  %324 = load ptr, ptr %17, align 8, !tbaa !9
  %325 = getelementptr inbounds ptr, ptr %324, i64 %.14607.us
  %326 = load ptr, ptr %325, align 8, !tbaa !10
  %327 = getelementptr inbounds double, ptr %326, i64 %.4430606.us
  store double %323, ptr %327, align 8, !tbaa !12
  %328 = add nuw nsw i64 %.4430606.us, 1
  %exitcond744.not = icmp eq i64 %328, %.2442662
  br i1 %exitcond744.not, label %319, label %321, !llvm.loop !48

.loopexit528.us:                                  ; preds = %319, %.preheader529.split.us
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.1438660, i64 noundef %310, ptr noundef %1)
  br i1 %.not486.not608.not, label %.preheader527.us, label %.preheader522.us.us

._crit_edge627.us:                                ; preds = %.lr.ph626.us, %.split622.us647
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %.1438660, ptr noundef %1)
  br label %.preheader520.us

329:                                              ; preds = %._crit_edge632.us
  call void @_ZN11alglib_impl9snnlsinitElllPNS_11snnlssolverEPNS_8ae_stateE(i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %15, ptr noundef %1)
  call void @_ZN11alglib_impl15snnlssetproblemEPNS_11snnlssolverEPNS_9ae_matrixEPNS_9ae_vectorElllPNS_8ae_stateE(ptr noundef nonnull %15, ptr noundef nonnull %8, ptr noundef nonnull %12, i64 noundef %.1445663, i64 noundef %.2442662, i64 noundef %.1438660, ptr noundef %1)
  br i1 %.not486.not608.not, label %.preheader524.us.thread, label %.lr.ph637.us

.preheader524.us.thread:                          ; preds = %329
  call void @_ZN11alglib_impl10snnlssolveEPNS_11snnlssolverEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %15, ptr noundef nonnull %13, ptr noundef %1)
  br label %.loopexit525.us

.lr.ph642.us.preheader:                           ; preds = %358
  call void @_ZN11alglib_impl10snnlssolveEPNS_11snnlssolverEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %15, ptr noundef nonnull %13, ptr noundef %1)
  br label %.lr.ph642.us

330:                                              ; preds = %.lr.ph645.us, %330
  %.22644.us = phi i64 [ 0, %.lr.ph645.us ], [ %340, %330 ]
  %331 = load ptr, ptr %118, align 8, !tbaa !9
  %332 = getelementptr inbounds double, ptr %331, i64 %.22644.us
  %333 = load double, ptr %332, align 8, !tbaa !12
  %334 = load ptr, ptr %20, align 8, !tbaa !9
  %335 = getelementptr inbounds double, ptr %334, i64 %.22644.us
  %336 = load double, ptr %335, align 8, !tbaa !12
  %337 = fsub double %333, %336
  %338 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %337, ptr noundef %1)
  %339 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %338, double noundef %495)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %5, i1 noundef zeroext %339, ptr noundef nonnull @.str.8, i32 noundef 26796, ptr noundef nonnull @.str.324)
  %340 = add nuw nsw i64 %.22644.us, 1
  %.not483.not.us = icmp ult i64 %340, %310
  br i1 %.not483.not.us, label %330, label %.loopexit525.us, !llvm.loop !49

.lr.ph642.us:                                     ; preds = %.lr.ph642.us.preheader, %350
  %.21640.us = phi i64 [ %352, %350 ], [ 0, %.lr.ph642.us.preheader ]
  %341 = load ptr, ptr %19, align 8, !tbaa !9
  %342 = getelementptr inbounds i8, ptr %341, i64 %.21640.us
  %343 = load i8, ptr %342, align 1, !tbaa !5, !range !19, !noundef !20
  %344 = trunc nuw i8 %343 to i1
  br i1 %344, label %345, label %350

345:                                              ; preds = %.lr.ph642.us
  %346 = load ptr, ptr %20, align 8, !tbaa !9
  %347 = getelementptr inbounds double, ptr %346, i64 %.21640.us
  %348 = load double, ptr %347, align 8, !tbaa !12
  %349 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %348, double noundef 0.000000e+00)
  br label %350

350:                                              ; preds = %345, %.lr.ph642.us
  %351 = phi i1 [ false, %.lr.ph642.us ], [ %349, %345 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %5, i1 noundef zeroext %351, ptr noundef nonnull @.str.8, i32 noundef 26788, ptr noundef nonnull @.str.323)
  %352 = add nuw nsw i64 %.21640.us, 1
  %.not482.not.us = icmp ult i64 %352, %310
  br i1 %.not482.not.us, label %.lr.ph642.us, label %.lr.ph645.us, !llvm.loop !50

.lr.ph637.us:                                     ; preds = %329, %358
  %.20635.us = phi i64 [ %359, %358 ], [ 0, %329 ]
  %353 = load ptr, ptr %19, align 8, !tbaa !9
  %354 = getelementptr inbounds i8, ptr %353, i64 %.20635.us
  %355 = load i8, ptr %354, align 1, !tbaa !5, !range !19, !noundef !20
  %356 = trunc nuw i8 %355 to i1
  br i1 %356, label %358, label %357

357:                                              ; preds = %.lr.ph637.us
  call void @_ZN11alglib_impl12snnlsdropnncEPNS_11snnlssolverElPNS_8ae_stateE(ptr noundef nonnull %15, i64 noundef %.20635.us, ptr noundef %1)
  br label %358

358:                                              ; preds = %357, %.lr.ph637.us
  %359 = add nuw nsw i64 %.20635.us, 1
  %.not481.not.us = icmp ult i64 %359, %310
  br i1 %.not481.not.us, label %.lr.ph637.us, label %.lr.ph642.us.preheader, !llvm.loop !51

._crit_edge632.us.loopexit.unr-lcssa:             ; preds = %.lr.ph631.us.new, %.lr.ph631.us
  %.lcssa.ph = phi double [ poison, %.lr.ph631.us ], [ %391, %.lr.ph631.us.new ]
  %.7433630.us.unr = phi i64 [ 0, %.lr.ph631.us ], [ %392, %.lr.ph631.us.new ]
  %.0447629.us.unr = phi double [ 0.000000e+00, %.lr.ph631.us ], [ %391, %.lr.ph631.us.new ]
  br i1 %lcmp.mod810.not, label %._crit_edge632.us, label %.epil.preheader807

.epil.preheader807:                               ; preds = %._crit_edge632.us.loopexit.unr-lcssa, %.epil.preheader807
  %.7433630.us.epil = phi i64 [ %365, %.epil.preheader807 ], [ %.7433630.us.unr, %._crit_edge632.us.loopexit.unr-lcssa ]
  %.0447629.us.epil = phi double [ %364, %.epil.preheader807 ], [ %.0447629.us.unr, %._crit_edge632.us.loopexit.unr-lcssa ]
  %epil.iter809 = phi i64 [ %epil.iter809.next, %.epil.preheader807 ], [ 0, %._crit_edge632.us.loopexit.unr-lcssa ]
  %360 = getelementptr inbounds double, ptr %493, i64 %.7433630.us.epil
  %361 = load double, ptr %360, align 8, !tbaa !12
  %362 = getelementptr inbounds double, ptr %494, i64 %.7433630.us.epil
  %363 = load double, ptr %362, align 8, !tbaa !12
  %364 = call double @llvm.fmuladd.f64(double %361, double %363, double %.0447629.us.epil)
  %365 = add nuw nsw i64 %.7433630.us.epil, 1
  %epil.iter809.next = add i64 %epil.iter809, 1
  %epil.iter809.cmp.not = icmp eq i64 %epil.iter809.next, %xtraiter808
  br i1 %epil.iter809.cmp.not, label %._crit_edge632.us, label %.epil.preheader807, !llvm.loop !52

._crit_edge632.us:                                ; preds = %._crit_edge632.us.loopexit.unr-lcssa, %.epil.preheader807, %.preheader520.us
  %.0447.lcssa.us = phi double [ 0.000000e+00, %.preheader520.us ], [ %.lcssa.ph, %._crit_edge632.us.loopexit.unr-lcssa ], [ %364, %.epil.preheader807 ]
  %366 = load ptr, ptr %18, align 8, !tbaa !9
  %367 = getelementptr inbounds double, ptr %366, i64 %.19633.us
  store double %.0447.lcssa.us, ptr %367, align 8, !tbaa !12
  %368 = add nuw nsw i64 %.19633.us, 1
  %.not480.not.us = icmp ult i64 %368, %.1438660
  br i1 %.not480.not.us, label %.preheader520.us, label %329, !llvm.loop !53

.lr.ph631.us.new:                                 ; preds = %.lr.ph631.us, %.lr.ph631.us.new
  %.7433630.us = phi i64 [ %392, %.lr.ph631.us.new ], [ 0, %.lr.ph631.us ]
  %.0447629.us = phi double [ %391, %.lr.ph631.us.new ], [ 0.000000e+00, %.lr.ph631.us ]
  %niter813 = phi i64 [ %niter813.next.3, %.lr.ph631.us.new ], [ 0, %.lr.ph631.us ]
  %369 = getelementptr inbounds double, ptr %493, i64 %.7433630.us
  %370 = load double, ptr %369, align 8, !tbaa !12
  %371 = getelementptr inbounds double, ptr %494, i64 %.7433630.us
  %372 = load double, ptr %371, align 8, !tbaa !12
  %373 = call double @llvm.fmuladd.f64(double %370, double %372, double %.0447629.us)
  %374 = or disjoint i64 %.7433630.us, 1
  %375 = getelementptr inbounds double, ptr %493, i64 %374
  %376 = load double, ptr %375, align 8, !tbaa !12
  %377 = getelementptr inbounds double, ptr %494, i64 %374
  %378 = load double, ptr %377, align 8, !tbaa !12
  %379 = call double @llvm.fmuladd.f64(double %376, double %378, double %373)
  %380 = or disjoint i64 %.7433630.us, 2
  %381 = getelementptr inbounds double, ptr %493, i64 %380
  %382 = load double, ptr %381, align 8, !tbaa !12
  %383 = getelementptr inbounds double, ptr %494, i64 %380
  %384 = load double, ptr %383, align 8, !tbaa !12
  %385 = call double @llvm.fmuladd.f64(double %382, double %384, double %379)
  %386 = or disjoint i64 %.7433630.us, 3
  %387 = getelementptr inbounds double, ptr %493, i64 %386
  %388 = load double, ptr %387, align 8, !tbaa !12
  %389 = getelementptr inbounds double, ptr %494, i64 %386
  %390 = load double, ptr %389, align 8, !tbaa !12
  %391 = call double @llvm.fmuladd.f64(double %388, double %390, double %385)
  %392 = add nuw nsw i64 %.7433630.us, 4
  %niter813.next.3 = add i64 %niter813, 4
  %niter813.ncmp.3.not = icmp eq i64 %niter813.next.3, %unroll_iter812
  br i1 %niter813.ncmp.3.not, label %._crit_edge632.us.loopexit.unr-lcssa, label %.lr.ph631.us.new, !llvm.loop !54

.lr.ph626.us:                                     ; preds = %.split622.us647, %.lr.ph626.us
  %.18624.us = phi i64 [ %405, %.lr.ph626.us ], [ 0, %.split622.us647 ]
  %393 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  %394 = fadd double %393, -5.000000e-01
  %395 = fmul double %317, %394
  %396 = load ptr, ptr %118, align 8, !tbaa !9
  %397 = getelementptr inbounds double, ptr %396, i64 %.18624.us
  store double %395, ptr %397, align 8, !tbaa !12
  %398 = load ptr, ptr %118, align 8, !tbaa !9
  %399 = getelementptr inbounds double, ptr %398, i64 %.18624.us
  %400 = load double, ptr %399, align 8, !tbaa !12
  %401 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %400, double noundef 0.000000e+00)
  %402 = load ptr, ptr %19, align 8, !tbaa !9
  %403 = getelementptr inbounds i8, ptr %402, i64 %.18624.us
  %404 = zext i1 %401 to i8
  store i8 %404, ptr %403, align 1, !tbaa !5
  %405 = add nuw nsw i64 %.18624.us, 1
  %.not479.not.us = icmp ult i64 %405, %310
  br i1 %.not479.not.us, label %.lr.ph626.us, label %._crit_edge627.us, !llvm.loop !55

.lr.ph615.us:                                     ; preds = %.lr.ph615.us.preheader, %.lr.ph615.us
  %.16614.us = phi i64 [ %425, %.lr.ph615.us ], [ 0, %.lr.ph615.us.preheader ]
  %niter800 = phi i64 [ %niter800.next.3, %.lr.ph615.us ], [ 0, %.lr.ph615.us.preheader ]
  %406 = load ptr, ptr %21, align 8, !tbaa !9
  %407 = getelementptr inbounds ptr, ptr %406, i64 %.16614.us
  %408 = load ptr, ptr %407, align 8, !tbaa !10
  %409 = getelementptr inbounds double, ptr %408, i64 %.16614.us
  store double 1.000000e+00, ptr %409, align 8, !tbaa !12
  %410 = or disjoint i64 %.16614.us, 1
  %411 = load ptr, ptr %21, align 8, !tbaa !9
  %412 = getelementptr inbounds ptr, ptr %411, i64 %410
  %413 = load ptr, ptr %412, align 8, !tbaa !10
  %414 = getelementptr inbounds double, ptr %413, i64 %410
  store double 1.000000e+00, ptr %414, align 8, !tbaa !12
  %415 = or disjoint i64 %.16614.us, 2
  %416 = load ptr, ptr %21, align 8, !tbaa !9
  %417 = getelementptr inbounds ptr, ptr %416, i64 %415
  %418 = load ptr, ptr %417, align 8, !tbaa !10
  %419 = getelementptr inbounds double, ptr %418, i64 %415
  store double 1.000000e+00, ptr %419, align 8, !tbaa !12
  %420 = or disjoint i64 %.16614.us, 3
  %421 = load ptr, ptr %21, align 8, !tbaa !9
  %422 = getelementptr inbounds ptr, ptr %421, i64 %420
  %423 = load ptr, ptr %422, align 8, !tbaa !10
  %424 = getelementptr inbounds double, ptr %423, i64 %420
  store double 1.000000e+00, ptr %424, align 8, !tbaa !12
  %425 = add nuw nsw i64 %.16614.us, 4
  %niter800.next.3 = add i64 %niter800, 4
  %niter800.ncmp.3 = icmp eq i64 %niter800.next.3, %unroll_iter799
  br i1 %niter800.ncmp.3, label %.preheader526.us.loopexit.unr-lcssa, label %.lr.ph615.us, !llvm.loop !56

.preheader520.us:                                 ; preds = %._crit_edge632.us, %._crit_edge627.us
  %.19633.us = phi i64 [ 0, %._crit_edge627.us ], [ %368, %._crit_edge632.us ]
  br i1 %.not486.not608.not, label %._crit_edge632.us, label %.lr.ph631.us

.preheader523.us:                                 ; preds = %319, %318
  %.14607.us = phi i64 [ 0, %318 ], [ %320, %319 ]
  br label %321

.loopexit525.us:                                  ; preds = %330, %.preheader524.us.thread
  %426 = add nuw nsw i64 %.0448646.us, 1
  %exitcond747.not = icmp eq i64 %426, 21
  br i1 %exitcond747.not, label %.split658.us, label %.preheader529.split.us, !llvm.loop !57

.preheader526.us.loopexit.unr-lcssa:              ; preds = %.lr.ph615.us, %.lr.ph615.us.preheader
  %.16614.us.unr = phi i64 [ 0, %.lr.ph615.us.preheader ], [ %425, %.lr.ph615.us ]
  br i1 %lcmp.mod798.not, label %.preheader526.us, label %.lr.ph615.us.epil

.lr.ph615.us.epil:                                ; preds = %.preheader526.us.loopexit.unr-lcssa, %.lr.ph615.us.epil
  %.16614.us.epil = phi i64 [ %431, %.lr.ph615.us.epil ], [ %.16614.us.unr, %.preheader526.us.loopexit.unr-lcssa ]
  %epil.iter797 = phi i64 [ %epil.iter797.next, %.lr.ph615.us.epil ], [ 0, %.preheader526.us.loopexit.unr-lcssa ]
  %427 = load ptr, ptr %21, align 8, !tbaa !9
  %428 = getelementptr inbounds ptr, ptr %427, i64 %.16614.us.epil
  %429 = load ptr, ptr %428, align 8, !tbaa !10
  %430 = getelementptr inbounds double, ptr %429, i64 %.16614.us.epil
  store double 1.000000e+00, ptr %430, align 8, !tbaa !12
  %431 = add nuw nsw i64 %.16614.us.epil, 1
  %epil.iter797.next = add i64 %epil.iter797, 1
  %epil.iter797.cmp.not = icmp eq i64 %epil.iter797.next, %xtraiter796
  br i1 %epil.iter797.cmp.not, label %.preheader526.us, label %.lr.ph615.us.epil, !llvm.loop !58

.preheader526.us:                                 ; preds = %.preheader526.us.loopexit.unr-lcssa, %.lr.ph615.us.epil, %.preheader527.us
  br i1 %.not474, label %.split622.us647, label %.preheader521.us.us

.preheader527.us:                                 ; preds = %._crit_edge611.us.us, %.loopexit528.us
  br i1 %.not477.not613.not, label %.preheader526.us, label %.lr.ph615.us.preheader

.lr.ph615.us.preheader:                           ; preds = %.preheader527.us
  br i1 %304, label %.preheader526.us.loopexit.unr-lcssa, label %.lr.ph615.us

.preheader522.us.us:                              ; preds = %.loopexit528.us, %._crit_edge611.us.us
  %.15612.us.us = phi i64 [ %457, %._crit_edge611.us.us ], [ 0, %.loopexit528.us ]
  br i1 %312, label %._crit_edge611.us.us.unr-lcssa, label %.preheader522.us.us.new

.preheader522.us.us.new:                          ; preds = %.preheader522.us.us, %.preheader522.us.us.new
  %.5431609.us.us = phi i64 [ %451, %.preheader522.us.us.new ], [ 0, %.preheader522.us.us ]
  %niter795 = phi i64 [ %niter795.next.3, %.preheader522.us.us.new ], [ 0, %.preheader522.us.us ]
  %432 = load ptr, ptr %21, align 8, !tbaa !9
  %433 = getelementptr inbounds ptr, ptr %432, i64 %.15612.us.us
  %434 = load ptr, ptr %433, align 8, !tbaa !10
  %435 = getelementptr inbounds double, ptr %434, i64 %.5431609.us.us
  store double 0.000000e+00, ptr %435, align 8, !tbaa !12
  %436 = or disjoint i64 %.5431609.us.us, 1
  %437 = load ptr, ptr %21, align 8, !tbaa !9
  %438 = getelementptr inbounds ptr, ptr %437, i64 %.15612.us.us
  %439 = load ptr, ptr %438, align 8, !tbaa !10
  %440 = getelementptr inbounds double, ptr %439, i64 %436
  store double 0.000000e+00, ptr %440, align 8, !tbaa !12
  %441 = or disjoint i64 %.5431609.us.us, 2
  %442 = load ptr, ptr %21, align 8, !tbaa !9
  %443 = getelementptr inbounds ptr, ptr %442, i64 %.15612.us.us
  %444 = load ptr, ptr %443, align 8, !tbaa !10
  %445 = getelementptr inbounds double, ptr %444, i64 %441
  store double 0.000000e+00, ptr %445, align 8, !tbaa !12
  %446 = or disjoint i64 %.5431609.us.us, 3
  %447 = load ptr, ptr %21, align 8, !tbaa !9
  %448 = getelementptr inbounds ptr, ptr %447, i64 %.15612.us.us
  %449 = load ptr, ptr %448, align 8, !tbaa !10
  %450 = getelementptr inbounds double, ptr %449, i64 %446
  store double 0.000000e+00, ptr %450, align 8, !tbaa !12
  %451 = add nuw nsw i64 %.5431609.us.us, 4
  %niter795.next.3 = add i64 %niter795, 4
  %niter795.ncmp.3.not = icmp eq i64 %niter795.next.3, %unroll_iter794
  br i1 %niter795.ncmp.3.not, label %._crit_edge611.us.us.unr-lcssa, label %.preheader522.us.us.new, !llvm.loop !59

._crit_edge611.us.us.unr-lcssa:                   ; preds = %.preheader522.us.us.new, %.preheader522.us.us
  %.5431609.us.us.unr = phi i64 [ 0, %.preheader522.us.us ], [ %451, %.preheader522.us.us.new ]
  br i1 %lcmp.mod793.not, label %._crit_edge611.us.us, label %.epil.preheader790

.epil.preheader790:                               ; preds = %._crit_edge611.us.us.unr-lcssa, %.epil.preheader790
  %.5431609.us.us.epil = phi i64 [ %456, %.epil.preheader790 ], [ %.5431609.us.us.unr, %._crit_edge611.us.us.unr-lcssa ]
  %epil.iter792 = phi i64 [ %epil.iter792.next, %.epil.preheader790 ], [ 0, %._crit_edge611.us.us.unr-lcssa ]
  %452 = load ptr, ptr %21, align 8, !tbaa !9
  %453 = getelementptr inbounds ptr, ptr %452, i64 %.15612.us.us
  %454 = load ptr, ptr %453, align 8, !tbaa !10
  %455 = getelementptr inbounds double, ptr %454, i64 %.5431609.us.us.epil
  store double 0.000000e+00, ptr %455, align 8, !tbaa !12
  %456 = add nuw nsw i64 %.5431609.us.us.epil, 1
  %epil.iter792.next = add i64 %epil.iter792, 1
  %epil.iter792.cmp.not = icmp eq i64 %epil.iter792.next, %xtraiter791
  br i1 %epil.iter792.cmp.not, label %._crit_edge611.us.us, label %.epil.preheader790, !llvm.loop !60

._crit_edge611.us.us:                             ; preds = %.epil.preheader790, %._crit_edge611.us.us.unr-lcssa
  %457 = add nuw nsw i64 %.15612.us.us, 1
  %.not476.not.us.us = icmp ult i64 %457, %.1438660
  br i1 %.not476.not.us.us, label %.preheader522.us.us, label %.preheader527.us, !llvm.loop !61

.split622.us647:                                  ; preds = %._crit_edge619.us.us, %.preheader526.us
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %14, i64 noundef %310, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %10, i64 noundef %310, ptr noundef %1)
  br i1 %.not486.not608.not, label %._crit_edge627.us, label %.lr.ph626.us

.preheader521.us.us:                              ; preds = %.preheader526.us, %._crit_edge619.us.us
  %.17620.us.us = phi i64 [ %490, %._crit_edge619.us.us ], [ 0, %.preheader526.us ]
  br i1 %313, label %._crit_edge619.us.us.unr-lcssa, label %.preheader521.us.us.new

.preheader521.us.us.new:                          ; preds = %.preheader521.us.us, %.preheader521.us.us.new
  %.6432617.us.us = phi i64 [ %479, %.preheader521.us.us.new ], [ 0, %.preheader521.us.us ]
  %niter806 = phi i64 [ %niter806.next.1, %.preheader521.us.us.new ], [ 0, %.preheader521.us.us ]
  %458 = load ptr, ptr %17, align 8, !tbaa !9
  %459 = getelementptr inbounds ptr, ptr %458, i64 %.17620.us.us
  %460 = load ptr, ptr %459, align 8, !tbaa !10
  %461 = getelementptr inbounds double, ptr %460, i64 %.6432617.us.us
  %462 = load double, ptr %461, align 8, !tbaa !12
  %463 = load ptr, ptr %21, align 8, !tbaa !9
  %464 = getelementptr inbounds ptr, ptr %463, i64 %.17620.us.us
  %465 = load ptr, ptr %464, align 8, !tbaa !10
  %466 = getelementptr inbounds double, ptr %465, i64 %.1445663
  %467 = getelementptr inbounds double, ptr %466, i64 %.6432617.us.us
  store double %462, ptr %467, align 8, !tbaa !12
  %468 = or disjoint i64 %.6432617.us.us, 1
  %469 = load ptr, ptr %17, align 8, !tbaa !9
  %470 = getelementptr inbounds ptr, ptr %469, i64 %.17620.us.us
  %471 = load ptr, ptr %470, align 8, !tbaa !10
  %472 = getelementptr inbounds double, ptr %471, i64 %468
  %473 = load double, ptr %472, align 8, !tbaa !12
  %474 = load ptr, ptr %21, align 8, !tbaa !9
  %475 = getelementptr inbounds ptr, ptr %474, i64 %.17620.us.us
  %476 = load ptr, ptr %475, align 8, !tbaa !10
  %477 = getelementptr inbounds double, ptr %476, i64 %.1445663
  %478 = getelementptr inbounds double, ptr %477, i64 %468
  store double %473, ptr %478, align 8, !tbaa !12
  %479 = add nuw nsw i64 %.6432617.us.us, 2
  %niter806.next.1 = add i64 %niter806, 2
  %niter806.ncmp.1 = icmp eq i64 %niter806.next.1, %unroll_iter805
  br i1 %niter806.ncmp.1, label %._crit_edge619.us.us.unr-lcssa, label %.preheader521.us.us.new, !llvm.loop !62

._crit_edge619.us.us.unr-lcssa:                   ; preds = %.preheader521.us.us.new, %.preheader521.us.us
  %.6432617.us.us.unr = phi i64 [ 0, %.preheader521.us.us ], [ %479, %.preheader521.us.us.new ]
  br i1 %lcmp.mod804.not, label %._crit_edge619.us.us, label %._crit_edge619.us.us.epilog-lcssa

._crit_edge619.us.us.epilog-lcssa:                ; preds = %._crit_edge619.us.us.unr-lcssa
  %480 = load ptr, ptr %17, align 8, !tbaa !9
  %481 = getelementptr inbounds ptr, ptr %480, i64 %.17620.us.us
  %482 = load ptr, ptr %481, align 8, !tbaa !10
  %483 = getelementptr inbounds double, ptr %482, i64 %.6432617.us.us.unr
  %484 = load double, ptr %483, align 8, !tbaa !12
  %485 = load ptr, ptr %21, align 8, !tbaa !9
  %486 = getelementptr inbounds ptr, ptr %485, i64 %.17620.us.us
  %487 = load ptr, ptr %486, align 8, !tbaa !10
  %488 = getelementptr inbounds double, ptr %487, i64 %.1445663
  %489 = getelementptr inbounds double, ptr %488, i64 %.6432617.us.us.unr
  store double %484, ptr %489, align 8, !tbaa !12
  br label %._crit_edge619.us.us

._crit_edge619.us.us:                             ; preds = %._crit_edge619.us.us.unr-lcssa, %._crit_edge619.us.us.epilog-lcssa
  %490 = add nuw nsw i64 %.17620.us.us, 1
  %.not478.not.us.us = icmp ult i64 %490, %.1438660
  br i1 %.not478.not.us.us, label %.preheader521.us.us, label %.split622.us647, !llvm.loop !63

.lr.ph631.us:                                     ; preds = %.preheader520.us
  %491 = load ptr, ptr %21, align 8, !tbaa !9
  %492 = getelementptr inbounds ptr, ptr %491, i64 %.19633.us
  %493 = load ptr, ptr %492, align 8, !tbaa !10
  %494 = load ptr, ptr %118, align 8, !tbaa !9
  br i1 %314, label %._crit_edge632.us.loopexit.unr-lcssa, label %.lr.ph631.us.new

.lr.ph645.us:                                     ; preds = %350
  %495 = fmul double %317, 0x3E7AD7F29ABCAF48
  br label %330

.split658.us:                                     ; preds = %.loopexit525.us, %.preheader529
  %496 = add nuw nsw i64 %.1438660, 1
  %exitcond750.not = icmp eq i64 %496, %indvars.iv748
  br i1 %exitcond750.not, label %._crit_edge661, label %.preheader529, !llvm.loop !64

._crit_edge661:                                   ; preds = %.split658.us
  %497 = add nuw nsw i64 %.2442662, 1
  %indvars.iv.next749 = add nuw nsw i64 %indvars.iv748, 1
  %exitcond751.not = icmp eq i64 %497, 11
  br i1 %exitcond751.not, label %498, label %.preheader529.lr.ph, !llvm.loop !65

498:                                              ; preds = %._crit_edge661
  %499 = add nuw nsw i64 %.1445663, 1
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond752.not = icmp eq i64 %499, 11
  br i1 %exitcond752.not, label %.preheader519, label %.preheader531, !llvm.loop !66

.preheader518:                                    ; preds = %.preheader519, %640
  %.2446711 = phi i64 [ 0, %.preheader519 ], [ %641, %640 ]
  %.not463.not673.not = icmp eq i64 %.2446711, 0
  %xtraiter820 = and i64 %.2446711, 3
  %500 = icmp ult i64 %.2446711, 4
  %unroll_iter823 = and i64 %.2446711, 9223372036854775804
  %lcmp.mod822.not = icmp eq i64 %xtraiter820, 0
  br label %.lr.ph706

.lr.ph706:                                        ; preds = %._crit_edge707, %.preheader518
  %.3443709 = phi i64 [ 0, %.preheader518 ], [ %639, %._crit_edge707 ]
  %501 = add nuw nsw i64 %.3443709, %.2446711
  %.fr = freeze i64 %501
  %502 = add nuw nsw i64 %.fr, 10
  %503 = icmp eq i64 %.fr, 0
  %.not460 = icmp eq i64 %.3443709, 0
  %504 = add nsw i64 %.fr, -1
  br i1 %503, label %._crit_edge707, label %.lr.ph706.split.preheader

.lr.ph706.split.preheader:                        ; preds = %.lr.ph706
  %xtraiter815 = and i64 %.fr, 3
  %505 = icmp ult i64 %.fr, 4
  %unroll_iter818 = and i64 %.fr, -4
  %lcmp.mod817.not = icmp eq i64 %xtraiter815, 0
  %xtraiter826 = and i64 %.3443709, 1
  %506 = icmp eq i64 %.3443709, 1
  %unroll_iter829 = and i64 %.3443709, 9223372036854775806
  %lcmp.mod828.not = icmp eq i64 %xtraiter826, 0
  br label %.lr.ph706.split

.lr.ph706.split:                                  ; preds = %.lr.ph706.split.preheader, %.loopexit
  %.2439704 = phi i64 [ %638, %.loopexit ], [ %.2446711, %.lr.ph706.split.preheader ]
  %umax765 = call i64 @llvm.umax.i64(i64 %.2439704, i64 1)
  %507 = icmp eq i64 %.2439704, 0
  br i1 %507, label %.loopexit, label %508

508:                                              ; preds = %.lr.ph706.split
  br i1 %.not460, label %.preheader510.us.preheader, label %.preheader511.lr.ph

.preheader511.lr.ph:                              ; preds = %508
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.2439704, i64 noundef %.3443709, ptr noundef %1)
  br label %.preheader511

.preheader511:                                    ; preds = %.preheader511.lr.ph, %516
  %.23666 = phi i64 [ 0, %.preheader511.lr.ph ], [ %517, %516 ]
  br label %509

509:                                              ; preds = %.preheader511, %509
  %.8434664 = phi i64 [ 0, %.preheader511 ], [ %515, %509 ]
  %510 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  %511 = load ptr, ptr %17, align 8, !tbaa !9
  %512 = getelementptr inbounds ptr, ptr %511, i64 %.23666
  %513 = load ptr, ptr %512, align 8, !tbaa !10
  %514 = getelementptr inbounds double, ptr %513, i64 %.8434664
  store double %510, ptr %514, align 8, !tbaa !12
  %515 = add nuw nsw i64 %.8434664, 1
  %exitcond753.not = icmp eq i64 %515, %.3443709
  br i1 %exitcond753.not, label %516, label %509, !llvm.loop !67

516:                                              ; preds = %509
  %517 = add nuw nsw i64 %.23666, 1
  %.not461.not = icmp ult i64 %517, %.2439704
  br i1 %.not461.not, label %.preheader511, label %.preheader510.us.preheader, !llvm.loop !68

.preheader510.us.preheader:                       ; preds = %516, %508
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.2439704, i64 noundef %.fr, ptr noundef %1)
  br label %.preheader510.us

.preheader510.us:                                 ; preds = %.preheader510.us.preheader, %._crit_edge670.us
  %.24672.us = phi i64 [ %543, %._crit_edge670.us ], [ 0, %.preheader510.us.preheader ]
  br i1 %505, label %._crit_edge670.us.unr-lcssa, label %.preheader510.us.new

.preheader510.us.new:                             ; preds = %.preheader510.us, %.preheader510.us.new
  %.9435668.us = phi i64 [ %537, %.preheader510.us.new ], [ 0, %.preheader510.us ]
  %niter819 = phi i64 [ %niter819.next.3, %.preheader510.us.new ], [ 0, %.preheader510.us ]
  %518 = load ptr, ptr %21, align 8, !tbaa !9
  %519 = getelementptr inbounds ptr, ptr %518, i64 %.24672.us
  %520 = load ptr, ptr %519, align 8, !tbaa !10
  %521 = getelementptr inbounds double, ptr %520, i64 %.9435668.us
  store double 0.000000e+00, ptr %521, align 8, !tbaa !12
  %522 = or disjoint i64 %.9435668.us, 1
  %523 = load ptr, ptr %21, align 8, !tbaa !9
  %524 = getelementptr inbounds ptr, ptr %523, i64 %.24672.us
  %525 = load ptr, ptr %524, align 8, !tbaa !10
  %526 = getelementptr inbounds double, ptr %525, i64 %522
  store double 0.000000e+00, ptr %526, align 8, !tbaa !12
  %527 = or disjoint i64 %.9435668.us, 2
  %528 = load ptr, ptr %21, align 8, !tbaa !9
  %529 = getelementptr inbounds ptr, ptr %528, i64 %.24672.us
  %530 = load ptr, ptr %529, align 8, !tbaa !10
  %531 = getelementptr inbounds double, ptr %530, i64 %527
  store double 0.000000e+00, ptr %531, align 8, !tbaa !12
  %532 = or disjoint i64 %.9435668.us, 3
  %533 = load ptr, ptr %21, align 8, !tbaa !9
  %534 = getelementptr inbounds ptr, ptr %533, i64 %.24672.us
  %535 = load ptr, ptr %534, align 8, !tbaa !10
  %536 = getelementptr inbounds double, ptr %535, i64 %532
  store double 0.000000e+00, ptr %536, align 8, !tbaa !12
  %537 = add nuw nsw i64 %.9435668.us, 4
  %niter819.next.3 = add i64 %niter819, 4
  %niter819.ncmp.3 = icmp eq i64 %niter819.next.3, %unroll_iter818
  br i1 %niter819.ncmp.3, label %._crit_edge670.us.unr-lcssa, label %.preheader510.us.new, !llvm.loop !69

._crit_edge670.us.unr-lcssa:                      ; preds = %.preheader510.us.new, %.preheader510.us
  %.9435668.us.unr = phi i64 [ 0, %.preheader510.us ], [ %537, %.preheader510.us.new ]
  br i1 %lcmp.mod817.not, label %._crit_edge670.us, label %.epil.preheader814

.epil.preheader814:                               ; preds = %._crit_edge670.us.unr-lcssa, %.epil.preheader814
  %.9435668.us.epil = phi i64 [ %542, %.epil.preheader814 ], [ %.9435668.us.unr, %._crit_edge670.us.unr-lcssa ]
  %epil.iter816 = phi i64 [ %epil.iter816.next, %.epil.preheader814 ], [ 0, %._crit_edge670.us.unr-lcssa ]
  %538 = load ptr, ptr %21, align 8, !tbaa !9
  %539 = getelementptr inbounds ptr, ptr %538, i64 %.24672.us
  %540 = load ptr, ptr %539, align 8, !tbaa !10
  %541 = getelementptr inbounds double, ptr %540, i64 %.9435668.us.epil
  store double 0.000000e+00, ptr %541, align 8, !tbaa !12
  %542 = add nuw nsw i64 %.9435668.us.epil, 1
  %epil.iter816.next = add i64 %epil.iter816, 1
  %epil.iter816.cmp.not = icmp eq i64 %epil.iter816.next, %xtraiter815
  br i1 %epil.iter816.cmp.not, label %._crit_edge670.us, label %.epil.preheader814, !llvm.loop !70

._crit_edge670.us:                                ; preds = %.epil.preheader814, %._crit_edge670.us.unr-lcssa
  %543 = add nuw nsw i64 %.24672.us, 1
  %exitcond756.not = icmp eq i64 %543, %umax765
  br i1 %exitcond756.not, label %..preheader515_crit_edge, label %.preheader510.us, !llvm.loop !71

..preheader515_crit_edge:                         ; preds = %._crit_edge670.us
  %544 = add nsw i64 %.2439704, -1
  br i1 %.not463.not673.not, label %.preheader514, label %.lr.ph675.preheader

.lr.ph675.preheader:                              ; preds = %..preheader515_crit_edge
  br i1 %500, label %.preheader514.loopexit.unr-lcssa, label %.lr.ph675

.preheader514.loopexit.unr-lcssa:                 ; preds = %.lr.ph675, %.lr.ph675.preheader
  %.25674.unr = phi i64 [ 0, %.lr.ph675.preheader ], [ %602, %.lr.ph675 ]
  br i1 %lcmp.mod822.not, label %.preheader514, label %.lr.ph675.epil

.lr.ph675.epil:                                   ; preds = %.preheader514.loopexit.unr-lcssa, %.lr.ph675.epil
  %.25674.epil = phi i64 [ %549, %.lr.ph675.epil ], [ %.25674.unr, %.preheader514.loopexit.unr-lcssa ]
  %epil.iter821 = phi i64 [ %epil.iter821.next, %.lr.ph675.epil ], [ 0, %.preheader514.loopexit.unr-lcssa ]
  %545 = load ptr, ptr %21, align 8, !tbaa !9
  %546 = getelementptr inbounds ptr, ptr %545, i64 %.25674.epil
  %547 = load ptr, ptr %546, align 8, !tbaa !10
  %548 = getelementptr inbounds double, ptr %547, i64 %.25674.epil
  store double 1.000000e+00, ptr %548, align 8, !tbaa !12
  %549 = add nuw nsw i64 %.25674.epil, 1
  %epil.iter821.next = add i64 %epil.iter821, 1
  %epil.iter821.cmp.not = icmp eq i64 %epil.iter821.next, %xtraiter820
  br i1 %epil.iter821.cmp.not, label %.preheader514, label %.lr.ph675.epil, !llvm.loop !72

.preheader514:                                    ; preds = %.preheader514.loopexit.unr-lcssa, %.lr.ph675.epil, %..preheader515_crit_edge
  br i1 %.not460, label %._crit_edge682, label %.preheader.us

.preheader.us:                                    ; preds = %.preheader514, %._crit_edge679.us
  %.26681.us = phi i64 [ %582, %._crit_edge679.us ], [ 0, %.preheader514 ]
  br i1 %506, label %._crit_edge679.us.unr-lcssa, label %.preheader.us.new

.preheader.us.new:                                ; preds = %.preheader.us, %.preheader.us.new
  %.10436677.us = phi i64 [ %571, %.preheader.us.new ], [ 0, %.preheader.us ]
  %niter830 = phi i64 [ %niter830.next.1, %.preheader.us.new ], [ 0, %.preheader.us ]
  %550 = load ptr, ptr %17, align 8, !tbaa !9
  %551 = getelementptr inbounds ptr, ptr %550, i64 %.26681.us
  %552 = load ptr, ptr %551, align 8, !tbaa !10
  %553 = getelementptr inbounds double, ptr %552, i64 %.10436677.us
  %554 = load double, ptr %553, align 8, !tbaa !12
  %555 = load ptr, ptr %21, align 8, !tbaa !9
  %556 = getelementptr inbounds ptr, ptr %555, i64 %.26681.us
  %557 = load ptr, ptr %556, align 8, !tbaa !10
  %558 = getelementptr inbounds double, ptr %557, i64 %.2446711
  %559 = getelementptr inbounds double, ptr %558, i64 %.10436677.us
  store double %554, ptr %559, align 8, !tbaa !12
  %560 = or disjoint i64 %.10436677.us, 1
  %561 = load ptr, ptr %17, align 8, !tbaa !9
  %562 = getelementptr inbounds ptr, ptr %561, i64 %.26681.us
  %563 = load ptr, ptr %562, align 8, !tbaa !10
  %564 = getelementptr inbounds double, ptr %563, i64 %560
  %565 = load double, ptr %564, align 8, !tbaa !12
  %566 = load ptr, ptr %21, align 8, !tbaa !9
  %567 = getelementptr inbounds ptr, ptr %566, i64 %.26681.us
  %568 = load ptr, ptr %567, align 8, !tbaa !10
  %569 = getelementptr inbounds double, ptr %568, i64 %.2446711
  %570 = getelementptr inbounds double, ptr %569, i64 %560
  store double %565, ptr %570, align 8, !tbaa !12
  %571 = add nuw nsw i64 %.10436677.us, 2
  %niter830.next.1 = add i64 %niter830, 2
  %niter830.ncmp.1 = icmp eq i64 %niter830.next.1, %unroll_iter829
  br i1 %niter830.ncmp.1, label %._crit_edge679.us.unr-lcssa, label %.preheader.us.new, !llvm.loop !73

._crit_edge679.us.unr-lcssa:                      ; preds = %.preheader.us.new, %.preheader.us
  %.10436677.us.unr = phi i64 [ 0, %.preheader.us ], [ %571, %.preheader.us.new ]
  br i1 %lcmp.mod828.not, label %._crit_edge679.us, label %._crit_edge679.us.epilog-lcssa

._crit_edge679.us.epilog-lcssa:                   ; preds = %._crit_edge679.us.unr-lcssa
  %572 = load ptr, ptr %17, align 8, !tbaa !9
  %573 = getelementptr inbounds ptr, ptr %572, i64 %.26681.us
  %574 = load ptr, ptr %573, align 8, !tbaa !10
  %575 = getelementptr inbounds double, ptr %574, i64 %.10436677.us.unr
  %576 = load double, ptr %575, align 8, !tbaa !12
  %577 = load ptr, ptr %21, align 8, !tbaa !9
  %578 = getelementptr inbounds ptr, ptr %577, i64 %.26681.us
  %579 = load ptr, ptr %578, align 8, !tbaa !10
  %580 = getelementptr inbounds double, ptr %579, i64 %.2446711
  %581 = getelementptr inbounds double, ptr %580, i64 %.10436677.us.unr
  store double %576, ptr %581, align 8, !tbaa !12
  br label %._crit_edge679.us

._crit_edge679.us:                                ; preds = %._crit_edge679.us.unr-lcssa, %._crit_edge679.us.epilog-lcssa
  %582 = add nuw nsw i64 %.26681.us, 1
  %exitcond760.not = icmp eq i64 %582, %umax765
  br i1 %exitcond760.not, label %._crit_edge682, label %.preheader.us, !llvm.loop !74

.lr.ph675:                                        ; preds = %.lr.ph675.preheader, %.lr.ph675
  %.25674 = phi i64 [ %602, %.lr.ph675 ], [ 0, %.lr.ph675.preheader ]
  %niter824 = phi i64 [ %niter824.next.3, %.lr.ph675 ], [ 0, %.lr.ph675.preheader ]
  %583 = load ptr, ptr %21, align 8, !tbaa !9
  %584 = getelementptr inbounds ptr, ptr %583, i64 %.25674
  %585 = load ptr, ptr %584, align 8, !tbaa !10
  %586 = getelementptr inbounds double, ptr %585, i64 %.25674
  store double 1.000000e+00, ptr %586, align 8, !tbaa !12
  %587 = or disjoint i64 %.25674, 1
  %588 = load ptr, ptr %21, align 8, !tbaa !9
  %589 = getelementptr inbounds ptr, ptr %588, i64 %587
  %590 = load ptr, ptr %589, align 8, !tbaa !10
  %591 = getelementptr inbounds double, ptr %590, i64 %587
  store double 1.000000e+00, ptr %591, align 8, !tbaa !12
  %592 = or disjoint i64 %.25674, 2
  %593 = load ptr, ptr %21, align 8, !tbaa !9
  %594 = getelementptr inbounds ptr, ptr %593, i64 %592
  %595 = load ptr, ptr %594, align 8, !tbaa !10
  %596 = getelementptr inbounds double, ptr %595, i64 %592
  store double 1.000000e+00, ptr %596, align 8, !tbaa !12
  %597 = or disjoint i64 %.25674, 3
  %598 = load ptr, ptr %21, align 8, !tbaa !9
  %599 = getelementptr inbounds ptr, ptr %598, i64 %597
  %600 = load ptr, ptr %599, align 8, !tbaa !10
  %601 = getelementptr inbounds double, ptr %600, i64 %597
  store double 1.000000e+00, ptr %601, align 8, !tbaa !12
  %602 = add nuw nsw i64 %.25674, 4
  %niter824.next.3 = add i64 %niter824, 4
  %niter824.ncmp.3 = icmp eq i64 %niter824.next.3, %unroll_iter823
  br i1 %niter824.ncmp.3, label %.preheader514.loopexit.unr-lcssa, label %.lr.ph675, !llvm.loop !75

._crit_edge682:                                   ; preds = %._crit_edge679.us, %.preheader514
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %.2439704, ptr noundef %1)
  br label %603

603:                                              ; preds = %._crit_edge682, %603
  %.27684 = phi i64 [ 0, %._crit_edge682 ], [ %607, %603 ]
  %604 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %1)
  %605 = load ptr, ptr %18, align 8, !tbaa !9
  %606 = getelementptr inbounds double, ptr %605, i64 %.27684
  store double %604, ptr %606, align 8, !tbaa !12
  %607 = add nuw nsw i64 %.27684, 1
  %exitcond762.not = icmp eq i64 %607, %umax765
  br i1 %exitcond762.not, label %.lr.ph691.preheader, label %603, !llvm.loop !76

.lr.ph691.preheader:                              ; preds = %603
  call void @_ZN11alglib_impl9snnlsinitElllPNS_11snnlssolverEPNS_8ae_stateE(i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %15, ptr noundef %1)
  call void @_ZN11alglib_impl15snnlssetproblemEPNS_11snnlssolverEPNS_9ae_matrixEPNS_9ae_vectorElllPNS_8ae_stateE(ptr noundef nonnull %15, ptr noundef nonnull %8, ptr noundef nonnull %12, i64 noundef %.2446711, i64 noundef %.3443709, i64 noundef %.2439704, ptr noundef %1)
  br label %.lr.ph691

.lr.ph691:                                        ; preds = %.lr.ph691.preheader, %.lr.ph691
  %.28689 = phi i64 [ %608, %.lr.ph691 ], [ 0, %.lr.ph691.preheader ]
  call void @_ZN11alglib_impl12snnlsdropnncEPNS_11snnlssolverElPNS_8ae_stateE(ptr noundef nonnull %15, i64 noundef %.28689, ptr noundef %1)
  %608 = add nuw i64 %.28689, 1
  %exitcond763.not = icmp eq i64 %608, %.fr
  br i1 %exitcond763.not, label %.lr.ph696.preheader, label %.lr.ph691, !llvm.loop !77

.lr.ph696.preheader:                              ; preds = %.lr.ph691
  store i64 1, ptr %305, align 8, !tbaa !78
  call void @_ZN11alglib_impl10snnlssolveEPNS_11snnlssolverEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %15, ptr noundef nonnull %13, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %.fr, ptr noundef %1)
  br label %.lr.ph696

.lr.ph696:                                        ; preds = %.lr.ph696.preheader, %.lr.ph696
  %.29694 = phi i64 [ %619, %.lr.ph696 ], [ 0, %.lr.ph696.preheader ]
  %609 = load ptr, ptr %18, align 8, !tbaa !9
  %610 = load ptr, ptr %21, align 8, !tbaa !9
  %611 = load ptr, ptr %610, align 8, !tbaa !10
  %612 = getelementptr inbounds double, ptr %611, i64 %.29694
  %613 = load i64, ptr %22, align 8, !tbaa !37
  %614 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %544)
  %615 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %609, i64 noundef 1, ptr noundef %612, i64 noundef %613, i64 noundef %614)
  %616 = fneg double %615
  %617 = load ptr, ptr %23, align 8, !tbaa !9
  %618 = getelementptr inbounds double, ptr %617, i64 %.29694
  store double %616, ptr %618, align 8, !tbaa !12
  %619 = add nuw i64 %.29694, 1
  %exitcond764.not = icmp eq i64 %619, %.fr
  br i1 %exitcond764.not, label %.preheader513, label %.lr.ph696, !llvm.loop !81

.preheader513:                                    ; preds = %.lr.ph696, %.preheader513
  %.30698 = phi i64 [ %631, %.preheader513 ], [ 0, %.lr.ph696 ]
  %620 = load ptr, ptr %21, align 8, !tbaa !9
  %621 = getelementptr inbounds ptr, ptr %620, i64 %.30698
  %622 = load ptr, ptr %621, align 8, !tbaa !10
  %623 = load ptr, ptr %20, align 8, !tbaa !9
  %624 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %504)
  %625 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %622, i64 noundef 1, ptr noundef %623, i64 noundef 1, i64 noundef %624)
  %626 = load ptr, ptr %23, align 8, !tbaa !9
  %627 = load ptr, ptr %21, align 8, !tbaa !9
  %628 = getelementptr inbounds ptr, ptr %627, i64 %.30698
  %629 = load ptr, ptr %628, align 8, !tbaa !10
  %630 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %504)
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %626, i64 noundef 1, ptr noundef %629, i64 noundef 1, i64 noundef %630, double noundef %625)
  %631 = add nuw nsw i64 %.30698, 1
  %exitcond766.not = icmp eq i64 %631, %umax765
  br i1 %exitcond766.not, label %.lr.ph702, label %.preheader513, !llvm.loop !82

.lr.ph702:                                        ; preds = %.preheader513, %.lr.ph702
  %.31701 = phi i64 [ %637, %.lr.ph702 ], [ 0, %.preheader513 ]
  %632 = load ptr, ptr %23, align 8, !tbaa !9
  %633 = getelementptr inbounds double, ptr %632, i64 %.31701
  %634 = load double, ptr %633, align 8, !tbaa !12
  %635 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %634, ptr noundef %1)
  %636 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %635, double noundef 1.000000e-04)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %7, i1 noundef zeroext %636, ptr noundef nonnull @.str.8, i32 noundef 26914, ptr noundef nonnull @.str.325)
  %637 = add nuw i64 %.31701, 1
  %exitcond767.not = icmp eq i64 %637, %.fr
  br i1 %exitcond767.not, label %.loopexit, label %.lr.ph702, !llvm.loop !83

.loopexit:                                        ; preds = %.lr.ph702, %.lr.ph706.split
  %638 = add nuw nsw i64 %.2439704, 1
  %.not.not = icmp ult i64 %.2439704, %502
  br i1 %.not.not, label %.lr.ph706.split, label %._crit_edge707, !llvm.loop !84

._crit_edge707:                                   ; preds = %.loopexit, %.lr.ph706
  %639 = add nuw nsw i64 %.3443709, 1
  %exitcond768.not = icmp eq i64 %639, 11
  br i1 %exitcond768.not, label %640, label %.lr.ph706, !llvm.loop !85

640:                                              ; preds = %._crit_edge707
  %641 = add nuw nsw i64 %.2446711, 1
  %exitcond769.not = icmp eq i64 %641, 11
  br i1 %exitcond769.not, label %642, label %.preheader518, !llvm.loop !86

642:                                              ; preds = %640
  %643 = load i8, ptr %4, align 1, !tbaa !5, !range !19, !noundef !20
  %644 = trunc nuw i8 %643 to i1
  br i1 %644, label %654, label %645

645:                                              ; preds = %642
  %646 = load i8, ptr %5, align 1, !tbaa !5, !range !19, !noundef !20
  %647 = trunc nuw i8 %646 to i1
  br i1 %647, label %654, label %648

648:                                              ; preds = %645
  %649 = load i8, ptr %6, align 1, !tbaa !5, !range !19, !noundef !20
  %650 = trunc nuw i8 %649 to i1
  br i1 %650, label %654, label %651

651:                                              ; preds = %648
  %652 = load i8, ptr %7, align 1, !tbaa !5, !range !19, !noundef !20
  %653 = trunc nuw i8 %652 to i1
  br label %654

654:                                              ; preds = %651, %648, %645, %642
  %655 = phi i1 [ true, %648 ], [ true, %645 ], [ true, %642 ], [ %653, %651 ]
  br i1 %0, label %676, label %656

656:                                              ; preds = %654
  %657 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.326)
  %658 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.327)
  %659 = load i8, ptr %4, align 1, !tbaa !5, !range !19, !noundef !20
  %660 = trunc nuw i8 %659 to i1
  %.str.7..str.6 = select i1 %660, ptr @.str.7, ptr @.str.6
  %661 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.7..str.6)
  %662 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.328)
  %663 = load i8, ptr %5, align 1, !tbaa !5, !range !19, !noundef !20
  %664 = trunc nuw i8 %663 to i1
  %.str.6.sink770 = select i1 %664, ptr @.str.7, ptr @.str.6
  %665 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink770)
  %666 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.329)
  %667 = load i8, ptr %6, align 1, !tbaa !5, !range !19, !noundef !20
  %668 = trunc nuw i8 %667 to i1
  %.str.6.sink771 = select i1 %668, ptr @.str.7, ptr @.str.6
  %669 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink771)
  %670 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.330)
  %671 = load i8, ptr %7, align 1, !tbaa !5, !range !19, !noundef !20
  %672 = trunc nuw i8 %671 to i1
  %.str.6.sink772 = select i1 %672, ptr @.str.7, ptr @.str.6
  %673 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink772)
  %.str.2.sink = select i1 %655, ptr @.str.1, ptr @.str.2
  %674 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.2.sink)
  %675 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3)
  br label %676

676:                                              ; preds = %656, %654
  %677 = xor i1 %655, true
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 1640, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #7
  ret i1 %677
}

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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.umax.i64(i64, i64) #6

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"bool", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"any pointer", !7, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"double", !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.unroll.disable"}
!18 = distinct !{!18, !15}
!19 = !{i8 0, i8 2}
!20 = !{}
!21 = distinct !{!21, !15}
!22 = distinct !{!22, !15}
!23 = distinct !{!23, !15}
!24 = distinct !{!24, !15}
!25 = distinct !{!25, !15}
!26 = distinct !{!26, !15}
!27 = distinct !{!27, !17}
!28 = distinct !{!28, !15}
!29 = distinct !{!29, !17}
!30 = distinct !{!30, !15}
!31 = distinct !{!31, !15}
!32 = distinct !{!32, !15}
!33 = distinct !{!33, !15}
!34 = distinct !{!34, !15}
!35 = distinct !{!35, !15}
!36 = distinct !{!36, !15}
!37 = !{!38, !39, i64 16}
!38 = !{!"_ZTSN11alglib_impl9ae_matrixE", !39, i64 0, !39, i64 8, !39, i64 16, !39, i64 24, !6, i64 32, !40, i64 40, !7, i64 72}
!39 = !{!"long", !7, i64 0}
!40 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24}
!41 = distinct !{!41, !15}
!42 = distinct !{!42, !15}
!43 = distinct !{!43, !15}
!44 = distinct !{!44, !15}
!45 = distinct !{!45, !15}
!46 = distinct !{!46, !15}
!47 = distinct !{!47, !15}
!48 = distinct !{!48, !15}
!49 = distinct !{!49, !15}
!50 = distinct !{!50, !15}
!51 = distinct !{!51, !15}
!52 = distinct !{!52, !17}
!53 = distinct !{!53, !15}
!54 = distinct !{!54, !15}
!55 = distinct !{!55, !15}
!56 = distinct !{!56, !15}
!57 = distinct !{!57, !15}
!58 = distinct !{!58, !17}
!59 = distinct !{!59, !15}
!60 = distinct !{!60, !17}
!61 = distinct !{!61, !15}
!62 = distinct !{!62, !15}
!63 = distinct !{!63, !15}
!64 = distinct !{!64, !15}
!65 = distinct !{!65, !15}
!66 = distinct !{!66, !15}
!67 = distinct !{!67, !15}
!68 = distinct !{!68, !15}
!69 = distinct !{!69, !15}
!70 = distinct !{!70, !17}
!71 = distinct !{!71, !15}
!72 = distinct !{!72, !17}
!73 = distinct !{!73, !15}
!74 = distinct !{!74, !15}
!75 = distinct !{!75, !15}
!76 = distinct !{!76, !15}
!77 = distinct !{!77, !15}
!78 = !{!79, !39, i64 240}
!79 = !{!"_ZTSN11alglib_impl11snnlssolverE", !39, i64 0, !39, i64 8, !39, i64 16, !38, i64 24, !80, i64 104, !80, i64 168, !13, i64 232, !39, i64 240, !80, i64 248, !80, i64 312, !38, i64 376, !38, i64 456, !38, i64 536, !80, i64 616, !80, i64 680, !80, i64 744, !80, i64 808, !80, i64 872, !80, i64 936, !80, i64 1000, !80, i64 1064, !80, i64 1128, !80, i64 1192, !80, i64 1256, !80, i64 1320, !80, i64 1384, !80, i64 1448, !80, i64 1512, !80, i64 1576}
!80 = !{!"_ZTSN11alglib_impl9ae_vectorE", !39, i64 0, !39, i64 8, !6, i64 16, !40, i64 24, !7, i64 56}
!81 = distinct !{!81, !15}
!82 = distinct !{!82, !15}
!83 = distinct !{!83, !15}
!84 = distinct !{!84, !15}
!85 = distinct !{!85, !15}
!86 = distinct !{!86, !15}


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