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

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

%"struct.alglib_impl::ae_frame" = type { %"struct.alglib_impl::ae_dyn_block" }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%"struct.alglib_impl::ae_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.1 }
%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 }
%"struct.alglib_impl::kdtree" = type { i64, i64, i64, i64, %"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::kdtreerequestbuffer", i64 }
%"struct.alglib_impl::kdtreerequestbuffer" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, double, i8, double, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double }
%"struct.alglib_impl::linlsqrstate" = type { %"struct.alglib_impl::normestimatorstate", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, double, double, double, double, double, double, double, double, double, double, double, double, double, %"struct.alglib_impl::ae_vector", double, double, double, double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, double, double, i64, i8, i8, i8, i8, i8, i8, i8, i64, i64, i64, i8, i8, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::rcommstate" }
%"struct.alglib_impl::normestimatorstate" = type { i64, i64, i64, i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::hqrndstate", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i8, i8, double, %"struct.alglib_impl::rcommstate" }
%"struct.alglib_impl::hqrndstate" = type { i64, i64, i64 }
%"struct.alglib_impl::rcommstate" = type { i32, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::linlsqrreport" = type { i64, i64, i64 }
%"struct.alglib_impl::sparsematrix" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64, i64, i64, i64 }
%"struct.alglib_impl::rbfv2calcbuffer" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::rbfv2model" = type { i64, i64, i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", double, i64, double, i64, %"struct.alglib_impl::rbfv2calcbuffer" }
%"struct.alglib_impl::rbfv2report" = type { i64, double, double }

@.str.149 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZN11alglib_implL19rbfv2_defaultmaxitsE = external hidden global i64, align 8
@.str.664 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.665 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.666 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.667 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.668 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.669 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.670 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.671 = external hidden unnamed_addr constant [42 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 nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1

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

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

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

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

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

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

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

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

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

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

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

declare noundef i64 @_ZN11alglib_impl14kdtreequeryrnnEPNS_6kdtreeEPNS_9ae_vectorEdbPNS_8ae_stateE(ptr noundef, ptr noundef, double noundef, i1 noundef zeroext, ptr noundef) #2

declare void @_ZN11alglib_impl22kdtreequeryresultstagsEPNS_6kdtreeEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) #2

declare void @_ZN11alglib_impl27kdtreequeryresultsdistancesEPNS_6kdtreeEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) #2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl22rbfv2buildhierarchicalEPNS_9ae_matrixES1_lPNS_9ae_vectorEllddPNS_10rbfv2modelEPlPbPNS_11rbfv2reportEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1, i64 noundef %2, ptr noundef %3, i64 noundef %4, i64 noundef %5, double noundef %6, double noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12) #4 {
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca i64, align 8
  %17 = alloca ptr, align 8
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca %"struct.alglib_impl::ae_frame", align 8
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %32 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %33 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %34 = alloca i64, align 8
  %35 = alloca %"struct.alglib_impl::ae_vector", align 8
  %36 = alloca %"struct.alglib_impl::ae_vector", align 8
  %37 = alloca %"struct.alglib_impl::ae_vector", align 8
  %38 = alloca %"struct.alglib_impl::ae_vector", align 8
  %39 = alloca %"struct.alglib_impl::ae_vector", align 8
  %40 = alloca %"struct.alglib_impl::ae_vector", align 8
  %41 = alloca %"struct.alglib_impl::ae_vector", align 8
  %42 = alloca %"struct.alglib_impl::ae_vector", align 8
  %43 = alloca %"struct.alglib_impl::ae_vector", align 8
  %44 = alloca %"struct.alglib_impl::ae_vector", align 8
  %45 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %46 = alloca i64, align 8
  %47 = alloca i64, align 8
  %48 = alloca %"struct.alglib_impl::kdtree", align 8
  %49 = alloca %"struct.alglib_impl::kdtree", align 8
  %50 = alloca %"struct.alglib_impl::ae_vector", align 8
  %51 = alloca %"struct.alglib_impl::ae_vector", align 8
  %52 = alloca %"struct.alglib_impl::ae_vector", align 8
  %53 = alloca %"struct.alglib_impl::ae_vector", align 8
  %54 = alloca %"struct.alglib_impl::ae_vector", align 8
  %55 = alloca %"struct.alglib_impl::ae_vector", align 8
  %56 = alloca %"struct.alglib_impl::ae_vector", align 8
  %57 = alloca %"struct.alglib_impl::ae_vector", align 8
  %58 = alloca %"struct.alglib_impl::ae_vector", align 8
  %59 = alloca i64, align 8
  %60 = alloca i64, align 8
  %61 = alloca i64, align 8
  %62 = alloca i64, align 8
  %63 = alloca i64, align 8
  %64 = alloca i64, align 8
  %65 = alloca i64, align 8
  %66 = alloca double, align 8
  %67 = alloca double, align 8
  %68 = alloca i64, align 8
  %69 = alloca double, align 8
  %70 = alloca %"struct.alglib_impl::ae_vector", align 8
  %71 = alloca double, align 8
  %72 = alloca double, align 8
  %73 = alloca i64, align 8
  %74 = alloca %"struct.alglib_impl::linlsqrstate", align 8
  %75 = alloca %"struct.alglib_impl::linlsqrreport", align 8
  %76 = alloca %"struct.alglib_impl::sparsematrix", align 8
  %77 = alloca %"struct.alglib_impl::ae_vector", align 8
  %78 = alloca %"struct.alglib_impl::ae_vector", align 8
  %79 = alloca %"struct.alglib_impl::rbfv2calcbuffer", align 8
  %80 = alloca %"struct.alglib_impl::ae_vector", align 8
  %81 = alloca %"struct.alglib_impl::ae_vector", align 8
  %82 = alloca %"struct.alglib_impl::ae_vector", align 8
  %83 = alloca %"struct.alglib_impl::ae_vector", align 8
  %84 = alloca double, align 8
  %85 = alloca i32, align 4
  store ptr %0, ptr %14, align 8, !tbaa !5
  store ptr %1, ptr %15, align 8, !tbaa !5
  store i64 %2, ptr %16, align 8, !tbaa !9
  store ptr %3, ptr %17, align 8, !tbaa !5
  store i64 %4, ptr %18, align 8, !tbaa !9
  store i64 %5, ptr %19, align 8, !tbaa !9
  store double %6, ptr %20, align 8, !tbaa !11
  store double %7, ptr %21, align 8, !tbaa !11
  store ptr %8, ptr %22, align 8, !tbaa !5
  store ptr %9, ptr %23, align 8, !tbaa !5
  store ptr %10, ptr %24, align 8, !tbaa !5
  store ptr %11, ptr %25, align 8, !tbaa !5
  store ptr %12, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr %31) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr %32) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr %33) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %35) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %36) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %37) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %38) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %39) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %40) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %41) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %42) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %43) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %44) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr %45) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #6
  call void @llvm.lifetime.start.p0(i64 1000, ptr %48) #6
  call void @llvm.lifetime.start.p0(i64 1000, ptr %49) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %50) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %51) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %52) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %53) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %54) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %55) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %56) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %57) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %58) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %70) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #6
  call void @llvm.lifetime.start.p0(i64 2192, ptr %74) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %75) #6
  call void @llvm.lifetime.start.p0(i64 368, ptr %76) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %77) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %78) #6
  call void @llvm.lifetime.start.p0(i64 328, ptr %79) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %80) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %81) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %82) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %83) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #6
  %86 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %86, ptr noundef %27)
  call void @llvm.memset.p0.i64(ptr align 8 %31, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %32, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %33, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %35, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %36, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %37, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %38, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %39, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %40, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %41, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %42, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %43, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %44, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %45, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %48, i8 0, i64 1000, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %49, i8 0, i64 1000, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %50, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %51, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %52, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %53, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %54, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %55, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %56, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %57, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %58, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %70, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %74, i8 0, i64 2192, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %75, i8 0, i64 24, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %76, i8 0, i64 368, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %77, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %78, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %79, i8 0, i64 328, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %80, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %81, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %82, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %83, i8 0, i64 64, i1 false)
  %87 = load ptr, ptr %25, align 8, !tbaa !5
  call void @_ZN11alglib_impl18_rbfv2report_clearEPv(ptr noundef %87)
  %88 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %31, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %88, i1 noundef zeroext true)
  %89 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %32, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %89, i1 noundef zeroext true)
  %90 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %33, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %90, i1 noundef zeroext true)
  %91 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %35, i64 noundef 0, i64 noundef 2, ptr noundef %91, i1 noundef zeroext true)
  %92 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %36, i64 noundef 0, i64 noundef 3, ptr noundef %92, i1 noundef zeroext true)
  %93 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %37, i64 noundef 0, i64 noundef 3, ptr noundef %93, i1 noundef zeroext true)
  %94 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %38, i64 noundef 0, i64 noundef 2, ptr noundef %94, i1 noundef zeroext true)
  %95 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %39, i64 noundef 0, i64 noundef 2, ptr noundef %95, i1 noundef zeroext true)
  %96 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %40, i64 noundef 0, i64 noundef 3, ptr noundef %96, i1 noundef zeroext true)
  %97 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %41, i64 noundef 0, i64 noundef 3, ptr noundef %97, i1 noundef zeroext true)
  %98 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %42, i64 noundef 0, i64 noundef 3, ptr noundef %98, i1 noundef zeroext true)
  %99 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %43, i64 noundef 0, i64 noundef 3, ptr noundef %99, i1 noundef zeroext true)
  %100 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %44, i64 noundef 0, i64 noundef 2, ptr noundef %100, i1 noundef zeroext true)
  %101 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %45, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %101, i1 noundef zeroext true)
  %102 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl12_kdtree_initEPvPNS_8ae_stateEb(ptr noundef %48, ptr noundef %102, i1 noundef zeroext true)
  %103 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl12_kdtree_initEPvPNS_8ae_stateEb(ptr noundef %49, ptr noundef %103, i1 noundef zeroext true)
  %104 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %50, i64 noundef 0, i64 noundef 3, ptr noundef %104, i1 noundef zeroext true)
  %105 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %51, i64 noundef 0, i64 noundef 3, ptr noundef %105, i1 noundef zeroext true)
  %106 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %52, i64 noundef 0, i64 noundef 2, ptr noundef %106, i1 noundef zeroext true)
  %107 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %53, i64 noundef 0, i64 noundef 3, ptr noundef %107, i1 noundef zeroext true)
  %108 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %54, i64 noundef 0, i64 noundef 2, ptr noundef %108, i1 noundef zeroext true)
  %109 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %55, i64 noundef 0, i64 noundef 2, ptr noundef %109, i1 noundef zeroext true)
  %110 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %56, i64 noundef 0, i64 noundef 3, ptr noundef %110, i1 noundef zeroext true)
  %111 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %57, i64 noundef 0, i64 noundef 3, ptr noundef %111, i1 noundef zeroext true)
  %112 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %58, i64 noundef 0, i64 noundef 3, ptr noundef %112, i1 noundef zeroext true)
  %113 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %70, i64 noundef 0, i64 noundef 3, ptr noundef %113, i1 noundef zeroext true)
  %114 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl18_linlsqrstate_initEPvPNS_8ae_stateEb(ptr noundef %74, ptr noundef %114, i1 noundef zeroext true)
  %115 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl19_linlsqrreport_initEPvPNS_8ae_stateEb(ptr noundef %75, ptr noundef %115, i1 noundef zeroext true)
  %116 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl18_sparsematrix_initEPvPNS_8ae_stateEb(ptr noundef %76, ptr noundef %116, i1 noundef zeroext true)
  %117 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %77, i64 noundef 0, i64 noundef 3, ptr noundef %117, i1 noundef zeroext true)
  %118 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %78, i64 noundef 0, i64 noundef 3, ptr noundef %118, i1 noundef zeroext true)
  %119 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl21_rbfv2calcbuffer_initEPvPNS_8ae_stateEb(ptr noundef %79, ptr noundef %119, i1 noundef zeroext true)
  %120 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %80, i64 noundef 0, i64 noundef 3, ptr noundef %120, i1 noundef zeroext true)
  %121 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %81, i64 noundef 0, i64 noundef 2, ptr noundef %121, i1 noundef zeroext true)
  %122 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %82, i64 noundef 0, i64 noundef 2, ptr noundef %122, i1 noundef zeroext true)
  %123 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %83, i64 noundef 0, i64 noundef 3, ptr noundef %123, i1 noundef zeroext true)
  %124 = load ptr, ptr %22, align 8, !tbaa !5
  %125 = getelementptr inbounds %"struct.alglib_impl::rbfv2model", ptr %124, i32 0, i32 1
  %126 = load i64, ptr %125, align 8, !tbaa !13
  %127 = icmp sgt i64 %126, 0
  %128 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %127, ptr noundef @.str.664, ptr noundef %128)
  %129 = load ptr, ptr %22, align 8, !tbaa !5
  %130 = getelementptr inbounds %"struct.alglib_impl::rbfv2model", ptr %129, i32 0, i32 0
  %131 = load i64, ptr %130, align 8, !tbaa !20
  %132 = icmp sgt i64 %131, 0
  %133 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %132, ptr noundef @.str.665, ptr noundef %133)
  %134 = load double, ptr %21, align 8, !tbaa !11
  %135 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %134, double noundef 0.000000e+00)
  %136 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %135, ptr noundef @.str.666, ptr noundef %136)
  store i64 0, ptr %60, align 8, !tbaa !9
  br label %137

137:                                              ; preds = %153, %13
  %138 = load i64, ptr %60, align 8, !tbaa !9
  %139 = load ptr, ptr %22, align 8, !tbaa !5
  %140 = getelementptr inbounds %"struct.alglib_impl::rbfv2model", ptr %139, i32 0, i32 1
  %141 = load i64, ptr %140, align 8, !tbaa !13
  %142 = sub nsw i64 %141, 1
  %143 = icmp sle i64 %138, %142
  br i1 %143, label %144, label %156

144:                                              ; preds = %137
  %145 = load ptr, ptr %17, align 8, !tbaa !5
  %146 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %145, i32 0, i32 4
  %147 = load ptr, ptr %146, align 8, !tbaa !21
  %148 = load i64, ptr %60, align 8, !tbaa !9
  %149 = getelementptr inbounds double, ptr %147, i64 %148
  %150 = load double, ptr %149, align 8, !tbaa !11
  %151 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %150, double noundef 0.000000e+00)
  %152 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %151, ptr noundef @.str.667, ptr noundef %152)
  br label %153

153:                                              ; preds = %144
  %154 = load i64, ptr %60, align 8, !tbaa !9
  %155 = add nsw i64 %154, 1
  store i64 %155, ptr %60, align 8, !tbaa !9
  br label %137, !llvm.loop !22

156:                                              ; preds = %137
  %157 = load ptr, ptr %22, align 8, !tbaa !5
  %158 = getelementptr inbounds %"struct.alglib_impl::rbfv2model", ptr %157, i32 0, i32 1
  %159 = load i64, ptr %158, align 8, !tbaa !13
  store i64 %159, ptr %28, align 8, !tbaa !9
  %160 = load ptr, ptr %22, align 8, !tbaa !5
  %161 = getelementptr inbounds %"struct.alglib_impl::rbfv2model", ptr %160, i32 0, i32 0
  %162 = load i64, ptr %161, align 8, !tbaa !20
  store i64 %162, ptr %29, align 8, !tbaa !9
  %163 = load ptr, ptr %22, align 8, !tbaa !5
  %164 = getelementptr inbounds %"struct.alglib_impl::rbfv2model", ptr %163, i32 0, i32 16
  %165 = load i64, ptr %164, align 8, !tbaa !24
  store i64 %165, ptr %30, align 8, !tbaa !9
  %166 = load i64, ptr %30, align 8, !tbaa !9
  %167 = icmp eq i64 %166, 0
  br i1 %167, label %171, label %168

168:                                              ; preds = %156
  %169 = load i64, ptr %30, align 8, !tbaa !9
  %170 = icmp eq i64 %169, 1
  br label %171

171:                                              ; preds = %168, %156
  %172 = phi i1 [ true, %156 ], [ %170, %168 ]
  %173 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %172, ptr noundef @.str.668, ptr noundef %173)
  %174 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 0, ptr %174, align 8, !tbaa !9
  %175 = load ptr, ptr %25, align 8, !tbaa !5
  %176 = getelementptr inbounds %"struct.alglib_impl::rbfv2report", ptr %175, i32 0, i32 1
  store double 0.000000e+00, ptr %176, align 8, !tbaa !25
  %177 = load ptr, ptr %25, align 8, !tbaa !5
  %178 = getelementptr inbounds %"struct.alglib_impl::rbfv2report", ptr %177, i32 0, i32 2
  store double 0.000000e+00, ptr %178, align 8, !tbaa !27
  %179 = load i64, ptr %16, align 8, !tbaa !9
  %180 = icmp eq i64 %179, 0
  br i1 %180, label %181, label %191

181:                                              ; preds = %171
  %182 = load ptr, ptr %22, align 8, !tbaa !5
  %183 = load i64, ptr %28, align 8, !tbaa !9
  %184 = load i64, ptr %29, align 8, !tbaa !9
  %185 = load i64, ptr %30, align 8, !tbaa !9
  %186 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_implL14rbfv2_zerofillEPNS_10rbfv2modelElllPNS_8ae_stateE(ptr noundef %182, i64 noundef %183, i64 noundef %184, i64 noundef %185, ptr noundef %186)
  %187 = load ptr, ptr %25, align 8, !tbaa !5
  %188 = getelementptr inbounds %"struct.alglib_impl::rbfv2report", ptr %187, i32 0, i32 0
  store i64 1, ptr %188, align 8, !tbaa !28
  %189 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 10000, ptr %189, align 8, !tbaa !9
  %190 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %190)
  store i32 1, ptr %85, align 4
  br label %1788

191:                                              ; preds = %171
  %192 = load i64, ptr %16, align 8, !tbaa !9
  %193 = load i64, ptr %29, align 8, !tbaa !9
  %194 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %32, i64 noundef %192, i64 noundef %193, ptr noundef %194)
  store i64 0, ptr %59, align 8, !tbaa !9
  br label %195

195:                                              ; preds = %227, %191
  %196 = load i64, ptr %59, align 8, !tbaa !9
  %197 = load i64, ptr %16, align 8, !tbaa !9
  %198 = sub nsw i64 %197, 1
  %199 = icmp sle i64 %196, %198
  br i1 %199, label %200, label %230

200:                                              ; preds = %195
  store i64 0, ptr %60, align 8, !tbaa !9
  br label %201

201:                                              ; preds = %223, %200
  %202 = load i64, ptr %60, align 8, !tbaa !9
  %203 = load i64, ptr %29, align 8, !tbaa !9
  %204 = sub nsw i64 %203, 1
  %205 = icmp sle i64 %202, %204
  br i1 %205, label %206, label %226

206:                                              ; preds = %201
  %207 = load ptr, ptr %15, align 8, !tbaa !5
  %208 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %207, i32 0, i32 6
  %209 = load ptr, ptr %208, align 8, !tbaa !21
  %210 = load i64, ptr %59, align 8, !tbaa !9
  %211 = getelementptr inbounds ptr, ptr %209, i64 %210
  %212 = load ptr, ptr %211, align 8, !tbaa !5
  %213 = load i64, ptr %60, align 8, !tbaa !9
  %214 = getelementptr inbounds double, ptr %212, i64 %213
  %215 = load double, ptr %214, align 8, !tbaa !11
  %216 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %32, i32 0, i32 6
  %217 = load ptr, ptr %216, align 8, !tbaa !21
  %218 = load i64, ptr %59, align 8, !tbaa !9
  %219 = getelementptr inbounds ptr, ptr %217, i64 %218
  %220 = load ptr, ptr %219, align 8, !tbaa !5
  %221 = load i64, ptr %60, align 8, !tbaa !9
  %222 = getelementptr inbounds double, ptr %220, i64 %221
  store double %215, ptr %222, align 8, !tbaa !11
  br label %223

223:                                              ; preds = %206
  %224 = load i64, ptr %60, align 8, !tbaa !9
  %225 = add nsw i64 %224, 1
  store i64 %225, ptr %60, align 8, !tbaa !9
  br label %201, !llvm.loop !29

226:                                              ; preds = %201
  br label %227

227:                                              ; preds = %226
  %228 = load i64, ptr %59, align 8, !tbaa !9
  %229 = add nsw i64 %228, 1
  store i64 %229, ptr %59, align 8, !tbaa !9
  br label %195, !llvm.loop !30

230:                                              ; preds = %195
  %231 = load ptr, ptr %14, align 8, !tbaa !5
  %232 = load i64, ptr %16, align 8, !tbaa !9
  %233 = load i64, ptr %28, align 8, !tbaa !9
  %234 = load i64, ptr %29, align 8, !tbaa !9
  %235 = load i64, ptr %18, align 8, !tbaa !9
  %236 = load ptr, ptr %26, align 8, !tbaa !5
  %237 = call noundef zeroext i1 @_ZN11alglib_implL27rbfv2_rbfv2buildlinearmodelEPNS_9ae_matrixES1_llllS1_PNS_8ae_stateE(ptr noundef %231, ptr noundef %32, i64 noundef %232, i64 noundef %233, i64 noundef %234, i64 noundef %235, ptr noundef %33, ptr noundef %236)
  br i1 %237, label %248, label %238

238:                                              ; preds = %230
  %239 = load ptr, ptr %22, align 8, !tbaa !5
  %240 = load i64, ptr %28, align 8, !tbaa !9
  %241 = load i64, ptr %29, align 8, !tbaa !9
  %242 = load i64, ptr %30, align 8, !tbaa !9
  %243 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_implL14rbfv2_zerofillEPNS_10rbfv2modelElllPNS_8ae_stateE(ptr noundef %239, i64 noundef %240, i64 noundef %241, i64 noundef %242, ptr noundef %243)
  %244 = load ptr, ptr %25, align 8, !tbaa !5
  %245 = getelementptr inbounds %"struct.alglib_impl::rbfv2report", ptr %244, i32 0, i32 0
  store i64 -5, ptr %245, align 8, !tbaa !28
  %246 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 10000, ptr %246, align 8, !tbaa !9
  %247 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %247)
  store i32 1, ptr %85, align 4
  br label %1788

248:                                              ; preds = %230
  %249 = load i64, ptr %19, align 8, !tbaa !9
  %250 = icmp eq i64 %249, 0
  br i1 %250, label %251, label %366

251:                                              ; preds = %248
  %252 = load ptr, ptr %25, align 8, !tbaa !5
  %253 = getelementptr inbounds %"struct.alglib_impl::rbfv2report", ptr %252, i32 0, i32 0
  store i64 1, ptr %253, align 8, !tbaa !28
  %254 = load ptr, ptr %22, align 8, !tbaa !5
  %255 = load i64, ptr %28, align 8, !tbaa !9
  %256 = load i64, ptr %29, align 8, !tbaa !9
  %257 = load i64, ptr %30, align 8, !tbaa !9
  %258 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_implL14rbfv2_zerofillEPNS_10rbfv2modelElllPNS_8ae_stateE(ptr noundef %254, i64 noundef %255, i64 noundef %256, i64 noundef %257, ptr noundef %258)
  store i64 0, ptr %59, align 8, !tbaa !9
  br label %259

259:                                              ; preds = %291, %251
  %260 = load i64, ptr %59, align 8, !tbaa !9
  %261 = load i64, ptr %29, align 8, !tbaa !9
  %262 = sub nsw i64 %261, 1
  %263 = icmp sle i64 %260, %262
  br i1 %263, label %264, label %294

264:                                              ; preds = %259
  store i64 0, ptr %60, align 8, !tbaa !9
  br label %265

265:                                              ; preds = %287, %264
  %266 = load i64, ptr %60, align 8, !tbaa !9
  %267 = load i64, ptr %28, align 8, !tbaa !9
  %268 = icmp sle i64 %266, %267
  br i1 %268, label %269, label %290

269:                                              ; preds = %265
  %270 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %33, i32 0, i32 6
  %271 = load ptr, ptr %270, align 8, !tbaa !21
  %272 = load i64, ptr %59, align 8, !tbaa !9
  %273 = getelementptr inbounds ptr, ptr %271, i64 %272
  %274 = load ptr, ptr %273, align 8, !tbaa !5
  %275 = load i64, ptr %60, align 8, !tbaa !9
  %276 = getelementptr inbounds double, ptr %274, i64 %275
  %277 = load double, ptr %276, align 8, !tbaa !11
  %278 = load ptr, ptr %22, align 8, !tbaa !5
  %279 = getelementptr inbounds %"struct.alglib_impl::rbfv2model", ptr %278, i32 0, i32 12
  %280 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %279, i32 0, i32 6
  %281 = load ptr, ptr %280, align 8, !tbaa !21
  %282 = load i64, ptr %59, align 8, !tbaa !9
  %283 = getelementptr inbounds ptr, ptr %281, i64 %282
  %284 = load ptr, ptr %283, align 8, !tbaa !5
  %285 = load i64, ptr %60, align 8, !tbaa !9
  %286 = getelementptr inbounds double, ptr %284, i64 %285
  store double %277, ptr %286, align 8, !tbaa !11
  br label %287

287:                                              ; preds = %269
  %288 = load i64, ptr %60, align 8, !tbaa !9
  %289 = add nsw i64 %288, 1
  store i64 %289, ptr %60, align 8, !tbaa !9
  br label %265, !llvm.loop !31

290:                                              ; preds = %265
  br label %291

291:                                              ; preds = %290
  %292 = load i64, ptr %59, align 8, !tbaa !9
  %293 = add nsw i64 %292, 1
  store i64 %293, ptr %59, align 8, !tbaa !9
  br label %259, !llvm.loop !32

294:                                              ; preds = %259
  %295 = load ptr, ptr %25, align 8, !tbaa !5
  %296 = getelementptr inbounds %"struct.alglib_impl::rbfv2report", ptr %295, i32 0, i32 1
  store double 0.000000e+00, ptr %296, align 8, !tbaa !25
  %297 = load ptr, ptr %25, align 8, !tbaa !5
  %298 = getelementptr inbounds %"struct.alglib_impl::rbfv2report", ptr %297, i32 0, i32 2
  store double 0.000000e+00, ptr %298, align 8, !tbaa !27
  store i64 0, ptr %59, align 8, !tbaa !9
  br label %299

299:                                              ; preds = %348, %294
  %300 = load i64, ptr %59, align 8, !tbaa !9
  %301 = load i64, ptr %16, align 8, !tbaa !9
  %302 = sub nsw i64 %301, 1
  %303 = icmp sle i64 %300, %302
  br i1 %303, label %304, label %351

304:                                              ; preds = %299
  store i64 0, ptr %60, align 8, !tbaa !9
  br label %305

305:                                              ; preds = %344, %304
  %306 = load i64, ptr %60, align 8, !tbaa !9
  %307 = load i64, ptr %29, align 8, !tbaa !9
  %308 = sub nsw i64 %307, 1
  %309 = icmp sle i64 %306, %308
  br i1 %309, label %310, label %347

310:                                              ; preds = %305
  %311 = load ptr, ptr %25, align 8, !tbaa !5
  %312 = getelementptr inbounds %"struct.alglib_impl::rbfv2report", ptr %311, i32 0, i32 1
  %313 = load double, ptr %312, align 8, !tbaa !25
  %314 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %32, i32 0, i32 6
  %315 = load ptr, ptr %314, align 8, !tbaa !21
  %316 = load i64, ptr %59, align 8, !tbaa !9
  %317 = getelementptr inbounds ptr, ptr %315, i64 %316
  %318 = load ptr, ptr %317, align 8, !tbaa !5
  %319 = load i64, ptr %60, align 8, !tbaa !9
  %320 = getelementptr inbounds double, ptr %318, i64 %319
  %321 = load double, ptr %320, align 8, !tbaa !11
  %322 = load ptr, ptr %26, align 8, !tbaa !5
  %323 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %321, ptr noundef %322)
  %324 = load ptr, ptr %26, align 8, !tbaa !5
  %325 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %313, double noundef %323, ptr noundef %324)
  %326 = load ptr, ptr %25, align 8, !tbaa !5
  %327 = getelementptr inbounds %"struct.alglib_impl::rbfv2report", ptr %326, i32 0, i32 1
  store double %325, ptr %327, align 8, !tbaa !25
  %328 = load ptr, ptr %25, align 8, !tbaa !5
  %329 = getelementptr inbounds %"struct.alglib_impl::rbfv2report", ptr %328, i32 0, i32 2
  %330 = load double, ptr %329, align 8, !tbaa !27
  %331 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %32, i32 0, i32 6
  %332 = load ptr, ptr %331, align 8, !tbaa !21
  %333 = load i64, ptr %59, align 8, !tbaa !9
  %334 = getelementptr inbounds ptr, ptr %332, i64 %333
  %335 = load ptr, ptr %334, align 8, !tbaa !5
  %336 = load i64, ptr %60, align 8, !tbaa !9
  %337 = getelementptr inbounds double, ptr %335, i64 %336
  %338 = load double, ptr %337, align 8, !tbaa !11
  %339 = load ptr, ptr %26, align 8, !tbaa !5
  %340 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %338, ptr noundef %339)
  %341 = fadd double %330, %340
  %342 = load ptr, ptr %25, align 8, !tbaa !5
  %343 = getelementptr inbounds %"struct.alglib_impl::rbfv2report", ptr %342, i32 0, i32 2
  store double %341, ptr %343, align 8, !tbaa !27
  br label %344

344:                                              ; preds = %310
  %345 = load i64, ptr %60, align 8, !tbaa !9
  %346 = add nsw i64 %345, 1
  store i64 %346, ptr %60, align 8, !tbaa !9
  br label %305, !llvm.loop !33

347:                                              ; preds = %305
  br label %348

348:                                              ; preds = %347
  %349 = load i64, ptr %59, align 8, !tbaa !9
  %350 = add nsw i64 %349, 1
  store i64 %350, ptr %59, align 8, !tbaa !9
  br label %299, !llvm.loop !34

351:                                              ; preds = %299
  %352 = load ptr, ptr %25, align 8, !tbaa !5
  %353 = getelementptr inbounds %"struct.alglib_impl::rbfv2report", ptr %352, i32 0, i32 2
  %354 = load double, ptr %353, align 8, !tbaa !27
  %355 = load i64, ptr %16, align 8, !tbaa !9
  %356 = load i64, ptr %29, align 8, !tbaa !9
  %357 = mul nsw i64 %355, %356
  %358 = sitofp i64 %357 to double
  %359 = fdiv double %354, %358
  %360 = load ptr, ptr %26, align 8, !tbaa !5
  %361 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %359, ptr noundef %360)
  %362 = load ptr, ptr %25, align 8, !tbaa !5
  %363 = getelementptr inbounds %"struct.alglib_impl::rbfv2report", ptr %362, i32 0, i32 2
  store double %361, ptr %363, align 8, !tbaa !27
  %364 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 10000, ptr %364, align 8, !tbaa !9
  %365 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %365)
  store i32 1, ptr %85, align 4
  br label %1788

366:                                              ; preds = %248
  %367 = load double, ptr %21, align 8, !tbaa !11
  %368 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %367, double noundef 0.000000e+00)
  br i1 %368, label %369, label %370

369:                                              ; preds = %366
  store i64 1, ptr %34, align 8, !tbaa !9
  br label %373

370:                                              ; preds = %366
  %371 = load i64, ptr %28, align 8, !tbaa !9
  %372 = add nsw i64 1, %371
  store i64 %372, ptr %34, align 8, !tbaa !9
  br label %373

373:                                              ; preds = %370, %369
  %374 = load double, ptr %21, align 8, !tbaa !11
  %375 = load double, ptr %20, align 8, !tbaa !11
  %376 = load ptr, ptr %26, align 8, !tbaa !5
  %377 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %375, ptr noundef %376)
  %378 = fmul double %374, %377
  store double %378, ptr %84, align 8, !tbaa !11
  %379 = load i64, ptr %16, align 8, !tbaa !9
  %380 = load i64, ptr %34, align 8, !tbaa !9
  %381 = mul nsw i64 %379, %380
  %382 = load i64, ptr %29, align 8, !tbaa !9
  %383 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %31, i64 noundef %381, i64 noundef %382, ptr noundef %383)
  %384 = load i64, ptr %16, align 8, !tbaa !9
  %385 = load i64, ptr %28, align 8, !tbaa !9
  %386 = load i64, ptr %29, align 8, !tbaa !9
  %387 = add nsw i64 %385, %386
  %388 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %45, i64 noundef %384, i64 noundef %387, ptr noundef %388)
  %389 = load i64, ptr %28, align 8, !tbaa !9
  %390 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %50, i64 noundef %389, ptr noundef %390)
  %391 = load i64, ptr %28, align 8, !tbaa !9
  %392 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %51, i64 noundef %391, ptr noundef %392)
  %393 = load i64, ptr %16, align 8, !tbaa !9
  %394 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %52, i64 noundef %393, ptr noundef %394)
  %395 = load i64, ptr %16, align 8, !tbaa !9
  %396 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %53, i64 noundef %395, ptr noundef %396)
  %397 = load i64, ptr %16, align 8, !tbaa !9
  %398 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %80, i64 noundef %397, ptr noundef %398)
  %399 = load i64, ptr %16, align 8, !tbaa !9
  %400 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %81, i64 noundef %399, ptr noundef %400)
  %401 = load i64, ptr %16, align 8, !tbaa !9
  %402 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %54, i64 noundef %401, ptr noundef %402)
  %403 = load i64, ptr %16, align 8, !tbaa !9
  %404 = load i64, ptr %34, align 8, !tbaa !9
  %405 = mul nsw i64 %403, %404
  %406 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %55, i64 noundef %405, ptr noundef %406)
  %407 = load i64, ptr %16, align 8, !tbaa !9
  %408 = load i64, ptr %34, align 8, !tbaa !9
  %409 = mul nsw i64 %407, %408
  %410 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %78, i64 noundef %409, ptr noundef %410)
  store i64 0, ptr %59, align 8, !tbaa !9
  br label %411

411:                                              ; preds = %436, %373
  %412 = load i64, ptr %59, align 8, !tbaa !9
  %413 = load i64, ptr %16, align 8, !tbaa !9
  %414 = load i64, ptr %34, align 8, !tbaa !9
  %415 = mul nsw i64 %413, %414
  %416 = sub nsw i64 %415, 1
  %417 = icmp sle i64 %412, %416
  br i1 %417, label %418, label %439

418:                                              ; preds = %411
  store i64 0, ptr %60, align 8, !tbaa !9
  br label %419

419:                                              ; preds = %432, %418
  %420 = load i64, ptr %60, align 8, !tbaa !9
  %421 = load i64, ptr %29, align 8, !tbaa !9
  %422 = sub nsw i64 %421, 1
  %423 = icmp sle i64 %420, %422
  br i1 %423, label %424, label %435

424:                                              ; preds = %419
  %425 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %31, i32 0, i32 6
  %426 = load ptr, ptr %425, align 8, !tbaa !21
  %427 = load i64, ptr %59, align 8, !tbaa !9
  %428 = getelementptr inbounds ptr, ptr %426, i64 %427
  %429 = load ptr, ptr %428, align 8, !tbaa !5
  %430 = load i64, ptr %60, align 8, !tbaa !9
  %431 = getelementptr inbounds double, ptr %429, i64 %430
  store double 0.000000e+00, ptr %431, align 8, !tbaa !11
  br label %432

432:                                              ; preds = %424
  %433 = load i64, ptr %60, align 8, !tbaa !9
  %434 = add nsw i64 %433, 1
  store i64 %434, ptr %60, align 8, !tbaa !9
  br label %419, !llvm.loop !35

435:                                              ; preds = %419
  br label %436

436:                                              ; preds = %435
  %437 = load i64, ptr %59, align 8, !tbaa !9
  %438 = add nsw i64 %437, 1
  store i64 %438, ptr %59, align 8, !tbaa !9
  br label %411, !llvm.loop !36

439:                                              ; preds = %411
  store i64 0, ptr %59, align 8, !tbaa !9
  br label %440

440:                                              ; preds = %511, %439
  %441 = load i64, ptr %59, align 8, !tbaa !9
  %442 = load i64, ptr %16, align 8, !tbaa !9
  %443 = sub nsw i64 %442, 1
  %444 = icmp sle i64 %441, %443
  br i1 %444, label %445, label %514

445:                                              ; preds = %440
  store i64 0, ptr %60, align 8, !tbaa !9
  br label %446

446:                                              ; preds = %475, %445
  %447 = load i64, ptr %60, align 8, !tbaa !9
  %448 = load i64, ptr %28, align 8, !tbaa !9
  %449 = sub nsw i64 %448, 1
  %450 = icmp sle i64 %447, %449
  br i1 %450, label %451, label %478

451:                                              ; preds = %446
  %452 = load ptr, ptr %14, align 8, !tbaa !5
  %453 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %452, i32 0, i32 6
  %454 = load ptr, ptr %453, align 8, !tbaa !21
  %455 = load i64, ptr %59, align 8, !tbaa !9
  %456 = getelementptr inbounds ptr, ptr %454, i64 %455
  %457 = load ptr, ptr %456, align 8, !tbaa !5
  %458 = load i64, ptr %60, align 8, !tbaa !9
  %459 = getelementptr inbounds double, ptr %457, i64 %458
  %460 = load double, ptr %459, align 8, !tbaa !11
  %461 = load ptr, ptr %17, align 8, !tbaa !5
  %462 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %461, i32 0, i32 4
  %463 = load ptr, ptr %462, align 8, !tbaa !21
  %464 = load i64, ptr %60, align 8, !tbaa !9
  %465 = getelementptr inbounds double, ptr %463, i64 %464
  %466 = load double, ptr %465, align 8, !tbaa !11
  %467 = fdiv double %460, %466
  %468 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %45, i32 0, i32 6
  %469 = load ptr, ptr %468, align 8, !tbaa !21
  %470 = load i64, ptr %59, align 8, !tbaa !9
  %471 = getelementptr inbounds ptr, ptr %469, i64 %470
  %472 = load ptr, ptr %471, align 8, !tbaa !5
  %473 = load i64, ptr %60, align 8, !tbaa !9
  %474 = getelementptr inbounds double, ptr %472, i64 %473
  store double %467, ptr %474, align 8, !tbaa !11
  br label %475

475:                                              ; preds = %451
  %476 = load i64, ptr %60, align 8, !tbaa !9
  %477 = add nsw i64 %476, 1
  store i64 %477, ptr %60, align 8, !tbaa !9
  br label %446, !llvm.loop !37

478:                                              ; preds = %446
  store i64 0, ptr %60, align 8, !tbaa !9
  br label %479

479:                                              ; preds = %502, %478
  %480 = load i64, ptr %60, align 8, !tbaa !9
  %481 = load i64, ptr %29, align 8, !tbaa !9
  %482 = sub nsw i64 %481, 1
  %483 = icmp sle i64 %480, %482
  br i1 %483, label %484, label %505

484:                                              ; preds = %479
  %485 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %32, i32 0, i32 6
  %486 = load ptr, ptr %485, align 8, !tbaa !21
  %487 = load i64, ptr %59, align 8, !tbaa !9
  %488 = getelementptr inbounds ptr, ptr %486, i64 %487
  %489 = load ptr, ptr %488, align 8, !tbaa !5
  %490 = load i64, ptr %60, align 8, !tbaa !9
  %491 = getelementptr inbounds double, ptr %489, i64 %490
  %492 = load double, ptr %491, align 8, !tbaa !11
  %493 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %31, i32 0, i32 6
  %494 = load ptr, ptr %493, align 8, !tbaa !21
  %495 = load i64, ptr %59, align 8, !tbaa !9
  %496 = load i64, ptr %34, align 8, !tbaa !9
  %497 = mul nsw i64 %495, %496
  %498 = getelementptr inbounds ptr, ptr %494, i64 %497
  %499 = load ptr, ptr %498, align 8, !tbaa !5
  %500 = load i64, ptr %60, align 8, !tbaa !9
  %501 = getelementptr inbounds double, ptr %499, i64 %500
  store double %492, ptr %501, align 8, !tbaa !11
  br label %502

502:                                              ; preds = %484
  %503 = load i64, ptr %60, align 8, !tbaa !9
  %504 = add nsw i64 %503, 1
  store i64 %504, ptr %60, align 8, !tbaa !9
  br label %479, !llvm.loop !38

505:                                              ; preds = %479
  %506 = load i64, ptr %59, align 8, !tbaa !9
  %507 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %52, i32 0, i32 4
  %508 = load ptr, ptr %507, align 8, !tbaa !21
  %509 = load i64, ptr %59, align 8, !tbaa !9
  %510 = getelementptr inbounds i64, ptr %508, i64 %509
  store i64 %506, ptr %510, align 8, !tbaa !9
  br label %511

511:                                              ; preds = %505
  %512 = load i64, ptr %59, align 8, !tbaa !9
  %513 = add nsw i64 %512, 1
  store i64 %513, ptr %59, align 8, !tbaa !9
  br label %440, !llvm.loop !39

514:                                              ; preds = %440
  %515 = load i64, ptr %16, align 8, !tbaa !9
  %516 = load i64, ptr %28, align 8, !tbaa !9
  %517 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl17kdtreebuildtaggedEPNS_9ae_matrixEPNS_9ae_vectorEllllPNS_6kdtreeEPNS_8ae_stateE(ptr noundef %45, ptr noundef %52, i64 noundef %515, i64 noundef %516, i64 noundef 0, i64 noundef 2, ptr noundef %49, ptr noundef %517)
  %518 = load i64, ptr %16, align 8, !tbaa !9
  %519 = icmp sgt i64 %518, 0
  %520 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %519, ptr noundef @.str.669, ptr noundef %520)
  %521 = load i64, ptr %19, align 8, !tbaa !9
  %522 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %37, i64 noundef %521, ptr noundef %522)
  store i64 0, ptr %63, align 8, !tbaa !9
  br label %523

523:                                              ; preds = %540, %514
  %524 = load i64, ptr %63, align 8, !tbaa !9
  %525 = load i64, ptr %19, align 8, !tbaa !9
  %526 = sub nsw i64 %525, 1
  %527 = icmp sle i64 %524, %526
  br i1 %527, label %528, label %543

528:                                              ; preds = %523
  %529 = load double, ptr %20, align 8, !tbaa !11
  %530 = load i64, ptr %63, align 8, !tbaa !9
  %531 = sub nsw i64 0, %530
  %532 = sitofp i64 %531 to double
  %533 = load ptr, ptr %26, align 8, !tbaa !5
  %534 = call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef 2.000000e+00, double noundef %532, ptr noundef %533)
  %535 = fmul double %529, %534
  %536 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %37, i32 0, i32 4
  %537 = load ptr, ptr %536, align 8, !tbaa !21
  %538 = load i64, ptr %63, align 8, !tbaa !9
  %539 = getelementptr inbounds double, ptr %537, i64 %538
  store double %535, ptr %539, align 8, !tbaa !11
  br label %540

540:                                              ; preds = %528
  %541 = load i64, ptr %63, align 8, !tbaa !9
  %542 = add nsw i64 %541, 1
  store i64 %542, ptr %63, align 8, !tbaa !9
  br label %523, !llvm.loop !40

543:                                              ; preds = %523
  %544 = load i64, ptr %16, align 8, !tbaa !9
  %545 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %35, i64 noundef %544, ptr noundef %545)
  %546 = load i64, ptr %16, align 8, !tbaa !9
  %547 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %36, i64 noundef %546, ptr noundef %547)
  store i64 0, ptr %59, align 8, !tbaa !9
  br label %548

548:                                              ; preds = %574, %543
  %549 = load i64, ptr %59, align 8, !tbaa !9
  %550 = load i64, ptr %16, align 8, !tbaa !9
  %551 = sub nsw i64 %550, 1
  %552 = icmp sle i64 %549, %551
  br i1 %552, label %553, label %577

553:                                              ; preds = %548
  %554 = load i64, ptr %19, align 8, !tbaa !9
  %555 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %35, i32 0, i32 4
  %556 = load ptr, ptr %555, align 8, !tbaa !21
  %557 = load i64, ptr %59, align 8, !tbaa !9
  %558 = getelementptr inbounds i64, ptr %556, i64 %557
  store i64 %554, ptr %558, align 8, !tbaa !9
  %559 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %36, i32 0, i32 4
  %560 = load ptr, ptr %559, align 8, !tbaa !21
  %561 = load i64, ptr %59, align 8, !tbaa !9
  %562 = getelementptr inbounds double, ptr %560, i64 %561
  store double 1.000000e+300, ptr %562, align 8, !tbaa !11
  %563 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %36, i32 0, i32 4
  %564 = load ptr, ptr %563, align 8, !tbaa !21
  %565 = load i64, ptr %59, align 8, !tbaa !9
  %566 = getelementptr inbounds double, ptr %564, i64 %565
  %567 = load double, ptr %566, align 8, !tbaa !11
  %568 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %37, i32 0, i32 4
  %569 = load ptr, ptr %568, align 8, !tbaa !21
  %570 = getelementptr inbounds double, ptr %569, i64 0
  %571 = load double, ptr %570, align 8, !tbaa !11
  %572 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %567, double noundef %571)
  %573 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %572, ptr noundef @.str.669, ptr noundef %573)
  br label %574

574:                                              ; preds = %553
  %575 = load i64, ptr %59, align 8, !tbaa !9
  %576 = add nsw i64 %575, 1
  store i64 %576, ptr %59, align 8, !tbaa !9
  br label %548, !llvm.loop !41

577:                                              ; preds = %548
  store i64 0, ptr %63, align 8, !tbaa !9
  br label %578

578:                                              ; preds = %698, %577
  %579 = load i64, ptr %63, align 8, !tbaa !9
  %580 = load i64, ptr %19, align 8, !tbaa !9
  %581 = sub nsw i64 %580, 1
  %582 = icmp sle i64 %579, %581
  br i1 %582, label %583, label %701

583:                                              ; preds = %578
  %584 = load ptr, ptr %22, align 8, !tbaa !5
  %585 = getelementptr inbounds %"struct.alglib_impl::rbfv2model", ptr %584, i32 0, i32 15
  %586 = load double, ptr %585, align 8, !tbaa !42
  %587 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %37, i32 0, i32 4
  %588 = load ptr, ptr %587, align 8, !tbaa !21
  %589 = load i64, ptr %63, align 8, !tbaa !9
  %590 = getelementptr inbounds double, ptr %588, i64 %589
  %591 = load double, ptr %590, align 8, !tbaa !11
  %592 = fmul double %586, %591
  store double %592, ptr %67, align 8, !tbaa !11
  store i64 0, ptr %59, align 8, !tbaa !9
  br label %593

593:                                              ; preds = %694, %583
  %594 = load i64, ptr %59, align 8, !tbaa !9
  %595 = load i64, ptr %16, align 8, !tbaa !9
  %596 = sub nsw i64 %595, 1
  %597 = icmp sle i64 %594, %596
  br i1 %597, label %598, label %697

598:                                              ; preds = %593
  %599 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %36, i32 0, i32 4
  %600 = load ptr, ptr %599, align 8, !tbaa !21
  %601 = load i64, ptr %59, align 8, !tbaa !9
  %602 = getelementptr inbounds double, ptr %600, i64 %601
  %603 = load double, ptr %602, align 8, !tbaa !11
  %604 = load double, ptr %67, align 8, !tbaa !11
  %605 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %603, double noundef %604)
  br i1 %605, label %606, label %693

606:                                              ; preds = %598
  %607 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %35, i32 0, i32 4
  %608 = load ptr, ptr %607, align 8, !tbaa !21
  %609 = load i64, ptr %59, align 8, !tbaa !9
  %610 = getelementptr inbounds i64, ptr %608, i64 %609
  %611 = load i64, ptr %610, align 8, !tbaa !9
  %612 = load i64, ptr %19, align 8, !tbaa !9
  %613 = icmp eq i64 %611, %612
  %614 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %613, ptr noundef @.str.669, ptr noundef %614)
  %615 = load i64, ptr %63, align 8, !tbaa !9
  %616 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %35, i32 0, i32 4
  %617 = load ptr, ptr %616, align 8, !tbaa !21
  %618 = load i64, ptr %59, align 8, !tbaa !9
  %619 = getelementptr inbounds i64, ptr %617, i64 %618
  store i64 %615, ptr %619, align 8, !tbaa !9
  %620 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %36, i32 0, i32 4
  %621 = load ptr, ptr %620, align 8, !tbaa !21
  %622 = load i64, ptr %59, align 8, !tbaa !9
  %623 = getelementptr inbounds double, ptr %621, i64 %622
  store double 0.000000e+00, ptr %623, align 8, !tbaa !11
  store i64 0, ptr %60, align 8, !tbaa !9
  br label %624

624:                                              ; preds = %650, %606
  %625 = load i64, ptr %60, align 8, !tbaa !9
  %626 = load i64, ptr %28, align 8, !tbaa !9
  %627 = sub nsw i64 %626, 1
  %628 = icmp sle i64 %625, %627
  br i1 %628, label %629, label %653

629:                                              ; preds = %624
  %630 = load ptr, ptr %14, align 8, !tbaa !5
  %631 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %630, i32 0, i32 6
  %632 = load ptr, ptr %631, align 8, !tbaa !21
  %633 = load i64, ptr %59, align 8, !tbaa !9
  %634 = getelementptr inbounds ptr, ptr %632, i64 %633
  %635 = load ptr, ptr %634, align 8, !tbaa !5
  %636 = load i64, ptr %60, align 8, !tbaa !9
  %637 = getelementptr inbounds double, ptr %635, i64 %636
  %638 = load double, ptr %637, align 8, !tbaa !11
  %639 = load ptr, ptr %17, align 8, !tbaa !5
  %640 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %639, i32 0, i32 4
  %641 = load ptr, ptr %640, align 8, !tbaa !21
  %642 = load i64, ptr %60, align 8, !tbaa !9
  %643 = getelementptr inbounds double, ptr %641, i64 %642
  %644 = load double, ptr %643, align 8, !tbaa !11
  %645 = fdiv double %638, %644
  %646 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %50, i32 0, i32 4
  %647 = load ptr, ptr %646, align 8, !tbaa !21
  %648 = load i64, ptr %60, align 8, !tbaa !9
  %649 = getelementptr inbounds double, ptr %647, i64 %648
  store double %645, ptr %649, align 8, !tbaa !11
  br label %650

650:                                              ; preds = %629
  %651 = load i64, ptr %60, align 8, !tbaa !9
  %652 = add nsw i64 %651, 1
  store i64 %652, ptr %60, align 8, !tbaa !9
  br label %624, !llvm.loop !43

653:                                              ; preds = %624
  %654 = load double, ptr %67, align 8, !tbaa !11
  %655 = load ptr, ptr %26, align 8, !tbaa !5
  %656 = call noundef i64 @_ZN11alglib_impl14kdtreequeryrnnEPNS_6kdtreeEPNS_9ae_vectorEdbPNS_8ae_stateE(ptr noundef %49, ptr noundef %50, double noundef %654, i1 noundef zeroext true, ptr noundef %655)
  store i64 %656, ptr %61, align 8, !tbaa !9
  %657 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl22kdtreequeryresultstagsEPNS_6kdtreeEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %49, ptr noundef %52, ptr noundef %657)
  %658 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl27kdtreequeryresultsdistancesEPNS_6kdtreeEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %49, ptr noundef %53, ptr noundef %658)
  store i64 0, ptr %60, align 8, !tbaa !9
  br label %659

659:                                              ; preds = %689, %653
  %660 = load i64, ptr %60, align 8, !tbaa !9
  %661 = load i64, ptr %61, align 8, !tbaa !9
  %662 = sub nsw i64 %661, 1
  %663 = icmp sle i64 %660, %662
  br i1 %663, label %664, label %692

664:                                              ; preds = %659
  %665 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %36, i32 0, i32 4
  %666 = load ptr, ptr %665, align 8, !tbaa !21
  %667 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %52, i32 0, i32 4
  %668 = load ptr, ptr %667, align 8, !tbaa !21
  %669 = load i64, ptr %60, align 8, !tbaa !9
  %670 = getelementptr inbounds i64, ptr %668, i64 %669
  %671 = load i64, ptr %670, align 8, !tbaa !9
  %672 = getelementptr inbounds double, ptr %666, i64 %671
  %673 = load double, ptr %672, align 8, !tbaa !11
  %674 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %53, i32 0, i32 4
  %675 = load ptr, ptr %674, align 8, !tbaa !21
  %676 = load i64, ptr %60, align 8, !tbaa !9
  %677 = getelementptr inbounds double, ptr %675, i64 %676
  %678 = load double, ptr %677, align 8, !tbaa !11
  %679 = load ptr, ptr %26, align 8, !tbaa !5
  %680 = call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %673, double noundef %678, ptr noundef %679)
  %681 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %36, i32 0, i32 4
  %682 = load ptr, ptr %681, align 8, !tbaa !21
  %683 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %52, i32 0, i32 4
  %684 = load ptr, ptr %683, align 8, !tbaa !21
  %685 = load i64, ptr %60, align 8, !tbaa !9
  %686 = getelementptr inbounds i64, ptr %684, i64 %685
  %687 = load i64, ptr %686, align 8, !tbaa !9
  %688 = getelementptr inbounds double, ptr %682, i64 %687
  store double %680, ptr %688, align 8, !tbaa !11
  br label %689

689:                                              ; preds = %664
  %690 = load i64, ptr %60, align 8, !tbaa !9
  %691 = add nsw i64 %690, 1
  store i64 %691, ptr %60, align 8, !tbaa !9
  br label %659, !llvm.loop !44

692:                                              ; preds = %659
  br label %693

693:                                              ; preds = %692, %598
  br label %694

694:                                              ; preds = %693
  %695 = load i64, ptr %59, align 8, !tbaa !9
  %696 = add nsw i64 %695, 1
  store i64 %696, ptr %59, align 8, !tbaa !9
  br label %593, !llvm.loop !45

697:                                              ; preds = %593
  br label %698

698:                                              ; preds = %697
  %699 = load i64, ptr %63, align 8, !tbaa !9
  %700 = add nsw i64 %699, 1
  store i64 %700, ptr %63, align 8, !tbaa !9
  br label %578, !llvm.loop !46

701:                                              ; preds = %578
  %702 = load i64, ptr %19, align 8, !tbaa !9
  %703 = add nsw i64 %702, 1
  %704 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %38, i64 noundef %703, ptr noundef %704)
  %705 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %39, i64 noundef 0, ptr noundef %705)
  %706 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %40, i64 noundef 0, ptr noundef %706)
  %707 = load i64, ptr %28, align 8, !tbaa !9
  %708 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %41, i64 noundef %707, ptr noundef %708)
  %709 = load i64, ptr %28, align 8, !tbaa !9
  %710 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %42, i64 noundef %709, ptr noundef %710)
  %711 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %43, i64 noundef 0, ptr noundef %711)
  %712 = load i64, ptr %19, align 8, !tbaa !9
  %713 = add nsw i64 %712, 1
  %714 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %44, i64 noundef %713, ptr noundef %714)
  %715 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl16kdtreeexploreboxEPNS_6kdtreeEPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef %49, ptr noundef %41, ptr noundef %42, ptr noundef %715)
  %716 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %44, i32 0, i32 4
  %717 = load ptr, ptr %716, align 8, !tbaa !21
  %718 = getelementptr inbounds i64, ptr %717, i64 0
  store i64 0, ptr %718, align 8, !tbaa !9
  store i64 0, ptr %63, align 8, !tbaa !9
  br label %719

719:                                              ; preds = %821, %701
  %720 = load i64, ptr %63, align 8, !tbaa !9
  %721 = load i64, ptr %19, align 8, !tbaa !9
  %722 = sub nsw i64 %721, 1
  %723 = icmp sle i64 %720, %722
  br i1 %723, label %724, label %824

724:                                              ; preds = %719
  %725 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %39, i32 0, i32 0
  %726 = load i64, ptr %725, align 8, !tbaa !47
  %727 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %38, i32 0, i32 4
  %728 = load ptr, ptr %727, align 8, !tbaa !21
  %729 = load i64, ptr %63, align 8, !tbaa !9
  %730 = getelementptr inbounds i64, ptr %728, i64 %729
  store i64 %726, ptr %730, align 8, !tbaa !9
  store i64 0, ptr %46, align 8, !tbaa !9
  store i64 0, ptr %59, align 8, !tbaa !9
  br label %731

731:                                              ; preds = %799, %724
  %732 = load i64, ptr %59, align 8, !tbaa !9
  %733 = load i64, ptr %16, align 8, !tbaa !9
  %734 = sub nsw i64 %733, 1
  %735 = icmp sle i64 %732, %734
  br i1 %735, label %736, label %802

736:                                              ; preds = %731
  %737 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %35, i32 0, i32 4
  %738 = load ptr, ptr %737, align 8, !tbaa !21
  %739 = load i64, ptr %59, align 8, !tbaa !9
  %740 = getelementptr inbounds i64, ptr %738, i64 %739
  %741 = load i64, ptr %740, align 8, !tbaa !9
  %742 = load i64, ptr %63, align 8, !tbaa !9
  %743 = icmp sle i64 %741, %742
  br i1 %743, label %744, label %798

744:                                              ; preds = %736
  store i64 0, ptr %60, align 8, !tbaa !9
  br label %745

745:                                              ; preds = %774, %744
  %746 = load i64, ptr %60, align 8, !tbaa !9
  %747 = load i64, ptr %28, align 8, !tbaa !9
  %748 = sub nsw i64 %747, 1
  %749 = icmp sle i64 %746, %748
  br i1 %749, label %750, label %777

750:                                              ; preds = %745
  %751 = load ptr, ptr %14, align 8, !tbaa !5
  %752 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %751, i32 0, i32 6
  %753 = load ptr, ptr %752, align 8, !tbaa !21
  %754 = load i64, ptr %59, align 8, !tbaa !9
  %755 = getelementptr inbounds ptr, ptr %753, i64 %754
  %756 = load ptr, ptr %755, align 8, !tbaa !5
  %757 = load i64, ptr %60, align 8, !tbaa !9
  %758 = getelementptr inbounds double, ptr %756, i64 %757
  %759 = load double, ptr %758, align 8, !tbaa !11
  %760 = load ptr, ptr %17, align 8, !tbaa !5
  %761 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %760, i32 0, i32 4
  %762 = load ptr, ptr %761, align 8, !tbaa !21
  %763 = load i64, ptr %60, align 8, !tbaa !9
  %764 = getelementptr inbounds double, ptr %762, i64 %763
  %765 = load double, ptr %764, align 8, !tbaa !11
  %766 = fdiv double %759, %765
  %767 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %45, i32 0, i32 6
  %768 = load ptr, ptr %767, align 8, !tbaa !21
  %769 = load i64, ptr %46, align 8, !tbaa !9
  %770 = getelementptr inbounds ptr, ptr %768, i64 %769
  %771 = load ptr, ptr %770, align 8, !tbaa !5
  %772 = load i64, ptr %60, align 8, !tbaa !9
  %773 = getelementptr inbounds double, ptr %771, i64 %772
  store double %766, ptr %773, align 8, !tbaa !11
  br label %774

774:                                              ; preds = %750
  %775 = load i64, ptr %60, align 8, !tbaa !9
  %776 = add nsw i64 %775, 1
  store i64 %776, ptr %60, align 8, !tbaa !9
  br label %745, !llvm.loop !48

777:                                              ; preds = %745
  store i64 0, ptr %60, align 8, !tbaa !9
  br label %778

778:                                              ; preds = %793, %777
  %779 = load i64, ptr %60, align 8, !tbaa !9
  %780 = load i64, ptr %29, align 8, !tbaa !9
  %781 = sub nsw i64 %780, 1
  %782 = icmp sle i64 %779, %781
  br i1 %782, label %783, label %796

783:                                              ; preds = %778
  %784 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %45, i32 0, i32 6
  %785 = load ptr, ptr %784, align 8, !tbaa !21
  %786 = load i64, ptr %46, align 8, !tbaa !9
  %787 = getelementptr inbounds ptr, ptr %785, i64 %786
  %788 = load ptr, ptr %787, align 8, !tbaa !5
  %789 = load i64, ptr %28, align 8, !tbaa !9
  %790 = load i64, ptr %60, align 8, !tbaa !9
  %791 = add nsw i64 %789, %790
  %792 = getelementptr inbounds double, ptr %788, i64 %791
  store double 0.000000e+00, ptr %792, align 8, !tbaa !11
  br label %793

793:                                              ; preds = %783
  %794 = load i64, ptr %60, align 8, !tbaa !9
  %795 = add nsw i64 %794, 1
  store i64 %795, ptr %60, align 8, !tbaa !9
  br label %778, !llvm.loop !49

796:                                              ; preds = %778
  %797 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %46, ptr noundef %797)
  br label %798

798:                                              ; preds = %796, %736
  br label %799

799:                                              ; preds = %798
  %800 = load i64, ptr %59, align 8, !tbaa !9
  %801 = add nsw i64 %800, 1
  store i64 %801, ptr %59, align 8, !tbaa !9
  br label %731, !llvm.loop !50

802:                                              ; preds = %731
  %803 = load i64, ptr %46, align 8, !tbaa !9
  %804 = icmp sgt i64 %803, 0
  %805 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %804, ptr noundef @.str.669, ptr noundef %805)
  %806 = load i64, ptr %46, align 8, !tbaa !9
  %807 = load i64, ptr %28, align 8, !tbaa !9
  %808 = load i64, ptr %29, align 8, !tbaa !9
  %809 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl11kdtreebuildEPNS_9ae_matrixEllllPNS_6kdtreeEPNS_8ae_stateE(ptr noundef %45, i64 noundef %806, i64 noundef %807, i64 noundef %808, i64 noundef 2, ptr noundef %48, ptr noundef %809)
  %810 = load i64, ptr %46, align 8, !tbaa !9
  %811 = load i64, ptr %28, align 8, !tbaa !9
  %812 = load i64, ptr %29, align 8, !tbaa !9
  %813 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_implL26rbfv2_convertandappendtreeEPNS_6kdtreeElllPNS_9ae_vectorES3_S3_PNS_8ae_stateE(ptr noundef %48, i64 noundef %810, i64 noundef %811, i64 noundef %812, ptr noundef %39, ptr noundef %40, ptr noundef %43, ptr noundef %813)
  %814 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %43, i32 0, i32 0
  %815 = load i64, ptr %814, align 8, !tbaa !47
  %816 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %44, i32 0, i32 4
  %817 = load ptr, ptr %816, align 8, !tbaa !21
  %818 = load i64, ptr %63, align 8, !tbaa !9
  %819 = add nsw i64 %818, 1
  %820 = getelementptr inbounds i64, ptr %817, i64 %819
  store i64 %815, ptr %820, align 8, !tbaa !9
  br label %821

821:                                              ; preds = %802
  %822 = load i64, ptr %63, align 8, !tbaa !9
  %823 = add nsw i64 %822, 1
  store i64 %823, ptr %63, align 8, !tbaa !9
  br label %719, !llvm.loop !51

824:                                              ; preds = %719
  %825 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %39, i32 0, i32 0
  %826 = load i64, ptr %825, align 8, !tbaa !47
  %827 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %38, i32 0, i32 4
  %828 = load ptr, ptr %827, align 8, !tbaa !21
  %829 = load i64, ptr %19, align 8, !tbaa !9
  %830 = getelementptr inbounds i64, ptr %828, i64 %829
  store i64 %826, ptr %830, align 8, !tbaa !9
  %831 = load ptr, ptr %22, align 8, !tbaa !5
  %832 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_implL24rbfv2_allocatecalcbufferEPNS_10rbfv2modelEPNS_15rbfv2calcbufferEPNS_8ae_stateE(ptr noundef %831, ptr noundef %79, ptr noundef %832)
  store i64 0, ptr %59, align 8, !tbaa !9
  br label %833

833:                                              ; preds = %872, %824
  %834 = load i64, ptr %59, align 8, !tbaa !9
  %835 = load i64, ptr %16, align 8, !tbaa !9
  %836 = sub nsw i64 %835, 1
  %837 = icmp sle i64 %834, %836
  br i1 %837, label %838, label %875

838:                                              ; preds = %833
  store i64 0, ptr %60, align 8, !tbaa !9
  br label %839

839:                                              ; preds = %868, %838
  %840 = load i64, ptr %60, align 8, !tbaa !9
  %841 = load i64, ptr %28, align 8, !tbaa !9
  %842 = sub nsw i64 %841, 1
  %843 = icmp sle i64 %840, %842
  br i1 %843, label %844, label %871

844:                                              ; preds = %839
  %845 = load ptr, ptr %14, align 8, !tbaa !5
  %846 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %845, i32 0, i32 6
  %847 = load ptr, ptr %846, align 8, !tbaa !21
  %848 = load i64, ptr %59, align 8, !tbaa !9
  %849 = getelementptr inbounds ptr, ptr %847, i64 %848
  %850 = load ptr, ptr %849, align 8, !tbaa !5
  %851 = load i64, ptr %60, align 8, !tbaa !9
  %852 = getelementptr inbounds double, ptr %850, i64 %851
  %853 = load double, ptr %852, align 8, !tbaa !11
  %854 = load ptr, ptr %17, align 8, !tbaa !5
  %855 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %854, i32 0, i32 4
  %856 = load ptr, ptr %855, align 8, !tbaa !21
  %857 = load i64, ptr %60, align 8, !tbaa !9
  %858 = getelementptr inbounds double, ptr %856, i64 %857
  %859 = load double, ptr %858, align 8, !tbaa !11
  %860 = fdiv double %853, %859
  %861 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %45, i32 0, i32 6
  %862 = load ptr, ptr %861, align 8, !tbaa !21
  %863 = load i64, ptr %59, align 8, !tbaa !9
  %864 = getelementptr inbounds ptr, ptr %862, i64 %863
  %865 = load ptr, ptr %864, align 8, !tbaa !5
  %866 = load i64, ptr %60, align 8, !tbaa !9
  %867 = getelementptr inbounds double, ptr %865, i64 %866
  store double %860, ptr %867, align 8, !tbaa !11
  br label %868

868:                                              ; preds = %844
  %869 = load i64, ptr %60, align 8, !tbaa !9
  %870 = add nsw i64 %869, 1
  store i64 %870, ptr %60, align 8, !tbaa !9
  br label %839, !llvm.loop !52

871:                                              ; preds = %839
  br label %872

872:                                              ; preds = %871
  %873 = load i64, ptr %59, align 8, !tbaa !9
  %874 = add nsw i64 %873, 1
  store i64 %874, ptr %59, align 8, !tbaa !9
  br label %833, !llvm.loop !53

875:                                              ; preds = %833
  %876 = load i64, ptr %19, align 8, !tbaa !9
  %877 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %70, i64 noundef %876, ptr noundef %877)
  store double 0.000000e+00, ptr %71, align 8, !tbaa !11
  store i64 0, ptr %63, align 8, !tbaa !9
  br label %878

878:                                              ; preds = %947, %875
  %879 = load i64, ptr %63, align 8, !tbaa !9
  %880 = load i64, ptr %19, align 8, !tbaa !9
  %881 = sub nsw i64 %880, 1
  %882 = icmp sle i64 %879, %881
  br i1 %882, label %883, label %950

883:                                              ; preds = %878
  store i64 0, ptr %68, align 8, !tbaa !9
  store i64 0, ptr %59, align 8, !tbaa !9
  br label %884

884:                                              ; preds = %923, %883
  %885 = load i64, ptr %59, align 8, !tbaa !9
  %886 = load i64, ptr %16, align 8, !tbaa !9
  %887 = sub nsw i64 %886, 1
  %888 = icmp sle i64 %885, %887
  br i1 %888, label %889, label %926

889:                                              ; preds = %884
  store i64 0, ptr %60, align 8, !tbaa !9
  br label %890

890:                                              ; preds = %908, %889
  %891 = load i64, ptr %60, align 8, !tbaa !9
  %892 = load i64, ptr %28, align 8, !tbaa !9
  %893 = sub nsw i64 %892, 1
  %894 = icmp sle i64 %891, %893
  br i1 %894, label %895, label %911

895:                                              ; preds = %890
  %896 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %45, i32 0, i32 6
  %897 = load ptr, ptr %896, align 8, !tbaa !21
  %898 = load i64, ptr %59, align 8, !tbaa !9
  %899 = getelementptr inbounds ptr, ptr %897, i64 %898
  %900 = load ptr, ptr %899, align 8, !tbaa !5
  %901 = load i64, ptr %60, align 8, !tbaa !9
  %902 = getelementptr inbounds double, ptr %900, i64 %901
  %903 = load double, ptr %902, align 8, !tbaa !11
  %904 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %50, i32 0, i32 4
  %905 = load ptr, ptr %904, align 8, !tbaa !21
  %906 = load i64, ptr %60, align 8, !tbaa !9
  %907 = getelementptr inbounds double, ptr %905, i64 %906
  store double %903, ptr %907, align 8, !tbaa !11
  br label %908

908:                                              ; preds = %895
  %909 = load i64, ptr %60, align 8, !tbaa !9
  %910 = add nsw i64 %909, 1
  store i64 %910, ptr %60, align 8, !tbaa !9
  br label %890, !llvm.loop !54

911:                                              ; preds = %890
  %912 = load i64, ptr %68, align 8, !tbaa !9
  %913 = load i64, ptr %28, align 8, !tbaa !9
  %914 = load i64, ptr %29, align 8, !tbaa !9
  %915 = load i64, ptr %19, align 8, !tbaa !9
  %916 = load i64, ptr %63, align 8, !tbaa !9
  %917 = load i64, ptr %30, align 8, !tbaa !9
  %918 = load ptr, ptr %26, align 8, !tbaa !5
  %919 = call noundef double @_ZN11alglib_impl15rbfv2nearradiusElPNS_8ae_stateE(i64 noundef %917, ptr noundef %918)
  %920 = load ptr, ptr %26, align 8, !tbaa !5
  %921 = call noundef i64 @_ZN11alglib_implL25rbfv2_designmatrixrowsizeEPNS_9ae_vectorES1_S1_S1_S1_S1_S1_lllldS1_PNS_15rbfv2calcbufferEPNS_8ae_stateE(ptr noundef %39, ptr noundef %40, ptr noundef %43, ptr noundef %37, ptr noundef %38, ptr noundef %41, ptr noundef %42, i64 noundef %913, i64 noundef %914, i64 noundef %915, i64 noundef %916, double noundef %919, ptr noundef %50, ptr noundef %79, ptr noundef %920)
  %922 = add nsw i64 %912, %921
  store i64 %922, ptr %68, align 8, !tbaa !9
  br label %923

923:                                              ; preds = %911
  %924 = load i64, ptr %59, align 8, !tbaa !9
  %925 = add nsw i64 %924, 1
  store i64 %925, ptr %59, align 8, !tbaa !9
  br label %884, !llvm.loop !55

926:                                              ; preds = %884
  %927 = load i64, ptr %68, align 8, !tbaa !9
  %928 = sitofp i64 %927 to double
  %929 = load ptr, ptr %26, align 8, !tbaa !5
  %930 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %928, double noundef 1.000000e+00, ptr noundef %929)
  %931 = load i64, ptr %16, align 8, !tbaa !9
  %932 = sitofp i64 %931 to double
  %933 = load ptr, ptr %26, align 8, !tbaa !5
  %934 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %932, double noundef 1.000000e+00, ptr noundef %933)
  %935 = fdiv double %930, %934
  %936 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %70, i32 0, i32 4
  %937 = load ptr, ptr %936, align 8, !tbaa !21
  %938 = load i64, ptr %63, align 8, !tbaa !9
  %939 = getelementptr inbounds double, ptr %937, i64 %938
  store double %935, ptr %939, align 8, !tbaa !11
  %940 = load double, ptr %71, align 8, !tbaa !11
  %941 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %70, i32 0, i32 4
  %942 = load ptr, ptr %941, align 8, !tbaa !21
  %943 = load i64, ptr %63, align 8, !tbaa !9
  %944 = getelementptr inbounds double, ptr %942, i64 %943
  %945 = load double, ptr %944, align 8, !tbaa !11
  %946 = fadd double %940, %945
  store double %946, ptr %71, align 8, !tbaa !11
  br label %947

947:                                              ; preds = %926
  %948 = load i64, ptr %63, align 8, !tbaa !9
  %949 = add nsw i64 %948, 1
  store i64 %949, ptr %63, align 8, !tbaa !9
  br label %878, !llvm.loop !56

950:                                              ; preds = %878
  store i64 0, ptr %63, align 8, !tbaa !9
  br label %951

951:                                              ; preds = %1659, %950
  %952 = load i64, ptr %63, align 8, !tbaa !9
  %953 = load i64, ptr %19, align 8, !tbaa !9
  %954 = sub nsw i64 %953, 1
  %955 = icmp sle i64 %952, %954
  br i1 %955, label %956, label %1662

956:                                              ; preds = %951
  %957 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %44, i32 0, i32 4
  %958 = load ptr, ptr %957, align 8, !tbaa !21
  %959 = load i64, ptr %63, align 8, !tbaa !9
  %960 = add nsw i64 %959, 1
  %961 = getelementptr inbounds i64, ptr %958, i64 %960
  %962 = load i64, ptr %961, align 8, !tbaa !9
  %963 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %44, i32 0, i32 4
  %964 = load ptr, ptr %963, align 8, !tbaa !21
  %965 = load i64, ptr %63, align 8, !tbaa !9
  %966 = getelementptr inbounds i64, ptr %964, i64 %965
  %967 = load i64, ptr %966, align 8, !tbaa !9
  %968 = sub nsw i64 %962, %967
  %969 = load i64, ptr %28, align 8, !tbaa !9
  %970 = load i64, ptr %29, align 8, !tbaa !9
  %971 = add nsw i64 %969, %970
  %972 = sdiv i64 %968, %971
  store i64 %972, ptr %47, align 8, !tbaa !9
  %973 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %44, i32 0, i32 4
  %974 = load ptr, ptr %973, align 8, !tbaa !21
  %975 = load i64, ptr %63, align 8, !tbaa !9
  %976 = add nsw i64 %975, 1
  %977 = getelementptr inbounds i64, ptr %974, i64 %976
  %978 = load i64, ptr %977, align 8, !tbaa !9
  %979 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %44, i32 0, i32 4
  %980 = load ptr, ptr %979, align 8, !tbaa !21
  %981 = load i64, ptr %63, align 8, !tbaa !9
  %982 = getelementptr inbounds i64, ptr %980, i64 %981
  %983 = load i64, ptr %982, align 8, !tbaa !9
  %984 = sub nsw i64 %978, %983
  %985 = load i64, ptr %47, align 8, !tbaa !9
  %986 = load i64, ptr %28, align 8, !tbaa !9
  %987 = load i64, ptr %29, align 8, !tbaa !9
  %988 = add nsw i64 %986, %987
  %989 = mul nsw i64 %985, %988
  %990 = icmp eq i64 %984, %989
  %991 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %990, ptr noundef @.str.149, ptr noundef %991)
  store i64 0, ptr %59, align 8, !tbaa !9
  br label %992

992:                                              ; preds = %1053, %956
  %993 = load i64, ptr %59, align 8, !tbaa !9
  %994 = load i64, ptr %16, align 8, !tbaa !9
  %995 = sub nsw i64 %994, 1
  %996 = icmp sle i64 %993, %995
  br i1 %996, label %997, label %1056

997:                                              ; preds = %992
  store i64 0, ptr %60, align 8, !tbaa !9
  br label %998

998:                                              ; preds = %1016, %997
  %999 = load i64, ptr %60, align 8, !tbaa !9
  %1000 = load i64, ptr %28, align 8, !tbaa !9
  %1001 = sub nsw i64 %1000, 1
  %1002 = icmp sle i64 %999, %1001
  br i1 %1002, label %1003, label %1019

1003:                                             ; preds = %998
  %1004 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %45, i32 0, i32 6
  %1005 = load ptr, ptr %1004, align 8, !tbaa !21
  %1006 = load i64, ptr %59, align 8, !tbaa !9
  %1007 = getelementptr inbounds ptr, ptr %1005, i64 %1006
  %1008 = load ptr, ptr %1007, align 8, !tbaa !5
  %1009 = load i64, ptr %60, align 8, !tbaa !9
  %1010 = getelementptr inbounds double, ptr %1008, i64 %1009
  %1011 = load double, ptr %1010, align 8, !tbaa !11
  %1012 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %50, i32 0, i32 4
  %1013 = load ptr, ptr %1012, align 8, !tbaa !21
  %1014 = load i64, ptr %60, align 8, !tbaa !9
  %1015 = getelementptr inbounds double, ptr %1013, i64 %1014
  store double %1011, ptr %1015, align 8, !tbaa !11
  br label %1016

1016:                                             ; preds = %1003
  %1017 = load i64, ptr %60, align 8, !tbaa !9
  %1018 = add nsw i64 %1017, 1
  store i64 %1018, ptr %60, align 8, !tbaa !9
  br label %998, !llvm.loop !57

1019:                                             ; preds = %998
  %1020 = load i64, ptr %28, align 8, !tbaa !9
  %1021 = load i64, ptr %29, align 8, !tbaa !9
  %1022 = load i64, ptr %19, align 8, !tbaa !9
  %1023 = load i64, ptr %63, align 8, !tbaa !9
  %1024 = load i64, ptr %30, align 8, !tbaa !9
  %1025 = load ptr, ptr %26, align 8, !tbaa !5
  %1026 = call noundef double @_ZN11alglib_impl15rbfv2nearradiusElPNS_8ae_stateE(i64 noundef %1024, ptr noundef %1025)
  %1027 = load ptr, ptr %26, align 8, !tbaa !5
  %1028 = call noundef i64 @_ZN11alglib_implL25rbfv2_designmatrixrowsizeEPNS_9ae_vectorES1_S1_S1_S1_S1_S1_lllldS1_PNS_15rbfv2calcbufferEPNS_8ae_stateE(ptr noundef %39, ptr noundef %40, ptr noundef %43, ptr noundef %37, ptr noundef %38, ptr noundef %41, ptr noundef %42, i64 noundef %1020, i64 noundef %1021, i64 noundef %1022, i64 noundef %1023, double noundef %1026, ptr noundef %50, ptr noundef %79, ptr noundef %1027)
  store i64 %1028, ptr %68, align 8, !tbaa !9
  %1029 = load i64, ptr %68, align 8, !tbaa !9
  %1030 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %54, i32 0, i32 4
  %1031 = load ptr, ptr %1030, align 8, !tbaa !21
  %1032 = load i64, ptr %59, align 8, !tbaa !9
  %1033 = getelementptr inbounds i64, ptr %1031, i64 %1032
  store i64 %1029, ptr %1033, align 8, !tbaa !9
  store i64 0, ptr %60, align 8, !tbaa !9
  br label %1034

1034:                                             ; preds = %1049, %1019
  %1035 = load i64, ptr %60, align 8, !tbaa !9
  %1036 = load i64, ptr %34, align 8, !tbaa !9
  %1037 = sub nsw i64 %1036, 1
  %1038 = icmp sle i64 %1035, %1037
  br i1 %1038, label %1039, label %1052

1039:                                             ; preds = %1034
  %1040 = load i64, ptr %68, align 8, !tbaa !9
  %1041 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %55, i32 0, i32 4
  %1042 = load ptr, ptr %1041, align 8, !tbaa !21
  %1043 = load i64, ptr %59, align 8, !tbaa !9
  %1044 = load i64, ptr %34, align 8, !tbaa !9
  %1045 = mul nsw i64 %1043, %1044
  %1046 = load i64, ptr %60, align 8, !tbaa !9
  %1047 = add nsw i64 %1045, %1046
  %1048 = getelementptr inbounds i64, ptr %1042, i64 %1047
  store i64 %1040, ptr %1048, align 8, !tbaa !9
  br label %1049

1049:                                             ; preds = %1039
  %1050 = load i64, ptr %60, align 8, !tbaa !9
  %1051 = add nsw i64 %1050, 1
  store i64 %1051, ptr %60, align 8, !tbaa !9
  br label %1034, !llvm.loop !58

1052:                                             ; preds = %1034
  br label %1053

1053:                                             ; preds = %1052
  %1054 = load i64, ptr %59, align 8, !tbaa !9
  %1055 = add nsw i64 %1054, 1
  store i64 %1055, ptr %59, align 8, !tbaa !9
  br label %992, !llvm.loop !59

1056:                                             ; preds = %992
  %1057 = load i64, ptr %47, align 8, !tbaa !9
  %1058 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %82, i64 noundef %1057, ptr noundef %1058)
  %1059 = load i64, ptr %47, align 8, !tbaa !9
  %1060 = load i64, ptr %34, align 8, !tbaa !9
  %1061 = mul nsw i64 %1059, %1060
  %1062 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %83, i64 noundef %1061, ptr noundef %1062)
  %1063 = load i64, ptr %47, align 8, !tbaa !9
  %1064 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %56, i64 noundef %1063, ptr noundef %1064)
  %1065 = load i64, ptr %16, align 8, !tbaa !9
  %1066 = load i64, ptr %34, align 8, !tbaa !9
  %1067 = mul nsw i64 %1065, %1066
  %1068 = load i64, ptr %47, align 8, !tbaa !9
  %1069 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl18sparsecreatecrsbufEllPNS_9ae_vectorEPNS_12sparsematrixEPNS_8ae_stateE(i64 noundef %1067, i64 noundef %1068, ptr noundef %55, ptr noundef %76, ptr noundef %1069)
  store double 0.000000e+00, ptr %69, align 8, !tbaa !11
  store i64 0, ptr %60, align 8, !tbaa !9
  br label %1070

1070:                                             ; preds = %1080, %1056
  %1071 = load i64, ptr %60, align 8, !tbaa !9
  %1072 = load i64, ptr %47, align 8, !tbaa !9
  %1073 = sub nsw i64 %1072, 1
  %1074 = icmp sle i64 %1071, %1073
  br i1 %1074, label %1075, label %1083

1075:                                             ; preds = %1070
  %1076 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %56, i32 0, i32 4
  %1077 = load ptr, ptr %1076, align 8, !tbaa !21
  %1078 = load i64, ptr %60, align 8, !tbaa !9
  %1079 = getelementptr inbounds double, ptr %1077, i64 %1078
  store double 0.000000e+00, ptr %1079, align 8, !tbaa !11
  br label %1080

1080:                                             ; preds = %1075
  %1081 = load i64, ptr %60, align 8, !tbaa !9
  %1082 = add nsw i64 %1081, 1
  store i64 %1082, ptr %60, align 8, !tbaa !9
  br label %1070, !llvm.loop !60

1083:                                             ; preds = %1070
  store i64 0, ptr %59, align 8, !tbaa !9
  br label %1084

1084:                                             ; preds = %1212, %1083
  %1085 = load i64, ptr %59, align 8, !tbaa !9
  %1086 = load i64, ptr %16, align 8, !tbaa !9
  %1087 = sub nsw i64 %1086, 1
  %1088 = icmp sle i64 %1085, %1087
  br i1 %1088, label %1089, label %1215

1089:                                             ; preds = %1084
  store i64 0, ptr %60, align 8, !tbaa !9
  br label %1090

1090:                                             ; preds = %1108, %1089
  %1091 = load i64, ptr %60, align 8, !tbaa !9
  %1092 = load i64, ptr %28, align 8, !tbaa !9
  %1093 = sub nsw i64 %1092, 1
  %1094 = icmp sle i64 %1091, %1093
  br i1 %1094, label %1095, label %1111

1095:                                             ; preds = %1090
  %1096 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %45, i32 0, i32 6
  %1097 = load ptr, ptr %1096, align 8, !tbaa !21
  %1098 = load i64, ptr %59, align 8, !tbaa !9
  %1099 = getelementptr inbounds ptr, ptr %1097, i64 %1098
  %1100 = load ptr, ptr %1099, align 8, !tbaa !5
  %1101 = load i64, ptr %60, align 8, !tbaa !9
  %1102 = getelementptr inbounds double, ptr %1100, i64 %1101
  %1103 = load double, ptr %1102, align 8, !tbaa !11
  %1104 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %50, i32 0, i32 4
  %1105 = load ptr, ptr %1104, align 8, !tbaa !21
  %1106 = load i64, ptr %60, align 8, !tbaa !9
  %1107 = getelementptr inbounds double, ptr %1105, i64 %1106
  store double %1103, ptr %1107, align 8, !tbaa !11
  br label %1108

1108:                                             ; preds = %1095
  %1109 = load i64, ptr %60, align 8, !tbaa !9
  %1110 = add nsw i64 %1109, 1
  store i64 %1110, ptr %60, align 8, !tbaa !9
  br label %1090, !llvm.loop !61

1111:                                             ; preds = %1090
  %1112 = load i64, ptr %28, align 8, !tbaa !9
  %1113 = load i64, ptr %29, align 8, !tbaa !9
  %1114 = load i64, ptr %19, align 8, !tbaa !9
  %1115 = load i64, ptr %63, align 8, !tbaa !9
  %1116 = load i64, ptr %30, align 8, !tbaa !9
  %1117 = load i64, ptr %30, align 8, !tbaa !9
  %1118 = load ptr, ptr %26, align 8, !tbaa !5
  %1119 = call noundef double @_ZN11alglib_impl15rbfv2nearradiusElPNS_8ae_stateE(i64 noundef %1117, ptr noundef %1118)
  %1120 = load i64, ptr %34, align 8, !tbaa !9
  %1121 = load double, ptr %84, align 8, !tbaa !11
  %1122 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_implL29rbfv2_designmatrixgeneraterowEPNS_9ae_vectorES1_S1_S1_S1_S1_S1_S1_llllldldS1_PNS_15rbfv2calcbufferES1_S1_S1_S1_PlPNS_8ae_stateE(ptr noundef %39, ptr noundef %40, ptr noundef %43, ptr noundef %37, ptr noundef %38, ptr noundef %41, ptr noundef %42, ptr noundef %44, i64 noundef %1112, i64 noundef %1113, i64 noundef %1114, i64 noundef %1115, i64 noundef %1116, double noundef %1119, i64 noundef %1120, double noundef %1121, ptr noundef %50, ptr noundef %79, ptr noundef %80, ptr noundef %81, ptr noundef %82, ptr noundef %83, ptr noundef %68, ptr noundef %1122)
  %1123 = load i64, ptr %68, align 8, !tbaa !9
  %1124 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %54, i32 0, i32 4
  %1125 = load ptr, ptr %1124, align 8, !tbaa !21
  %1126 = load i64, ptr %59, align 8, !tbaa !9
  %1127 = getelementptr inbounds i64, ptr %1125, i64 %1126
  %1128 = load i64, ptr %1127, align 8, !tbaa !9
  %1129 = icmp eq i64 %1123, %1128
  %1130 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1129, ptr noundef @.str.669, ptr noundef %1130)
  store i64 0, ptr %61, align 8, !tbaa !9
  br label %1131

1131:                                             ; preds = %1194, %1111
  %1132 = load i64, ptr %61, align 8, !tbaa !9
  %1133 = load i64, ptr %34, align 8, !tbaa !9
  %1134 = sub nsw i64 %1133, 1
  %1135 = icmp sle i64 %1132, %1134
  br i1 %1135, label %1136, label %1197

1136:                                             ; preds = %1131
  store i64 0, ptr %60, align 8, !tbaa !9
  br label %1137

1137:                                             ; preds = %1190, %1136
  %1138 = load i64, ptr %60, align 8, !tbaa !9
  %1139 = load i64, ptr %68, align 8, !tbaa !9
  %1140 = sub nsw i64 %1139, 1
  %1141 = icmp sle i64 %1138, %1140
  br i1 %1141, label %1142, label %1193

1142:                                             ; preds = %1137
  %1143 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %83, i32 0, i32 4
  %1144 = load ptr, ptr %1143, align 8, !tbaa !21
  %1145 = load i64, ptr %60, align 8, !tbaa !9
  %1146 = load i64, ptr %34, align 8, !tbaa !9
  %1147 = mul nsw i64 %1145, %1146
  %1148 = load i64, ptr %61, align 8, !tbaa !9
  %1149 = add nsw i64 %1147, %1148
  %1150 = getelementptr inbounds double, ptr %1144, i64 %1149
  %1151 = load double, ptr %1150, align 8, !tbaa !11
  store double %1151, ptr %66, align 8, !tbaa !11
  %1152 = load i64, ptr %59, align 8, !tbaa !9
  %1153 = load i64, ptr %34, align 8, !tbaa !9
  %1154 = mul nsw i64 %1152, %1153
  %1155 = load i64, ptr %61, align 8, !tbaa !9
  %1156 = add nsw i64 %1154, %1155
  %1157 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %82, i32 0, i32 4
  %1158 = load ptr, ptr %1157, align 8, !tbaa !21
  %1159 = load i64, ptr %60, align 8, !tbaa !9
  %1160 = getelementptr inbounds i64, ptr %1158, i64 %1159
  %1161 = load i64, ptr %1160, align 8, !tbaa !9
  %1162 = load double, ptr %66, align 8, !tbaa !11
  %1163 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl9sparsesetEPNS_12sparsematrixElldPNS_8ae_stateE(ptr noundef %76, i64 noundef %1156, i64 noundef %1161, double noundef %1162, ptr noundef %1163)
  %1164 = load double, ptr %69, align 8, !tbaa !11
  %1165 = load double, ptr %66, align 8, !tbaa !11
  %1166 = load ptr, ptr %26, align 8, !tbaa !5
  %1167 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1165, ptr noundef %1166)
  %1168 = fadd double %1164, %1167
  store double %1168, ptr %69, align 8, !tbaa !11
  %1169 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %56, i32 0, i32 4
  %1170 = load ptr, ptr %1169, align 8, !tbaa !21
  %1171 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %82, i32 0, i32 4
  %1172 = load ptr, ptr %1171, align 8, !tbaa !21
  %1173 = load i64, ptr %60, align 8, !tbaa !9
  %1174 = getelementptr inbounds i64, ptr %1172, i64 %1173
  %1175 = load i64, ptr %1174, align 8, !tbaa !9
  %1176 = getelementptr inbounds double, ptr %1170, i64 %1175
  %1177 = load double, ptr %1176, align 8, !tbaa !11
  %1178 = load double, ptr %66, align 8, !tbaa !11
  %1179 = load ptr, ptr %26, align 8, !tbaa !5
  %1180 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1178, ptr noundef %1179)
  %1181 = fadd double %1177, %1180
  %1182 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %56, i32 0, i32 4
  %1183 = load ptr, ptr %1182, align 8, !tbaa !21
  %1184 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %82, i32 0, i32 4
  %1185 = load ptr, ptr %1184, align 8, !tbaa !21
  %1186 = load i64, ptr %60, align 8, !tbaa !9
  %1187 = getelementptr inbounds i64, ptr %1185, i64 %1186
  %1188 = load i64, ptr %1187, align 8, !tbaa !9
  %1189 = getelementptr inbounds double, ptr %1183, i64 %1188
  store double %1181, ptr %1189, align 8, !tbaa !11
  br label %1190

1190:                                             ; preds = %1142
  %1191 = load i64, ptr %60, align 8, !tbaa !9
  %1192 = add nsw i64 %1191, 1
  store i64 %1192, ptr %60, align 8, !tbaa !9
  br label %1137, !llvm.loop !62

1193:                                             ; preds = %1137
  br label %1194

1194:                                             ; preds = %1193
  %1195 = load i64, ptr %61, align 8, !tbaa !9
  %1196 = add nsw i64 %1195, 1
  store i64 %1196, ptr %61, align 8, !tbaa !9
  br label %1131, !llvm.loop !63

1197:                                             ; preds = %1131
  %1198 = load ptr, ptr %24, align 8, !tbaa !5
  %1199 = load i8, ptr %1198, align 1, !tbaa !64, !range !65, !noundef !66
  %1200 = trunc i8 %1199 to i1
  br i1 %1200, label %1201, label %1211

1201:                                             ; preds = %1197
  %1202 = load ptr, ptr %22, align 8, !tbaa !5
  %1203 = load i64, ptr %28, align 8, !tbaa !9
  %1204 = load i64, ptr %29, align 8, !tbaa !9
  %1205 = load i64, ptr %30, align 8, !tbaa !9
  %1206 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_implL14rbfv2_zerofillEPNS_10rbfv2modelElllPNS_8ae_stateE(ptr noundef %1202, i64 noundef %1203, i64 noundef %1204, i64 noundef %1205, ptr noundef %1206)
  %1207 = load ptr, ptr %25, align 8, !tbaa !5
  %1208 = getelementptr inbounds %"struct.alglib_impl::rbfv2report", ptr %1207, i32 0, i32 0
  store i64 8, ptr %1208, align 8, !tbaa !28
  %1209 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 10000, ptr %1209, align 8, !tbaa !9
  %1210 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1210)
  store i32 1, ptr %85, align 4
  br label %1788

1211:                                             ; preds = %1197
  br label %1212

1212:                                             ; preds = %1211
  %1213 = load i64, ptr %59, align 8, !tbaa !9
  %1214 = add nsw i64 %1213, 1
  store i64 %1214, ptr %59, align 8, !tbaa !9
  br label %1084, !llvm.loop !67

1215:                                             ; preds = %1084
  %1216 = load double, ptr %69, align 8, !tbaa !11
  %1217 = load i64, ptr %47, align 8, !tbaa !9
  %1218 = sitofp i64 %1217 to double
  %1219 = fdiv double %1216, %1218
  store double %1219, ptr %69, align 8, !tbaa !11
  %1220 = load i64, ptr %47, align 8, !tbaa !9
  %1221 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %57, i64 noundef %1220, ptr noundef %1221)
  store i64 0, ptr %60, align 8, !tbaa !9
  br label %1222

1222:                                             ; preds = %1242, %1215
  %1223 = load i64, ptr %60, align 8, !tbaa !9
  %1224 = load i64, ptr %47, align 8, !tbaa !9
  %1225 = sub nsw i64 %1224, 1
  %1226 = icmp sle i64 %1223, %1225
  br i1 %1226, label %1227, label %1245

1227:                                             ; preds = %1222
  %1228 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %56, i32 0, i32 4
  %1229 = load ptr, ptr %1228, align 8, !tbaa !21
  %1230 = load i64, ptr %60, align 8, !tbaa !9
  %1231 = getelementptr inbounds double, ptr %1229, i64 %1230
  %1232 = load double, ptr %1231, align 8, !tbaa !11
  %1233 = load ptr, ptr %26, align 8, !tbaa !5
  %1234 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %1232, ptr noundef %1233)
  %1235 = load ptr, ptr %26, align 8, !tbaa !5
  %1236 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %1234, double noundef 1.000000e+00, ptr noundef %1235)
  %1237 = fdiv double 1.000000e+00, %1236
  %1238 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %57, i32 0, i32 4
  %1239 = load ptr, ptr %1238, align 8, !tbaa !21
  %1240 = load i64, ptr %60, align 8, !tbaa !9
  %1241 = getelementptr inbounds double, ptr %1239, i64 %1240
  store double %1237, ptr %1241, align 8, !tbaa !11
  br label %1242

1242:                                             ; preds = %1227
  %1243 = load i64, ptr %60, align 8, !tbaa !9
  %1244 = add nsw i64 %1243, 1
  store i64 %1244, ptr %60, align 8, !tbaa !9
  br label %1222, !llvm.loop !68

1245:                                             ; preds = %1222
  %1246 = load ptr, ptr %22, align 8, !tbaa !5
  %1247 = getelementptr inbounds %"struct.alglib_impl::rbfv2model", ptr %1246, i32 0, i32 14
  %1248 = load i64, ptr %1247, align 8, !tbaa !69
  %1249 = load i64, ptr @_ZN11alglib_implL19rbfv2_defaultmaxitsE, align 8, !tbaa !9
  %1250 = load ptr, ptr %26, align 8, !tbaa !5
  %1251 = call noundef i64 @_ZN11alglib_impl9coalesceiEllPNS_8ae_stateE(i64 noundef %1248, i64 noundef %1249, ptr noundef %1250)
  store i64 %1251, ptr %73, align 8, !tbaa !9
  %1252 = load i64, ptr %47, align 8, !tbaa !9
  %1253 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %58, i64 noundef %1252, ptr noundef %1253)
  %1254 = load i64, ptr %16, align 8, !tbaa !9
  %1255 = load i64, ptr %34, align 8, !tbaa !9
  %1256 = mul nsw i64 %1254, %1255
  %1257 = load i64, ptr %47, align 8, !tbaa !9
  %1258 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl13linlsqrcreateEllPNS_12linlsqrstateEPNS_8ae_stateE(i64 noundef %1256, i64 noundef %1257, ptr noundef %74, ptr noundef %1258)
  %1259 = load i64, ptr %73, align 8, !tbaa !9
  %1260 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14linlsqrsetcondEPNS_12linlsqrstateEddlPNS_8ae_stateE(ptr noundef %74, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef %1259, ptr noundef %1260)
  %1261 = load ptr, ptr %22, align 8, !tbaa !5
  %1262 = getelementptr inbounds %"struct.alglib_impl::rbfv2model", ptr %1261, i32 0, i32 13
  %1263 = load double, ptr %1262, align 8, !tbaa !70
  %1264 = load double, ptr %69, align 8, !tbaa !11
  %1265 = fmul double %1263, %1264
  %1266 = load ptr, ptr %26, align 8, !tbaa !5
  %1267 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %1265, ptr noundef %1266)
  %1268 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl17linlsqrsetlambdaiEPNS_12linlsqrstateEdPNS_8ae_stateE(ptr noundef %74, double noundef %1267, ptr noundef %1268)
  store i64 0, ptr %60, align 8, !tbaa !9
  br label %1269

1269:                                             ; preds = %1523, %1245
  %1270 = load i64, ptr %60, align 8, !tbaa !9
  %1271 = load i64, ptr %29, align 8, !tbaa !9
  %1272 = sub nsw i64 %1271, 1
  %1273 = icmp sle i64 %1270, %1272
  br i1 %1273, label %1274, label %1526

1274:                                             ; preds = %1269
  store i64 0, ptr %59, align 8, !tbaa !9
  br label %1275

1275:                                             ; preds = %1295, %1274
  %1276 = load i64, ptr %59, align 8, !tbaa !9
  %1277 = load i64, ptr %16, align 8, !tbaa !9
  %1278 = load i64, ptr %34, align 8, !tbaa !9
  %1279 = mul nsw i64 %1277, %1278
  %1280 = sub nsw i64 %1279, 1
  %1281 = icmp sle i64 %1276, %1280
  br i1 %1281, label %1282, label %1298

1282:                                             ; preds = %1275
  %1283 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %31, i32 0, i32 6
  %1284 = load ptr, ptr %1283, align 8, !tbaa !21
  %1285 = load i64, ptr %59, align 8, !tbaa !9
  %1286 = getelementptr inbounds ptr, ptr %1284, i64 %1285
  %1287 = load ptr, ptr %1286, align 8, !tbaa !5
  %1288 = load i64, ptr %60, align 8, !tbaa !9
  %1289 = getelementptr inbounds double, ptr %1287, i64 %1288
  %1290 = load double, ptr %1289, align 8, !tbaa !11
  %1291 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %78, i32 0, i32 4
  %1292 = load ptr, ptr %1291, align 8, !tbaa !21
  %1293 = load i64, ptr %59, align 8, !tbaa !9
  %1294 = getelementptr inbounds double, ptr %1292, i64 %1293
  store double %1290, ptr %1294, align 8, !tbaa !11
  br label %1295

1295:                                             ; preds = %1282
  %1296 = load i64, ptr %59, align 8, !tbaa !9
  %1297 = add nsw i64 %1296, 1
  store i64 %1297, ptr %59, align 8, !tbaa !9
  br label %1275, !llvm.loop !71

1298:                                             ; preds = %1275
  %1299 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl11linlsqrsetbEPNS_12linlsqrstateEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %74, ptr noundef %78, ptr noundef %1299)
  %1300 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14linlsqrrestartEPNS_12linlsqrstateEPNS_8ae_stateE(ptr noundef %74, ptr noundef %1300)
  %1301 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14linlsqrsetxrepEPNS_12linlsqrstateEbPNS_8ae_stateE(ptr noundef %74, i1 noundef zeroext true, ptr noundef %1301)
  br label %1302

1302:                                             ; preds = %1456, %1412, %1386, %1349, %1298
  %1303 = load ptr, ptr %26, align 8, !tbaa !5
  %1304 = call noundef zeroext i1 @_ZN11alglib_impl16linlsqriterationEPNS_12linlsqrstateEPNS_8ae_stateE(ptr noundef %74, ptr noundef %1303)
  br i1 %1304, label %1305, label %1458

1305:                                             ; preds = %1302
  %1306 = load ptr, ptr %24, align 8, !tbaa !5
  %1307 = load i8, ptr %1306, align 1, !tbaa !64, !range !65, !noundef !66
  %1308 = trunc i8 %1307 to i1
  br i1 %1308, label %1309, label %1319

1309:                                             ; preds = %1305
  %1310 = load ptr, ptr %22, align 8, !tbaa !5
  %1311 = load i64, ptr %28, align 8, !tbaa !9
  %1312 = load i64, ptr %29, align 8, !tbaa !9
  %1313 = load i64, ptr %30, align 8, !tbaa !9
  %1314 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_implL14rbfv2_zerofillEPNS_10rbfv2modelElllPNS_8ae_stateE(ptr noundef %1310, i64 noundef %1311, i64 noundef %1312, i64 noundef %1313, ptr noundef %1314)
  %1315 = load ptr, ptr %25, align 8, !tbaa !5
  %1316 = getelementptr inbounds %"struct.alglib_impl::rbfv2report", ptr %1315, i32 0, i32 0
  store i64 8, ptr %1316, align 8, !tbaa !28
  %1317 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 10000, ptr %1317, align 8, !tbaa !9
  %1318 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1318)
  store i32 1, ptr %85, align 4
  br label %1788

1319:                                             ; preds = %1305
  %1320 = getelementptr inbounds %"struct.alglib_impl::linlsqrstate", ptr %74, i32 0, i32 40
  %1321 = load i8, ptr %1320, align 2, !tbaa !72, !range !65, !noundef !66
  %1322 = trunc i8 %1321 to i1
  br i1 %1322, label %1323, label %1352

1323:                                             ; preds = %1319
  store i64 0, ptr %59, align 8, !tbaa !9
  br label %1324

1324:                                             ; preds = %1346, %1323
  %1325 = load i64, ptr %59, align 8, !tbaa !9
  %1326 = load i64, ptr %47, align 8, !tbaa !9
  %1327 = sub nsw i64 %1326, 1
  %1328 = icmp sle i64 %1325, %1327
  br i1 %1328, label %1329, label %1349

1329:                                             ; preds = %1324
  %1330 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %57, i32 0, i32 4
  %1331 = load ptr, ptr %1330, align 8, !tbaa !21
  %1332 = load i64, ptr %59, align 8, !tbaa !9
  %1333 = getelementptr inbounds double, ptr %1331, i64 %1332
  %1334 = load double, ptr %1333, align 8, !tbaa !11
  %1335 = getelementptr inbounds %"struct.alglib_impl::linlsqrstate", ptr %74, i32 0, i32 31
  %1336 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1335, i32 0, i32 4
  %1337 = load ptr, ptr %1336, align 8, !tbaa !21
  %1338 = load i64, ptr %59, align 8, !tbaa !9
  %1339 = getelementptr inbounds double, ptr %1337, i64 %1338
  %1340 = load double, ptr %1339, align 8, !tbaa !11
  %1341 = fmul double %1334, %1340
  %1342 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %58, i32 0, i32 4
  %1343 = load ptr, ptr %1342, align 8, !tbaa !21
  %1344 = load i64, ptr %59, align 8, !tbaa !9
  %1345 = getelementptr inbounds double, ptr %1343, i64 %1344
  store double %1341, ptr %1345, align 8, !tbaa !11
  br label %1346

1346:                                             ; preds = %1329
  %1347 = load i64, ptr %59, align 8, !tbaa !9
  %1348 = add nsw i64 %1347, 1
  store i64 %1348, ptr %59, align 8, !tbaa !9
  br label %1324, !llvm.loop !78

1349:                                             ; preds = %1324
  %1350 = getelementptr inbounds %"struct.alglib_impl::linlsqrstate", ptr %74, i32 0, i32 32
  %1351 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl8sparsemvEPNS_12sparsematrixEPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef %76, ptr noundef %58, ptr noundef %1350, ptr noundef %1351)
  br label %1302, !llvm.loop !79

1352:                                             ; preds = %1319
  %1353 = getelementptr inbounds %"struct.alglib_impl::linlsqrstate", ptr %74, i32 0, i32 41
  %1354 = load i8, ptr %1353, align 1, !tbaa !80, !range !65, !noundef !66
  %1355 = trunc i8 %1354 to i1
  br i1 %1355, label %1356, label %1387

1356:                                             ; preds = %1352
  %1357 = getelementptr inbounds %"struct.alglib_impl::linlsqrstate", ptr %74, i32 0, i32 31
  %1358 = getelementptr inbounds %"struct.alglib_impl::linlsqrstate", ptr %74, i32 0, i32 33
  %1359 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl9sparsemtvEPNS_12sparsematrixEPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef %76, ptr noundef %1357, ptr noundef %1358, ptr noundef %1359)
  store i64 0, ptr %59, align 8, !tbaa !9
  br label %1360

1360:                                             ; preds = %1383, %1356
  %1361 = load i64, ptr %59, align 8, !tbaa !9
  %1362 = load i64, ptr %47, align 8, !tbaa !9
  %1363 = sub nsw i64 %1362, 1
  %1364 = icmp sle i64 %1361, %1363
  br i1 %1364, label %1365, label %1386

1365:                                             ; preds = %1360
  %1366 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %57, i32 0, i32 4
  %1367 = load ptr, ptr %1366, align 8, !tbaa !21
  %1368 = load i64, ptr %59, align 8, !tbaa !9
  %1369 = getelementptr inbounds double, ptr %1367, i64 %1368
  %1370 = load double, ptr %1369, align 8, !tbaa !11
  %1371 = getelementptr inbounds %"struct.alglib_impl::linlsqrstate", ptr %74, i32 0, i32 33
  %1372 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1371, i32 0, i32 4
  %1373 = load ptr, ptr %1372, align 8, !tbaa !21
  %1374 = load i64, ptr %59, align 8, !tbaa !9
  %1375 = getelementptr inbounds double, ptr %1373, i64 %1374
  %1376 = load double, ptr %1375, align 8, !tbaa !11
  %1377 = fmul double %1370, %1376
  %1378 = getelementptr inbounds %"struct.alglib_impl::linlsqrstate", ptr %74, i32 0, i32 33
  %1379 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1378, i32 0, i32 4
  %1380 = load ptr, ptr %1379, align 8, !tbaa !21
  %1381 = load i64, ptr %59, align 8, !tbaa !9
  %1382 = getelementptr inbounds double, ptr %1380, i64 %1381
  store double %1377, ptr %1382, align 8, !tbaa !11
  br label %1383

1383:                                             ; preds = %1365
  %1384 = load i64, ptr %59, align 8, !tbaa !9
  %1385 = add nsw i64 %1384, 1
  store i64 %1385, ptr %59, align 8, !tbaa !9
  br label %1360, !llvm.loop !81

1386:                                             ; preds = %1360
  br label %1302, !llvm.loop !79

1387:                                             ; preds = %1352
  %1388 = getelementptr inbounds %"struct.alglib_impl::linlsqrstate", ptr %74, i32 0, i32 39
  %1389 = load i8, ptr %1388, align 1, !tbaa !82, !range !65, !noundef !66
  %1390 = trunc i8 %1389 to i1
  br i1 %1390, label %1391, label %1456

1391:                                             ; preds = %1387
  store double 0.000000e+00, ptr %72, align 8, !tbaa !11
  store i64 0, ptr %59, align 8, !tbaa !9
  br label %1392

1392:                                             ; preds = %1409, %1391
  %1393 = load i64, ptr %59, align 8, !tbaa !9
  %1394 = load i64, ptr %63, align 8, !tbaa !9
  %1395 = sub nsw i64 %1394, 1
  %1396 = icmp sle i64 %1393, %1395
  br i1 %1396, label %1397, label %1412

1397:                                             ; preds = %1392
  %1398 = load double, ptr %72, align 8, !tbaa !11
  %1399 = load i64, ptr %73, align 8, !tbaa !9
  %1400 = load i64, ptr %29, align 8, !tbaa !9
  %1401 = mul nsw i64 %1399, %1400
  %1402 = sitofp i64 %1401 to double
  %1403 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %70, i32 0, i32 4
  %1404 = load ptr, ptr %1403, align 8, !tbaa !21
  %1405 = load i64, ptr %59, align 8, !tbaa !9
  %1406 = getelementptr inbounds double, ptr %1404, i64 %1405
  %1407 = load double, ptr %1406, align 8, !tbaa !11
  %1408 = call double @llvm.fmuladd.f64(double %1402, double %1407, double %1398)
  store double %1408, ptr %72, align 8, !tbaa !11
  br label %1409

1409:                                             ; preds = %1397
  %1410 = load i64, ptr %59, align 8, !tbaa !9
  %1411 = add nsw i64 %1410, 1
  store i64 %1411, ptr %59, align 8, !tbaa !9
  br label %1392, !llvm.loop !83

1412:                                             ; preds = %1392
  %1413 = load double, ptr %72, align 8, !tbaa !11
  %1414 = load ptr, ptr %26, align 8, !tbaa !5
  %1415 = call noundef i64 @_ZN11alglib_impl26linlsqrpeekiterationscountEPNS_12linlsqrstateEPNS_8ae_stateE(ptr noundef %74, ptr noundef %1414)
  %1416 = load i64, ptr %60, align 8, !tbaa !9
  %1417 = load i64, ptr %73, align 8, !tbaa !9
  %1418 = mul nsw i64 %1416, %1417
  %1419 = add nsw i64 %1415, %1418
  %1420 = sitofp i64 %1419 to double
  %1421 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %70, i32 0, i32 4
  %1422 = load ptr, ptr %1421, align 8, !tbaa !21
  %1423 = load i64, ptr %63, align 8, !tbaa !9
  %1424 = getelementptr inbounds double, ptr %1422, i64 %1423
  %1425 = load double, ptr %1424, align 8, !tbaa !11
  %1426 = call double @llvm.fmuladd.f64(double %1420, double %1425, double %1413)
  store double %1426, ptr %72, align 8, !tbaa !11
  %1427 = load double, ptr %72, align 8, !tbaa !11
  %1428 = load double, ptr %71, align 8, !tbaa !11
  %1429 = load i64, ptr %73, align 8, !tbaa !9
  %1430 = sitofp i64 %1429 to double
  %1431 = fmul double %1428, %1430
  %1432 = load i64, ptr %29, align 8, !tbaa !9
  %1433 = sitofp i64 %1432 to double
  %1434 = fmul double %1431, %1433
  %1435 = fdiv double %1427, %1434
  store double %1435, ptr %72, align 8, !tbaa !11
  %1436 = load double, ptr %72, align 8, !tbaa !11
  %1437 = fmul double 1.000000e+04, %1436
  store double %1437, ptr %72, align 8, !tbaa !11
  %1438 = load double, ptr %72, align 8, !tbaa !11
  %1439 = load ptr, ptr %26, align 8, !tbaa !5
  %1440 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1438, double noundef 0.000000e+00, ptr noundef %1439)
  store double %1440, ptr %72, align 8, !tbaa !11
  %1441 = load double, ptr %72, align 8, !tbaa !11
  %1442 = load ptr, ptr %26, align 8, !tbaa !5
  %1443 = call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %1441, double noundef 1.000000e+04, ptr noundef %1442)
  store double %1443, ptr %72, align 8, !tbaa !11
  %1444 = load ptr, ptr %23, align 8, !tbaa !5
  %1445 = load i64, ptr %1444, align 8, !tbaa !9
  %1446 = load double, ptr %72, align 8, !tbaa !11
  %1447 = load ptr, ptr %26, align 8, !tbaa !5
  %1448 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %1446, ptr noundef %1447)
  %1449 = add nsw i64 %1448, 1
  %1450 = icmp sle i64 %1445, %1449
  %1451 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1450, ptr noundef @.str.670, ptr noundef %1451)
  %1452 = load double, ptr %72, align 8, !tbaa !11
  %1453 = load ptr, ptr %26, align 8, !tbaa !5
  %1454 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %1452, ptr noundef %1453)
  %1455 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 %1454, ptr %1455, align 8, !tbaa !9
  br label %1302, !llvm.loop !79

1456:                                             ; preds = %1387
  %1457 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext false, ptr noundef @.str.671, ptr noundef %1457)
  br label %1302, !llvm.loop !79

1458:                                             ; preds = %1302
  %1459 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14linlsqrresultsEPNS_12linlsqrstateEPNS_9ae_vectorEPNS_13linlsqrreportEPNS_8ae_stateE(ptr noundef %74, ptr noundef %77, ptr noundef %75, ptr noundef %1459)
  %1460 = getelementptr inbounds %"struct.alglib_impl::linlsqrreport", ptr %75, i32 0, i32 2
  %1461 = load i64, ptr %1460, align 8, !tbaa !84
  %1462 = icmp sgt i64 %1461, 0
  %1463 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1462, ptr noundef @.str.669, ptr noundef %1463)
  store i64 0, ptr %59, align 8, !tbaa !9
  br label %1464

1464:                                             ; preds = %1485, %1458
  %1465 = load i64, ptr %59, align 8, !tbaa !9
  %1466 = load i64, ptr %47, align 8, !tbaa !9
  %1467 = sub nsw i64 %1466, 1
  %1468 = icmp sle i64 %1465, %1467
  br i1 %1468, label %1469, label %1488

1469:                                             ; preds = %1464
  %1470 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %57, i32 0, i32 4
  %1471 = load ptr, ptr %1470, align 8, !tbaa !21
  %1472 = load i64, ptr %59, align 8, !tbaa !9
  %1473 = getelementptr inbounds double, ptr %1471, i64 %1472
  %1474 = load double, ptr %1473, align 8, !tbaa !11
  %1475 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %77, i32 0, i32 4
  %1476 = load ptr, ptr %1475, align 8, !tbaa !21
  %1477 = load i64, ptr %59, align 8, !tbaa !9
  %1478 = getelementptr inbounds double, ptr %1476, i64 %1477
  %1479 = load double, ptr %1478, align 8, !tbaa !11
  %1480 = fmul double %1474, %1479
  %1481 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %77, i32 0, i32 4
  %1482 = load ptr, ptr %1481, align 8, !tbaa !21
  %1483 = load i64, ptr %59, align 8, !tbaa !9
  %1484 = getelementptr inbounds double, ptr %1482, i64 %1483
  store double %1480, ptr %1484, align 8, !tbaa !11
  br label %1485

1485:                                             ; preds = %1469
  %1486 = load i64, ptr %59, align 8, !tbaa !9
  %1487 = add nsw i64 %1486, 1
  store i64 %1487, ptr %59, align 8, !tbaa !9
  br label %1464, !llvm.loop !86

1488:                                             ; preds = %1464
  store i64 0, ptr %59, align 8, !tbaa !9
  br label %1489

1489:                                             ; preds = %1519, %1488
  %1490 = load i64, ptr %59, align 8, !tbaa !9
  %1491 = load i64, ptr %47, align 8, !tbaa !9
  %1492 = sub nsw i64 %1491, 1
  %1493 = icmp sle i64 %1490, %1492
  br i1 %1493, label %1494, label %1522

1494:                                             ; preds = %1489
  %1495 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %44, i32 0, i32 4
  %1496 = load ptr, ptr %1495, align 8, !tbaa !21
  %1497 = load i64, ptr %63, align 8, !tbaa !9
  %1498 = getelementptr inbounds i64, ptr %1496, i64 %1497
  %1499 = load i64, ptr %1498, align 8, !tbaa !9
  %1500 = load i64, ptr %28, align 8, !tbaa !9
  %1501 = load i64, ptr %29, align 8, !tbaa !9
  %1502 = add nsw i64 %1500, %1501
  %1503 = load i64, ptr %59, align 8, !tbaa !9
  %1504 = mul nsw i64 %1502, %1503
  %1505 = add nsw i64 %1499, %1504
  store i64 %1505, ptr %64, align 8, !tbaa !9
  %1506 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %77, i32 0, i32 4
  %1507 = load ptr, ptr %1506, align 8, !tbaa !21
  %1508 = load i64, ptr %59, align 8, !tbaa !9
  %1509 = getelementptr inbounds double, ptr %1507, i64 %1508
  %1510 = load double, ptr %1509, align 8, !tbaa !11
  %1511 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %43, i32 0, i32 4
  %1512 = load ptr, ptr %1511, align 8, !tbaa !21
  %1513 = load i64, ptr %64, align 8, !tbaa !9
  %1514 = load i64, ptr %28, align 8, !tbaa !9
  %1515 = add nsw i64 %1513, %1514
  %1516 = load i64, ptr %60, align 8, !tbaa !9
  %1517 = add nsw i64 %1515, %1516
  %1518 = getelementptr inbounds double, ptr %1512, i64 %1517
  store double %1510, ptr %1518, align 8, !tbaa !11
  br label %1519

1519:                                             ; preds = %1494
  %1520 = load i64, ptr %59, align 8, !tbaa !9
  %1521 = add nsw i64 %1520, 1
  store i64 %1521, ptr %59, align 8, !tbaa !9
  br label %1489, !llvm.loop !87

1522:                                             ; preds = %1489
  br label %1523

1523:                                             ; preds = %1522
  %1524 = load i64, ptr %60, align 8, !tbaa !9
  %1525 = add nsw i64 %1524, 1
  store i64 %1525, ptr %60, align 8, !tbaa !9
  br label %1269, !llvm.loop !88

1526:                                             ; preds = %1269
  store i64 0, ptr %59, align 8, !tbaa !9
  br label %1527

1527:                                             ; preds = %1655, %1526
  %1528 = load i64, ptr %59, align 8, !tbaa !9
  %1529 = load i64, ptr %16, align 8, !tbaa !9
  %1530 = sub nsw i64 %1529, 1
  %1531 = icmp sle i64 %1528, %1530
  br i1 %1531, label %1532, label %1658

1532:                                             ; preds = %1527
  store i64 0, ptr %60, align 8, !tbaa !9
  br label %1533

1533:                                             ; preds = %1551, %1532
  %1534 = load i64, ptr %60, align 8, !tbaa !9
  %1535 = load i64, ptr %28, align 8, !tbaa !9
  %1536 = sub nsw i64 %1535, 1
  %1537 = icmp sle i64 %1534, %1536
  br i1 %1537, label %1538, label %1554

1538:                                             ; preds = %1533
  %1539 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %45, i32 0, i32 6
  %1540 = load ptr, ptr %1539, align 8, !tbaa !21
  %1541 = load i64, ptr %59, align 8, !tbaa !9
  %1542 = getelementptr inbounds ptr, ptr %1540, i64 %1541
  %1543 = load ptr, ptr %1542, align 8, !tbaa !5
  %1544 = load i64, ptr %60, align 8, !tbaa !9
  %1545 = getelementptr inbounds double, ptr %1543, i64 %1544
  %1546 = load double, ptr %1545, align 8, !tbaa !11
  %1547 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %50, i32 0, i32 4
  %1548 = load ptr, ptr %1547, align 8, !tbaa !21
  %1549 = load i64, ptr %60, align 8, !tbaa !9
  %1550 = getelementptr inbounds double, ptr %1548, i64 %1549
  store double %1546, ptr %1550, align 8, !tbaa !11
  br label %1551

1551:                                             ; preds = %1538
  %1552 = load i64, ptr %60, align 8, !tbaa !9
  %1553 = add nsw i64 %1552, 1
  store i64 %1553, ptr %60, align 8, !tbaa !9
  br label %1533, !llvm.loop !89

1554:                                             ; preds = %1533
  %1555 = load i64, ptr %28, align 8, !tbaa !9
  %1556 = load i64, ptr %29, align 8, !tbaa !9
  %1557 = load i64, ptr %19, align 8, !tbaa !9
  %1558 = load i64, ptr %63, align 8, !tbaa !9
  %1559 = load i64, ptr %30, align 8, !tbaa !9
  %1560 = load i64, ptr %30, align 8, !tbaa !9
  %1561 = load ptr, ptr %26, align 8, !tbaa !5
  %1562 = call noundef double @_ZN11alglib_impl14rbfv2farradiusElPNS_8ae_stateE(i64 noundef %1560, ptr noundef %1561)
  %1563 = load i64, ptr %34, align 8, !tbaa !9
  %1564 = load double, ptr %84, align 8, !tbaa !11
  %1565 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_implL29rbfv2_designmatrixgeneraterowEPNS_9ae_vectorES1_S1_S1_S1_S1_S1_S1_llllldldS1_PNS_15rbfv2calcbufferES1_S1_S1_S1_PlPNS_8ae_stateE(ptr noundef %39, ptr noundef %40, ptr noundef %43, ptr noundef %37, ptr noundef %38, ptr noundef %41, ptr noundef %42, ptr noundef %44, i64 noundef %1555, i64 noundef %1556, i64 noundef %1557, i64 noundef %1558, i64 noundef %1559, double noundef %1562, i64 noundef %1563, double noundef %1564, ptr noundef %50, ptr noundef %79, ptr noundef %80, ptr noundef %81, ptr noundef %82, ptr noundef %83, ptr noundef %68, ptr noundef %1565)
  store i64 0, ptr %60, align 8, !tbaa !9
  br label %1566

1566:                                             ; preds = %1651, %1554
  %1567 = load i64, ptr %60, align 8, !tbaa !9
  %1568 = load i64, ptr %68, align 8, !tbaa !9
  %1569 = sub nsw i64 %1568, 1
  %1570 = icmp sle i64 %1567, %1569
  br i1 %1570, label %1571, label %1654

1571:                                             ; preds = %1566
  %1572 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %44, i32 0, i32 4
  %1573 = load ptr, ptr %1572, align 8, !tbaa !21
  %1574 = load i64, ptr %63, align 8, !tbaa !9
  %1575 = getelementptr inbounds i64, ptr %1573, i64 %1574
  %1576 = load i64, ptr %1575, align 8, !tbaa !9
  %1577 = load i64, ptr %28, align 8, !tbaa !9
  %1578 = load i64, ptr %29, align 8, !tbaa !9
  %1579 = add nsw i64 %1577, %1578
  %1580 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %82, i32 0, i32 4
  %1581 = load ptr, ptr %1580, align 8, !tbaa !21
  %1582 = load i64, ptr %60, align 8, !tbaa !9
  %1583 = getelementptr inbounds i64, ptr %1581, i64 %1582
  %1584 = load i64, ptr %1583, align 8, !tbaa !9
  %1585 = mul nsw i64 %1579, %1584
  %1586 = add nsw i64 %1576, %1585
  %1587 = load i64, ptr %28, align 8, !tbaa !9
  %1588 = add nsw i64 %1586, %1587
  store i64 %1588, ptr %65, align 8, !tbaa !9
  store i64 0, ptr %61, align 8, !tbaa !9
  br label %1589

1589:                                             ; preds = %1647, %1571
  %1590 = load i64, ptr %61, align 8, !tbaa !9
  %1591 = load i64, ptr %34, align 8, !tbaa !9
  %1592 = sub nsw i64 %1591, 1
  %1593 = icmp sle i64 %1590, %1592
  br i1 %1593, label %1594, label %1650

1594:                                             ; preds = %1589
  %1595 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %83, i32 0, i32 4
  %1596 = load ptr, ptr %1595, align 8, !tbaa !21
  %1597 = load i64, ptr %60, align 8, !tbaa !9
  %1598 = load i64, ptr %34, align 8, !tbaa !9
  %1599 = mul nsw i64 %1597, %1598
  %1600 = load i64, ptr %61, align 8, !tbaa !9
  %1601 = add nsw i64 %1599, %1600
  %1602 = getelementptr inbounds double, ptr %1596, i64 %1601
  %1603 = load double, ptr %1602, align 8, !tbaa !11
  store double %1603, ptr %66, align 8, !tbaa !11
  store i64 0, ptr %62, align 8, !tbaa !9
  br label %1604

1604:                                             ; preds = %1643, %1594
  %1605 = load i64, ptr %62, align 8, !tbaa !9
  %1606 = load i64, ptr %29, align 8, !tbaa !9
  %1607 = sub nsw i64 %1606, 1
  %1608 = icmp sle i64 %1605, %1607
  br i1 %1608, label %1609, label %1646

1609:                                             ; preds = %1604
  %1610 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %31, i32 0, i32 6
  %1611 = load ptr, ptr %1610, align 8, !tbaa !21
  %1612 = load i64, ptr %59, align 8, !tbaa !9
  %1613 = load i64, ptr %34, align 8, !tbaa !9
  %1614 = mul nsw i64 %1612, %1613
  %1615 = load i64, ptr %61, align 8, !tbaa !9
  %1616 = add nsw i64 %1614, %1615
  %1617 = getelementptr inbounds ptr, ptr %1611, i64 %1616
  %1618 = load ptr, ptr %1617, align 8, !tbaa !5
  %1619 = load i64, ptr %62, align 8, !tbaa !9
  %1620 = getelementptr inbounds double, ptr %1618, i64 %1619
  %1621 = load double, ptr %1620, align 8, !tbaa !11
  %1622 = load double, ptr %66, align 8, !tbaa !11
  %1623 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %43, i32 0, i32 4
  %1624 = load ptr, ptr %1623, align 8, !tbaa !21
  %1625 = load i64, ptr %65, align 8, !tbaa !9
  %1626 = load i64, ptr %62, align 8, !tbaa !9
  %1627 = add nsw i64 %1625, %1626
  %1628 = getelementptr inbounds double, ptr %1624, i64 %1627
  %1629 = load double, ptr %1628, align 8, !tbaa !11
  %1630 = fneg double %1622
  %1631 = call double @llvm.fmuladd.f64(double %1630, double %1629, double %1621)
  %1632 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %31, i32 0, i32 6
  %1633 = load ptr, ptr %1632, align 8, !tbaa !21
  %1634 = load i64, ptr %59, align 8, !tbaa !9
  %1635 = load i64, ptr %34, align 8, !tbaa !9
  %1636 = mul nsw i64 %1634, %1635
  %1637 = load i64, ptr %61, align 8, !tbaa !9
  %1638 = add nsw i64 %1636, %1637
  %1639 = getelementptr inbounds ptr, ptr %1633, i64 %1638
  %1640 = load ptr, ptr %1639, align 8, !tbaa !5
  %1641 = load i64, ptr %62, align 8, !tbaa !9
  %1642 = getelementptr inbounds double, ptr %1640, i64 %1641
  store double %1631, ptr %1642, align 8, !tbaa !11
  br label %1643

1643:                                             ; preds = %1609
  %1644 = load i64, ptr %62, align 8, !tbaa !9
  %1645 = add nsw i64 %1644, 1
  store i64 %1645, ptr %62, align 8, !tbaa !9
  br label %1604, !llvm.loop !90

1646:                                             ; preds = %1604
  br label %1647

1647:                                             ; preds = %1646
  %1648 = load i64, ptr %61, align 8, !tbaa !9
  %1649 = add nsw i64 %1648, 1
  store i64 %1649, ptr %61, align 8, !tbaa !9
  br label %1589, !llvm.loop !91

1650:                                             ; preds = %1589
  br label %1651

1651:                                             ; preds = %1650
  %1652 = load i64, ptr %60, align 8, !tbaa !9
  %1653 = add nsw i64 %1652, 1
  store i64 %1653, ptr %60, align 8, !tbaa !9
  br label %1566, !llvm.loop !92

1654:                                             ; preds = %1566
  br label %1655

1655:                                             ; preds = %1654
  %1656 = load i64, ptr %59, align 8, !tbaa !9
  %1657 = add nsw i64 %1656, 1
  store i64 %1657, ptr %59, align 8, !tbaa !9
  br label %1527, !llvm.loop !93

1658:                                             ; preds = %1527
  br label %1659

1659:                                             ; preds = %1658
  %1660 = load i64, ptr %63, align 8, !tbaa !9
  %1661 = add nsw i64 %1660, 1
  store i64 %1661, ptr %63, align 8, !tbaa !9
  br label %951, !llvm.loop !94

1662:                                             ; preds = %951
  %1663 = load i64, ptr %30, align 8, !tbaa !9
  %1664 = load ptr, ptr %22, align 8, !tbaa !5
  %1665 = getelementptr inbounds %"struct.alglib_impl::rbfv2model", ptr %1664, i32 0, i32 2
  store i64 %1663, ptr %1665, align 8, !tbaa !95
  %1666 = load i64, ptr %19, align 8, !tbaa !9
  %1667 = load ptr, ptr %22, align 8, !tbaa !5
  %1668 = getelementptr inbounds %"struct.alglib_impl::rbfv2model", ptr %1667, i32 0, i32 3
  store i64 %1666, ptr %1668, align 8, !tbaa !96
  %1669 = load ptr, ptr %22, align 8, !tbaa !5
  %1670 = getelementptr inbounds %"struct.alglib_impl::rbfv2model", ptr %1669, i32 0, i32 4
  call void @_ZN11alglib_impl15ae_swap_vectorsEPNS_9ae_vectorES1_(ptr noundef %1670, ptr noundef %37)
  %1671 = load ptr, ptr %22, align 8, !tbaa !5
  %1672 = getelementptr inbounds %"struct.alglib_impl::rbfv2model", ptr %1671, i32 0, i32 6
  call void @_ZN11alglib_impl15ae_swap_vectorsEPNS_9ae_vectorES1_(ptr noundef %1672, ptr noundef %38)
  %1673 = load ptr, ptr %22, align 8, !tbaa !5
  %1674 = getelementptr inbounds %"struct.alglib_impl::rbfv2model", ptr %1673, i32 0, i32 7
  call void @_ZN11alglib_impl15ae_swap_vectorsEPNS_9ae_vectorES1_(ptr noundef %1674, ptr noundef %39)
  %1675 = load ptr, ptr %22, align 8, !tbaa !5
  %1676 = getelementptr inbounds %"struct.alglib_impl::rbfv2model", ptr %1675, i32 0, i32 8
  call void @_ZN11alglib_impl15ae_swap_vectorsEPNS_9ae_vectorES1_(ptr noundef %1676, ptr noundef %40)
  %1677 = load ptr, ptr %22, align 8, !tbaa !5
  %1678 = getelementptr inbounds %"struct.alglib_impl::rbfv2model", ptr %1677, i32 0, i32 9
  call void @_ZN11alglib_impl15ae_swap_vectorsEPNS_9ae_vectorES1_(ptr noundef %1678, ptr noundef %41)
  %1679 = load ptr, ptr %22, align 8, !tbaa !5
  %1680 = getelementptr inbounds %"struct.alglib_impl::rbfv2model", ptr %1679, i32 0, i32 10
  call void @_ZN11alglib_impl15ae_swap_vectorsEPNS_9ae_vectorES1_(ptr noundef %1680, ptr noundef %42)
  %1681 = load ptr, ptr %22, align 8, !tbaa !5
  %1682 = getelementptr inbounds %"struct.alglib_impl::rbfv2model", ptr %1681, i32 0, i32 11
  call void @_ZN11alglib_impl15ae_swap_vectorsEPNS_9ae_vectorES1_(ptr noundef %1682, ptr noundef %43)
  %1683 = load ptr, ptr %22, align 8, !tbaa !5
  %1684 = getelementptr inbounds %"struct.alglib_impl::rbfv2model", ptr %1683, i32 0, i32 12
  call void @_ZN11alglib_impl16ae_swap_matricesEPNS_9ae_matrixES1_(ptr noundef %1684, ptr noundef %33)
  %1685 = load ptr, ptr %22, align 8, !tbaa !5
  %1686 = getelementptr inbounds %"struct.alglib_impl::rbfv2model", ptr %1685, i32 0, i32 5
  %1687 = load i64, ptr %28, align 8, !tbaa !9
  %1688 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %1686, i64 noundef %1687, ptr noundef %1688)
  store i64 0, ptr %59, align 8, !tbaa !9
  br label %1689

1689:                                             ; preds = %1707, %1662
  %1690 = load i64, ptr %59, align 8, !tbaa !9
  %1691 = load i64, ptr %28, align 8, !tbaa !9
  %1692 = sub nsw i64 %1691, 1
  %1693 = icmp sle i64 %1690, %1692
  br i1 %1693, label %1694, label %1710

1694:                                             ; preds = %1689
  %1695 = load ptr, ptr %17, align 8, !tbaa !5
  %1696 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1695, i32 0, i32 4
  %1697 = load ptr, ptr %1696, align 8, !tbaa !21
  %1698 = load i64, ptr %59, align 8, !tbaa !9
  %1699 = getelementptr inbounds double, ptr %1697, i64 %1698
  %1700 = load double, ptr %1699, align 8, !tbaa !11
  %1701 = load ptr, ptr %22, align 8, !tbaa !5
  %1702 = getelementptr inbounds %"struct.alglib_impl::rbfv2model", ptr %1701, i32 0, i32 5
  %1703 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1702, i32 0, i32 4
  %1704 = load ptr, ptr %1703, align 8, !tbaa !21
  %1705 = load i64, ptr %59, align 8, !tbaa !9
  %1706 = getelementptr inbounds double, ptr %1704, i64 %1705
  store double %1700, ptr %1706, align 8, !tbaa !11
  br label %1707

1707:                                             ; preds = %1694
  %1708 = load i64, ptr %59, align 8, !tbaa !9
  %1709 = add nsw i64 %1708, 1
  store i64 %1709, ptr %59, align 8, !tbaa !9
  br label %1689, !llvm.loop !97

1710:                                             ; preds = %1689
  %1711 = load ptr, ptr %25, align 8, !tbaa !5
  %1712 = getelementptr inbounds %"struct.alglib_impl::rbfv2report", ptr %1711, i32 0, i32 0
  store i64 1, ptr %1712, align 8, !tbaa !28
  %1713 = load ptr, ptr %25, align 8, !tbaa !5
  %1714 = getelementptr inbounds %"struct.alglib_impl::rbfv2report", ptr %1713, i32 0, i32 1
  store double 0.000000e+00, ptr %1714, align 8, !tbaa !25
  %1715 = load ptr, ptr %25, align 8, !tbaa !5
  %1716 = getelementptr inbounds %"struct.alglib_impl::rbfv2report", ptr %1715, i32 0, i32 2
  store double 0.000000e+00, ptr %1716, align 8, !tbaa !27
  store i64 0, ptr %59, align 8, !tbaa !9
  br label %1717

1717:                                             ; preds = %1770, %1710
  %1718 = load i64, ptr %59, align 8, !tbaa !9
  %1719 = load i64, ptr %16, align 8, !tbaa !9
  %1720 = sub nsw i64 %1719, 1
  %1721 = icmp sle i64 %1718, %1720
  br i1 %1721, label %1722, label %1773

1722:                                             ; preds = %1717
  store i64 0, ptr %60, align 8, !tbaa !9
  br label %1723

1723:                                             ; preds = %1766, %1722
  %1724 = load i64, ptr %60, align 8, !tbaa !9
  %1725 = load i64, ptr %29, align 8, !tbaa !9
  %1726 = sub nsw i64 %1725, 1
  %1727 = icmp sle i64 %1724, %1726
  br i1 %1727, label %1728, label %1769

1728:                                             ; preds = %1723
  %1729 = load ptr, ptr %25, align 8, !tbaa !5
  %1730 = getelementptr inbounds %"struct.alglib_impl::rbfv2report", ptr %1729, i32 0, i32 1
  %1731 = load double, ptr %1730, align 8, !tbaa !25
  %1732 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %31, i32 0, i32 6
  %1733 = load ptr, ptr %1732, align 8, !tbaa !21
  %1734 = load i64, ptr %59, align 8, !tbaa !9
  %1735 = load i64, ptr %34, align 8, !tbaa !9
  %1736 = mul nsw i64 %1734, %1735
  %1737 = getelementptr inbounds ptr, ptr %1733, i64 %1736
  %1738 = load ptr, ptr %1737, align 8, !tbaa !5
  %1739 = load i64, ptr %60, align 8, !tbaa !9
  %1740 = getelementptr inbounds double, ptr %1738, i64 %1739
  %1741 = load double, ptr %1740, align 8, !tbaa !11
  %1742 = load ptr, ptr %26, align 8, !tbaa !5
  %1743 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1741, ptr noundef %1742)
  %1744 = load ptr, ptr %26, align 8, !tbaa !5
  %1745 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1731, double noundef %1743, ptr noundef %1744)
  %1746 = load ptr, ptr %25, align 8, !tbaa !5
  %1747 = getelementptr inbounds %"struct.alglib_impl::rbfv2report", ptr %1746, i32 0, i32 1
  store double %1745, ptr %1747, align 8, !tbaa !25
  %1748 = load ptr, ptr %25, align 8, !tbaa !5
  %1749 = getelementptr inbounds %"struct.alglib_impl::rbfv2report", ptr %1748, i32 0, i32 2
  %1750 = load double, ptr %1749, align 8, !tbaa !27
  %1751 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %31, i32 0, i32 6
  %1752 = load ptr, ptr %1751, align 8, !tbaa !21
  %1753 = load i64, ptr %59, align 8, !tbaa !9
  %1754 = load i64, ptr %34, align 8, !tbaa !9
  %1755 = mul nsw i64 %1753, %1754
  %1756 = getelementptr inbounds ptr, ptr %1752, i64 %1755
  %1757 = load ptr, ptr %1756, align 8, !tbaa !5
  %1758 = load i64, ptr %60, align 8, !tbaa !9
  %1759 = getelementptr inbounds double, ptr %1757, i64 %1758
  %1760 = load double, ptr %1759, align 8, !tbaa !11
  %1761 = load ptr, ptr %26, align 8, !tbaa !5
  %1762 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1760, ptr noundef %1761)
  %1763 = fadd double %1750, %1762
  %1764 = load ptr, ptr %25, align 8, !tbaa !5
  %1765 = getelementptr inbounds %"struct.alglib_impl::rbfv2report", ptr %1764, i32 0, i32 2
  store double %1763, ptr %1765, align 8, !tbaa !27
  br label %1766

1766:                                             ; preds = %1728
  %1767 = load i64, ptr %60, align 8, !tbaa !9
  %1768 = add nsw i64 %1767, 1
  store i64 %1768, ptr %60, align 8, !tbaa !9
  br label %1723, !llvm.loop !98

1769:                                             ; preds = %1723
  br label %1770

1770:                                             ; preds = %1769
  %1771 = load i64, ptr %59, align 8, !tbaa !9
  %1772 = add nsw i64 %1771, 1
  store i64 %1772, ptr %59, align 8, !tbaa !9
  br label %1717, !llvm.loop !99

1773:                                             ; preds = %1717
  %1774 = load ptr, ptr %25, align 8, !tbaa !5
  %1775 = getelementptr inbounds %"struct.alglib_impl::rbfv2report", ptr %1774, i32 0, i32 2
  %1776 = load double, ptr %1775, align 8, !tbaa !27
  %1777 = load i64, ptr %16, align 8, !tbaa !9
  %1778 = load i64, ptr %29, align 8, !tbaa !9
  %1779 = mul nsw i64 %1777, %1778
  %1780 = sitofp i64 %1779 to double
  %1781 = fdiv double %1776, %1780
  %1782 = load ptr, ptr %26, align 8, !tbaa !5
  %1783 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %1781, ptr noundef %1782)
  %1784 = load ptr, ptr %25, align 8, !tbaa !5
  %1785 = getelementptr inbounds %"struct.alglib_impl::rbfv2report", ptr %1784, i32 0, i32 2
  store double %1783, ptr %1785, align 8, !tbaa !27
  %1786 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 10000, ptr %1786, align 8, !tbaa !9
  %1787 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1787)
  store i32 0, ptr %85, align 4
  br label %1788

1788:                                             ; preds = %1773, %1309, %1201, %351, %238, %181
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %83) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %82) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %81) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %80) #6
  call void @llvm.lifetime.end.p0(i64 328, ptr %79) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %78) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %77) #6
  call void @llvm.lifetime.end.p0(i64 368, ptr %76) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %75) #6
  call void @llvm.lifetime.end.p0(i64 2192, ptr %74) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %70) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %58) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %57) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %56) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %55) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %54) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %53) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %51) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %50) #6
  call void @llvm.lifetime.end.p0(i64 1000, ptr %49) #6
  call void @llvm.lifetime.end.p0(i64 1000, ptr %48) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %44) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %42) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #6
  %1789 = load i32, ptr %85, align 4
  switch i32 %1789, label %1791 [
    i32 0, label %1790
    i32 1, label %1790
  ]

1790:                                             ; preds = %1788, %1788
  ret void

1791:                                             ; preds = %1788
  unreachable
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl18_rbfv2report_clearEPv(ptr noundef) #4

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl21_rbfv2calcbuffer_initEPvPNS_8ae_stateEb(ptr noundef, ptr noundef, i1 noundef zeroext) #4

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

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

declare void @_ZN11alglib_impl16kdtreeexploreboxEPNS_6kdtreeEPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZN11alglib_impl15rbfv2nearradiusElPNS_8ae_stateE(i64 noundef, ptr noundef) #5

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

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

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

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

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

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

declare void @_ZN11alglib_impl17linlsqrsetlambdaiEPNS_12linlsqrstateEdPNS_8ae_stateE(ptr noundef, double noundef, ptr noundef) #2

declare void @_ZN11alglib_impl11linlsqrsetbEPNS_12linlsqrstateEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) #2

declare void @_ZN11alglib_impl14linlsqrrestartEPNS_12linlsqrstateEPNS_8ae_stateE(ptr noundef, ptr noundef) #2

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

declare noundef zeroext i1 @_ZN11alglib_impl16linlsqriterationEPNS_12linlsqrstateEPNS_8ae_stateE(ptr noundef, ptr noundef) #2

declare void @_ZN11alglib_impl8sparsemvEPNS_12sparsematrixEPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @_ZN11alglib_impl9sparsemtvEPNS_12sparsematrixEPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

declare void @_ZN11alglib_impl14linlsqrresultsEPNS_12linlsqrstateEPNS_9ae_vectorEPNS_13linlsqrreportEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZN11alglib_impl14rbfv2farradiusElPNS_8ae_stateE(i64 noundef, ptr noundef) #5

declare void @_ZN11alglib_impl15ae_swap_vectorsEPNS_9ae_vectorES1_(ptr noundef, ptr noundef) #2

declare void @_ZN11alglib_impl16ae_swap_matricesEPNS_9ae_matrixES1_(ptr noundef, ptr noundef) #2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!14, !10, i64 8}
!14 = !{!"_ZTSN11alglib_impl10rbfv2modelE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !15, i64 32, !15, i64 96, !15, i64 160, !15, i64 224, !15, i64 288, !15, i64 352, !15, i64 416, !15, i64 480, !18, i64 544, !12, i64 624, !10, i64 632, !12, i64 640, !10, i64 648, !19, i64 656}
!15 = !{!"_ZTSN11alglib_impl9ae_vectorE", !10, i64 0, !10, i64 8, !16, i64 16, !17, i64 24, !7, i64 56}
!16 = !{!"bool", !7, i64 0}
!17 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!18 = !{!"_ZTSN11alglib_impl9ae_matrixE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !16, i64 32, !17, i64 40, !7, i64 72}
!19 = !{!"_ZTSN11alglib_impl15rbfv2calcbufferE", !15, i64 0, !15, i64 64, !15, i64 128, !12, i64 192, !15, i64 200, !15, i64 264}
!20 = !{!14, !10, i64 0}
!21 = !{!7, !7, i64 0}
!22 = distinct !{!22, !23}
!23 = !{!"llvm.loop.mustprogress"}
!24 = !{!14, !10, i64 648}
!25 = !{!26, !12, i64 8}
!26 = !{!"_ZTSN11alglib_impl11rbfv2reportE", !10, i64 0, !12, i64 8, !12, i64 16}
!27 = !{!26, !12, i64 16}
!28 = !{!26, !10, i64 0}
!29 = distinct !{!29, !23}
!30 = distinct !{!30, !23}
!31 = distinct !{!31, !23}
!32 = distinct !{!32, !23}
!33 = distinct !{!33, !23}
!34 = distinct !{!34, !23}
!35 = distinct !{!35, !23}
!36 = distinct !{!36, !23}
!37 = distinct !{!37, !23}
!38 = distinct !{!38, !23}
!39 = distinct !{!39, !23}
!40 = distinct !{!40, !23}
!41 = distinct !{!41, !23}
!42 = !{!14, !12, i64 640}
!43 = distinct !{!43, !23}
!44 = distinct !{!44, !23}
!45 = distinct !{!45, !23}
!46 = distinct !{!46, !23}
!47 = !{!15, !10, i64 0}
!48 = distinct !{!48, !23}
!49 = distinct !{!49, !23}
!50 = distinct !{!50, !23}
!51 = distinct !{!51, !23}
!52 = distinct !{!52, !23}
!53 = distinct !{!53, !23}
!54 = distinct !{!54, !23}
!55 = distinct !{!55, !23}
!56 = distinct !{!56, !23}
!57 = distinct !{!57, !23}
!58 = distinct !{!58, !23}
!59 = distinct !{!59, !23}
!60 = distinct !{!60, !23}
!61 = distinct !{!61, !23}
!62 = distinct !{!62, !23}
!63 = distinct !{!63, !23}
!64 = !{!16, !16, i64 0}
!65 = !{i8 0, i8 2}
!66 = !{}
!67 = distinct !{!67, !23}
!68 = distinct !{!68, !23}
!69 = !{!14, !10, i64 632}
!70 = !{!14, !12, i64 624}
!71 = distinct !{!71, !23}
!72 = !{!73, !16, i64 1762}
!73 = !{!"_ZTSN11alglib_impl12linlsqrstateE", !74, i64 0, !15, i64 792, !15, i64 856, !10, i64 920, !10, i64 928, !10, i64 936, !15, i64 944, !15, i64 1008, !15, i64 1072, !15, i64 1136, !15, i64 1200, !15, i64 1264, !12, i64 1328, !12, i64 1336, !12, i64 1344, !12, i64 1352, !12, i64 1360, !12, i64 1368, !12, i64 1376, !12, i64 1384, !12, i64 1392, !12, i64 1400, !12, i64 1408, !12, i64 1416, !12, i64 1424, !12, i64 1432, !15, i64 1440, !12, i64 1504, !12, i64 1512, !12, i64 1520, !12, i64 1528, !15, i64 1536, !15, i64 1600, !15, i64 1664, !12, i64 1728, !12, i64 1736, !12, i64 1744, !10, i64 1752, !16, i64 1760, !16, i64 1761, !16, i64 1762, !16, i64 1763, !16, i64 1764, !16, i64 1765, !16, i64 1766, !10, i64 1768, !10, i64 1776, !10, i64 1784, !16, i64 1792, !16, i64 1793, !15, i64 1800, !15, i64 1864, !76, i64 1928}
!74 = !{!"_ZTSN11alglib_impl18normestimatorstateE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !15, i64 40, !15, i64 104, !15, i64 168, !15, i64 232, !75, i64 296, !15, i64 320, !15, i64 384, !15, i64 448, !16, i64 512, !16, i64 513, !12, i64 520, !76, i64 528}
!75 = !{!"_ZTSN11alglib_impl10hqrndstateE", !10, i64 0, !10, i64 8, !10, i64 16}
!76 = !{!"_ZTSN11alglib_impl10rcommstateE", !77, i64 0, !15, i64 8, !15, i64 72, !15, i64 136, !15, i64 200}
!77 = !{!"int", !7, i64 0}
!78 = distinct !{!78, !23}
!79 = distinct !{!79, !23}
!80 = !{!73, !16, i64 1763}
!81 = distinct !{!81, !23}
!82 = !{!73, !16, i64 1761}
!83 = distinct !{!83, !23}
!84 = !{!85, !10, i64 16}
!85 = !{!"_ZTSN11alglib_impl13linlsqrreportE", !10, i64 0, !10, i64 8, !10, i64 16}
!86 = distinct !{!86, !23}
!87 = distinct !{!87, !23}
!88 = distinct !{!88, !23}
!89 = distinct !{!89, !23}
!90 = distinct !{!90, !23}
!91 = distinct !{!91, !23}
!92 = distinct !{!92, !23}
!93 = distinct !{!93, !23}
!94 = distinct !{!94, !23}
!95 = !{!14, !10, i64 16}
!96 = !{!14, !10, i64 24}
!97 = distinct !{!97, !23}
!98 = distinct !{!98, !23}
!99 = distinct !{!99, !23}


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

%"struct.alglib_impl::ae_frame" = type { %"struct.alglib_impl::ae_dyn_block" }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%"struct.alglib_impl::ae_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.1 }
%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 }
%"struct.alglib_impl::kdtree" = type { i64, i64, i64, i64, %"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::kdtreerequestbuffer", i64 }
%"struct.alglib_impl::kdtreerequestbuffer" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, double, i8, double, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double }
%"struct.alglib_impl::linlsqrstate" = type { %"struct.alglib_impl::normestimatorstate", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, double, double, double, double, double, double, double, double, double, double, double, double, double, %"struct.alglib_impl::ae_vector", double, double, double, double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, double, double, i64, i8, i8, i8, i8, i8, i8, i8, i64, i64, i64, i8, i8, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::rcommstate" }
%"struct.alglib_impl::normestimatorstate" = type { i64, i64, i64, i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::hqrndstate", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i8, i8, double, %"struct.alglib_impl::rcommstate" }
%"struct.alglib_impl::hqrndstate" = type { i64, i64, i64 }
%"struct.alglib_impl::rcommstate" = type { i32, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::linlsqrreport" = type { i64, i64, i64 }
%"struct.alglib_impl::sparsematrix" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64, i64, i64, i64 }
%"struct.alglib_impl::rbfv2calcbuffer" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }

@.str.149 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZN11alglib_implL19rbfv2_defaultmaxitsE = external hidden local_unnamed_addr global i64, align 8
@.str.664 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.665 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.666 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.667 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.668 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.669 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.670 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.671 = external hidden unnamed_addr constant [42 x i8], align 1

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

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

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

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

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

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

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

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

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

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

declare void @_ZN11alglib_impl11kdtreebuildEPNS_9ae_matrixEllllPNS_6kdtreeEPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl17kdtreebuildtaggedEPNS_9ae_matrixEPNS_9ae_vectorEllllPNS_6kdtreeEPNS_8ae_stateE(ptr noundef, ptr noundef, i64 noundef, i64 noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare noundef i64 @_ZN11alglib_impl14kdtreequeryrnnEPNS_6kdtreeEPNS_9ae_vectorEdbPNS_8ae_stateE(ptr noundef, ptr noundef, double noundef, i1 noundef zeroext, ptr noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl22kdtreequeryresultstagsEPNS_6kdtreeEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl27kdtreequeryresultsdistancesEPNS_6kdtreeEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

declare void @_ZN11alglib_impl12_kdtree_initEPvPNS_8ae_stateEb(ptr noundef, ptr noundef, i1 noundef zeroext) local_unnamed_addr #2

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

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

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl22rbfv2buildhierarchicalEPNS_9ae_matrixES1_lPNS_9ae_vectorEllddPNS_10rbfv2modelEPlPbPNS_11rbfv2reportEPNS_8ae_stateE(ptr noundef %0, ptr nocapture noundef readonly %1, i64 noundef %2, ptr nocapture noundef readonly %3, i64 noundef %4, i64 noundef %5, double noundef %6, double noundef %7, ptr noundef %8, ptr nocapture noundef %9, ptr nocapture noundef readonly %10, ptr noundef %11, ptr noundef %12) local_unnamed_addr #4 {
  %14 = alloca %"struct.alglib_impl::ae_frame", align 8
  %15 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %16 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %17 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %18 = alloca %"struct.alglib_impl::ae_vector", align 8
  %19 = alloca %"struct.alglib_impl::ae_vector", align 8
  %20 = alloca %"struct.alglib_impl::ae_vector", align 8
  %21 = alloca %"struct.alglib_impl::ae_vector", align 8
  %22 = alloca %"struct.alglib_impl::ae_vector", align 8
  %23 = alloca %"struct.alglib_impl::ae_vector", align 8
  %24 = alloca %"struct.alglib_impl::ae_vector", align 8
  %25 = alloca %"struct.alglib_impl::ae_vector", align 8
  %26 = alloca %"struct.alglib_impl::ae_vector", align 8
  %27 = alloca %"struct.alglib_impl::ae_vector", align 8
  %28 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %29 = alloca i64, align 8
  %30 = alloca %"struct.alglib_impl::kdtree", align 8
  %31 = alloca %"struct.alglib_impl::kdtree", align 8
  %32 = alloca %"struct.alglib_impl::ae_vector", align 8
  %33 = alloca %"struct.alglib_impl::ae_vector", align 8
  %34 = alloca %"struct.alglib_impl::ae_vector", align 8
  %35 = alloca %"struct.alglib_impl::ae_vector", align 8
  %36 = alloca %"struct.alglib_impl::ae_vector", align 8
  %37 = alloca %"struct.alglib_impl::ae_vector", align 8
  %38 = alloca %"struct.alglib_impl::ae_vector", align 8
  %39 = alloca %"struct.alglib_impl::ae_vector", align 8
  %40 = alloca %"struct.alglib_impl::ae_vector", align 8
  %41 = alloca i64, align 8
  %42 = alloca %"struct.alglib_impl::ae_vector", align 8
  %43 = alloca %"struct.alglib_impl::linlsqrstate", align 8
  %44 = alloca %"struct.alglib_impl::linlsqrreport", align 8
  %45 = alloca %"struct.alglib_impl::sparsematrix", align 8
  %46 = alloca %"struct.alglib_impl::ae_vector", align 8
  %47 = alloca %"struct.alglib_impl::ae_vector", align 8
  %48 = alloca %"struct.alglib_impl::rbfv2calcbuffer", align 8
  %49 = alloca %"struct.alglib_impl::ae_vector", align 8
  %50 = alloca %"struct.alglib_impl::ae_vector", align 8
  %51 = alloca %"struct.alglib_impl::ae_vector", align 8
  %52 = alloca %"struct.alglib_impl::ae_vector", align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %15) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %16) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %17) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %18) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %19) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %21) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %25) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %27) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %28) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 1000, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 1000, ptr nonnull %31) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %32) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %33) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %34) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %35) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %36) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %37) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %38) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %39) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %40) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %42) #6
  call void @llvm.lifetime.start.p0(i64 2192, ptr nonnull %43) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %44) #6
  call void @llvm.lifetime.start.p0(i64 368, ptr nonnull %45) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %46) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %47) #6
  call void @llvm.lifetime.start.p0(i64 328, ptr nonnull %48) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %49) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %50) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %51) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %52) #6
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %12, ptr noundef nonnull %14)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %15, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %16, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %17, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %18, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %19, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %20, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %21, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %22, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %23, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %24, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %25, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %26, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %27, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %28, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1000) %30, i8 0, i64 1000, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1000) %31, i8 0, i64 1000, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %32, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %33, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %34, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %35, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %36, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %37, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %38, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %39, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %40, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %42, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(2192) %43, i8 0, i64 2192, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %44, i8 0, i64 24, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(368) %45, i8 0, i64 368, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %46, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %47, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(328) %48, i8 0, i64 328, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %49, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %50, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %51, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %52, i8 0, i64 64, i1 false)
  call void @_ZN11alglib_impl18_rbfv2report_clearEPv(ptr noundef %11)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %15, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %16, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %17, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %18, i64 noundef 0, i64 noundef 2, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %19, i64 noundef 0, i64 noundef 3, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %20, i64 noundef 0, i64 noundef 3, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %21, i64 noundef 0, i64 noundef 2, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %22, i64 noundef 0, i64 noundef 2, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %23, i64 noundef 0, i64 noundef 3, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %24, i64 noundef 0, i64 noundef 3, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %25, i64 noundef 0, i64 noundef 3, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %26, i64 noundef 0, i64 noundef 3, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %27, i64 noundef 0, i64 noundef 2, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %28, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl12_kdtree_initEPvPNS_8ae_stateEb(ptr noundef nonnull %30, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl12_kdtree_initEPvPNS_8ae_stateEb(ptr noundef nonnull %31, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %32, i64 noundef 0, i64 noundef 3, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %33, i64 noundef 0, i64 noundef 3, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %34, i64 noundef 0, i64 noundef 2, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %35, i64 noundef 0, i64 noundef 3, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %36, i64 noundef 0, i64 noundef 2, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %37, i64 noundef 0, i64 noundef 2, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %38, i64 noundef 0, i64 noundef 3, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %39, i64 noundef 0, i64 noundef 3, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %40, i64 noundef 0, i64 noundef 3, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %42, i64 noundef 0, i64 noundef 3, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl18_linlsqrstate_initEPvPNS_8ae_stateEb(ptr noundef nonnull %43, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl19_linlsqrreport_initEPvPNS_8ae_stateEb(ptr noundef nonnull %44, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl18_sparsematrix_initEPvPNS_8ae_stateEb(ptr noundef nonnull %45, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %46, i64 noundef 0, i64 noundef 3, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %47, i64 noundef 0, i64 noundef 3, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl21_rbfv2calcbuffer_initEPvPNS_8ae_stateEb(ptr noundef nonnull %48, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %49, i64 noundef 0, i64 noundef 3, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %50, i64 noundef 0, i64 noundef 2, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %51, i64 noundef 0, i64 noundef 2, ptr noundef %12, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %52, i64 noundef 0, i64 noundef 3, ptr noundef %12, i1 noundef zeroext true)
  %53 = getelementptr inbounds i8, ptr %8, i64 8
  %54 = load i64, ptr %53, align 8, !tbaa !5
  %55 = icmp sgt i64 %54, 0
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %55, ptr noundef nonnull @.str.664, ptr noundef %12)
  %56 = load i64, ptr %8, align 8, !tbaa !17
  %57 = icmp sgt i64 %56, 0
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %57, ptr noundef nonnull @.str.665, ptr noundef %12)
  %58 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %7, double noundef 0.000000e+00)
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %58, ptr noundef nonnull @.str.666, ptr noundef %12)
  %59 = load i64, ptr %53, align 8, !tbaa !5
  %.not.not783 = icmp sgt i64 %59, 0
  br i1 %.not.not783, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %13
  %60 = getelementptr inbounds i8, ptr %3, i64 56
  br label %61

61:                                               ; preds = %.lr.ph, %61
  %.0668784 = phi i64 [ 0, %.lr.ph ], [ %66, %61 ]
  %62 = load ptr, ptr %60, align 8, !tbaa !18
  %63 = getelementptr inbounds double, ptr %62, i64 %.0668784
  %64 = load double, ptr %63, align 8, !tbaa !19
  %65 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %64, double noundef 0.000000e+00)
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %65, ptr noundef nonnull @.str.667, ptr noundef %12)
  %66 = add nuw nsw i64 %.0668784, 1
  %67 = load i64, ptr %53, align 8, !tbaa !5
  %.not.not = icmp slt i64 %66, %67
  br i1 %.not.not, label %61, label %._crit_edge, !llvm.loop !20

._crit_edge:                                      ; preds = %61, %13
  %.lcssa = phi i64 [ %59, %13 ], [ %67, %61 ]
  %.lcssa.fr = freeze i64 %.lcssa
  %68 = load i64, ptr %8, align 8, !tbaa !17
  %.fr = freeze i64 %68
  %69 = getelementptr inbounds i8, ptr %8, i64 648
  %70 = load i64, ptr %69, align 8, !tbaa !22
  %71 = icmp ult i64 %70, 2
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %71, ptr noundef nonnull @.str.668, ptr noundef %12)
  store i64 0, ptr %9, align 8, !tbaa !23
  %72 = getelementptr inbounds i8, ptr %11, i64 8
  %73 = getelementptr inbounds i8, ptr %11, i64 16
  %74 = icmp eq i64 %2, 0
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %72, i8 0, i64 16, i1 false)
  br i1 %74, label %75, label %76

75:                                               ; preds = %._crit_edge
  call void @_ZN11alglib_implL14rbfv2_zerofillEPNS_10rbfv2modelElllPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.lcssa.fr, i64 noundef %.fr, i64 noundef %70, ptr noundef %12)
  store i64 1, ptr %11, align 8, !tbaa !24
  br label %1199

76:                                               ; preds = %._crit_edge
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %16, i64 noundef %2, i64 noundef %.fr, ptr noundef %12)
  %.not.not706789 = icmp sgt i64 %2, 0
  br i1 %.not.not706789, label %.preheader781.lr.ph, label %._crit_edge791

.preheader781.lr.ph:                              ; preds = %76
  %.not756.not785 = icmp sgt i64 %.fr, 0
  %77 = getelementptr inbounds i8, ptr %1, i64 72
  %78 = getelementptr inbounds i8, ptr %16, i64 72
  br i1 %.not756.not785, label %.preheader781.us.preheader, label %._crit_edge791

.preheader781.us.preheader:                       ; preds = %.preheader781.lr.ph
  %xtraiter = and i64 %.fr, 1
  %79 = icmp eq i64 %.fr, 1
  %unroll_iter = and i64 %.fr, 9223372036854775806
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br label %.preheader781.us

.preheader781.us:                                 ; preds = %.preheader781.us.preheader, %._crit_edge788.us
  %.0662790.us = phi i64 [ %109, %._crit_edge788.us ], [ 0, %.preheader781.us.preheader ]
  br i1 %79, label %._crit_edge788.us.unr-lcssa, label %.preheader781.us.new

.preheader781.us.new:                             ; preds = %.preheader781.us, %.preheader781.us.new
  %.1669786.us = phi i64 [ %99, %.preheader781.us.new ], [ 0, %.preheader781.us ]
  %niter = phi i64 [ %niter.next.1, %.preheader781.us.new ], [ 0, %.preheader781.us ]
  %80 = load ptr, ptr %77, align 8, !tbaa !18
  %81 = getelementptr inbounds ptr, ptr %80, i64 %.0662790.us
  %82 = load ptr, ptr %81, align 8, !tbaa !26
  %83 = getelementptr inbounds double, ptr %82, i64 %.1669786.us
  %84 = load double, ptr %83, align 8, !tbaa !19
  %85 = load ptr, ptr %78, align 8, !tbaa !18
  %86 = getelementptr inbounds ptr, ptr %85, i64 %.0662790.us
  %87 = load ptr, ptr %86, align 8, !tbaa !26
  %88 = getelementptr inbounds double, ptr %87, i64 %.1669786.us
  store double %84, ptr %88, align 8, !tbaa !19
  %89 = or disjoint i64 %.1669786.us, 1
  %90 = load ptr, ptr %77, align 8, !tbaa !18
  %91 = getelementptr inbounds ptr, ptr %90, i64 %.0662790.us
  %92 = load ptr, ptr %91, align 8, !tbaa !26
  %93 = getelementptr inbounds double, ptr %92, i64 %89
  %94 = load double, ptr %93, align 8, !tbaa !19
  %95 = load ptr, ptr %78, align 8, !tbaa !18
  %96 = getelementptr inbounds ptr, ptr %95, i64 %.0662790.us
  %97 = load ptr, ptr %96, align 8, !tbaa !26
  %98 = getelementptr inbounds double, ptr %97, i64 %89
  store double %94, ptr %98, align 8, !tbaa !19
  %99 = add nuw nsw i64 %.1669786.us, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge788.us.unr-lcssa, label %.preheader781.us.new, !llvm.loop !27

._crit_edge788.us.unr-lcssa:                      ; preds = %.preheader781.us.new, %.preheader781.us
  %.1669786.us.unr = phi i64 [ 0, %.preheader781.us ], [ %99, %.preheader781.us.new ]
  br i1 %lcmp.mod.not, label %._crit_edge788.us, label %._crit_edge788.us.epilog-lcssa

._crit_edge788.us.epilog-lcssa:                   ; preds = %._crit_edge788.us.unr-lcssa
  %100 = load ptr, ptr %77, align 8, !tbaa !18
  %101 = getelementptr inbounds ptr, ptr %100, i64 %.0662790.us
  %102 = load ptr, ptr %101, align 8, !tbaa !26
  %103 = getelementptr inbounds double, ptr %102, i64 %.1669786.us.unr
  %104 = load double, ptr %103, align 8, !tbaa !19
  %105 = load ptr, ptr %78, align 8, !tbaa !18
  %106 = getelementptr inbounds ptr, ptr %105, i64 %.0662790.us
  %107 = load ptr, ptr %106, align 8, !tbaa !26
  %108 = getelementptr inbounds double, ptr %107, i64 %.1669786.us.unr
  store double %104, ptr %108, align 8, !tbaa !19
  br label %._crit_edge788.us

._crit_edge788.us:                                ; preds = %._crit_edge788.us.unr-lcssa, %._crit_edge788.us.epilog-lcssa
  %109 = add nuw nsw i64 %.0662790.us, 1
  %exitcond1029.not = icmp eq i64 %109, %2
  br i1 %exitcond1029.not, label %._crit_edge791, label %.preheader781.us, !llvm.loop !28

._crit_edge791:                                   ; preds = %._crit_edge788.us, %.preheader781.lr.ph, %76
  %110 = call noundef zeroext i1 @_ZN11alglib_implL27rbfv2_rbfv2buildlinearmodelEPNS_9ae_matrixES1_llllS1_PNS_8ae_stateE(ptr noundef %0, ptr noundef nonnull %16, i64 noundef %2, i64 noundef %.lcssa.fr, i64 noundef %.fr, i64 noundef %4, ptr noundef nonnull %17, ptr noundef %12)
  br i1 %110, label %112, label %111

111:                                              ; preds = %._crit_edge791
  call void @_ZN11alglib_implL14rbfv2_zerofillEPNS_10rbfv2modelElllPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.lcssa.fr, i64 noundef %.fr, i64 noundef %70, ptr noundef %12)
  store i64 -5, ptr %11, align 8, !tbaa !24
  br label %1199

112:                                              ; preds = %._crit_edge791
  %113 = icmp eq i64 %5, 0
  br i1 %113, label %114, label %177

114:                                              ; preds = %112
  store i64 1, ptr %11, align 8, !tbaa !24
  call void @_ZN11alglib_implL14rbfv2_zerofillEPNS_10rbfv2modelElllPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.lcssa.fr, i64 noundef %.fr, i64 noundef %70, ptr noundef %12)
  %.not752.not1002 = icmp sgt i64 %.fr, 0
  br i1 %.not752.not1002, label %.preheader757.lr.ph, label %._crit_edge1004.thread

.preheader757.lr.ph:                              ; preds = %114
  %.not755998 = icmp slt i64 %.lcssa.fr, 0
  %115 = getelementptr inbounds i8, ptr %17, i64 72
  %116 = getelementptr inbounds i8, ptr %8, i64 616
  br i1 %.not755998, label %._crit_edge1004.thread1082, label %.preheader757.preheader

.preheader757.preheader:                          ; preds = %.preheader757.lr.ph
  %117 = add nuw i64 %.lcssa.fr, 1
  %118 = icmp eq i64 %.lcssa.fr, 0
  %unroll_iter1248 = and i64 %117, -2
  %119 = and i64 %.lcssa.fr, 1
  %lcmp.mod1247.not.not = icmp eq i64 %119, 0
  br label %.preheader757

.preheader757:                                    ; preds = %.preheader757.preheader, %._crit_edge1001
  %.11003 = phi i64 [ %149, %._crit_edge1001 ], [ 0, %.preheader757.preheader ]
  br i1 %118, label %._crit_edge1001.unr-lcssa, label %.preheader757.new

.preheader757.new:                                ; preds = %.preheader757, %.preheader757.new
  %.2670999 = phi i64 [ %139, %.preheader757.new ], [ 0, %.preheader757 ]
  %niter1249 = phi i64 [ %niter1249.next.1, %.preheader757.new ], [ 0, %.preheader757 ]
  %120 = load ptr, ptr %115, align 8, !tbaa !18
  %121 = getelementptr inbounds ptr, ptr %120, i64 %.11003
  %122 = load ptr, ptr %121, align 8, !tbaa !26
  %123 = getelementptr inbounds double, ptr %122, i64 %.2670999
  %124 = load double, ptr %123, align 8, !tbaa !19
  %125 = load ptr, ptr %116, align 8, !tbaa !18
  %126 = getelementptr inbounds ptr, ptr %125, i64 %.11003
  %127 = load ptr, ptr %126, align 8, !tbaa !26
  %128 = getelementptr inbounds double, ptr %127, i64 %.2670999
  store double %124, ptr %128, align 8, !tbaa !19
  %129 = or disjoint i64 %.2670999, 1
  %130 = load ptr, ptr %115, align 8, !tbaa !18
  %131 = getelementptr inbounds ptr, ptr %130, i64 %.11003
  %132 = load ptr, ptr %131, align 8, !tbaa !26
  %133 = getelementptr inbounds double, ptr %132, i64 %129
  %134 = load double, ptr %133, align 8, !tbaa !19
  %135 = load ptr, ptr %116, align 8, !tbaa !18
  %136 = getelementptr inbounds ptr, ptr %135, i64 %.11003
  %137 = load ptr, ptr %136, align 8, !tbaa !26
  %138 = getelementptr inbounds double, ptr %137, i64 %129
  store double %134, ptr %138, align 8, !tbaa !19
  %139 = add nuw i64 %.2670999, 2
  %niter1249.next.1 = add i64 %niter1249, 2
  %niter1249.ncmp.1 = icmp eq i64 %niter1249.next.1, %unroll_iter1248
  br i1 %niter1249.ncmp.1, label %._crit_edge1001.unr-lcssa, label %.preheader757.new, !llvm.loop !29

._crit_edge1001.unr-lcssa:                        ; preds = %.preheader757.new, %.preheader757
  %.2670999.unr = phi i64 [ 0, %.preheader757 ], [ %139, %.preheader757.new ]
  br i1 %lcmp.mod1247.not.not, label %._crit_edge1001.epilog-lcssa, label %._crit_edge1001

._crit_edge1001.epilog-lcssa:                     ; preds = %._crit_edge1001.unr-lcssa
  %140 = load ptr, ptr %115, align 8, !tbaa !18
  %141 = getelementptr inbounds ptr, ptr %140, i64 %.11003
  %142 = load ptr, ptr %141, align 8, !tbaa !26
  %143 = getelementptr inbounds double, ptr %142, i64 %.2670999.unr
  %144 = load double, ptr %143, align 8, !tbaa !19
  %145 = load ptr, ptr %116, align 8, !tbaa !18
  %146 = getelementptr inbounds ptr, ptr %145, i64 %.11003
  %147 = load ptr, ptr %146, align 8, !tbaa !26
  %148 = getelementptr inbounds double, ptr %147, i64 %.2670999.unr
  store double %144, ptr %148, align 8, !tbaa !19
  br label %._crit_edge1001

._crit_edge1001:                                  ; preds = %._crit_edge1001.unr-lcssa, %._crit_edge1001.epilog-lcssa
  %149 = add nuw nsw i64 %.11003, 1
  %exitcond1079.not = icmp eq i64 %149, %.fr
  br i1 %exitcond1079.not, label %._crit_edge1004, label %.preheader757, !llvm.loop !30

._crit_edge1004:                                  ; preds = %._crit_edge1001
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %72, i8 0, i64 16, i1 false)
  br i1 %.not.not706789, label %.preheader.lr.ph, label %._crit_edge1011

._crit_edge1004.thread1082:                       ; preds = %.preheader757.lr.ph
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %72, i8 0, i64 16, i1 false)
  br i1 %.not.not706789, label %.preheader.lr.ph.thread1083, label %._crit_edge1011

.preheader.lr.ph.thread1083:                      ; preds = %._crit_edge1004.thread1082
  %150 = getelementptr inbounds i8, ptr %16, i64 72
  br label %.preheader.us.preheader

._crit_edge1004.thread:                           ; preds = %114
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %72, i8 0, i64 16, i1 false)
  br label %._crit_edge1011

.preheader.lr.ph:                                 ; preds = %._crit_edge1004
  %151 = getelementptr inbounds i8, ptr %16, i64 72
  br i1 %.not752.not1002, label %.preheader.us.preheader, label %._crit_edge1011

.preheader.us.preheader:                          ; preds = %.preheader.lr.ph.thread1083, %.preheader.lr.ph
  %152 = phi ptr [ %150, %.preheader.lr.ph.thread1083 ], [ %151, %.preheader.lr.ph ]
  br label %.preheader.us

.preheader.us:                                    ; preds = %.preheader.us.preheader, %._crit_edge1008.us
  %.21010.us = phi i64 [ %171, %._crit_edge1008.us ], [ 0, %.preheader.us.preheader ]
  br label %153

153:                                              ; preds = %.preheader.us, %153
  %.36711006.us = phi i64 [ 0, %.preheader.us ], [ %170, %153 ]
  %154 = load double, ptr %72, align 8, !tbaa !31
  %155 = load ptr, ptr %152, align 8, !tbaa !18
  %156 = getelementptr inbounds ptr, ptr %155, i64 %.21010.us
  %157 = load ptr, ptr %156, align 8, !tbaa !26
  %158 = getelementptr inbounds double, ptr %157, i64 %.36711006.us
  %159 = load double, ptr %158, align 8, !tbaa !19
  %160 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %159, ptr noundef %12)
  %161 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %154, double noundef %160, ptr noundef %12)
  store double %161, ptr %72, align 8, !tbaa !31
  %162 = load double, ptr %73, align 8, !tbaa !32
  %163 = load ptr, ptr %152, align 8, !tbaa !18
  %164 = getelementptr inbounds ptr, ptr %163, i64 %.21010.us
  %165 = load ptr, ptr %164, align 8, !tbaa !26
  %166 = getelementptr inbounds double, ptr %165, i64 %.36711006.us
  %167 = load double, ptr %166, align 8, !tbaa !19
  %168 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %167, ptr noundef %12)
  %169 = fadd double %162, %168
  store double %169, ptr %73, align 8, !tbaa !32
  %170 = add nuw nsw i64 %.36711006.us, 1
  %exitcond1080.not = icmp eq i64 %170, %.fr
  br i1 %exitcond1080.not, label %._crit_edge1008.us, label %153, !llvm.loop !33

._crit_edge1008.us:                               ; preds = %153
  %171 = add nuw nsw i64 %.21010.us, 1
  %exitcond1081.not = icmp eq i64 %171, %2
  br i1 %exitcond1081.not, label %._crit_edge1011, label %.preheader.us, !llvm.loop !34

._crit_edge1011:                                  ; preds = %._crit_edge1008.us, %._crit_edge1004.thread, %.preheader.lr.ph, %._crit_edge1004.thread1082, %._crit_edge1004
  %172 = phi double [ 0.000000e+00, %._crit_edge1004 ], [ 0.000000e+00, %._crit_edge1004.thread1082 ], [ 0.000000e+00, %.preheader.lr.ph ], [ 0.000000e+00, %._crit_edge1004.thread ], [ %169, %._crit_edge1008.us ]
  %173 = mul nsw i64 %.fr, %2
  %174 = sitofp i64 %173 to double
  %175 = fdiv double %172, %174
  %176 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %175, ptr noundef %12)
  store double %176, ptr %73, align 8, !tbaa !32
  br label %1199

177:                                              ; preds = %112
  %178 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %7, double noundef 0.000000e+00)
  %179 = add nsw i64 %.lcssa.fr, 1
  %.0 = select i1 %178, i64 1, i64 %179
  %180 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %6, ptr noundef %12)
  %181 = fmul double %180, %7
  %182 = mul nsw i64 %.0, %2
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %15, i64 noundef %182, i64 noundef %.fr, ptr noundef %12)
  %183 = add nsw i64 %.fr, %.lcssa.fr
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %28, i64 noundef %2, i64 noundef %183, ptr noundef %12)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %32, i64 noundef %.lcssa.fr, ptr noundef %12)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %33, i64 noundef %.lcssa.fr, ptr noundef %12)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %34, i64 noundef %2, ptr noundef %12)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %35, i64 noundef %2, ptr noundef %12)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %49, i64 noundef %2, ptr noundef %12)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %50, i64 noundef %2, ptr noundef %12)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %36, i64 noundef %2, ptr noundef %12)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %37, i64 noundef %182, ptr noundef %12)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %47, i64 noundef %182, ptr noundef %12)
  %.not.not707796 = icmp sgt i64 %182, 0
  br i1 %.not.not707796, label %.preheader780.lr.ph, label %.preheader779

.preheader780.lr.ph:                              ; preds = %177
  %.not751.not792 = icmp sgt i64 %.fr, 0
  %184 = getelementptr inbounds i8, ptr %15, i64 72
  br i1 %.not751.not792, label %.preheader780.us.preheader, label %.preheader779

.preheader780.us.preheader:                       ; preds = %.preheader780.lr.ph
  %185 = add nsw i64 %.fr, -1
  %xtraiter1125 = and i64 %.fr, 3
  %186 = icmp ult i64 %185, 3
  %unroll_iter1127 = and i64 %.fr, 9223372036854775804
  %lcmp.mod1126.not = icmp eq i64 %xtraiter1125, 0
  br label %.preheader780.us

.preheader780.us:                                 ; preds = %.preheader780.us.preheader, %._crit_edge795.us
  %.3797.us = phi i64 [ %212, %._crit_edge795.us ], [ 0, %.preheader780.us.preheader ]
  br i1 %186, label %._crit_edge795.us.unr-lcssa, label %.preheader780.us.new

.preheader780.us.new:                             ; preds = %.preheader780.us, %.preheader780.us.new
  %.4672793.us = phi i64 [ %206, %.preheader780.us.new ], [ 0, %.preheader780.us ]
  %niter1128 = phi i64 [ %niter1128.next.3, %.preheader780.us.new ], [ 0, %.preheader780.us ]
  %187 = load ptr, ptr %184, align 8, !tbaa !18
  %188 = getelementptr inbounds ptr, ptr %187, i64 %.3797.us
  %189 = load ptr, ptr %188, align 8, !tbaa !26
  %190 = getelementptr inbounds double, ptr %189, i64 %.4672793.us
  store double 0.000000e+00, ptr %190, align 8, !tbaa !19
  %191 = or disjoint i64 %.4672793.us, 1
  %192 = load ptr, ptr %184, align 8, !tbaa !18
  %193 = getelementptr inbounds ptr, ptr %192, i64 %.3797.us
  %194 = load ptr, ptr %193, align 8, !tbaa !26
  %195 = getelementptr inbounds double, ptr %194, i64 %191
  store double 0.000000e+00, ptr %195, align 8, !tbaa !19
  %196 = or disjoint i64 %.4672793.us, 2
  %197 = load ptr, ptr %184, align 8, !tbaa !18
  %198 = getelementptr inbounds ptr, ptr %197, i64 %.3797.us
  %199 = load ptr, ptr %198, align 8, !tbaa !26
  %200 = getelementptr inbounds double, ptr %199, i64 %196
  store double 0.000000e+00, ptr %200, align 8, !tbaa !19
  %201 = or disjoint i64 %.4672793.us, 3
  %202 = load ptr, ptr %184, align 8, !tbaa !18
  %203 = getelementptr inbounds ptr, ptr %202, i64 %.3797.us
  %204 = load ptr, ptr %203, align 8, !tbaa !26
  %205 = getelementptr inbounds double, ptr %204, i64 %201
  store double 0.000000e+00, ptr %205, align 8, !tbaa !19
  %206 = add nuw nsw i64 %.4672793.us, 4
  %niter1128.next.3 = add i64 %niter1128, 4
  %niter1128.ncmp.3 = icmp eq i64 %niter1128.next.3, %unroll_iter1127
  br i1 %niter1128.ncmp.3, label %._crit_edge795.us.unr-lcssa, label %.preheader780.us.new, !llvm.loop !35

._crit_edge795.us.unr-lcssa:                      ; preds = %.preheader780.us.new, %.preheader780.us
  %.4672793.us.unr = phi i64 [ 0, %.preheader780.us ], [ %206, %.preheader780.us.new ]
  br i1 %lcmp.mod1126.not, label %._crit_edge795.us, label %.epil.preheader1124

.epil.preheader1124:                              ; preds = %._crit_edge795.us.unr-lcssa, %.epil.preheader1124
  %.4672793.us.epil = phi i64 [ %211, %.epil.preheader1124 ], [ %.4672793.us.unr, %._crit_edge795.us.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader1124 ], [ 0, %._crit_edge795.us.unr-lcssa ]
  %207 = load ptr, ptr %184, align 8, !tbaa !18
  %208 = getelementptr inbounds ptr, ptr %207, i64 %.3797.us
  %209 = load ptr, ptr %208, align 8, !tbaa !26
  %210 = getelementptr inbounds double, ptr %209, i64 %.4672793.us.epil
  store double 0.000000e+00, ptr %210, align 8, !tbaa !19
  %211 = add nuw nsw i64 %.4672793.us.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter1125
  br i1 %epil.iter.cmp.not, label %._crit_edge795.us, label %.epil.preheader1124, !llvm.loop !36

._crit_edge795.us:                                ; preds = %.epil.preheader1124, %._crit_edge795.us.unr-lcssa
  %212 = add nuw nsw i64 %.3797.us, 1
  %exitcond1031.not = icmp eq i64 %212, %182
  br i1 %exitcond1031.not, label %.preheader779, label %.preheader780.us, !llvm.loop !38

.preheader779:                                    ; preds = %._crit_edge795.us, %.preheader780.lr.ph, %177
  br i1 %.not.not706789, label %.preheader778.lr.ph, label %._crit_edge807

.preheader778.lr.ph:                              ; preds = %.preheader779
  %.not749.not798 = icmp sgt i64 %.lcssa.fr, 0
  %213 = getelementptr inbounds i8, ptr %0, i64 72
  %214 = getelementptr inbounds i8, ptr %3, i64 56
  %215 = getelementptr inbounds i8, ptr %28, i64 72
  %.not750.not801 = icmp sgt i64 %.fr, 0
  %216 = getelementptr inbounds i8, ptr %16, i64 72
  %217 = getelementptr inbounds i8, ptr %15, i64 72
  %218 = getelementptr inbounds i8, ptr %34, i64 56
  %xtraiter1129 = and i64 %.lcssa.fr, 1
  %219 = icmp eq i64 %.lcssa.fr, 1
  %unroll_iter1132 = and i64 %.lcssa.fr, 9223372036854775806
  %lcmp.mod1131.not = icmp eq i64 %xtraiter1129, 0
  %xtraiter1135 = and i64 %.fr, 1
  %220 = icmp eq i64 %.fr, 1
  %unroll_iter1138 = and i64 %.fr, 9223372036854775806
  %lcmp.mod1137.not = icmp eq i64 %xtraiter1135, 0
  br label %.preheader778

.preheader778:                                    ; preds = %.preheader778.lr.ph, %._crit_edge804
  %.4806 = phi i64 [ 0, %.preheader778.lr.ph ], [ %294, %._crit_edge804 ]
  br i1 %.not749.not798, label %.lr.ph800.preheader, label %.preheader777

.lr.ph800.preheader:                              ; preds = %.preheader778
  br i1 %219, label %.preheader777.loopexit.unr-lcssa, label %.lr.ph800

.preheader777.loopexit.unr-lcssa:                 ; preds = %.lr.ph800, %.lr.ph800.preheader
  %.5673799.unr = phi i64 [ 0, %.lr.ph800.preheader ], [ %262, %.lr.ph800 ]
  br i1 %lcmp.mod1131.not, label %.preheader777, label %.lr.ph800.epil

.lr.ph800.epil:                                   ; preds = %.preheader777.loopexit.unr-lcssa
  %221 = load ptr, ptr %213, align 8, !tbaa !18
  %222 = getelementptr inbounds ptr, ptr %221, i64 %.4806
  %223 = load ptr, ptr %222, align 8, !tbaa !26
  %224 = getelementptr inbounds double, ptr %223, i64 %.5673799.unr
  %225 = load double, ptr %224, align 8, !tbaa !19
  %226 = load ptr, ptr %214, align 8, !tbaa !18
  %227 = getelementptr inbounds double, ptr %226, i64 %.5673799.unr
  %228 = load double, ptr %227, align 8, !tbaa !19
  %229 = fdiv double %225, %228
  %230 = load ptr, ptr %215, align 8, !tbaa !18
  %231 = getelementptr inbounds ptr, ptr %230, i64 %.4806
  %232 = load ptr, ptr %231, align 8, !tbaa !26
  %233 = getelementptr inbounds double, ptr %232, i64 %.5673799.unr
  store double %229, ptr %233, align 8, !tbaa !19
  br label %.preheader777

.preheader777:                                    ; preds = %.lr.ph800.epil, %.preheader777.loopexit.unr-lcssa, %.preheader778
  br i1 %.not750.not801, label %.lr.ph803, label %._crit_edge804

.lr.ph803:                                        ; preds = %.preheader777
  %234 = mul nsw i64 %.4806, %.0
  br i1 %220, label %._crit_edge804.loopexit.unr-lcssa, label %.lr.ph803.new

.lr.ph800:                                        ; preds = %.lr.ph800.preheader, %.lr.ph800
  %.5673799 = phi i64 [ %262, %.lr.ph800 ], [ 0, %.lr.ph800.preheader ]
  %niter1133 = phi i64 [ %niter1133.next.1, %.lr.ph800 ], [ 0, %.lr.ph800.preheader ]
  %235 = load ptr, ptr %213, align 8, !tbaa !18
  %236 = getelementptr inbounds ptr, ptr %235, i64 %.4806
  %237 = load ptr, ptr %236, align 8, !tbaa !26
  %238 = getelementptr inbounds double, ptr %237, i64 %.5673799
  %239 = load double, ptr %238, align 8, !tbaa !19
  %240 = load ptr, ptr %214, align 8, !tbaa !18
  %241 = getelementptr inbounds double, ptr %240, i64 %.5673799
  %242 = load double, ptr %241, align 8, !tbaa !19
  %243 = fdiv double %239, %242
  %244 = load ptr, ptr %215, align 8, !tbaa !18
  %245 = getelementptr inbounds ptr, ptr %244, i64 %.4806
  %246 = load ptr, ptr %245, align 8, !tbaa !26
  %247 = getelementptr inbounds double, ptr %246, i64 %.5673799
  store double %243, ptr %247, align 8, !tbaa !19
  %248 = or disjoint i64 %.5673799, 1
  %249 = load ptr, ptr %213, align 8, !tbaa !18
  %250 = getelementptr inbounds ptr, ptr %249, i64 %.4806
  %251 = load ptr, ptr %250, align 8, !tbaa !26
  %252 = getelementptr inbounds double, ptr %251, i64 %248
  %253 = load double, ptr %252, align 8, !tbaa !19
  %254 = load ptr, ptr %214, align 8, !tbaa !18
  %255 = getelementptr inbounds double, ptr %254, i64 %248
  %256 = load double, ptr %255, align 8, !tbaa !19
  %257 = fdiv double %253, %256
  %258 = load ptr, ptr %215, align 8, !tbaa !18
  %259 = getelementptr inbounds ptr, ptr %258, i64 %.4806
  %260 = load ptr, ptr %259, align 8, !tbaa !26
  %261 = getelementptr inbounds double, ptr %260, i64 %248
  store double %257, ptr %261, align 8, !tbaa !19
  %262 = add nuw nsw i64 %.5673799, 2
  %niter1133.next.1 = add i64 %niter1133, 2
  %niter1133.ncmp.1 = icmp eq i64 %niter1133.next.1, %unroll_iter1132
  br i1 %niter1133.ncmp.1, label %.preheader777.loopexit.unr-lcssa, label %.lr.ph800, !llvm.loop !39

.lr.ph803.new:                                    ; preds = %.lr.ph803, %.lr.ph803.new
  %.6674802 = phi i64 [ %282, %.lr.ph803.new ], [ 0, %.lr.ph803 ]
  %niter1139 = phi i64 [ %niter1139.next.1, %.lr.ph803.new ], [ 0, %.lr.ph803 ]
  %263 = load ptr, ptr %216, align 8, !tbaa !18
  %264 = getelementptr inbounds ptr, ptr %263, i64 %.4806
  %265 = load ptr, ptr %264, align 8, !tbaa !26
  %266 = getelementptr inbounds double, ptr %265, i64 %.6674802
  %267 = load double, ptr %266, align 8, !tbaa !19
  %268 = load ptr, ptr %217, align 8, !tbaa !18
  %269 = getelementptr inbounds ptr, ptr %268, i64 %234
  %270 = load ptr, ptr %269, align 8, !tbaa !26
  %271 = getelementptr inbounds double, ptr %270, i64 %.6674802
  store double %267, ptr %271, align 8, !tbaa !19
  %272 = or disjoint i64 %.6674802, 1
  %273 = load ptr, ptr %216, align 8, !tbaa !18
  %274 = getelementptr inbounds ptr, ptr %273, i64 %.4806
  %275 = load ptr, ptr %274, align 8, !tbaa !26
  %276 = getelementptr inbounds double, ptr %275, i64 %272
  %277 = load double, ptr %276, align 8, !tbaa !19
  %278 = load ptr, ptr %217, align 8, !tbaa !18
  %279 = getelementptr inbounds ptr, ptr %278, i64 %234
  %280 = load ptr, ptr %279, align 8, !tbaa !26
  %281 = getelementptr inbounds double, ptr %280, i64 %272
  store double %277, ptr %281, align 8, !tbaa !19
  %282 = add nuw nsw i64 %.6674802, 2
  %niter1139.next.1 = add i64 %niter1139, 2
  %niter1139.ncmp.1 = icmp eq i64 %niter1139.next.1, %unroll_iter1138
  br i1 %niter1139.ncmp.1, label %._crit_edge804.loopexit.unr-lcssa, label %.lr.ph803.new, !llvm.loop !40

._crit_edge804.loopexit.unr-lcssa:                ; preds = %.lr.ph803.new, %.lr.ph803
  %.6674802.unr = phi i64 [ 0, %.lr.ph803 ], [ %282, %.lr.ph803.new ]
  br i1 %lcmp.mod1137.not, label %._crit_edge804, label %._crit_edge804.loopexit.epilog-lcssa

._crit_edge804.loopexit.epilog-lcssa:             ; preds = %._crit_edge804.loopexit.unr-lcssa
  %283 = load ptr, ptr %216, align 8, !tbaa !18
  %284 = getelementptr inbounds ptr, ptr %283, i64 %.4806
  %285 = load ptr, ptr %284, align 8, !tbaa !26
  %286 = getelementptr inbounds double, ptr %285, i64 %.6674802.unr
  %287 = load double, ptr %286, align 8, !tbaa !19
  %288 = load ptr, ptr %217, align 8, !tbaa !18
  %289 = getelementptr inbounds ptr, ptr %288, i64 %234
  %290 = load ptr, ptr %289, align 8, !tbaa !26
  %291 = getelementptr inbounds double, ptr %290, i64 %.6674802.unr
  store double %287, ptr %291, align 8, !tbaa !19
  br label %._crit_edge804

._crit_edge804:                                   ; preds = %._crit_edge804.loopexit.epilog-lcssa, %._crit_edge804.loopexit.unr-lcssa, %.preheader777
  %292 = load ptr, ptr %218, align 8, !tbaa !18
  %293 = getelementptr inbounds i64, ptr %292, i64 %.4806
  store i64 %.4806, ptr %293, align 8, !tbaa !23
  %294 = add nuw nsw i64 %.4806, 1
  %exitcond1034.not = icmp eq i64 %294, %2
  br i1 %exitcond1034.not, label %._crit_edge807, label %.preheader778, !llvm.loop !41

._crit_edge807:                                   ; preds = %._crit_edge804, %.preheader779
  call void @_ZN11alglib_impl17kdtreebuildtaggedEPNS_9ae_matrixEPNS_9ae_vectorEllllPNS_6kdtreeEPNS_8ae_stateE(ptr noundef nonnull %28, ptr noundef nonnull %34, i64 noundef %2, i64 noundef %.lcssa.fr, i64 noundef 0, i64 noundef 2, ptr noundef nonnull %31, ptr noundef %12)
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %.not.not706789, ptr noundef nonnull @.str.669, ptr noundef %12)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %20, i64 noundef %5, ptr noundef %12)
  %.not.not709808 = icmp sgt i64 %5, 0
  br i1 %.not.not709808, label %.lr.ph811, label %._crit_edge812

.lr.ph811:                                        ; preds = %._crit_edge807
  %295 = getelementptr inbounds i8, ptr %20, i64 56
  br label %296

296:                                              ; preds = %.lr.ph811, %296
  %.0692809 = phi i64 [ 0, %.lr.ph811 ], [ %303, %296 ]
  %297 = sub nsw i64 0, %.0692809
  %298 = sitofp i64 %297 to double
  %299 = call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef 2.000000e+00, double noundef %298, ptr noundef %12)
  %300 = fmul double %299, %6
  %301 = load ptr, ptr %295, align 8, !tbaa !18
  %302 = getelementptr inbounds double, ptr %301, i64 %.0692809
  store double %300, ptr %302, align 8, !tbaa !19
  %303 = add nuw nsw i64 %.0692809, 1
  %exitcond1035.not = icmp eq i64 %303, %5
  br i1 %exitcond1035.not, label %._crit_edge812, label %296, !llvm.loop !42

._crit_edge812:                                   ; preds = %296, %._crit_edge807
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %18, i64 noundef %2, ptr noundef %12)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %19, i64 noundef %2, ptr noundef %12)
  br i1 %.not.not706789, label %.lr.ph816, label %.preheader776

.lr.ph816:                                        ; preds = %._crit_edge812
  %304 = getelementptr inbounds i8, ptr %18, i64 56
  %305 = getelementptr inbounds i8, ptr %19, i64 56
  %306 = getelementptr inbounds i8, ptr %20, i64 56
  br label %317

.preheader776:                                    ; preds = %317, %._crit_edge812
  br i1 %.not.not709808, label %.lr.ph834, label %._crit_edge835

.lr.ph834:                                        ; preds = %.preheader776
  %307 = getelementptr inbounds i8, ptr %8, i64 640
  %308 = getelementptr inbounds i8, ptr %20, i64 56
  %309 = getelementptr inbounds i8, ptr %19, i64 56
  %310 = getelementptr inbounds i8, ptr %18, i64 56
  %.not747.not817 = icmp sgt i64 %.lcssa.fr, 0
  %311 = getelementptr inbounds i8, ptr %0, i64 72
  %312 = getelementptr inbounds i8, ptr %3, i64 56
  %313 = getelementptr inbounds i8, ptr %32, i64 56
  %314 = getelementptr inbounds i8, ptr %34, i64 56
  %315 = getelementptr inbounds i8, ptr %35, i64 56
  %xtraiter1140 = and i64 %.lcssa.fr, 1
  %316 = icmp eq i64 %.lcssa.fr, 1
  %unroll_iter1143 = and i64 %.lcssa.fr, 9223372036854775806
  %lcmp.mod1142.not = icmp eq i64 %xtraiter1140, 0
  br label %329

317:                                              ; preds = %.lr.ph816, %317
  %.5814 = phi i64 [ 0, %.lr.ph816 ], [ %328, %317 ]
  %318 = load ptr, ptr %304, align 8, !tbaa !18
  %319 = getelementptr inbounds i64, ptr %318, i64 %.5814
  store i64 %5, ptr %319, align 8, !tbaa !23
  %320 = load ptr, ptr %305, align 8, !tbaa !18
  %321 = getelementptr inbounds double, ptr %320, i64 %.5814
  store double 1.000000e+300, ptr %321, align 8, !tbaa !19
  %322 = load ptr, ptr %305, align 8, !tbaa !18
  %323 = getelementptr inbounds double, ptr %322, i64 %.5814
  %324 = load double, ptr %323, align 8, !tbaa !19
  %325 = load ptr, ptr %306, align 8, !tbaa !18
  %326 = load double, ptr %325, align 8, !tbaa !19
  %327 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %324, double noundef %326)
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %327, ptr noundef nonnull @.str.669, ptr noundef %12)
  %328 = add nuw nsw i64 %.5814, 1
  %exitcond1036.not = icmp eq i64 %328, %2
  br i1 %exitcond1036.not, label %.preheader776, label %317, !llvm.loop !43

329:                                              ; preds = %.lr.ph834, %._crit_edge831
  %.1693833 = phi i64 [ 0, %.lr.ph834 ], [ %401, %._crit_edge831 ]
  %330 = load double, ptr %307, align 8, !tbaa !44
  %331 = load ptr, ptr %308, align 8, !tbaa !18
  %332 = getelementptr inbounds double, ptr %331, i64 %.1693833
  %333 = load double, ptr %332, align 8, !tbaa !19
  %334 = fmul double %330, %333
  br i1 %.not.not706789, label %.lr.ph830, label %._crit_edge831

.lr.ph830:                                        ; preds = %329, %.loopexit775
  %.6827 = phi i64 [ %400, %.loopexit775 ], [ 0, %329 ]
  %335 = load ptr, ptr %309, align 8, !tbaa !18
  %336 = getelementptr inbounds double, ptr %335, i64 %.6827
  %337 = load double, ptr %336, align 8, !tbaa !19
  %338 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %337, double noundef %334)
  br i1 %338, label %339, label %.loopexit775

339:                                              ; preds = %.lr.ph830
  %340 = load ptr, ptr %310, align 8, !tbaa !18
  %341 = getelementptr inbounds i64, ptr %340, i64 %.6827
  %342 = load i64, ptr %341, align 8, !tbaa !23
  %343 = icmp eq i64 %342, %5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %343, ptr noundef nonnull @.str.669, ptr noundef %12)
  %344 = load ptr, ptr %310, align 8, !tbaa !18
  %345 = getelementptr inbounds i64, ptr %344, i64 %.6827
  store i64 %.1693833, ptr %345, align 8, !tbaa !23
  %346 = load ptr, ptr %309, align 8, !tbaa !18
  %347 = getelementptr inbounds double, ptr %346, i64 %.6827
  store double 0.000000e+00, ptr %347, align 8, !tbaa !19
  br i1 %.not747.not817, label %.lr.ph820.preheader, label %._crit_edge821

.lr.ph820.preheader:                              ; preds = %339
  br i1 %316, label %._crit_edge821.loopexit.unr-lcssa, label %.lr.ph820

.lr.ph820:                                        ; preds = %.lr.ph820.preheader, %.lr.ph820
  %.7675818 = phi i64 [ %371, %.lr.ph820 ], [ 0, %.lr.ph820.preheader ]
  %niter1144 = phi i64 [ %niter1144.next.1, %.lr.ph820 ], [ 0, %.lr.ph820.preheader ]
  %348 = load ptr, ptr %311, align 8, !tbaa !18
  %349 = getelementptr inbounds ptr, ptr %348, i64 %.6827
  %350 = load ptr, ptr %349, align 8, !tbaa !26
  %351 = getelementptr inbounds double, ptr %350, i64 %.7675818
  %352 = load double, ptr %351, align 8, !tbaa !19
  %353 = load ptr, ptr %312, align 8, !tbaa !18
  %354 = getelementptr inbounds double, ptr %353, i64 %.7675818
  %355 = load double, ptr %354, align 8, !tbaa !19
  %356 = fdiv double %352, %355
  %357 = load ptr, ptr %313, align 8, !tbaa !18
  %358 = getelementptr inbounds double, ptr %357, i64 %.7675818
  store double %356, ptr %358, align 8, !tbaa !19
  %359 = or disjoint i64 %.7675818, 1
  %360 = load ptr, ptr %311, align 8, !tbaa !18
  %361 = getelementptr inbounds ptr, ptr %360, i64 %.6827
  %362 = load ptr, ptr %361, align 8, !tbaa !26
  %363 = getelementptr inbounds double, ptr %362, i64 %359
  %364 = load double, ptr %363, align 8, !tbaa !19
  %365 = load ptr, ptr %312, align 8, !tbaa !18
  %366 = getelementptr inbounds double, ptr %365, i64 %359
  %367 = load double, ptr %366, align 8, !tbaa !19
  %368 = fdiv double %364, %367
  %369 = load ptr, ptr %313, align 8, !tbaa !18
  %370 = getelementptr inbounds double, ptr %369, i64 %359
  store double %368, ptr %370, align 8, !tbaa !19
  %371 = add nuw nsw i64 %.7675818, 2
  %niter1144.next.1 = add i64 %niter1144, 2
  %niter1144.ncmp.1 = icmp eq i64 %niter1144.next.1, %unroll_iter1143
  br i1 %niter1144.ncmp.1, label %._crit_edge821.loopexit.unr-lcssa, label %.lr.ph820, !llvm.loop !45

._crit_edge821.loopexit.unr-lcssa:                ; preds = %.lr.ph820, %.lr.ph820.preheader
  %.7675818.unr = phi i64 [ 0, %.lr.ph820.preheader ], [ %371, %.lr.ph820 ]
  br i1 %lcmp.mod1142.not, label %._crit_edge821, label %.lr.ph820.epil

.lr.ph820.epil:                                   ; preds = %._crit_edge821.loopexit.unr-lcssa
  %372 = load ptr, ptr %311, align 8, !tbaa !18
  %373 = getelementptr inbounds ptr, ptr %372, i64 %.6827
  %374 = load ptr, ptr %373, align 8, !tbaa !26
  %375 = getelementptr inbounds double, ptr %374, i64 %.7675818.unr
  %376 = load double, ptr %375, align 8, !tbaa !19
  %377 = load ptr, ptr %312, align 8, !tbaa !18
  %378 = getelementptr inbounds double, ptr %377, i64 %.7675818.unr
  %379 = load double, ptr %378, align 8, !tbaa !19
  %380 = fdiv double %376, %379
  %381 = load ptr, ptr %313, align 8, !tbaa !18
  %382 = getelementptr inbounds double, ptr %381, i64 %.7675818.unr
  store double %380, ptr %382, align 8, !tbaa !19
  br label %._crit_edge821

._crit_edge821:                                   ; preds = %.lr.ph820.epil, %._crit_edge821.loopexit.unr-lcssa, %339
  %383 = call noundef i64 @_ZN11alglib_impl14kdtreequeryrnnEPNS_6kdtreeEPNS_9ae_vectorEdbPNS_8ae_stateE(ptr noundef nonnull %31, ptr noundef nonnull %32, double noundef %334, i1 noundef zeroext true, ptr noundef %12)
  call void @_ZN11alglib_impl22kdtreequeryresultstagsEPNS_6kdtreeEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %31, ptr noundef nonnull %34, ptr noundef %12)
  call void @_ZN11alglib_impl27kdtreequeryresultsdistancesEPNS_6kdtreeEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %31, ptr noundef nonnull %35, ptr noundef %12)
  %.not748.not822 = icmp sgt i64 %383, 0
  br i1 %.not748.not822, label %.lr.ph825, label %.loopexit775

.lr.ph825:                                        ; preds = %._crit_edge821, %.lr.ph825
  %.8676823 = phi i64 [ %399, %.lr.ph825 ], [ 0, %._crit_edge821 ]
  %384 = load ptr, ptr %309, align 8, !tbaa !18
  %385 = load ptr, ptr %314, align 8, !tbaa !18
  %386 = getelementptr inbounds i64, ptr %385, i64 %.8676823
  %387 = load i64, ptr %386, align 8, !tbaa !23
  %388 = getelementptr inbounds double, ptr %384, i64 %387
  %389 = load double, ptr %388, align 8, !tbaa !19
  %390 = load ptr, ptr %315, align 8, !tbaa !18
  %391 = getelementptr inbounds double, ptr %390, i64 %.8676823
  %392 = load double, ptr %391, align 8, !tbaa !19
  %393 = call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %389, double noundef %392, ptr noundef %12)
  %394 = load ptr, ptr %309, align 8, !tbaa !18
  %395 = load ptr, ptr %314, align 8, !tbaa !18
  %396 = getelementptr inbounds i64, ptr %395, i64 %.8676823
  %397 = load i64, ptr %396, align 8, !tbaa !23
  %398 = getelementptr inbounds double, ptr %394, i64 %397
  store double %393, ptr %398, align 8, !tbaa !19
  %399 = add nuw nsw i64 %.8676823, 1
  %exitcond1038.not = icmp eq i64 %399, %383
  br i1 %exitcond1038.not, label %.loopexit775, label %.lr.ph825, !llvm.loop !46

.loopexit775:                                     ; preds = %.lr.ph825, %._crit_edge821, %.lr.ph830
  %400 = add nuw nsw i64 %.6827, 1
  %exitcond1039.not = icmp eq i64 %400, %2
  br i1 %exitcond1039.not, label %._crit_edge831, label %.lr.ph830, !llvm.loop !47

._crit_edge831:                                   ; preds = %.loopexit775, %329
  %401 = add nuw nsw i64 %.1693833, 1
  %exitcond1040.not = icmp eq i64 %401, %5
  br i1 %exitcond1040.not, label %._crit_edge835, label %329, !llvm.loop !48

._crit_edge835:                                   ; preds = %._crit_edge831, %.preheader776
  %402 = add nsw i64 %5, 1
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %21, i64 noundef %402, ptr noundef %12)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %22, i64 noundef 0, ptr noundef %12)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %23, i64 noundef 0, ptr noundef %12)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %24, i64 noundef %.lcssa.fr, ptr noundef %12)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %25, i64 noundef %.lcssa.fr, ptr noundef %12)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %26, i64 noundef 0, ptr noundef %12)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %27, i64 noundef %402, ptr noundef %12)
  call void @_ZN11alglib_impl16kdtreeexploreboxEPNS_6kdtreeEPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef nonnull %31, ptr noundef nonnull %24, ptr noundef nonnull %25, ptr noundef %12)
  %403 = getelementptr inbounds i8, ptr %27, i64 56
  %404 = load ptr, ptr %403, align 8, !tbaa !18
  store i64 0, ptr %404, align 8, !tbaa !23
  br i1 %.not.not709808, label %.lr.ph862, label %._crit_edge863

.lr.ph862:                                        ; preds = %._crit_edge835
  %405 = getelementptr inbounds i8, ptr %21, i64 56
  %406 = getelementptr inbounds i8, ptr %18, i64 56
  %.not744.not836 = icmp sgt i64 %.lcssa.fr, 0
  %407 = getelementptr inbounds i8, ptr %0, i64 72
  %408 = getelementptr inbounds i8, ptr %3, i64 56
  %409 = getelementptr inbounds i8, ptr %28, i64 72
  %.not745.not839 = icmp sgt i64 %.fr, 0
  %410 = add i64 %.fr, -1
  %xtraiter1146 = and i64 %.fr, 3
  %411 = icmp ult i64 %410, 3
  %unroll_iter1149 = and i64 %.fr, 9223372036854775804
  %lcmp.mod1148.not = icmp eq i64 %xtraiter1146, 0
  %xtraiter1152 = and i64 %.lcssa.fr, 1
  %412 = icmp eq i64 %.lcssa.fr, 1
  %unroll_iter1155 = and i64 %.lcssa.fr, 9223372036854775806
  %lcmp.mod1154.not = icmp eq i64 %xtraiter1152, 0
  %xtraiter1157 = and i64 %.fr, 3
  %413 = icmp ult i64 %410, 3
  %unroll_iter1160 = and i64 %.fr, 9223372036854775804
  %lcmp.mod1159.not = icmp eq i64 %xtraiter1157, 0
  br label %414

414:                                              ; preds = %.lr.ph862, %._crit_edge848
  %.2694858 = phi i64 [ 0, %.lr.ph862 ], [ %542, %._crit_edge848 ]
  %415 = load i64, ptr %22, align 8, !tbaa !49
  %416 = load ptr, ptr %405, align 8, !tbaa !18
  %417 = getelementptr inbounds i64, ptr %416, i64 %.2694858
  store i64 %415, ptr %417, align 8, !tbaa !23
  store i64 0, ptr %29, align 8, !tbaa !23
  br i1 %.not.not706789, label %.lr.ph847, label %._crit_edge848

.lr.ph847:                                        ; preds = %414
  br i1 %.not744.not836, label %.lr.ph847.split.us, label %.lr.ph847.split

.lr.ph847.split.us:                               ; preds = %.lr.ph847, %479
  %.7844.us = phi i64 [ %480, %479 ], [ 0, %.lr.ph847 ]
  %418 = load ptr, ptr %406, align 8, !tbaa !18
  %419 = getelementptr inbounds i64, ptr %418, i64 %.7844.us
  %420 = load i64, ptr %419, align 8, !tbaa !23
  %.not.us = icmp sgt i64 %420, %.2694858
  br i1 %.not.us, label %479, label %.preheader774.us

._crit_edge842.us.loopexit.unr-lcssa:             ; preds = %.lr.ph841.us, %.lr.ph841.us.preheader
  %.10678840.us.unr = phi i64 [ 0, %.lr.ph841.us.preheader ], [ %450, %.lr.ph841.us ]
  br i1 %lcmp.mod1159.not, label %._crit_edge842.us, label %.lr.ph841.us.epil

.lr.ph841.us.epil:                                ; preds = %._crit_edge842.us.loopexit.unr-lcssa, %.lr.ph841.us.epil
  %.10678840.us.epil = phi i64 [ %426, %.lr.ph841.us.epil ], [ %.10678840.us.unr, %._crit_edge842.us.loopexit.unr-lcssa ]
  %epil.iter1158 = phi i64 [ %epil.iter1158.next, %.lr.ph841.us.epil ], [ 0, %._crit_edge842.us.loopexit.unr-lcssa ]
  %421 = load ptr, ptr %409, align 8, !tbaa !18
  %422 = getelementptr inbounds ptr, ptr %421, i64 %481
  %423 = load ptr, ptr %422, align 8, !tbaa !26
  %424 = getelementptr double, ptr %423, i64 %.lcssa.fr
  %425 = getelementptr double, ptr %424, i64 %.10678840.us.epil
  store double 0.000000e+00, ptr %425, align 8, !tbaa !19
  %426 = add nuw nsw i64 %.10678840.us.epil, 1
  %epil.iter1158.next = add i64 %epil.iter1158, 1
  %epil.iter1158.cmp.not = icmp eq i64 %epil.iter1158.next, %xtraiter1157
  br i1 %epil.iter1158.cmp.not, label %._crit_edge842.us, label %.lr.ph841.us.epil, !llvm.loop !50

._crit_edge842.us:                                ; preds = %._crit_edge842.us.loopexit.unr-lcssa, %.lr.ph841.us.epil, %..preheader773_crit_edge.us
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %29, ptr noundef %12)
  br label %479

.lr.ph841.us:                                     ; preds = %.lr.ph841.us.preheader, %.lr.ph841.us
  %.10678840.us = phi i64 [ %450, %.lr.ph841.us ], [ 0, %.lr.ph841.us.preheader ]
  %niter1161 = phi i64 [ %niter1161.next.3, %.lr.ph841.us ], [ 0, %.lr.ph841.us.preheader ]
  %427 = load ptr, ptr %409, align 8, !tbaa !18
  %428 = getelementptr inbounds ptr, ptr %427, i64 %481
  %429 = load ptr, ptr %428, align 8, !tbaa !26
  %430 = getelementptr double, ptr %429, i64 %.lcssa.fr
  %431 = getelementptr double, ptr %430, i64 %.10678840.us
  store double 0.000000e+00, ptr %431, align 8, !tbaa !19
  %432 = or disjoint i64 %.10678840.us, 1
  %433 = load ptr, ptr %409, align 8, !tbaa !18
  %434 = getelementptr inbounds ptr, ptr %433, i64 %481
  %435 = load ptr, ptr %434, align 8, !tbaa !26
  %436 = getelementptr double, ptr %435, i64 %.lcssa.fr
  %437 = getelementptr double, ptr %436, i64 %432
  store double 0.000000e+00, ptr %437, align 8, !tbaa !19
  %438 = or disjoint i64 %.10678840.us, 2
  %439 = load ptr, ptr %409, align 8, !tbaa !18
  %440 = getelementptr inbounds ptr, ptr %439, i64 %481
  %441 = load ptr, ptr %440, align 8, !tbaa !26
  %442 = getelementptr double, ptr %441, i64 %.lcssa.fr
  %443 = getelementptr double, ptr %442, i64 %438
  store double 0.000000e+00, ptr %443, align 8, !tbaa !19
  %444 = or disjoint i64 %.10678840.us, 3
  %445 = load ptr, ptr %409, align 8, !tbaa !18
  %446 = getelementptr inbounds ptr, ptr %445, i64 %481
  %447 = load ptr, ptr %446, align 8, !tbaa !26
  %448 = getelementptr double, ptr %447, i64 %.lcssa.fr
  %449 = getelementptr double, ptr %448, i64 %444
  store double 0.000000e+00, ptr %449, align 8, !tbaa !19
  %450 = add nuw nsw i64 %.10678840.us, 4
  %niter1161.next.3 = add i64 %niter1161, 4
  %niter1161.ncmp.3 = icmp eq i64 %niter1161.next.3, %unroll_iter1160
  br i1 %niter1161.ncmp.3, label %._crit_edge842.us.loopexit.unr-lcssa, label %.lr.ph841.us, !llvm.loop !51

.preheader774.us.new:                             ; preds = %.preheader774.us, %.preheader774.us.new
  %.9677837.us = phi i64 [ %478, %.preheader774.us.new ], [ 0, %.preheader774.us ]
  %niter1156 = phi i64 [ %niter1156.next.1, %.preheader774.us.new ], [ 0, %.preheader774.us ]
  %451 = load ptr, ptr %407, align 8, !tbaa !18
  %452 = getelementptr inbounds ptr, ptr %451, i64 %.7844.us
  %453 = load ptr, ptr %452, align 8, !tbaa !26
  %454 = getelementptr inbounds double, ptr %453, i64 %.9677837.us
  %455 = load double, ptr %454, align 8, !tbaa !19
  %456 = load ptr, ptr %408, align 8, !tbaa !18
  %457 = getelementptr inbounds double, ptr %456, i64 %.9677837.us
  %458 = load double, ptr %457, align 8, !tbaa !19
  %459 = fdiv double %455, %458
  %460 = load ptr, ptr %409, align 8, !tbaa !18
  %461 = getelementptr inbounds ptr, ptr %460, i64 %481
  %462 = load ptr, ptr %461, align 8, !tbaa !26
  %463 = getelementptr inbounds double, ptr %462, i64 %.9677837.us
  store double %459, ptr %463, align 8, !tbaa !19
  %464 = or disjoint i64 %.9677837.us, 1
  %465 = load ptr, ptr %407, align 8, !tbaa !18
  %466 = getelementptr inbounds ptr, ptr %465, i64 %.7844.us
  %467 = load ptr, ptr %466, align 8, !tbaa !26
  %468 = getelementptr inbounds double, ptr %467, i64 %464
  %469 = load double, ptr %468, align 8, !tbaa !19
  %470 = load ptr, ptr %408, align 8, !tbaa !18
  %471 = getelementptr inbounds double, ptr %470, i64 %464
  %472 = load double, ptr %471, align 8, !tbaa !19
  %473 = fdiv double %469, %472
  %474 = load ptr, ptr %409, align 8, !tbaa !18
  %475 = getelementptr inbounds ptr, ptr %474, i64 %481
  %476 = load ptr, ptr %475, align 8, !tbaa !26
  %477 = getelementptr inbounds double, ptr %476, i64 %464
  store double %473, ptr %477, align 8, !tbaa !19
  %478 = add nuw nsw i64 %.9677837.us, 2
  %niter1156.next.1 = add i64 %niter1156, 2
  %niter1156.ncmp.1 = icmp eq i64 %niter1156.next.1, %unroll_iter1155
  br i1 %niter1156.ncmp.1, label %..preheader773_crit_edge.us.unr-lcssa, label %.preheader774.us.new, !llvm.loop !52

479:                                              ; preds = %._crit_edge842.us, %.lr.ph847.split.us
  %480 = add nuw nsw i64 %.7844.us, 1
  %exitcond1046.not = icmp eq i64 %480, %2
  br i1 %exitcond1046.not, label %._crit_edge848, label %.lr.ph847.split.us, !llvm.loop !53

.preheader774.us:                                 ; preds = %.lr.ph847.split.us
  %481 = load i64, ptr %29, align 8, !tbaa !23
  br i1 %412, label %..preheader773_crit_edge.us.unr-lcssa, label %.preheader774.us.new

..preheader773_crit_edge.us.unr-lcssa:            ; preds = %.preheader774.us.new, %.preheader774.us
  %.9677837.us.unr = phi i64 [ 0, %.preheader774.us ], [ %478, %.preheader774.us.new ]
  br i1 %lcmp.mod1154.not, label %..preheader773_crit_edge.us, label %..preheader773_crit_edge.us.epilog-lcssa

..preheader773_crit_edge.us.epilog-lcssa:         ; preds = %..preheader773_crit_edge.us.unr-lcssa
  %482 = load ptr, ptr %407, align 8, !tbaa !18
  %483 = getelementptr inbounds ptr, ptr %482, i64 %.7844.us
  %484 = load ptr, ptr %483, align 8, !tbaa !26
  %485 = getelementptr inbounds double, ptr %484, i64 %.9677837.us.unr
  %486 = load double, ptr %485, align 8, !tbaa !19
  %487 = load ptr, ptr %408, align 8, !tbaa !18
  %488 = getelementptr inbounds double, ptr %487, i64 %.9677837.us.unr
  %489 = load double, ptr %488, align 8, !tbaa !19
  %490 = fdiv double %486, %489
  %491 = load ptr, ptr %409, align 8, !tbaa !18
  %492 = getelementptr inbounds ptr, ptr %491, i64 %481
  %493 = load ptr, ptr %492, align 8, !tbaa !26
  %494 = getelementptr inbounds double, ptr %493, i64 %.9677837.us.unr
  store double %490, ptr %494, align 8, !tbaa !19
  br label %..preheader773_crit_edge.us

..preheader773_crit_edge.us:                      ; preds = %..preheader773_crit_edge.us.unr-lcssa, %..preheader773_crit_edge.us.epilog-lcssa
  br i1 %.not745.not839, label %.lr.ph841.us.preheader, label %._crit_edge842.us

.lr.ph841.us.preheader:                           ; preds = %..preheader773_crit_edge.us
  br i1 %413, label %._crit_edge842.us.loopexit.unr-lcssa, label %.lr.ph841.us

.lr.ph847.split:                                  ; preds = %.lr.ph847
  br i1 %.not745.not839, label %.lr.ph847.split.split.us, label %.lr.ph847.split.split

.lr.ph847.split.split.us:                         ; preds = %.lr.ph847.split, %522
  %.7844.us849 = phi i64 [ %523, %522 ], [ 0, %.lr.ph847.split ]
  %495 = load ptr, ptr %406, align 8, !tbaa !18
  %496 = getelementptr inbounds i64, ptr %495, i64 %.7844.us849
  %497 = load i64, ptr %496, align 8, !tbaa !23
  %.not.us850 = icmp sgt i64 %497, %.2694858
  br i1 %.not.us850, label %522, label %.preheader774.us854

.preheader774.us854.new:                          ; preds = %.preheader774.us854, %.preheader774.us854.new
  %.10678840.us851 = phi i64 [ %521, %.preheader774.us854.new ], [ 0, %.preheader774.us854 ]
  %niter1150 = phi i64 [ %niter1150.next.3, %.preheader774.us854.new ], [ 0, %.preheader774.us854 ]
  %498 = load ptr, ptr %409, align 8, !tbaa !18
  %499 = getelementptr inbounds ptr, ptr %498, i64 %524
  %500 = load ptr, ptr %499, align 8, !tbaa !26
  %501 = getelementptr double, ptr %500, i64 %.lcssa.fr
  %502 = getelementptr double, ptr %501, i64 %.10678840.us851
  store double 0.000000e+00, ptr %502, align 8, !tbaa !19
  %503 = or disjoint i64 %.10678840.us851, 1
  %504 = load ptr, ptr %409, align 8, !tbaa !18
  %505 = getelementptr inbounds ptr, ptr %504, i64 %524
  %506 = load ptr, ptr %505, align 8, !tbaa !26
  %507 = getelementptr double, ptr %506, i64 %.lcssa.fr
  %508 = getelementptr double, ptr %507, i64 %503
  store double 0.000000e+00, ptr %508, align 8, !tbaa !19
  %509 = or disjoint i64 %.10678840.us851, 2
  %510 = load ptr, ptr %409, align 8, !tbaa !18
  %511 = getelementptr inbounds ptr, ptr %510, i64 %524
  %512 = load ptr, ptr %511, align 8, !tbaa !26
  %513 = getelementptr double, ptr %512, i64 %.lcssa.fr
  %514 = getelementptr double, ptr %513, i64 %509
  store double 0.000000e+00, ptr %514, align 8, !tbaa !19
  %515 = or disjoint i64 %.10678840.us851, 3
  %516 = load ptr, ptr %409, align 8, !tbaa !18
  %517 = getelementptr inbounds ptr, ptr %516, i64 %524
  %518 = load ptr, ptr %517, align 8, !tbaa !26
  %519 = getelementptr double, ptr %518, i64 %.lcssa.fr
  %520 = getelementptr double, ptr %519, i64 %515
  store double 0.000000e+00, ptr %520, align 8, !tbaa !19
  %521 = add nuw nsw i64 %.10678840.us851, 4
  %niter1150.next.3 = add i64 %niter1150, 4
  %niter1150.ncmp.3 = icmp eq i64 %niter1150.next.3, %unroll_iter1149
  br i1 %niter1150.ncmp.3, label %._crit_edge842.us856.unr-lcssa, label %.preheader774.us854.new, !llvm.loop !51

522:                                              ; preds = %._crit_edge842.us856, %.lr.ph847.split.split.us
  %523 = add nuw nsw i64 %.7844.us849, 1
  %exitcond1043.not = icmp eq i64 %523, %2
  br i1 %exitcond1043.not, label %._crit_edge848, label %.lr.ph847.split.split.us, !llvm.loop !53

.preheader774.us854:                              ; preds = %.lr.ph847.split.split.us
  %524 = load i64, ptr %29, align 8, !tbaa !23
  br i1 %411, label %._crit_edge842.us856.unr-lcssa, label %.preheader774.us854.new

._crit_edge842.us856.unr-lcssa:                   ; preds = %.preheader774.us854.new, %.preheader774.us854
  %.10678840.us851.unr = phi i64 [ 0, %.preheader774.us854 ], [ %521, %.preheader774.us854.new ]
  br i1 %lcmp.mod1148.not, label %._crit_edge842.us856, label %.epil.preheader1145

.epil.preheader1145:                              ; preds = %._crit_edge842.us856.unr-lcssa, %.epil.preheader1145
  %.10678840.us851.epil = phi i64 [ %530, %.epil.preheader1145 ], [ %.10678840.us851.unr, %._crit_edge842.us856.unr-lcssa ]
  %epil.iter1147 = phi i64 [ %epil.iter1147.next, %.epil.preheader1145 ], [ 0, %._crit_edge842.us856.unr-lcssa ]
  %525 = load ptr, ptr %409, align 8, !tbaa !18
  %526 = getelementptr inbounds ptr, ptr %525, i64 %524
  %527 = load ptr, ptr %526, align 8, !tbaa !26
  %528 = getelementptr double, ptr %527, i64 %.lcssa.fr
  %529 = getelementptr double, ptr %528, i64 %.10678840.us851.epil
  store double 0.000000e+00, ptr %529, align 8, !tbaa !19
  %530 = add nuw nsw i64 %.10678840.us851.epil, 1
  %epil.iter1147.next = add i64 %epil.iter1147, 1
  %epil.iter1147.cmp.not = icmp eq i64 %epil.iter1147.next, %xtraiter1146
  br i1 %epil.iter1147.cmp.not, label %._crit_edge842.us856, label %.epil.preheader1145, !llvm.loop !54

._crit_edge842.us856:                             ; preds = %.epil.preheader1145, %._crit_edge842.us856.unr-lcssa
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %29, ptr noundef %12)
  br label %522

.lr.ph847.split.split:                            ; preds = %.lr.ph847.split, %534
  %.7844 = phi i64 [ %535, %534 ], [ 0, %.lr.ph847.split ]
  %531 = load ptr, ptr %406, align 8, !tbaa !18
  %532 = getelementptr inbounds i64, ptr %531, i64 %.7844
  %533 = load i64, ptr %532, align 8, !tbaa !23
  %.not = icmp sgt i64 %533, %.2694858
  br i1 %.not, label %534, label %.preheader774

.preheader774:                                    ; preds = %.lr.ph847.split.split
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %29, ptr noundef %12)
  br label %534

534:                                              ; preds = %.lr.ph847.split.split, %.preheader774
  %535 = add nuw nsw i64 %.7844, 1
  %exitcond1041.not = icmp eq i64 %535, %2
  br i1 %exitcond1041.not, label %._crit_edge848, label %.lr.ph847.split.split, !llvm.loop !53

._crit_edge848:                                   ; preds = %534, %522, %479, %414
  %536 = load i64, ptr %29, align 8, !tbaa !23
  %537 = icmp sgt i64 %536, 0
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %537, ptr noundef nonnull @.str.669, ptr noundef %12)
  %538 = load i64, ptr %29, align 8, !tbaa !23
  call void @_ZN11alglib_impl11kdtreebuildEPNS_9ae_matrixEllllPNS_6kdtreeEPNS_8ae_stateE(ptr noundef nonnull %28, i64 noundef %538, i64 noundef %.lcssa.fr, i64 noundef %.fr, i64 noundef 2, ptr noundef nonnull %30, ptr noundef %12)
  %539 = load i64, ptr %29, align 8, !tbaa !23
  call void @_ZN11alglib_implL26rbfv2_convertandappendtreeEPNS_6kdtreeElllPNS_9ae_vectorES3_S3_PNS_8ae_stateE(ptr noundef nonnull %30, i64 noundef %539, i64 noundef %.lcssa.fr, i64 noundef %.fr, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull %26, ptr noundef %12)
  %540 = load i64, ptr %26, align 8, !tbaa !49
  %541 = load ptr, ptr %403, align 8, !tbaa !18
  %542 = add nuw nsw i64 %.2694858, 1
  %543 = getelementptr inbounds i64, ptr %541, i64 %542
  store i64 %540, ptr %543, align 8, !tbaa !23
  %exitcond1047.not = icmp eq i64 %542, %5
  br i1 %exitcond1047.not, label %._crit_edge863, label %414, !llvm.loop !55

._crit_edge863:                                   ; preds = %._crit_edge848, %._crit_edge835
  %544 = load i64, ptr %22, align 8, !tbaa !49
  %545 = getelementptr inbounds i8, ptr %21, i64 56
  %546 = load ptr, ptr %545, align 8, !tbaa !18
  %547 = getelementptr inbounds i64, ptr %546, i64 %5
  store i64 %544, ptr %547, align 8, !tbaa !23
  call void @_ZN11alglib_implL24rbfv2_allocatecalcbufferEPNS_10rbfv2modelEPNS_15rbfv2calcbufferEPNS_8ae_stateE(ptr noundef nonnull %8, ptr noundef nonnull %48, ptr noundef %12)
  br i1 %.not.not706789, label %.preheader772.lr.ph, label %._crit_edge870

.preheader772.lr.ph:                              ; preds = %._crit_edge863
  %.not.not742864 = icmp sgt i64 %.lcssa.fr, 0
  %548 = getelementptr inbounds i8, ptr %0, i64 72
  %549 = getelementptr inbounds i8, ptr %3, i64 56
  %550 = getelementptr inbounds i8, ptr %28, i64 72
  br i1 %.not.not742864, label %.preheader772.us.preheader, label %._crit_edge870

.preheader772.us.preheader:                       ; preds = %.preheader772.lr.ph
  %xtraiter1163 = and i64 %.lcssa.fr, 1
  %551 = icmp eq i64 %.lcssa.fr, 1
  %unroll_iter1166 = and i64 %.lcssa.fr, 9223372036854775806
  %lcmp.mod1165.not = icmp eq i64 %xtraiter1163, 0
  br label %.preheader772.us

.preheader772.us:                                 ; preds = %.preheader772.us.preheader, %._crit_edge867.us
  %.8869.us = phi i64 [ %593, %._crit_edge867.us ], [ 0, %.preheader772.us.preheader ]
  br i1 %551, label %._crit_edge867.us.unr-lcssa, label %.preheader772.us.new

.preheader772.us.new:                             ; preds = %.preheader772.us, %.preheader772.us.new
  %.11679865.us = phi i64 [ %579, %.preheader772.us.new ], [ 0, %.preheader772.us ]
  %niter1167 = phi i64 [ %niter1167.next.1, %.preheader772.us.new ], [ 0, %.preheader772.us ]
  %552 = load ptr, ptr %548, align 8, !tbaa !18
  %553 = getelementptr inbounds ptr, ptr %552, i64 %.8869.us
  %554 = load ptr, ptr %553, align 8, !tbaa !26
  %555 = getelementptr inbounds double, ptr %554, i64 %.11679865.us
  %556 = load double, ptr %555, align 8, !tbaa !19
  %557 = load ptr, ptr %549, align 8, !tbaa !18
  %558 = getelementptr inbounds double, ptr %557, i64 %.11679865.us
  %559 = load double, ptr %558, align 8, !tbaa !19
  %560 = fdiv double %556, %559
  %561 = load ptr, ptr %550, align 8, !tbaa !18
  %562 = getelementptr inbounds ptr, ptr %561, i64 %.8869.us
  %563 = load ptr, ptr %562, align 8, !tbaa !26
  %564 = getelementptr inbounds double, ptr %563, i64 %.11679865.us
  store double %560, ptr %564, align 8, !tbaa !19
  %565 = or disjoint i64 %.11679865.us, 1
  %566 = load ptr, ptr %548, align 8, !tbaa !18
  %567 = getelementptr inbounds ptr, ptr %566, i64 %.8869.us
  %568 = load ptr, ptr %567, align 8, !tbaa !26
  %569 = getelementptr inbounds double, ptr %568, i64 %565
  %570 = load double, ptr %569, align 8, !tbaa !19
  %571 = load ptr, ptr %549, align 8, !tbaa !18
  %572 = getelementptr inbounds double, ptr %571, i64 %565
  %573 = load double, ptr %572, align 8, !tbaa !19
  %574 = fdiv double %570, %573
  %575 = load ptr, ptr %550, align 8, !tbaa !18
  %576 = getelementptr inbounds ptr, ptr %575, i64 %.8869.us
  %577 = load ptr, ptr %576, align 8, !tbaa !26
  %578 = getelementptr inbounds double, ptr %577, i64 %565
  store double %574, ptr %578, align 8, !tbaa !19
  %579 = add nuw nsw i64 %.11679865.us, 2
  %niter1167.next.1 = add i64 %niter1167, 2
  %niter1167.ncmp.1 = icmp eq i64 %niter1167.next.1, %unroll_iter1166
  br i1 %niter1167.ncmp.1, label %._crit_edge867.us.unr-lcssa, label %.preheader772.us.new, !llvm.loop !56

._crit_edge867.us.unr-lcssa:                      ; preds = %.preheader772.us.new, %.preheader772.us
  %.11679865.us.unr = phi i64 [ 0, %.preheader772.us ], [ %579, %.preheader772.us.new ]
  br i1 %lcmp.mod1165.not, label %._crit_edge867.us, label %._crit_edge867.us.epilog-lcssa

._crit_edge867.us.epilog-lcssa:                   ; preds = %._crit_edge867.us.unr-lcssa
  %580 = load ptr, ptr %548, align 8, !tbaa !18
  %581 = getelementptr inbounds ptr, ptr %580, i64 %.8869.us
  %582 = load ptr, ptr %581, align 8, !tbaa !26
  %583 = getelementptr inbounds double, ptr %582, i64 %.11679865.us.unr
  %584 = load double, ptr %583, align 8, !tbaa !19
  %585 = load ptr, ptr %549, align 8, !tbaa !18
  %586 = getelementptr inbounds double, ptr %585, i64 %.11679865.us.unr
  %587 = load double, ptr %586, align 8, !tbaa !19
  %588 = fdiv double %584, %587
  %589 = load ptr, ptr %550, align 8, !tbaa !18
  %590 = getelementptr inbounds ptr, ptr %589, i64 %.8869.us
  %591 = load ptr, ptr %590, align 8, !tbaa !26
  %592 = getelementptr inbounds double, ptr %591, i64 %.11679865.us.unr
  store double %588, ptr %592, align 8, !tbaa !19
  br label %._crit_edge867.us

._crit_edge867.us:                                ; preds = %._crit_edge867.us.unr-lcssa, %._crit_edge867.us.epilog-lcssa
  %593 = add nuw nsw i64 %.8869.us, 1
  %exitcond1049.not = icmp eq i64 %593, %2
  br i1 %exitcond1049.not, label %._crit_edge870, label %.preheader772.us, !llvm.loop !57

._crit_edge870:                                   ; preds = %._crit_edge867.us, %.preheader772.lr.ph, %._crit_edge863
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %42, i64 noundef %5, ptr noundef %12)
  br i1 %.not.not709808, label %.lr.ph883, label %._crit_edge985

.lr.ph883:                                        ; preds = %._crit_edge870
  %.not.not741871 = icmp sgt i64 %.lcssa.fr, 0
  %594 = getelementptr inbounds i8, ptr %28, i64 72
  %595 = getelementptr inbounds i8, ptr %32, i64 56
  %596 = sitofp i64 %2 to double
  %597 = getelementptr inbounds i8, ptr %42, i64 56
  %598 = add i64 %.lcssa.fr, -1
  %xtraiter1169 = and i64 %.lcssa.fr, 1
  %599 = icmp eq i64 %598, 0
  %unroll_iter1172 = and i64 %.lcssa.fr, 9223372036854775806
  %lcmp.mod1171.not = icmp eq i64 %xtraiter1169, 0
  br label %632

.preheader770:                                    ; preds = %._crit_edge877
  br i1 %.not.not709808, label %.lr.ph984, label %._crit_edge985

.lr.ph984:                                        ; preds = %.preheader770
  %.not.not738885 = icmp sgt i64 %.lcssa.fr, 0
  %600 = getelementptr inbounds i8, ptr %28, i64 72
  %601 = getelementptr inbounds i8, ptr %32, i64 56
  %602 = getelementptr inbounds i8, ptr %36, i64 56
  %.not.not739889 = icmp slt i64 %.0, 1
  %603 = getelementptr inbounds i8, ptr %37, i64 56
  %604 = getelementptr inbounds i8, ptr %38, i64 56
  %605 = getelementptr inbounds i8, ptr %52, i64 56
  %606 = getelementptr inbounds i8, ptr %51, i64 56
  %607 = getelementptr inbounds i8, ptr %39, i64 56
  %608 = getelementptr inbounds i8, ptr %8, i64 632
  %609 = getelementptr inbounds i8, ptr %8, i64 624
  %.not.not723955 = icmp slt i64 %.fr, 1
  %610 = getelementptr inbounds i8, ptr %15, i64 72
  %611 = getelementptr inbounds i8, ptr %47, i64 56
  %612 = getelementptr inbounds i8, ptr %43, i64 1762
  %613 = getelementptr inbounds i8, ptr %43, i64 1763
  %614 = getelementptr inbounds i8, ptr %43, i64 1761
  %615 = getelementptr inbounds i8, ptr %42, i64 56
  %616 = sitofp i64 %.fr to double
  %617 = getelementptr inbounds i8, ptr %43, i64 1536
  %618 = getelementptr inbounds i8, ptr %43, i64 1664
  %619 = getelementptr inbounds i8, ptr %43, i64 1720
  %620 = getelementptr inbounds i8, ptr %43, i64 1592
  %621 = getelementptr inbounds i8, ptr %40, i64 56
  %622 = getelementptr inbounds i8, ptr %43, i64 1600
  %623 = getelementptr inbounds i8, ptr %44, i64 16
  %624 = getelementptr inbounds i8, ptr %46, i64 56
  %625 = getelementptr inbounds i8, ptr %26, i64 56
  %xtraiter1174 = and i64 %.lcssa.fr, 1
  %626 = icmp eq i64 %598, 0
  %unroll_iter1177 = and i64 %.lcssa.fr, 9223372036854775806
  %lcmp.mod1176.not = icmp eq i64 %xtraiter1174, 0
  %xtraiter1180 = and i64 %.0, 3
  %627 = icmp ult i64 %.0, 4
  %unroll_iter1183 = and i64 %.0, 9223372036854775804
  %lcmp.mod1182.not = icmp eq i64 %xtraiter1180, 0
  %xtraiter1190 = and i64 %.lcssa.fr, 1
  %628 = icmp eq i64 %598, 0
  %unroll_iter1193 = and i64 %.lcssa.fr, 9223372036854775806
  %lcmp.mod1192.not = icmp eq i64 %xtraiter1190, 0
  %xtraiter1195 = and i64 %182, 1
  %629 = icmp eq i64 %182, 1
  %unroll_iter1198 = and i64 %182, 9223372036854775806
  %lcmp.mod1197.not = icmp eq i64 %xtraiter1195, 0
  %xtraiter1227 = and i64 %.lcssa.fr, 1
  %630 = icmp eq i64 %598, 0
  %unroll_iter1230 = and i64 %.lcssa.fr, 9223372036854775806
  %lcmp.mod1229.not = icmp eq i64 %xtraiter1227, 0
  %brmerge = or i1 %.not.not739889, %.not.not723955
  %xtraiter1233 = and i64 %.fr, 1
  %631 = icmp eq i64 %.fr, 1
  %unroll_iter1236 = and i64 %.fr, 9223372036854775806
  %lcmp.mod1235.not = icmp eq i64 %xtraiter1233, 0
  br label %678

632:                                              ; preds = %.lr.ph883, %._crit_edge877
  %.0664881 = phi double [ 0.000000e+00, %.lr.ph883 ], [ %676, %._crit_edge877 ]
  %.3695879 = phi i64 [ 0, %.lr.ph883 ], [ %677, %._crit_edge877 ]
  store i64 0, ptr %41, align 8, !tbaa !23
  br i1 %.not.not706789, label %.preheader771.lr.ph, label %._crit_edge877

.preheader771.lr.ph:                              ; preds = %632
  br i1 %.not.not741871, label %.preheader771.us, label %.preheader771

.preheader771.us:                                 ; preds = %.preheader771.lr.ph, %._crit_edge874.us
  %633 = phi i64 [ %659, %._crit_edge874.us ], [ 0, %.preheader771.lr.ph ]
  %.9876.us = phi i64 [ %660, %._crit_edge874.us ], [ 0, %.preheader771.lr.ph ]
  br i1 %599, label %._crit_edge874.us.unr-lcssa, label %.preheader771.us.new

.preheader771.us.new:                             ; preds = %.preheader771.us, %.preheader771.us.new
  %.12680872.us = phi i64 [ %649, %.preheader771.us.new ], [ 0, %.preheader771.us ]
  %niter1173 = phi i64 [ %niter1173.next.1, %.preheader771.us.new ], [ 0, %.preheader771.us ]
  %634 = load ptr, ptr %594, align 8, !tbaa !18
  %635 = getelementptr inbounds ptr, ptr %634, i64 %.9876.us
  %636 = load ptr, ptr %635, align 8, !tbaa !26
  %637 = getelementptr inbounds double, ptr %636, i64 %.12680872.us
  %638 = load double, ptr %637, align 8, !tbaa !19
  %639 = load ptr, ptr %595, align 8, !tbaa !18
  %640 = getelementptr inbounds double, ptr %639, i64 %.12680872.us
  store double %638, ptr %640, align 8, !tbaa !19
  %641 = or disjoint i64 %.12680872.us, 1
  %642 = load ptr, ptr %594, align 8, !tbaa !18
  %643 = getelementptr inbounds ptr, ptr %642, i64 %.9876.us
  %644 = load ptr, ptr %643, align 8, !tbaa !26
  %645 = getelementptr inbounds double, ptr %644, i64 %641
  %646 = load double, ptr %645, align 8, !tbaa !19
  %647 = load ptr, ptr %595, align 8, !tbaa !18
  %648 = getelementptr inbounds double, ptr %647, i64 %641
  store double %646, ptr %648, align 8, !tbaa !19
  %649 = add nuw nsw i64 %.12680872.us, 2
  %niter1173.next.1 = add i64 %niter1173, 2
  %niter1173.ncmp.1 = icmp eq i64 %niter1173.next.1, %unroll_iter1172
  br i1 %niter1173.ncmp.1, label %._crit_edge874.us.unr-lcssa, label %.preheader771.us.new, !llvm.loop !58

._crit_edge874.us.unr-lcssa:                      ; preds = %.preheader771.us.new, %.preheader771.us
  %.12680872.us.unr = phi i64 [ 0, %.preheader771.us ], [ %649, %.preheader771.us.new ]
  br i1 %lcmp.mod1171.not, label %._crit_edge874.us, label %._crit_edge874.us.epilog-lcssa

._crit_edge874.us.epilog-lcssa:                   ; preds = %._crit_edge874.us.unr-lcssa
  %650 = load ptr, ptr %594, align 8, !tbaa !18
  %651 = getelementptr inbounds ptr, ptr %650, i64 %.9876.us
  %652 = load ptr, ptr %651, align 8, !tbaa !26
  %653 = getelementptr inbounds double, ptr %652, i64 %.12680872.us.unr
  %654 = load double, ptr %653, align 8, !tbaa !19
  %655 = load ptr, ptr %595, align 8, !tbaa !18
  %656 = getelementptr inbounds double, ptr %655, i64 %.12680872.us.unr
  store double %654, ptr %656, align 8, !tbaa !19
  br label %._crit_edge874.us

._crit_edge874.us:                                ; preds = %._crit_edge874.us.unr-lcssa, %._crit_edge874.us.epilog-lcssa
  %657 = call noundef double @_ZN11alglib_impl15rbfv2nearradiusElPNS_8ae_stateE(i64 noundef %70, ptr noundef %12)
  %658 = call noundef i64 @_ZN11alglib_implL25rbfv2_designmatrixrowsizeEPNS_9ae_vectorES1_S1_S1_S1_S1_S1_lllldS1_PNS_15rbfv2calcbufferEPNS_8ae_stateE(ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull %26, ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull %24, ptr noundef nonnull %25, i64 noundef %.lcssa.fr, i64 noundef %.fr, i64 noundef %5, i64 noundef %.3695879, double noundef %657, ptr noundef nonnull %32, ptr noundef nonnull %48, ptr noundef %12)
  %659 = add nsw i64 %658, %633
  store i64 %659, ptr %41, align 8, !tbaa !23
  %660 = add nuw nsw i64 %.9876.us, 1
  %exitcond1052.not = icmp eq i64 %660, %2
  br i1 %exitcond1052.not, label %._crit_edge877, label %.preheader771.us, !llvm.loop !59

.preheader771:                                    ; preds = %.preheader771.lr.ph, %.preheader771
  %661 = phi i64 [ %664, %.preheader771 ], [ 0, %.preheader771.lr.ph ]
  %.9876 = phi i64 [ %665, %.preheader771 ], [ 0, %.preheader771.lr.ph ]
  %662 = call noundef double @_ZN11alglib_impl15rbfv2nearradiusElPNS_8ae_stateE(i64 noundef %70, ptr noundef %12)
  %663 = call noundef i64 @_ZN11alglib_implL25rbfv2_designmatrixrowsizeEPNS_9ae_vectorES1_S1_S1_S1_S1_S1_lllldS1_PNS_15rbfv2calcbufferEPNS_8ae_stateE(ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull %26, ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull %24, ptr noundef nonnull %25, i64 noundef %.lcssa.fr, i64 noundef %.fr, i64 noundef %5, i64 noundef %.3695879, double noundef %662, ptr noundef nonnull %32, ptr noundef nonnull %48, ptr noundef %12)
  %664 = add nsw i64 %663, %661
  store i64 %664, ptr %41, align 8, !tbaa !23
  %665 = add nuw nsw i64 %.9876, 1
  %exitcond1050.not = icmp eq i64 %665, %2
  br i1 %exitcond1050.not, label %._crit_edge877, label %.preheader771, !llvm.loop !59

._crit_edge877:                                   ; preds = %.preheader771, %._crit_edge874.us, %632
  %666 = phi i64 [ 0, %632 ], [ %659, %._crit_edge874.us ], [ %664, %.preheader771 ]
  %667 = sitofp i64 %666 to double
  %668 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %667, double noundef 1.000000e+00, ptr noundef %12)
  %669 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %596, double noundef 1.000000e+00, ptr noundef %12)
  %670 = fdiv double %668, %669
  %671 = load ptr, ptr %597, align 8, !tbaa !18
  %672 = getelementptr inbounds double, ptr %671, i64 %.3695879
  store double %670, ptr %672, align 8, !tbaa !19
  %673 = load ptr, ptr %597, align 8, !tbaa !18
  %674 = getelementptr inbounds double, ptr %673, i64 %.3695879
  %675 = load double, ptr %674, align 8, !tbaa !19
  %676 = fadd double %.0664881, %675
  %677 = add nuw nsw i64 %.3695879, 1
  %exitcond1053.not = icmp eq i64 %677, %5
  br i1 %exitcond1053.not, label %.preheader770, label %632, !llvm.loop !60

.loopexit768:                                     ; preds = %._crit_edge975, %.preheader767
  %exitcond1074.not = icmp eq i64 %680, %5
  br i1 %exitcond1074.not, label %._crit_edge985, label %678, !llvm.loop !61

678:                                              ; preds = %.lr.ph984, %.loopexit768
  %.4696983 = phi i64 [ 0, %.lr.ph984 ], [ %680, %.loopexit768 ]
  %679 = load ptr, ptr %403, align 8, !tbaa !18
  %680 = add nuw nsw i64 %.4696983, 1
  %681 = getelementptr inbounds i64, ptr %679, i64 %680
  %682 = load i64, ptr %681, align 8, !tbaa !23
  %683 = getelementptr inbounds i64, ptr %679, i64 %.4696983
  %684 = load i64, ptr %683, align 8, !tbaa !23
  %685 = sub nsw i64 %682, %684
  %686 = sdiv i64 %685, %183
  %687 = mul nsw i64 %686, %183
  %688 = icmp eq i64 %685, %687
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %688, ptr noundef nonnull @.str.149, ptr noundef %12)
  br i1 %.not.not706789, label %.preheader766, label %._crit_edge896

.preheader766:                                    ; preds = %678, %._crit_edge893
  %.10895 = phi i64 [ %737, %._crit_edge893 ], [ 0, %678 ]
  br i1 %.not.not738885, label %.lr.ph887.preheader, label %._crit_edge888

.lr.ph887.preheader:                              ; preds = %.preheader766
  br i1 %626, label %._crit_edge888.loopexit.unr-lcssa, label %.lr.ph887

.lr.ph887:                                        ; preds = %.lr.ph887.preheader, %.lr.ph887
  %.13681886 = phi i64 [ %704, %.lr.ph887 ], [ 0, %.lr.ph887.preheader ]
  %niter1178 = phi i64 [ %niter1178.next.1, %.lr.ph887 ], [ 0, %.lr.ph887.preheader ]
  %689 = load ptr, ptr %600, align 8, !tbaa !18
  %690 = getelementptr inbounds ptr, ptr %689, i64 %.10895
  %691 = load ptr, ptr %690, align 8, !tbaa !26
  %692 = getelementptr inbounds double, ptr %691, i64 %.13681886
  %693 = load double, ptr %692, align 8, !tbaa !19
  %694 = load ptr, ptr %601, align 8, !tbaa !18
  %695 = getelementptr inbounds double, ptr %694, i64 %.13681886
  store double %693, ptr %695, align 8, !tbaa !19
  %696 = or disjoint i64 %.13681886, 1
  %697 = load ptr, ptr %600, align 8, !tbaa !18
  %698 = getelementptr inbounds ptr, ptr %697, i64 %.10895
  %699 = load ptr, ptr %698, align 8, !tbaa !26
  %700 = getelementptr inbounds double, ptr %699, i64 %696
  %701 = load double, ptr %700, align 8, !tbaa !19
  %702 = load ptr, ptr %601, align 8, !tbaa !18
  %703 = getelementptr inbounds double, ptr %702, i64 %696
  store double %701, ptr %703, align 8, !tbaa !19
  %704 = add nuw nsw i64 %.13681886, 2
  %niter1178.next.1 = add i64 %niter1178, 2
  %niter1178.ncmp.1 = icmp eq i64 %niter1178.next.1, %unroll_iter1177
  br i1 %niter1178.ncmp.1, label %._crit_edge888.loopexit.unr-lcssa, label %.lr.ph887, !llvm.loop !62

._crit_edge888.loopexit.unr-lcssa:                ; preds = %.lr.ph887, %.lr.ph887.preheader
  %.13681886.unr = phi i64 [ 0, %.lr.ph887.preheader ], [ %704, %.lr.ph887 ]
  br i1 %lcmp.mod1176.not, label %._crit_edge888, label %.lr.ph887.epil

.lr.ph887.epil:                                   ; preds = %._crit_edge888.loopexit.unr-lcssa
  %705 = load ptr, ptr %600, align 8, !tbaa !18
  %706 = getelementptr inbounds ptr, ptr %705, i64 %.10895
  %707 = load ptr, ptr %706, align 8, !tbaa !26
  %708 = getelementptr inbounds double, ptr %707, i64 %.13681886.unr
  %709 = load double, ptr %708, align 8, !tbaa !19
  %710 = load ptr, ptr %601, align 8, !tbaa !18
  %711 = getelementptr inbounds double, ptr %710, i64 %.13681886.unr
  store double %709, ptr %711, align 8, !tbaa !19
  br label %._crit_edge888

._crit_edge888:                                   ; preds = %.lr.ph887.epil, %._crit_edge888.loopexit.unr-lcssa, %.preheader766
  %712 = call noundef double @_ZN11alglib_impl15rbfv2nearradiusElPNS_8ae_stateE(i64 noundef %70, ptr noundef %12)
  %713 = call noundef i64 @_ZN11alglib_implL25rbfv2_designmatrixrowsizeEPNS_9ae_vectorES1_S1_S1_S1_S1_S1_lllldS1_PNS_15rbfv2calcbufferEPNS_8ae_stateE(ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull %26, ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull %24, ptr noundef nonnull %25, i64 noundef %.lcssa.fr, i64 noundef %.fr, i64 noundef %5, i64 noundef %.4696983, double noundef %712, ptr noundef nonnull %32, ptr noundef nonnull %48, ptr noundef %12)
  store i64 %713, ptr %41, align 8, !tbaa !23
  %714 = load ptr, ptr %602, align 8, !tbaa !18
  %715 = getelementptr inbounds i64, ptr %714, i64 %.10895
  store i64 %713, ptr %715, align 8, !tbaa !23
  br i1 %.not.not739889, label %._crit_edge893, label %.lr.ph892

.lr.ph892:                                        ; preds = %._crit_edge888
  %716 = mul nuw nsw i64 %.10895, %.0
  %.pre = load i64, ptr %41, align 8, !tbaa !23
  br i1 %627, label %._crit_edge893.loopexit.unr-lcssa, label %.lr.ph892.new

.lr.ph892.new:                                    ; preds = %.lr.ph892, %.lr.ph892.new
  %.14682890 = phi i64 [ %732, %.lr.ph892.new ], [ 0, %.lr.ph892 ]
  %niter1184 = phi i64 [ %niter1184.next.3, %.lr.ph892.new ], [ 0, %.lr.ph892 ]
  %717 = load ptr, ptr %603, align 8, !tbaa !18
  %718 = getelementptr i64, ptr %717, i64 %716
  %719 = getelementptr i64, ptr %718, i64 %.14682890
  store i64 %.pre, ptr %719, align 8, !tbaa !23
  %720 = or disjoint i64 %.14682890, 1
  %721 = load ptr, ptr %603, align 8, !tbaa !18
  %722 = getelementptr i64, ptr %721, i64 %716
  %723 = getelementptr i64, ptr %722, i64 %720
  store i64 %.pre, ptr %723, align 8, !tbaa !23
  %724 = or disjoint i64 %.14682890, 2
  %725 = load ptr, ptr %603, align 8, !tbaa !18
  %726 = getelementptr i64, ptr %725, i64 %716
  %727 = getelementptr i64, ptr %726, i64 %724
  store i64 %.pre, ptr %727, align 8, !tbaa !23
  %728 = or disjoint i64 %.14682890, 3
  %729 = load ptr, ptr %603, align 8, !tbaa !18
  %730 = getelementptr i64, ptr %729, i64 %716
  %731 = getelementptr i64, ptr %730, i64 %728
  store i64 %.pre, ptr %731, align 8, !tbaa !23
  %732 = add nuw nsw i64 %.14682890, 4
  %niter1184.next.3 = add i64 %niter1184, 4
  %niter1184.ncmp.3 = icmp eq i64 %niter1184.next.3, %unroll_iter1183
  br i1 %niter1184.ncmp.3, label %._crit_edge893.loopexit.unr-lcssa, label %.lr.ph892.new, !llvm.loop !63

._crit_edge893.loopexit.unr-lcssa:                ; preds = %.lr.ph892.new, %.lr.ph892
  %.14682890.unr = phi i64 [ 0, %.lr.ph892 ], [ %732, %.lr.ph892.new ]
  br i1 %lcmp.mod1182.not, label %._crit_edge893, label %.epil.preheader1179

.epil.preheader1179:                              ; preds = %._crit_edge893.loopexit.unr-lcssa, %.epil.preheader1179
  %.14682890.epil = phi i64 [ %736, %.epil.preheader1179 ], [ %.14682890.unr, %._crit_edge893.loopexit.unr-lcssa ]
  %epil.iter1181 = phi i64 [ %epil.iter1181.next, %.epil.preheader1179 ], [ 0, %._crit_edge893.loopexit.unr-lcssa ]
  %733 = load ptr, ptr %603, align 8, !tbaa !18
  %734 = getelementptr i64, ptr %733, i64 %716
  %735 = getelementptr i64, ptr %734, i64 %.14682890.epil
  store i64 %.pre, ptr %735, align 8, !tbaa !23
  %736 = add nuw nsw i64 %.14682890.epil, 1
  %epil.iter1181.next = add i64 %epil.iter1181, 1
  %epil.iter1181.cmp.not = icmp eq i64 %epil.iter1181.next, %xtraiter1180
  br i1 %epil.iter1181.cmp.not, label %._crit_edge893, label %.epil.preheader1179, !llvm.loop !64

._crit_edge893:                                   ; preds = %._crit_edge893.loopexit.unr-lcssa, %.epil.preheader1179, %._crit_edge888
  %737 = add nuw nsw i64 %.10895, 1
  %exitcond1056.not = icmp eq i64 %737, %2
  br i1 %exitcond1056.not, label %._crit_edge896, label %.preheader766, !llvm.loop !65

._crit_edge896:                                   ; preds = %._crit_edge893, %678
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %51, i64 noundef %686, ptr noundef %12)
  %738 = mul nsw i64 %686, %.0
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %52, i64 noundef %738, ptr noundef %12)
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %38, i64 noundef %686, ptr noundef %12)
  call void @_ZN11alglib_impl18sparsecreatecrsbufEllPNS_9ae_vectorEPNS_12sparsematrixEPNS_8ae_stateE(i64 noundef %182, i64 noundef %686, ptr noundef nonnull %37, ptr noundef nonnull %45, ptr noundef %12)
  %.not.not720897 = icmp sgt i64 %686, 0
  br i1 %.not.not720897, label %.lr.ph900.preheader, label %.preheader769

.lr.ph900.preheader:                              ; preds = %._crit_edge896
  %xtraiter1185 = and i64 %686, 3
  %739 = icmp ult i64 %686, 4
  br i1 %739, label %.preheader769.loopexit.unr-lcssa, label %.lr.ph900.preheader.new

.lr.ph900.preheader.new:                          ; preds = %.lr.ph900.preheader
  %unroll_iter1188 = and i64 %686, 9223372036854775804
  br label %.lr.ph900

.preheader769.loopexit.unr-lcssa:                 ; preds = %.lr.ph900, %.lr.ph900.preheader
  %.15683898.unr = phi i64 [ 0, %.lr.ph900.preheader ], [ %754, %.lr.ph900 ]
  %lcmp.mod1187.not = icmp eq i64 %xtraiter1185, 0
  br i1 %lcmp.mod1187.not, label %.preheader769, label %.lr.ph900.epil

.lr.ph900.epil:                                   ; preds = %.preheader769.loopexit.unr-lcssa, %.lr.ph900.epil
  %.15683898.epil = phi i64 [ %742, %.lr.ph900.epil ], [ %.15683898.unr, %.preheader769.loopexit.unr-lcssa ]
  %epil.iter1186 = phi i64 [ %epil.iter1186.next, %.lr.ph900.epil ], [ 0, %.preheader769.loopexit.unr-lcssa ]
  %740 = load ptr, ptr %604, align 8, !tbaa !18
  %741 = getelementptr inbounds double, ptr %740, i64 %.15683898.epil
  store double 0.000000e+00, ptr %741, align 8, !tbaa !19
  %742 = add nuw nsw i64 %.15683898.epil, 1
  %epil.iter1186.next = add i64 %epil.iter1186, 1
  %epil.iter1186.cmp.not = icmp eq i64 %epil.iter1186.next, %xtraiter1185
  br i1 %epil.iter1186.cmp.not, label %.preheader769, label %.lr.ph900.epil, !llvm.loop !66

.preheader769:                                    ; preds = %.preheader769.loopexit.unr-lcssa, %.lr.ph900.epil, %._crit_edge896
  br i1 %.not.not706789, label %.preheader765, label %._crit_edge919

.lr.ph900:                                        ; preds = %.lr.ph900, %.lr.ph900.preheader.new
  %.15683898 = phi i64 [ 0, %.lr.ph900.preheader.new ], [ %754, %.lr.ph900 ]
  %niter1189 = phi i64 [ 0, %.lr.ph900.preheader.new ], [ %niter1189.next.3, %.lr.ph900 ]
  %743 = load ptr, ptr %604, align 8, !tbaa !18
  %744 = getelementptr inbounds double, ptr %743, i64 %.15683898
  store double 0.000000e+00, ptr %744, align 8, !tbaa !19
  %745 = or disjoint i64 %.15683898, 1
  %746 = load ptr, ptr %604, align 8, !tbaa !18
  %747 = getelementptr inbounds double, ptr %746, i64 %745
  store double 0.000000e+00, ptr %747, align 8, !tbaa !19
  %748 = or disjoint i64 %.15683898, 2
  %749 = load ptr, ptr %604, align 8, !tbaa !18
  %750 = getelementptr inbounds double, ptr %749, i64 %748
  store double 0.000000e+00, ptr %750, align 8, !tbaa !19
  %751 = or disjoint i64 %.15683898, 3
  %752 = load ptr, ptr %604, align 8, !tbaa !18
  %753 = getelementptr inbounds double, ptr %752, i64 %751
  store double 0.000000e+00, ptr %753, align 8, !tbaa !19
  %754 = add nuw nsw i64 %.15683898, 4
  %niter1189.next.3 = add i64 %niter1189, 4
  %niter1189.ncmp.3 = icmp eq i64 %niter1189.next.3, %unroll_iter1188
  br i1 %niter1189.ncmp.3, label %.preheader769.loopexit.unr-lcssa, label %.lr.ph900, !llvm.loop !67

755:                                              ; preds = %._crit_edge914
  %756 = add nuw nsw i64 %.11918, 1
  %exitcond1060.not = icmp eq i64 %756, %2
  br i1 %exitcond1060.not, label %._crit_edge919, label %.preheader765, !llvm.loop !68

.preheader765:                                    ; preds = %.preheader769, %755
  %.11918 = phi i64 [ %756, %755 ], [ 0, %.preheader769 ]
  %.0665917 = phi double [ %.1666.lcssa, %755 ], [ 0.000000e+00, %.preheader769 ]
  br i1 %.not.not738885, label %.lr.ph903.preheader, label %._crit_edge904

.lr.ph903.preheader:                              ; preds = %.preheader765
  br i1 %628, label %._crit_edge904.loopexit.unr-lcssa, label %.lr.ph903

.lr.ph903:                                        ; preds = %.lr.ph903.preheader, %.lr.ph903
  %.16684902 = phi i64 [ %772, %.lr.ph903 ], [ 0, %.lr.ph903.preheader ]
  %niter1194 = phi i64 [ %niter1194.next.1, %.lr.ph903 ], [ 0, %.lr.ph903.preheader ]
  %757 = load ptr, ptr %600, align 8, !tbaa !18
  %758 = getelementptr inbounds ptr, ptr %757, i64 %.11918
  %759 = load ptr, ptr %758, align 8, !tbaa !26
  %760 = getelementptr inbounds double, ptr %759, i64 %.16684902
  %761 = load double, ptr %760, align 8, !tbaa !19
  %762 = load ptr, ptr %601, align 8, !tbaa !18
  %763 = getelementptr inbounds double, ptr %762, i64 %.16684902
  store double %761, ptr %763, align 8, !tbaa !19
  %764 = or disjoint i64 %.16684902, 1
  %765 = load ptr, ptr %600, align 8, !tbaa !18
  %766 = getelementptr inbounds ptr, ptr %765, i64 %.11918
  %767 = load ptr, ptr %766, align 8, !tbaa !26
  %768 = getelementptr inbounds double, ptr %767, i64 %764
  %769 = load double, ptr %768, align 8, !tbaa !19
  %770 = load ptr, ptr %601, align 8, !tbaa !18
  %771 = getelementptr inbounds double, ptr %770, i64 %764
  store double %769, ptr %771, align 8, !tbaa !19
  %772 = add nuw nsw i64 %.16684902, 2
  %niter1194.next.1 = add i64 %niter1194, 2
  %niter1194.ncmp.1 = icmp eq i64 %niter1194.next.1, %unroll_iter1193
  br i1 %niter1194.ncmp.1, label %._crit_edge904.loopexit.unr-lcssa, label %.lr.ph903, !llvm.loop !69

._crit_edge904.loopexit.unr-lcssa:                ; preds = %.lr.ph903, %.lr.ph903.preheader
  %.16684902.unr = phi i64 [ 0, %.lr.ph903.preheader ], [ %772, %.lr.ph903 ]
  br i1 %lcmp.mod1192.not, label %._crit_edge904, label %.lr.ph903.epil

.lr.ph903.epil:                                   ; preds = %._crit_edge904.loopexit.unr-lcssa
  %773 = load ptr, ptr %600, align 8, !tbaa !18
  %774 = getelementptr inbounds ptr, ptr %773, i64 %.11918
  %775 = load ptr, ptr %774, align 8, !tbaa !26
  %776 = getelementptr inbounds double, ptr %775, i64 %.16684902.unr
  %777 = load double, ptr %776, align 8, !tbaa !19
  %778 = load ptr, ptr %601, align 8, !tbaa !18
  %779 = getelementptr inbounds double, ptr %778, i64 %.16684902.unr
  store double %777, ptr %779, align 8, !tbaa !19
  br label %._crit_edge904

._crit_edge904:                                   ; preds = %.lr.ph903.epil, %._crit_edge904.loopexit.unr-lcssa, %.preheader765
  %780 = call noundef double @_ZN11alglib_impl15rbfv2nearradiusElPNS_8ae_stateE(i64 noundef %70, ptr noundef %12)
  call void @_ZN11alglib_implL29rbfv2_designmatrixgeneraterowEPNS_9ae_vectorES1_S1_S1_S1_S1_S1_S1_llllldldS1_PNS_15rbfv2calcbufferES1_S1_S1_S1_PlPNS_8ae_stateE(ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull %26, ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull %24, ptr noundef nonnull %25, ptr noundef nonnull %27, i64 noundef %.lcssa.fr, i64 noundef %.fr, i64 noundef %5, i64 noundef %.4696983, i64 noundef %70, double noundef %780, i64 noundef %.0, double noundef %181, ptr noundef nonnull %32, ptr noundef nonnull %48, ptr noundef nonnull %49, ptr noundef nonnull %50, ptr noundef nonnull %51, ptr noundef nonnull %52, ptr noundef nonnull %41, ptr noundef %12)
  %781 = load i64, ptr %41, align 8, !tbaa !23
  %782 = load ptr, ptr %602, align 8, !tbaa !18
  %783 = getelementptr inbounds i64, ptr %782, i64 %.11918
  %784 = load i64, ptr %783, align 8, !tbaa !23
  %785 = icmp eq i64 %781, %784
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %785, ptr noundef nonnull @.str.669, ptr noundef %12)
  br i1 %.not.not739889, label %._crit_edge914, label %.preheader761.lr.ph

.preheader761.lr.ph:                              ; preds = %._crit_edge904
  %786 = mul nuw nsw i64 %.11918, %.0
  %787 = load i64, ptr %41, align 8, !tbaa !23
  %788 = icmp sgt i64 %787, 0
  br i1 %788, label %.preheader761, label %._crit_edge914

.preheader761:                                    ; preds = %.preheader761.lr.ph, %._crit_edge909
  %789 = phi i64 [ %817, %._crit_edge909 ], [ %787, %.preheader761.lr.ph ]
  %.1666913 = phi double [ %.2667.lcssa, %._crit_edge909 ], [ %.0665917, %.preheader761.lr.ph ]
  %.0689912 = phi i64 [ %818, %._crit_edge909 ], [ 0, %.preheader761.lr.ph ]
  %.not.not737905 = icmp sgt i64 %789, 0
  br i1 %.not.not737905, label %.lr.ph908, label %._crit_edge909

.lr.ph908:                                        ; preds = %.preheader761
  %790 = add nuw nsw i64 %.0689912, %786
  br label %791

791:                                              ; preds = %.lr.ph908, %791
  %.2667907 = phi double [ %.1666913, %.lr.ph908 ], [ %801, %791 ]
  %.17685906 = phi i64 [ 0, %.lr.ph908 ], [ %815, %791 ]
  %792 = load ptr, ptr %605, align 8, !tbaa !18
  %793 = mul nuw nsw i64 %.17685906, %.0
  %794 = getelementptr double, ptr %792, i64 %793
  %795 = getelementptr double, ptr %794, i64 %.0689912
  %796 = load double, ptr %795, align 8, !tbaa !19
  %797 = load ptr, ptr %606, align 8, !tbaa !18
  %798 = getelementptr inbounds i64, ptr %797, i64 %.17685906
  %799 = load i64, ptr %798, align 8, !tbaa !23
  call void @_ZN11alglib_impl9sparsesetEPNS_12sparsematrixElldPNS_8ae_stateE(ptr noundef nonnull %45, i64 noundef %790, i64 noundef %799, double noundef %796, ptr noundef %12)
  %800 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %796, ptr noundef %12)
  %801 = fadd double %.2667907, %800
  %802 = load ptr, ptr %604, align 8, !tbaa !18
  %803 = load ptr, ptr %606, align 8, !tbaa !18
  %804 = getelementptr inbounds i64, ptr %803, i64 %.17685906
  %805 = load i64, ptr %804, align 8, !tbaa !23
  %806 = getelementptr inbounds double, ptr %802, i64 %805
  %807 = load double, ptr %806, align 8, !tbaa !19
  %808 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %796, ptr noundef %12)
  %809 = fadd double %807, %808
  %810 = load ptr, ptr %604, align 8, !tbaa !18
  %811 = load ptr, ptr %606, align 8, !tbaa !18
  %812 = getelementptr inbounds i64, ptr %811, i64 %.17685906
  %813 = load i64, ptr %812, align 8, !tbaa !23
  %814 = getelementptr inbounds double, ptr %810, i64 %813
  store double %809, ptr %814, align 8, !tbaa !19
  %815 = add nuw nsw i64 %.17685906, 1
  %816 = load i64, ptr %41, align 8, !tbaa !23
  %.not.not737 = icmp slt i64 %815, %816
  br i1 %.not.not737, label %791, label %._crit_edge909, !llvm.loop !70

._crit_edge909:                                   ; preds = %791, %.preheader761
  %817 = phi i64 [ %789, %.preheader761 ], [ %816, %791 ]
  %.2667.lcssa = phi double [ %.1666913, %.preheader761 ], [ %801, %791 ]
  %818 = add nuw nsw i64 %.0689912, 1
  %exitcond1059.not = icmp eq i64 %818, %.0
  br i1 %exitcond1059.not, label %._crit_edge914, label %.preheader761, !llvm.loop !71

._crit_edge914:                                   ; preds = %._crit_edge909, %.preheader761.lr.ph, %._crit_edge904
  %.1666.lcssa = phi double [ %.0665917, %._crit_edge904 ], [ %.0665917, %.preheader761.lr.ph ], [ %.2667.lcssa, %._crit_edge909 ]
  %819 = load i8, ptr %10, align 1, !tbaa !73, !range !74, !noundef !75
  %820 = trunc nuw i8 %819 to i1
  br i1 %820, label %821, label %755

821:                                              ; preds = %._crit_edge914
  call void @_ZN11alglib_implL14rbfv2_zerofillEPNS_10rbfv2modelElllPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.lcssa.fr, i64 noundef %.fr, i64 noundef %70, ptr noundef %12)
  store i64 8, ptr %11, align 8, !tbaa !24
  br label %1199

._crit_edge919:                                   ; preds = %755, %.preheader769
  %.0665.lcssa = phi double [ 0.000000e+00, %.preheader769 ], [ %.1666.lcssa, %755 ]
  %822 = sitofp i64 %686 to double
  %823 = fdiv double %.0665.lcssa, %822
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %39, i64 noundef %686, ptr noundef %12)
  br i1 %.not.not720897, label %.lr.ph924, label %._crit_edge925

.lr.ph924:                                        ; preds = %._crit_edge919, %.lr.ph924
  %.18686922 = phi i64 [ %832, %.lr.ph924 ], [ 0, %._crit_edge919 ]
  %824 = load ptr, ptr %604, align 8, !tbaa !18
  %825 = getelementptr inbounds double, ptr %824, i64 %.18686922
  %826 = load double, ptr %825, align 8, !tbaa !19
  %827 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %826, ptr noundef %12)
  %828 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %827, double noundef 1.000000e+00, ptr noundef %12)
  %829 = fdiv double 1.000000e+00, %828
  %830 = load ptr, ptr %607, align 8, !tbaa !18
  %831 = getelementptr inbounds double, ptr %830, i64 %.18686922
  store double %829, ptr %831, align 8, !tbaa !19
  %832 = add nuw nsw i64 %.18686922, 1
  %exitcond1061.not = icmp eq i64 %832, %686
  br i1 %exitcond1061.not, label %._crit_edge925, label %.lr.ph924, !llvm.loop !76

._crit_edge925:                                   ; preds = %.lr.ph924, %._crit_edge919
  %833 = load i64, ptr %608, align 8, !tbaa !77
  %834 = load i64, ptr @_ZN11alglib_implL19rbfv2_defaultmaxitsE, align 8, !tbaa !23
  %835 = call noundef i64 @_ZN11alglib_impl9coalesceiEllPNS_8ae_stateE(i64 noundef %833, i64 noundef %834, ptr noundef %12)
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %40, i64 noundef %686, ptr noundef %12)
  call void @_ZN11alglib_impl13linlsqrcreateEllPNS_12linlsqrstateEPNS_8ae_stateE(i64 noundef %182, i64 noundef %686, ptr noundef nonnull %43, ptr noundef %12)
  call void @_ZN11alglib_impl14linlsqrsetcondEPNS_12linlsqrstateEddlPNS_8ae_stateE(ptr noundef nonnull %43, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef %835, ptr noundef %12)
  %836 = load double, ptr %609, align 8, !tbaa !78
  %837 = fmul double %823, %836
  %838 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %837, ptr noundef %12)
  call void @_ZN11alglib_impl17linlsqrsetlambdaiEPNS_12linlsqrstateEdPNS_8ae_stateE(ptr noundef nonnull %43, double noundef %838, ptr noundef %12)
  br i1 %.not.not723955, label %.preheader767, label %.preheader764.lr.ph

.preheader764.lr.ph:                              ; preds = %._crit_edge925
  %.not.not732930.not = icmp eq i64 %.4696983, 0
  %839 = mul nsw i64 %835, %.fr
  %840 = sitofp i64 %839 to double
  %841 = sitofp i64 %835 to double
  %842 = fmul double %676, %841
  %843 = fmul double %842, %616
  %844 = add i64 %686, -1
  %xtraiter1201 = and i64 %.4696983, 3
  %845 = icmp ult i64 %.4696983, 4
  %unroll_iter1205 = and i64 %.4696983, 9223372036854775804
  %lcmp.mod1203.not = icmp eq i64 %xtraiter1201, 0
  %xtraiter1207 = and i64 %686, 1
  %846 = icmp eq i64 %844, 0
  %unroll_iter1210 = and i64 %686, 9223372036854775806
  %lcmp.mod1209.not = icmp eq i64 %xtraiter1207, 0
  %xtraiter1212 = and i64 %686, 1
  %847 = icmp eq i64 %844, 0
  %unroll_iter1215 = and i64 %686, 9223372036854775806
  %lcmp.mod1214.not = icmp eq i64 %xtraiter1212, 0
  %xtraiter1217 = and i64 %686, 1
  %848 = icmp eq i64 %844, 0
  %unroll_iter1220 = and i64 %686, 9223372036854775806
  %lcmp.mod1219.not = icmp eq i64 %xtraiter1217, 0
  %xtraiter1222 = and i64 %686, 1
  %849 = icmp eq i64 %844, 0
  %unroll_iter1225 = and i64 %686, 9223372036854775806
  %lcmp.mod1224.not = icmp eq i64 %xtraiter1222, 0
  br label %.preheader764

.preheader767:                                    ; preds = %._crit_edge954, %._crit_edge925
  br i1 %.not.not706789, label %.preheader762, label %.loopexit768

.preheader764:                                    ; preds = %.preheader764.lr.ph, %._crit_edge954
  %.19687956 = phi i64 [ 0, %.preheader764.lr.ph ], [ %1043, %._crit_edge954 ]
  br i1 %.not.not707796, label %.lr.ph928.preheader, label %._crit_edge929

.lr.ph928.preheader:                              ; preds = %.preheader764
  br i1 %629, label %._crit_edge929.loopexit.unr-lcssa, label %.lr.ph928

.lr.ph928:                                        ; preds = %.lr.ph928.preheader, %.lr.ph928
  %.12927 = phi i64 [ %865, %.lr.ph928 ], [ 0, %.lr.ph928.preheader ]
  %niter1199 = phi i64 [ %niter1199.next.1, %.lr.ph928 ], [ 0, %.lr.ph928.preheader ]
  %850 = load ptr, ptr %610, align 8, !tbaa !18
  %851 = getelementptr inbounds ptr, ptr %850, i64 %.12927
  %852 = load ptr, ptr %851, align 8, !tbaa !26
  %853 = getelementptr inbounds double, ptr %852, i64 %.19687956
  %854 = load double, ptr %853, align 8, !tbaa !19
  %855 = load ptr, ptr %611, align 8, !tbaa !18
  %856 = getelementptr inbounds double, ptr %855, i64 %.12927
  store double %854, ptr %856, align 8, !tbaa !19
  %857 = or disjoint i64 %.12927, 1
  %858 = load ptr, ptr %610, align 8, !tbaa !18
  %859 = getelementptr inbounds ptr, ptr %858, i64 %857
  %860 = load ptr, ptr %859, align 8, !tbaa !26
  %861 = getelementptr inbounds double, ptr %860, i64 %.19687956
  %862 = load double, ptr %861, align 8, !tbaa !19
  %863 = load ptr, ptr %611, align 8, !tbaa !18
  %864 = getelementptr inbounds double, ptr %863, i64 %857
  store double %862, ptr %864, align 8, !tbaa !19
  %865 = add nuw nsw i64 %.12927, 2
  %niter1199.next.1 = add i64 %niter1199, 2
  %niter1199.ncmp.1 = icmp eq i64 %niter1199.next.1, %unroll_iter1198
  br i1 %niter1199.ncmp.1, label %._crit_edge929.loopexit.unr-lcssa, label %.lr.ph928, !llvm.loop !79

._crit_edge929.loopexit.unr-lcssa:                ; preds = %.lr.ph928, %.lr.ph928.preheader
  %.12927.unr = phi i64 [ 0, %.lr.ph928.preheader ], [ %865, %.lr.ph928 ]
  br i1 %lcmp.mod1197.not, label %._crit_edge929, label %.lr.ph928.epil

.lr.ph928.epil:                                   ; preds = %._crit_edge929.loopexit.unr-lcssa
  %866 = load ptr, ptr %610, align 8, !tbaa !18
  %867 = getelementptr inbounds ptr, ptr %866, i64 %.12927.unr
  %868 = load ptr, ptr %867, align 8, !tbaa !26
  %869 = getelementptr inbounds double, ptr %868, i64 %.19687956
  %870 = load double, ptr %869, align 8, !tbaa !19
  %871 = load ptr, ptr %611, align 8, !tbaa !18
  %872 = getelementptr inbounds double, ptr %871, i64 %.12927.unr
  store double %870, ptr %872, align 8, !tbaa !19
  br label %._crit_edge929

._crit_edge929:                                   ; preds = %.lr.ph928.epil, %._crit_edge929.loopexit.unr-lcssa, %.preheader764
  call void @_ZN11alglib_impl11linlsqrsetbEPNS_12linlsqrstateEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %43, ptr noundef nonnull %47, ptr noundef %12)
  call void @_ZN11alglib_impl14linlsqrrestartEPNS_12linlsqrstateEPNS_8ae_stateE(ptr noundef nonnull %43, ptr noundef %12)
  call void @_ZN11alglib_impl14linlsqrsetxrepEPNS_12linlsqrstateEbPNS_8ae_stateE(ptr noundef nonnull %43, i1 noundef zeroext true, ptr noundef %12)
  %873 = call noundef zeroext i1 @_ZN11alglib_impl16linlsqriterationEPNS_12linlsqrstateEPNS_8ae_stateE(ptr noundef nonnull %43, ptr noundef %12)
  br i1 %873, label %.lr.ph945, label %._crit_edge946

.lr.ph945:                                        ; preds = %._crit_edge929
  %874 = mul nsw i64 %.19687956, %835
  br label %875

875:                                              ; preds = %.lr.ph945, %.backedge
  %876 = load i8, ptr %10, align 1, !tbaa !73, !range !74, !noundef !75
  %877 = trunc nuw i8 %876 to i1
  br i1 %877, label %878, label %879

878:                                              ; preds = %875
  call void @_ZN11alglib_implL14rbfv2_zerofillEPNS_10rbfv2modelElllPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.lcssa.fr, i64 noundef %.fr, i64 noundef %70, ptr noundef %12)
  store i64 8, ptr %11, align 8, !tbaa !24
  br label %1199

879:                                              ; preds = %875
  %880 = load i8, ptr %612, align 2, !tbaa !80, !range !74, !noundef !75
  %881 = trunc nuw i8 %880 to i1
  br i1 %881, label %.preheader759, label %919

.preheader759:                                    ; preds = %879
  br i1 %.not.not720897, label %.lr.ph942.preheader, label %._crit_edge943

.lr.ph942.preheader:                              ; preds = %.preheader759
  br i1 %847, label %._crit_edge943.loopexit.unr-lcssa, label %.lr.ph942

.lr.ph942:                                        ; preds = %.lr.ph942.preheader, %.lr.ph942
  %.13941 = phi i64 [ %901, %.lr.ph942 ], [ 0, %.lr.ph942.preheader ]
  %niter1216 = phi i64 [ %niter1216.next.1, %.lr.ph942 ], [ 0, %.lr.ph942.preheader ]
  %882 = load ptr, ptr %607, align 8, !tbaa !18
  %883 = getelementptr inbounds double, ptr %882, i64 %.13941
  %884 = load double, ptr %883, align 8, !tbaa !19
  %885 = load ptr, ptr %620, align 8, !tbaa !18
  %886 = getelementptr inbounds double, ptr %885, i64 %.13941
  %887 = load double, ptr %886, align 8, !tbaa !19
  %888 = fmul double %884, %887
  %889 = load ptr, ptr %621, align 8, !tbaa !18
  %890 = getelementptr inbounds double, ptr %889, i64 %.13941
  store double %888, ptr %890, align 8, !tbaa !19
  %891 = or disjoint i64 %.13941, 1
  %892 = load ptr, ptr %607, align 8, !tbaa !18
  %893 = getelementptr inbounds double, ptr %892, i64 %891
  %894 = load double, ptr %893, align 8, !tbaa !19
  %895 = load ptr, ptr %620, align 8, !tbaa !18
  %896 = getelementptr inbounds double, ptr %895, i64 %891
  %897 = load double, ptr %896, align 8, !tbaa !19
  %898 = fmul double %894, %897
  %899 = load ptr, ptr %621, align 8, !tbaa !18
  %900 = getelementptr inbounds double, ptr %899, i64 %891
  store double %898, ptr %900, align 8, !tbaa !19
  %901 = add nuw nsw i64 %.13941, 2
  %niter1216.next.1 = add i64 %niter1216, 2
  %niter1216.ncmp.1 = icmp eq i64 %niter1216.next.1, %unroll_iter1215
  br i1 %niter1216.ncmp.1, label %._crit_edge943.loopexit.unr-lcssa, label %.lr.ph942, !llvm.loop !86

._crit_edge943.loopexit.unr-lcssa:                ; preds = %.lr.ph942, %.lr.ph942.preheader
  %.13941.unr = phi i64 [ 0, %.lr.ph942.preheader ], [ %901, %.lr.ph942 ]
  br i1 %lcmp.mod1214.not, label %._crit_edge943, label %.lr.ph942.epil

.lr.ph942.epil:                                   ; preds = %._crit_edge943.loopexit.unr-lcssa
  %902 = load ptr, ptr %607, align 8, !tbaa !18
  %903 = getelementptr inbounds double, ptr %902, i64 %.13941.unr
  %904 = load double, ptr %903, align 8, !tbaa !19
  %905 = load ptr, ptr %620, align 8, !tbaa !18
  %906 = getelementptr inbounds double, ptr %905, i64 %.13941.unr
  %907 = load double, ptr %906, align 8, !tbaa !19
  %908 = fmul double %904, %907
  %909 = load ptr, ptr %621, align 8, !tbaa !18
  %910 = getelementptr inbounds double, ptr %909, i64 %.13941.unr
  store double %908, ptr %910, align 8, !tbaa !19
  br label %._crit_edge943

._crit_edge943:                                   ; preds = %.lr.ph942.epil, %._crit_edge943.loopexit.unr-lcssa, %.preheader759
  call void @_ZN11alglib_impl8sparsemvEPNS_12sparsematrixEPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef nonnull %45, ptr noundef nonnull %40, ptr noundef nonnull %622, ptr noundef %12)
  br label %.backedge

.backedge.loopexit.unr-lcssa:                     ; preds = %.lr.ph939, %.lr.ph939.preheader
  %.14937.unr = phi i64 [ 0, %.lr.ph939.preheader ], [ %938, %.lr.ph939 ]
  br i1 %lcmp.mod1209.not, label %.backedge, label %.lr.ph939.epil

.lr.ph939.epil:                                   ; preds = %.backedge.loopexit.unr-lcssa
  %911 = load ptr, ptr %607, align 8, !tbaa !18
  %912 = getelementptr inbounds double, ptr %911, i64 %.14937.unr
  %913 = load double, ptr %912, align 8, !tbaa !19
  %914 = load ptr, ptr %619, align 8, !tbaa !18
  %915 = getelementptr inbounds double, ptr %914, i64 %.14937.unr
  %916 = load double, ptr %915, align 8, !tbaa !19
  %917 = fmul double %913, %916
  store double %917, ptr %915, align 8, !tbaa !19
  br label %.backedge

.backedge:                                        ; preds = %.lr.ph939.epil, %.backedge.loopexit.unr-lcssa, %922, %._crit_edge943, %._crit_edge934, %979
  %918 = call noundef zeroext i1 @_ZN11alglib_impl16linlsqriterationEPNS_12linlsqrstateEPNS_8ae_stateE(ptr noundef nonnull %43, ptr noundef %12)
  br i1 %918, label %875, label %._crit_edge946, !llvm.loop !87

919:                                              ; preds = %879
  %920 = load i8, ptr %613, align 1, !tbaa !88, !range !74, !noundef !75
  %921 = trunc nuw i8 %920 to i1
  br i1 %921, label %922, label %939

922:                                              ; preds = %919
  call void @_ZN11alglib_impl9sparsemtvEPNS_12sparsematrixEPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef nonnull %45, ptr noundef nonnull %617, ptr noundef nonnull %618, ptr noundef %12)
  br i1 %.not.not720897, label %.lr.ph939.preheader, label %.backedge, !llvm.loop !87

.lr.ph939.preheader:                              ; preds = %922
  br i1 %846, label %.backedge.loopexit.unr-lcssa, label %.lr.ph939

.lr.ph939:                                        ; preds = %.lr.ph939.preheader, %.lr.ph939
  %.14937 = phi i64 [ %938, %.lr.ph939 ], [ 0, %.lr.ph939.preheader ]
  %niter1211 = phi i64 [ %niter1211.next.1, %.lr.ph939 ], [ 0, %.lr.ph939.preheader ]
  %923 = load ptr, ptr %607, align 8, !tbaa !18
  %924 = getelementptr inbounds double, ptr %923, i64 %.14937
  %925 = load double, ptr %924, align 8, !tbaa !19
  %926 = load ptr, ptr %619, align 8, !tbaa !18
  %927 = getelementptr inbounds double, ptr %926, i64 %.14937
  %928 = load double, ptr %927, align 8, !tbaa !19
  %929 = fmul double %925, %928
  store double %929, ptr %927, align 8, !tbaa !19
  %930 = or disjoint i64 %.14937, 1
  %931 = load ptr, ptr %607, align 8, !tbaa !18
  %932 = getelementptr inbounds double, ptr %931, i64 %930
  %933 = load double, ptr %932, align 8, !tbaa !19
  %934 = load ptr, ptr %619, align 8, !tbaa !18
  %935 = getelementptr inbounds double, ptr %934, i64 %930
  %936 = load double, ptr %935, align 8, !tbaa !19
  %937 = fmul double %933, %936
  store double %937, ptr %935, align 8, !tbaa !19
  %938 = add nuw nsw i64 %.14937, 2
  %niter1211.next.1 = add i64 %niter1211, 2
  %niter1211.ncmp.1 = icmp eq i64 %niter1211.next.1, %unroll_iter1210
  br i1 %niter1211.ncmp.1, label %.backedge.loopexit.unr-lcssa, label %.lr.ph939, !llvm.loop !89

939:                                              ; preds = %919
  %940 = load i8, ptr %614, align 1, !tbaa !90, !range !74, !noundef !75
  %941 = trunc nuw i8 %940 to i1
  br i1 %941, label %.preheader760, label %979

.preheader760:                                    ; preds = %939
  br i1 %.not.not732930.not, label %._crit_edge934, label %.lr.ph933

.lr.ph933:                                        ; preds = %.preheader760
  %942 = load ptr, ptr %615, align 8, !tbaa !18
  br i1 %845, label %._crit_edge934.loopexit.unr-lcssa, label %.lr.ph933.new

.lr.ph933.new:                                    ; preds = %.lr.ph933, %.lr.ph933.new
  %.15932 = phi i64 [ %958, %.lr.ph933.new ], [ 0, %.lr.ph933 ]
  %.0663931 = phi double [ %957, %.lr.ph933.new ], [ 0.000000e+00, %.lr.ph933 ]
  %niter1206 = phi i64 [ %niter1206.next.3, %.lr.ph933.new ], [ 0, %.lr.ph933 ]
  %943 = getelementptr inbounds double, ptr %942, i64 %.15932
  %944 = load double, ptr %943, align 8, !tbaa !19
  %945 = call double @llvm.fmuladd.f64(double %840, double %944, double %.0663931)
  %946 = or disjoint i64 %.15932, 1
  %947 = getelementptr inbounds double, ptr %942, i64 %946
  %948 = load double, ptr %947, align 8, !tbaa !19
  %949 = call double @llvm.fmuladd.f64(double %840, double %948, double %945)
  %950 = or disjoint i64 %.15932, 2
  %951 = getelementptr inbounds double, ptr %942, i64 %950
  %952 = load double, ptr %951, align 8, !tbaa !19
  %953 = call double @llvm.fmuladd.f64(double %840, double %952, double %949)
  %954 = or disjoint i64 %.15932, 3
  %955 = getelementptr inbounds double, ptr %942, i64 %954
  %956 = load double, ptr %955, align 8, !tbaa !19
  %957 = call double @llvm.fmuladd.f64(double %840, double %956, double %953)
  %958 = add nuw nsw i64 %.15932, 4
  %niter1206.next.3 = add i64 %niter1206, 4
  %niter1206.ncmp.3 = icmp eq i64 %niter1206.next.3, %unroll_iter1205
  br i1 %niter1206.ncmp.3, label %._crit_edge934.loopexit.unr-lcssa, label %.lr.ph933.new, !llvm.loop !91

._crit_edge934.loopexit.unr-lcssa:                ; preds = %.lr.ph933.new, %.lr.ph933
  %.lcssa1116.ph = phi double [ poison, %.lr.ph933 ], [ %957, %.lr.ph933.new ]
  %.15932.unr = phi i64 [ 0, %.lr.ph933 ], [ %958, %.lr.ph933.new ]
  %.0663931.unr = phi double [ 0.000000e+00, %.lr.ph933 ], [ %957, %.lr.ph933.new ]
  br i1 %lcmp.mod1203.not, label %._crit_edge934, label %.epil.preheader1200

.epil.preheader1200:                              ; preds = %._crit_edge934.loopexit.unr-lcssa, %.epil.preheader1200
  %.15932.epil = phi i64 [ %962, %.epil.preheader1200 ], [ %.15932.unr, %._crit_edge934.loopexit.unr-lcssa ]
  %.0663931.epil = phi double [ %961, %.epil.preheader1200 ], [ %.0663931.unr, %._crit_edge934.loopexit.unr-lcssa ]
  %epil.iter1202 = phi i64 [ %epil.iter1202.next, %.epil.preheader1200 ], [ 0, %._crit_edge934.loopexit.unr-lcssa ]
  %959 = getelementptr inbounds double, ptr %942, i64 %.15932.epil
  %960 = load double, ptr %959, align 8, !tbaa !19
  %961 = call double @llvm.fmuladd.f64(double %840, double %960, double %.0663931.epil)
  %962 = add nuw nsw i64 %.15932.epil, 1
  %epil.iter1202.next = add i64 %epil.iter1202, 1
  %epil.iter1202.cmp.not = icmp eq i64 %epil.iter1202.next, %xtraiter1201
  br i1 %epil.iter1202.cmp.not, label %._crit_edge934, label %.epil.preheader1200, !llvm.loop !92

._crit_edge934:                                   ; preds = %._crit_edge934.loopexit.unr-lcssa, %.epil.preheader1200, %.preheader760
  %.0663.lcssa = phi double [ 0.000000e+00, %.preheader760 ], [ %.lcssa1116.ph, %._crit_edge934.loopexit.unr-lcssa ], [ %961, %.epil.preheader1200 ]
  %963 = call noundef i64 @_ZN11alglib_impl26linlsqrpeekiterationscountEPNS_12linlsqrstateEPNS_8ae_stateE(ptr noundef nonnull %43, ptr noundef %12)
  %964 = add nsw i64 %963, %874
  %965 = sitofp i64 %964 to double
  %966 = load ptr, ptr %615, align 8, !tbaa !18
  %967 = getelementptr inbounds double, ptr %966, i64 %.4696983
  %968 = load double, ptr %967, align 8, !tbaa !19
  %969 = call double @llvm.fmuladd.f64(double %965, double %968, double %.0663.lcssa)
  %970 = fdiv double %969, %843
  %971 = fmul double %970, 1.000000e+04
  %972 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %971, double noundef 0.000000e+00, ptr noundef %12)
  %973 = call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %972, double noundef 1.000000e+04, ptr noundef %12)
  %974 = load i64, ptr %9, align 8, !tbaa !23
  %975 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %973, ptr noundef %12)
  %976 = add nsw i64 %975, 1
  %977 = icmp sle i64 %974, %976
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %977, ptr noundef nonnull @.str.670, ptr noundef %12)
  %978 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %973, ptr noundef %12)
  store i64 %978, ptr %9, align 8, !tbaa !23
  br label %.backedge

979:                                              ; preds = %939
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext false, ptr noundef nonnull @.str.671, ptr noundef %12)
  br label %.backedge

._crit_edge946:                                   ; preds = %.backedge, %._crit_edge929
  call void @_ZN11alglib_impl14linlsqrresultsEPNS_12linlsqrstateEPNS_9ae_vectorEPNS_13linlsqrreportEPNS_8ae_stateE(ptr noundef nonnull %43, ptr noundef nonnull %46, ptr noundef nonnull %44, ptr noundef %12)
  %980 = load i64, ptr %623, align 8, !tbaa !93
  %981 = icmp sgt i64 %980, 0
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %981, ptr noundef nonnull @.str.669, ptr noundef %12)
  br i1 %.not.not720897, label %.lr.ph950.preheader, label %._crit_edge954

.lr.ph950.preheader:                              ; preds = %._crit_edge946
  br i1 %848, label %.preheader763.unr-lcssa, label %.lr.ph950

.preheader763.unr-lcssa:                          ; preds = %.lr.ph950, %.lr.ph950.preheader
  %.16948.unr = phi i64 [ 0, %.lr.ph950.preheader ], [ %1004, %.lr.ph950 ]
  br i1 %lcmp.mod1219.not, label %.preheader763, label %.lr.ph950.epil

.lr.ph950.epil:                                   ; preds = %.preheader763.unr-lcssa
  %982 = load ptr, ptr %607, align 8, !tbaa !18
  %983 = getelementptr inbounds double, ptr %982, i64 %.16948.unr
  %984 = load double, ptr %983, align 8, !tbaa !19
  %985 = load ptr, ptr %624, align 8, !tbaa !18
  %986 = getelementptr inbounds double, ptr %985, i64 %.16948.unr
  %987 = load double, ptr %986, align 8, !tbaa !19
  %988 = fmul double %984, %987
  store double %988, ptr %986, align 8, !tbaa !19
  br label %.preheader763

.preheader763:                                    ; preds = %.preheader763.unr-lcssa, %.lr.ph950.epil
  br i1 %.not.not720897, label %.lr.ph953.preheader, label %._crit_edge954

.lr.ph953.preheader:                              ; preds = %.preheader763
  br i1 %849, label %._crit_edge954.loopexit.unr-lcssa, label %.lr.ph953

.lr.ph950:                                        ; preds = %.lr.ph950.preheader, %.lr.ph950
  %.16948 = phi i64 [ %1004, %.lr.ph950 ], [ 0, %.lr.ph950.preheader ]
  %niter1221 = phi i64 [ %niter1221.next.1, %.lr.ph950 ], [ 0, %.lr.ph950.preheader ]
  %989 = load ptr, ptr %607, align 8, !tbaa !18
  %990 = getelementptr inbounds double, ptr %989, i64 %.16948
  %991 = load double, ptr %990, align 8, !tbaa !19
  %992 = load ptr, ptr %624, align 8, !tbaa !18
  %993 = getelementptr inbounds double, ptr %992, i64 %.16948
  %994 = load double, ptr %993, align 8, !tbaa !19
  %995 = fmul double %991, %994
  store double %995, ptr %993, align 8, !tbaa !19
  %996 = or disjoint i64 %.16948, 1
  %997 = load ptr, ptr %607, align 8, !tbaa !18
  %998 = getelementptr inbounds double, ptr %997, i64 %996
  %999 = load double, ptr %998, align 8, !tbaa !19
  %1000 = load ptr, ptr %624, align 8, !tbaa !18
  %1001 = getelementptr inbounds double, ptr %1000, i64 %996
  %1002 = load double, ptr %1001, align 8, !tbaa !19
  %1003 = fmul double %999, %1002
  store double %1003, ptr %1001, align 8, !tbaa !19
  %1004 = add nuw nsw i64 %.16948, 2
  %niter1221.next.1 = add i64 %niter1221, 2
  %niter1221.ncmp.1 = icmp eq i64 %niter1221.next.1, %unroll_iter1220
  br i1 %niter1221.ncmp.1, label %.preheader763.unr-lcssa, label %.lr.ph950, !llvm.loop !95

.lr.ph953:                                        ; preds = %.lr.ph953.preheader, %.lr.ph953
  %.17952 = phi i64 [ %1030, %.lr.ph953 ], [ 0, %.lr.ph953.preheader ]
  %niter1226 = phi i64 [ %niter1226.next.1, %.lr.ph953 ], [ 0, %.lr.ph953.preheader ]
  %1005 = load ptr, ptr %403, align 8, !tbaa !18
  %1006 = getelementptr inbounds i64, ptr %1005, i64 %.4696983
  %1007 = load i64, ptr %1006, align 8, !tbaa !23
  %1008 = mul nsw i64 %.17952, %183
  %1009 = load ptr, ptr %624, align 8, !tbaa !18
  %1010 = getelementptr inbounds double, ptr %1009, i64 %.17952
  %1011 = load double, ptr %1010, align 8, !tbaa !19
  %1012 = load ptr, ptr %625, align 8, !tbaa !18
  %1013 = getelementptr double, ptr %1012, i64 %1007
  %1014 = getelementptr double, ptr %1013, i64 %1008
  %1015 = getelementptr double, ptr %1014, i64 %.lcssa.fr
  %1016 = getelementptr double, ptr %1015, i64 %.19687956
  store double %1011, ptr %1016, align 8, !tbaa !19
  %1017 = or disjoint i64 %.17952, 1
  %1018 = load ptr, ptr %403, align 8, !tbaa !18
  %1019 = getelementptr inbounds i64, ptr %1018, i64 %.4696983
  %1020 = load i64, ptr %1019, align 8, !tbaa !23
  %1021 = mul nsw i64 %1017, %183
  %1022 = load ptr, ptr %624, align 8, !tbaa !18
  %1023 = getelementptr inbounds double, ptr %1022, i64 %1017
  %1024 = load double, ptr %1023, align 8, !tbaa !19
  %1025 = load ptr, ptr %625, align 8, !tbaa !18
  %1026 = getelementptr double, ptr %1025, i64 %1020
  %1027 = getelementptr double, ptr %1026, i64 %1021
  %1028 = getelementptr double, ptr %1027, i64 %.lcssa.fr
  %1029 = getelementptr double, ptr %1028, i64 %.19687956
  store double %1024, ptr %1029, align 8, !tbaa !19
  %1030 = add nuw nsw i64 %.17952, 2
  %niter1226.next.1 = add i64 %niter1226, 2
  %niter1226.ncmp.1 = icmp eq i64 %niter1226.next.1, %unroll_iter1225
  br i1 %niter1226.ncmp.1, label %._crit_edge954.loopexit.unr-lcssa, label %.lr.ph953, !llvm.loop !96

._crit_edge954.loopexit.unr-lcssa:                ; preds = %.lr.ph953, %.lr.ph953.preheader
  %.17952.unr = phi i64 [ 0, %.lr.ph953.preheader ], [ %1030, %.lr.ph953 ]
  br i1 %lcmp.mod1224.not, label %._crit_edge954, label %.lr.ph953.epil

.lr.ph953.epil:                                   ; preds = %._crit_edge954.loopexit.unr-lcssa
  %1031 = load ptr, ptr %403, align 8, !tbaa !18
  %1032 = getelementptr inbounds i64, ptr %1031, i64 %.4696983
  %1033 = load i64, ptr %1032, align 8, !tbaa !23
  %1034 = mul nsw i64 %.17952.unr, %183
  %1035 = load ptr, ptr %624, align 8, !tbaa !18
  %1036 = getelementptr inbounds double, ptr %1035, i64 %.17952.unr
  %1037 = load double, ptr %1036, align 8, !tbaa !19
  %1038 = load ptr, ptr %625, align 8, !tbaa !18
  %1039 = getelementptr double, ptr %1038, i64 %1033
  %1040 = getelementptr double, ptr %1039, i64 %1034
  %1041 = getelementptr double, ptr %1040, i64 %.lcssa.fr
  %1042 = getelementptr double, ptr %1041, i64 %.19687956
  store double %1037, ptr %1042, align 8, !tbaa !19
  br label %._crit_edge954

._crit_edge954:                                   ; preds = %.lr.ph953.epil, %._crit_edge954.loopexit.unr-lcssa, %._crit_edge946, %.preheader763
  %1043 = add nuw nsw i64 %.19687956, 1
  %exitcond1068.not = icmp eq i64 %1043, %.fr
  br i1 %exitcond1068.not, label %.preheader767, label %.preheader764, !llvm.loop !97

.preheader762:                                    ; preds = %.preheader767, %._crit_edge975
  %.18981 = phi i64 [ %1126, %._crit_edge975 ], [ 0, %.preheader767 ]
  br i1 %.not.not738885, label %.lr.ph959.preheader, label %._crit_edge960

.lr.ph959.preheader:                              ; preds = %.preheader762
  br i1 %630, label %._crit_edge960.loopexit.unr-lcssa, label %.lr.ph959

.lr.ph959:                                        ; preds = %.lr.ph959.preheader, %.lr.ph959
  %.20688958 = phi i64 [ %1059, %.lr.ph959 ], [ 0, %.lr.ph959.preheader ]
  %niter1231 = phi i64 [ %niter1231.next.1, %.lr.ph959 ], [ 0, %.lr.ph959.preheader ]
  %1044 = load ptr, ptr %600, align 8, !tbaa !18
  %1045 = getelementptr inbounds ptr, ptr %1044, i64 %.18981
  %1046 = load ptr, ptr %1045, align 8, !tbaa !26
  %1047 = getelementptr inbounds double, ptr %1046, i64 %.20688958
  %1048 = load double, ptr %1047, align 8, !tbaa !19
  %1049 = load ptr, ptr %601, align 8, !tbaa !18
  %1050 = getelementptr inbounds double, ptr %1049, i64 %.20688958
  store double %1048, ptr %1050, align 8, !tbaa !19
  %1051 = or disjoint i64 %.20688958, 1
  %1052 = load ptr, ptr %600, align 8, !tbaa !18
  %1053 = getelementptr inbounds ptr, ptr %1052, i64 %.18981
  %1054 = load ptr, ptr %1053, align 8, !tbaa !26
  %1055 = getelementptr inbounds double, ptr %1054, i64 %1051
  %1056 = load double, ptr %1055, align 8, !tbaa !19
  %1057 = load ptr, ptr %601, align 8, !tbaa !18
  %1058 = getelementptr inbounds double, ptr %1057, i64 %1051
  store double %1056, ptr %1058, align 8, !tbaa !19
  %1059 = add nuw nsw i64 %.20688958, 2
  %niter1231.next.1 = add i64 %niter1231, 2
  %niter1231.ncmp.1 = icmp eq i64 %niter1231.next.1, %unroll_iter1230
  br i1 %niter1231.ncmp.1, label %._crit_edge960.loopexit.unr-lcssa, label %.lr.ph959, !llvm.loop !98

._crit_edge960.loopexit.unr-lcssa:                ; preds = %.lr.ph959, %.lr.ph959.preheader
  %.20688958.unr = phi i64 [ 0, %.lr.ph959.preheader ], [ %1059, %.lr.ph959 ]
  br i1 %lcmp.mod1229.not, label %._crit_edge960, label %.lr.ph959.epil

.lr.ph959.epil:                                   ; preds = %._crit_edge960.loopexit.unr-lcssa
  %1060 = load ptr, ptr %600, align 8, !tbaa !18
  %1061 = getelementptr inbounds ptr, ptr %1060, i64 %.18981
  %1062 = load ptr, ptr %1061, align 8, !tbaa !26
  %1063 = getelementptr inbounds double, ptr %1062, i64 %.20688958.unr
  %1064 = load double, ptr %1063, align 8, !tbaa !19
  %1065 = load ptr, ptr %601, align 8, !tbaa !18
  %1066 = getelementptr inbounds double, ptr %1065, i64 %.20688958.unr
  store double %1064, ptr %1066, align 8, !tbaa !19
  br label %._crit_edge960

._crit_edge960:                                   ; preds = %.lr.ph959.epil, %._crit_edge960.loopexit.unr-lcssa, %.preheader762
  %1067 = call noundef double @_ZN11alglib_impl14rbfv2farradiusElPNS_8ae_stateE(i64 noundef %70, ptr noundef %12)
  call void @_ZN11alglib_implL29rbfv2_designmatrixgeneraterowEPNS_9ae_vectorES1_S1_S1_S1_S1_S1_S1_llllldldS1_PNS_15rbfv2calcbufferES1_S1_S1_S1_PlPNS_8ae_stateE(ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull %26, ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull %24, ptr noundef nonnull %25, ptr noundef nonnull %27, i64 noundef %.lcssa.fr, i64 noundef %.fr, i64 noundef %5, i64 noundef %.4696983, i64 noundef %70, double noundef %1067, i64 noundef %.0, double noundef %181, ptr noundef nonnull %32, ptr noundef nonnull %48, ptr noundef nonnull %49, ptr noundef nonnull %50, ptr noundef nonnull %51, ptr noundef nonnull %52, ptr noundef nonnull %41, ptr noundef %12)
  %1068 = load i64, ptr %41, align 8, !tbaa !23
  %.not.not726971 = icmp sgt i64 %1068, 0
  br i1 %.not.not726971, label %.lr.ph974, label %._crit_edge975

.lr.ph974:                                        ; preds = %._crit_edge960
  %1069 = mul nsw i64 %.18981, %.0
  br i1 %brmerge, label %._crit_edge975, label %.lr.ph969.us.us

.lr.ph969.us.us:                                  ; preds = %.lr.ph974, %._crit_edge970.split.us.us.us
  %.21972.us.us = phi i64 [ %1125, %._crit_edge970.split.us.us.us ], [ 0, %.lr.ph974 ]
  %1070 = load ptr, ptr %403, align 8, !tbaa !18
  %1071 = getelementptr inbounds i64, ptr %1070, i64 %.4696983
  %1072 = load i64, ptr %1071, align 8, !tbaa !23
  %1073 = load ptr, ptr %606, align 8, !tbaa !18
  %1074 = getelementptr inbounds i64, ptr %1073, i64 %.21972.us.us
  %1075 = load i64, ptr %1074, align 8, !tbaa !23
  %1076 = mul nsw i64 %1075, %183
  %1077 = mul nuw nsw i64 %.21972.us.us, %.0
  br label %.lr.ph964.us.us.us

.lr.ph964.us.us.us:                               ; preds = %._crit_edge965.us.us.us, %.lr.ph969.us.us
  %.1690967.us.us.us = phi i64 [ 0, %.lr.ph969.us.us ], [ %1124, %._crit_edge965.us.us.us ]
  %1078 = load ptr, ptr %605, align 8, !tbaa !18
  %1079 = getelementptr double, ptr %1078, i64 %1077
  %1080 = getelementptr double, ptr %1079, i64 %.1690967.us.us.us
  %1081 = load double, ptr %1080, align 8, !tbaa !19
  %1082 = fneg double %1081
  br i1 %631, label %._crit_edge965.us.us.us.unr-lcssa, label %.lr.ph964.us.us.us.new

.lr.ph964.us.us.us.new:                           ; preds = %.lr.ph964.us.us.us, %.lr.ph964.us.us.us.new
  %.0691962.us.us.us = phi i64 [ %1110, %.lr.ph964.us.us.us.new ], [ 0, %.lr.ph964.us.us.us ]
  %niter1237 = phi i64 [ %niter1237.next.1, %.lr.ph964.us.us.us.new ], [ 0, %.lr.ph964.us.us.us ]
  %1083 = load ptr, ptr %610, align 8, !tbaa !18
  %1084 = getelementptr ptr, ptr %1083, i64 %1069
  %1085 = getelementptr ptr, ptr %1084, i64 %.1690967.us.us.us
  %1086 = load ptr, ptr %1085, align 8, !tbaa !26
  %1087 = getelementptr inbounds double, ptr %1086, i64 %.0691962.us.us.us
  %1088 = load double, ptr %1087, align 8, !tbaa !19
  %1089 = load ptr, ptr %625, align 8, !tbaa !18
  %1090 = getelementptr double, ptr %1089, i64 %1072
  %1091 = getelementptr double, ptr %1090, i64 %1076
  %1092 = getelementptr double, ptr %1091, i64 %.lcssa.fr
  %1093 = getelementptr double, ptr %1092, i64 %.0691962.us.us.us
  %1094 = load double, ptr %1093, align 8, !tbaa !19
  %1095 = call double @llvm.fmuladd.f64(double %1082, double %1094, double %1088)
  store double %1095, ptr %1087, align 8, !tbaa !19
  %1096 = or disjoint i64 %.0691962.us.us.us, 1
  %1097 = load ptr, ptr %610, align 8, !tbaa !18
  %1098 = getelementptr ptr, ptr %1097, i64 %1069
  %1099 = getelementptr ptr, ptr %1098, i64 %.1690967.us.us.us
  %1100 = load ptr, ptr %1099, align 8, !tbaa !26
  %1101 = getelementptr inbounds double, ptr %1100, i64 %1096
  %1102 = load double, ptr %1101, align 8, !tbaa !19
  %1103 = load ptr, ptr %625, align 8, !tbaa !18
  %1104 = getelementptr double, ptr %1103, i64 %1072
  %1105 = getelementptr double, ptr %1104, i64 %1076
  %1106 = getelementptr double, ptr %1105, i64 %.lcssa.fr
  %1107 = getelementptr double, ptr %1106, i64 %1096
  %1108 = load double, ptr %1107, align 8, !tbaa !19
  %1109 = call double @llvm.fmuladd.f64(double %1082, double %1108, double %1102)
  store double %1109, ptr %1101, align 8, !tbaa !19
  %1110 = add nuw nsw i64 %.0691962.us.us.us, 2
  %niter1237.next.1 = add i64 %niter1237, 2
  %niter1237.ncmp.1 = icmp eq i64 %niter1237.next.1, %unroll_iter1236
  br i1 %niter1237.ncmp.1, label %._crit_edge965.us.us.us.unr-lcssa, label %.lr.ph964.us.us.us.new, !llvm.loop !99

._crit_edge965.us.us.us.unr-lcssa:                ; preds = %.lr.ph964.us.us.us.new, %.lr.ph964.us.us.us
  %.0691962.us.us.us.unr = phi i64 [ 0, %.lr.ph964.us.us.us ], [ %1110, %.lr.ph964.us.us.us.new ]
  br i1 %lcmp.mod1235.not, label %._crit_edge965.us.us.us, label %._crit_edge965.us.us.us.epilog-lcssa

._crit_edge965.us.us.us.epilog-lcssa:             ; preds = %._crit_edge965.us.us.us.unr-lcssa
  %1111 = load ptr, ptr %610, align 8, !tbaa !18
  %1112 = getelementptr ptr, ptr %1111, i64 %1069
  %1113 = getelementptr ptr, ptr %1112, i64 %.1690967.us.us.us
  %1114 = load ptr, ptr %1113, align 8, !tbaa !26
  %1115 = getelementptr inbounds double, ptr %1114, i64 %.0691962.us.us.us.unr
  %1116 = load double, ptr %1115, align 8, !tbaa !19
  %1117 = load ptr, ptr %625, align 8, !tbaa !18
  %1118 = getelementptr double, ptr %1117, i64 %1072
  %1119 = getelementptr double, ptr %1118, i64 %1076
  %1120 = getelementptr double, ptr %1119, i64 %.lcssa.fr
  %1121 = getelementptr double, ptr %1120, i64 %.0691962.us.us.us.unr
  %1122 = load double, ptr %1121, align 8, !tbaa !19
  %1123 = call double @llvm.fmuladd.f64(double %1082, double %1122, double %1116)
  store double %1123, ptr %1115, align 8, !tbaa !19
  br label %._crit_edge965.us.us.us

._crit_edge965.us.us.us:                          ; preds = %._crit_edge965.us.us.us.unr-lcssa, %._crit_edge965.us.us.us.epilog-lcssa
  %1124 = add nuw nsw i64 %.1690967.us.us.us, 1
  %exitcond1071.not = icmp eq i64 %1124, %.0
  br i1 %exitcond1071.not, label %._crit_edge970.split.us.us.us, label %.lr.ph964.us.us.us, !llvm.loop !100

._crit_edge970.split.us.us.us:                    ; preds = %._crit_edge965.us.us.us
  %1125 = add nuw nsw i64 %.21972.us.us, 1
  %exitcond1072.not = icmp eq i64 %1125, %1068
  br i1 %exitcond1072.not, label %._crit_edge975, label %.lr.ph969.us.us, !llvm.loop !101

._crit_edge975:                                   ; preds = %._crit_edge970.split.us.us.us, %.lr.ph974, %._crit_edge960
  %1126 = add nuw nsw i64 %.18981, 1
  %exitcond1073.not = icmp eq i64 %1126, %2
  br i1 %exitcond1073.not, label %.loopexit768, label %.preheader762, !llvm.loop !102

._crit_edge985:                                   ; preds = %.loopexit768, %._crit_edge870, %.preheader770
  %1127 = getelementptr inbounds i8, ptr %8, i64 16
  store i64 %70, ptr %1127, align 8, !tbaa !103
  %1128 = getelementptr inbounds i8, ptr %8, i64 24
  store i64 %5, ptr %1128, align 8, !tbaa !104
  %1129 = getelementptr inbounds i8, ptr %8, i64 32
  call void @_ZN11alglib_impl15ae_swap_vectorsEPNS_9ae_vectorES1_(ptr noundef nonnull %1129, ptr noundef nonnull %20)
  %1130 = getelementptr inbounds i8, ptr %8, i64 160
  call void @_ZN11alglib_impl15ae_swap_vectorsEPNS_9ae_vectorES1_(ptr noundef nonnull %1130, ptr noundef nonnull %21)
  %1131 = getelementptr inbounds i8, ptr %8, i64 224
  call void @_ZN11alglib_impl15ae_swap_vectorsEPNS_9ae_vectorES1_(ptr noundef nonnull %1131, ptr noundef nonnull %22)
  %1132 = getelementptr inbounds i8, ptr %8, i64 288
  call void @_ZN11alglib_impl15ae_swap_vectorsEPNS_9ae_vectorES1_(ptr noundef nonnull %1132, ptr noundef nonnull %23)
  %1133 = getelementptr inbounds i8, ptr %8, i64 352
  call void @_ZN11alglib_impl15ae_swap_vectorsEPNS_9ae_vectorES1_(ptr noundef nonnull %1133, ptr noundef nonnull %24)
  %1134 = getelementptr inbounds i8, ptr %8, i64 416
  call void @_ZN11alglib_impl15ae_swap_vectorsEPNS_9ae_vectorES1_(ptr noundef nonnull %1134, ptr noundef nonnull %25)
  %1135 = getelementptr inbounds i8, ptr %8, i64 480
  call void @_ZN11alglib_impl15ae_swap_vectorsEPNS_9ae_vectorES1_(ptr noundef nonnull %1135, ptr noundef nonnull %26)
  %1136 = getelementptr inbounds i8, ptr %8, i64 544
  call void @_ZN11alglib_impl16ae_swap_matricesEPNS_9ae_matrixES1_(ptr noundef nonnull %1136, ptr noundef nonnull %17)
  %1137 = getelementptr inbounds i8, ptr %8, i64 96
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %1137, i64 noundef %.lcssa.fr, ptr noundef %12)
  %.not.not716986 = icmp sgt i64 %.lcssa.fr, 0
  br i1 %.not.not716986, label %.lr.ph989, label %._crit_edge990

.lr.ph989:                                        ; preds = %._crit_edge985
  %1138 = getelementptr inbounds i8, ptr %3, i64 56
  %1139 = getelementptr inbounds i8, ptr %8, i64 152
  %1140 = add nsw i64 %.lcssa.fr, -1
  %xtraiter1239 = and i64 %.lcssa.fr, 3
  %1141 = icmp ult i64 %1140, 3
  br i1 %1141, label %._crit_edge990.loopexit.unr-lcssa, label %.lr.ph989.new

.lr.ph989.new:                                    ; preds = %.lr.ph989
  %unroll_iter1242 = and i64 %.lcssa.fr, 9223372036854775804
  br label %1142

1142:                                             ; preds = %1142, %.lr.ph989.new
  %.19987 = phi i64 [ 0, %.lr.ph989.new ], [ %1166, %1142 ]
  %niter1243 = phi i64 [ 0, %.lr.ph989.new ], [ %niter1243.next.3, %1142 ]
  %1143 = load ptr, ptr %1138, align 8, !tbaa !18
  %1144 = getelementptr inbounds double, ptr %1143, i64 %.19987
  %1145 = load double, ptr %1144, align 8, !tbaa !19
  %1146 = load ptr, ptr %1139, align 8, !tbaa !18
  %1147 = getelementptr inbounds double, ptr %1146, i64 %.19987
  store double %1145, ptr %1147, align 8, !tbaa !19
  %1148 = or disjoint i64 %.19987, 1
  %1149 = load ptr, ptr %1138, align 8, !tbaa !18
  %1150 = getelementptr inbounds double, ptr %1149, i64 %1148
  %1151 = load double, ptr %1150, align 8, !tbaa !19
  %1152 = load ptr, ptr %1139, align 8, !tbaa !18
  %1153 = getelementptr inbounds double, ptr %1152, i64 %1148
  store double %1151, ptr %1153, align 8, !tbaa !19
  %1154 = or disjoint i64 %.19987, 2
  %1155 = load ptr, ptr %1138, align 8, !tbaa !18
  %1156 = getelementptr inbounds double, ptr %1155, i64 %1154
  %1157 = load double, ptr %1156, align 8, !tbaa !19
  %1158 = load ptr, ptr %1139, align 8, !tbaa !18
  %1159 = getelementptr inbounds double, ptr %1158, i64 %1154
  store double %1157, ptr %1159, align 8, !tbaa !19
  %1160 = or disjoint i64 %.19987, 3
  %1161 = load ptr, ptr %1138, align 8, !tbaa !18
  %1162 = getelementptr inbounds double, ptr %1161, i64 %1160
  %1163 = load double, ptr %1162, align 8, !tbaa !19
  %1164 = load ptr, ptr %1139, align 8, !tbaa !18
  %1165 = getelementptr inbounds double, ptr %1164, i64 %1160
  store double %1163, ptr %1165, align 8, !tbaa !19
  %1166 = add nuw nsw i64 %.19987, 4
  %niter1243.next.3 = add i64 %niter1243, 4
  %niter1243.ncmp.3 = icmp eq i64 %niter1243.next.3, %unroll_iter1242
  br i1 %niter1243.ncmp.3, label %._crit_edge990.loopexit.unr-lcssa, label %1142, !llvm.loop !105

._crit_edge990.loopexit.unr-lcssa:                ; preds = %1142, %.lr.ph989
  %.19987.unr = phi i64 [ 0, %.lr.ph989 ], [ %1166, %1142 ]
  %lcmp.mod1241.not = icmp eq i64 %xtraiter1239, 0
  br i1 %lcmp.mod1241.not, label %._crit_edge990, label %.epil.preheader1238

.epil.preheader1238:                              ; preds = %._crit_edge990.loopexit.unr-lcssa, %.epil.preheader1238
  %.19987.epil = phi i64 [ %1172, %.epil.preheader1238 ], [ %.19987.unr, %._crit_edge990.loopexit.unr-lcssa ]
  %epil.iter1240 = phi i64 [ %epil.iter1240.next, %.epil.preheader1238 ], [ 0, %._crit_edge990.loopexit.unr-lcssa ]
  %1167 = load ptr, ptr %1138, align 8, !tbaa !18
  %1168 = getelementptr inbounds double, ptr %1167, i64 %.19987.epil
  %1169 = load double, ptr %1168, align 8, !tbaa !19
  %1170 = load ptr, ptr %1139, align 8, !tbaa !18
  %1171 = getelementptr inbounds double, ptr %1170, i64 %.19987.epil
  store double %1169, ptr %1171, align 8, !tbaa !19
  %1172 = add nuw nsw i64 %.19987.epil, 1
  %epil.iter1240.next = add i64 %epil.iter1240, 1
  %epil.iter1240.cmp.not = icmp eq i64 %epil.iter1240.next, %xtraiter1239
  br i1 %epil.iter1240.cmp.not, label %._crit_edge990, label %.epil.preheader1238, !llvm.loop !106

._crit_edge990:                                   ; preds = %._crit_edge990.loopexit.unr-lcssa, %.epil.preheader1238, %._crit_edge985
  store i64 1, ptr %11, align 8, !tbaa !24
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %72, i8 0, i64 16, i1 false)
  br i1 %.not.not706789, label %.preheader758.lr.ph, label %._crit_edge997

.preheader758.lr.ph:                              ; preds = %._crit_edge990
  %.not.not718991 = icmp sgt i64 %.fr, 0
  %1173 = getelementptr inbounds i8, ptr %15, i64 72
  br i1 %.not.not718991, label %.preheader758.us, label %._crit_edge997

.preheader758.us:                                 ; preds = %.preheader758.lr.ph, %._crit_edge994.us
  %.20996.us = phi i64 [ %1193, %._crit_edge994.us ], [ 0, %.preheader758.lr.ph ]
  %1174 = mul nsw i64 %.20996.us, %.0
  br label %1175

1175:                                             ; preds = %.preheader758.us, %1175
  %.22992.us = phi i64 [ 0, %.preheader758.us ], [ %1192, %1175 ]
  %1176 = load double, ptr %72, align 8, !tbaa !31
  %1177 = load ptr, ptr %1173, align 8, !tbaa !18
  %1178 = getelementptr inbounds ptr, ptr %1177, i64 %1174
  %1179 = load ptr, ptr %1178, align 8, !tbaa !26
  %1180 = getelementptr inbounds double, ptr %1179, i64 %.22992.us
  %1181 = load double, ptr %1180, align 8, !tbaa !19
  %1182 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1181, ptr noundef %12)
  %1183 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1176, double noundef %1182, ptr noundef %12)
  store double %1183, ptr %72, align 8, !tbaa !31
  %1184 = load double, ptr %73, align 8, !tbaa !32
  %1185 = load ptr, ptr %1173, align 8, !tbaa !18
  %1186 = getelementptr inbounds ptr, ptr %1185, i64 %1174
  %1187 = load ptr, ptr %1186, align 8, !tbaa !26
  %1188 = getelementptr inbounds double, ptr %1187, i64 %.22992.us
  %1189 = load double, ptr %1188, align 8, !tbaa !19
  %1190 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1189, ptr noundef %12)
  %1191 = fadd double %1184, %1190
  store double %1191, ptr %73, align 8, !tbaa !32
  %1192 = add nuw nsw i64 %.22992.us, 1
  %exitcond1076.not = icmp eq i64 %1192, %.fr
  br i1 %exitcond1076.not, label %._crit_edge994.us, label %1175, !llvm.loop !107

._crit_edge994.us:                                ; preds = %1175
  %1193 = add nuw nsw i64 %.20996.us, 1
  %exitcond1077.not = icmp eq i64 %1193, %2
  br i1 %exitcond1077.not, label %._crit_edge997, label %.preheader758.us, !llvm.loop !108

._crit_edge997:                                   ; preds = %._crit_edge994.us, %.preheader758.lr.ph, %._crit_edge990
  %1194 = phi double [ 0.000000e+00, %._crit_edge990 ], [ 0.000000e+00, %.preheader758.lr.ph ], [ %1191, %._crit_edge994.us ]
  %1195 = mul nsw i64 %.fr, %2
  %1196 = sitofp i64 %1195 to double
  %1197 = fdiv double %1194, %1196
  %1198 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %1197, ptr noundef %12)
  store double %1198, ptr %73, align 8, !tbaa !32
  br label %1199

1199:                                             ; preds = %._crit_edge997, %878, %821, %._crit_edge1011, %111, %75
  store i64 10000, ptr %9, align 8, !tbaa !23
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %12)
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %52) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %51) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %50) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %49) #6
  call void @llvm.lifetime.end.p0(i64 328, ptr nonnull %48) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %47) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %46) #6
  call void @llvm.lifetime.end.p0(i64 368, ptr nonnull %45) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %44) #6
  call void @llvm.lifetime.end.p0(i64 2192, ptr nonnull %43) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %42) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %40) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %39) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %38) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 1000, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 1000, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %18) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #6
  ret void
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl18_rbfv2report_clearEPv(ptr noundef) local_unnamed_addr #4

declare void @_ZN11alglib_impl18_linlsqrstate_initEPvPNS_8ae_stateEb(ptr noundef, ptr noundef, i1 noundef zeroext) local_unnamed_addr #2

declare void @_ZN11alglib_impl19_linlsqrreport_initEPvPNS_8ae_stateEb(ptr noundef, ptr noundef, i1 noundef zeroext) local_unnamed_addr #2

declare void @_ZN11alglib_impl18_sparsematrix_initEPvPNS_8ae_stateEb(ptr noundef, ptr noundef, i1 noundef zeroext) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl21_rbfv2calcbuffer_initEPvPNS_8ae_stateEb(ptr noundef, ptr noundef, i1 noundef zeroext) local_unnamed_addr #4

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

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

declare void @_ZN11alglib_impl16kdtreeexploreboxEPNS_6kdtreeEPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZN11alglib_impl15rbfv2nearradiusElPNS_8ae_stateE(i64 noundef, ptr noundef) local_unnamed_addr #5

declare void @_ZN11alglib_impl18sparsecreatecrsbufEllPNS_9ae_vectorEPNS_12sparsematrixEPNS_8ae_stateE(i64 noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

declare noundef i64 @_ZN11alglib_impl9coalesceiEllPNS_8ae_stateE(i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl13linlsqrcreateEllPNS_12linlsqrstateEPNS_8ae_stateE(i64 noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare void @_ZN11alglib_impl17linlsqrsetlambdaiEPNS_12linlsqrstateEdPNS_8ae_stateE(ptr noundef, double noundef, ptr noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl11linlsqrsetbEPNS_12linlsqrstateEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl14linlsqrrestartEPNS_12linlsqrstateEPNS_8ae_stateE(ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl14linlsqrsetxrepEPNS_12linlsqrstateEbPNS_8ae_stateE(ptr noundef, i1 noundef zeroext, ptr noundef) local_unnamed_addr #2

declare noundef zeroext i1 @_ZN11alglib_impl16linlsqriterationEPNS_12linlsqrstateEPNS_8ae_stateE(ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl8sparsemvEPNS_12sparsematrixEPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl9sparsemtvEPNS_12sparsematrixEPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare noundef i64 @_ZN11alglib_impl26linlsqrpeekiterationscountEPNS_12linlsqrstateEPNS_8ae_stateE(ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl14linlsqrresultsEPNS_12linlsqrstateEPNS_9ae_vectorEPNS_13linlsqrreportEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZN11alglib_impl14rbfv2farradiusElPNS_8ae_stateE(i64 noundef, ptr noundef) local_unnamed_addr #5

declare void @_ZN11alglib_impl15ae_swap_vectorsEPNS_9ae_vectorES1_(ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl16ae_swap_matricesEPNS_9ae_matrixES1_(ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 8}
!6 = !{!"_ZTSN11alglib_impl10rbfv2modelE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !10, i64 32, !10, i64 96, !10, i64 160, !10, i64 224, !10, i64 288, !10, i64 352, !10, i64 416, !10, i64 480, !14, i64 544, !15, i64 624, !7, i64 632, !15, i64 640, !7, i64 648, !16, i64 656}
!7 = !{!"long", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTSN11alglib_impl9ae_vectorE", !7, i64 0, !7, i64 8, !11, i64 16, !12, i64 24, !8, i64 56}
!11 = !{!"bool", !8, i64 0}
!12 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24}
!13 = !{!"any pointer", !8, i64 0}
!14 = !{!"_ZTSN11alglib_impl9ae_matrixE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !11, i64 32, !12, i64 40, !8, i64 72}
!15 = !{!"double", !8, i64 0}
!16 = !{!"_ZTSN11alglib_impl15rbfv2calcbufferE", !10, i64 0, !10, i64 64, !10, i64 128, !15, i64 192, !10, i64 200, !10, i64 264}
!17 = !{!6, !7, i64 0}
!18 = !{!8, !8, i64 0}
!19 = !{!15, !15, i64 0}
!20 = distinct !{!20, !21}
!21 = !{!"llvm.loop.mustprogress"}
!22 = !{!6, !7, i64 648}
!23 = !{!7, !7, i64 0}
!24 = !{!25, !7, i64 0}
!25 = !{!"_ZTSN11alglib_impl11rbfv2reportE", !7, i64 0, !15, i64 8, !15, i64 16}
!26 = !{!13, !13, i64 0}
!27 = distinct !{!27, !21}
!28 = distinct !{!28, !21}
!29 = distinct !{!29, !21}
!30 = distinct !{!30, !21}
!31 = !{!25, !15, i64 8}
!32 = !{!25, !15, i64 16}
!33 = distinct !{!33, !21}
!34 = distinct !{!34, !21}
!35 = distinct !{!35, !21}
!36 = distinct !{!36, !37}
!37 = !{!"llvm.loop.unroll.disable"}
!38 = distinct !{!38, !21}
!39 = distinct !{!39, !21}
!40 = distinct !{!40, !21}
!41 = distinct !{!41, !21}
!42 = distinct !{!42, !21}
!43 = distinct !{!43, !21}
!44 = !{!6, !15, i64 640}
!45 = distinct !{!45, !21}
!46 = distinct !{!46, !21}
!47 = distinct !{!47, !21}
!48 = distinct !{!48, !21}
!49 = !{!10, !7, i64 0}
!50 = distinct !{!50, !37}
!51 = distinct !{!51, !21}
!52 = distinct !{!52, !21}
!53 = distinct !{!53, !21}
!54 = distinct !{!54, !37}
!55 = distinct !{!55, !21}
!56 = distinct !{!56, !21}
!57 = distinct !{!57, !21}
!58 = distinct !{!58, !21}
!59 = distinct !{!59, !21}
!60 = distinct !{!60, !21}
!61 = distinct !{!61, !21}
!62 = distinct !{!62, !21}
!63 = distinct !{!63, !21}
!64 = distinct !{!64, !37}
!65 = distinct !{!65, !21}
!66 = distinct !{!66, !37}
!67 = distinct !{!67, !21}
!68 = distinct !{!68, !21}
!69 = distinct !{!69, !21}
!70 = distinct !{!70, !21}
!71 = distinct !{!71, !21, !72}
!72 = !{!"llvm.loop.unswitch.partial.disable"}
!73 = !{!11, !11, i64 0}
!74 = !{i8 0, i8 2}
!75 = !{}
!76 = distinct !{!76, !21}
!77 = !{!6, !7, i64 632}
!78 = !{!6, !15, i64 624}
!79 = distinct !{!79, !21}
!80 = !{!81, !11, i64 1762}
!81 = !{!"_ZTSN11alglib_impl12linlsqrstateE", !82, i64 0, !10, i64 792, !10, i64 856, !7, i64 920, !7, i64 928, !7, i64 936, !10, i64 944, !10, i64 1008, !10, i64 1072, !10, i64 1136, !10, i64 1200, !10, i64 1264, !15, i64 1328, !15, i64 1336, !15, i64 1344, !15, i64 1352, !15, i64 1360, !15, i64 1368, !15, i64 1376, !15, i64 1384, !15, i64 1392, !15, i64 1400, !15, i64 1408, !15, i64 1416, !15, i64 1424, !15, i64 1432, !10, i64 1440, !15, i64 1504, !15, i64 1512, !15, i64 1520, !15, i64 1528, !10, i64 1536, !10, i64 1600, !10, i64 1664, !15, i64 1728, !15, i64 1736, !15, i64 1744, !7, i64 1752, !11, i64 1760, !11, i64 1761, !11, i64 1762, !11, i64 1763, !11, i64 1764, !11, i64 1765, !11, i64 1766, !7, i64 1768, !7, i64 1776, !7, i64 1784, !11, i64 1792, !11, i64 1793, !10, i64 1800, !10, i64 1864, !84, i64 1928}
!82 = !{!"_ZTSN11alglib_impl18normestimatorstateE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !10, i64 40, !10, i64 104, !10, i64 168, !10, i64 232, !83, i64 296, !10, i64 320, !10, i64 384, !10, i64 448, !11, i64 512, !11, i64 513, !15, i64 520, !84, i64 528}
!83 = !{!"_ZTSN11alglib_impl10hqrndstateE", !7, i64 0, !7, i64 8, !7, i64 16}
!84 = !{!"_ZTSN11alglib_impl10rcommstateE", !85, i64 0, !10, i64 8, !10, i64 72, !10, i64 136, !10, i64 200}
!85 = !{!"int", !8, i64 0}
!86 = distinct !{!86, !21}
!87 = distinct !{!87, !21}
!88 = !{!81, !11, i64 1763}
!89 = distinct !{!89, !21}
!90 = !{!81, !11, i64 1761}
!91 = distinct !{!91, !21}
!92 = distinct !{!92, !37}
!93 = !{!94, !7, i64 16}
!94 = !{!"_ZTSN11alglib_impl13linlsqrreportE", !7, i64 0, !7, i64 8, !7, i64 16}
!95 = distinct !{!95, !21}
!96 = distinct !{!96, !21}
!97 = distinct !{!97, !21}
!98 = distinct !{!98, !21}
!99 = distinct !{!99, !21}
!100 = distinct !{!100, !21}
!101 = distinct !{!101, !21}
!102 = distinct !{!102, !21}
!103 = !{!6, !7, i64 16}
!104 = !{!6, !7, i64 24}
!105 = distinct !{!105, !21}
!106 = distinct !{!106, !37}
!107 = distinct !{!107, !21}
!108 = distinct !{!108, !21}


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