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

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

%"struct.alglib_impl::ae_frame" = type { %"struct.alglib_impl::ae_dyn_block" }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%"struct.alglib_impl::ae_vector" = type { i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon }
%union.anon = type { ptr }
%"struct.alglib_impl::barycentricinterpolant" = type { i64, double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }

@.str.1 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.641 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.642 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.643 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.644 = 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

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

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

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

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

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

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

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) #1

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

declare noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef) #1

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z10testpolintbPN11alglib_impl8ae_stateE(i1 noundef zeroext %0, ptr noundef %1) #4 {
  %3 = alloca i8, align 1
  %4 = alloca ptr, align 8
  %5 = alloca %"struct.alglib_impl::ae_frame", align 8
  %6 = alloca i8, align 1
  %7 = alloca i8, align 1
  %8 = alloca double, align 8
  %9 = alloca %"struct.alglib_impl::ae_vector", align 8
  %10 = alloca %"struct.alglib_impl::ae_vector", align 8
  %11 = alloca %"struct.alglib_impl::ae_vector", align 8
  %12 = alloca %"struct.alglib_impl::ae_vector", align 8
  %13 = alloca %"struct.alglib_impl::ae_vector", align 8
  %14 = alloca %"struct.alglib_impl::ae_vector", align 8
  %15 = alloca %"struct.alglib_impl::ae_vector", align 8
  %16 = alloca %"struct.alglib_impl::ae_vector", align 8
  %17 = alloca %"struct.alglib_impl::ae_vector", 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 double, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca i64, align 8
  %25 = alloca i64, 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_vector", align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca double, align 8
  %36 = alloca double, align 8
  %37 = alloca double, align 8
  %38 = alloca %"struct.alglib_impl::barycentricinterpolant", align 8
  %39 = alloca %"struct.alglib_impl::barycentricinterpolant", align 8
  %40 = alloca %"struct.alglib_impl::barycentricinterpolant", align 8
  %41 = alloca i64, align 8
  %42 = alloca i64, align 8
  %43 = alloca i64, align 8
  %44 = alloca i64, align 8
  %45 = alloca i8, align 1
  %46 = zext i1 %0 to i8
  store i8 %46, ptr %3, align 1, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %5) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %6) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %9) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %10) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %11) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %12) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %13) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %14) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %15) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %16) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %18) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %19) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %20) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %26) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %27) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %28) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.start.p0(i64 208, ptr %38) #5
  call void @llvm.lifetime.start.p0(i64 208, ptr %39) #5
  call void @llvm.lifetime.start.p0(i64 208, ptr %40) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #5
  %47 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %47, ptr noundef %5)
  call void @llvm.memset.p0.i64(ptr align 8 %9, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %10, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %11, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %12, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %13, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %14, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %15, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %16, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %17, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %18, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %19, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %20, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %26, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %27, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %28, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %38, i8 0, i64 208, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %39, i8 0, i64 208, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %40, i8 0, i64 208, i1 false)
  %48 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %9, i64 noundef 0, i64 noundef 3, ptr noundef %48, i1 noundef zeroext true)
  %49 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %10, i64 noundef 0, i64 noundef 3, ptr noundef %49, i1 noundef zeroext true)
  %50 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %11, i64 noundef 0, i64 noundef 3, ptr noundef %50, i1 noundef zeroext true)
  %51 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %12, i64 noundef 0, i64 noundef 3, ptr noundef %51, i1 noundef zeroext true)
  %52 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %13, i64 noundef 0, i64 noundef 3, ptr noundef %52, i1 noundef zeroext true)
  %53 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %14, i64 noundef 0, i64 noundef 3, ptr noundef %53, i1 noundef zeroext true)
  %54 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %15, i64 noundef 0, i64 noundef 3, ptr noundef %54, i1 noundef zeroext true)
  %55 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %16, i64 noundef 0, i64 noundef 3, ptr noundef %55, i1 noundef zeroext true)
  %56 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %17, i64 noundef 0, i64 noundef 3, ptr noundef %56, i1 noundef zeroext true)
  %57 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %18, i64 noundef 0, i64 noundef 3, ptr noundef %57, i1 noundef zeroext true)
  %58 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %19, i64 noundef 0, i64 noundef 3, ptr noundef %58, i1 noundef zeroext true)
  %59 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %20, i64 noundef 0, i64 noundef 3, ptr noundef %59, i1 noundef zeroext true)
  %60 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %26, i64 noundef 0, i64 noundef 3, ptr noundef %60, i1 noundef zeroext true)
  %61 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %27, i64 noundef 0, i64 noundef 3, ptr noundef %61, i1 noundef zeroext true)
  %62 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %28, i64 noundef 0, i64 noundef 2, ptr noundef %62, i1 noundef zeroext true)
  %63 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl28_barycentricinterpolant_initEPvPNS_8ae_stateEb(ptr noundef %38, ptr noundef %63, i1 noundef zeroext true)
  %64 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl28_barycentricinterpolant_initEPvPNS_8ae_stateEb(ptr noundef %39, ptr noundef %64, i1 noundef zeroext true)
  %65 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl28_barycentricinterpolant_initEPvPNS_8ae_stateEb(ptr noundef %40, ptr noundef %65, i1 noundef zeroext true)
  store i8 0, ptr %6, align 1, !tbaa !5
  store i8 0, ptr %7, align 1, !tbaa !5
  store i64 5, ptr %42, align 8, !tbaa !11
  store i64 20, ptr %44, align 8, !tbaa !11
  store double 0x3E6AD7F29ABCAF49, ptr %8, align 8, !tbaa !13
  store i64 1, ptr %43, align 8, !tbaa !11
  br label %66

66:                                               ; preds = %172, %2
  %67 = load i64, ptr %43, align 8, !tbaa !11
  %68 = load i64, ptr %44, align 8, !tbaa !11
  %69 = icmp sle i64 %67, %68
  br i1 %69, label %70, label %175

70:                                               ; preds = %66
  store i64 1, ptr %41, align 8, !tbaa !11
  br label %71

71:                                               ; preds = %168, %70
  %72 = load i64, ptr %41, align 8, !tbaa !11
  %73 = load i64, ptr %42, align 8, !tbaa !11
  %74 = icmp sle i64 %72, %73
  br i1 %74, label %75, label %171

75:                                               ; preds = %71
  br label %76

76:                                               ; preds = %83, %75
  %77 = load ptr, ptr %4, align 8, !tbaa !9
  %78 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %77)
  %79 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %78, double -1.000000e+00)
  store double %79, ptr %21, align 8, !tbaa !13
  %80 = load ptr, ptr %4, align 8, !tbaa !9
  %81 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %80)
  %82 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %81, double -1.000000e+00)
  store double %82, ptr %22, align 8, !tbaa !13
  br label %83

83:                                               ; preds = %76
  %84 = load double, ptr %21, align 8, !tbaa !13
  %85 = load double, ptr %22, align 8, !tbaa !13
  %86 = fsub double %84, %85
  %87 = load ptr, ptr %4, align 8, !tbaa !9
  %88 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %86, ptr noundef %87)
  %89 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %88, double noundef 2.000000e-01)
  br i1 %89, label %76, label %90, !llvm.loop !15

90:                                               ; preds = %83
  %91 = load double, ptr %21, align 8, !tbaa !13
  %92 = load ptr, ptr %4, align 8, !tbaa !9
  %93 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %92)
  %94 = call double @llvm.fmuladd.f64(double 1.200000e+00, double %93, double -1.000000e-01)
  %95 = load double, ptr %22, align 8, !tbaa !13
  %96 = load double, ptr %21, align 8, !tbaa !13
  %97 = fsub double %95, %96
  %98 = call double @llvm.fmuladd.f64(double %94, double %97, double %91)
  store double %98, ptr %23, align 8, !tbaa !13
  %99 = load double, ptr %21, align 8, !tbaa !13
  %100 = load double, ptr %22, align 8, !tbaa !13
  %101 = load i64, ptr %41, align 8, !tbaa !11
  %102 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20taskgenint1dequidistEddlPNS_9ae_vectorES1_PNS_8ae_stateE(double noundef %99, double noundef %100, i64 noundef %101, ptr noundef %9, ptr noundef %10, ptr noundef %102)
  %103 = load i8, ptr %7, align 1, !tbaa !5, !range !17, !noundef !18
  %104 = trunc i8 %103 to i1
  br i1 %104, label %121, label %105

105:                                              ; preds = %90
  %106 = load double, ptr %21, align 8, !tbaa !13
  %107 = load double, ptr %22, align 8, !tbaa !13
  %108 = load i64, ptr %41, align 8, !tbaa !11
  %109 = load double, ptr %23, align 8, !tbaa !13
  %110 = load ptr, ptr %4, align 8, !tbaa !9
  %111 = call noundef double @_ZN11alglib_impl20polynomialcalceqdistEddPNS_9ae_vectorEldPNS_8ae_stateE(double noundef %106, double noundef %107, ptr noundef %10, i64 noundef %108, double noundef %109, ptr noundef %110)
  %112 = load i64, ptr %41, align 8, !tbaa !11
  %113 = load double, ptr %23, align 8, !tbaa !13
  %114 = load ptr, ptr %4, align 8, !tbaa !9
  %115 = call noundef double @_ZL29testpolintunit_internalpolintPN11alglib_impl9ae_vectorES1_ldPNS_8ae_stateE(ptr noundef %9, ptr noundef %10, i64 noundef %112, double noundef %113, ptr noundef %114)
  %116 = fsub double %111, %115
  %117 = load ptr, ptr %4, align 8, !tbaa !9
  %118 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %116, ptr noundef %117)
  %119 = load double, ptr %8, align 8, !tbaa !13
  %120 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %118, double noundef %119)
  br label %121

121:                                              ; preds = %105, %90
  %122 = phi i1 [ true, %90 ], [ %120, %105 ]
  %123 = zext i1 %122 to i8
  store i8 %123, ptr %7, align 1, !tbaa !5
  %124 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testpolintunit_brcunsetPN11alglib_impl22barycentricinterpolantEPNS_8ae_stateE(ptr noundef %38, ptr noundef %124)
  %125 = load i64, ptr %41, align 8, !tbaa !11
  %126 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15polynomialbuildEPNS_9ae_vectorES1_lPNS_22barycentricinterpolantEPNS_8ae_stateE(ptr noundef %9, ptr noundef %10, i64 noundef %125, ptr noundef %38, ptr noundef %126)
  %127 = load i8, ptr %7, align 1, !tbaa !5, !range !17, !noundef !18
  %128 = trunc i8 %127 to i1
  br i1 %128, label %142, label %129

129:                                              ; preds = %121
  %130 = load double, ptr %23, align 8, !tbaa !13
  %131 = load ptr, ptr %4, align 8, !tbaa !9
  %132 = call noundef double @_ZN11alglib_impl15barycentriccalcEPNS_22barycentricinterpolantEdPNS_8ae_stateE(ptr noundef %38, double noundef %130, ptr noundef %131)
  %133 = load i64, ptr %41, align 8, !tbaa !11
  %134 = load double, ptr %23, align 8, !tbaa !13
  %135 = load ptr, ptr %4, align 8, !tbaa !9
  %136 = call noundef double @_ZL29testpolintunit_internalpolintPN11alglib_impl9ae_vectorES1_ldPNS_8ae_stateE(ptr noundef %9, ptr noundef %10, i64 noundef %133, double noundef %134, ptr noundef %135)
  %137 = fsub double %132, %136
  %138 = load ptr, ptr %4, align 8, !tbaa !9
  %139 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %137, ptr noundef %138)
  %140 = load double, ptr %8, align 8, !tbaa !13
  %141 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %139, double noundef %140)
  br label %142

142:                                              ; preds = %129, %121
  %143 = phi i1 [ true, %121 ], [ %141, %129 ]
  %144 = zext i1 %143 to i8
  store i8 %144, ptr %7, align 1, !tbaa !5
  %145 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testpolintunit_brcunsetPN11alglib_impl22barycentricinterpolantEPNS_8ae_stateE(ptr noundef %38, ptr noundef %145)
  %146 = load double, ptr %21, align 8, !tbaa !13
  %147 = load double, ptr %22, align 8, !tbaa !13
  %148 = load i64, ptr %41, align 8, !tbaa !11
  %149 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl21polynomialbuildeqdistEddPNS_9ae_vectorElPNS_22barycentricinterpolantEPNS_8ae_stateE(double noundef %146, double noundef %147, ptr noundef %10, i64 noundef %148, ptr noundef %38, ptr noundef %149)
  %150 = load i8, ptr %7, align 1, !tbaa !5, !range !17, !noundef !18
  %151 = trunc i8 %150 to i1
  br i1 %151, label %165, label %152

152:                                              ; preds = %142
  %153 = load double, ptr %23, align 8, !tbaa !13
  %154 = load ptr, ptr %4, align 8, !tbaa !9
  %155 = call noundef double @_ZN11alglib_impl15barycentriccalcEPNS_22barycentricinterpolantEdPNS_8ae_stateE(ptr noundef %38, double noundef %153, ptr noundef %154)
  %156 = load i64, ptr %41, align 8, !tbaa !11
  %157 = load double, ptr %23, align 8, !tbaa !13
  %158 = load ptr, ptr %4, align 8, !tbaa !9
  %159 = call noundef double @_ZL29testpolintunit_internalpolintPN11alglib_impl9ae_vectorES1_ldPNS_8ae_stateE(ptr noundef %9, ptr noundef %10, i64 noundef %156, double noundef %157, ptr noundef %158)
  %160 = fsub double %155, %159
  %161 = load ptr, ptr %4, align 8, !tbaa !9
  %162 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %160, ptr noundef %161)
  %163 = load double, ptr %8, align 8, !tbaa !13
  %164 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %162, double noundef %163)
  br label %165

165:                                              ; preds = %152, %142
  %166 = phi i1 [ true, %142 ], [ %164, %152 ]
  %167 = zext i1 %166 to i8
  store i8 %167, ptr %7, align 1, !tbaa !5
  br label %168

168:                                              ; preds = %165
  %169 = load i64, ptr %41, align 8, !tbaa !11
  %170 = add nsw i64 %169, 1
  store i64 %170, ptr %41, align 8, !tbaa !11
  br label %71, !llvm.loop !19

171:                                              ; preds = %71
  br label %172

172:                                              ; preds = %171
  %173 = load i64, ptr %43, align 8, !tbaa !11
  %174 = add nsw i64 %173, 1
  store i64 %174, ptr %43, align 8, !tbaa !11
  br label %66, !llvm.loop !20

175:                                              ; preds = %66
  store i64 1, ptr %43, align 8, !tbaa !11
  br label %176

176:                                              ; preds = %282, %175
  %177 = load i64, ptr %43, align 8, !tbaa !11
  %178 = load i64, ptr %44, align 8, !tbaa !11
  %179 = icmp sle i64 %177, %178
  br i1 %179, label %180, label %285

180:                                              ; preds = %176
  store i64 1, ptr %41, align 8, !tbaa !11
  br label %181

181:                                              ; preds = %278, %180
  %182 = load i64, ptr %41, align 8, !tbaa !11
  %183 = load i64, ptr %42, align 8, !tbaa !11
  %184 = icmp sle i64 %182, %183
  br i1 %184, label %185, label %281

185:                                              ; preds = %181
  br label %186

186:                                              ; preds = %193, %185
  %187 = load ptr, ptr %4, align 8, !tbaa !9
  %188 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %187)
  %189 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %188, double -1.000000e+00)
  store double %189, ptr %21, align 8, !tbaa !13
  %190 = load ptr, ptr %4, align 8, !tbaa !9
  %191 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %190)
  %192 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %191, double -1.000000e+00)
  store double %192, ptr %22, align 8, !tbaa !13
  br label %193

193:                                              ; preds = %186
  %194 = load double, ptr %21, align 8, !tbaa !13
  %195 = load double, ptr %22, align 8, !tbaa !13
  %196 = fsub double %194, %195
  %197 = load ptr, ptr %4, align 8, !tbaa !9
  %198 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %196, ptr noundef %197)
  %199 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %198, double noundef 2.000000e-01)
  br i1 %199, label %186, label %200, !llvm.loop !21

200:                                              ; preds = %193
  %201 = load double, ptr %21, align 8, !tbaa !13
  %202 = load ptr, ptr %4, align 8, !tbaa !9
  %203 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %202)
  %204 = call double @llvm.fmuladd.f64(double 1.200000e+00, double %203, double -1.000000e-01)
  %205 = load double, ptr %22, align 8, !tbaa !13
  %206 = load double, ptr %21, align 8, !tbaa !13
  %207 = fsub double %205, %206
  %208 = call double @llvm.fmuladd.f64(double %204, double %207, double %201)
  store double %208, ptr %23, align 8, !tbaa !13
  %209 = load double, ptr %21, align 8, !tbaa !13
  %210 = load double, ptr %22, align 8, !tbaa !13
  %211 = load i64, ptr %41, align 8, !tbaa !11
  %212 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl17taskgenint1dcheb1EddlPNS_9ae_vectorES1_PNS_8ae_stateE(double noundef %209, double noundef %210, i64 noundef %211, ptr noundef %9, ptr noundef %10, ptr noundef %212)
  %213 = load i8, ptr %7, align 1, !tbaa !5, !range !17, !noundef !18
  %214 = trunc i8 %213 to i1
  br i1 %214, label %231, label %215

215:                                              ; preds = %200
  %216 = load double, ptr %21, align 8, !tbaa !13
  %217 = load double, ptr %22, align 8, !tbaa !13
  %218 = load i64, ptr %41, align 8, !tbaa !11
  %219 = load double, ptr %23, align 8, !tbaa !13
  %220 = load ptr, ptr %4, align 8, !tbaa !9
  %221 = call noundef double @_ZN11alglib_impl19polynomialcalccheb1EddPNS_9ae_vectorEldPNS_8ae_stateE(double noundef %216, double noundef %217, ptr noundef %10, i64 noundef %218, double noundef %219, ptr noundef %220)
  %222 = load i64, ptr %41, align 8, !tbaa !11
  %223 = load double, ptr %23, align 8, !tbaa !13
  %224 = load ptr, ptr %4, align 8, !tbaa !9
  %225 = call noundef double @_ZL29testpolintunit_internalpolintPN11alglib_impl9ae_vectorES1_ldPNS_8ae_stateE(ptr noundef %9, ptr noundef %10, i64 noundef %222, double noundef %223, ptr noundef %224)
  %226 = fsub double %221, %225
  %227 = load ptr, ptr %4, align 8, !tbaa !9
  %228 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %226, ptr noundef %227)
  %229 = load double, ptr %8, align 8, !tbaa !13
  %230 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %228, double noundef %229)
  br label %231

231:                                              ; preds = %215, %200
  %232 = phi i1 [ true, %200 ], [ %230, %215 ]
  %233 = zext i1 %232 to i8
  store i8 %233, ptr %7, align 1, !tbaa !5
  %234 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testpolintunit_brcunsetPN11alglib_impl22barycentricinterpolantEPNS_8ae_stateE(ptr noundef %38, ptr noundef %234)
  %235 = load i64, ptr %41, align 8, !tbaa !11
  %236 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15polynomialbuildEPNS_9ae_vectorES1_lPNS_22barycentricinterpolantEPNS_8ae_stateE(ptr noundef %9, ptr noundef %10, i64 noundef %235, ptr noundef %38, ptr noundef %236)
  %237 = load i8, ptr %7, align 1, !tbaa !5, !range !17, !noundef !18
  %238 = trunc i8 %237 to i1
  br i1 %238, label %252, label %239

239:                                              ; preds = %231
  %240 = load double, ptr %23, align 8, !tbaa !13
  %241 = load ptr, ptr %4, align 8, !tbaa !9
  %242 = call noundef double @_ZN11alglib_impl15barycentriccalcEPNS_22barycentricinterpolantEdPNS_8ae_stateE(ptr noundef %38, double noundef %240, ptr noundef %241)
  %243 = load i64, ptr %41, align 8, !tbaa !11
  %244 = load double, ptr %23, align 8, !tbaa !13
  %245 = load ptr, ptr %4, align 8, !tbaa !9
  %246 = call noundef double @_ZL29testpolintunit_internalpolintPN11alglib_impl9ae_vectorES1_ldPNS_8ae_stateE(ptr noundef %9, ptr noundef %10, i64 noundef %243, double noundef %244, ptr noundef %245)
  %247 = fsub double %242, %246
  %248 = load ptr, ptr %4, align 8, !tbaa !9
  %249 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %247, ptr noundef %248)
  %250 = load double, ptr %8, align 8, !tbaa !13
  %251 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %249, double noundef %250)
  br label %252

252:                                              ; preds = %239, %231
  %253 = phi i1 [ true, %231 ], [ %251, %239 ]
  %254 = zext i1 %253 to i8
  store i8 %254, ptr %7, align 1, !tbaa !5
  %255 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testpolintunit_brcunsetPN11alglib_impl22barycentricinterpolantEPNS_8ae_stateE(ptr noundef %38, ptr noundef %255)
  %256 = load double, ptr %21, align 8, !tbaa !13
  %257 = load double, ptr %22, align 8, !tbaa !13
  %258 = load i64, ptr %41, align 8, !tbaa !11
  %259 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20polynomialbuildcheb1EddPNS_9ae_vectorElPNS_22barycentricinterpolantEPNS_8ae_stateE(double noundef %256, double noundef %257, ptr noundef %10, i64 noundef %258, ptr noundef %38, ptr noundef %259)
  %260 = load i8, ptr %7, align 1, !tbaa !5, !range !17, !noundef !18
  %261 = trunc i8 %260 to i1
  br i1 %261, label %275, label %262

262:                                              ; preds = %252
  %263 = load double, ptr %23, align 8, !tbaa !13
  %264 = load ptr, ptr %4, align 8, !tbaa !9
  %265 = call noundef double @_ZN11alglib_impl15barycentriccalcEPNS_22barycentricinterpolantEdPNS_8ae_stateE(ptr noundef %38, double noundef %263, ptr noundef %264)
  %266 = load i64, ptr %41, align 8, !tbaa !11
  %267 = load double, ptr %23, align 8, !tbaa !13
  %268 = load ptr, ptr %4, align 8, !tbaa !9
  %269 = call noundef double @_ZL29testpolintunit_internalpolintPN11alglib_impl9ae_vectorES1_ldPNS_8ae_stateE(ptr noundef %9, ptr noundef %10, i64 noundef %266, double noundef %267, ptr noundef %268)
  %270 = fsub double %265, %269
  %271 = load ptr, ptr %4, align 8, !tbaa !9
  %272 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %270, ptr noundef %271)
  %273 = load double, ptr %8, align 8, !tbaa !13
  %274 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %272, double noundef %273)
  br label %275

275:                                              ; preds = %262, %252
  %276 = phi i1 [ true, %252 ], [ %274, %262 ]
  %277 = zext i1 %276 to i8
  store i8 %277, ptr %7, align 1, !tbaa !5
  br label %278

278:                                              ; preds = %275
  %279 = load i64, ptr %41, align 8, !tbaa !11
  %280 = add nsw i64 %279, 1
  store i64 %280, ptr %41, align 8, !tbaa !11
  br label %181, !llvm.loop !22

281:                                              ; preds = %181
  br label %282

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

285:                                              ; preds = %176
  store i64 1, ptr %43, align 8, !tbaa !11
  br label %286

286:                                              ; preds = %392, %285
  %287 = load i64, ptr %43, align 8, !tbaa !11
  %288 = load i64, ptr %44, align 8, !tbaa !11
  %289 = icmp sle i64 %287, %288
  br i1 %289, label %290, label %395

290:                                              ; preds = %286
  store i64 1, ptr %41, align 8, !tbaa !11
  br label %291

291:                                              ; preds = %388, %290
  %292 = load i64, ptr %41, align 8, !tbaa !11
  %293 = load i64, ptr %42, align 8, !tbaa !11
  %294 = icmp sle i64 %292, %293
  br i1 %294, label %295, label %391

295:                                              ; preds = %291
  br label %296

296:                                              ; preds = %303, %295
  %297 = load ptr, ptr %4, align 8, !tbaa !9
  %298 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %297)
  %299 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %298, double -1.000000e+00)
  store double %299, ptr %21, align 8, !tbaa !13
  %300 = load ptr, ptr %4, align 8, !tbaa !9
  %301 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %300)
  %302 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %301, double -1.000000e+00)
  store double %302, ptr %22, align 8, !tbaa !13
  br label %303

303:                                              ; preds = %296
  %304 = load double, ptr %21, align 8, !tbaa !13
  %305 = load double, ptr %22, align 8, !tbaa !13
  %306 = fsub double %304, %305
  %307 = load ptr, ptr %4, align 8, !tbaa !9
  %308 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %306, ptr noundef %307)
  %309 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %308, double noundef 2.000000e-01)
  br i1 %309, label %296, label %310, !llvm.loop !24

310:                                              ; preds = %303
  %311 = load double, ptr %21, align 8, !tbaa !13
  %312 = load ptr, ptr %4, align 8, !tbaa !9
  %313 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %312)
  %314 = call double @llvm.fmuladd.f64(double 1.200000e+00, double %313, double -1.000000e-01)
  %315 = load double, ptr %22, align 8, !tbaa !13
  %316 = load double, ptr %21, align 8, !tbaa !13
  %317 = fsub double %315, %316
  %318 = call double @llvm.fmuladd.f64(double %314, double %317, double %311)
  store double %318, ptr %23, align 8, !tbaa !13
  %319 = load double, ptr %21, align 8, !tbaa !13
  %320 = load double, ptr %22, align 8, !tbaa !13
  %321 = load i64, ptr %41, align 8, !tbaa !11
  %322 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl17taskgenint1dcheb2EddlPNS_9ae_vectorES1_PNS_8ae_stateE(double noundef %319, double noundef %320, i64 noundef %321, ptr noundef %9, ptr noundef %10, ptr noundef %322)
  %323 = load i8, ptr %7, align 1, !tbaa !5, !range !17, !noundef !18
  %324 = trunc i8 %323 to i1
  br i1 %324, label %341, label %325

325:                                              ; preds = %310
  %326 = load double, ptr %21, align 8, !tbaa !13
  %327 = load double, ptr %22, align 8, !tbaa !13
  %328 = load i64, ptr %41, align 8, !tbaa !11
  %329 = load double, ptr %23, align 8, !tbaa !13
  %330 = load ptr, ptr %4, align 8, !tbaa !9
  %331 = call noundef double @_ZN11alglib_impl19polynomialcalccheb2EddPNS_9ae_vectorEldPNS_8ae_stateE(double noundef %326, double noundef %327, ptr noundef %10, i64 noundef %328, double noundef %329, ptr noundef %330)
  %332 = load i64, ptr %41, align 8, !tbaa !11
  %333 = load double, ptr %23, align 8, !tbaa !13
  %334 = load ptr, ptr %4, align 8, !tbaa !9
  %335 = call noundef double @_ZL29testpolintunit_internalpolintPN11alglib_impl9ae_vectorES1_ldPNS_8ae_stateE(ptr noundef %9, ptr noundef %10, i64 noundef %332, double noundef %333, ptr noundef %334)
  %336 = fsub double %331, %335
  %337 = load ptr, ptr %4, align 8, !tbaa !9
  %338 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %336, ptr noundef %337)
  %339 = load double, ptr %8, align 8, !tbaa !13
  %340 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %338, double noundef %339)
  br label %341

341:                                              ; preds = %325, %310
  %342 = phi i1 [ true, %310 ], [ %340, %325 ]
  %343 = zext i1 %342 to i8
  store i8 %343, ptr %7, align 1, !tbaa !5
  %344 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testpolintunit_brcunsetPN11alglib_impl22barycentricinterpolantEPNS_8ae_stateE(ptr noundef %38, ptr noundef %344)
  %345 = load i64, ptr %41, align 8, !tbaa !11
  %346 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15polynomialbuildEPNS_9ae_vectorES1_lPNS_22barycentricinterpolantEPNS_8ae_stateE(ptr noundef %9, ptr noundef %10, i64 noundef %345, ptr noundef %38, ptr noundef %346)
  %347 = load i8, ptr %7, align 1, !tbaa !5, !range !17, !noundef !18
  %348 = trunc i8 %347 to i1
  br i1 %348, label %362, label %349

349:                                              ; preds = %341
  %350 = load double, ptr %23, align 8, !tbaa !13
  %351 = load ptr, ptr %4, align 8, !tbaa !9
  %352 = call noundef double @_ZN11alglib_impl15barycentriccalcEPNS_22barycentricinterpolantEdPNS_8ae_stateE(ptr noundef %38, double noundef %350, ptr noundef %351)
  %353 = load i64, ptr %41, align 8, !tbaa !11
  %354 = load double, ptr %23, align 8, !tbaa !13
  %355 = load ptr, ptr %4, align 8, !tbaa !9
  %356 = call noundef double @_ZL29testpolintunit_internalpolintPN11alglib_impl9ae_vectorES1_ldPNS_8ae_stateE(ptr noundef %9, ptr noundef %10, i64 noundef %353, double noundef %354, ptr noundef %355)
  %357 = fsub double %352, %356
  %358 = load ptr, ptr %4, align 8, !tbaa !9
  %359 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %357, ptr noundef %358)
  %360 = load double, ptr %8, align 8, !tbaa !13
  %361 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %359, double noundef %360)
  br label %362

362:                                              ; preds = %349, %341
  %363 = phi i1 [ true, %341 ], [ %361, %349 ]
  %364 = zext i1 %363 to i8
  store i8 %364, ptr %7, align 1, !tbaa !5
  %365 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testpolintunit_brcunsetPN11alglib_impl22barycentricinterpolantEPNS_8ae_stateE(ptr noundef %38, ptr noundef %365)
  %366 = load double, ptr %21, align 8, !tbaa !13
  %367 = load double, ptr %22, align 8, !tbaa !13
  %368 = load i64, ptr %41, align 8, !tbaa !11
  %369 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20polynomialbuildcheb2EddPNS_9ae_vectorElPNS_22barycentricinterpolantEPNS_8ae_stateE(double noundef %366, double noundef %367, ptr noundef %10, i64 noundef %368, ptr noundef %38, ptr noundef %369)
  %370 = load i8, ptr %7, align 1, !tbaa !5, !range !17, !noundef !18
  %371 = trunc i8 %370 to i1
  br i1 %371, label %385, label %372

372:                                              ; preds = %362
  %373 = load double, ptr %23, align 8, !tbaa !13
  %374 = load ptr, ptr %4, align 8, !tbaa !9
  %375 = call noundef double @_ZN11alglib_impl15barycentriccalcEPNS_22barycentricinterpolantEdPNS_8ae_stateE(ptr noundef %38, double noundef %373, ptr noundef %374)
  %376 = load i64, ptr %41, align 8, !tbaa !11
  %377 = load double, ptr %23, align 8, !tbaa !13
  %378 = load ptr, ptr %4, align 8, !tbaa !9
  %379 = call noundef double @_ZL29testpolintunit_internalpolintPN11alglib_impl9ae_vectorES1_ldPNS_8ae_stateE(ptr noundef %9, ptr noundef %10, i64 noundef %376, double noundef %377, ptr noundef %378)
  %380 = fsub double %375, %379
  %381 = load ptr, ptr %4, align 8, !tbaa !9
  %382 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %380, ptr noundef %381)
  %383 = load double, ptr %8, align 8, !tbaa !13
  %384 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %382, double noundef %383)
  br label %385

385:                                              ; preds = %372, %362
  %386 = phi i1 [ true, %362 ], [ %384, %372 ]
  %387 = zext i1 %386 to i8
  store i8 %387, ptr %7, align 1, !tbaa !5
  br label %388

388:                                              ; preds = %385
  %389 = load i64, ptr %41, align 8, !tbaa !11
  %390 = add nsw i64 %389, 1
  store i64 %390, ptr %41, align 8, !tbaa !11
  br label %291, !llvm.loop !25

391:                                              ; preds = %291
  br label %392

392:                                              ; preds = %391
  %393 = load i64, ptr %43, align 8, !tbaa !11
  %394 = add nsw i64 %393, 1
  store i64 %394, ptr %43, align 8, !tbaa !11
  br label %286, !llvm.loop !26

395:                                              ; preds = %286
  store i64 1, ptr %43, align 8, !tbaa !11
  br label %396

396:                                              ; preds = %619, %395
  %397 = load i64, ptr %43, align 8, !tbaa !11
  %398 = load i64, ptr %44, align 8, !tbaa !11
  %399 = icmp sle i64 %397, %398
  br i1 %399, label %400, label %622

400:                                              ; preds = %396
  store i64 1, ptr %25, align 8, !tbaa !11
  br label %401

401:                                              ; preds = %615, %400
  %402 = load i64, ptr %25, align 8, !tbaa !11
  %403 = icmp sle i64 %402, 3
  br i1 %403, label %404, label %618

404:                                              ; preds = %401
  %405 = load i64, ptr %25, align 8, !tbaa !11
  %406 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %9, i64 noundef %405, ptr noundef %406)
  %407 = load i64, ptr %25, align 8, !tbaa !11
  %408 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %10, i64 noundef %407, ptr noundef %408)
  %409 = load ptr, ptr %4, align 8, !tbaa !9
  %410 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %409)
  %411 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %410, double -1.000000e+00)
  store double %411, ptr %21, align 8, !tbaa !13
  %412 = load double, ptr %21, align 8, !tbaa !13
  %413 = load ptr, ptr %4, align 8, !tbaa !9
  %414 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %413)
  %415 = fadd double 1.000000e-01, %414
  %416 = load ptr, ptr %4, align 8, !tbaa !9
  %417 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 2, ptr noundef %416)
  %418 = mul nsw i64 2, %417
  %419 = sub nsw i64 %418, 1
  %420 = sitofp i64 %419 to double
  %421 = call double @llvm.fmuladd.f64(double %415, double %420, double %412)
  store double %421, ptr %22, align 8, !tbaa !13
  %422 = load ptr, ptr %4, align 8, !tbaa !9
  %423 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %422)
  %424 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %423, double -1.000000e+00)
  store double %424, ptr %30, align 8, !tbaa !13
  %425 = load ptr, ptr %4, align 8, !tbaa !9
  %426 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %425)
  %427 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %426, double -1.000000e+00)
  store double %427, ptr %31, align 8, !tbaa !13
  %428 = load ptr, ptr %4, align 8, !tbaa !9
  %429 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %428)
  %430 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %429, double -1.000000e+00)
  store double %430, ptr %32, align 8, !tbaa !13
  %431 = load i64, ptr %25, align 8, !tbaa !11
  %432 = icmp eq i64 %431, 1
  br i1 %432, label %433, label %445

433:                                              ; preds = %404
  %434 = load double, ptr %21, align 8, !tbaa !13
  %435 = load double, ptr %22, align 8, !tbaa !13
  %436 = fadd double %434, %435
  %437 = fmul double 5.000000e-01, %436
  %438 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %9, i32 0, i32 4
  %439 = load ptr, ptr %438, align 8, !tbaa !27
  %440 = getelementptr inbounds double, ptr %439, i64 0
  store double %437, ptr %440, align 8, !tbaa !13
  %441 = load double, ptr %30, align 8, !tbaa !13
  %442 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %10, i32 0, i32 4
  %443 = load ptr, ptr %442, align 8, !tbaa !27
  %444 = getelementptr inbounds double, ptr %443, i64 0
  store double %441, ptr %444, align 8, !tbaa !13
  br label %445

445:                                              ; preds = %433, %404
  %446 = load i64, ptr %25, align 8, !tbaa !11
  %447 = icmp eq i64 %446, 2
  br i1 %447, label %448, label %469

448:                                              ; preds = %445
  %449 = load double, ptr %21, align 8, !tbaa !13
  %450 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %9, i32 0, i32 4
  %451 = load ptr, ptr %450, align 8, !tbaa !27
  %452 = getelementptr inbounds double, ptr %451, i64 0
  store double %449, ptr %452, align 8, !tbaa !13
  %453 = load double, ptr %30, align 8, !tbaa !13
  %454 = load double, ptr %31, align 8, !tbaa !13
  %455 = fsub double %453, %454
  %456 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %10, i32 0, i32 4
  %457 = load ptr, ptr %456, align 8, !tbaa !27
  %458 = getelementptr inbounds double, ptr %457, i64 0
  store double %455, ptr %458, align 8, !tbaa !13
  %459 = load double, ptr %22, align 8, !tbaa !13
  %460 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %9, i32 0, i32 4
  %461 = load ptr, ptr %460, align 8, !tbaa !27
  %462 = getelementptr inbounds double, ptr %461, i64 1
  store double %459, ptr %462, align 8, !tbaa !13
  %463 = load double, ptr %30, align 8, !tbaa !13
  %464 = load double, ptr %31, align 8, !tbaa !13
  %465 = fadd double %463, %464
  %466 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %10, i32 0, i32 4
  %467 = load ptr, ptr %466, align 8, !tbaa !27
  %468 = getelementptr inbounds double, ptr %467, i64 1
  store double %465, ptr %468, align 8, !tbaa !13
  br label %469

469:                                              ; preds = %448, %445
  %470 = load i64, ptr %25, align 8, !tbaa !11
  %471 = icmp eq i64 %470, 3
  br i1 %471, label %472, label %510

472:                                              ; preds = %469
  %473 = load double, ptr %21, align 8, !tbaa !13
  %474 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %9, i32 0, i32 4
  %475 = load ptr, ptr %474, align 8, !tbaa !27
  %476 = getelementptr inbounds double, ptr %475, i64 0
  store double %473, ptr %476, align 8, !tbaa !13
  %477 = load double, ptr %30, align 8, !tbaa !13
  %478 = load double, ptr %31, align 8, !tbaa !13
  %479 = fsub double %477, %478
  %480 = load double, ptr %32, align 8, !tbaa !13
  %481 = fadd double %479, %480
  %482 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %10, i32 0, i32 4
  %483 = load ptr, ptr %482, align 8, !tbaa !27
  %484 = getelementptr inbounds double, ptr %483, i64 0
  store double %481, ptr %484, align 8, !tbaa !13
  %485 = load double, ptr %21, align 8, !tbaa !13
  %486 = load double, ptr %22, align 8, !tbaa !13
  %487 = fadd double %485, %486
  %488 = fmul double 5.000000e-01, %487
  %489 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %9, i32 0, i32 4
  %490 = load ptr, ptr %489, align 8, !tbaa !27
  %491 = getelementptr inbounds double, ptr %490, i64 1
  store double %488, ptr %491, align 8, !tbaa !13
  %492 = load double, ptr %30, align 8, !tbaa !13
  %493 = load double, ptr %32, align 8, !tbaa !13
  %494 = fsub double %492, %493
  %495 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %10, i32 0, i32 4
  %496 = load ptr, ptr %495, align 8, !tbaa !27
  %497 = getelementptr inbounds double, ptr %496, i64 1
  store double %494, ptr %497, align 8, !tbaa !13
  %498 = load double, ptr %22, align 8, !tbaa !13
  %499 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %9, i32 0, i32 4
  %500 = load ptr, ptr %499, align 8, !tbaa !27
  %501 = getelementptr inbounds double, ptr %500, i64 2
  store double %498, ptr %501, align 8, !tbaa !13
  %502 = load double, ptr %30, align 8, !tbaa !13
  %503 = load double, ptr %31, align 8, !tbaa !13
  %504 = fadd double %502, %503
  %505 = load double, ptr %32, align 8, !tbaa !13
  %506 = fadd double %504, %505
  %507 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %10, i32 0, i32 4
  %508 = load ptr, ptr %507, align 8, !tbaa !27
  %509 = getelementptr inbounds double, ptr %508, i64 2
  store double %506, ptr %509, align 8, !tbaa !13
  br label %510

510:                                              ; preds = %472, %469
  %511 = load i64, ptr %25, align 8, !tbaa !11
  %512 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15polynomialbuildEPNS_9ae_vectorES1_lPNS_22barycentricinterpolantEPNS_8ae_stateE(ptr noundef %9, ptr noundef %10, i64 noundef %511, ptr noundef %38, ptr noundef %512)
  %513 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %12, i64 noundef 1, ptr noundef %513)
  %514 = load double, ptr %21, align 8, !tbaa !13
  %515 = load double, ptr %22, align 8, !tbaa !13
  %516 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl18polynomialbar2chebEPNS_22barycentricinterpolantEddPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %38, double noundef %514, double noundef %515, ptr noundef %12, ptr noundef %516)
  %517 = load i8, ptr %7, align 1, !tbaa !5, !range !17, !noundef !18
  %518 = trunc i8 %517 to i1
  br i1 %518, label %524, label %519

519:                                              ; preds = %510
  %520 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %12, i32 0, i32 0
  %521 = load i64, ptr %520, align 8, !tbaa !28
  %522 = load i64, ptr %25, align 8, !tbaa !11
  %523 = icmp ne i64 %521, %522
  br label %524

524:                                              ; preds = %519, %510
  %525 = phi i1 [ true, %510 ], [ %523, %519 ]
  %526 = zext i1 %525 to i8
  store i8 %526, ptr %7, align 1, !tbaa !5
  %527 = load i64, ptr %25, align 8, !tbaa !11
  %528 = icmp sge i64 %527, 1
  br i1 %528, label %529, label %546

529:                                              ; preds = %524
  %530 = load i8, ptr %7, align 1, !tbaa !5, !range !17, !noundef !18
  %531 = trunc i8 %530 to i1
  br i1 %531, label %543, label %532

532:                                              ; preds = %529
  %533 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %12, i32 0, i32 4
  %534 = load ptr, ptr %533, align 8, !tbaa !27
  %535 = getelementptr inbounds double, ptr %534, i64 0
  %536 = load double, ptr %535, align 8, !tbaa !13
  %537 = load double, ptr %30, align 8, !tbaa !13
  %538 = fsub double %536, %537
  %539 = load ptr, ptr %4, align 8, !tbaa !9
  %540 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %538, ptr noundef %539)
  %541 = load double, ptr %8, align 8, !tbaa !13
  %542 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %540, double noundef %541)
  br label %543

543:                                              ; preds = %532, %529
  %544 = phi i1 [ true, %529 ], [ %542, %532 ]
  %545 = zext i1 %544 to i8
  store i8 %545, ptr %7, align 1, !tbaa !5
  br label %546

546:                                              ; preds = %543, %524
  %547 = load i64, ptr %25, align 8, !tbaa !11
  %548 = icmp sge i64 %547, 2
  br i1 %548, label %549, label %566

549:                                              ; preds = %546
  %550 = load i8, ptr %7, align 1, !tbaa !5, !range !17, !noundef !18
  %551 = trunc i8 %550 to i1
  br i1 %551, label %563, label %552

552:                                              ; preds = %549
  %553 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %12, i32 0, i32 4
  %554 = load ptr, ptr %553, align 8, !tbaa !27
  %555 = getelementptr inbounds double, ptr %554, i64 1
  %556 = load double, ptr %555, align 8, !tbaa !13
  %557 = load double, ptr %31, align 8, !tbaa !13
  %558 = fsub double %556, %557
  %559 = load ptr, ptr %4, align 8, !tbaa !9
  %560 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %558, ptr noundef %559)
  %561 = load double, ptr %8, align 8, !tbaa !13
  %562 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %560, double noundef %561)
  br label %563

563:                                              ; preds = %552, %549
  %564 = phi i1 [ true, %549 ], [ %562, %552 ]
  %565 = zext i1 %564 to i8
  store i8 %565, ptr %7, align 1, !tbaa !5
  br label %566

566:                                              ; preds = %563, %546
  %567 = load i64, ptr %25, align 8, !tbaa !11
  %568 = icmp sge i64 %567, 3
  br i1 %568, label %569, label %586

569:                                              ; preds = %566
  %570 = load i8, ptr %7, align 1, !tbaa !5, !range !17, !noundef !18
  %571 = trunc i8 %570 to i1
  br i1 %571, label %583, label %572

572:                                              ; preds = %569
  %573 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %12, i32 0, i32 4
  %574 = load ptr, ptr %573, align 8, !tbaa !27
  %575 = getelementptr inbounds double, ptr %574, i64 2
  %576 = load double, ptr %575, align 8, !tbaa !13
  %577 = load double, ptr %32, align 8, !tbaa !13
  %578 = fsub double %576, %577
  %579 = load ptr, ptr %4, align 8, !tbaa !9
  %580 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %578, ptr noundef %579)
  %581 = load double, ptr %8, align 8, !tbaa !13
  %582 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %580, double noundef %581)
  br label %583

583:                                              ; preds = %572, %569
  %584 = phi i1 [ true, %569 ], [ %582, %572 ]
  %585 = zext i1 %584 to i8
  store i8 %585, ptr %7, align 1, !tbaa !5
  br label %586

586:                                              ; preds = %583, %566
  %587 = load i64, ptr %25, align 8, !tbaa !11
  %588 = load double, ptr %21, align 8, !tbaa !13
  %589 = load double, ptr %22, align 8, !tbaa !13
  %590 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl18polynomialcheb2barEPNS_9ae_vectorElddPNS_22barycentricinterpolantEPNS_8ae_stateE(ptr noundef %12, i64 noundef %587, double noundef %588, double noundef %589, ptr noundef %40, ptr noundef %590)
  %591 = load double, ptr %21, align 8, !tbaa !13
  %592 = load ptr, ptr %4, align 8, !tbaa !9
  %593 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %592)
  %594 = load double, ptr %22, align 8, !tbaa !13
  %595 = load double, ptr %21, align 8, !tbaa !13
  %596 = fsub double %594, %595
  %597 = call double @llvm.fmuladd.f64(double %593, double %596, double %591)
  store double %597, ptr %29, align 8, !tbaa !13
  %598 = load i8, ptr %7, align 1, !tbaa !5, !range !17, !noundef !18
  %599 = trunc i8 %598 to i1
  br i1 %599, label %612, label %600

600:                                              ; preds = %586
  %601 = load double, ptr %29, align 8, !tbaa !13
  %602 = load ptr, ptr %4, align 8, !tbaa !9
  %603 = call noundef double @_ZN11alglib_impl15barycentriccalcEPNS_22barycentricinterpolantEdPNS_8ae_stateE(ptr noundef %38, double noundef %601, ptr noundef %602)
  %604 = load double, ptr %29, align 8, !tbaa !13
  %605 = load ptr, ptr %4, align 8, !tbaa !9
  %606 = call noundef double @_ZN11alglib_impl15barycentriccalcEPNS_22barycentricinterpolantEdPNS_8ae_stateE(ptr noundef %40, double noundef %604, ptr noundef %605)
  %607 = fsub double %603, %606
  %608 = load ptr, ptr %4, align 8, !tbaa !9
  %609 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %607, ptr noundef %608)
  %610 = load double, ptr %8, align 8, !tbaa !13
  %611 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %609, double noundef %610)
  br label %612

612:                                              ; preds = %600, %586
  %613 = phi i1 [ true, %586 ], [ %611, %600 ]
  %614 = zext i1 %613 to i8
  store i8 %614, ptr %7, align 1, !tbaa !5
  br label %615

615:                                              ; preds = %612
  %616 = load i64, ptr %25, align 8, !tbaa !11
  %617 = add nsw i64 %616, 1
  store i64 %617, ptr %25, align 8, !tbaa !11
  br label %401, !llvm.loop !31

618:                                              ; preds = %401
  br label %619

619:                                              ; preds = %618
  %620 = load i64, ptr %43, align 8, !tbaa !11
  %621 = add nsw i64 %620, 1
  store i64 %621, ptr %43, align 8, !tbaa !11
  br label %396, !llvm.loop !32

622:                                              ; preds = %396
  store i64 1, ptr %43, align 8, !tbaa !11
  br label %623

623:                                              ; preds = %1042, %622
  %624 = load i64, ptr %43, align 8, !tbaa !11
  %625 = load i64, ptr %44, align 8, !tbaa !11
  %626 = icmp sle i64 %624, %625
  br i1 %626, label %627, label %1045

627:                                              ; preds = %623
  store i64 1, ptr %25, align 8, !tbaa !11
  br label %628

628:                                              ; preds = %1038, %627
  %629 = load i64, ptr %25, align 8, !tbaa !11
  %630 = icmp sle i64 %629, 5
  br i1 %630, label %631, label %1041

631:                                              ; preds = %628
  %632 = load i64, ptr %25, align 8, !tbaa !11
  %633 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %9, i64 noundef %632, ptr noundef %633)
  %634 = load i64, ptr %25, align 8, !tbaa !11
  %635 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %10, i64 noundef %634, ptr noundef %635)
  %636 = load ptr, ptr %4, align 8, !tbaa !9
  %637 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %636)
  %638 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %637, double -1.000000e+00)
  store double %638, ptr %36, align 8, !tbaa !13
  %639 = load ptr, ptr %4, align 8, !tbaa !9
  %640 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %639)
  %641 = fadd double 1.000000e-01, %640
  %642 = load ptr, ptr %4, align 8, !tbaa !9
  %643 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 2, ptr noundef %642)
  %644 = mul nsw i64 2, %643
  %645 = sub nsw i64 %644, 1
  %646 = sitofp i64 %645 to double
  %647 = fmul double %641, %646
  store double %647, ptr %35, align 8, !tbaa !13
  %648 = load ptr, ptr %4, align 8, !tbaa !9
  %649 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %648)
  %650 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %649, double -1.000000e+00)
  store double %650, ptr %30, align 8, !tbaa !13
  %651 = load ptr, ptr %4, align 8, !tbaa !9
  %652 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %651)
  %653 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %652, double -1.000000e+00)
  store double %653, ptr %31, align 8, !tbaa !13
  %654 = load ptr, ptr %4, align 8, !tbaa !9
  %655 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %654)
  %656 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %655, double -1.000000e+00)
  store double %656, ptr %32, align 8, !tbaa !13
  %657 = load ptr, ptr %4, align 8, !tbaa !9
  %658 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %657)
  %659 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %658, double -1.000000e+00)
  store double %659, ptr %33, align 8, !tbaa !13
  %660 = load ptr, ptr %4, align 8, !tbaa !9
  %661 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %660)
  %662 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %661, double -1.000000e+00)
  store double %662, ptr %34, align 8, !tbaa !13
  %663 = load i64, ptr %25, align 8, !tbaa !11
  %664 = icmp eq i64 %663, 1
  br i1 %664, label %665, label %674

665:                                              ; preds = %631
  %666 = load double, ptr %36, align 8, !tbaa !13
  %667 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %9, i32 0, i32 4
  %668 = load ptr, ptr %667, align 8, !tbaa !27
  %669 = getelementptr inbounds double, ptr %668, i64 0
  store double %666, ptr %669, align 8, !tbaa !13
  %670 = load double, ptr %30, align 8, !tbaa !13
  %671 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %10, i32 0, i32 4
  %672 = load ptr, ptr %671, align 8, !tbaa !27
  %673 = getelementptr inbounds double, ptr %672, i64 0
  store double %670, ptr %673, align 8, !tbaa !13
  br label %674

674:                                              ; preds = %665, %631
  %675 = load i64, ptr %25, align 8, !tbaa !11
  %676 = icmp eq i64 %675, 2
  br i1 %676, label %677, label %702

677:                                              ; preds = %674
  %678 = load double, ptr %36, align 8, !tbaa !13
  %679 = load double, ptr %35, align 8, !tbaa !13
  %680 = fsub double %678, %679
  %681 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %9, i32 0, i32 4
  %682 = load ptr, ptr %681, align 8, !tbaa !27
  %683 = getelementptr inbounds double, ptr %682, i64 0
  store double %680, ptr %683, align 8, !tbaa !13
  %684 = load double, ptr %30, align 8, !tbaa !13
  %685 = load double, ptr %31, align 8, !tbaa !13
  %686 = fsub double %684, %685
  %687 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %10, i32 0, i32 4
  %688 = load ptr, ptr %687, align 8, !tbaa !27
  %689 = getelementptr inbounds double, ptr %688, i64 0
  store double %686, ptr %689, align 8, !tbaa !13
  %690 = load double, ptr %36, align 8, !tbaa !13
  %691 = load double, ptr %35, align 8, !tbaa !13
  %692 = fadd double %690, %691
  %693 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %9, i32 0, i32 4
  %694 = load ptr, ptr %693, align 8, !tbaa !27
  %695 = getelementptr inbounds double, ptr %694, i64 1
  store double %692, ptr %695, align 8, !tbaa !13
  %696 = load double, ptr %30, align 8, !tbaa !13
  %697 = load double, ptr %31, align 8, !tbaa !13
  %698 = fadd double %696, %697
  %699 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %10, i32 0, i32 4
  %700 = load ptr, ptr %699, align 8, !tbaa !27
  %701 = getelementptr inbounds double, ptr %700, i64 1
  store double %698, ptr %701, align 8, !tbaa !13
  br label %702

702:                                              ; preds = %677, %674
  %703 = load i64, ptr %25, align 8, !tbaa !11
  %704 = icmp eq i64 %703, 3
  br i1 %704, label %705, label %742

705:                                              ; preds = %702
  %706 = load double, ptr %36, align 8, !tbaa !13
  %707 = load double, ptr %35, align 8, !tbaa !13
  %708 = fsub double %706, %707
  %709 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %9, i32 0, i32 4
  %710 = load ptr, ptr %709, align 8, !tbaa !27
  %711 = getelementptr inbounds double, ptr %710, i64 0
  store double %708, ptr %711, align 8, !tbaa !13
  %712 = load double, ptr %30, align 8, !tbaa !13
  %713 = load double, ptr %31, align 8, !tbaa !13
  %714 = fsub double %712, %713
  %715 = load double, ptr %32, align 8, !tbaa !13
  %716 = fadd double %714, %715
  %717 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %10, i32 0, i32 4
  %718 = load ptr, ptr %717, align 8, !tbaa !27
  %719 = getelementptr inbounds double, ptr %718, i64 0
  store double %716, ptr %719, align 8, !tbaa !13
  %720 = load double, ptr %36, align 8, !tbaa !13
  %721 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %9, i32 0, i32 4
  %722 = load ptr, ptr %721, align 8, !tbaa !27
  %723 = getelementptr inbounds double, ptr %722, i64 1
  store double %720, ptr %723, align 8, !tbaa !13
  %724 = load double, ptr %30, align 8, !tbaa !13
  %725 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %10, i32 0, i32 4
  %726 = load ptr, ptr %725, align 8, !tbaa !27
  %727 = getelementptr inbounds double, ptr %726, i64 1
  store double %724, ptr %727, align 8, !tbaa !13
  %728 = load double, ptr %36, align 8, !tbaa !13
  %729 = load double, ptr %35, align 8, !tbaa !13
  %730 = fadd double %728, %729
  %731 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %9, i32 0, i32 4
  %732 = load ptr, ptr %731, align 8, !tbaa !27
  %733 = getelementptr inbounds double, ptr %732, i64 2
  store double %730, ptr %733, align 8, !tbaa !13
  %734 = load double, ptr %30, align 8, !tbaa !13
  %735 = load double, ptr %31, align 8, !tbaa !13
  %736 = fadd double %734, %735
  %737 = load double, ptr %32, align 8, !tbaa !13
  %738 = fadd double %736, %737
  %739 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %10, i32 0, i32 4
  %740 = load ptr, ptr %739, align 8, !tbaa !27
  %741 = getelementptr inbounds double, ptr %740, i64 2
  store double %738, ptr %741, align 8, !tbaa !13
  br label %742

742:                                              ; preds = %705, %702
  %743 = load i64, ptr %25, align 8, !tbaa !11
  %744 = icmp eq i64 %743, 4
  br i1 %744, label %745, label %810

745:                                              ; preds = %742
  %746 = load double, ptr %36, align 8, !tbaa !13
  %747 = load double, ptr %35, align 8, !tbaa !13
  %748 = fsub double %746, %747
  %749 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %9, i32 0, i32 4
  %750 = load ptr, ptr %749, align 8, !tbaa !27
  %751 = getelementptr inbounds double, ptr %750, i64 0
  store double %748, ptr %751, align 8, !tbaa !13
  %752 = load double, ptr %30, align 8, !tbaa !13
  %753 = load double, ptr %31, align 8, !tbaa !13
  %754 = fsub double %752, %753
  %755 = load double, ptr %32, align 8, !tbaa !13
  %756 = fadd double %754, %755
  %757 = load double, ptr %33, align 8, !tbaa !13
  %758 = fsub double %756, %757
  %759 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %10, i32 0, i32 4
  %760 = load ptr, ptr %759, align 8, !tbaa !27
  %761 = getelementptr inbounds double, ptr %760, i64 0
  store double %758, ptr %761, align 8, !tbaa !13
  %762 = load double, ptr %36, align 8, !tbaa !13
  %763 = load double, ptr %35, align 8, !tbaa !13
  %764 = call double @llvm.fmuladd.f64(double -5.000000e-01, double %763, double %762)
  %765 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %9, i32 0, i32 4
  %766 = load ptr, ptr %765, align 8, !tbaa !27
  %767 = getelementptr inbounds double, ptr %766, i64 1
  store double %764, ptr %767, align 8, !tbaa !13
  %768 = load double, ptr %30, align 8, !tbaa !13
  %769 = load double, ptr %31, align 8, !tbaa !13
  %770 = call double @llvm.fmuladd.f64(double -5.000000e-01, double %769, double %768)
  %771 = load double, ptr %32, align 8, !tbaa !13
  %772 = call double @llvm.fmuladd.f64(double 2.500000e-01, double %771, double %770)
  %773 = load double, ptr %33, align 8, !tbaa !13
  %774 = call double @llvm.fmuladd.f64(double -1.250000e-01, double %773, double %772)
  %775 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %10, i32 0, i32 4
  %776 = load ptr, ptr %775, align 8, !tbaa !27
  %777 = getelementptr inbounds double, ptr %776, i64 1
  store double %774, ptr %777, align 8, !tbaa !13
  %778 = load double, ptr %36, align 8, !tbaa !13
  %779 = load double, ptr %35, align 8, !tbaa !13
  %780 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %779, double %778)
  %781 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %9, i32 0, i32 4
  %782 = load ptr, ptr %781, align 8, !tbaa !27
  %783 = getelementptr inbounds double, ptr %782, i64 2
  store double %780, ptr %783, align 8, !tbaa !13
  %784 = load double, ptr %30, align 8, !tbaa !13
  %785 = load double, ptr %31, align 8, !tbaa !13
  %786 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %785, double %784)
  %787 = load double, ptr %32, align 8, !tbaa !13
  %788 = call double @llvm.fmuladd.f64(double 2.500000e-01, double %787, double %786)
  %789 = load double, ptr %33, align 8, !tbaa !13
  %790 = call double @llvm.fmuladd.f64(double 1.250000e-01, double %789, double %788)
  %791 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %10, i32 0, i32 4
  %792 = load ptr, ptr %791, align 8, !tbaa !27
  %793 = getelementptr inbounds double, ptr %792, i64 2
  store double %790, ptr %793, align 8, !tbaa !13
  %794 = load double, ptr %36, align 8, !tbaa !13
  %795 = load double, ptr %35, align 8, !tbaa !13
  %796 = fadd double %794, %795
  %797 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %9, i32 0, i32 4
  %798 = load ptr, ptr %797, align 8, !tbaa !27
  %799 = getelementptr inbounds double, ptr %798, i64 3
  store double %796, ptr %799, align 8, !tbaa !13
  %800 = load double, ptr %30, align 8, !tbaa !13
  %801 = load double, ptr %31, align 8, !tbaa !13
  %802 = fadd double %800, %801
  %803 = load double, ptr %32, align 8, !tbaa !13
  %804 = fadd double %802, %803
  %805 = load double, ptr %33, align 8, !tbaa !13
  %806 = fadd double %804, %805
  %807 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %10, i32 0, i32 4
  %808 = load ptr, ptr %807, align 8, !tbaa !27
  %809 = getelementptr inbounds double, ptr %808, i64 3
  store double %806, ptr %809, align 8, !tbaa !13
  br label %810

810:                                              ; preds = %745, %742
  %811 = load i64, ptr %25, align 8, !tbaa !11
  %812 = icmp eq i64 %811, 5
  br i1 %812, label %813, label %894

813:                                              ; preds = %810
  %814 = load double, ptr %36, align 8, !tbaa !13
  %815 = load double, ptr %35, align 8, !tbaa !13
  %816 = fsub double %814, %815
  %817 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %9, i32 0, i32 4
  %818 = load ptr, ptr %817, align 8, !tbaa !27
  %819 = getelementptr inbounds double, ptr %818, i64 0
  store double %816, ptr %819, align 8, !tbaa !13
  %820 = load double, ptr %30, align 8, !tbaa !13
  %821 = load double, ptr %31, align 8, !tbaa !13
  %822 = fsub double %820, %821
  %823 = load double, ptr %32, align 8, !tbaa !13
  %824 = fadd double %822, %823
  %825 = load double, ptr %33, align 8, !tbaa !13
  %826 = fsub double %824, %825
  %827 = load double, ptr %34, align 8, !tbaa !13
  %828 = fadd double %826, %827
  %829 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %10, i32 0, i32 4
  %830 = load ptr, ptr %829, align 8, !tbaa !27
  %831 = getelementptr inbounds double, ptr %830, i64 0
  store double %828, ptr %831, align 8, !tbaa !13
  %832 = load double, ptr %36, align 8, !tbaa !13
  %833 = load double, ptr %35, align 8, !tbaa !13
  %834 = call double @llvm.fmuladd.f64(double -5.000000e-01, double %833, double %832)
  %835 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %9, i32 0, i32 4
  %836 = load ptr, ptr %835, align 8, !tbaa !27
  %837 = getelementptr inbounds double, ptr %836, i64 1
  store double %834, ptr %837, align 8, !tbaa !13
  %838 = load double, ptr %30, align 8, !tbaa !13
  %839 = load double, ptr %31, align 8, !tbaa !13
  %840 = call double @llvm.fmuladd.f64(double -5.000000e-01, double %839, double %838)
  %841 = load double, ptr %32, align 8, !tbaa !13
  %842 = call double @llvm.fmuladd.f64(double 2.500000e-01, double %841, double %840)
  %843 = load double, ptr %33, align 8, !tbaa !13
  %844 = call double @llvm.fmuladd.f64(double -1.250000e-01, double %843, double %842)
  %845 = load double, ptr %34, align 8, !tbaa !13
  %846 = call double @llvm.fmuladd.f64(double 6.250000e-02, double %845, double %844)
  %847 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %10, i32 0, i32 4
  %848 = load ptr, ptr %847, align 8, !tbaa !27
  %849 = getelementptr inbounds double, ptr %848, i64 1
  store double %846, ptr %849, align 8, !tbaa !13
  %850 = load double, ptr %36, align 8, !tbaa !13
  %851 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %9, i32 0, i32 4
  %852 = load ptr, ptr %851, align 8, !tbaa !27
  %853 = getelementptr inbounds double, ptr %852, i64 2
  store double %850, ptr %853, align 8, !tbaa !13
  %854 = load double, ptr %30, align 8, !tbaa !13
  %855 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %10, i32 0, i32 4
  %856 = load ptr, ptr %855, align 8, !tbaa !27
  %857 = getelementptr inbounds double, ptr %856, i64 2
  store double %854, ptr %857, align 8, !tbaa !13
  %858 = load double, ptr %36, align 8, !tbaa !13
  %859 = load double, ptr %35, align 8, !tbaa !13
  %860 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %859, double %858)
  %861 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %9, i32 0, i32 4
  %862 = load ptr, ptr %861, align 8, !tbaa !27
  %863 = getelementptr inbounds double, ptr %862, i64 3
  store double %860, ptr %863, align 8, !tbaa !13
  %864 = load double, ptr %30, align 8, !tbaa !13
  %865 = load double, ptr %31, align 8, !tbaa !13
  %866 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %865, double %864)
  %867 = load double, ptr %32, align 8, !tbaa !13
  %868 = call double @llvm.fmuladd.f64(double 2.500000e-01, double %867, double %866)
  %869 = load double, ptr %33, align 8, !tbaa !13
  %870 = call double @llvm.fmuladd.f64(double 1.250000e-01, double %869, double %868)
  %871 = load double, ptr %34, align 8, !tbaa !13
  %872 = call double @llvm.fmuladd.f64(double 6.250000e-02, double %871, double %870)
  %873 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %10, i32 0, i32 4
  %874 = load ptr, ptr %873, align 8, !tbaa !27
  %875 = getelementptr inbounds double, ptr %874, i64 3
  store double %872, ptr %875, align 8, !tbaa !13
  %876 = load double, ptr %36, align 8, !tbaa !13
  %877 = load double, ptr %35, align 8, !tbaa !13
  %878 = fadd double %876, %877
  %879 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %9, i32 0, i32 4
  %880 = load ptr, ptr %879, align 8, !tbaa !27
  %881 = getelementptr inbounds double, ptr %880, i64 4
  store double %878, ptr %881, align 8, !tbaa !13
  %882 = load double, ptr %30, align 8, !tbaa !13
  %883 = load double, ptr %31, align 8, !tbaa !13
  %884 = fadd double %882, %883
  %885 = load double, ptr %32, align 8, !tbaa !13
  %886 = fadd double %884, %885
  %887 = load double, ptr %33, align 8, !tbaa !13
  %888 = fadd double %886, %887
  %889 = load double, ptr %34, align 8, !tbaa !13
  %890 = fadd double %888, %889
  %891 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %10, i32 0, i32 4
  %892 = load ptr, ptr %891, align 8, !tbaa !27
  %893 = getelementptr inbounds double, ptr %892, i64 4
  store double %890, ptr %893, align 8, !tbaa !13
  br label %894

894:                                              ; preds = %813, %810
  %895 = load i64, ptr %25, align 8, !tbaa !11
  %896 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15polynomialbuildEPNS_9ae_vectorES1_lPNS_22barycentricinterpolantEPNS_8ae_stateE(ptr noundef %9, ptr noundef %10, i64 noundef %895, ptr noundef %38, ptr noundef %896)
  %897 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %12, i64 noundef 1, ptr noundef %897)
  %898 = load double, ptr %36, align 8, !tbaa !13
  %899 = load double, ptr %35, align 8, !tbaa !13
  %900 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl17polynomialbar2powEPNS_22barycentricinterpolantEddPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %38, double noundef %898, double noundef %899, ptr noundef %12, ptr noundef %900)
  %901 = load i8, ptr %7, align 1, !tbaa !5, !range !17, !noundef !18
  %902 = trunc i8 %901 to i1
  br i1 %902, label %908, label %903

903:                                              ; preds = %894
  %904 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %12, i32 0, i32 0
  %905 = load i64, ptr %904, align 8, !tbaa !28
  %906 = load i64, ptr %25, align 8, !tbaa !11
  %907 = icmp ne i64 %905, %906
  br label %908

908:                                              ; preds = %903, %894
  %909 = phi i1 [ true, %894 ], [ %907, %903 ]
  %910 = zext i1 %909 to i8
  store i8 %910, ptr %7, align 1, !tbaa !5
  %911 = load i64, ptr %25, align 8, !tbaa !11
  %912 = icmp sge i64 %911, 1
  br i1 %912, label %913, label %930

913:                                              ; preds = %908
  %914 = load i8, ptr %7, align 1, !tbaa !5, !range !17, !noundef !18
  %915 = trunc i8 %914 to i1
  br i1 %915, label %927, label %916

916:                                              ; preds = %913
  %917 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %12, i32 0, i32 4
  %918 = load ptr, ptr %917, align 8, !tbaa !27
  %919 = getelementptr inbounds double, ptr %918, i64 0
  %920 = load double, ptr %919, align 8, !tbaa !13
  %921 = load double, ptr %30, align 8, !tbaa !13
  %922 = fsub double %920, %921
  %923 = load ptr, ptr %4, align 8, !tbaa !9
  %924 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %922, ptr noundef %923)
  %925 = load double, ptr %8, align 8, !tbaa !13
  %926 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %924, double noundef %925)
  br label %927

927:                                              ; preds = %916, %913
  %928 = phi i1 [ true, %913 ], [ %926, %916 ]
  %929 = zext i1 %928 to i8
  store i8 %929, ptr %7, align 1, !tbaa !5
  br label %930

930:                                              ; preds = %927, %908
  %931 = load i64, ptr %25, align 8, !tbaa !11
  %932 = icmp sge i64 %931, 2
  br i1 %932, label %933, label %950

933:                                              ; preds = %930
  %934 = load i8, ptr %7, align 1, !tbaa !5, !range !17, !noundef !18
  %935 = trunc i8 %934 to i1
  br i1 %935, label %947, label %936

936:                                              ; preds = %933
  %937 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %12, i32 0, i32 4
  %938 = load ptr, ptr %937, align 8, !tbaa !27
  %939 = getelementptr inbounds double, ptr %938, i64 1
  %940 = load double, ptr %939, align 8, !tbaa !13
  %941 = load double, ptr %31, align 8, !tbaa !13
  %942 = fsub double %940, %941
  %943 = load ptr, ptr %4, align 8, !tbaa !9
  %944 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %942, ptr noundef %943)
  %945 = load double, ptr %8, align 8, !tbaa !13
  %946 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %944, double noundef %945)
  br label %947

947:                                              ; preds = %936, %933
  %948 = phi i1 [ true, %933 ], [ %946, %936 ]
  %949 = zext i1 %948 to i8
  store i8 %949, ptr %7, align 1, !tbaa !5
  br label %950

950:                                              ; preds = %947, %930
  %951 = load i64, ptr %25, align 8, !tbaa !11
  %952 = icmp sge i64 %951, 3
  br i1 %952, label %953, label %970

953:                                              ; preds = %950
  %954 = load i8, ptr %7, align 1, !tbaa !5, !range !17, !noundef !18
  %955 = trunc i8 %954 to i1
  br i1 %955, label %967, label %956

956:                                              ; preds = %953
  %957 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %12, i32 0, i32 4
  %958 = load ptr, ptr %957, align 8, !tbaa !27
  %959 = getelementptr inbounds double, ptr %958, i64 2
  %960 = load double, ptr %959, align 8, !tbaa !13
  %961 = load double, ptr %32, align 8, !tbaa !13
  %962 = fsub double %960, %961
  %963 = load ptr, ptr %4, align 8, !tbaa !9
  %964 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %962, ptr noundef %963)
  %965 = load double, ptr %8, align 8, !tbaa !13
  %966 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %964, double noundef %965)
  br label %967

967:                                              ; preds = %956, %953
  %968 = phi i1 [ true, %953 ], [ %966, %956 ]
  %969 = zext i1 %968 to i8
  store i8 %969, ptr %7, align 1, !tbaa !5
  br label %970

970:                                              ; preds = %967, %950
  %971 = load i64, ptr %25, align 8, !tbaa !11
  %972 = icmp sge i64 %971, 4
  br i1 %972, label %973, label %990

973:                                              ; preds = %970
  %974 = load i8, ptr %7, align 1, !tbaa !5, !range !17, !noundef !18
  %975 = trunc i8 %974 to i1
  br i1 %975, label %987, label %976

976:                                              ; preds = %973
  %977 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %12, i32 0, i32 4
  %978 = load ptr, ptr %977, align 8, !tbaa !27
  %979 = getelementptr inbounds double, ptr %978, i64 3
  %980 = load double, ptr %979, align 8, !tbaa !13
  %981 = load double, ptr %33, align 8, !tbaa !13
  %982 = fsub double %980, %981
  %983 = load ptr, ptr %4, align 8, !tbaa !9
  %984 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %982, ptr noundef %983)
  %985 = load double, ptr %8, align 8, !tbaa !13
  %986 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %984, double noundef %985)
  br label %987

987:                                              ; preds = %976, %973
  %988 = phi i1 [ true, %973 ], [ %986, %976 ]
  %989 = zext i1 %988 to i8
  store i8 %989, ptr %7, align 1, !tbaa !5
  br label %990

990:                                              ; preds = %987, %970
  %991 = load i64, ptr %25, align 8, !tbaa !11
  %992 = icmp sge i64 %991, 5
  br i1 %992, label %993, label %1010

993:                                              ; preds = %990
  %994 = load i8, ptr %7, align 1, !tbaa !5, !range !17, !noundef !18
  %995 = trunc i8 %994 to i1
  br i1 %995, label %1007, label %996

996:                                              ; preds = %993
  %997 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %12, i32 0, i32 4
  %998 = load ptr, ptr %997, align 8, !tbaa !27
  %999 = getelementptr inbounds double, ptr %998, i64 4
  %1000 = load double, ptr %999, align 8, !tbaa !13
  %1001 = load double, ptr %34, align 8, !tbaa !13
  %1002 = fsub double %1000, %1001
  %1003 = load ptr, ptr %4, align 8, !tbaa !9
  %1004 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1002, ptr noundef %1003)
  %1005 = load double, ptr %8, align 8, !tbaa !13
  %1006 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1004, double noundef %1005)
  br label %1007

1007:                                             ; preds = %996, %993
  %1008 = phi i1 [ true, %993 ], [ %1006, %996 ]
  %1009 = zext i1 %1008 to i8
  store i8 %1009, ptr %7, align 1, !tbaa !5
  br label %1010

1010:                                             ; preds = %1007, %990
  %1011 = load i64, ptr %25, align 8, !tbaa !11
  %1012 = load double, ptr %36, align 8, !tbaa !13
  %1013 = load double, ptr %35, align 8, !tbaa !13
  %1014 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl17polynomialpow2barEPNS_9ae_vectorElddPNS_22barycentricinterpolantEPNS_8ae_stateE(ptr noundef %12, i64 noundef %1011, double noundef %1012, double noundef %1013, ptr noundef %40, ptr noundef %1014)
  %1015 = load double, ptr %36, align 8, !tbaa !13
  %1016 = load ptr, ptr %4, align 8, !tbaa !9
  %1017 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1016)
  %1018 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %1017, double -1.000000e+00)
  %1019 = load double, ptr %35, align 8, !tbaa !13
  %1020 = call double @llvm.fmuladd.f64(double %1018, double %1019, double %1015)
  store double %1020, ptr %29, align 8, !tbaa !13
  %1021 = load i8, ptr %7, align 1, !tbaa !5, !range !17, !noundef !18
  %1022 = trunc i8 %1021 to i1
  br i1 %1022, label %1035, label %1023

1023:                                             ; preds = %1010
  %1024 = load double, ptr %29, align 8, !tbaa !13
  %1025 = load ptr, ptr %4, align 8, !tbaa !9
  %1026 = call noundef double @_ZN11alglib_impl15barycentriccalcEPNS_22barycentricinterpolantEdPNS_8ae_stateE(ptr noundef %38, double noundef %1024, ptr noundef %1025)
  %1027 = load double, ptr %29, align 8, !tbaa !13
  %1028 = load ptr, ptr %4, align 8, !tbaa !9
  %1029 = call noundef double @_ZN11alglib_impl15barycentriccalcEPNS_22barycentricinterpolantEdPNS_8ae_stateE(ptr noundef %40, double noundef %1027, ptr noundef %1028)
  %1030 = fsub double %1026, %1029
  %1031 = load ptr, ptr %4, align 8, !tbaa !9
  %1032 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1030, ptr noundef %1031)
  %1033 = load double, ptr %8, align 8, !tbaa !13
  %1034 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1032, double noundef %1033)
  br label %1035

1035:                                             ; preds = %1023, %1010
  %1036 = phi i1 [ true, %1010 ], [ %1034, %1023 ]
  %1037 = zext i1 %1036 to i8
  store i8 %1037, ptr %7, align 1, !tbaa !5
  br label %1038

1038:                                             ; preds = %1035
  %1039 = load i64, ptr %25, align 8, !tbaa !11
  %1040 = add nsw i64 %1039, 1
  store i64 %1040, ptr %25, align 8, !tbaa !11
  br label %628, !llvm.loop !33

1041:                                             ; preds = %628
  br label %1042

1042:                                             ; preds = %1041
  %1043 = load i64, ptr %43, align 8, !tbaa !11
  %1044 = add nsw i64 %1043, 1
  store i64 %1044, ptr %43, align 8, !tbaa !11
  br label %623, !llvm.loop !34

1045:                                             ; preds = %623
  store i64 1, ptr %41, align 8, !tbaa !11
  br label %1046

1046:                                             ; preds = %1079, %1045
  %1047 = load i64, ptr %41, align 8, !tbaa !11
  %1048 = icmp sle i64 %1047, 20
  br i1 %1048, label %1049, label %1082

1049:                                             ; preds = %1046
  store double -1.000000e+299, ptr %21, align 8, !tbaa !13
  store double 1.000000e+299, ptr %22, align 8, !tbaa !13
  %1050 = load double, ptr %21, align 8, !tbaa !13
  %1051 = load double, ptr %22, align 8, !tbaa !13
  %1052 = load i64, ptr %41, align 8, !tbaa !11
  %1053 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20taskgenint1dequidistEddlPNS_9ae_vectorES1_PNS_8ae_stateE(double noundef %1050, double noundef %1051, i64 noundef %1052, ptr noundef %9, ptr noundef %10, ptr noundef %1053)
  %1054 = load i64, ptr %41, align 8, !tbaa !11
  %1055 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15polynomialbuildEPNS_9ae_vectorES1_lPNS_22barycentricinterpolantEPNS_8ae_stateE(ptr noundef %9, ptr noundef %10, i64 noundef %1054, ptr noundef %38, ptr noundef %1055)
  store i64 0, ptr %24, align 8, !tbaa !11
  br label %1056

1056:                                             ; preds = %1075, %1049
  %1057 = load i64, ptr %24, align 8, !tbaa !11
  %1058 = load i64, ptr %41, align 8, !tbaa !11
  %1059 = sub nsw i64 %1058, 1
  %1060 = icmp sle i64 %1057, %1059
  br i1 %1060, label %1061, label %1078

1061:                                             ; preds = %1056
  %1062 = load i8, ptr %7, align 1, !tbaa !5, !range !17, !noundef !18
  %1063 = trunc i8 %1062 to i1
  br i1 %1063, label %1072, label %1064

1064:                                             ; preds = %1061
  %1065 = getelementptr inbounds %"struct.alglib_impl::barycentricinterpolant", ptr %38, i32 0, i32 4
  %1066 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1065, i32 0, i32 4
  %1067 = load ptr, ptr %1066, align 8, !tbaa !27
  %1068 = load i64, ptr %24, align 8, !tbaa !11
  %1069 = getelementptr inbounds double, ptr %1067, i64 %1068
  %1070 = load double, ptr %1069, align 8, !tbaa !13
  %1071 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1070, double noundef 0.000000e+00)
  br label %1072

1072:                                             ; preds = %1064, %1061
  %1073 = phi i1 [ true, %1061 ], [ %1071, %1064 ]
  %1074 = zext i1 %1073 to i8
  store i8 %1074, ptr %7, align 1, !tbaa !5
  br label %1075

1075:                                             ; preds = %1072
  %1076 = load i64, ptr %24, align 8, !tbaa !11
  %1077 = add nsw i64 %1076, 1
  store i64 %1077, ptr %24, align 8, !tbaa !11
  br label %1056, !llvm.loop !35

1078:                                             ; preds = %1056
  br label %1079

1079:                                             ; preds = %1078
  %1080 = load i64, ptr %41, align 8, !tbaa !11
  %1081 = add nsw i64 %1080, 1
  store i64 %1081, ptr %41, align 8, !tbaa !11
  br label %1046, !llvm.loop !36

1082:                                             ; preds = %1046
  store i64 7, ptr %41, align 8, !tbaa !11
  store double 1.000000e-08, ptr %37, align 8, !tbaa !13
  %1083 = load i64, ptr %41, align 8, !tbaa !11
  %1084 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %9, i64 noundef %1083, ptr noundef %1084)
  %1085 = load i64, ptr %41, align 8, !tbaa !11
  %1086 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %16, i64 noundef %1085, ptr noundef %1086)
  %1087 = load i64, ptr %41, align 8, !tbaa !11
  %1088 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %10, i64 noundef %1087, ptr noundef %1088)
  %1089 = load ptr, ptr %4, align 8, !tbaa !9
  %1090 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1089)
  %1091 = fsub double %1090, 5.000000e-01
  %1092 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %9, i32 0, i32 4
  %1093 = load ptr, ptr %1092, align 8, !tbaa !27
  %1094 = getelementptr inbounds double, ptr %1093, i64 0
  store double %1091, ptr %1094, align 8, !tbaa !13
  %1095 = load ptr, ptr %4, align 8, !tbaa !9
  %1096 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1095)
  %1097 = fsub double %1096, 5.000000e-01
  %1098 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %10, i32 0, i32 4
  %1099 = load ptr, ptr %1098, align 8, !tbaa !27
  %1100 = getelementptr inbounds double, ptr %1099, i64 0
  store double %1097, ptr %1100, align 8, !tbaa !13
  store i64 1, ptr %24, align 8, !tbaa !11
  br label %1101

1101:                                             ; preds = %1128, %1082
  %1102 = load i64, ptr %24, align 8, !tbaa !11
  %1103 = load i64, ptr %41, align 8, !tbaa !11
  %1104 = sub nsw i64 %1103, 1
  %1105 = icmp sle i64 %1102, %1104
  br i1 %1105, label %1106, label %1131

1106:                                             ; preds = %1101
  %1107 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %9, i32 0, i32 4
  %1108 = load ptr, ptr %1107, align 8, !tbaa !27
  %1109 = load i64, ptr %24, align 8, !tbaa !11
  %1110 = sub nsw i64 %1109, 1
  %1111 = getelementptr inbounds double, ptr %1108, i64 %1110
  %1112 = load double, ptr %1111, align 8, !tbaa !13
  %1113 = load ptr, ptr %4, align 8, !tbaa !9
  %1114 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1113)
  %1115 = fadd double %1112, %1114
  %1116 = fadd double %1115, 1.000000e-01
  %1117 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %9, i32 0, i32 4
  %1118 = load ptr, ptr %1117, align 8, !tbaa !27
  %1119 = load i64, ptr %24, align 8, !tbaa !11
  %1120 = getelementptr inbounds double, ptr %1118, i64 %1119
  store double %1116, ptr %1120, align 8, !tbaa !13
  %1121 = load ptr, ptr %4, align 8, !tbaa !9
  %1122 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1121)
  %1123 = fsub double %1122, 5.000000e-01
  %1124 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %10, i32 0, i32 4
  %1125 = load ptr, ptr %1124, align 8, !tbaa !27
  %1126 = load i64, ptr %24, align 8, !tbaa !11
  %1127 = getelementptr inbounds double, ptr %1125, i64 %1126
  store double %1123, ptr %1127, align 8, !tbaa !13
  br label %1128

1128:                                             ; preds = %1106
  %1129 = load i64, ptr %24, align 8, !tbaa !11
  %1130 = add nsw i64 %1129, 1
  store i64 %1130, ptr %24, align 8, !tbaa !11
  br label %1101, !llvm.loop !37

1131:                                             ; preds = %1101
  %1132 = load i64, ptr %41, align 8, !tbaa !11
  %1133 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15polynomialbuildEPNS_9ae_vectorES1_lPNS_22barycentricinterpolantEPNS_8ae_stateE(ptr noundef %9, ptr noundef %10, i64 noundef %1132, ptr noundef %38, ptr noundef %1133)
  %1134 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl17polynomialbar2powEPNS_22barycentricinterpolantEddPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %38, double noundef 0.000000e+00, double noundef 1.000000e+00, ptr noundef %13, ptr noundef %1134)
  store double 1.000000e-10, ptr %35, align 8, !tbaa !13
  store i64 0, ptr %24, align 8, !tbaa !11
  br label %1135

1135:                                             ; preds = %1152, %1131
  %1136 = load i64, ptr %24, align 8, !tbaa !11
  %1137 = load i64, ptr %41, align 8, !tbaa !11
  %1138 = sub nsw i64 %1137, 1
  %1139 = icmp sle i64 %1136, %1138
  br i1 %1139, label %1140, label %1155

1140:                                             ; preds = %1135
  %1141 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %9, i32 0, i32 4
  %1142 = load ptr, ptr %1141, align 8, !tbaa !27
  %1143 = load i64, ptr %24, align 8, !tbaa !11
  %1144 = getelementptr inbounds double, ptr %1142, i64 %1143
  %1145 = load double, ptr %1144, align 8, !tbaa !13
  %1146 = load double, ptr %35, align 8, !tbaa !13
  %1147 = fmul double %1145, %1146
  %1148 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %1149 = load ptr, ptr %1148, align 8, !tbaa !27
  %1150 = load i64, ptr %24, align 8, !tbaa !11
  %1151 = getelementptr inbounds double, ptr %1149, i64 %1150
  store double %1147, ptr %1151, align 8, !tbaa !13
  br label %1152

1152:                                             ; preds = %1140
  %1153 = load i64, ptr %24, align 8, !tbaa !11
  %1154 = add nsw i64 %1153, 1
  store i64 %1154, ptr %24, align 8, !tbaa !11
  br label %1135, !llvm.loop !38

1155:                                             ; preds = %1135
  %1156 = load i64, ptr %41, align 8, !tbaa !11
  %1157 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15polynomialbuildEPNS_9ae_vectorES1_lPNS_22barycentricinterpolantEPNS_8ae_stateE(ptr noundef %16, ptr noundef %10, i64 noundef %1156, ptr noundef %38, ptr noundef %1157)
  %1158 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl17polynomialbar2powEPNS_22barycentricinterpolantEddPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %38, double noundef 0.000000e+00, double noundef 1.000000e+00, ptr noundef %14, ptr noundef %1158)
  store i64 0, ptr %24, align 8, !tbaa !11
  br label %1159

1159:                                             ; preds = %1186, %1155
  %1160 = load i64, ptr %24, align 8, !tbaa !11
  %1161 = load i64, ptr %41, align 8, !tbaa !11
  %1162 = sub nsw i64 %1161, 1
  %1163 = icmp sle i64 %1160, %1162
  br i1 %1163, label %1164, label %1189

1164:                                             ; preds = %1159
  %1165 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %13, i32 0, i32 4
  %1166 = load ptr, ptr %1165, align 8, !tbaa !27
  %1167 = load i64, ptr %24, align 8, !tbaa !11
  %1168 = getelementptr inbounds double, ptr %1166, i64 %1167
  %1169 = load double, ptr %1168, align 8, !tbaa !13
  %1170 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %1171 = load ptr, ptr %1170, align 8, !tbaa !27
  %1172 = load i64, ptr %24, align 8, !tbaa !11
  %1173 = getelementptr inbounds double, ptr %1171, i64 %1172
  %1174 = load double, ptr %1173, align 8, !tbaa !13
  %1175 = load double, ptr %35, align 8, !tbaa !13
  %1176 = load i64, ptr %24, align 8, !tbaa !11
  %1177 = sitofp i64 %1176 to double
  %1178 = load ptr, ptr %4, align 8, !tbaa !9
  %1179 = call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef %1175, double noundef %1177, ptr noundef %1178)
  %1180 = fneg double %1174
  %1181 = call double @llvm.fmuladd.f64(double %1180, double %1179, double %1169)
  %1182 = load ptr, ptr %4, align 8, !tbaa !9
  %1183 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1181, ptr noundef %1182)
  %1184 = load double, ptr %37, align 8, !tbaa !13
  %1185 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1183, double noundef %1184)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %7, i1 noundef zeroext %1185, ptr noundef @.str.8, i32 noundef 102464, ptr noundef @.str.641)
  br label %1186

1186:                                             ; preds = %1164
  %1187 = load i64, ptr %24, align 8, !tbaa !11
  %1188 = add nsw i64 %1187, 1
  store i64 %1188, ptr %24, align 8, !tbaa !11
  br label %1159, !llvm.loop !39

1189:                                             ; preds = %1159
  store double 1.000000e+10, ptr %35, align 8, !tbaa !13
  store i64 0, ptr %24, align 8, !tbaa !11
  br label %1190

1190:                                             ; preds = %1207, %1189
  %1191 = load i64, ptr %24, align 8, !tbaa !11
  %1192 = load i64, ptr %41, align 8, !tbaa !11
  %1193 = sub nsw i64 %1192, 1
  %1194 = icmp sle i64 %1191, %1193
  br i1 %1194, label %1195, label %1210

1195:                                             ; preds = %1190
  %1196 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %9, i32 0, i32 4
  %1197 = load ptr, ptr %1196, align 8, !tbaa !27
  %1198 = load i64, ptr %24, align 8, !tbaa !11
  %1199 = getelementptr inbounds double, ptr %1197, i64 %1198
  %1200 = load double, ptr %1199, align 8, !tbaa !13
  %1201 = load double, ptr %35, align 8, !tbaa !13
  %1202 = fmul double %1200, %1201
  %1203 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %1204 = load ptr, ptr %1203, align 8, !tbaa !27
  %1205 = load i64, ptr %24, align 8, !tbaa !11
  %1206 = getelementptr inbounds double, ptr %1204, i64 %1205
  store double %1202, ptr %1206, align 8, !tbaa !13
  br label %1207

1207:                                             ; preds = %1195
  %1208 = load i64, ptr %24, align 8, !tbaa !11
  %1209 = add nsw i64 %1208, 1
  store i64 %1209, ptr %24, align 8, !tbaa !11
  br label %1190, !llvm.loop !40

1210:                                             ; preds = %1190
  %1211 = load i64, ptr %41, align 8, !tbaa !11
  %1212 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15polynomialbuildEPNS_9ae_vectorES1_lPNS_22barycentricinterpolantEPNS_8ae_stateE(ptr noundef %16, ptr noundef %10, i64 noundef %1211, ptr noundef %38, ptr noundef %1212)
  %1213 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl17polynomialbar2powEPNS_22barycentricinterpolantEddPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %38, double noundef 0.000000e+00, double noundef 1.000000e+00, ptr noundef %15, ptr noundef %1213)
  store i64 0, ptr %24, align 8, !tbaa !11
  br label %1214

1214:                                             ; preds = %1241, %1210
  %1215 = load i64, ptr %24, align 8, !tbaa !11
  %1216 = load i64, ptr %41, align 8, !tbaa !11
  %1217 = sub nsw i64 %1216, 1
  %1218 = icmp sle i64 %1215, %1217
  br i1 %1218, label %1219, label %1244

1219:                                             ; preds = %1214
  %1220 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %13, i32 0, i32 4
  %1221 = load ptr, ptr %1220, align 8, !tbaa !27
  %1222 = load i64, ptr %24, align 8, !tbaa !11
  %1223 = getelementptr inbounds double, ptr %1221, i64 %1222
  %1224 = load double, ptr %1223, align 8, !tbaa !13
  %1225 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %1226 = load ptr, ptr %1225, align 8, !tbaa !27
  %1227 = load i64, ptr %24, align 8, !tbaa !11
  %1228 = getelementptr inbounds double, ptr %1226, i64 %1227
  %1229 = load double, ptr %1228, align 8, !tbaa !13
  %1230 = load double, ptr %35, align 8, !tbaa !13
  %1231 = load i64, ptr %24, align 8, !tbaa !11
  %1232 = sitofp i64 %1231 to double
  %1233 = load ptr, ptr %4, align 8, !tbaa !9
  %1234 = call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef %1230, double noundef %1232, ptr noundef %1233)
  %1235 = fneg double %1229
  %1236 = call double @llvm.fmuladd.f64(double %1235, double %1234, double %1224)
  %1237 = load ptr, ptr %4, align 8, !tbaa !9
  %1238 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1236, ptr noundef %1237)
  %1239 = load double, ptr %37, align 8, !tbaa !13
  %1240 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1238, double noundef %1239)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %7, i1 noundef zeroext %1240, ptr noundef @.str.8, i32 noundef 102475, ptr noundef @.str.642)
  br label %1241

1241:                                             ; preds = %1219
  %1242 = load i64, ptr %24, align 8, !tbaa !11
  %1243 = add nsw i64 %1242, 1
  store i64 %1243, ptr %24, align 8, !tbaa !11
  br label %1214, !llvm.loop !41

1244:                                             ; preds = %1214
  %1245 = load i8, ptr %7, align 1, !tbaa !5, !range !17, !noundef !18
  %1246 = trunc i8 %1245 to i1
  %1247 = zext i1 %1246 to i8
  store i8 %1247, ptr %6, align 1, !tbaa !5
  %1248 = load i8, ptr %3, align 1, !tbaa !5, !range !17, !noundef !18
  %1249 = trunc i8 %1248 to i1
  br i1 %1249, label %1268, label %1250

1250:                                             ; preds = %1244
  %1251 = call i32 (ptr, ...) @printf(ptr noundef @.str.643)
  %1252 = call i32 (ptr, ...) @printf(ptr noundef @.str.644)
  %1253 = load i8, ptr %7, align 1, !tbaa !5, !range !17, !noundef !18
  %1254 = trunc i8 %1253 to i1
  br i1 %1254, label %1255, label %1257

1255:                                             ; preds = %1250
  %1256 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1259

1257:                                             ; preds = %1250
  %1258 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1259

1259:                                             ; preds = %1257, %1255
  %1260 = load i8, ptr %6, align 1, !tbaa !5, !range !17, !noundef !18
  %1261 = trunc i8 %1260 to i1
  br i1 %1261, label %1262, label %1264

1262:                                             ; preds = %1259
  %1263 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %1266

1264:                                             ; preds = %1259
  %1265 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1266

1266:                                             ; preds = %1264, %1262
  %1267 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1268

1268:                                             ; preds = %1266, %1244
  %1269 = load i8, ptr %6, align 1, !tbaa !5, !range !17, !noundef !18
  %1270 = trunc i8 %1269 to i1
  %1271 = xor i1 %1270, true
  %1272 = zext i1 %1271 to i8
  store i8 %1272, ptr %45, align 1, !tbaa !5
  %1273 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1273)
  %1274 = load i8, ptr %45, align 1, !tbaa !5, !range !17, !noundef !18
  %1275 = trunc i8 %1274 to i1
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 208, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 208, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 208, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #5
  ret i1 %1275
}

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN11alglib_impl18polynomialbar2chebEPNS_22barycentricinterpolantEddPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef, double noundef, double noundef, ptr noundef, ptr noundef) #1

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

declare void @_ZN11alglib_impl17polynomialbar2powEPNS_22barycentricinterpolantEddPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef, double noundef, double noundef, ptr noundef, ptr noundef) #1

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"bool", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"double", !7, i64 0}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = !{i8 0, i8 2}
!18 = !{}
!19 = distinct !{!19, !16}
!20 = distinct !{!20, !16}
!21 = distinct !{!21, !16}
!22 = distinct !{!22, !16}
!23 = distinct !{!23, !16}
!24 = distinct !{!24, !16}
!25 = distinct !{!25, !16}
!26 = distinct !{!26, !16}
!27 = !{!7, !7, i64 0}
!28 = !{!29, !12, i64 0}
!29 = !{!"_ZTSN11alglib_impl9ae_vectorE", !12, i64 0, !12, i64 8, !6, i64 16, !30, i64 24, !7, i64 56}
!30 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24}
!31 = distinct !{!31, !16}
!32 = distinct !{!32, !16}
!33 = distinct !{!33, !16}
!34 = distinct !{!34, !16}
!35 = distinct !{!35, !16}
!36 = distinct !{!36, !16}
!37 = distinct !{!37, !16}
!38 = distinct !{!38, !16}
!39 = distinct !{!39, !16}
!40 = distinct !{!40, !16}
!41 = distinct !{!41, !16}


; 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_vector" = type { i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon }
%union.anon = type { ptr }
%"struct.alglib_impl::barycentricinterpolant" = type { i64, double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }

@.str.1 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.641 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.642 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.643 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.644 = 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

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

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

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

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

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

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

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) local_unnamed_addr #1

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z10testpolintbPN11alglib_impl8ae_stateE(i1 noundef zeroext %0, ptr noundef %1) local_unnamed_addr #5 {
  %3 = alloca %"struct.alglib_impl::ae_frame", align 8
  %4 = alloca i8, align 1
  %5 = alloca %"struct.alglib_impl::ae_vector", align 8
  %6 = alloca %"struct.alglib_impl::ae_vector", align 8
  %7 = alloca %"struct.alglib_impl::ae_vector", align 8
  %8 = alloca %"struct.alglib_impl::ae_vector", align 8
  %9 = alloca %"struct.alglib_impl::ae_vector", align 8
  %10 = alloca %"struct.alglib_impl::ae_vector", align 8
  %11 = alloca %"struct.alglib_impl::ae_vector", align 8
  %12 = alloca %"struct.alglib_impl::ae_vector", align 8
  %13 = alloca %"struct.alglib_impl::ae_vector", align 8
  %14 = alloca %"struct.alglib_impl::ae_vector", align 8
  %15 = alloca %"struct.alglib_impl::ae_vector", align 8
  %16 = alloca %"struct.alglib_impl::ae_vector", align 8
  %17 = alloca %"struct.alglib_impl::ae_vector", 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::barycentricinterpolant", align 8
  %21 = alloca %"struct.alglib_impl::barycentricinterpolant", align 8
  %22 = alloca %"struct.alglib_impl::barycentricinterpolant", align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %5) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %6) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %7) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %8) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %9) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %10) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %11) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %12) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %13) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %14) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %15) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %16) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %17) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %19) #7
  call void @llvm.lifetime.start.p0(i64 208, ptr nonnull %20) #7
  call void @llvm.lifetime.start.p0(i64 208, ptr nonnull %21) #7
  call void @llvm.lifetime.start.p0(i64 208, ptr nonnull %22) #7
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %1, ptr noundef nonnull %3)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %5, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %6, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %7, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %8, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %9, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %10, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %11, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %12, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %13, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %14, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %15, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %16, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %17, i8 0, i64 64, 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(208) %20, i8 0, i64 208, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(208) %21, i8 0, i64 208, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(208) %22, i8 0, i64 208, i1 false)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %5, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %6, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %7, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %8, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %9, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %10, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %11, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %12, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %13, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %14, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %15, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %16, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %17, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %18, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %19, i64 noundef 0, i64 noundef 2, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl28_barycentricinterpolant_initEPvPNS_8ae_stateEb(ptr noundef nonnull %20, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl28_barycentricinterpolant_initEPvPNS_8ae_stateEb(ptr noundef nonnull %21, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl28_barycentricinterpolant_initEPvPNS_8ae_stateEb(ptr noundef nonnull %22, ptr noundef %1, i1 noundef zeroext true)
  store i8 0, ptr %4, align 1, !tbaa !5
  br label %.preheader489

.preheader489:                                    ; preds = %2, %63
  %23 = phi i1 [ false, %2 ], [ %60, %63 ]
  %.0496 = phi i64 [ 1, %2 ], [ %64, %63 ]
  br label %.preheader488

.preheader488:                                    ; preds = %.preheader489, %59
  %24 = phi i1 [ %23, %.preheader489 ], [ %60, %59 ]
  %.0456495 = phi i64 [ 1, %.preheader489 ], [ %62, %59 ]
  br label %25

25:                                               ; preds = %.preheader488, %25
  %26 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %27 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %28 = insertelement <2 x double> poison, double %26, i64 0
  %29 = insertelement <2 x double> %28, double %27, i64 1
  %30 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %29, <2 x double> <double 2.000000e+00, double 2.000000e+00>, <2 x double> <double -1.000000e+00, double -1.000000e+00>)
  %31 = extractelement <2 x double> %30, i64 0
  %32 = extractelement <2 x double> %30, i64 1
  %33 = fsub double %31, %32
  %34 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %33, ptr noundef %1)
  %35 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %34, double noundef 2.000000e-01)
  br i1 %35, label %25, label %36, !llvm.loop !9

36:                                               ; preds = %25
  %37 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %38 = call double @llvm.fmuladd.f64(double %37, double 1.200000e+00, double -1.000000e-01)
  %39 = fsub double %32, %31
  %40 = call double @llvm.fmuladd.f64(double %38, double %39, double %31)
  call void @_ZN11alglib_impl20taskgenint1dequidistEddlPNS_9ae_vectorES1_PNS_8ae_stateE(double noundef %31, double noundef %32, i64 noundef %.0456495, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef %1)
  br i1 %24, label %.critedge, label %41

41:                                               ; preds = %36
  %42 = call noundef double @_ZN11alglib_impl20polynomialcalceqdistEddPNS_9ae_vectorEldPNS_8ae_stateE(double noundef %31, double noundef %32, ptr noundef nonnull %6, i64 noundef %.0456495, double noundef %40, ptr noundef %1)
  %43 = call noundef double @_ZL29testpolintunit_internalpolintPN11alglib_impl9ae_vectorES1_ldPNS_8ae_stateE(ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %.0456495, double noundef %40, ptr noundef %1)
  %44 = fsub double %42, %43
  %45 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %44, ptr noundef %1)
  %46 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %45, double noundef 0x3E6AD7F29ABCAF49)
  call void @_ZL23testpolintunit_brcunsetPN11alglib_impl22barycentricinterpolantEPNS_8ae_stateE(ptr noundef nonnull %20, ptr noundef %1)
  call void @_ZN11alglib_impl15polynomialbuildEPNS_9ae_vectorES1_lPNS_22barycentricinterpolantEPNS_8ae_stateE(ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %.0456495, ptr noundef nonnull %20, ptr noundef %1)
  br i1 %46, label %.critedge548, label %47

47:                                               ; preds = %41
  %48 = call noundef double @_ZN11alglib_impl15barycentriccalcEPNS_22barycentricinterpolantEdPNS_8ae_stateE(ptr noundef nonnull %20, double noundef %40, ptr noundef %1)
  %49 = call noundef double @_ZL29testpolintunit_internalpolintPN11alglib_impl9ae_vectorES1_ldPNS_8ae_stateE(ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %.0456495, double noundef %40, ptr noundef %1)
  %50 = fsub double %48, %49
  %51 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %50, ptr noundef %1)
  %52 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %51, double noundef 0x3E6AD7F29ABCAF49)
  call void @_ZL23testpolintunit_brcunsetPN11alglib_impl22barycentricinterpolantEPNS_8ae_stateE(ptr noundef nonnull %20, ptr noundef %1)
  call void @_ZN11alglib_impl21polynomialbuildeqdistEddPNS_9ae_vectorElPNS_22barycentricinterpolantEPNS_8ae_stateE(double noundef %31, double noundef %32, ptr noundef nonnull %6, i64 noundef %.0456495, ptr noundef nonnull %20, ptr noundef %1)
  br i1 %52, label %59, label %53

.critedge:                                        ; preds = %36
  call void @_ZL23testpolintunit_brcunsetPN11alglib_impl22barycentricinterpolantEPNS_8ae_stateE(ptr noundef nonnull %20, ptr noundef %1)
  call void @_ZN11alglib_impl15polynomialbuildEPNS_9ae_vectorES1_lPNS_22barycentricinterpolantEPNS_8ae_stateE(ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %.0456495, ptr noundef nonnull %20, ptr noundef %1)
  br label %.critedge548

53:                                               ; preds = %47
  %54 = call noundef double @_ZN11alglib_impl15barycentriccalcEPNS_22barycentricinterpolantEdPNS_8ae_stateE(ptr noundef nonnull %20, double noundef %40, ptr noundef %1)
  %55 = call noundef double @_ZL29testpolintunit_internalpolintPN11alglib_impl9ae_vectorES1_ldPNS_8ae_stateE(ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %.0456495, double noundef %40, ptr noundef %1)
  %56 = fsub double %54, %55
  %57 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %56, ptr noundef %1)
  %58 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %57, double noundef 0x3E6AD7F29ABCAF49)
  br label %59

.critedge548:                                     ; preds = %.critedge, %41
  call void @_ZL23testpolintunit_brcunsetPN11alglib_impl22barycentricinterpolantEPNS_8ae_stateE(ptr noundef nonnull %20, ptr noundef %1)
  call void @_ZN11alglib_impl21polynomialbuildeqdistEddPNS_9ae_vectorElPNS_22barycentricinterpolantEPNS_8ae_stateE(double noundef %31, double noundef %32, ptr noundef nonnull %6, i64 noundef %.0456495, ptr noundef nonnull %20, ptr noundef %1)
  br label %59

59:                                               ; preds = %.critedge548, %53, %47
  %60 = phi i1 [ true, %47 ], [ %58, %53 ], [ true, %.critedge548 ]
  %61 = zext i1 %60 to i8
  store i8 %61, ptr %4, align 1, !tbaa !5
  %62 = add nuw nsw i64 %.0456495, 1
  %exitcond.not = icmp eq i64 %62, 6
  br i1 %exitcond.not, label %63, label %.preheader488, !llvm.loop !11

63:                                               ; preds = %59
  %64 = add nuw nsw i64 %.0496, 1
  %exitcond517.not = icmp eq i64 %64, 21
  br i1 %exitcond517.not, label %.preheader486, label %.preheader489, !llvm.loop !12

.preheader486:                                    ; preds = %63, %105
  %65 = phi i1 [ %102, %105 ], [ %60, %63 ]
  %.1498 = phi i64 [ %106, %105 ], [ 1, %63 ]
  br label %.preheader485

.preheader485:                                    ; preds = %.preheader486, %101
  %66 = phi i1 [ %65, %.preheader486 ], [ %102, %101 ]
  %.1457497 = phi i64 [ 1, %.preheader486 ], [ %104, %101 ]
  br label %67

67:                                               ; preds = %.preheader485, %67
  %68 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %69 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %70 = insertelement <2 x double> poison, double %68, i64 0
  %71 = insertelement <2 x double> %70, double %69, i64 1
  %72 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %71, <2 x double> <double 2.000000e+00, double 2.000000e+00>, <2 x double> <double -1.000000e+00, double -1.000000e+00>)
  %73 = extractelement <2 x double> %72, i64 0
  %74 = extractelement <2 x double> %72, i64 1
  %75 = fsub double %73, %74
  %76 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %75, ptr noundef %1)
  %77 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %76, double noundef 2.000000e-01)
  br i1 %77, label %67, label %78, !llvm.loop !13

78:                                               ; preds = %67
  %79 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %80 = call double @llvm.fmuladd.f64(double %79, double 1.200000e+00, double -1.000000e-01)
  %81 = fsub double %74, %73
  %82 = call double @llvm.fmuladd.f64(double %80, double %81, double %73)
  call void @_ZN11alglib_impl17taskgenint1dcheb1EddlPNS_9ae_vectorES1_PNS_8ae_stateE(double noundef %73, double noundef %74, i64 noundef %.1457497, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef %1)
  br i1 %66, label %.critedge550, label %83

83:                                               ; preds = %78
  %84 = call noundef double @_ZN11alglib_impl19polynomialcalccheb1EddPNS_9ae_vectorEldPNS_8ae_stateE(double noundef %73, double noundef %74, ptr noundef nonnull %6, i64 noundef %.1457497, double noundef %82, ptr noundef %1)
  %85 = call noundef double @_ZL29testpolintunit_internalpolintPN11alglib_impl9ae_vectorES1_ldPNS_8ae_stateE(ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %.1457497, double noundef %82, ptr noundef %1)
  %86 = fsub double %84, %85
  %87 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %86, ptr noundef %1)
  %88 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %87, double noundef 0x3E6AD7F29ABCAF49)
  call void @_ZL23testpolintunit_brcunsetPN11alglib_impl22barycentricinterpolantEPNS_8ae_stateE(ptr noundef nonnull %20, ptr noundef %1)
  call void @_ZN11alglib_impl15polynomialbuildEPNS_9ae_vectorES1_lPNS_22barycentricinterpolantEPNS_8ae_stateE(ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %.1457497, ptr noundef nonnull %20, ptr noundef %1)
  br i1 %88, label %.critedge552, label %89

89:                                               ; preds = %83
  %90 = call noundef double @_ZN11alglib_impl15barycentriccalcEPNS_22barycentricinterpolantEdPNS_8ae_stateE(ptr noundef nonnull %20, double noundef %82, ptr noundef %1)
  %91 = call noundef double @_ZL29testpolintunit_internalpolintPN11alglib_impl9ae_vectorES1_ldPNS_8ae_stateE(ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %.1457497, double noundef %82, ptr noundef %1)
  %92 = fsub double %90, %91
  %93 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %92, ptr noundef %1)
  %94 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %93, double noundef 0x3E6AD7F29ABCAF49)
  call void @_ZL23testpolintunit_brcunsetPN11alglib_impl22barycentricinterpolantEPNS_8ae_stateE(ptr noundef nonnull %20, ptr noundef %1)
  call void @_ZN11alglib_impl20polynomialbuildcheb1EddPNS_9ae_vectorElPNS_22barycentricinterpolantEPNS_8ae_stateE(double noundef %73, double noundef %74, ptr noundef nonnull %6, i64 noundef %.1457497, ptr noundef nonnull %20, ptr noundef %1)
  br i1 %94, label %101, label %95

.critedge550:                                     ; preds = %78
  call void @_ZL23testpolintunit_brcunsetPN11alglib_impl22barycentricinterpolantEPNS_8ae_stateE(ptr noundef nonnull %20, ptr noundef %1)
  call void @_ZN11alglib_impl15polynomialbuildEPNS_9ae_vectorES1_lPNS_22barycentricinterpolantEPNS_8ae_stateE(ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %.1457497, ptr noundef nonnull %20, ptr noundef %1)
  br label %.critedge552

95:                                               ; preds = %89
  %96 = call noundef double @_ZN11alglib_impl15barycentriccalcEPNS_22barycentricinterpolantEdPNS_8ae_stateE(ptr noundef nonnull %20, double noundef %82, ptr noundef %1)
  %97 = call noundef double @_ZL29testpolintunit_internalpolintPN11alglib_impl9ae_vectorES1_ldPNS_8ae_stateE(ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %.1457497, double noundef %82, ptr noundef %1)
  %98 = fsub double %96, %97
  %99 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %98, ptr noundef %1)
  %100 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %99, double noundef 0x3E6AD7F29ABCAF49)
  br label %101

.critedge552:                                     ; preds = %.critedge550, %83
  call void @_ZL23testpolintunit_brcunsetPN11alglib_impl22barycentricinterpolantEPNS_8ae_stateE(ptr noundef nonnull %20, ptr noundef %1)
  call void @_ZN11alglib_impl20polynomialbuildcheb1EddPNS_9ae_vectorElPNS_22barycentricinterpolantEPNS_8ae_stateE(double noundef %73, double noundef %74, ptr noundef nonnull %6, i64 noundef %.1457497, ptr noundef nonnull %20, ptr noundef %1)
  br label %101

101:                                              ; preds = %.critedge552, %95, %89
  %102 = phi i1 [ true, %89 ], [ %100, %95 ], [ true, %.critedge552 ]
  %103 = zext i1 %102 to i8
  store i8 %103, ptr %4, align 1, !tbaa !5
  %104 = add nuw nsw i64 %.1457497, 1
  %exitcond518.not = icmp eq i64 %104, 6
  br i1 %exitcond518.not, label %105, label %.preheader485, !llvm.loop !14

105:                                              ; preds = %101
  %106 = add nuw nsw i64 %.1498, 1
  %exitcond519.not = icmp eq i64 %106, 21
  br i1 %exitcond519.not, label %.preheader483, label %.preheader486, !llvm.loop !15

.preheader483:                                    ; preds = %105, %150
  %107 = phi i1 [ %147, %150 ], [ %102, %105 ]
  %.2500 = phi i64 [ %151, %150 ], [ 1, %105 ]
  br label %.preheader482

.preheader481:                                    ; preds = %150
  %108 = getelementptr inbounds i8, ptr %5, i64 56
  %109 = getelementptr inbounds i8, ptr %6, i64 56
  %110 = getelementptr inbounds i8, ptr %8, i64 56
  br label %.preheader480

.preheader482:                                    ; preds = %.preheader483, %146
  %111 = phi i1 [ %107, %.preheader483 ], [ %147, %146 ]
  %.2458499 = phi i64 [ 1, %.preheader483 ], [ %149, %146 ]
  br label %112

112:                                              ; preds = %.preheader482, %112
  %113 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %114 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %115 = insertelement <2 x double> poison, double %113, i64 0
  %116 = insertelement <2 x double> %115, double %114, i64 1
  %117 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %116, <2 x double> <double 2.000000e+00, double 2.000000e+00>, <2 x double> <double -1.000000e+00, double -1.000000e+00>)
  %118 = extractelement <2 x double> %117, i64 0
  %119 = extractelement <2 x double> %117, i64 1
  %120 = fsub double %118, %119
  %121 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %120, ptr noundef %1)
  %122 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %121, double noundef 2.000000e-01)
  br i1 %122, label %112, label %123, !llvm.loop !16

123:                                              ; preds = %112
  %124 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %125 = call double @llvm.fmuladd.f64(double %124, double 1.200000e+00, double -1.000000e-01)
  %126 = fsub double %119, %118
  %127 = call double @llvm.fmuladd.f64(double %125, double %126, double %118)
  call void @_ZN11alglib_impl17taskgenint1dcheb2EddlPNS_9ae_vectorES1_PNS_8ae_stateE(double noundef %118, double noundef %119, i64 noundef %.2458499, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef %1)
  br i1 %111, label %.critedge554, label %128

128:                                              ; preds = %123
  %129 = call noundef double @_ZN11alglib_impl19polynomialcalccheb2EddPNS_9ae_vectorEldPNS_8ae_stateE(double noundef %118, double noundef %119, ptr noundef nonnull %6, i64 noundef %.2458499, double noundef %127, ptr noundef %1)
  %130 = call noundef double @_ZL29testpolintunit_internalpolintPN11alglib_impl9ae_vectorES1_ldPNS_8ae_stateE(ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %.2458499, double noundef %127, ptr noundef %1)
  %131 = fsub double %129, %130
  %132 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %131, ptr noundef %1)
  %133 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %132, double noundef 0x3E6AD7F29ABCAF49)
  call void @_ZL23testpolintunit_brcunsetPN11alglib_impl22barycentricinterpolantEPNS_8ae_stateE(ptr noundef nonnull %20, ptr noundef %1)
  call void @_ZN11alglib_impl15polynomialbuildEPNS_9ae_vectorES1_lPNS_22barycentricinterpolantEPNS_8ae_stateE(ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %.2458499, ptr noundef nonnull %20, ptr noundef %1)
  br i1 %133, label %.critedge556, label %134

134:                                              ; preds = %128
  %135 = call noundef double @_ZN11alglib_impl15barycentriccalcEPNS_22barycentricinterpolantEdPNS_8ae_stateE(ptr noundef nonnull %20, double noundef %127, ptr noundef %1)
  %136 = call noundef double @_ZL29testpolintunit_internalpolintPN11alglib_impl9ae_vectorES1_ldPNS_8ae_stateE(ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %.2458499, double noundef %127, ptr noundef %1)
  %137 = fsub double %135, %136
  %138 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %137, ptr noundef %1)
  %139 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %138, double noundef 0x3E6AD7F29ABCAF49)
  call void @_ZL23testpolintunit_brcunsetPN11alglib_impl22barycentricinterpolantEPNS_8ae_stateE(ptr noundef nonnull %20, ptr noundef %1)
  call void @_ZN11alglib_impl20polynomialbuildcheb2EddPNS_9ae_vectorElPNS_22barycentricinterpolantEPNS_8ae_stateE(double noundef %118, double noundef %119, ptr noundef nonnull %6, i64 noundef %.2458499, ptr noundef nonnull %20, ptr noundef %1)
  br i1 %139, label %146, label %140

.critedge554:                                     ; preds = %123
  call void @_ZL23testpolintunit_brcunsetPN11alglib_impl22barycentricinterpolantEPNS_8ae_stateE(ptr noundef nonnull %20, ptr noundef %1)
  call void @_ZN11alglib_impl15polynomialbuildEPNS_9ae_vectorES1_lPNS_22barycentricinterpolantEPNS_8ae_stateE(ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %.2458499, ptr noundef nonnull %20, ptr noundef %1)
  br label %.critedge556

140:                                              ; preds = %134
  %141 = call noundef double @_ZN11alglib_impl15barycentriccalcEPNS_22barycentricinterpolantEdPNS_8ae_stateE(ptr noundef nonnull %20, double noundef %127, ptr noundef %1)
  %142 = call noundef double @_ZL29testpolintunit_internalpolintPN11alglib_impl9ae_vectorES1_ldPNS_8ae_stateE(ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %.2458499, double noundef %127, ptr noundef %1)
  %143 = fsub double %141, %142
  %144 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %143, ptr noundef %1)
  %145 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %144, double noundef 0x3E6AD7F29ABCAF49)
  br label %146

.critedge556:                                     ; preds = %.critedge554, %128
  call void @_ZL23testpolintunit_brcunsetPN11alglib_impl22barycentricinterpolantEPNS_8ae_stateE(ptr noundef nonnull %20, ptr noundef %1)
  call void @_ZN11alglib_impl20polynomialbuildcheb2EddPNS_9ae_vectorElPNS_22barycentricinterpolantEPNS_8ae_stateE(double noundef %118, double noundef %119, ptr noundef nonnull %6, i64 noundef %.2458499, ptr noundef nonnull %20, ptr noundef %1)
  br label %146

146:                                              ; preds = %.critedge556, %140, %134
  %147 = phi i1 [ true, %134 ], [ %145, %140 ], [ true, %.critedge556 ]
  %148 = zext i1 %147 to i8
  store i8 %148, ptr %4, align 1, !tbaa !5
  %149 = add nuw nsw i64 %.2458499, 1
  %exitcond520.not = icmp eq i64 %149, 6
  br i1 %exitcond520.not, label %150, label %.preheader482, !llvm.loop !17

150:                                              ; preds = %146
  %151 = add nuw nsw i64 %.2500, 1
  %exitcond521.not = icmp eq i64 %151, 21
  br i1 %exitcond521.not, label %.preheader481, label %.preheader483, !llvm.loop !18

.preheader480:                                    ; preds = %.preheader481, %245
  %152 = phi i1 [ %147, %.preheader481 ], [ %242, %245 ]
  %.3502 = phi i64 [ 1, %.preheader481 ], [ %246, %245 ]
  br label %153

153:                                              ; preds = %.preheader480, %241
  %154 = phi i1 [ %152, %.preheader480 ], [ %242, %241 ]
  %.0465501 = phi i64 [ 1, %.preheader480 ], [ %244, %241 ]
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %5, i64 noundef %.0465501, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %6, i64 noundef %.0465501, ptr noundef %1)
  %155 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %156 = call double @llvm.fmuladd.f64(double %155, double 2.000000e+00, double -1.000000e+00)
  %157 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %158 = fadd double %157, 1.000000e-01
  %159 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 2, ptr noundef %1)
  %160 = shl nsw i64 %159, 1
  %161 = add nsw i64 %160, -1
  %162 = sitofp i64 %161 to double
  %163 = call double @llvm.fmuladd.f64(double %158, double %162, double %156)
  %164 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %165 = call double @llvm.fmuladd.f64(double %164, double 2.000000e+00, double -1.000000e+00)
  %166 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %167 = call double @llvm.fmuladd.f64(double %166, double 2.000000e+00, double -1.000000e+00)
  %168 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %169 = call double @llvm.fmuladd.f64(double %168, double 2.000000e+00, double -1.000000e+00)
  switch i64 %.0465501, label %202 [
    i64 1, label %170
    i64 2, label %175
    i64 3, label %184
  ]

170:                                              ; preds = %153
  %171 = fadd double %156, %163
  %172 = fmul double %171, 5.000000e-01
  %173 = load ptr, ptr %108, align 8, !tbaa !19
  store double %172, ptr %173, align 8, !tbaa !20
  %174 = load ptr, ptr %109, align 8, !tbaa !19
  store double %165, ptr %174, align 8, !tbaa !20
  br label %202

175:                                              ; preds = %153
  %176 = load ptr, ptr %108, align 8, !tbaa !19
  store double %156, ptr %176, align 8, !tbaa !20
  %177 = fsub double %165, %167
  %178 = load ptr, ptr %109, align 8, !tbaa !19
  store double %177, ptr %178, align 8, !tbaa !20
  %179 = load ptr, ptr %108, align 8, !tbaa !19
  %180 = getelementptr inbounds i8, ptr %179, i64 8
  store double %163, ptr %180, align 8, !tbaa !20
  %181 = fadd double %165, %167
  %182 = load ptr, ptr %109, align 8, !tbaa !19
  %183 = getelementptr inbounds i8, ptr %182, i64 8
  store double %181, ptr %183, align 8, !tbaa !20
  br label %202

184:                                              ; preds = %153
  %185 = load ptr, ptr %108, align 8, !tbaa !19
  store double %156, ptr %185, align 8, !tbaa !20
  %186 = fsub double %165, %167
  %187 = fadd double %186, %169
  %188 = load ptr, ptr %109, align 8, !tbaa !19
  store double %187, ptr %188, align 8, !tbaa !20
  %189 = fadd double %156, %163
  %190 = fmul double %189, 5.000000e-01
  %191 = load ptr, ptr %108, align 8, !tbaa !19
  %192 = getelementptr inbounds i8, ptr %191, i64 8
  store double %190, ptr %192, align 8, !tbaa !20
  %193 = fsub double %165, %169
  %194 = load ptr, ptr %109, align 8, !tbaa !19
  %195 = getelementptr inbounds i8, ptr %194, i64 8
  store double %193, ptr %195, align 8, !tbaa !20
  %196 = load ptr, ptr %108, align 8, !tbaa !19
  %197 = getelementptr inbounds i8, ptr %196, i64 16
  store double %163, ptr %197, align 8, !tbaa !20
  %198 = fadd double %165, %167
  %199 = fadd double %198, %169
  %200 = load ptr, ptr %109, align 8, !tbaa !19
  %201 = getelementptr inbounds i8, ptr %200, i64 16
  store double %199, ptr %201, align 8, !tbaa !20
  br label %202

202:                                              ; preds = %175, %170, %153, %184
  call void @_ZN11alglib_impl15polynomialbuildEPNS_9ae_vectorES1_lPNS_22barycentricinterpolantEPNS_8ae_stateE(ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %.0465501, ptr noundef nonnull %20, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef 1, ptr noundef %1)
  call void @_ZN11alglib_impl18polynomialbar2chebEPNS_22barycentricinterpolantEddPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %20, double noundef %156, double noundef %163, ptr noundef nonnull %8, ptr noundef %1)
  %203 = load i64, ptr %8, align 8
  %204 = icmp ne i64 %203, %.0465501
  %205 = select i1 %154, i1 true, i1 %204
  br i1 %205, label %.thread, label %206

206:                                              ; preds = %202
  %207 = load ptr, ptr %110, align 8, !tbaa !19
  %208 = load double, ptr %207, align 8, !tbaa !20
  %209 = fsub double %208, %165
  %210 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %209, ptr noundef %1)
  %211 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %210, double noundef 0x3E6AD7F29ABCAF49)
  %212 = icmp ugt i64 %.0465501, 1
  br i1 %212, label %214, label %.thread468

.thread:                                          ; preds = %202
  %213 = icmp ugt i64 %.0465501, 1
  br i1 %213, label %.thread467, label %.thread468

214:                                              ; preds = %206
  br i1 %211, label %.thread467, label %215

215:                                              ; preds = %214
  %216 = load ptr, ptr %110, align 8, !tbaa !19
  %217 = getelementptr inbounds i8, ptr %216, i64 8
  %218 = load double, ptr %217, align 8, !tbaa !20
  %219 = fsub double %218, %167
  %220 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %219, ptr noundef %1)
  %221 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %220, double noundef 0x3E6AD7F29ABCAF49)
  br label %.thread467

.thread467:                                       ; preds = %.thread, %214, %215
  %222 = phi i1 [ true, %214 ], [ %221, %215 ], [ true, %.thread ]
  %223 = icmp ne i64 %.0465501, 3
  %brmerge = or i1 %223, %222
  %not. = xor i1 %223, true
  %.mux = or i1 %222, %not.
  br i1 %brmerge, label %.thread468, label %224

224:                                              ; preds = %.thread467
  %225 = load ptr, ptr %110, align 8, !tbaa !19
  %226 = getelementptr inbounds i8, ptr %225, i64 16
  %227 = load double, ptr %226, align 8, !tbaa !20
  %228 = fsub double %227, %169
  %229 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %228, ptr noundef %1)
  %230 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %229, double noundef 0x3E6AD7F29ABCAF49)
  br label %.thread468

.thread468:                                       ; preds = %.thread467, %224, %206, %.thread
  %231 = phi i1 [ %211, %206 ], [ true, %.thread ], [ %.mux, %.thread467 ], [ %230, %224 ]
  call void @_ZN11alglib_impl18polynomialcheb2barEPNS_9ae_vectorElddPNS_22barycentricinterpolantEPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.0465501, double noundef %156, double noundef %163, ptr noundef nonnull %22, ptr noundef %1)
  %232 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  br i1 %231, label %241, label %233

233:                                              ; preds = %.thread468
  %234 = fsub double %163, %156
  %235 = call double @llvm.fmuladd.f64(double %232, double %234, double %156)
  %236 = call noundef double @_ZN11alglib_impl15barycentriccalcEPNS_22barycentricinterpolantEdPNS_8ae_stateE(ptr noundef nonnull %20, double noundef %235, ptr noundef %1)
  %237 = call noundef double @_ZN11alglib_impl15barycentriccalcEPNS_22barycentricinterpolantEdPNS_8ae_stateE(ptr noundef nonnull %22, double noundef %235, ptr noundef %1)
  %238 = fsub double %236, %237
  %239 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %238, ptr noundef %1)
  %240 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %239, double noundef 0x3E6AD7F29ABCAF49)
  br label %241

241:                                              ; preds = %233, %.thread468
  %242 = phi i1 [ true, %.thread468 ], [ %240, %233 ]
  %243 = zext i1 %242 to i8
  store i8 %243, ptr %4, align 1, !tbaa !5
  %244 = add nuw nsw i64 %.0465501, 1
  %exitcond522.not = icmp eq i64 %244, 4
  br i1 %exitcond522.not, label %245, label %153, !llvm.loop !22

245:                                              ; preds = %241
  %246 = add nuw nsw i64 %.3502, 1
  %exitcond523.not = icmp eq i64 %246, 21
  br i1 %exitcond523.not, label %.preheader478, label %.preheader480, !llvm.loop !23

.preheader478:                                    ; preds = %245, %433
  %247 = phi i1 [ %430, %433 ], [ %242, %245 ]
  %.4504 = phi i64 [ %434, %433 ], [ 1, %245 ]
  br label %249

.preheader477:                                    ; preds = %433
  %248 = getelementptr inbounds i8, ptr %20, i64 200
  br label %435

249:                                              ; preds = %.preheader478, %429
  %250 = phi i1 [ %247, %.preheader478 ], [ %430, %429 ]
  %.1466503 = phi i64 [ 1, %.preheader478 ], [ %432, %429 ]
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %5, i64 noundef %.1466503, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %6, i64 noundef %.1466503, ptr noundef %1)
  %251 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %252 = call double @llvm.fmuladd.f64(double %251, double 2.000000e+00, double -1.000000e+00)
  %253 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %254 = fadd double %253, 1.000000e-01
  %255 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 2, ptr noundef %1)
  %256 = shl nsw i64 %255, 1
  %257 = add nsw i64 %256, -1
  %258 = sitofp i64 %257 to double
  %259 = fmul double %254, %258
  %260 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %261 = call double @llvm.fmuladd.f64(double %260, double 2.000000e+00, double -1.000000e+00)
  %262 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %263 = call double @llvm.fmuladd.f64(double %262, double 2.000000e+00, double -1.000000e+00)
  %264 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %265 = call double @llvm.fmuladd.f64(double %264, double 2.000000e+00, double -1.000000e+00)
  %266 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %267 = call double @llvm.fmuladd.f64(double %266, double 2.000000e+00, double -1.000000e+00)
  %268 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %269 = call double @llvm.fmuladd.f64(double %268, double 2.000000e+00, double -1.000000e+00)
  switch i64 %.1466503, label %371 [
    i64 1, label %270
    i64 2, label %273
    i64 3, label %284
    i64 4, label %301
    i64 5, label %332
  ]

270:                                              ; preds = %249
  %271 = load ptr, ptr %108, align 8, !tbaa !19
  store double %252, ptr %271, align 8, !tbaa !20
  %272 = load ptr, ptr %109, align 8, !tbaa !19
  store double %261, ptr %272, align 8, !tbaa !20
  br label %371

273:                                              ; preds = %249
  %274 = fsub double %252, %259
  %275 = load ptr, ptr %108, align 8, !tbaa !19
  store double %274, ptr %275, align 8, !tbaa !20
  %276 = fsub double %261, %263
  %277 = load ptr, ptr %109, align 8, !tbaa !19
  store double %276, ptr %277, align 8, !tbaa !20
  %278 = fadd double %252, %259
  %279 = load ptr, ptr %108, align 8, !tbaa !19
  %280 = getelementptr inbounds i8, ptr %279, i64 8
  store double %278, ptr %280, align 8, !tbaa !20
  %281 = fadd double %261, %263
  %282 = load ptr, ptr %109, align 8, !tbaa !19
  %283 = getelementptr inbounds i8, ptr %282, i64 8
  store double %281, ptr %283, align 8, !tbaa !20
  br label %371

284:                                              ; preds = %249
  %285 = fsub double %252, %259
  %286 = load ptr, ptr %108, align 8, !tbaa !19
  store double %285, ptr %286, align 8, !tbaa !20
  %287 = fsub double %261, %263
  %288 = fadd double %287, %265
  %289 = load ptr, ptr %109, align 8, !tbaa !19
  store double %288, ptr %289, align 8, !tbaa !20
  %290 = load ptr, ptr %108, align 8, !tbaa !19
  %291 = getelementptr inbounds i8, ptr %290, i64 8
  store double %252, ptr %291, align 8, !tbaa !20
  %292 = load ptr, ptr %109, align 8, !tbaa !19
  %293 = getelementptr inbounds i8, ptr %292, i64 8
  store double %261, ptr %293, align 8, !tbaa !20
  %294 = fadd double %252, %259
  %295 = load ptr, ptr %108, align 8, !tbaa !19
  %296 = getelementptr inbounds i8, ptr %295, i64 16
  store double %294, ptr %296, align 8, !tbaa !20
  %297 = fadd double %261, %263
  %298 = fadd double %297, %265
  %299 = load ptr, ptr %109, align 8, !tbaa !19
  %300 = getelementptr inbounds i8, ptr %299, i64 16
  store double %298, ptr %300, align 8, !tbaa !20
  br label %371

301:                                              ; preds = %249
  %302 = fsub double %252, %259
  %303 = load ptr, ptr %108, align 8, !tbaa !19
  store double %302, ptr %303, align 8, !tbaa !20
  %304 = fsub double %261, %263
  %305 = fadd double %304, %265
  %306 = fsub double %305, %267
  %307 = load ptr, ptr %109, align 8, !tbaa !19
  store double %306, ptr %307, align 8, !tbaa !20
  %308 = call double @llvm.fmuladd.f64(double %259, double -5.000000e-01, double %252)
  %309 = load ptr, ptr %108, align 8, !tbaa !19
  %310 = getelementptr inbounds i8, ptr %309, i64 8
  store double %308, ptr %310, align 8, !tbaa !20
  %311 = call double @llvm.fmuladd.f64(double %263, double -5.000000e-01, double %261)
  %312 = call double @llvm.fmuladd.f64(double %265, double 2.500000e-01, double %311)
  %313 = call double @llvm.fmuladd.f64(double %267, double -1.250000e-01, double %312)
  %314 = load ptr, ptr %109, align 8, !tbaa !19
  %315 = getelementptr inbounds i8, ptr %314, i64 8
  store double %313, ptr %315, align 8, !tbaa !20
  %316 = call double @llvm.fmuladd.f64(double %259, double 5.000000e-01, double %252)
  %317 = load ptr, ptr %108, align 8, !tbaa !19
  %318 = getelementptr inbounds i8, ptr %317, i64 16
  store double %316, ptr %318, align 8, !tbaa !20
  %319 = call double @llvm.fmuladd.f64(double %263, double 5.000000e-01, double %261)
  %320 = call double @llvm.fmuladd.f64(double %265, double 2.500000e-01, double %319)
  %321 = call double @llvm.fmuladd.f64(double %267, double 1.250000e-01, double %320)
  %322 = load ptr, ptr %109, align 8, !tbaa !19
  %323 = getelementptr inbounds i8, ptr %322, i64 16
  store double %321, ptr %323, align 8, !tbaa !20
  %324 = fadd double %252, %259
  %325 = load ptr, ptr %108, align 8, !tbaa !19
  %326 = getelementptr inbounds i8, ptr %325, i64 24
  store double %324, ptr %326, align 8, !tbaa !20
  %327 = fadd double %261, %263
  %328 = fadd double %327, %265
  %329 = fadd double %328, %267
  %330 = load ptr, ptr %109, align 8, !tbaa !19
  %331 = getelementptr inbounds i8, ptr %330, i64 24
  store double %329, ptr %331, align 8, !tbaa !20
  br label %371

332:                                              ; preds = %249
  %333 = fsub double %252, %259
  %334 = load ptr, ptr %108, align 8, !tbaa !19
  store double %333, ptr %334, align 8, !tbaa !20
  %335 = fsub double %261, %263
  %336 = fadd double %335, %265
  %337 = fsub double %336, %267
  %338 = fadd double %337, %269
  %339 = load ptr, ptr %109, align 8, !tbaa !19
  store double %338, ptr %339, align 8, !tbaa !20
  %340 = call double @llvm.fmuladd.f64(double %259, double -5.000000e-01, double %252)
  %341 = load ptr, ptr %108, align 8, !tbaa !19
  %342 = getelementptr inbounds i8, ptr %341, i64 8
  store double %340, ptr %342, align 8, !tbaa !20
  %343 = call double @llvm.fmuladd.f64(double %263, double -5.000000e-01, double %261)
  %344 = call double @llvm.fmuladd.f64(double %265, double 2.500000e-01, double %343)
  %345 = call double @llvm.fmuladd.f64(double %267, double -1.250000e-01, double %344)
  %346 = call double @llvm.fmuladd.f64(double %269, double 6.250000e-02, double %345)
  %347 = load ptr, ptr %109, align 8, !tbaa !19
  %348 = getelementptr inbounds i8, ptr %347, i64 8
  store double %346, ptr %348, align 8, !tbaa !20
  %349 = load ptr, ptr %108, align 8, !tbaa !19
  %350 = getelementptr inbounds i8, ptr %349, i64 16
  store double %252, ptr %350, align 8, !tbaa !20
  %351 = load ptr, ptr %109, align 8, !tbaa !19
  %352 = getelementptr inbounds i8, ptr %351, i64 16
  store double %261, ptr %352, align 8, !tbaa !20
  %353 = call double @llvm.fmuladd.f64(double %259, double 5.000000e-01, double %252)
  %354 = load ptr, ptr %108, align 8, !tbaa !19
  %355 = getelementptr inbounds i8, ptr %354, i64 24
  store double %353, ptr %355, align 8, !tbaa !20
  %356 = call double @llvm.fmuladd.f64(double %263, double 5.000000e-01, double %261)
  %357 = call double @llvm.fmuladd.f64(double %265, double 2.500000e-01, double %356)
  %358 = call double @llvm.fmuladd.f64(double %267, double 1.250000e-01, double %357)
  %359 = call double @llvm.fmuladd.f64(double %269, double 6.250000e-02, double %358)
  %360 = load ptr, ptr %109, align 8, !tbaa !19
  %361 = getelementptr inbounds i8, ptr %360, i64 24
  store double %359, ptr %361, align 8, !tbaa !20
  %362 = fadd double %252, %259
  %363 = load ptr, ptr %108, align 8, !tbaa !19
  %364 = getelementptr inbounds i8, ptr %363, i64 32
  store double %362, ptr %364, align 8, !tbaa !20
  %365 = fadd double %261, %263
  %366 = fadd double %365, %265
  %367 = fadd double %366, %267
  %368 = fadd double %367, %269
  %369 = load ptr, ptr %109, align 8, !tbaa !19
  %370 = getelementptr inbounds i8, ptr %369, i64 32
  store double %368, ptr %370, align 8, !tbaa !20
  br label %371

371:                                              ; preds = %301, %284, %273, %270, %249, %332
  call void @_ZN11alglib_impl15polynomialbuildEPNS_9ae_vectorES1_lPNS_22barycentricinterpolantEPNS_8ae_stateE(ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %.1466503, ptr noundef nonnull %20, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef 1, ptr noundef %1)
  call void @_ZN11alglib_impl17polynomialbar2powEPNS_22barycentricinterpolantEddPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %20, double noundef %252, double noundef %259, ptr noundef nonnull %8, ptr noundef %1)
  %372 = load i64, ptr %8, align 8
  %373 = icmp ne i64 %372, %.1466503
  %374 = select i1 %250, i1 true, i1 %373
  %375 = zext i1 %374 to i8
  store i8 %375, ptr %4, align 1, !tbaa !5
  br i1 %374, label %.thread469, label %376

376:                                              ; preds = %371
  %377 = load ptr, ptr %110, align 8, !tbaa !19
  %378 = load double, ptr %377, align 8, !tbaa !20
  %379 = fsub double %378, %261
  %380 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %379, ptr noundef %1)
  %381 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %380, double noundef 0x3E6AD7F29ABCAF49)
  %382 = icmp ugt i64 %.1466503, 1
  br i1 %382, label %384, label %.thread476

.thread469:                                       ; preds = %371
  %383 = icmp ugt i64 %.1466503, 1
  br i1 %383, label %.thread470, label %.thread476

384:                                              ; preds = %376
  br i1 %381, label %.thread470, label %385

385:                                              ; preds = %384
  %386 = load ptr, ptr %110, align 8, !tbaa !19
  %387 = getelementptr inbounds i8, ptr %386, i64 8
  %388 = load double, ptr %387, align 8, !tbaa !20
  %389 = fsub double %388, %263
  %390 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %389, ptr noundef %1)
  %391 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %390, double noundef 0x3E6AD7F29ABCAF49)
  br label %.thread470

.thread470:                                       ; preds = %.thread469, %384, %385
  %392 = phi i1 [ true, %384 ], [ %391, %385 ], [ true, %.thread469 ]
  %393 = icmp ugt i64 %.1466503, 2
  br i1 %393, label %394, label %.thread476

394:                                              ; preds = %.thread470
  br i1 %392, label %.thread533, label %395

395:                                              ; preds = %394
  %396 = load ptr, ptr %110, align 8, !tbaa !19
  %397 = getelementptr inbounds i8, ptr %396, i64 16
  %398 = load double, ptr %397, align 8, !tbaa !20
  %399 = fsub double %398, %265
  %400 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %399, ptr noundef %1)
  %401 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %400, double noundef 0x3E6AD7F29ABCAF49)
  %.not = icmp eq i64 %.1466503, 3
  br i1 %.not, label %.thread476, label %402

.thread533:                                       ; preds = %394
  %.not534 = icmp eq i64 %.1466503, 3
  br i1 %.not534, label %.thread476, label %.thread535

402:                                              ; preds = %395
  br i1 %401, label %.thread535, label %403

403:                                              ; preds = %402
  %404 = load ptr, ptr %110, align 8, !tbaa !19
  %405 = getelementptr inbounds i8, ptr %404, i64 24
  %406 = load double, ptr %405, align 8, !tbaa !20
  %407 = fsub double %406, %267
  %408 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %407, ptr noundef %1)
  %409 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %408, double noundef 0x3E6AD7F29ABCAF49)
  br label %.thread535

.thread535:                                       ; preds = %.thread533, %402, %403
  %410 = phi i1 [ true, %402 ], [ %409, %403 ], [ true, %.thread533 ]
  %411 = icmp ne i64 %.1466503, 5
  %brmerge559 = or i1 %411, %410
  %not.561 = xor i1 %411, true
  %.mux560 = or i1 %410, %not.561
  br i1 %brmerge559, label %.thread476, label %412

412:                                              ; preds = %.thread535
  %413 = load ptr, ptr %110, align 8, !tbaa !19
  %414 = getelementptr inbounds i8, ptr %413, i64 32
  %415 = load double, ptr %414, align 8, !tbaa !20
  %416 = fsub double %415, %269
  %417 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %416, ptr noundef %1)
  %418 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %417, double noundef 0x3E6AD7F29ABCAF49)
  br label %.thread476

.thread476:                                       ; preds = %.thread535, %412, %.thread533, %376, %.thread469, %.thread470, %395
  %419 = phi i1 [ %381, %376 ], [ true, %.thread469 ], [ %392, %.thread470 ], [ %401, %395 ], [ %.mux560, %.thread535 ], [ true, %.thread533 ], [ %418, %412 ]
  call void @_ZN11alglib_impl17polynomialpow2barEPNS_9ae_vectorElddPNS_22barycentricinterpolantEPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.1466503, double noundef %252, double noundef %259, ptr noundef nonnull %22, ptr noundef %1)
  %420 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  br i1 %419, label %429, label %421

421:                                              ; preds = %.thread476
  %422 = call double @llvm.fmuladd.f64(double %420, double 2.000000e+00, double -1.000000e+00)
  %423 = call double @llvm.fmuladd.f64(double %422, double %259, double %252)
  %424 = call noundef double @_ZN11alglib_impl15barycentriccalcEPNS_22barycentricinterpolantEdPNS_8ae_stateE(ptr noundef nonnull %20, double noundef %423, ptr noundef %1)
  %425 = call noundef double @_ZN11alglib_impl15barycentriccalcEPNS_22barycentricinterpolantEdPNS_8ae_stateE(ptr noundef nonnull %22, double noundef %423, ptr noundef %1)
  %426 = fsub double %424, %425
  %427 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %426, ptr noundef %1)
  %428 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %427, double noundef 0x3E6AD7F29ABCAF49)
  br label %429

429:                                              ; preds = %421, %.thread476
  %430 = phi i1 [ true, %.thread476 ], [ %428, %421 ]
  %431 = zext i1 %430 to i8
  store i8 %431, ptr %4, align 1, !tbaa !5
  %432 = add nuw nsw i64 %.1466503, 1
  %exitcond524.not = icmp eq i64 %432, 6
  br i1 %exitcond524.not, label %433, label %249, !llvm.loop !24

433:                                              ; preds = %429
  %434 = add nuw nsw i64 %.4504, 1
  %exitcond525.not = icmp eq i64 %434, 21
  br i1 %exitcond525.not, label %.preheader477, label %.preheader478, !llvm.loop !25

435:                                              ; preds = %.preheader477, %448
  %436 = phi i1 [ %430, %.preheader477 ], [ %445, %448 ]
  %.3459506 = phi i64 [ 1, %.preheader477 ], [ %449, %448 ]
  call void @_ZN11alglib_impl20taskgenint1dequidistEddlPNS_9ae_vectorES1_PNS_8ae_stateE(double noundef -1.000000e+299, double noundef 1.000000e+299, i64 noundef %.3459506, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef %1)
  call void @_ZN11alglib_impl15polynomialbuildEPNS_9ae_vectorES1_lPNS_22barycentricinterpolantEPNS_8ae_stateE(ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %.3459506, ptr noundef nonnull %20, ptr noundef %1)
  br label %437

437:                                              ; preds = %435, %444
  %438 = phi i1 [ %436, %435 ], [ %445, %444 ]
  %.0460505 = phi i64 [ 0, %435 ], [ %447, %444 ]
  br i1 %438, label %444, label %439

439:                                              ; preds = %437
  %440 = load ptr, ptr %248, align 8, !tbaa !19
  %441 = getelementptr inbounds double, ptr %440, i64 %.0460505
  %442 = load double, ptr %441, align 8, !tbaa !20
  %443 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %442, double noundef 0.000000e+00)
  br label %444

444:                                              ; preds = %439, %437
  %445 = phi i1 [ true, %437 ], [ %443, %439 ]
  %446 = zext i1 %445 to i8
  store i8 %446, ptr %4, align 1, !tbaa !5
  %447 = add nuw nsw i64 %.0460505, 1
  %exitcond526.not = icmp eq i64 %447, %.3459506
  br i1 %exitcond526.not, label %448, label %437, !llvm.loop !26

448:                                              ; preds = %444
  %449 = add nuw nsw i64 %.3459506, 1
  %exitcond527.not = icmp eq i64 %449, 21
  br i1 %exitcond527.not, label %.preheader, label %435, !llvm.loop !27

.preheader:                                       ; preds = %448
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %5, i64 noundef 7, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef 7, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %6, i64 noundef 7, ptr noundef %1)
  %450 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %451 = fadd double %450, -5.000000e-01
  %452 = load ptr, ptr %108, align 8, !tbaa !19
  store double %451, ptr %452, align 8, !tbaa !20
  %453 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %454 = fadd double %453, -5.000000e-01
  %455 = load ptr, ptr %109, align 8, !tbaa !19
  store double %454, ptr %455, align 8, !tbaa !20
  %456 = load ptr, ptr %108, align 8, !tbaa !19
  %457 = load double, ptr %456, align 8, !tbaa !20
  %458 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %459 = fadd double %457, %458
  %460 = fadd double %459, 1.000000e-01
  %461 = load ptr, ptr %108, align 8, !tbaa !19
  %462 = getelementptr inbounds i8, ptr %461, i64 8
  store double %460, ptr %462, align 8, !tbaa !20
  %463 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %464 = fadd double %463, -5.000000e-01
  %465 = load ptr, ptr %109, align 8, !tbaa !19
  %466 = getelementptr inbounds i8, ptr %465, i64 8
  store double %464, ptr %466, align 8, !tbaa !20
  %467 = load ptr, ptr %108, align 8, !tbaa !19
  %468 = getelementptr i8, ptr %467, i64 8
  %469 = load double, ptr %468, align 8, !tbaa !20
  %470 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %471 = fadd double %469, %470
  %472 = fadd double %471, 1.000000e-01
  %473 = load ptr, ptr %108, align 8, !tbaa !19
  %474 = getelementptr inbounds i8, ptr %473, i64 16
  store double %472, ptr %474, align 8, !tbaa !20
  %475 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %476 = fadd double %475, -5.000000e-01
  %477 = load ptr, ptr %109, align 8, !tbaa !19
  %478 = getelementptr inbounds i8, ptr %477, i64 16
  store double %476, ptr %478, align 8, !tbaa !20
  %479 = load ptr, ptr %108, align 8, !tbaa !19
  %480 = getelementptr i8, ptr %479, i64 16
  %481 = load double, ptr %480, align 8, !tbaa !20
  %482 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %483 = fadd double %481, %482
  %484 = fadd double %483, 1.000000e-01
  %485 = load ptr, ptr %108, align 8, !tbaa !19
  %486 = getelementptr inbounds i8, ptr %485, i64 24
  store double %484, ptr %486, align 8, !tbaa !20
  %487 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %488 = fadd double %487, -5.000000e-01
  %489 = load ptr, ptr %109, align 8, !tbaa !19
  %490 = getelementptr inbounds i8, ptr %489, i64 24
  store double %488, ptr %490, align 8, !tbaa !20
  %491 = load ptr, ptr %108, align 8, !tbaa !19
  %492 = getelementptr i8, ptr %491, i64 24
  %493 = load double, ptr %492, align 8, !tbaa !20
  %494 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %495 = fadd double %493, %494
  %496 = fadd double %495, 1.000000e-01
  %497 = load ptr, ptr %108, align 8, !tbaa !19
  %498 = getelementptr inbounds i8, ptr %497, i64 32
  store double %496, ptr %498, align 8, !tbaa !20
  %499 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %500 = fadd double %499, -5.000000e-01
  %501 = load ptr, ptr %109, align 8, !tbaa !19
  %502 = getelementptr inbounds i8, ptr %501, i64 32
  store double %500, ptr %502, align 8, !tbaa !20
  %503 = load ptr, ptr %108, align 8, !tbaa !19
  %504 = getelementptr i8, ptr %503, i64 32
  %505 = load double, ptr %504, align 8, !tbaa !20
  %506 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %507 = fadd double %505, %506
  %508 = fadd double %507, 1.000000e-01
  %509 = load ptr, ptr %108, align 8, !tbaa !19
  %510 = getelementptr inbounds i8, ptr %509, i64 40
  store double %508, ptr %510, align 8, !tbaa !20
  %511 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %512 = fadd double %511, -5.000000e-01
  %513 = load ptr, ptr %109, align 8, !tbaa !19
  %514 = getelementptr inbounds i8, ptr %513, i64 40
  store double %512, ptr %514, align 8, !tbaa !20
  %515 = load ptr, ptr %108, align 8, !tbaa !19
  %516 = getelementptr i8, ptr %515, i64 40
  %517 = load double, ptr %516, align 8, !tbaa !20
  %518 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %519 = fadd double %517, %518
  %520 = fadd double %519, 1.000000e-01
  %521 = load ptr, ptr %108, align 8, !tbaa !19
  %522 = getelementptr inbounds i8, ptr %521, i64 48
  store double %520, ptr %522, align 8, !tbaa !20
  %523 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %524 = fadd double %523, -5.000000e-01
  %525 = load ptr, ptr %109, align 8, !tbaa !19
  %526 = getelementptr inbounds i8, ptr %525, i64 48
  store double %524, ptr %526, align 8, !tbaa !20
  call void @_ZN11alglib_impl15polynomialbuildEPNS_9ae_vectorES1_lPNS_22barycentricinterpolantEPNS_8ae_stateE(ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef 7, ptr noundef nonnull %20, ptr noundef %1)
  call void @_ZN11alglib_impl17polynomialbar2powEPNS_22barycentricinterpolantEddPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %20, double noundef 0.000000e+00, double noundef 1.000000e+00, ptr noundef nonnull %9, ptr noundef %1)
  %527 = getelementptr inbounds i8, ptr %12, i64 56
  %528 = load ptr, ptr %108, align 8, !tbaa !19
  %529 = load double, ptr %528, align 8, !tbaa !20
  %530 = fmul double %529, 1.000000e-10
  %531 = load ptr, ptr %527, align 8, !tbaa !19
  store double %530, ptr %531, align 8, !tbaa !20
  %532 = load ptr, ptr %108, align 8, !tbaa !19
  %533 = getelementptr inbounds i8, ptr %532, i64 8
  %534 = load double, ptr %533, align 8, !tbaa !20
  %535 = fmul double %534, 1.000000e-10
  %536 = load ptr, ptr %527, align 8, !tbaa !19
  %537 = getelementptr inbounds i8, ptr %536, i64 8
  store double %535, ptr %537, align 8, !tbaa !20
  %538 = load ptr, ptr %108, align 8, !tbaa !19
  %539 = getelementptr inbounds i8, ptr %538, i64 16
  %540 = load double, ptr %539, align 8, !tbaa !20
  %541 = fmul double %540, 1.000000e-10
  %542 = load ptr, ptr %527, align 8, !tbaa !19
  %543 = getelementptr inbounds i8, ptr %542, i64 16
  store double %541, ptr %543, align 8, !tbaa !20
  %544 = load ptr, ptr %108, align 8, !tbaa !19
  %545 = getelementptr inbounds i8, ptr %544, i64 24
  %546 = load double, ptr %545, align 8, !tbaa !20
  %547 = fmul double %546, 1.000000e-10
  %548 = load ptr, ptr %527, align 8, !tbaa !19
  %549 = getelementptr inbounds i8, ptr %548, i64 24
  store double %547, ptr %549, align 8, !tbaa !20
  %550 = load ptr, ptr %108, align 8, !tbaa !19
  %551 = getelementptr inbounds i8, ptr %550, i64 32
  %552 = load double, ptr %551, align 8, !tbaa !20
  %553 = fmul double %552, 1.000000e-10
  %554 = load ptr, ptr %527, align 8, !tbaa !19
  %555 = getelementptr inbounds i8, ptr %554, i64 32
  store double %553, ptr %555, align 8, !tbaa !20
  %556 = load ptr, ptr %108, align 8, !tbaa !19
  %557 = getelementptr inbounds i8, ptr %556, i64 40
  %558 = load double, ptr %557, align 8, !tbaa !20
  %559 = fmul double %558, 1.000000e-10
  %560 = load ptr, ptr %527, align 8, !tbaa !19
  %561 = getelementptr inbounds i8, ptr %560, i64 40
  store double %559, ptr %561, align 8, !tbaa !20
  %562 = load ptr, ptr %108, align 8, !tbaa !19
  %563 = getelementptr inbounds i8, ptr %562, i64 48
  %564 = load double, ptr %563, align 8, !tbaa !20
  %565 = fmul double %564, 1.000000e-10
  %566 = load ptr, ptr %527, align 8, !tbaa !19
  %567 = getelementptr inbounds i8, ptr %566, i64 48
  store double %565, ptr %567, align 8, !tbaa !20
  call void @_ZN11alglib_impl15polynomialbuildEPNS_9ae_vectorES1_lPNS_22barycentricinterpolantEPNS_8ae_stateE(ptr noundef nonnull %12, ptr noundef nonnull %6, i64 noundef 7, ptr noundef nonnull %20, ptr noundef %1)
  call void @_ZN11alglib_impl17polynomialbar2powEPNS_22barycentricinterpolantEddPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %20, double noundef 0.000000e+00, double noundef 1.000000e+00, ptr noundef nonnull %10, ptr noundef %1)
  %568 = getelementptr inbounds i8, ptr %9, i64 56
  %569 = getelementptr inbounds i8, ptr %10, i64 56
  %570 = load ptr, ptr %568, align 8, !tbaa !19
  %571 = load double, ptr %570, align 8, !tbaa !20
  %572 = load ptr, ptr %569, align 8, !tbaa !19
  %573 = load double, ptr %572, align 8, !tbaa !20
  %574 = call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef 1.000000e-10, double noundef 0.000000e+00, ptr noundef %1)
  %575 = fneg double %573
  %576 = call double @llvm.fmuladd.f64(double %575, double %574, double %571)
  %577 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %576, ptr noundef %1)
  %578 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %577, double noundef 1.000000e-08)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %578, ptr noundef nonnull @.str.8, i32 noundef 102464, ptr noundef nonnull @.str.641)
  %579 = load ptr, ptr %568, align 8, !tbaa !19
  %580 = getelementptr inbounds i8, ptr %579, i64 8
  %581 = load double, ptr %580, align 8, !tbaa !20
  %582 = load ptr, ptr %569, align 8, !tbaa !19
  %583 = getelementptr inbounds i8, ptr %582, i64 8
  %584 = load double, ptr %583, align 8, !tbaa !20
  %585 = call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef 1.000000e-10, double noundef 1.000000e+00, ptr noundef %1)
  %586 = fneg double %584
  %587 = call double @llvm.fmuladd.f64(double %586, double %585, double %581)
  %588 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %587, ptr noundef %1)
  %589 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %588, double noundef 1.000000e-08)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %589, ptr noundef nonnull @.str.8, i32 noundef 102464, ptr noundef nonnull @.str.641)
  %590 = load ptr, ptr %568, align 8, !tbaa !19
  %591 = getelementptr inbounds i8, ptr %590, i64 16
  %592 = load double, ptr %591, align 8, !tbaa !20
  %593 = load ptr, ptr %569, align 8, !tbaa !19
  %594 = getelementptr inbounds i8, ptr %593, i64 16
  %595 = load double, ptr %594, align 8, !tbaa !20
  %596 = call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef 1.000000e-10, double noundef 2.000000e+00, ptr noundef %1)
  %597 = fneg double %595
  %598 = call double @llvm.fmuladd.f64(double %597, double %596, double %592)
  %599 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %598, ptr noundef %1)
  %600 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %599, double noundef 1.000000e-08)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %600, ptr noundef nonnull @.str.8, i32 noundef 102464, ptr noundef nonnull @.str.641)
  %601 = load ptr, ptr %568, align 8, !tbaa !19
  %602 = getelementptr inbounds i8, ptr %601, i64 24
  %603 = load double, ptr %602, align 8, !tbaa !20
  %604 = load ptr, ptr %569, align 8, !tbaa !19
  %605 = getelementptr inbounds i8, ptr %604, i64 24
  %606 = load double, ptr %605, align 8, !tbaa !20
  %607 = call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef 1.000000e-10, double noundef 3.000000e+00, ptr noundef %1)
  %608 = fneg double %606
  %609 = call double @llvm.fmuladd.f64(double %608, double %607, double %603)
  %610 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %609, ptr noundef %1)
  %611 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %610, double noundef 1.000000e-08)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %611, ptr noundef nonnull @.str.8, i32 noundef 102464, ptr noundef nonnull @.str.641)
  %612 = load ptr, ptr %568, align 8, !tbaa !19
  %613 = getelementptr inbounds i8, ptr %612, i64 32
  %614 = load double, ptr %613, align 8, !tbaa !20
  %615 = load ptr, ptr %569, align 8, !tbaa !19
  %616 = getelementptr inbounds i8, ptr %615, i64 32
  %617 = load double, ptr %616, align 8, !tbaa !20
  %618 = call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef 1.000000e-10, double noundef 4.000000e+00, ptr noundef %1)
  %619 = fneg double %617
  %620 = call double @llvm.fmuladd.f64(double %619, double %618, double %614)
  %621 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %620, ptr noundef %1)
  %622 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %621, double noundef 1.000000e-08)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %622, ptr noundef nonnull @.str.8, i32 noundef 102464, ptr noundef nonnull @.str.641)
  %623 = load ptr, ptr %568, align 8, !tbaa !19
  %624 = getelementptr inbounds i8, ptr %623, i64 40
  %625 = load double, ptr %624, align 8, !tbaa !20
  %626 = load ptr, ptr %569, align 8, !tbaa !19
  %627 = getelementptr inbounds i8, ptr %626, i64 40
  %628 = load double, ptr %627, align 8, !tbaa !20
  %629 = call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef 1.000000e-10, double noundef 5.000000e+00, ptr noundef %1)
  %630 = fneg double %628
  %631 = call double @llvm.fmuladd.f64(double %630, double %629, double %625)
  %632 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %631, ptr noundef %1)
  %633 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %632, double noundef 1.000000e-08)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %633, ptr noundef nonnull @.str.8, i32 noundef 102464, ptr noundef nonnull @.str.641)
  %634 = load ptr, ptr %568, align 8, !tbaa !19
  %635 = getelementptr inbounds i8, ptr %634, i64 48
  %636 = load double, ptr %635, align 8, !tbaa !20
  %637 = load ptr, ptr %569, align 8, !tbaa !19
  %638 = getelementptr inbounds i8, ptr %637, i64 48
  %639 = load double, ptr %638, align 8, !tbaa !20
  %640 = call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef 1.000000e-10, double noundef 6.000000e+00, ptr noundef %1)
  %641 = fneg double %639
  %642 = call double @llvm.fmuladd.f64(double %641, double %640, double %636)
  %643 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %642, ptr noundef %1)
  %644 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %643, double noundef 1.000000e-08)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %644, ptr noundef nonnull @.str.8, i32 noundef 102464, ptr noundef nonnull @.str.641)
  %645 = load ptr, ptr %108, align 8, !tbaa !19
  %646 = load double, ptr %645, align 8, !tbaa !20
  %647 = fmul double %646, 1.000000e+10
  %648 = load ptr, ptr %527, align 8, !tbaa !19
  store double %647, ptr %648, align 8, !tbaa !20
  %649 = load ptr, ptr %108, align 8, !tbaa !19
  %650 = getelementptr inbounds i8, ptr %649, i64 8
  %651 = load double, ptr %650, align 8, !tbaa !20
  %652 = fmul double %651, 1.000000e+10
  %653 = load ptr, ptr %527, align 8, !tbaa !19
  %654 = getelementptr inbounds i8, ptr %653, i64 8
  store double %652, ptr %654, align 8, !tbaa !20
  %655 = load ptr, ptr %108, align 8, !tbaa !19
  %656 = getelementptr inbounds i8, ptr %655, i64 16
  %657 = load double, ptr %656, align 8, !tbaa !20
  %658 = fmul double %657, 1.000000e+10
  %659 = load ptr, ptr %527, align 8, !tbaa !19
  %660 = getelementptr inbounds i8, ptr %659, i64 16
  store double %658, ptr %660, align 8, !tbaa !20
  %661 = load ptr, ptr %108, align 8, !tbaa !19
  %662 = getelementptr inbounds i8, ptr %661, i64 24
  %663 = load double, ptr %662, align 8, !tbaa !20
  %664 = fmul double %663, 1.000000e+10
  %665 = load ptr, ptr %527, align 8, !tbaa !19
  %666 = getelementptr inbounds i8, ptr %665, i64 24
  store double %664, ptr %666, align 8, !tbaa !20
  %667 = load ptr, ptr %108, align 8, !tbaa !19
  %668 = getelementptr inbounds i8, ptr %667, i64 32
  %669 = load double, ptr %668, align 8, !tbaa !20
  %670 = fmul double %669, 1.000000e+10
  %671 = load ptr, ptr %527, align 8, !tbaa !19
  %672 = getelementptr inbounds i8, ptr %671, i64 32
  store double %670, ptr %672, align 8, !tbaa !20
  %673 = load ptr, ptr %108, align 8, !tbaa !19
  %674 = getelementptr inbounds i8, ptr %673, i64 40
  %675 = load double, ptr %674, align 8, !tbaa !20
  %676 = fmul double %675, 1.000000e+10
  %677 = load ptr, ptr %527, align 8, !tbaa !19
  %678 = getelementptr inbounds i8, ptr %677, i64 40
  store double %676, ptr %678, align 8, !tbaa !20
  %679 = load ptr, ptr %108, align 8, !tbaa !19
  %680 = getelementptr inbounds i8, ptr %679, i64 48
  %681 = load double, ptr %680, align 8, !tbaa !20
  %682 = fmul double %681, 1.000000e+10
  %683 = load ptr, ptr %527, align 8, !tbaa !19
  %684 = getelementptr inbounds i8, ptr %683, i64 48
  store double %682, ptr %684, align 8, !tbaa !20
  call void @_ZN11alglib_impl15polynomialbuildEPNS_9ae_vectorES1_lPNS_22barycentricinterpolantEPNS_8ae_stateE(ptr noundef nonnull %12, ptr noundef nonnull %6, i64 noundef 7, ptr noundef nonnull %20, ptr noundef %1)
  call void @_ZN11alglib_impl17polynomialbar2powEPNS_22barycentricinterpolantEddPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %20, double noundef 0.000000e+00, double noundef 1.000000e+00, ptr noundef nonnull %11, ptr noundef %1)
  %685 = getelementptr inbounds i8, ptr %11, i64 56
  %686 = load ptr, ptr %568, align 8, !tbaa !19
  %687 = load double, ptr %686, align 8, !tbaa !20
  %688 = load ptr, ptr %685, align 8, !tbaa !19
  %689 = load double, ptr %688, align 8, !tbaa !20
  %690 = call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef 1.000000e+10, double noundef 0.000000e+00, ptr noundef %1)
  %691 = fneg double %689
  %692 = call double @llvm.fmuladd.f64(double %691, double %690, double %687)
  %693 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %692, ptr noundef %1)
  %694 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %693, double noundef 1.000000e-08)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %694, ptr noundef nonnull @.str.8, i32 noundef 102475, ptr noundef nonnull @.str.642)
  %695 = load ptr, ptr %568, align 8, !tbaa !19
  %696 = getelementptr inbounds i8, ptr %695, i64 8
  %697 = load double, ptr %696, align 8, !tbaa !20
  %698 = load ptr, ptr %685, align 8, !tbaa !19
  %699 = getelementptr inbounds i8, ptr %698, i64 8
  %700 = load double, ptr %699, align 8, !tbaa !20
  %701 = call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef 1.000000e+10, double noundef 1.000000e+00, ptr noundef %1)
  %702 = fneg double %700
  %703 = call double @llvm.fmuladd.f64(double %702, double %701, double %697)
  %704 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %703, ptr noundef %1)
  %705 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %704, double noundef 1.000000e-08)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %705, ptr noundef nonnull @.str.8, i32 noundef 102475, ptr noundef nonnull @.str.642)
  %706 = load ptr, ptr %568, align 8, !tbaa !19
  %707 = getelementptr inbounds i8, ptr %706, i64 16
  %708 = load double, ptr %707, align 8, !tbaa !20
  %709 = load ptr, ptr %685, align 8, !tbaa !19
  %710 = getelementptr inbounds i8, ptr %709, i64 16
  %711 = load double, ptr %710, align 8, !tbaa !20
  %712 = call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef 1.000000e+10, double noundef 2.000000e+00, ptr noundef %1)
  %713 = fneg double %711
  %714 = call double @llvm.fmuladd.f64(double %713, double %712, double %708)
  %715 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %714, ptr noundef %1)
  %716 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %715, double noundef 1.000000e-08)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %716, ptr noundef nonnull @.str.8, i32 noundef 102475, ptr noundef nonnull @.str.642)
  %717 = load ptr, ptr %568, align 8, !tbaa !19
  %718 = getelementptr inbounds i8, ptr %717, i64 24
  %719 = load double, ptr %718, align 8, !tbaa !20
  %720 = load ptr, ptr %685, align 8, !tbaa !19
  %721 = getelementptr inbounds i8, ptr %720, i64 24
  %722 = load double, ptr %721, align 8, !tbaa !20
  %723 = call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef 1.000000e+10, double noundef 3.000000e+00, ptr noundef %1)
  %724 = fneg double %722
  %725 = call double @llvm.fmuladd.f64(double %724, double %723, double %719)
  %726 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %725, ptr noundef %1)
  %727 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %726, double noundef 1.000000e-08)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %727, ptr noundef nonnull @.str.8, i32 noundef 102475, ptr noundef nonnull @.str.642)
  %728 = load ptr, ptr %568, align 8, !tbaa !19
  %729 = getelementptr inbounds i8, ptr %728, i64 32
  %730 = load double, ptr %729, align 8, !tbaa !20
  %731 = load ptr, ptr %685, align 8, !tbaa !19
  %732 = getelementptr inbounds i8, ptr %731, i64 32
  %733 = load double, ptr %732, align 8, !tbaa !20
  %734 = call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef 1.000000e+10, double noundef 4.000000e+00, ptr noundef %1)
  %735 = fneg double %733
  %736 = call double @llvm.fmuladd.f64(double %735, double %734, double %730)
  %737 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %736, ptr noundef %1)
  %738 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %737, double noundef 1.000000e-08)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %738, ptr noundef nonnull @.str.8, i32 noundef 102475, ptr noundef nonnull @.str.642)
  %739 = load ptr, ptr %568, align 8, !tbaa !19
  %740 = getelementptr inbounds i8, ptr %739, i64 40
  %741 = load double, ptr %740, align 8, !tbaa !20
  %742 = load ptr, ptr %685, align 8, !tbaa !19
  %743 = getelementptr inbounds i8, ptr %742, i64 40
  %744 = load double, ptr %743, align 8, !tbaa !20
  %745 = call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef 1.000000e+10, double noundef 5.000000e+00, ptr noundef %1)
  %746 = fneg double %744
  %747 = call double @llvm.fmuladd.f64(double %746, double %745, double %741)
  %748 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %747, ptr noundef %1)
  %749 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %748, double noundef 1.000000e-08)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %749, ptr noundef nonnull @.str.8, i32 noundef 102475, ptr noundef nonnull @.str.642)
  %750 = load ptr, ptr %568, align 8, !tbaa !19
  %751 = getelementptr inbounds i8, ptr %750, i64 48
  %752 = load double, ptr %751, align 8, !tbaa !20
  %753 = load ptr, ptr %685, align 8, !tbaa !19
  %754 = getelementptr inbounds i8, ptr %753, i64 48
  %755 = load double, ptr %754, align 8, !tbaa !20
  %756 = call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef 1.000000e+10, double noundef 6.000000e+00, ptr noundef %1)
  %757 = fneg double %755
  %758 = call double @llvm.fmuladd.f64(double %757, double %756, double %752)
  %759 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %758, ptr noundef %1)
  %760 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %759, double noundef 1.000000e-08)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %760, ptr noundef nonnull @.str.8, i32 noundef 102475, ptr noundef nonnull @.str.642)
  %761 = load i8, ptr %4, align 1, !tbaa !5, !range !28, !noundef !29
  %762 = trunc nuw i8 %761 to i1
  br i1 %0, label %771, label %763

763:                                              ; preds = %.preheader
  %764 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.643)
  %765 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.644)
  %766 = load i8, ptr %4, align 1, !tbaa !5, !range !28, !noundef !29
  %767 = trunc nuw i8 %766 to i1
  %.str.7..str.6 = select i1 %767, ptr @.str.7, ptr @.str.6
  %768 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.7..str.6)
  %.str.2.sink = select i1 %762, ptr @.str.1, ptr @.str.2
  %769 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.2.sink)
  %770 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3)
  br label %771

771:                                              ; preds = %763, %.preheader
  %772 = xor i1 %762, true
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1)
  call void @llvm.lifetime.end.p0(i64 208, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 208, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 208, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #7
  ret i1 %772
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"bool", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = distinct !{!11, !10}
!12 = distinct !{!12, !10}
!13 = distinct !{!13, !10}
!14 = distinct !{!14, !10}
!15 = distinct !{!15, !10}
!16 = distinct !{!16, !10}
!17 = distinct !{!17, !10}
!18 = distinct !{!18, !10}
!19 = !{!7, !7, i64 0}
!20 = !{!21, !21, i64 0}
!21 = !{!"double", !7, i64 0}
!22 = distinct !{!22, !10}
!23 = distinct !{!23, !10}
!24 = distinct !{!24, !10}
!25 = distinct !{!25, !10}
!26 = distinct !{!26, !10}
!27 = distinct !{!27, !10}
!28 = !{i8 0, i8 2}
!29 = !{}


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