; LLVM IR from venumb/ZSPACE :: cpp/depends/alglib/cpp/src (optimization)

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

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

@.str.194 = external hidden unnamed_addr constant [46 x i8], align 1
@_ZN11alglib_implL23sactivesets_maxbasisageE = external hidden global i64, align 8
@.str.195 = external hidden unnamed_addr constant [47 x i8], align 1
@_ZN11alglib_implL25sactivesets_maxbasisdecayE = external hidden global double, align 8
@.str.196 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.197 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.198 = external hidden unnamed_addr constant [41 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

27:                                               ; preds = %3
  store i32 1, ptr %22, align 4
  br label %765

28:                                               ; preds = %3
  %29 = load ptr, ptr %4, align 8, !tbaa !5
  %30 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %29, i32 0, i32 0
  %31 = load i64, ptr %30, align 8, !tbaa !20
  store i64 %31, ptr %7, align 8, !tbaa !21
  %32 = load ptr, ptr %4, align 8, !tbaa !5
  %33 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %32, i32 0, i32 22
  %34 = load i64, ptr %33, align 8, !tbaa !22
  store i64 %34, ptr %8, align 8, !tbaa !21
  %35 = load ptr, ptr %4, align 8, !tbaa !5
  %36 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %35, i32 0, i32 23
  %37 = load i64, ptr %36, align 8, !tbaa !23
  store i64 %37, ptr %9, align 8, !tbaa !21
  store i64 0, ptr %13, align 8, !tbaa !21
  store i64 0, ptr %10, align 8, !tbaa !21
  br label %38

38:                                               ; preds = %55, %28
  %39 = load i64, ptr %10, align 8, !tbaa !21
  %40 = load i64, ptr %7, align 8, !tbaa !21
  %41 = sub nsw i64 %40, 1
  %42 = icmp sle i64 %39, %41
  br i1 %42, label %43, label %58

43:                                               ; preds = %38
  %44 = load ptr, ptr %5, align 8, !tbaa !5
  %45 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %44, i32 0, i32 4
  %46 = load ptr, ptr %45, align 8, !tbaa !24
  %47 = load i64, ptr %10, align 8, !tbaa !21
  %48 = getelementptr inbounds i8, ptr %46, i64 %47
  %49 = load i8, ptr %48, align 1, !tbaa !25, !range !18, !noundef !19
  %50 = trunc i8 %49 to i1
  br i1 %50, label %51, label %54

51:                                               ; preds = %43
  %52 = load i64, ptr %13, align 8, !tbaa !21
  %53 = add nsw i64 %52, 1
  store i64 %53, ptr %13, align 8, !tbaa !21
  br label %54

54:                                               ; preds = %51, %43
  br label %55

55:                                               ; preds = %54
  %56 = load i64, ptr %10, align 8, !tbaa !21
  %57 = add nsw i64 %56, 1
  store i64 %57, ptr %10, align 8, !tbaa !21
  br label %38, !llvm.loop !26

58:                                               ; preds = %38
  %59 = load i64, ptr %7, align 8, !tbaa !21
  store i64 %59, ptr %10, align 8, !tbaa !21
  br label %60

60:                                               ; preds = %77, %58
  %61 = load i64, ptr %10, align 8, !tbaa !21
  %62 = load i64, ptr %7, align 8, !tbaa !21
  %63 = load i64, ptr %8, align 8, !tbaa !21
  %64 = add nsw i64 %62, %63
  %65 = sub nsw i64 %64, 1
  %66 = icmp sle i64 %61, %65
  br i1 %66, label %67, label %80

67:                                               ; preds = %60
  %68 = load ptr, ptr %5, align 8, !tbaa !5
  %69 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %68, i32 0, i32 4
  %70 = load ptr, ptr %69, align 8, !tbaa !24
  %71 = load i64, ptr %10, align 8, !tbaa !21
  %72 = getelementptr inbounds i8, ptr %70, i64 %71
  %73 = load i8, ptr %72, align 1, !tbaa !25, !range !18, !noundef !19
  %74 = trunc i8 %73 to i1
  %75 = xor i1 %74, true
  %76 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %75, ptr noundef @.str.194, ptr noundef %76)
  br label %77

77:                                               ; preds = %67
  %78 = load i64, ptr %10, align 8, !tbaa !21
  %79 = add nsw i64 %78, 1
  store i64 %79, ptr %10, align 8, !tbaa !21
  br label %60, !llvm.loop !28

80:                                               ; preds = %60
  %81 = load i64, ptr %7, align 8, !tbaa !21
  %82 = load i64, ptr %8, align 8, !tbaa !21
  %83 = add nsw i64 %81, %82
  store i64 %83, ptr %10, align 8, !tbaa !21
  br label %84

84:                                               ; preds = %105, %80
  %85 = load i64, ptr %10, align 8, !tbaa !21
  %86 = load i64, ptr %7, align 8, !tbaa !21
  %87 = load i64, ptr %8, align 8, !tbaa !21
  %88 = add nsw i64 %86, %87
  %89 = load i64, ptr %9, align 8, !tbaa !21
  %90 = add nsw i64 %88, %89
  %91 = sub nsw i64 %90, 1
  %92 = icmp sle i64 %85, %91
  br i1 %92, label %93, label %108

93:                                               ; preds = %84
  %94 = load ptr, ptr %5, align 8, !tbaa !5
  %95 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %94, i32 0, i32 4
  %96 = load ptr, ptr %95, align 8, !tbaa !24
  %97 = load i64, ptr %10, align 8, !tbaa !21
  %98 = getelementptr inbounds i8, ptr %96, i64 %97
  %99 = load i8, ptr %98, align 1, !tbaa !25, !range !18, !noundef !19
  %100 = trunc i8 %99 to i1
  br i1 %100, label %101, label %104

101:                                              ; preds = %93
  %102 = load i64, ptr %13, align 8, !tbaa !21
  %103 = add nsw i64 %102, 1
  store i64 %103, ptr %13, align 8, !tbaa !21
  br label %104

104:                                              ; preds = %101, %93
  br label %105

105:                                              ; preds = %104
  %106 = load i64, ptr %10, align 8, !tbaa !21
  %107 = add nsw i64 %106, 1
  store i64 %107, ptr %10, align 8, !tbaa !21
  br label %84, !llvm.loop !29

108:                                              ; preds = %84
  %109 = load i64, ptr %13, align 8, !tbaa !21
  %110 = load ptr, ptr %4, align 8, !tbaa !5
  %111 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %110, i32 0, i32 14
  %112 = load i64, ptr %111, align 8, !tbaa !30
  %113 = add nsw i64 %109, %112
  %114 = load i64, ptr @_ZN11alglib_implL23sactivesets_maxbasisageE, align 8, !tbaa !21
  %115 = icmp sgt i64 %113, %114
  br i1 %115, label %116, label %119

116:                                              ; preds = %108
  %117 = load ptr, ptr %4, align 8, !tbaa !5
  %118 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %117, i32 0, i32 7
  store i8 0, ptr %118, align 8, !tbaa !9
  store i32 1, ptr %22, align 4
  br label %765

119:                                              ; preds = %108
  %120 = load ptr, ptr %4, align 8, !tbaa !5
  %121 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %120, i32 0, i32 9
  %122 = load ptr, ptr %4, align 8, !tbaa !5
  %123 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %122, i32 0, i32 11
  %124 = load i64, ptr %123, align 8, !tbaa !31
  %125 = load i64, ptr %13, align 8, !tbaa !21
  %126 = add nsw i64 %124, %125
  %127 = load i64, ptr %7, align 8, !tbaa !21
  %128 = add nsw i64 %127, 1
  %129 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl17rmatrixgrowrowstoEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %121, i64 noundef %126, i64 noundef %128, ptr noundef %129)
  %130 = load ptr, ptr %4, align 8, !tbaa !5
  %131 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %130, i32 0, i32 8
  %132 = load ptr, ptr %4, align 8, !tbaa !5
  %133 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %132, i32 0, i32 11
  %134 = load i64, ptr %133, align 8, !tbaa !31
  %135 = load i64, ptr %13, align 8, !tbaa !21
  %136 = add nsw i64 %134, %135
  %137 = load i64, ptr %7, align 8, !tbaa !21
  %138 = add nsw i64 %137, 1
  %139 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl17rmatrixgrowrowstoEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %131, i64 noundef %136, i64 noundef %138, ptr noundef %139)
  %140 = load ptr, ptr %4, align 8, !tbaa !5
  %141 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %140, i32 0, i32 10
  %142 = load ptr, ptr %4, align 8, !tbaa !5
  %143 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %142, i32 0, i32 11
  %144 = load i64, ptr %143, align 8, !tbaa !31
  %145 = load i64, ptr %13, align 8, !tbaa !21
  %146 = add nsw i64 %144, %145
  %147 = load i64, ptr %7, align 8, !tbaa !21
  %148 = add nsw i64 %147, 1
  %149 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl17rmatrixgrowrowstoEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %141, i64 noundef %146, i64 noundef %148, ptr noundef %149)
  %150 = load ptr, ptr %4, align 8, !tbaa !5
  %151 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %150, i32 0, i32 32
  %152 = load i64, ptr %7, align 8, !tbaa !21
  %153 = add nsw i64 %152, 1
  %154 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %151, i64 noundef %153, ptr noundef %154)
  %155 = load ptr, ptr %4, align 8, !tbaa !5
  %156 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %155, i32 0, i32 48
  %157 = load i64, ptr %7, align 8, !tbaa !21
  %158 = add nsw i64 %157, 1
  %159 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %156, i64 noundef %158, ptr noundef %159)
  %160 = load ptr, ptr %4, align 8, !tbaa !5
  %161 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %160, i32 0, i32 49
  %162 = load i64, ptr %7, align 8, !tbaa !21
  %163 = add nsw i64 %162, 1
  %164 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %161, i64 noundef %163, ptr noundef %164)
  %165 = load ptr, ptr %4, align 8, !tbaa !5
  %166 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %165, i32 0, i32 50
  %167 = load i64, ptr %7, align 8, !tbaa !21
  %168 = add nsw i64 %167, 1
  %169 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %166, i64 noundef %168, ptr noundef %169)
  %170 = load ptr, ptr %4, align 8, !tbaa !5
  %171 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %170, i32 0, i32 46
  %172 = load i64, ptr %7, align 8, !tbaa !21
  %173 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %171, i64 noundef %172, ptr noundef %173)
  %174 = load ptr, ptr %4, align 8, !tbaa !5
  %175 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %174, i32 0, i32 47
  %176 = load i64, ptr %7, align 8, !tbaa !21
  %177 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %175, i64 noundef %176, ptr noundef %177)
  store i64 0, ptr %12, align 8, !tbaa !21
  br label %178

178:                                              ; preds = %761, %119
  %179 = load i64, ptr %12, align 8, !tbaa !21
  %180 = load i64, ptr %7, align 8, !tbaa !21
  %181 = load i64, ptr %8, align 8, !tbaa !21
  %182 = add nsw i64 %180, %181
  %183 = load i64, ptr %9, align 8, !tbaa !21
  %184 = add nsw i64 %182, %183
  %185 = sub nsw i64 %184, 1
  %186 = icmp sle i64 %179, %185
  br i1 %186, label %187, label %764

187:                                              ; preds = %178
  %188 = load ptr, ptr %5, align 8, !tbaa !5
  %189 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %188, i32 0, i32 4
  %190 = load ptr, ptr %189, align 8, !tbaa !24
  %191 = load i64, ptr %12, align 8, !tbaa !21
  %192 = getelementptr inbounds i8, ptr %190, i64 %191
  %193 = load i8, ptr %192, align 1, !tbaa !25, !range !18, !noundef !19
  %194 = trunc i8 %193 to i1
  br i1 %194, label %195, label %760

195:                                              ; preds = %187
  %196 = load ptr, ptr %4, align 8, !tbaa !5
  %197 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %196, i32 0, i32 13
  %198 = load i64, ptr %197, align 8, !tbaa !32
  %199 = load ptr, ptr %4, align 8, !tbaa !5
  %200 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %199, i32 0, i32 11
  %201 = load i64, ptr %200, align 8, !tbaa !31
  %202 = add nsw i64 %198, %201
  %203 = load i64, ptr %7, align 8, !tbaa !21
  %204 = icmp sge i64 %202, %203
  br i1 %204, label %205, label %216

205:                                              ; preds = %195
  %206 = load ptr, ptr %4, align 8, !tbaa !5
  %207 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %206, i32 0, i32 13
  %208 = load i64, ptr %207, align 8, !tbaa !32
  %209 = load ptr, ptr %4, align 8, !tbaa !5
  %210 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %209, i32 0, i32 11
  %211 = load i64, ptr %210, align 8, !tbaa !31
  %212 = add nsw i64 %208, %211
  %213 = load i64, ptr %7, align 8, !tbaa !21
  %214 = icmp eq i64 %212, %213
  %215 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %214, ptr noundef @.str.195, ptr noundef %215)
  br label %764

216:                                              ; preds = %195
  %217 = load i64, ptr %12, align 8, !tbaa !21
  %218 = load i64, ptr %7, align 8, !tbaa !21
  %219 = icmp slt i64 %217, %218
  br i1 %219, label %220, label %255

220:                                              ; preds = %216
  store i64 0, ptr %11, align 8, !tbaa !21
  br label %221

221:                                              ; preds = %232, %220
  %222 = load i64, ptr %11, align 8, !tbaa !21
  %223 = load i64, ptr %7, align 8, !tbaa !21
  %224 = icmp sle i64 %222, %223
  br i1 %224, label %225, label %235

225:                                              ; preds = %221
  %226 = load ptr, ptr %4, align 8, !tbaa !5
  %227 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %226, i32 0, i32 32
  %228 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %227, i32 0, i32 4
  %229 = load ptr, ptr %228, align 8, !tbaa !24
  %230 = load i64, ptr %11, align 8, !tbaa !21
  %231 = getelementptr inbounds double, ptr %229, i64 %230
  store double 0.000000e+00, ptr %231, align 8, !tbaa !33
  br label %232

232:                                              ; preds = %225
  %233 = load i64, ptr %11, align 8, !tbaa !21
  %234 = add nsw i64 %233, 1
  store i64 %234, ptr %11, align 8, !tbaa !21
  br label %221, !llvm.loop !34

235:                                              ; preds = %221
  %236 = load ptr, ptr %4, align 8, !tbaa !5
  %237 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %236, i32 0, i32 32
  %238 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %237, i32 0, i32 4
  %239 = load ptr, ptr %238, align 8, !tbaa !24
  %240 = load i64, ptr %12, align 8, !tbaa !21
  %241 = getelementptr inbounds double, ptr %239, i64 %240
  store double 1.000000e+00, ptr %241, align 8, !tbaa !33
  %242 = load ptr, ptr %4, align 8, !tbaa !5
  %243 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %242, i32 0, i32 2
  %244 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %243, i32 0, i32 4
  %245 = load ptr, ptr %244, align 8, !tbaa !24
  %246 = load i64, ptr %12, align 8, !tbaa !21
  %247 = getelementptr inbounds double, ptr %245, i64 %246
  %248 = load double, ptr %247, align 8, !tbaa !33
  %249 = load ptr, ptr %4, align 8, !tbaa !5
  %250 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %249, i32 0, i32 32
  %251 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %250, i32 0, i32 4
  %252 = load ptr, ptr %251, align 8, !tbaa !24
  %253 = load i64, ptr %7, align 8, !tbaa !21
  %254 = getelementptr inbounds double, ptr %252, i64 %253
  store double %248, ptr %254, align 8, !tbaa !33
  br label %283

255:                                              ; preds = %216
  store i64 0, ptr %11, align 8, !tbaa !21
  br label %256

256:                                              ; preds = %279, %255
  %257 = load i64, ptr %11, align 8, !tbaa !21
  %258 = load i64, ptr %7, align 8, !tbaa !21
  %259 = icmp sle i64 %257, %258
  br i1 %259, label %260, label %282

260:                                              ; preds = %256
  %261 = load ptr, ptr %4, align 8, !tbaa !5
  %262 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %261, i32 0, i32 21
  %263 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %262, i32 0, i32 6
  %264 = load ptr, ptr %263, align 8, !tbaa !24
  %265 = load i64, ptr %12, align 8, !tbaa !21
  %266 = load i64, ptr %7, align 8, !tbaa !21
  %267 = sub nsw i64 %265, %266
  %268 = getelementptr inbounds ptr, ptr %264, i64 %267
  %269 = load ptr, ptr %268, align 8, !tbaa !5
  %270 = load i64, ptr %11, align 8, !tbaa !21
  %271 = getelementptr inbounds double, ptr %269, i64 %270
  %272 = load double, ptr %271, align 8, !tbaa !33
  %273 = load ptr, ptr %4, align 8, !tbaa !5
  %274 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %273, i32 0, i32 32
  %275 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %274, i32 0, i32 4
  %276 = load ptr, ptr %275, align 8, !tbaa !24
  %277 = load i64, ptr %11, align 8, !tbaa !21
  %278 = getelementptr inbounds double, ptr %276, i64 %277
  store double %272, ptr %278, align 8, !tbaa !33
  br label %279

279:                                              ; preds = %260
  %280 = load i64, ptr %11, align 8, !tbaa !21
  %281 = add nsw i64 %280, 1
  store i64 %281, ptr %11, align 8, !tbaa !21
  br label %256, !llvm.loop !35

282:                                              ; preds = %256
  br label %283

283:                                              ; preds = %282, %235
  store double 0.000000e+00, ptr %18, align 8, !tbaa !33
  store i64 0, ptr %11, align 8, !tbaa !21
  br label %284

284:                                              ; preds = %310, %283
  %285 = load i64, ptr %11, align 8, !tbaa !21
  %286 = load i64, ptr %7, align 8, !tbaa !21
  %287 = sub nsw i64 %286, 1
  %288 = icmp sle i64 %285, %287
  br i1 %288, label %289, label %313

289:                                              ; preds = %284
  %290 = load ptr, ptr %4, align 8, !tbaa !5
  %291 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %290, i32 0, i32 32
  %292 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %291, i32 0, i32 4
  %293 = load ptr, ptr %292, align 8, !tbaa !24
  %294 = load i64, ptr %11, align 8, !tbaa !21
  %295 = getelementptr inbounds double, ptr %293, i64 %294
  %296 = load double, ptr %295, align 8, !tbaa !33
  store double %296, ptr %14, align 8, !tbaa !33
  %297 = load double, ptr %18, align 8, !tbaa !33
  %298 = load double, ptr %14, align 8, !tbaa !33
  %299 = load double, ptr %14, align 8, !tbaa !33
  %300 = fmul double %298, %299
  %301 = load ptr, ptr %4, align 8, !tbaa !5
  %302 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %301, i32 0, i32 5
  %303 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %302, i32 0, i32 4
  %304 = load ptr, ptr %303, align 8, !tbaa !24
  %305 = load i64, ptr %11, align 8, !tbaa !21
  %306 = getelementptr inbounds double, ptr %304, i64 %305
  %307 = load double, ptr %306, align 8, !tbaa !33
  %308 = fdiv double %300, %307
  %309 = fadd double %297, %308
  store double %309, ptr %18, align 8, !tbaa !33
  br label %310

310:                                              ; preds = %289
  %311 = load i64, ptr %11, align 8, !tbaa !21
  %312 = add nsw i64 %311, 1
  store i64 %312, ptr %11, align 8, !tbaa !21
  br label %284, !llvm.loop !36

313:                                              ; preds = %284
  %314 = load double, ptr %18, align 8, !tbaa !33
  %315 = load ptr, ptr %6, align 8, !tbaa !5
  %316 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %314, ptr noundef %315)
  store double %316, ptr %18, align 8, !tbaa !33
  %317 = load double, ptr %18, align 8, !tbaa !33
  %318 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %317, double noundef 0.000000e+00)
  br i1 %318, label %319, label %322

319:                                              ; preds = %313
  %320 = load ptr, ptr %4, align 8, !tbaa !5
  %321 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %320, i32 0, i32 7
  store i8 0, ptr %321, align 8, !tbaa !9
  store i32 1, ptr %22, align 4
  br label %765

322:                                              ; preds = %313
  store i64 0, ptr %10, align 8, !tbaa !21
  br label %323

323:                                              ; preds = %373, %322
  %324 = load i64, ptr %10, align 8, !tbaa !21
  %325 = load ptr, ptr %4, align 8, !tbaa !5
  %326 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %325, i32 0, i32 13
  %327 = load i64, ptr %326, align 8, !tbaa !32
  %328 = sub nsw i64 %327, 1
  %329 = icmp sle i64 %324, %328
  br i1 %329, label %330, label %376

330:                                              ; preds = %323
  %331 = load ptr, ptr %4, align 8, !tbaa !5
  %332 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %331, i32 0, i32 12
  %333 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %332, i32 0, i32 4
  %334 = load ptr, ptr %333, align 8, !tbaa !24
  %335 = load i64, ptr %10, align 8, !tbaa !21
  %336 = getelementptr inbounds i64, ptr %334, i64 %335
  %337 = load i64, ptr %336, align 8, !tbaa !21
  store i64 %337, ptr %11, align 8, !tbaa !21
  %338 = load ptr, ptr %4, align 8, !tbaa !5
  %339 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %338, i32 0, i32 32
  %340 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %339, i32 0, i32 4
  %341 = load ptr, ptr %340, align 8, !tbaa !24
  %342 = load i64, ptr %7, align 8, !tbaa !21
  %343 = getelementptr inbounds double, ptr %341, i64 %342
  %344 = load double, ptr %343, align 8, !tbaa !33
  %345 = load ptr, ptr %4, align 8, !tbaa !5
  %346 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %345, i32 0, i32 32
  %347 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %346, i32 0, i32 4
  %348 = load ptr, ptr %347, align 8, !tbaa !24
  %349 = load i64, ptr %11, align 8, !tbaa !21
  %350 = getelementptr inbounds double, ptr %348, i64 %349
  %351 = load double, ptr %350, align 8, !tbaa !33
  %352 = load ptr, ptr %4, align 8, !tbaa !5
  %353 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %352, i32 0, i32 2
  %354 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %353, i32 0, i32 4
  %355 = load ptr, ptr %354, align 8, !tbaa !24
  %356 = load i64, ptr %11, align 8, !tbaa !21
  %357 = getelementptr inbounds double, ptr %355, i64 %356
  %358 = load double, ptr %357, align 8, !tbaa !33
  %359 = fneg double %351
  %360 = call double @llvm.fmuladd.f64(double %359, double %358, double %344)
  %361 = load ptr, ptr %4, align 8, !tbaa !5
  %362 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %361, i32 0, i32 32
  %363 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %362, i32 0, i32 4
  %364 = load ptr, ptr %363, align 8, !tbaa !24
  %365 = load i64, ptr %7, align 8, !tbaa !21
  %366 = getelementptr inbounds double, ptr %364, i64 %365
  store double %360, ptr %366, align 8, !tbaa !33
  %367 = load ptr, ptr %4, align 8, !tbaa !5
  %368 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %367, i32 0, i32 32
  %369 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %368, i32 0, i32 4
  %370 = load ptr, ptr %369, align 8, !tbaa !24
  %371 = load i64, ptr %11, align 8, !tbaa !21
  %372 = getelementptr inbounds double, ptr %370, i64 %371
  store double 0.000000e+00, ptr %372, align 8, !tbaa !33
  br label %373

373:                                              ; preds = %330
  %374 = load i64, ptr %10, align 8, !tbaa !21
  %375 = add nsw i64 %374, 1
  store i64 %375, ptr %10, align 8, !tbaa !21
  br label %323, !llvm.loop !37

376:                                              ; preds = %323
  store i64 0, ptr %11, align 8, !tbaa !21
  br label %377

377:                                              ; preds = %421, %376
  %378 = load i64, ptr %11, align 8, !tbaa !21
  %379 = load i64, ptr %7, align 8, !tbaa !21
  %380 = icmp sle i64 %378, %379
  br i1 %380, label %381, label %424

381:                                              ; preds = %377
  %382 = load ptr, ptr %4, align 8, !tbaa !5
  %383 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %382, i32 0, i32 32
  %384 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %383, i32 0, i32 4
  %385 = load ptr, ptr %384, align 8, !tbaa !24
  %386 = load i64, ptr %11, align 8, !tbaa !21
  %387 = getelementptr inbounds double, ptr %385, i64 %386
  %388 = load double, ptr %387, align 8, !tbaa !33
  %389 = load ptr, ptr %4, align 8, !tbaa !5
  %390 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %389, i32 0, i32 48
  %391 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %390, i32 0, i32 4
  %392 = load ptr, ptr %391, align 8, !tbaa !24
  %393 = load i64, ptr %11, align 8, !tbaa !21
  %394 = getelementptr inbounds double, ptr %392, i64 %393
  store double %388, ptr %394, align 8, !tbaa !33
  %395 = load ptr, ptr %4, align 8, !tbaa !5
  %396 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %395, i32 0, i32 32
  %397 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %396, i32 0, i32 4
  %398 = load ptr, ptr %397, align 8, !tbaa !24
  %399 = load i64, ptr %11, align 8, !tbaa !21
  %400 = getelementptr inbounds double, ptr %398, i64 %399
  %401 = load double, ptr %400, align 8, !tbaa !33
  %402 = load ptr, ptr %4, align 8, !tbaa !5
  %403 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %402, i32 0, i32 49
  %404 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %403, i32 0, i32 4
  %405 = load ptr, ptr %404, align 8, !tbaa !24
  %406 = load i64, ptr %11, align 8, !tbaa !21
  %407 = getelementptr inbounds double, ptr %405, i64 %406
  store double %401, ptr %407, align 8, !tbaa !33
  %408 = load ptr, ptr %4, align 8, !tbaa !5
  %409 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %408, i32 0, i32 32
  %410 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %409, i32 0, i32 4
  %411 = load ptr, ptr %410, align 8, !tbaa !24
  %412 = load i64, ptr %11, align 8, !tbaa !21
  %413 = getelementptr inbounds double, ptr %411, i64 %412
  %414 = load double, ptr %413, align 8, !tbaa !33
  %415 = load ptr, ptr %4, align 8, !tbaa !5
  %416 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %415, i32 0, i32 50
  %417 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %416, i32 0, i32 4
  %418 = load ptr, ptr %417, align 8, !tbaa !24
  %419 = load i64, ptr %11, align 8, !tbaa !21
  %420 = getelementptr inbounds double, ptr %418, i64 %419
  store double %414, ptr %420, align 8, !tbaa !33
  br label %421

421:                                              ; preds = %381
  %422 = load i64, ptr %11, align 8, !tbaa !21
  %423 = add nsw i64 %422, 1
  store i64 %423, ptr %11, align 8, !tbaa !21
  br label %377, !llvm.loop !38

424:                                              ; preds = %377
  store i64 0, ptr %11, align 8, !tbaa !21
  br label %425

425:                                              ; preds = %460, %424
  %426 = load i64, ptr %11, align 8, !tbaa !21
  %427 = load i64, ptr %7, align 8, !tbaa !21
  %428 = sub nsw i64 %427, 1
  %429 = icmp sle i64 %426, %428
  br i1 %429, label %430, label %463

430:                                              ; preds = %425
  %431 = load ptr, ptr %4, align 8, !tbaa !5
  %432 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %431, i32 0, i32 5
  %433 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %432, i32 0, i32 4
  %434 = load ptr, ptr %433, align 8, !tbaa !24
  %435 = load i64, ptr %11, align 8, !tbaa !21
  %436 = getelementptr inbounds double, ptr %434, i64 %435
  %437 = load double, ptr %436, align 8, !tbaa !33
  %438 = fdiv double 1.000000e+00, %437
  %439 = load ptr, ptr %4, align 8, !tbaa !5
  %440 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %439, i32 0, i32 46
  %441 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %440, i32 0, i32 4
  %442 = load ptr, ptr %441, align 8, !tbaa !24
  %443 = load i64, ptr %11, align 8, !tbaa !21
  %444 = getelementptr inbounds double, ptr %442, i64 %443
  store double %438, ptr %444, align 8, !tbaa !33
  %445 = load ptr, ptr %4, align 8, !tbaa !5
  %446 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %445, i32 0, i32 4
  %447 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %446, i32 0, i32 4
  %448 = load ptr, ptr %447, align 8, !tbaa !24
  %449 = load i64, ptr %11, align 8, !tbaa !21
  %450 = getelementptr inbounds double, ptr %448, i64 %449
  %451 = load double, ptr %450, align 8, !tbaa !33
  %452 = load ptr, ptr %6, align 8, !tbaa !5
  %453 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %451, ptr noundef %452)
  %454 = load ptr, ptr %4, align 8, !tbaa !5
  %455 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %454, i32 0, i32 47
  %456 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %455, i32 0, i32 4
  %457 = load ptr, ptr %456, align 8, !tbaa !24
  %458 = load i64, ptr %11, align 8, !tbaa !21
  %459 = getelementptr inbounds double, ptr %457, i64 %458
  store double %453, ptr %459, align 8, !tbaa !33
  br label %460

460:                                              ; preds = %430
  %461 = load i64, ptr %11, align 8, !tbaa !21
  %462 = add nsw i64 %461, 1
  store i64 %462, ptr %11, align 8, !tbaa !21
  br label %425, !llvm.loop !39

463:                                              ; preds = %425
  store i64 0, ptr %10, align 8, !tbaa !21
  br label %464

464:                                              ; preds = %603, %463
  %465 = load i64, ptr %10, align 8, !tbaa !21
  %466 = load ptr, ptr %4, align 8, !tbaa !5
  %467 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %466, i32 0, i32 11
  %468 = load i64, ptr %467, align 8, !tbaa !31
  %469 = sub nsw i64 %468, 1
  %470 = icmp sle i64 %465, %469
  br i1 %470, label %471, label %606

471:                                              ; preds = %464
  store double 0.000000e+00, ptr %15, align 8, !tbaa !33
  store double 0.000000e+00, ptr %16, align 8, !tbaa !33
  store double 0.000000e+00, ptr %17, align 8, !tbaa !33
  store i64 0, ptr %11, align 8, !tbaa !21
  br label %472

472:                                              ; preds = %551, %471
  %473 = load i64, ptr %11, align 8, !tbaa !21
  %474 = load i64, ptr %7, align 8, !tbaa !21
  %475 = sub nsw i64 %474, 1
  %476 = icmp sle i64 %473, %475
  br i1 %476, label %477, label %554

477:                                              ; preds = %472
  %478 = load double, ptr %15, align 8, !tbaa !33
  %479 = load ptr, ptr %4, align 8, !tbaa !5
  %480 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %479, i32 0, i32 9
  %481 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %480, i32 0, i32 6
  %482 = load ptr, ptr %481, align 8, !tbaa !24
  %483 = load i64, ptr %10, align 8, !tbaa !21
  %484 = getelementptr inbounds ptr, ptr %482, i64 %483
  %485 = load ptr, ptr %484, align 8, !tbaa !5
  %486 = load i64, ptr %11, align 8, !tbaa !21
  %487 = getelementptr inbounds double, ptr %485, i64 %486
  %488 = load double, ptr %487, align 8, !tbaa !33
  %489 = load ptr, ptr %4, align 8, !tbaa !5
  %490 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %489, i32 0, i32 48
  %491 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %490, i32 0, i32 4
  %492 = load ptr, ptr %491, align 8, !tbaa !24
  %493 = load i64, ptr %11, align 8, !tbaa !21
  %494 = getelementptr inbounds double, ptr %492, i64 %493
  %495 = load double, ptr %494, align 8, !tbaa !33
  %496 = fmul double %488, %495
  %497 = load ptr, ptr %4, align 8, !tbaa !5
  %498 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %497, i32 0, i32 46
  %499 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %498, i32 0, i32 4
  %500 = load ptr, ptr %499, align 8, !tbaa !24
  %501 = load i64, ptr %11, align 8, !tbaa !21
  %502 = getelementptr inbounds double, ptr %500, i64 %501
  %503 = load double, ptr %502, align 8, !tbaa !33
  %504 = call double @llvm.fmuladd.f64(double %496, double %503, double %478)
  store double %504, ptr %15, align 8, !tbaa !33
  %505 = load double, ptr %16, align 8, !tbaa !33
  %506 = load ptr, ptr %4, align 8, !tbaa !5
  %507 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %506, i32 0, i32 8
  %508 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %507, i32 0, i32 6
  %509 = load ptr, ptr %508, align 8, !tbaa !24
  %510 = load i64, ptr %10, align 8, !tbaa !21
  %511 = getelementptr inbounds ptr, ptr %509, i64 %510
  %512 = load ptr, ptr %511, align 8, !tbaa !5
  %513 = load i64, ptr %11, align 8, !tbaa !21
  %514 = getelementptr inbounds double, ptr %512, i64 %513
  %515 = load double, ptr %514, align 8, !tbaa !33
  %516 = load ptr, ptr %4, align 8, !tbaa !5
  %517 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %516, i32 0, i32 49
  %518 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %517, i32 0, i32 4
  %519 = load ptr, ptr %518, align 8, !tbaa !24
  %520 = load i64, ptr %11, align 8, !tbaa !21
  %521 = getelementptr inbounds double, ptr %519, i64 %520
  %522 = load double, ptr %521, align 8, !tbaa !33
  %523 = fmul double %515, %522
  %524 = load ptr, ptr %4, align 8, !tbaa !5
  %525 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %524, i32 0, i32 47
  %526 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %525, i32 0, i32 4
  %527 = load ptr, ptr %526, align 8, !tbaa !24
  %528 = load i64, ptr %11, align 8, !tbaa !21
  %529 = getelementptr inbounds double, ptr %527, i64 %528
  %530 = load double, ptr %529, align 8, !tbaa !33
  %531 = call double @llvm.fmuladd.f64(double %523, double %530, double %505)
  store double %531, ptr %16, align 8, !tbaa !33
  %532 = load double, ptr %17, align 8, !tbaa !33
  %533 = load ptr, ptr %4, align 8, !tbaa !5
  %534 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %533, i32 0, i32 10
  %535 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %534, i32 0, i32 6
  %536 = load ptr, ptr %535, align 8, !tbaa !24
  %537 = load i64, ptr %10, align 8, !tbaa !21
  %538 = getelementptr inbounds ptr, ptr %536, i64 %537
  %539 = load ptr, ptr %538, align 8, !tbaa !5
  %540 = load i64, ptr %11, align 8, !tbaa !21
  %541 = getelementptr inbounds double, ptr %539, i64 %540
  %542 = load double, ptr %541, align 8, !tbaa !33
  %543 = load ptr, ptr %4, align 8, !tbaa !5
  %544 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %543, i32 0, i32 50
  %545 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %544, i32 0, i32 4
  %546 = load ptr, ptr %545, align 8, !tbaa !24
  %547 = load i64, ptr %11, align 8, !tbaa !21
  %548 = getelementptr inbounds double, ptr %546, i64 %547
  %549 = load double, ptr %548, align 8, !tbaa !33
  %550 = call double @llvm.fmuladd.f64(double %542, double %549, double %532)
  store double %550, ptr %17, align 8, !tbaa !33
  br label %551

551:                                              ; preds = %477
  %552 = load i64, ptr %11, align 8, !tbaa !21
  %553 = add nsw i64 %552, 1
  store i64 %553, ptr %11, align 8, !tbaa !21
  br label %472, !llvm.loop !40

554:                                              ; preds = %472
  %555 = load ptr, ptr %4, align 8, !tbaa !5
  %556 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %555, i32 0, i32 48
  %557 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %556, i32 0, i32 4
  %558 = load ptr, ptr %557, align 8, !tbaa !24
  %559 = getelementptr inbounds double, ptr %558, i64 0
  %560 = load ptr, ptr %4, align 8, !tbaa !5
  %561 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %560, i32 0, i32 9
  %562 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %561, i32 0, i32 6
  %563 = load ptr, ptr %562, align 8, !tbaa !24
  %564 = load i64, ptr %10, align 8, !tbaa !21
  %565 = getelementptr inbounds ptr, ptr %563, i64 %564
  %566 = load ptr, ptr %565, align 8, !tbaa !5
  %567 = getelementptr inbounds double, ptr %566, i64 0
  %568 = load i64, ptr %7, align 8, !tbaa !21
  %569 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %568)
  %570 = load double, ptr %15, align 8, !tbaa !33
  call void @_ZN11alglib_impl9ae_v_subdEPdlPKdlld(ptr noundef %559, i64 noundef 1, ptr noundef %567, i64 noundef 1, i64 noundef %569, double noundef %570)
  %571 = load ptr, ptr %4, align 8, !tbaa !5
  %572 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %571, i32 0, i32 49
  %573 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %572, i32 0, i32 4
  %574 = load ptr, ptr %573, align 8, !tbaa !24
  %575 = getelementptr inbounds double, ptr %574, i64 0
  %576 = load ptr, ptr %4, align 8, !tbaa !5
  %577 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %576, i32 0, i32 8
  %578 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %577, i32 0, i32 6
  %579 = load ptr, ptr %578, align 8, !tbaa !24
  %580 = load i64, ptr %10, align 8, !tbaa !21
  %581 = getelementptr inbounds ptr, ptr %579, i64 %580
  %582 = load ptr, ptr %581, align 8, !tbaa !5
  %583 = getelementptr inbounds double, ptr %582, i64 0
  %584 = load i64, ptr %7, align 8, !tbaa !21
  %585 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %584)
  %586 = load double, ptr %16, align 8, !tbaa !33
  call void @_ZN11alglib_impl9ae_v_subdEPdlPKdlld(ptr noundef %575, i64 noundef 1, ptr noundef %583, i64 noundef 1, i64 noundef %585, double noundef %586)
  %587 = load ptr, ptr %4, align 8, !tbaa !5
  %588 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %587, i32 0, i32 50
  %589 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %588, i32 0, i32 4
  %590 = load ptr, ptr %589, align 8, !tbaa !24
  %591 = getelementptr inbounds double, ptr %590, i64 0
  %592 = load ptr, ptr %4, align 8, !tbaa !5
  %593 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %592, i32 0, i32 10
  %594 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %593, i32 0, i32 6
  %595 = load ptr, ptr %594, align 8, !tbaa !24
  %596 = load i64, ptr %10, align 8, !tbaa !21
  %597 = getelementptr inbounds ptr, ptr %595, i64 %596
  %598 = load ptr, ptr %597, align 8, !tbaa !5
  %599 = getelementptr inbounds double, ptr %598, i64 0
  %600 = load i64, ptr %7, align 8, !tbaa !21
  %601 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %600)
  %602 = load double, ptr %17, align 8, !tbaa !33
  call void @_ZN11alglib_impl9ae_v_subdEPdlPKdlld(ptr noundef %591, i64 noundef 1, ptr noundef %599, i64 noundef 1, i64 noundef %601, double noundef %602)
  br label %603

603:                                              ; preds = %554
  %604 = load i64, ptr %10, align 8, !tbaa !21
  %605 = add nsw i64 %604, 1
  store i64 %605, ptr %10, align 8, !tbaa !21
  br label %464, !llvm.loop !41

606:                                              ; preds = %464
  store double 0.000000e+00, ptr %19, align 8, !tbaa !33
  store double 0.000000e+00, ptr %20, align 8, !tbaa !33
  store double 0.000000e+00, ptr %21, align 8, !tbaa !33
  store i64 0, ptr %11, align 8, !tbaa !21
  br label %607

607:                                              ; preds = %663, %606
  %608 = load i64, ptr %11, align 8, !tbaa !21
  %609 = load i64, ptr %7, align 8, !tbaa !21
  %610 = sub nsw i64 %609, 1
  %611 = icmp sle i64 %608, %610
  br i1 %611, label %612, label %666

612:                                              ; preds = %607
  %613 = load double, ptr %19, align 8, !tbaa !33
  %614 = load ptr, ptr %4, align 8, !tbaa !5
  %615 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %614, i32 0, i32 48
  %616 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %615, i32 0, i32 4
  %617 = load ptr, ptr %616, align 8, !tbaa !24
  %618 = load i64, ptr %11, align 8, !tbaa !21
  %619 = getelementptr inbounds double, ptr %617, i64 %618
  %620 = load double, ptr %619, align 8, !tbaa !33
  %621 = load ptr, ptr %6, align 8, !tbaa !5
  %622 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %620, ptr noundef %621)
  %623 = load ptr, ptr %4, align 8, !tbaa !5
  %624 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %623, i32 0, i32 5
  %625 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %624, i32 0, i32 4
  %626 = load ptr, ptr %625, align 8, !tbaa !24
  %627 = load i64, ptr %11, align 8, !tbaa !21
  %628 = getelementptr inbounds double, ptr %626, i64 %627
  %629 = load double, ptr %628, align 8, !tbaa !33
  %630 = fdiv double %622, %629
  %631 = fadd double %613, %630
  store double %631, ptr %19, align 8, !tbaa !33
  %632 = load double, ptr %20, align 8, !tbaa !33
  %633 = load ptr, ptr %4, align 8, !tbaa !5
  %634 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %633, i32 0, i32 49
  %635 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %634, i32 0, i32 4
  %636 = load ptr, ptr %635, align 8, !tbaa !24
  %637 = load i64, ptr %11, align 8, !tbaa !21
  %638 = getelementptr inbounds double, ptr %636, i64 %637
  %639 = load double, ptr %638, align 8, !tbaa !33
  %640 = load ptr, ptr %6, align 8, !tbaa !5
  %641 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %639, ptr noundef %640)
  %642 = load ptr, ptr %4, align 8, !tbaa !5
  %643 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %642, i32 0, i32 4
  %644 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %643, i32 0, i32 4
  %645 = load ptr, ptr %644, align 8, !tbaa !24
  %646 = load i64, ptr %11, align 8, !tbaa !21
  %647 = getelementptr inbounds double, ptr %645, i64 %646
  %648 = load double, ptr %647, align 8, !tbaa !33
  %649 = load ptr, ptr %6, align 8, !tbaa !5
  %650 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %648, ptr noundef %649)
  %651 = call double @llvm.fmuladd.f64(double %641, double %650, double %632)
  store double %651, ptr %20, align 8, !tbaa !33
  %652 = load double, ptr %21, align 8, !tbaa !33
  %653 = load ptr, ptr %4, align 8, !tbaa !5
  %654 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %653, i32 0, i32 50
  %655 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %654, i32 0, i32 4
  %656 = load ptr, ptr %655, align 8, !tbaa !24
  %657 = load i64, ptr %11, align 8, !tbaa !21
  %658 = getelementptr inbounds double, ptr %656, i64 %657
  %659 = load double, ptr %658, align 8, !tbaa !33
  %660 = load ptr, ptr %6, align 8, !tbaa !5
  %661 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %659, ptr noundef %660)
  %662 = fadd double %652, %661
  store double %662, ptr %21, align 8, !tbaa !33
  br label %663

663:                                              ; preds = %612
  %664 = load i64, ptr %11, align 8, !tbaa !21
  %665 = add nsw i64 %664, 1
  store i64 %665, ptr %11, align 8, !tbaa !21
  br label %607, !llvm.loop !42

666:                                              ; preds = %607
  %667 = load double, ptr %19, align 8, !tbaa !33
  %668 = load ptr, ptr %6, align 8, !tbaa !5
  %669 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %667, ptr noundef %668)
  store double %669, ptr %19, align 8, !tbaa !33
  %670 = load double, ptr %20, align 8, !tbaa !33
  %671 = load ptr, ptr %6, align 8, !tbaa !5
  %672 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %670, ptr noundef %671)
  store double %672, ptr %20, align 8, !tbaa !33
  %673 = load double, ptr %21, align 8, !tbaa !33
  %674 = load ptr, ptr %6, align 8, !tbaa !5
  %675 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %673, ptr noundef %674)
  store double %675, ptr %21, align 8, !tbaa !33
  %676 = load double, ptr %19, align 8, !tbaa !33
  %677 = load double, ptr @_ZN11alglib_implL25sactivesets_maxbasisdecayE, align 8, !tbaa !33
  %678 = load double, ptr %18, align 8, !tbaa !33
  %679 = fmul double %677, %678
  %680 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %676, double noundef %679)
  br i1 %680, label %681, label %684

681:                                              ; preds = %666
  %682 = load ptr, ptr %4, align 8, !tbaa !5
  %683 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %682, i32 0, i32 7
  store i8 0, ptr %683, align 8, !tbaa !9
  store i32 1, ptr %22, align 4
  br label %765

684:                                              ; preds = %666
  %685 = load double, ptr %19, align 8, !tbaa !33
  %686 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %685, double noundef 0.000000e+00)
  %687 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %686, ptr noundef @.str.196, ptr noundef %687)
  %688 = load double, ptr %20, align 8, !tbaa !33
  %689 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %688, double noundef 0.000000e+00)
  %690 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %689, ptr noundef @.str.197, ptr noundef %690)
  %691 = load double, ptr %21, align 8, !tbaa !33
  %692 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %691, double noundef 0.000000e+00)
  %693 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %692, ptr noundef @.str.198, ptr noundef %693)
  %694 = load double, ptr %19, align 8, !tbaa !33
  %695 = fdiv double 1.000000e+00, %694
  store double %695, ptr %14, align 8, !tbaa !33
  %696 = load ptr, ptr %4, align 8, !tbaa !5
  %697 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %696, i32 0, i32 9
  %698 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %697, i32 0, i32 6
  %699 = load ptr, ptr %698, align 8, !tbaa !24
  %700 = load ptr, ptr %4, align 8, !tbaa !5
  %701 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %700, i32 0, i32 11
  %702 = load i64, ptr %701, align 8, !tbaa !31
  %703 = getelementptr inbounds ptr, ptr %699, i64 %702
  %704 = load ptr, ptr %703, align 8, !tbaa !5
  %705 = getelementptr inbounds double, ptr %704, i64 0
  %706 = load ptr, ptr %4, align 8, !tbaa !5
  %707 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %706, i32 0, i32 48
  %708 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %707, i32 0, i32 4
  %709 = load ptr, ptr %708, align 8, !tbaa !24
  %710 = getelementptr inbounds double, ptr %709, i64 0
  %711 = load i64, ptr %7, align 8, !tbaa !21
  %712 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %711)
  %713 = load double, ptr %14, align 8, !tbaa !33
  call void @_ZN11alglib_impl10ae_v_movedEPdlPKdlld(ptr noundef %705, i64 noundef 1, ptr noundef %710, i64 noundef 1, i64 noundef %712, double noundef %713)
  %714 = load double, ptr %20, align 8, !tbaa !33
  %715 = fdiv double 1.000000e+00, %714
  store double %715, ptr %14, align 8, !tbaa !33
  %716 = load ptr, ptr %4, align 8, !tbaa !5
  %717 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %716, i32 0, i32 8
  %718 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %717, i32 0, i32 6
  %719 = load ptr, ptr %718, align 8, !tbaa !24
  %720 = load ptr, ptr %4, align 8, !tbaa !5
  %721 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %720, i32 0, i32 11
  %722 = load i64, ptr %721, align 8, !tbaa !31
  %723 = getelementptr inbounds ptr, ptr %719, i64 %722
  %724 = load ptr, ptr %723, align 8, !tbaa !5
  %725 = getelementptr inbounds double, ptr %724, i64 0
  %726 = load ptr, ptr %4, align 8, !tbaa !5
  %727 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %726, i32 0, i32 49
  %728 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %727, i32 0, i32 4
  %729 = load ptr, ptr %728, align 8, !tbaa !24
  %730 = getelementptr inbounds double, ptr %729, i64 0
  %731 = load i64, ptr %7, align 8, !tbaa !21
  %732 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %731)
  %733 = load double, ptr %14, align 8, !tbaa !33
  call void @_ZN11alglib_impl10ae_v_movedEPdlPKdlld(ptr noundef %725, i64 noundef 1, ptr noundef %730, i64 noundef 1, i64 noundef %732, double noundef %733)
  %734 = load double, ptr %21, align 8, !tbaa !33
  %735 = fdiv double 1.000000e+00, %734
  store double %735, ptr %14, align 8, !tbaa !33
  %736 = load ptr, ptr %4, align 8, !tbaa !5
  %737 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %736, i32 0, i32 10
  %738 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %737, i32 0, i32 6
  %739 = load ptr, ptr %738, align 8, !tbaa !24
  %740 = load ptr, ptr %4, align 8, !tbaa !5
  %741 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %740, i32 0, i32 11
  %742 = load i64, ptr %741, align 8, !tbaa !31
  %743 = getelementptr inbounds ptr, ptr %739, i64 %742
  %744 = load ptr, ptr %743, align 8, !tbaa !5
  %745 = getelementptr inbounds double, ptr %744, i64 0
  %746 = load ptr, ptr %4, align 8, !tbaa !5
  %747 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %746, i32 0, i32 50
  %748 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %747, i32 0, i32 4
  %749 = load ptr, ptr %748, align 8, !tbaa !24
  %750 = getelementptr inbounds double, ptr %749, i64 0
  %751 = load i64, ptr %7, align 8, !tbaa !21
  %752 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %751)
  %753 = load double, ptr %14, align 8, !tbaa !33
  call void @_ZN11alglib_impl10ae_v_movedEPdlPKdlld(ptr noundef %745, i64 noundef 1, ptr noundef %750, i64 noundef 1, i64 noundef %752, double noundef %753)
  %754 = load ptr, ptr %4, align 8, !tbaa !5
  %755 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %754, i32 0, i32 11
  %756 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %755, ptr noundef %756)
  %757 = load ptr, ptr %4, align 8, !tbaa !5
  %758 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %757, i32 0, i32 14
  %759 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %758, ptr noundef %759)
  br label %760

760:                                              ; preds = %684, %187
  br label %761

761:                                              ; preds = %760
  %762 = load i64, ptr %12, align 8, !tbaa !21
  %763 = add nsw i64 %762, 1
  store i64 %763, ptr %12, align 8, !tbaa !21
  br label %178, !llvm.loop !43

764:                                              ; preds = %205, %178
  store i32 0, ptr %22, align 4
  br label %765

765:                                              ; preds = %764, %681, %319, %116, %27
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #4
  %766 = load i32, ptr %22, align 4
  switch i32 %766, label %768 [
    i32 0, label %767
    i32 1, label %767
  ]

767:                                              ; preds = %765, %765
  ret void

768:                                              ; preds = %765
  unreachable
}

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !13, i64 280}
!10 = !{!"_ZTSN11alglib_impl10sactivesetE", !11, i64 0, !11, i64 8, !12, i64 16, !13, i64 80, !12, i64 88, !12, i64 152, !12, i64 216, !13, i64 280, !15, i64 288, !15, i64 368, !15, i64 448, !11, i64 528, !12, i64 536, !11, i64 600, !11, i64 608, !13, i64 616, !13, i64 617, !12, i64 624, !12, i64 688, !12, i64 752, !12, i64 816, !15, i64 880, !11, i64 960, !11, i64 968, !12, i64 976, !12, i64 1040, !12, i64 1104, !12, i64 1168, !12, i64 1232, !12, i64 1296, !16, i64 1360, !12, i64 3000, !12, i64 3064, !12, i64 3128, !15, i64 3192, !12, i64 3272, !12, i64 3336, !12, i64 3400, !15, i64 3464, !15, i64 3544, !12, i64 3624, !12, i64 3688, !12, i64 3752, !15, i64 3816, !12, i64 3896, !12, i64 3960, !12, i64 4024, !12, i64 4088, !12, i64 4152, !12, i64 4216, !12, i64 4280}
!11 = !{!"long", !7, i64 0}
!12 = !{!"_ZTSN11alglib_impl9ae_vectorE", !11, i64 0, !11, i64 8, !13, i64 16, !14, i64 24, !7, i64 56}
!13 = !{!"bool", !7, i64 0}
!14 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!15 = !{!"_ZTSN11alglib_impl9ae_matrixE", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !13, i64 32, !14, i64 40, !7, i64 72}
!16 = !{!"_ZTSN11alglib_impl11snnlssolverE", !11, i64 0, !11, i64 8, !11, i64 16, !15, i64 24, !12, i64 104, !12, i64 168, !17, i64 232, !11, i64 240, !12, i64 248, !12, i64 312, !15, i64 376, !15, i64 456, !15, i64 536, !12, i64 616, !12, i64 680, !12, i64 744, !12, i64 808, !12, i64 872, !12, i64 936, !12, i64 1000, !12, i64 1064, !12, i64 1128, !12, i64 1192, !12, i64 1256, !12, i64 1320, !12, i64 1384, !12, i64 1448, !12, i64 1512, !12, i64 1576}
!17 = !{!"double", !7, i64 0}
!18 = !{i8 0, i8 2}
!19 = !{}
!20 = !{!10, !11, i64 0}
!21 = !{!11, !11, i64 0}
!22 = !{!10, !11, i64 960}
!23 = !{!10, !11, i64 968}
!24 = !{!7, !7, i64 0}
!25 = !{!13, !13, i64 0}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.mustprogress"}
!28 = distinct !{!28, !27}
!29 = distinct !{!29, !27}
!30 = !{!10, !11, i64 608}
!31 = !{!10, !11, i64 528}
!32 = !{!10, !11, i64 600}
!33 = !{!17, !17, i64 0}
!34 = distinct !{!34, !27}
!35 = distinct !{!35, !27}
!36 = distinct !{!36, !27}
!37 = distinct !{!37, !27}
!38 = distinct !{!38, !27}
!39 = distinct !{!39, !27}
!40 = distinct !{!40, !27}
!41 = distinct !{!41, !27}
!42 = distinct !{!42, !27}
!43 = distinct !{!43, !27}


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

@.str.194 = external hidden unnamed_addr constant [46 x i8], align 1
@_ZN11alglib_implL23sactivesets_maxbasisageE = external hidden local_unnamed_addr global i64, align 8
@.str.195 = external hidden unnamed_addr constant [47 x i8], align 1
@_ZN11alglib_implL25sactivesets_maxbasisdecayE = external hidden local_unnamed_addr global double, align 8
@.str.196 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.197 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.198 = external hidden unnamed_addr constant [41 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl16sasappendtobasisEPNS_10sactivesetEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %0, ptr nocapture noundef readonly %1, ptr noundef %2) local_unnamed_addr #2 {
  %4 = getelementptr inbounds i8, ptr %0, i64 280
  %5 = load i8, ptr %4, align 8, !tbaa !5, !range !17, !noundef !18
  %6 = trunc nuw i8 %5 to i1
  br i1 %6, label %7, label %.loopexit297

7:                                                ; preds = %3
  %8 = load i64, ptr %0, align 8, !tbaa !19
  %9 = getelementptr inbounds i8, ptr %0, i64 960
  %10 = load i64, ptr %9, align 8, !tbaa !20
  %11 = getelementptr inbounds i8, ptr %0, i64 968
  %12 = load i64, ptr %11, align 8, !tbaa !21
  %.not.not304 = icmp sgt i64 %8, 0
  br i1 %.not.not304, label %.lr.ph, label %.preheader299

.lr.ph:                                           ; preds = %7
  %13 = getelementptr inbounds i8, ptr %1, i64 56
  %14 = load ptr, ptr %13, align 8, !tbaa !22
  %xtraiter = and i64 %8, 7
  %15 = icmp ult i64 %8, 8
  br i1 %15, label %.preheader299.loopexit.unr-lcssa, label %.lr.ph.new

.lr.ph.new:                                       ; preds = %.lr.ph
  %unroll_iter = and i64 %8, 9223372036854775800
  br label %22

.preheader299.loopexit.unr-lcssa:                 ; preds = %22, %.lr.ph
  %spec.select.lcssa.ph = phi i64 [ poison, %.lr.ph ], [ %spec.select.7, %22 ]
  %.0261306.unr = phi i64 [ 0, %.lr.ph ], [ %spec.select.7, %22 ]
  %.0267305.unr = phi i64 [ 0, %.lr.ph ], [ %54, %22 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.preheader299, label %.epil.preheader

.epil.preheader:                                  ; preds = %.preheader299.loopexit.unr-lcssa, %.epil.preheader
  %.0261306.epil = phi i64 [ %spec.select.epil, %.epil.preheader ], [ %.0261306.unr, %.preheader299.loopexit.unr-lcssa ]
  %.0267305.epil = phi i64 [ %19, %.epil.preheader ], [ %.0267305.unr, %.preheader299.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader ], [ 0, %.preheader299.loopexit.unr-lcssa ]
  %16 = getelementptr inbounds i8, ptr %14, i64 %.0267305.epil
  %17 = load i8, ptr %16, align 1, !tbaa !23, !range !17, !noundef !18
  %18 = zext nneg i8 %17 to i64
  %spec.select.epil = add nuw nsw i64 %.0261306.epil, %18
  %19 = add nuw nsw i64 %.0267305.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 %.preheader299, label %.epil.preheader, !llvm.loop !24

.preheader299:                                    ; preds = %.preheader299.loopexit.unr-lcssa, %.epil.preheader, %7
  %.0261.lcssa = phi i64 [ 0, %7 ], [ %spec.select.lcssa.ph, %.preheader299.loopexit.unr-lcssa ], [ %spec.select.epil, %.epil.preheader ]
  %20 = add i64 %10, %8
  %.not.not277307 = icmp sgt i64 %10, 0
  br i1 %.not.not277307, label %.lr.ph309, label %.preheader298

.lr.ph309:                                        ; preds = %.preheader299
  %21 = getelementptr inbounds i8, ptr %1, i64 56
  br label %58

22:                                               ; preds = %22, %.lr.ph.new
  %.0261306 = phi i64 [ 0, %.lr.ph.new ], [ %spec.select.7, %22 ]
  %.0267305 = phi i64 [ 0, %.lr.ph.new ], [ %54, %22 ]
  %niter = phi i64 [ 0, %.lr.ph.new ], [ %niter.next.7, %22 ]
  %23 = getelementptr inbounds i8, ptr %14, i64 %.0267305
  %24 = load i8, ptr %23, align 1, !tbaa !23, !range !17, !noundef !18
  %25 = zext nneg i8 %24 to i64
  %spec.select = add nuw nsw i64 %.0261306, %25
  %26 = or disjoint i64 %.0267305, 1
  %27 = getelementptr inbounds i8, ptr %14, i64 %26
  %28 = load i8, ptr %27, align 1, !tbaa !23, !range !17, !noundef !18
  %29 = zext nneg i8 %28 to i64
  %spec.select.1 = add nuw nsw i64 %spec.select, %29
  %30 = or disjoint i64 %.0267305, 2
  %31 = getelementptr inbounds i8, ptr %14, i64 %30
  %32 = load i8, ptr %31, align 1, !tbaa !23, !range !17, !noundef !18
  %33 = zext nneg i8 %32 to i64
  %spec.select.2 = add nuw nsw i64 %spec.select.1, %33
  %34 = or disjoint i64 %.0267305, 3
  %35 = getelementptr inbounds i8, ptr %14, i64 %34
  %36 = load i8, ptr %35, align 1, !tbaa !23, !range !17, !noundef !18
  %37 = zext nneg i8 %36 to i64
  %spec.select.3 = add nuw nsw i64 %spec.select.2, %37
  %38 = or disjoint i64 %.0267305, 4
  %39 = getelementptr inbounds i8, ptr %14, i64 %38
  %40 = load i8, ptr %39, align 1, !tbaa !23, !range !17, !noundef !18
  %41 = zext nneg i8 %40 to i64
  %spec.select.4 = add nuw nsw i64 %spec.select.3, %41
  %42 = or disjoint i64 %.0267305, 5
  %43 = getelementptr inbounds i8, ptr %14, i64 %42
  %44 = load i8, ptr %43, align 1, !tbaa !23, !range !17, !noundef !18
  %45 = zext nneg i8 %44 to i64
  %spec.select.5 = add nuw nsw i64 %spec.select.4, %45
  %46 = or disjoint i64 %.0267305, 6
  %47 = getelementptr inbounds i8, ptr %14, i64 %46
  %48 = load i8, ptr %47, align 1, !tbaa !23, !range !17, !noundef !18
  %49 = zext nneg i8 %48 to i64
  %spec.select.6 = add nuw nsw i64 %spec.select.5, %49
  %50 = or disjoint i64 %.0267305, 7
  %51 = getelementptr inbounds i8, ptr %14, i64 %50
  %52 = load i8, ptr %51, align 1, !tbaa !23, !range !17, !noundef !18
  %53 = zext nneg i8 %52 to i64
  %spec.select.7 = add nuw nsw i64 %spec.select.6, %53
  %54 = add nuw nsw i64 %.0267305, 8
  %niter.next.7 = add i64 %niter, 8
  %niter.ncmp.7 = icmp eq i64 %niter.next.7, %unroll_iter
  br i1 %niter.ncmp.7, label %.preheader299.loopexit.unr-lcssa, label %22, !llvm.loop !26

.preheader298:                                    ; preds = %58, %.preheader299
  %55 = add i64 %20, %12
  %.not.not278311 = icmp sgt i64 %12, 0
  br i1 %.not.not278311, label %.lr.ph314, label %._crit_edge

.lr.ph314:                                        ; preds = %.preheader298
  %56 = getelementptr inbounds i8, ptr %1, i64 56
  %57 = load ptr, ptr %56, align 8, !tbaa !22
  br label %65

58:                                               ; preds = %.lr.ph309, %58
  %.1268308 = phi i64 [ %8, %.lr.ph309 ], [ %64, %58 ]
  %59 = load ptr, ptr %21, align 8, !tbaa !22
  %60 = getelementptr inbounds i8, ptr %59, i64 %.1268308
  %61 = load i8, ptr %60, align 1, !tbaa !23, !range !17, !noundef !18
  %62 = trunc nuw i8 %61 to i1
  %63 = xor i1 %62, true
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %63, ptr noundef nonnull @.str.194, ptr noundef %2)
  %64 = add nsw i64 %.1268308, 1
  %.not.not277 = icmp slt i64 %64, %20
  br i1 %.not.not277, label %58, label %.preheader298, !llvm.loop !28

65:                                               ; preds = %.lr.ph314, %65
  %.2313 = phi i64 [ %.0261.lcssa, %.lr.ph314 ], [ %spec.select289, %65 ]
  %.2269312 = phi i64 [ %20, %.lr.ph314 ], [ %69, %65 ]
  %66 = getelementptr inbounds i8, ptr %57, i64 %.2269312
  %67 = load i8, ptr %66, align 1, !tbaa !23, !range !17, !noundef !18
  %68 = zext nneg i8 %67 to i64
  %spec.select289 = add nsw i64 %.2313, %68
  %69 = add nsw i64 %.2269312, 1
  %.not.not278 = icmp slt i64 %69, %55
  br i1 %.not.not278, label %65, label %._crit_edge, !llvm.loop !29

._crit_edge:                                      ; preds = %65, %.preheader298
  %.2.lcssa = phi i64 [ %.0261.lcssa, %.preheader298 ], [ %spec.select289, %65 ]
  %70 = getelementptr inbounds i8, ptr %0, i64 608
  %71 = load i64, ptr %70, align 8, !tbaa !30
  %72 = add nsw i64 %71, %.2.lcssa
  %73 = load i64, ptr @_ZN11alglib_implL23sactivesets_maxbasisageE, align 8, !tbaa !31
  %74 = icmp sgt i64 %72, %73
  br i1 %74, label %75, label %76

75:                                               ; preds = %._crit_edge
  store i8 0, ptr %4, align 8, !tbaa !5
  br label %.loopexit297

76:                                               ; preds = %._crit_edge
  %77 = getelementptr inbounds i8, ptr %0, i64 368
  %78 = getelementptr inbounds i8, ptr %0, i64 528
  %79 = load i64, ptr %78, align 8, !tbaa !32
  %80 = add nsw i64 %79, %.2.lcssa
  %81 = add i64 %8, 1
  tail call void @_ZN11alglib_impl17rmatrixgrowrowstoEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %77, i64 noundef %80, i64 noundef %81, ptr noundef %2)
  %82 = getelementptr inbounds i8, ptr %0, i64 288
  %83 = load i64, ptr %78, align 8, !tbaa !32
  %84 = add nsw i64 %83, %.2.lcssa
  tail call void @_ZN11alglib_impl17rmatrixgrowrowstoEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %82, i64 noundef %84, i64 noundef %81, ptr noundef %2)
  %85 = getelementptr inbounds i8, ptr %0, i64 448
  %86 = load i64, ptr %78, align 8, !tbaa !32
  %87 = add nsw i64 %86, %.2.lcssa
  tail call void @_ZN11alglib_impl17rmatrixgrowrowstoEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %85, i64 noundef %87, i64 noundef %81, ptr noundef %2)
  %88 = getelementptr inbounds i8, ptr %0, i64 3064
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %88, i64 noundef %81, ptr noundef %2)
  %89 = getelementptr inbounds i8, ptr %0, i64 4152
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %89, i64 noundef %81, ptr noundef %2)
  %90 = getelementptr inbounds i8, ptr %0, i64 4216
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %90, i64 noundef %81, ptr noundef %2)
  %91 = getelementptr inbounds i8, ptr %0, i64 4280
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %91, i64 noundef %81, ptr noundef %2)
  %92 = getelementptr inbounds i8, ptr %0, i64 4024
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %92, i64 noundef %8, ptr noundef %2)
  %93 = getelementptr inbounds i8, ptr %0, i64 4088
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %93, i64 noundef %8, ptr noundef %2)
  %.not.not279362 = icmp sgt i64 %55, 0
  br i1 %.not.not279362, label %.lr.ph367, label %.loopexit297

.lr.ph367:                                        ; preds = %76
  %94 = getelementptr inbounds i8, ptr %1, i64 56
  %95 = getelementptr inbounds i8, ptr %0, i64 600
  %.not280317 = icmp slt i64 %8, 0
  %96 = getelementptr inbounds i8, ptr %0, i64 952
  %97 = getelementptr inbounds i8, ptr %0, i64 3120
  %98 = getelementptr inbounds i8, ptr %0, i64 72
  %99 = getelementptr inbounds i8, ptr %0, i64 208
  %100 = getelementptr inbounds i8, ptr %0, i64 592
  %101 = getelementptr inbounds i8, ptr %0, i64 4208
  %102 = getelementptr inbounds i8, ptr %0, i64 4272
  %103 = getelementptr inbounds i8, ptr %0, i64 4336
  %104 = getelementptr inbounds i8, ptr %0, i64 4080
  %105 = getelementptr inbounds i8, ptr %0, i64 144
  %106 = getelementptr inbounds i8, ptr %0, i64 4144
  %107 = getelementptr inbounds i8, ptr %0, i64 440
  %108 = getelementptr inbounds i8, ptr %0, i64 360
  %109 = getelementptr inbounds i8, ptr %0, i64 520
  %110 = add i64 %8, 1
  %111 = icmp eq i64 %8, 0
  %unroll_iter419 = and i64 %110, -2
  %112 = and i64 %8, 1
  %lcmp.mod418.not.not = icmp eq i64 %112, 0
  %xtraiter421 = and i64 %110, 3
  %113 = icmp ult i64 %8, 3
  %unroll_iter424 = and i64 %110, -4
  %lcmp.mod423.not = icmp eq i64 %xtraiter421, 0
  %xtraiter427 = and i64 %8, 3
  %114 = icmp ult i64 %8, 4
  %unroll_iter431 = and i64 %8, 9223372036854775804
  %lcmp.mod429.not = icmp eq i64 %xtraiter427, 0
  br label %115

115:                                              ; preds = %.lr.ph367, %378
  %.0262363 = phi i64 [ 0, %.lr.ph367 ], [ %379, %378 ]
  %116 = load ptr, ptr %94, align 8, !tbaa !22
  %117 = getelementptr inbounds i8, ptr %116, i64 %.0262363
  %118 = load i8, ptr %117, align 1, !tbaa !23, !range !17, !noundef !18
  %119 = trunc nuw i8 %118 to i1
  br i1 %119, label %120, label %378

120:                                              ; preds = %115
  %121 = load i64, ptr %95, align 8, !tbaa !33
  %122 = load i64, ptr %78, align 8, !tbaa !32
  %123 = add nsw i64 %122, %121
  %.not = icmp slt i64 %123, %8
  br i1 %.not, label %126, label %124

124:                                              ; preds = %120
  %125 = icmp eq i64 %123, %8
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %125, ptr noundef nonnull @.str.195, ptr noundef %2)
  br label %.loopexit297

126:                                              ; preds = %120
  %127 = icmp slt i64 %.0262363, %8
  br i1 %127, label %.preheader295, label %.preheader296

.preheader296:                                    ; preds = %126
  br i1 %.not280317, label %._crit_edge329, label %.lr.ph319

.lr.ph319:                                        ; preds = %.preheader296
  %128 = sub nsw i64 %.0262363, %8
  br i1 %111, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph319.new

.preheader295:                                    ; preds = %126
  br i1 %.not280317, label %._crit_edge323, label %.lr.ph322.preheader

.lr.ph322.preheader:                              ; preds = %.preheader295
  br i1 %113, label %._crit_edge323.loopexit.unr-lcssa, label %.lr.ph322

.lr.ph322:                                        ; preds = %.lr.ph322.preheader, %.lr.ph322
  %.0263321 = phi i64 [ %140, %.lr.ph322 ], [ 0, %.lr.ph322.preheader ]
  %niter425 = phi i64 [ %niter425.next.3, %.lr.ph322 ], [ 0, %.lr.ph322.preheader ]
  %129 = load ptr, ptr %97, align 8, !tbaa !22
  %130 = getelementptr inbounds double, ptr %129, i64 %.0263321
  store double 0.000000e+00, ptr %130, align 8, !tbaa !34
  %131 = or disjoint i64 %.0263321, 1
  %132 = load ptr, ptr %97, align 8, !tbaa !22
  %133 = getelementptr inbounds double, ptr %132, i64 %131
  store double 0.000000e+00, ptr %133, align 8, !tbaa !34
  %134 = or disjoint i64 %.0263321, 2
  %135 = load ptr, ptr %97, align 8, !tbaa !22
  %136 = getelementptr inbounds double, ptr %135, i64 %134
  store double 0.000000e+00, ptr %136, align 8, !tbaa !34
  %137 = or disjoint i64 %.0263321, 3
  %138 = load ptr, ptr %97, align 8, !tbaa !22
  %139 = getelementptr inbounds double, ptr %138, i64 %137
  store double 0.000000e+00, ptr %139, align 8, !tbaa !34
  %140 = add nuw i64 %.0263321, 4
  %niter425.next.3 = add i64 %niter425, 4
  %niter425.ncmp.3 = icmp eq i64 %niter425.next.3, %unroll_iter424
  br i1 %niter425.ncmp.3, label %._crit_edge323.loopexit.unr-lcssa, label %.lr.ph322, !llvm.loop !35

._crit_edge323.loopexit.unr-lcssa:                ; preds = %.lr.ph322, %.lr.ph322.preheader
  %.0263321.unr = phi i64 [ 0, %.lr.ph322.preheader ], [ %140, %.lr.ph322 ]
  br i1 %lcmp.mod423.not, label %._crit_edge323, label %.lr.ph322.epil

.lr.ph322.epil:                                   ; preds = %._crit_edge323.loopexit.unr-lcssa, %.lr.ph322.epil
  %.0263321.epil = phi i64 [ %143, %.lr.ph322.epil ], [ %.0263321.unr, %._crit_edge323.loopexit.unr-lcssa ]
  %epil.iter422 = phi i64 [ %epil.iter422.next, %.lr.ph322.epil ], [ 0, %._crit_edge323.loopexit.unr-lcssa ]
  %141 = load ptr, ptr %97, align 8, !tbaa !22
  %142 = getelementptr inbounds double, ptr %141, i64 %.0263321.epil
  store double 0.000000e+00, ptr %142, align 8, !tbaa !34
  %143 = add nuw i64 %.0263321.epil, 1
  %epil.iter422.next = add i64 %epil.iter422, 1
  %epil.iter422.cmp.not = icmp eq i64 %epil.iter422.next, %xtraiter421
  br i1 %epil.iter422.cmp.not, label %._crit_edge323, label %.lr.ph322.epil, !llvm.loop !36

._crit_edge323:                                   ; preds = %._crit_edge323.loopexit.unr-lcssa, %.lr.ph322.epil, %.preheader295
  %144 = load ptr, ptr %97, align 8, !tbaa !22
  %145 = getelementptr inbounds double, ptr %144, i64 %.0262363
  store double 1.000000e+00, ptr %145, align 8, !tbaa !34
  %146 = load ptr, ptr %98, align 8, !tbaa !22
  %147 = getelementptr inbounds double, ptr %146, i64 %.0262363
  %148 = load double, ptr %147, align 8, !tbaa !34
  %149 = load ptr, ptr %97, align 8, !tbaa !22
  %150 = getelementptr inbounds double, ptr %149, i64 %8
  store double %148, ptr %150, align 8, !tbaa !34
  br label %.loopexit

.lr.ph319.new:                                    ; preds = %.lr.ph319, %.lr.ph319.new
  %.1264318 = phi i64 [ %166, %.lr.ph319.new ], [ 0, %.lr.ph319 ]
  %niter420 = phi i64 [ %niter420.next.1, %.lr.ph319.new ], [ 0, %.lr.ph319 ]
  %151 = load ptr, ptr %96, align 8, !tbaa !22
  %152 = getelementptr inbounds ptr, ptr %151, i64 %128
  %153 = load ptr, ptr %152, align 8, !tbaa !37
  %154 = getelementptr inbounds double, ptr %153, i64 %.1264318
  %155 = load double, ptr %154, align 8, !tbaa !34
  %156 = load ptr, ptr %97, align 8, !tbaa !22
  %157 = getelementptr inbounds double, ptr %156, i64 %.1264318
  store double %155, ptr %157, align 8, !tbaa !34
  %158 = or disjoint i64 %.1264318, 1
  %159 = load ptr, ptr %96, align 8, !tbaa !22
  %160 = getelementptr inbounds ptr, ptr %159, i64 %128
  %161 = load ptr, ptr %160, align 8, !tbaa !37
  %162 = getelementptr inbounds double, ptr %161, i64 %158
  %163 = load double, ptr %162, align 8, !tbaa !34
  %164 = load ptr, ptr %97, align 8, !tbaa !22
  %165 = getelementptr inbounds double, ptr %164, i64 %158
  store double %163, ptr %165, align 8, !tbaa !34
  %166 = add nuw i64 %.1264318, 2
  %niter420.next.1 = add i64 %niter420, 2
  %niter420.ncmp.1 = icmp eq i64 %niter420.next.1, %unroll_iter419
  br i1 %niter420.ncmp.1, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph319.new, !llvm.loop !38

.loopexit.loopexit.unr-lcssa:                     ; preds = %.lr.ph319.new, %.lr.ph319
  %.1264318.unr = phi i64 [ 0, %.lr.ph319 ], [ %166, %.lr.ph319.new ]
  br i1 %lcmp.mod418.not.not, label %.loopexit.loopexit.epilog-lcssa, label %.loopexit

.loopexit.loopexit.epilog-lcssa:                  ; preds = %.loopexit.loopexit.unr-lcssa
  %167 = load ptr, ptr %96, align 8, !tbaa !22
  %168 = getelementptr inbounds ptr, ptr %167, i64 %128
  %169 = load ptr, ptr %168, align 8, !tbaa !37
  %170 = getelementptr inbounds double, ptr %169, i64 %.1264318.unr
  %171 = load double, ptr %170, align 8, !tbaa !34
  %172 = load ptr, ptr %97, align 8, !tbaa !22
  %173 = getelementptr inbounds double, ptr %172, i64 %.1264318.unr
  store double %171, ptr %173, align 8, !tbaa !34
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit.epilog-lcssa, %.loopexit.loopexit.unr-lcssa, %._crit_edge323
  br i1 %.not.not304, label %.lr.ph328, label %._crit_edge329

.lr.ph328:                                        ; preds = %.loopexit
  %174 = load ptr, ptr %97, align 8, !tbaa !22
  %175 = load ptr, ptr %99, align 8, !tbaa !22
  br i1 %114, label %._crit_edge329.loopexit.unr-lcssa, label %.lr.ph328.new

.lr.ph328.new:                                    ; preds = %.lr.ph328, %.lr.ph328.new
  %.0257326 = phi double [ %206, %.lr.ph328.new ], [ 0.000000e+00, %.lr.ph328 ]
  %.2265325 = phi i64 [ %207, %.lr.ph328.new ], [ 0, %.lr.ph328 ]
  %niter432 = phi i64 [ %niter432.next.3, %.lr.ph328.new ], [ 0, %.lr.ph328 ]
  %176 = getelementptr inbounds double, ptr %174, i64 %.2265325
  %177 = load double, ptr %176, align 8, !tbaa !34
  %178 = fmul double %177, %177
  %179 = getelementptr inbounds double, ptr %175, i64 %.2265325
  %180 = load double, ptr %179, align 8, !tbaa !34
  %181 = fdiv double %178, %180
  %182 = fadd double %.0257326, %181
  %183 = or disjoint i64 %.2265325, 1
  %184 = getelementptr inbounds double, ptr %174, i64 %183
  %185 = load double, ptr %184, align 8, !tbaa !34
  %186 = fmul double %185, %185
  %187 = getelementptr inbounds double, ptr %175, i64 %183
  %188 = load double, ptr %187, align 8, !tbaa !34
  %189 = fdiv double %186, %188
  %190 = fadd double %182, %189
  %191 = or disjoint i64 %.2265325, 2
  %192 = getelementptr inbounds double, ptr %174, i64 %191
  %193 = load double, ptr %192, align 8, !tbaa !34
  %194 = fmul double %193, %193
  %195 = getelementptr inbounds double, ptr %175, i64 %191
  %196 = load double, ptr %195, align 8, !tbaa !34
  %197 = fdiv double %194, %196
  %198 = fadd double %190, %197
  %199 = or disjoint i64 %.2265325, 3
  %200 = getelementptr inbounds double, ptr %174, i64 %199
  %201 = load double, ptr %200, align 8, !tbaa !34
  %202 = fmul double %201, %201
  %203 = getelementptr inbounds double, ptr %175, i64 %199
  %204 = load double, ptr %203, align 8, !tbaa !34
  %205 = fdiv double %202, %204
  %206 = fadd double %198, %205
  %207 = add nuw nsw i64 %.2265325, 4
  %niter432.next.3 = add i64 %niter432, 4
  %niter432.ncmp.3 = icmp eq i64 %niter432.next.3, %unroll_iter431
  br i1 %niter432.ncmp.3, label %._crit_edge329.loopexit.unr-lcssa, label %.lr.ph328.new, !llvm.loop !39

._crit_edge329.loopexit.unr-lcssa:                ; preds = %.lr.ph328.new, %.lr.ph328
  %.lcssa.ph = phi double [ poison, %.lr.ph328 ], [ %206, %.lr.ph328.new ]
  %.0257326.unr = phi double [ 0.000000e+00, %.lr.ph328 ], [ %206, %.lr.ph328.new ]
  %.2265325.unr = phi i64 [ 0, %.lr.ph328 ], [ %207, %.lr.ph328.new ]
  br i1 %lcmp.mod429.not, label %._crit_edge329, label %.epil.preheader426

.epil.preheader426:                               ; preds = %._crit_edge329.loopexit.unr-lcssa, %.epil.preheader426
  %.0257326.epil = phi double [ %214, %.epil.preheader426 ], [ %.0257326.unr, %._crit_edge329.loopexit.unr-lcssa ]
  %.2265325.epil = phi i64 [ %215, %.epil.preheader426 ], [ %.2265325.unr, %._crit_edge329.loopexit.unr-lcssa ]
  %epil.iter428 = phi i64 [ %epil.iter428.next, %.epil.preheader426 ], [ 0, %._crit_edge329.loopexit.unr-lcssa ]
  %208 = getelementptr inbounds double, ptr %174, i64 %.2265325.epil
  %209 = load double, ptr %208, align 8, !tbaa !34
  %210 = fmul double %209, %209
  %211 = getelementptr inbounds double, ptr %175, i64 %.2265325.epil
  %212 = load double, ptr %211, align 8, !tbaa !34
  %213 = fdiv double %210, %212
  %214 = fadd double %.0257326.epil, %213
  %215 = add nuw nsw i64 %.2265325.epil, 1
  %epil.iter428.next = add i64 %epil.iter428, 1
  %epil.iter428.cmp.not = icmp eq i64 %epil.iter428.next, %xtraiter427
  br i1 %epil.iter428.cmp.not, label %._crit_edge329, label %.epil.preheader426, !llvm.loop !40

._crit_edge329:                                   ; preds = %._crit_edge329.loopexit.unr-lcssa, %.epil.preheader426, %.preheader296, %.loopexit
  %.0257.lcssa = phi double [ 0.000000e+00, %.loopexit ], [ 0.000000e+00, %.preheader296 ], [ %.lcssa.ph, %._crit_edge329.loopexit.unr-lcssa ], [ %214, %.epil.preheader426 ]
  %216 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.0257.lcssa, ptr noundef %2)
  %217 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %216, double noundef 0.000000e+00)
  br i1 %217, label %219, label %.preheader294

.preheader294:                                    ; preds = %._crit_edge329
  %218 = load i64, ptr %95, align 8, !tbaa !33
  %.not283.not331 = icmp sgt i64 %218, 0
  br i1 %.not283.not331, label %.lr.ph333, label %.preheader293

219:                                              ; preds = %._crit_edge329
  store i8 0, ptr %4, align 8, !tbaa !5
  br label %.loopexit297

.preheader293:                                    ; preds = %.lr.ph333, %.preheader294
  br i1 %.not280317, label %.preheader291, label %.lr.ph336

.lr.ph333:                                        ; preds = %.preheader294, %.lr.ph333
  %.3270332 = phi i64 [ %235, %.lr.ph333 ], [ 0, %.preheader294 ]
  %220 = load ptr, ptr %100, align 8, !tbaa !22
  %221 = getelementptr inbounds i64, ptr %220, i64 %.3270332
  %222 = load i64, ptr %221, align 8, !tbaa !31
  %223 = load ptr, ptr %97, align 8, !tbaa !22
  %224 = getelementptr inbounds double, ptr %223, i64 %8
  %225 = load double, ptr %224, align 8, !tbaa !34
  %226 = getelementptr inbounds double, ptr %223, i64 %222
  %227 = load double, ptr %226, align 8, !tbaa !34
  %228 = load ptr, ptr %98, align 8, !tbaa !22
  %229 = getelementptr inbounds double, ptr %228, i64 %222
  %230 = load double, ptr %229, align 8, !tbaa !34
  %231 = fneg double %227
  %232 = tail call double @llvm.fmuladd.f64(double %231, double %230, double %225)
  store double %232, ptr %224, align 8, !tbaa !34
  %233 = load ptr, ptr %97, align 8, !tbaa !22
  %234 = getelementptr inbounds double, ptr %233, i64 %222
  store double 0.000000e+00, ptr %234, align 8, !tbaa !34
  %235 = add nuw nsw i64 %.3270332, 1
  %exitcond380.not = icmp eq i64 %235, %218
  br i1 %exitcond380.not, label %.preheader293, label %.lr.ph333, !llvm.loop !41

.preheader292:                                    ; preds = %.lr.ph336
  br i1 %.not.not304, label %.lr.ph339, label %.preheader291

.lr.ph336:                                        ; preds = %.preheader293, %.lr.ph336
  %.3266335 = phi i64 [ %251, %.lr.ph336 ], [ 0, %.preheader293 ]
  %236 = load ptr, ptr %97, align 8, !tbaa !22
  %237 = getelementptr inbounds double, ptr %236, i64 %.3266335
  %238 = load double, ptr %237, align 8, !tbaa !34
  %239 = load ptr, ptr %101, align 8, !tbaa !22
  %240 = getelementptr inbounds double, ptr %239, i64 %.3266335
  store double %238, ptr %240, align 8, !tbaa !34
  %241 = load ptr, ptr %97, align 8, !tbaa !22
  %242 = getelementptr inbounds double, ptr %241, i64 %.3266335
  %243 = load double, ptr %242, align 8, !tbaa !34
  %244 = load ptr, ptr %102, align 8, !tbaa !22
  %245 = getelementptr inbounds double, ptr %244, i64 %.3266335
  store double %243, ptr %245, align 8, !tbaa !34
  %246 = load ptr, ptr %97, align 8, !tbaa !22
  %247 = getelementptr inbounds double, ptr %246, i64 %.3266335
  %248 = load double, ptr %247, align 8, !tbaa !34
  %249 = load ptr, ptr %103, align 8, !tbaa !22
  %250 = getelementptr inbounds double, ptr %249, i64 %.3266335
  store double %248, ptr %250, align 8, !tbaa !34
  %251 = add nuw i64 %.3266335, 1
  %exitcond381.not = icmp eq i64 %.3266335, %8
  br i1 %exitcond381.not, label %.preheader292, label %.lr.ph336, !llvm.loop !42

.preheader291:                                    ; preds = %.lr.ph339, %.preheader293, %.preheader292
  %252 = load i64, ptr %78, align 8, !tbaa !32
  %.not286.not350 = icmp sgt i64 %252, 0
  br i1 %.not286.not350, label %.preheader, label %.preheader290

.lr.ph339:                                        ; preds = %.preheader292, %.lr.ph339
  %.4338 = phi i64 [ %265, %.lr.ph339 ], [ 0, %.preheader292 ]
  %253 = load ptr, ptr %99, align 8, !tbaa !22
  %254 = getelementptr inbounds double, ptr %253, i64 %.4338
  %255 = load double, ptr %254, align 8, !tbaa !34
  %256 = fdiv double 1.000000e+00, %255
  %257 = load ptr, ptr %104, align 8, !tbaa !22
  %258 = getelementptr inbounds double, ptr %257, i64 %.4338
  store double %256, ptr %258, align 8, !tbaa !34
  %259 = load ptr, ptr %105, align 8, !tbaa !22
  %260 = getelementptr inbounds double, ptr %259, i64 %.4338
  %261 = load double, ptr %260, align 8, !tbaa !34
  %262 = tail call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %261, ptr noundef %2)
  %263 = load ptr, ptr %106, align 8, !tbaa !22
  %264 = getelementptr inbounds double, ptr %263, i64 %.4338
  store double %262, ptr %264, align 8, !tbaa !34
  %265 = add nuw nsw i64 %.4338, 1
  %exitcond382.not = icmp eq i64 %265, %8
  br i1 %exitcond382.not, label %.preheader291, label %.lr.ph339, !llvm.loop !43

.preheader290:                                    ; preds = %._crit_edge346, %.preheader291
  br i1 %.not.not304, label %.lr.ph357, label %._crit_edge358

.preheader:                                       ; preds = %.preheader291, %._crit_edge346
  %.4271351 = phi i64 [ %320, %._crit_edge346 ], [ 0, %.preheader291 ]
  %.pre = load ptr, ptr %101, align 8, !tbaa !22
  %.pre386 = load ptr, ptr %107, align 8, !tbaa !22
  %266 = getelementptr inbounds ptr, ptr %.pre386, i64 %.4271351
  %267 = load ptr, ptr %266, align 8, !tbaa !37
  br i1 %.not.not304, label %.lr.ph345, label %._crit_edge346

.lr.ph345:                                        ; preds = %.preheader
  %268 = load ptr, ptr %104, align 8, !tbaa !22
  %269 = load ptr, ptr %108, align 8, !tbaa !22
  %270 = getelementptr inbounds ptr, ptr %269, i64 %.4271351
  %271 = load ptr, ptr %270, align 8, !tbaa !37
  %272 = load ptr, ptr %102, align 8, !tbaa !22
  %273 = load ptr, ptr %106, align 8, !tbaa !22
  %274 = load ptr, ptr %109, align 8, !tbaa !22
  %275 = getelementptr inbounds ptr, ptr %274, i64 %.4271351
  %276 = load ptr, ptr %275, align 8, !tbaa !37
  %277 = load ptr, ptr %103, align 8, !tbaa !22
  br label %278

278:                                              ; preds = %.lr.ph345, %278
  %.0258344 = phi double [ 0.000000e+00, %.lr.ph345 ], [ %304, %278 ]
  %.5341 = phi i64 [ 0, %.lr.ph345 ], [ %305, %278 ]
  %279 = phi <2 x double> [ zeroinitializer, %.lr.ph345 ], [ %299, %278 ]
  %280 = getelementptr inbounds double, ptr %267, i64 %.5341
  %281 = load double, ptr %280, align 8, !tbaa !34
  %282 = getelementptr inbounds double, ptr %.pre, i64 %.5341
  %283 = load double, ptr %282, align 8, !tbaa !34
  %284 = getelementptr inbounds double, ptr %268, i64 %.5341
  %285 = load double, ptr %284, align 8, !tbaa !34
  %286 = getelementptr inbounds double, ptr %271, i64 %.5341
  %287 = load double, ptr %286, align 8, !tbaa !34
  %288 = getelementptr inbounds double, ptr %272, i64 %.5341
  %289 = load double, ptr %288, align 8, !tbaa !34
  %290 = insertelement <2 x double> poison, double %281, i64 0
  %291 = insertelement <2 x double> %290, double %287, i64 1
  %292 = insertelement <2 x double> poison, double %283, i64 0
  %293 = insertelement <2 x double> %292, double %289, i64 1
  %294 = fmul <2 x double> %291, %293
  %295 = getelementptr inbounds double, ptr %273, i64 %.5341
  %296 = load double, ptr %295, align 8, !tbaa !34
  %297 = insertelement <2 x double> poison, double %285, i64 0
  %298 = insertelement <2 x double> %297, double %296, i64 1
  %299 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %294, <2 x double> %298, <2 x double> %279)
  %300 = getelementptr inbounds double, ptr %276, i64 %.5341
  %301 = load double, ptr %300, align 8, !tbaa !34
  %302 = getelementptr inbounds double, ptr %277, i64 %.5341
  %303 = load double, ptr %302, align 8, !tbaa !34
  %304 = tail call double @llvm.fmuladd.f64(double %301, double %303, double %.0258344)
  %305 = add nuw nsw i64 %.5341, 1
  %exitcond383.not = icmp eq i64 %305, %8
  br i1 %exitcond383.not, label %._crit_edge346, label %278, !llvm.loop !44

._crit_edge346:                                   ; preds = %278, %.preheader
  %.0258.lcssa = phi double [ 0.000000e+00, %.preheader ], [ %304, %278 ]
  %306 = phi <2 x double> [ zeroinitializer, %.preheader ], [ %299, %278 ]
  %307 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %8)
  %308 = extractelement <2 x double> %306, i64 0
  tail call void @_ZN11alglib_impl9ae_v_subdEPdlPKdlld(ptr noundef %.pre, i64 noundef 1, ptr noundef %267, i64 noundef 1, i64 noundef %307, double noundef %308)
  %309 = load ptr, ptr %102, align 8, !tbaa !22
  %310 = load ptr, ptr %108, align 8, !tbaa !22
  %311 = getelementptr inbounds ptr, ptr %310, i64 %.4271351
  %312 = load ptr, ptr %311, align 8, !tbaa !37
  %313 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %8)
  %314 = extractelement <2 x double> %306, i64 1
  tail call void @_ZN11alglib_impl9ae_v_subdEPdlPKdlld(ptr noundef %309, i64 noundef 1, ptr noundef %312, i64 noundef 1, i64 noundef %313, double noundef %314)
  %315 = load ptr, ptr %103, align 8, !tbaa !22
  %316 = load ptr, ptr %109, align 8, !tbaa !22
  %317 = getelementptr inbounds ptr, ptr %316, i64 %.4271351
  %318 = load ptr, ptr %317, align 8, !tbaa !37
  %319 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %8)
  tail call void @_ZN11alglib_impl9ae_v_subdEPdlPKdlld(ptr noundef %315, i64 noundef 1, ptr noundef %318, i64 noundef 1, i64 noundef %319, double noundef %.0258.lcssa)
  %320 = add nuw nsw i64 %.4271351, 1
  %321 = load i64, ptr %78, align 8, !tbaa !32
  %.not286.not = icmp slt i64 %320, %321
  br i1 %.not286.not, label %.preheader, label %.preheader290, !llvm.loop !45

.lr.ph357:                                        ; preds = %.preheader290, %.lr.ph357
  %.0356 = phi double [ %344, %.lr.ph357 ], [ 0.000000e+00, %.preheader290 ]
  %.0255355 = phi double [ %339, %.lr.ph357 ], [ 0.000000e+00, %.preheader290 ]
  %.0256354 = phi double [ %330, %.lr.ph357 ], [ 0.000000e+00, %.preheader290 ]
  %.6353 = phi i64 [ %345, %.lr.ph357 ], [ 0, %.preheader290 ]
  %322 = load ptr, ptr %101, align 8, !tbaa !22
  %323 = getelementptr inbounds double, ptr %322, i64 %.6353
  %324 = load double, ptr %323, align 8, !tbaa !34
  %325 = tail call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %324, ptr noundef %2)
  %326 = load ptr, ptr %99, align 8, !tbaa !22
  %327 = getelementptr inbounds double, ptr %326, i64 %.6353
  %328 = load double, ptr %327, align 8, !tbaa !34
  %329 = fdiv double %325, %328
  %330 = fadd double %.0256354, %329
  %331 = load ptr, ptr %102, align 8, !tbaa !22
  %332 = getelementptr inbounds double, ptr %331, i64 %.6353
  %333 = load double, ptr %332, align 8, !tbaa !34
  %334 = tail call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %333, ptr noundef %2)
  %335 = load ptr, ptr %105, align 8, !tbaa !22
  %336 = getelementptr inbounds double, ptr %335, i64 %.6353
  %337 = load double, ptr %336, align 8, !tbaa !34
  %338 = tail call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %337, ptr noundef %2)
  %339 = tail call double @llvm.fmuladd.f64(double %334, double %338, double %.0255355)
  %340 = load ptr, ptr %103, align 8, !tbaa !22
  %341 = getelementptr inbounds double, ptr %340, i64 %.6353
  %342 = load double, ptr %341, align 8, !tbaa !34
  %343 = tail call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %342, ptr noundef %2)
  %344 = fadd double %.0356, %343
  %345 = add nuw nsw i64 %.6353, 1
  %exitcond384.not = icmp eq i64 %345, %8
  br i1 %exitcond384.not, label %._crit_edge358, label %.lr.ph357, !llvm.loop !46

._crit_edge358:                                   ; preds = %.lr.ph357, %.preheader290
  %.0256.lcssa = phi double [ 0.000000e+00, %.preheader290 ], [ %330, %.lr.ph357 ]
  %.0255.lcssa = phi double [ 0.000000e+00, %.preheader290 ], [ %339, %.lr.ph357 ]
  %.0.lcssa = phi double [ 0.000000e+00, %.preheader290 ], [ %344, %.lr.ph357 ]
  %346 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.0256.lcssa, ptr noundef %2)
  %347 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.0255.lcssa, ptr noundef %2)
  %348 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.0.lcssa, ptr noundef %2)
  %349 = load double, ptr @_ZN11alglib_implL25sactivesets_maxbasisdecayE, align 8, !tbaa !34
  %350 = fmul double %216, %349
  %351 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %346, double noundef %350)
  br i1 %351, label %352, label %353

352:                                              ; preds = %._crit_edge358
  store i8 0, ptr %4, align 8, !tbaa !5
  br label %.loopexit297

353:                                              ; preds = %._crit_edge358
  %354 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %346, double noundef 0.000000e+00)
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %354, ptr noundef nonnull @.str.196, ptr noundef %2)
  %355 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %347, double noundef 0.000000e+00)
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %355, ptr noundef nonnull @.str.197, ptr noundef %2)
  %356 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %348, double noundef 0.000000e+00)
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %356, ptr noundef nonnull @.str.198, ptr noundef %2)
  %357 = fdiv double 1.000000e+00, %346
  %358 = load ptr, ptr %107, align 8, !tbaa !22
  %359 = load i64, ptr %78, align 8, !tbaa !32
  %360 = getelementptr inbounds ptr, ptr %358, i64 %359
  %361 = load ptr, ptr %360, align 8, !tbaa !37
  %362 = load ptr, ptr %101, align 8, !tbaa !22
  %363 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %8)
  tail call void @_ZN11alglib_impl10ae_v_movedEPdlPKdlld(ptr noundef %361, i64 noundef 1, ptr noundef %362, i64 noundef 1, i64 noundef %363, double noundef %357)
  %364 = fdiv double 1.000000e+00, %347
  %365 = load ptr, ptr %108, align 8, !tbaa !22
  %366 = load i64, ptr %78, align 8, !tbaa !32
  %367 = getelementptr inbounds ptr, ptr %365, i64 %366
  %368 = load ptr, ptr %367, align 8, !tbaa !37
  %369 = load ptr, ptr %102, align 8, !tbaa !22
  %370 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %8)
  tail call void @_ZN11alglib_impl10ae_v_movedEPdlPKdlld(ptr noundef %368, i64 noundef 1, ptr noundef %369, i64 noundef 1, i64 noundef %370, double noundef %364)
  %371 = fdiv double 1.000000e+00, %348
  %372 = load ptr, ptr %109, align 8, !tbaa !22
  %373 = load i64, ptr %78, align 8, !tbaa !32
  %374 = getelementptr inbounds ptr, ptr %372, i64 %373
  %375 = load ptr, ptr %374, align 8, !tbaa !37
  %376 = load ptr, ptr %103, align 8, !tbaa !22
  %377 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %8)
  tail call void @_ZN11alglib_impl10ae_v_movedEPdlPKdlld(ptr noundef %375, i64 noundef 1, ptr noundef %376, i64 noundef 1, i64 noundef %377, double noundef %371)
  tail call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %78, ptr noundef %2)
  tail call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %70, ptr noundef %2)
  br label %378

378:                                              ; preds = %115, %353
  %379 = add nuw nsw i64 %.0262363, 1
  %exitcond385.not = icmp eq i64 %379, %55
  br i1 %exitcond385.not, label %.loopexit297, label %115, !llvm.loop !47

.loopexit297:                                     ; preds = %378, %76, %124, %3, %352, %219, %75
  ret void
}

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #3

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

!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, !11, i64 280}
!6 = !{!"_ZTSN11alglib_impl10sactivesetE", !7, i64 0, !7, i64 8, !10, i64 16, !11, i64 80, !10, i64 88, !10, i64 152, !10, i64 216, !11, i64 280, !14, i64 288, !14, i64 368, !14, i64 448, !7, i64 528, !10, i64 536, !7, i64 600, !7, i64 608, !11, i64 616, !11, i64 617, !10, i64 624, !10, i64 688, !10, i64 752, !10, i64 816, !14, i64 880, !7, i64 960, !7, i64 968, !10, i64 976, !10, i64 1040, !10, i64 1104, !10, i64 1168, !10, i64 1232, !10, i64 1296, !15, i64 1360, !10, i64 3000, !10, i64 3064, !10, i64 3128, !14, i64 3192, !10, i64 3272, !10, i64 3336, !10, i64 3400, !14, i64 3464, !14, i64 3544, !10, i64 3624, !10, i64 3688, !10, i64 3752, !14, i64 3816, !10, i64 3896, !10, i64 3960, !10, i64 4024, !10, i64 4088, !10, i64 4152, !10, i64 4216, !10, i64 4280}
!7 = !{!"long", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTSN11alglib_impl9ae_vectorE", !7, i64 0, !7, i64 8, !11, i64 16, !12, i64 24, !8, i64 56}
!11 = !{!"bool", !8, i64 0}
!12 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24}
!13 = !{!"any pointer", !8, i64 0}
!14 = !{!"_ZTSN11alglib_impl9ae_matrixE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !11, i64 32, !12, i64 40, !8, i64 72}
!15 = !{!"_ZTSN11alglib_impl11snnlssolverE", !7, i64 0, !7, i64 8, !7, i64 16, !14, i64 24, !10, i64 104, !10, i64 168, !16, i64 232, !7, i64 240, !10, i64 248, !10, i64 312, !14, i64 376, !14, i64 456, !14, i64 536, !10, i64 616, !10, i64 680, !10, i64 744, !10, i64 808, !10, i64 872, !10, i64 936, !10, i64 1000, !10, i64 1064, !10, i64 1128, !10, i64 1192, !10, i64 1256, !10, i64 1320, !10, i64 1384, !10, i64 1448, !10, i64 1512, !10, i64 1576}
!16 = !{!"double", !8, i64 0}
!17 = !{i8 0, i8 2}
!18 = !{}
!19 = !{!6, !7, i64 0}
!20 = !{!6, !7, i64 960}
!21 = !{!6, !7, i64 968}
!22 = !{!8, !8, i64 0}
!23 = !{!11, !11, i64 0}
!24 = distinct !{!24, !25}
!25 = !{!"llvm.loop.unroll.disable"}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.mustprogress"}
!28 = distinct !{!28, !27}
!29 = distinct !{!29, !27}
!30 = !{!6, !7, i64 608}
!31 = !{!7, !7, i64 0}
!32 = !{!6, !7, i64 528}
!33 = !{!6, !7, i64 600}
!34 = !{!16, !16, i64 0}
!35 = distinct !{!35, !27}
!36 = distinct !{!36, !25}
!37 = !{!13, !13, i64 0}
!38 = distinct !{!38, !27}
!39 = distinct !{!39, !27}
!40 = distinct !{!40, !25}
!41 = distinct !{!41, !27}
!42 = distinct !{!42, !27}
!43 = distinct !{!43, !27}
!44 = distinct !{!44, !27}
!45 = distinct !{!45, !27}
!46 = distinct !{!46, !27}
!47 = distinct !{!47, !27}


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