; LLVM IR from Dimandragon/non-parametric-dsp :: alglib-cpp/tests/test_c.ll (Z12testspline2dbPN11alglib_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::spline2dinterpolant" = type { i64, i8, i64, i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::ae_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%union.anon.0 = type { ptr }
%"struct.alglib_impl::hqrndstate" = type { i64, i64, i64 }
%"struct.alglib_impl::ae_serializer" = type { i64, i64, i64, i64, i64, ptr, ptr, ptr, i64, ptr, ptr }

@.str.2 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.800 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.830 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.831 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.832 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.833 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.834 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.835 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.836 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.837 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.838 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.839 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.840 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.841 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.842 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.843 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.844 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.845 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.846 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.847 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.848 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.849 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.850 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.851 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.852 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.853 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.854 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.855 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.856 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.857 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.858 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.859 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.860 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.861 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.862 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.863 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.864 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.865 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.866 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.867 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.868 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.869 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.870 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.871 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.872 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.873 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.874 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.875 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.876 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.877 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.878 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.879 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.880 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.881 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.882 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.883 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.884 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.885 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.886 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.887 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.888 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.889 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.890 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.891 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.892 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.893 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.894 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.895 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.896 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.897 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.898 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.899 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.900 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.901 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.902 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.903 = external hidden unnamed_addr constant [13 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 i32 @printf(ptr noundef, ...) #1

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

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

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

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

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

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

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

declare void @_ZN11alglib_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) #3

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

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

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

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

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

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

declare noundef 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 double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef) #1

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) #1

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

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

declare void @_ZN11alglib_impl18ae_serializer_initEPNS_13ae_serializerE(ptr noundef) #1

declare void @_ZN11alglib_impl25ae_serializer_alloc_startEPNS_13ae_serializerE(ptr noundef) #1

declare noundef i64 @_ZN11alglib_impl28ae_serializer_get_alloc_sizeEPNS_13ae_serializerE(ptr noundef) #1

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

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

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

declare void @_ZN11alglib_impl19ae_serializer_clearEPNS_13ae_serializerE(ptr noundef) #1

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

declare noundef double @_ZN11alglib_impl6rcase2EbddPNS_8ae_stateE(i1 noundef zeroext, double noundef, double noundef, ptr noundef) #1

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z12testspline2dbPN11alglib_impl8ae_stateE(i1 noundef zeroext %0, ptr noundef %1) #4 {
  %3 = alloca i8, align 1
  %4 = alloca ptr, align 8
  %5 = alloca %"struct.alglib_impl::ae_frame", align 8
  %6 = alloca i8, align 1
  %7 = alloca i8, align 1
  %8 = alloca i8, align 1
  %9 = alloca i8, align 1
  %10 = alloca i8, align 1
  %11 = alloca i8, align 1
  %12 = alloca i8, align 1
  %13 = alloca i8, align 1
  %14 = alloca i8, align 1
  %15 = alloca i8, align 1
  %16 = alloca i8, align 1
  %17 = alloca i8, align 1
  %18 = alloca i8, align 1
  %19 = alloca i8, align 1
  %20 = alloca i8, align 1
  %21 = alloca i8, align 1
  %22 = alloca i8, align 1
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca i64, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca %"struct.alglib_impl::ae_vector", align 8
  %29 = alloca %"struct.alglib_impl::ae_vector", align 8
  %30 = alloca %"struct.alglib_impl::spline2dinterpolant", align 8
  %31 = alloca %"struct.alglib_impl::spline2dinterpolant", align 8
  %32 = alloca %"struct.alglib_impl::ae_vector", align 8
  %33 = alloca %"struct.alglib_impl::ae_vector", align 8
  %34 = alloca %"struct.alglib_impl::ae_vector", align 8
  %35 = alloca %"struct.alglib_impl::ae_vector", align 8
  %36 = alloca %"struct.alglib_impl::ae_vector", align 8
  %37 = alloca %"struct.alglib_impl::ae_vector", align 8
  %38 = alloca %"struct.alglib_impl::ae_vector", align 8
  %39 = alloca %"struct.alglib_impl::ae_vector", align 8
  %40 = alloca %"struct.alglib_impl::ae_vector", align 8
  %41 = alloca %"struct.alglib_impl::ae_vector", align 8
  %42 = alloca %"struct.alglib_impl::ae_vector", align 8
  %43 = alloca %"struct.alglib_impl::ae_vector", align 8
  %44 = alloca %"struct.alglib_impl::ae_vector", align 8
  %45 = alloca %"struct.alglib_impl::ae_vector", align 8
  %46 = alloca %"struct.alglib_impl::ae_vector", align 8
  %47 = alloca %"struct.alglib_impl::ae_vector", align 8
  %48 = alloca %"struct.alglib_impl::ae_vector", align 8
  %49 = alloca %"struct.alglib_impl::ae_vector", align 8
  %50 = alloca %"struct.alglib_impl::ae_vector", align 8
  %51 = alloca %"struct.alglib_impl::ae_vector", align 8
  %52 = alloca %"struct.alglib_impl::ae_vector", align 8
  %53 = alloca %"struct.alglib_impl::ae_vector", align 8
  %54 = alloca i64, align 8
  %55 = alloca i64, align 8
  %56 = alloca i64, align 8
  %57 = alloca i64, align 8
  %58 = alloca %"struct.alglib_impl::ae_vector", align 8
  %59 = alloca %"struct.alglib_impl::ae_vector", align 8
  %60 = alloca %"struct.alglib_impl::ae_vector", align 8
  %61 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %62 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %63 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %64 = alloca double, align 8
  %65 = alloca double, align 8
  %66 = alloca double, align 8
  %67 = alloca double, align 8
  %68 = alloca i64, align 8
  %69 = alloca i64, align 8
  %70 = alloca i64, align 8
  %71 = alloca i64, align 8
  %72 = alloca i64, align 8
  %73 = alloca i64, align 8
  %74 = alloca i64, align 8
  %75 = alloca i64, align 8
  %76 = alloca double, align 8
  %77 = alloca double, align 8
  %78 = alloca double, align 8
  %79 = alloca double, align 8
  %80 = alloca double, align 8
  %81 = alloca double, align 8
  %82 = alloca double, align 8
  %83 = alloca double, align 8
  %84 = alloca double, align 8
  %85 = alloca double, align 8
  %86 = alloca double, align 8
  %87 = alloca double, align 8
  %88 = alloca double, align 8
  %89 = alloca double, align 8
  %90 = alloca double, align 8
  %91 = alloca double, align 8
  %92 = alloca double, align 8
  %93 = alloca double, align 8
  %94 = alloca double, align 8
  %95 = alloca double, align 8
  %96 = alloca double, align 8
  %97 = alloca double, align 8
  %98 = alloca double, align 8
  %99 = alloca double, align 8
  %100 = alloca double, align 8
  %101 = alloca double, align 8
  %102 = alloca double, align 8
  %103 = alloca double, align 8
  %104 = alloca double, align 8
  %105 = alloca double, align 8
  %106 = alloca double, align 8
  %107 = alloca double, align 8
  %108 = alloca double, align 8
  %109 = alloca double, align 8
  %110 = alloca double, align 8
  %111 = alloca double, align 8
  %112 = alloca double, align 8
  %113 = alloca double, align 8
  %114 = alloca double, align 8
  %115 = alloca double, align 8
  %116 = alloca double, align 8
  %117 = alloca double, align 8
  %118 = alloca double, align 8
  %119 = alloca double, align 8
  %120 = alloca %"struct.alglib_impl::ae_vector", align 8
  %121 = alloca %"struct.alglib_impl::ae_vector", align 8
  %122 = alloca %"struct.alglib_impl::hqrndstate", align 8
  %123 = alloca i8, align 1
  %124 = alloca %"struct.alglib_impl::ae_serializer", align 8
  %125 = alloca i64, align 8
  %126 = alloca %"struct.alglib_impl::ae_frame", align 8
  %127 = alloca %"struct.alglib_impl::ae_dyn_block", align 8
  %128 = zext i1 %0 to i8
  store i8 %128, ptr %3, align 1, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %5) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %6) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %9) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 1, 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 8, ptr %26) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %28) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %29) #5
  call void @llvm.lifetime.start.p0(i64 360, ptr %30) #5
  call void @llvm.lifetime.start.p0(i64 360, ptr %31) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %32) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %33) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %34) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %35) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %36) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %37) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %38) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %39) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %40) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %41) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %42) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %43) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %44) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %45) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %46) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %47) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %48) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %49) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %50) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %51) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %52) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %53) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %58) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %59) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %60) #5
  call void @llvm.lifetime.start.p0(i64 80, ptr %61) #5
  call void @llvm.lifetime.start.p0(i64 80, ptr %62) #5
  call void @llvm.lifetime.start.p0(i64 80, ptr %63) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %112) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %120) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %121) #5
  call void @llvm.lifetime.start.p0(i64 24, ptr %122) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %123) #5
  %129 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %129, ptr noundef %5)
  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 %29, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %30, i8 0, i64 360, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %31, i8 0, i64 360, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %32, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %33, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %34, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %35, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %36, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %37, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %38, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %39, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %40, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %41, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %42, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %43, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %44, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %45, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %46, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %47, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %48, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %49, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %50, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %51, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %52, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %53, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %58, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %59, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %60, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %61, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %62, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %63, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %120, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %121, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %122, i8 0, i64 24, i1 false)
  %130 = 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 3, ptr noundef %130, i1 noundef zeroext true)
  %131 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %29, i64 noundef 0, i64 noundef 3, ptr noundef %131, i1 noundef zeroext true)
  %132 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl25_spline2dinterpolant_initEPvPNS_8ae_stateEb(ptr noundef %30, ptr noundef %132, i1 noundef zeroext true)
  %133 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl25_spline2dinterpolant_initEPvPNS_8ae_stateEb(ptr noundef %31, ptr noundef %133, i1 noundef zeroext true)
  %134 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %32, i64 noundef 0, i64 noundef 3, ptr noundef %134, i1 noundef zeroext true)
  %135 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %33, i64 noundef 0, i64 noundef 3, ptr noundef %135, i1 noundef zeroext true)
  %136 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %34, i64 noundef 0, i64 noundef 3, ptr noundef %136, i1 noundef zeroext true)
  %137 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %35, i64 noundef 0, i64 noundef 3, ptr noundef %137, i1 noundef zeroext true)
  %138 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %36, i64 noundef 0, i64 noundef 3, ptr noundef %138, i1 noundef zeroext true)
  %139 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %37, i64 noundef 0, i64 noundef 3, ptr noundef %139, i1 noundef zeroext true)
  %140 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %38, i64 noundef 0, i64 noundef 3, ptr noundef %140, i1 noundef zeroext true)
  %141 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %39, i64 noundef 0, i64 noundef 3, ptr noundef %141, i1 noundef zeroext true)
  %142 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %40, i64 noundef 0, i64 noundef 3, ptr noundef %142, i1 noundef zeroext true)
  %143 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %41, i64 noundef 0, i64 noundef 3, ptr noundef %143, i1 noundef zeroext true)
  %144 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %42, i64 noundef 0, i64 noundef 3, ptr noundef %144, i1 noundef zeroext true)
  %145 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %43, i64 noundef 0, i64 noundef 3, ptr noundef %145, i1 noundef zeroext true)
  %146 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %44, i64 noundef 0, i64 noundef 3, ptr noundef %146, i1 noundef zeroext true)
  %147 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %45, i64 noundef 0, i64 noundef 3, ptr noundef %147, i1 noundef zeroext true)
  %148 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %46, i64 noundef 0, i64 noundef 3, ptr noundef %148, i1 noundef zeroext true)
  %149 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %47, i64 noundef 0, i64 noundef 3, ptr noundef %149, i1 noundef zeroext true)
  %150 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %48, i64 noundef 0, i64 noundef 3, ptr noundef %150, i1 noundef zeroext true)
  %151 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %49, i64 noundef 0, i64 noundef 3, ptr noundef %151, i1 noundef zeroext true)
  %152 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %50, i64 noundef 0, i64 noundef 3, ptr noundef %152, i1 noundef zeroext true)
  %153 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %51, i64 noundef 0, i64 noundef 3, ptr noundef %153, i1 noundef zeroext true)
  %154 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %52, i64 noundef 0, i64 noundef 3, ptr noundef %154, i1 noundef zeroext true)
  %155 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %53, i64 noundef 0, i64 noundef 3, ptr noundef %155, i1 noundef zeroext true)
  %156 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %58, i64 noundef 0, i64 noundef 3, ptr noundef %156, i1 noundef zeroext true)
  %157 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %59, i64 noundef 0, i64 noundef 3, ptr noundef %157, i1 noundef zeroext true)
  %158 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %60, i64 noundef 0, i64 noundef 3, ptr noundef %158, i1 noundef zeroext true)
  %159 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %61, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %159, i1 noundef zeroext true)
  %160 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %62, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %160, i1 noundef zeroext true)
  %161 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %63, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %161, i1 noundef zeroext true)
  %162 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %120, i64 noundef 0, i64 noundef 3, ptr noundef %162, i1 noundef zeroext true)
  %163 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %121, i64 noundef 0, i64 noundef 3, ptr noundef %163, i1 noundef zeroext true)
  %164 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl16_hqrndstate_initEPvPNS_8ae_stateEb(ptr noundef %122, ptr noundef %164, i1 noundef zeroext true)
  %165 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14hqrndrandomizeEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %122, ptr noundef %165)
  store i8 0, ptr %6, align 1, !tbaa !5
  store i64 10, ptr %24, align 8, !tbaa !11
  store double 1.000000e-05, ptr %27, align 8, !tbaa !13
  store double 1.000000e-03, ptr %26, align 8, !tbaa !13
  store i8 0, ptr %7, align 1, !tbaa !5
  store i8 0, ptr %8, align 1, !tbaa !5
  store i8 0, ptr %9, align 1, !tbaa !5
  store i8 0, ptr %10, align 1, !tbaa !5
  store i8 0, ptr %11, align 1, !tbaa !5
  store i8 0, ptr %12, align 1, !tbaa !5
  store i8 0, ptr %13, align 1, !tbaa !5
  store i8 0, ptr %14, align 1, !tbaa !5
  store i8 0, ptr %15, align 1, !tbaa !5
  store i8 0, ptr %16, align 1, !tbaa !5
  store i8 0, ptr %17, align 1, !tbaa !5
  store i8 0, ptr %19, align 1, !tbaa !5
  store i8 0, ptr %20, align 1, !tbaa !5
  store i8 0, ptr %22, align 1, !tbaa !5
  store i8 0, ptr %21, align 1, !tbaa !5
  %166 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL24testspline2dunit_testnanPbPN11alglib_impl8ae_stateE(ptr noundef %18, ptr noundef %166)
  %167 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL41testspline2dunit_testfittingfastddmsolverPbPN11alglib_impl8ae_stateE(ptr noundef %19, ptr noundef %167)
  %168 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL33testspline2dunit_testfittingpriorPbPN11alglib_impl8ae_stateE(ptr noundef %22, ptr noundef %168)
  %169 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL39testspline2dunit_testfittingblocksolverPbPN11alglib_impl8ae_stateE(ptr noundef %20, ptr noundef %169)
  %170 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL35testspline2dunit_testfittingpenaltyPbPN11alglib_impl8ae_stateE(ptr noundef %21, ptr noundef %170)
  store i64 2, ptr %71, align 8, !tbaa !11
  br label %171

171:                                              ; preds = %3381, %2
  %172 = load i64, ptr %71, align 8, !tbaa !11
  %173 = icmp sle i64 %172, 7
  br i1 %173, label %174, label %3384

174:                                              ; preds = %171
  store i64 2, ptr %72, align 8, !tbaa !11
  br label %175

175:                                              ; preds = %3377, %174
  %176 = load i64, ptr %72, align 8, !tbaa !11
  %177 = icmp sle i64 %176, 7
  br i1 %177, label %178, label %3380

178:                                              ; preds = %175
  %179 = load ptr, ptr %4, align 8, !tbaa !9
  %180 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 2, ptr noundef %179)
  %181 = add nsw i64 %180, 2
  store i64 %181, ptr %73, align 8, !tbaa !11
  %182 = load i64, ptr %71, align 8, !tbaa !11
  %183 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %28, i64 noundef %182, ptr noundef %183)
  %184 = load i64, ptr %72, align 8, !tbaa !11
  %185 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %29, i64 noundef %184, ptr noundef %185)
  %186 = load i64, ptr %71, align 8, !tbaa !11
  %187 = mul nsw i64 2, %186
  %188 = sub nsw i64 %187, 1
  %189 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %32, i64 noundef %188, ptr noundef %189)
  %190 = load i64, ptr %72, align 8, !tbaa !11
  %191 = mul nsw i64 2, %190
  %192 = sub nsw i64 %191, 1
  %193 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %33, i64 noundef %192, ptr noundef %193)
  %194 = load i64, ptr %72, align 8, !tbaa !11
  %195 = load i64, ptr %71, align 8, !tbaa !11
  %196 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %61, i64 noundef %194, i64 noundef %195, ptr noundef %196)
  %197 = load i64, ptr %72, align 8, !tbaa !11
  %198 = load i64, ptr %71, align 8, !tbaa !11
  %199 = mul nsw i64 %197, %198
  %200 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %34, i64 noundef %199, ptr noundef %200)
  %201 = load i64, ptr %72, align 8, !tbaa !11
  %202 = load i64, ptr %71, align 8, !tbaa !11
  %203 = mul nsw i64 %201, %202
  %204 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %37, i64 noundef %203, ptr noundef %204)
  %205 = load i64, ptr %72, align 8, !tbaa !11
  %206 = load i64, ptr %71, align 8, !tbaa !11
  %207 = mul nsw i64 %205, %206
  %208 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %39, i64 noundef %207, ptr noundef %208)
  %209 = load i64, ptr %72, align 8, !tbaa !11
  %210 = load i64, ptr %71, align 8, !tbaa !11
  %211 = mul nsw i64 %209, %210
  %212 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %41, i64 noundef %211, ptr noundef %212)
  %213 = load i64, ptr %72, align 8, !tbaa !11
  %214 = load i64, ptr %71, align 8, !tbaa !11
  %215 = mul nsw i64 %213, %214
  %216 = load i64, ptr %73, align 8, !tbaa !11
  %217 = mul nsw i64 %215, %216
  %218 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %35, i64 noundef %217, ptr noundef %218)
  %219 = load i64, ptr %72, align 8, !tbaa !11
  %220 = load i64, ptr %71, align 8, !tbaa !11
  %221 = mul nsw i64 %219, %220
  %222 = load i64, ptr %73, align 8, !tbaa !11
  %223 = mul nsw i64 %221, %222
  %224 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %38, i64 noundef %223, ptr noundef %224)
  %225 = load i64, ptr %72, align 8, !tbaa !11
  %226 = load i64, ptr %71, align 8, !tbaa !11
  %227 = mul nsw i64 %225, %226
  %228 = load i64, ptr %73, align 8, !tbaa !11
  %229 = mul nsw i64 %227, %228
  %230 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %40, i64 noundef %229, ptr noundef %230)
  %231 = load i64, ptr %72, align 8, !tbaa !11
  %232 = load i64, ptr %71, align 8, !tbaa !11
  %233 = mul nsw i64 %231, %232
  %234 = load i64, ptr %73, align 8, !tbaa !11
  %235 = mul nsw i64 %233, %234
  %236 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %42, i64 noundef %235, ptr noundef %236)
  %237 = load i64, ptr %71, align 8, !tbaa !11
  %238 = load i64, ptr %72, align 8, !tbaa !11
  %239 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %63, i64 noundef %237, i64 noundef %238, ptr noundef %239)
  store i64 1, ptr %23, align 8, !tbaa !11
  br label %240

240:                                              ; preds = %3373, %178
  %241 = load i64, ptr %23, align 8, !tbaa !11
  %242 = load i64, ptr %24, align 8, !tbaa !11
  %243 = icmp sle i64 %241, %242
  br i1 %243, label %244, label %3376

244:                                              ; preds = %240
  %245 = load ptr, ptr %4, align 8, !tbaa !9
  %246 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %245)
  %247 = fsub double -1.000000e+00, %246
  store double %247, ptr %64, align 8, !tbaa !13
  %248 = load ptr, ptr %4, align 8, !tbaa !9
  %249 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %248)
  %250 = fadd double 1.000000e+00, %249
  store double %250, ptr %66, align 8, !tbaa !13
  %251 = load ptr, ptr %4, align 8, !tbaa !9
  %252 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %251)
  %253 = fsub double -1.000000e+00, %252
  store double %253, ptr %65, align 8, !tbaa !13
  %254 = load ptr, ptr %4, align 8, !tbaa !9
  %255 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %254)
  %256 = fadd double 1.000000e+00, %255
  store double %256, ptr %67, align 8, !tbaa !13
  store i64 0, ptr %69, align 8, !tbaa !11
  br label %257

257:                                              ; preds = %341, %244
  %258 = load i64, ptr %69, align 8, !tbaa !11
  %259 = load i64, ptr %71, align 8, !tbaa !11
  %260 = sub nsw i64 %259, 1
  %261 = icmp sle i64 %258, %260
  br i1 %261, label %262, label %344

262:                                              ; preds = %257
  %263 = load double, ptr %66, align 8, !tbaa !13
  %264 = load double, ptr %64, align 8, !tbaa !13
  %265 = fadd double %263, %264
  %266 = load double, ptr %66, align 8, !tbaa !13
  %267 = load double, ptr %64, align 8, !tbaa !13
  %268 = fsub double %266, %267
  %269 = fmul double 5.000000e-01, %268
  %270 = load i64, ptr %69, align 8, !tbaa !11
  %271 = mul nsw i64 2, %270
  %272 = add nsw i64 %271, 1
  %273 = sitofp i64 %272 to double
  %274 = fmul double 0x400921FB54442D18, %273
  %275 = load i64, ptr %71, align 8, !tbaa !11
  %276 = mul nsw i64 2, %275
  %277 = sitofp i64 %276 to double
  %278 = fdiv double %274, %277
  %279 = load ptr, ptr %4, align 8, !tbaa !9
  %280 = call noundef double @_ZN11alglib_impl6ae_cosEdPNS_8ae_stateE(double noundef %278, ptr noundef %279)
  %281 = fmul double %269, %280
  %282 = fneg double %281
  %283 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %265, double %282)
  %284 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %285 = load ptr, ptr %284, align 8, !tbaa !15
  %286 = load i64, ptr %69, align 8, !tbaa !11
  %287 = getelementptr inbounds double, ptr %285, i64 %286
  store double %283, ptr %287, align 8, !tbaa !13
  %288 = load i64, ptr %69, align 8, !tbaa !11
  %289 = icmp eq i64 %288, 0
  br i1 %289, label %290, label %296

290:                                              ; preds = %262
  %291 = load double, ptr %64, align 8, !tbaa !13
  %292 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %293 = load ptr, ptr %292, align 8, !tbaa !15
  %294 = load i64, ptr %69, align 8, !tbaa !11
  %295 = getelementptr inbounds double, ptr %293, i64 %294
  store double %291, ptr %295, align 8, !tbaa !13
  br label %296

296:                                              ; preds = %290, %262
  %297 = load i64, ptr %69, align 8, !tbaa !11
  %298 = load i64, ptr %71, align 8, !tbaa !11
  %299 = sub nsw i64 %298, 1
  %300 = icmp eq i64 %297, %299
  br i1 %300, label %301, label %307

301:                                              ; preds = %296
  %302 = load double, ptr %66, align 8, !tbaa !13
  %303 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %304 = load ptr, ptr %303, align 8, !tbaa !15
  %305 = load i64, ptr %69, align 8, !tbaa !11
  %306 = getelementptr inbounds double, ptr %304, i64 %305
  store double %302, ptr %306, align 8, !tbaa !13
  br label %307

307:                                              ; preds = %301, %296
  %308 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %309 = load ptr, ptr %308, align 8, !tbaa !15
  %310 = load i64, ptr %69, align 8, !tbaa !11
  %311 = getelementptr inbounds double, ptr %309, i64 %310
  %312 = load double, ptr %311, align 8, !tbaa !13
  %313 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %32, i32 0, i32 4
  %314 = load ptr, ptr %313, align 8, !tbaa !15
  %315 = load i64, ptr %69, align 8, !tbaa !11
  %316 = mul nsw i64 2, %315
  %317 = getelementptr inbounds double, ptr %314, i64 %316
  store double %312, ptr %317, align 8, !tbaa !13
  %318 = load i64, ptr %69, align 8, !tbaa !11
  %319 = icmp sgt i64 %318, 0
  br i1 %319, label %320, label %340

320:                                              ; preds = %307
  %321 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %322 = load ptr, ptr %321, align 8, !tbaa !15
  %323 = load i64, ptr %69, align 8, !tbaa !11
  %324 = getelementptr inbounds double, ptr %322, i64 %323
  %325 = load double, ptr %324, align 8, !tbaa !13
  %326 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %327 = load ptr, ptr %326, align 8, !tbaa !15
  %328 = load i64, ptr %69, align 8, !tbaa !11
  %329 = sub nsw i64 %328, 1
  %330 = getelementptr inbounds double, ptr %327, i64 %329
  %331 = load double, ptr %330, align 8, !tbaa !13
  %332 = fadd double %325, %331
  %333 = fmul double 5.000000e-01, %332
  %334 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %32, i32 0, i32 4
  %335 = load ptr, ptr %334, align 8, !tbaa !15
  %336 = load i64, ptr %69, align 8, !tbaa !11
  %337 = mul nsw i64 2, %336
  %338 = sub nsw i64 %337, 1
  %339 = getelementptr inbounds double, ptr %335, i64 %338
  store double %333, ptr %339, align 8, !tbaa !13
  br label %340

340:                                              ; preds = %320, %307
  br label %341

341:                                              ; preds = %340
  %342 = load i64, ptr %69, align 8, !tbaa !11
  %343 = add nsw i64 %342, 1
  store i64 %343, ptr %69, align 8, !tbaa !11
  br label %257, !llvm.loop !16

344:                                              ; preds = %257
  %345 = load i64, ptr %71, align 8, !tbaa !11
  %346 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %345, ptr noundef %28, ptr noundef %120, ptr noundef %346)
  store i64 0, ptr %69, align 8, !tbaa !11
  br label %347

347:                                              ; preds = %380, %344
  %348 = load i64, ptr %69, align 8, !tbaa !11
  %349 = load i64, ptr %71, align 8, !tbaa !11
  %350 = sub nsw i64 %349, 1
  %351 = icmp sle i64 %348, %350
  br i1 %351, label %352, label %383

352:                                              ; preds = %347
  %353 = load i64, ptr %71, align 8, !tbaa !11
  %354 = load ptr, ptr %4, align 8, !tbaa !9
  %355 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef %353, ptr noundef %354)
  store i64 %355, ptr %70, align 8, !tbaa !11
  %356 = load i64, ptr %70, align 8, !tbaa !11
  %357 = load i64, ptr %69, align 8, !tbaa !11
  %358 = icmp ne i64 %356, %357
  br i1 %358, label %359, label %379

359:                                              ; preds = %352
  %360 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %361 = load ptr, ptr %360, align 8, !tbaa !15
  %362 = load i64, ptr %69, align 8, !tbaa !11
  %363 = getelementptr inbounds double, ptr %361, i64 %362
  %364 = load double, ptr %363, align 8, !tbaa !13
  store double %364, ptr %77, align 8, !tbaa !13
  %365 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %366 = load ptr, ptr %365, align 8, !tbaa !15
  %367 = load i64, ptr %70, align 8, !tbaa !11
  %368 = getelementptr inbounds double, ptr %366, i64 %367
  %369 = load double, ptr %368, align 8, !tbaa !13
  %370 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %371 = load ptr, ptr %370, align 8, !tbaa !15
  %372 = load i64, ptr %69, align 8, !tbaa !11
  %373 = getelementptr inbounds double, ptr %371, i64 %372
  store double %369, ptr %373, align 8, !tbaa !13
  %374 = load double, ptr %77, align 8, !tbaa !13
  %375 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %376 = load ptr, ptr %375, align 8, !tbaa !15
  %377 = load i64, ptr %70, align 8, !tbaa !11
  %378 = getelementptr inbounds double, ptr %376, i64 %377
  store double %374, ptr %378, align 8, !tbaa !13
  br label %379

379:                                              ; preds = %359, %352
  br label %380

380:                                              ; preds = %379
  %381 = load i64, ptr %69, align 8, !tbaa !11
  %382 = add nsw i64 %381, 1
  store i64 %382, ptr %69, align 8, !tbaa !11
  br label %347, !llvm.loop !18

383:                                              ; preds = %347
  store i64 0, ptr %68, align 8, !tbaa !11
  br label %384

384:                                              ; preds = %468, %383
  %385 = load i64, ptr %68, align 8, !tbaa !11
  %386 = load i64, ptr %72, align 8, !tbaa !11
  %387 = sub nsw i64 %386, 1
  %388 = icmp sle i64 %385, %387
  br i1 %388, label %389, label %471

389:                                              ; preds = %384
  %390 = load double, ptr %67, align 8, !tbaa !13
  %391 = load double, ptr %65, align 8, !tbaa !13
  %392 = fadd double %390, %391
  %393 = load double, ptr %67, align 8, !tbaa !13
  %394 = load double, ptr %65, align 8, !tbaa !13
  %395 = fsub double %393, %394
  %396 = fmul double 5.000000e-01, %395
  %397 = load i64, ptr %68, align 8, !tbaa !11
  %398 = mul nsw i64 2, %397
  %399 = add nsw i64 %398, 1
  %400 = sitofp i64 %399 to double
  %401 = fmul double 0x400921FB54442D18, %400
  %402 = load i64, ptr %72, align 8, !tbaa !11
  %403 = mul nsw i64 2, %402
  %404 = sitofp i64 %403 to double
  %405 = fdiv double %401, %404
  %406 = load ptr, ptr %4, align 8, !tbaa !9
  %407 = call noundef double @_ZN11alglib_impl6ae_cosEdPNS_8ae_stateE(double noundef %405, ptr noundef %406)
  %408 = fmul double %396, %407
  %409 = fneg double %408
  %410 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %392, double %409)
  %411 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %412 = load ptr, ptr %411, align 8, !tbaa !15
  %413 = load i64, ptr %68, align 8, !tbaa !11
  %414 = getelementptr inbounds double, ptr %412, i64 %413
  store double %410, ptr %414, align 8, !tbaa !13
  %415 = load i64, ptr %68, align 8, !tbaa !11
  %416 = icmp eq i64 %415, 0
  br i1 %416, label %417, label %423

417:                                              ; preds = %389
  %418 = load double, ptr %65, align 8, !tbaa !13
  %419 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %420 = load ptr, ptr %419, align 8, !tbaa !15
  %421 = load i64, ptr %68, align 8, !tbaa !11
  %422 = getelementptr inbounds double, ptr %420, i64 %421
  store double %418, ptr %422, align 8, !tbaa !13
  br label %423

423:                                              ; preds = %417, %389
  %424 = load i64, ptr %68, align 8, !tbaa !11
  %425 = load i64, ptr %72, align 8, !tbaa !11
  %426 = sub nsw i64 %425, 1
  %427 = icmp eq i64 %424, %426
  br i1 %427, label %428, label %434

428:                                              ; preds = %423
  %429 = load double, ptr %67, align 8, !tbaa !13
  %430 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %431 = load ptr, ptr %430, align 8, !tbaa !15
  %432 = load i64, ptr %68, align 8, !tbaa !11
  %433 = getelementptr inbounds double, ptr %431, i64 %432
  store double %429, ptr %433, align 8, !tbaa !13
  br label %434

434:                                              ; preds = %428, %423
  %435 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %436 = load ptr, ptr %435, align 8, !tbaa !15
  %437 = load i64, ptr %68, align 8, !tbaa !11
  %438 = getelementptr inbounds double, ptr %436, i64 %437
  %439 = load double, ptr %438, align 8, !tbaa !13
  %440 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %33, i32 0, i32 4
  %441 = load ptr, ptr %440, align 8, !tbaa !15
  %442 = load i64, ptr %68, align 8, !tbaa !11
  %443 = mul nsw i64 2, %442
  %444 = getelementptr inbounds double, ptr %441, i64 %443
  store double %439, ptr %444, align 8, !tbaa !13
  %445 = load i64, ptr %68, align 8, !tbaa !11
  %446 = icmp sgt i64 %445, 0
  br i1 %446, label %447, label %467

447:                                              ; preds = %434
  %448 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %449 = load ptr, ptr %448, align 8, !tbaa !15
  %450 = load i64, ptr %68, align 8, !tbaa !11
  %451 = getelementptr inbounds double, ptr %449, i64 %450
  %452 = load double, ptr %451, align 8, !tbaa !13
  %453 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %454 = load ptr, ptr %453, align 8, !tbaa !15
  %455 = load i64, ptr %68, align 8, !tbaa !11
  %456 = sub nsw i64 %455, 1
  %457 = getelementptr inbounds double, ptr %454, i64 %456
  %458 = load double, ptr %457, align 8, !tbaa !13
  %459 = fadd double %452, %458
  %460 = fmul double 5.000000e-01, %459
  %461 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %33, i32 0, i32 4
  %462 = load ptr, ptr %461, align 8, !tbaa !15
  %463 = load i64, ptr %68, align 8, !tbaa !11
  %464 = mul nsw i64 2, %463
  %465 = sub nsw i64 %464, 1
  %466 = getelementptr inbounds double, ptr %462, i64 %465
  store double %460, ptr %466, align 8, !tbaa !13
  br label %467

467:                                              ; preds = %447, %434
  br label %468

468:                                              ; preds = %467
  %469 = load i64, ptr %68, align 8, !tbaa !11
  %470 = add nsw i64 %469, 1
  store i64 %470, ptr %68, align 8, !tbaa !11
  br label %384, !llvm.loop !19

471:                                              ; preds = %384
  %472 = load i64, ptr %72, align 8, !tbaa !11
  %473 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %472, ptr noundef %29, ptr noundef %121, ptr noundef %473)
  store i64 0, ptr %68, align 8, !tbaa !11
  br label %474

474:                                              ; preds = %507, %471
  %475 = load i64, ptr %68, align 8, !tbaa !11
  %476 = load i64, ptr %72, align 8, !tbaa !11
  %477 = sub nsw i64 %476, 1
  %478 = icmp sle i64 %475, %477
  br i1 %478, label %479, label %510

479:                                              ; preds = %474
  %480 = load i64, ptr %72, align 8, !tbaa !11
  %481 = load ptr, ptr %4, align 8, !tbaa !9
  %482 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef %480, ptr noundef %481)
  store i64 %482, ptr %70, align 8, !tbaa !11
  %483 = load i64, ptr %70, align 8, !tbaa !11
  %484 = load i64, ptr %68, align 8, !tbaa !11
  %485 = icmp ne i64 %483, %484
  br i1 %485, label %486, label %506

486:                                              ; preds = %479
  %487 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %488 = load ptr, ptr %487, align 8, !tbaa !15
  %489 = load i64, ptr %68, align 8, !tbaa !11
  %490 = getelementptr inbounds double, ptr %488, i64 %489
  %491 = load double, ptr %490, align 8, !tbaa !13
  store double %491, ptr %77, align 8, !tbaa !13
  %492 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %493 = load ptr, ptr %492, align 8, !tbaa !15
  %494 = load i64, ptr %70, align 8, !tbaa !11
  %495 = getelementptr inbounds double, ptr %493, i64 %494
  %496 = load double, ptr %495, align 8, !tbaa !13
  %497 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %498 = load ptr, ptr %497, align 8, !tbaa !15
  %499 = load i64, ptr %68, align 8, !tbaa !11
  %500 = getelementptr inbounds double, ptr %498, i64 %499
  store double %496, ptr %500, align 8, !tbaa !13
  %501 = load double, ptr %77, align 8, !tbaa !13
  %502 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %503 = load ptr, ptr %502, align 8, !tbaa !15
  %504 = load i64, ptr %70, align 8, !tbaa !11
  %505 = getelementptr inbounds double, ptr %503, i64 %504
  store double %501, ptr %505, align 8, !tbaa !13
  br label %506

506:                                              ; preds = %486, %479
  br label %507

507:                                              ; preds = %506
  %508 = load i64, ptr %68, align 8, !tbaa !11
  %509 = add nsw i64 %508, 1
  store i64 %509, ptr %68, align 8, !tbaa !11
  br label %474, !llvm.loop !20

510:                                              ; preds = %474
  store i64 0, ptr %68, align 8, !tbaa !11
  br label %511

511:                                              ; preds = %622, %510
  %512 = load i64, ptr %68, align 8, !tbaa !11
  %513 = load i64, ptr %72, align 8, !tbaa !11
  %514 = sub nsw i64 %513, 1
  %515 = icmp sle i64 %512, %514
  br i1 %515, label %516, label %625

516:                                              ; preds = %511
  store i64 0, ptr %69, align 8, !tbaa !11
  br label %517

517:                                              ; preds = %618, %516
  %518 = load i64, ptr %69, align 8, !tbaa !11
  %519 = load i64, ptr %71, align 8, !tbaa !11
  %520 = sub nsw i64 %519, 1
  %521 = icmp sle i64 %518, %520
  br i1 %521, label %522, label %621

522:                                              ; preds = %517
  %523 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %524 = load ptr, ptr %523, align 8, !tbaa !15
  %525 = load i64, ptr %69, align 8, !tbaa !11
  %526 = getelementptr inbounds double, ptr %524, i64 %525
  %527 = load double, ptr %526, align 8, !tbaa !13
  %528 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %529 = load ptr, ptr %528, align 8, !tbaa !15
  %530 = load i64, ptr %68, align 8, !tbaa !11
  %531 = getelementptr inbounds double, ptr %529, i64 %530
  %532 = load double, ptr %531, align 8, !tbaa !13
  %533 = load ptr, ptr %4, align 8, !tbaa !9
  %534 = call noundef double @_ZL23testspline2dunit_func1vddlPN11alglib_impl8ae_stateE(double noundef %527, double noundef %532, i64 noundef 0, ptr noundef %533)
  %535 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %61, i32 0, i32 6
  %536 = load ptr, ptr %535, align 8, !tbaa !15
  %537 = load i64, ptr %68, align 8, !tbaa !11
  %538 = getelementptr inbounds ptr, ptr %536, i64 %537
  %539 = load ptr, ptr %538, align 8, !tbaa !9
  %540 = load i64, ptr %69, align 8, !tbaa !11
  %541 = getelementptr inbounds double, ptr %539, i64 %540
  store double %534, ptr %541, align 8, !tbaa !13
  %542 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %61, i32 0, i32 6
  %543 = load ptr, ptr %542, align 8, !tbaa !15
  %544 = load i64, ptr %68, align 8, !tbaa !11
  %545 = getelementptr inbounds ptr, ptr %543, i64 %544
  %546 = load ptr, ptr %545, align 8, !tbaa !9
  %547 = load i64, ptr %69, align 8, !tbaa !11
  %548 = getelementptr inbounds double, ptr %546, i64 %547
  %549 = load double, ptr %548, align 8, !tbaa !13
  %550 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %34, i32 0, i32 4
  %551 = load ptr, ptr %550, align 8, !tbaa !15
  %552 = load i64, ptr %68, align 8, !tbaa !11
  %553 = load i64, ptr %71, align 8, !tbaa !11
  %554 = mul nsw i64 %552, %553
  %555 = load i64, ptr %69, align 8, !tbaa !11
  %556 = add nsw i64 %554, %555
  %557 = getelementptr inbounds double, ptr %551, i64 %556
  store double %549, ptr %557, align 8, !tbaa !13
  %558 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %559 = load ptr, ptr %558, align 8, !tbaa !15
  %560 = load i64, ptr %69, align 8, !tbaa !11
  %561 = getelementptr inbounds double, ptr %559, i64 %560
  %562 = load double, ptr %561, align 8, !tbaa !13
  %563 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %564 = load ptr, ptr %563, align 8, !tbaa !15
  %565 = load i64, ptr %68, align 8, !tbaa !11
  %566 = getelementptr inbounds double, ptr %564, i64 %565
  %567 = load double, ptr %566, align 8, !tbaa !13
  %568 = load ptr, ptr %4, align 8, !tbaa !9
  %569 = call noundef double @_ZL25testspline2dunit_func1vdxddlPN11alglib_impl8ae_stateE(double noundef %562, double noundef %567, i64 noundef 0, ptr noundef %568)
  %570 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %37, i32 0, i32 4
  %571 = load ptr, ptr %570, align 8, !tbaa !15
  %572 = load i64, ptr %68, align 8, !tbaa !11
  %573 = load i64, ptr %71, align 8, !tbaa !11
  %574 = mul nsw i64 %572, %573
  %575 = load i64, ptr %69, align 8, !tbaa !11
  %576 = add nsw i64 %574, %575
  %577 = getelementptr inbounds double, ptr %571, i64 %576
  store double %569, ptr %577, align 8, !tbaa !13
  %578 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %579 = load ptr, ptr %578, align 8, !tbaa !15
  %580 = load i64, ptr %69, align 8, !tbaa !11
  %581 = getelementptr inbounds double, ptr %579, i64 %580
  %582 = load double, ptr %581, align 8, !tbaa !13
  %583 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %584 = load ptr, ptr %583, align 8, !tbaa !15
  %585 = load i64, ptr %68, align 8, !tbaa !11
  %586 = getelementptr inbounds double, ptr %584, i64 %585
  %587 = load double, ptr %586, align 8, !tbaa !13
  %588 = load ptr, ptr %4, align 8, !tbaa !9
  %589 = call noundef double @_ZL25testspline2dunit_func1vdyddlPN11alglib_impl8ae_stateE(double noundef %582, double noundef %587, i64 noundef 0, ptr noundef %588)
  %590 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %39, i32 0, i32 4
  %591 = load ptr, ptr %590, align 8, !tbaa !15
  %592 = load i64, ptr %68, align 8, !tbaa !11
  %593 = load i64, ptr %71, align 8, !tbaa !11
  %594 = mul nsw i64 %592, %593
  %595 = load i64, ptr %69, align 8, !tbaa !11
  %596 = add nsw i64 %594, %595
  %597 = getelementptr inbounds double, ptr %591, i64 %596
  store double %589, ptr %597, align 8, !tbaa !13
  %598 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %599 = load ptr, ptr %598, align 8, !tbaa !15
  %600 = load i64, ptr %69, align 8, !tbaa !11
  %601 = getelementptr inbounds double, ptr %599, i64 %600
  %602 = load double, ptr %601, align 8, !tbaa !13
  %603 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %604 = load ptr, ptr %603, align 8, !tbaa !15
  %605 = load i64, ptr %68, align 8, !tbaa !11
  %606 = getelementptr inbounds double, ptr %604, i64 %605
  %607 = load double, ptr %606, align 8, !tbaa !13
  %608 = load ptr, ptr %4, align 8, !tbaa !9
  %609 = call noundef double @_ZL27testspline2dunit_func1vdxdyddlPN11alglib_impl8ae_stateE(double noundef %602, double noundef %607, i64 noundef 0, ptr noundef %608)
  %610 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %41, i32 0, i32 4
  %611 = load ptr, ptr %610, align 8, !tbaa !15
  %612 = load i64, ptr %68, align 8, !tbaa !11
  %613 = load i64, ptr %71, align 8, !tbaa !11
  %614 = mul nsw i64 %612, %613
  %615 = load i64, ptr %69, align 8, !tbaa !11
  %616 = add nsw i64 %614, %615
  %617 = getelementptr inbounds double, ptr %611, i64 %616
  store double %609, ptr %617, align 8, !tbaa !13
  br label %618

618:                                              ; preds = %522
  %619 = load i64, ptr %69, align 8, !tbaa !11
  %620 = add nsw i64 %619, 1
  store i64 %620, ptr %69, align 8, !tbaa !11
  br label %517, !llvm.loop !21

621:                                              ; preds = %517
  br label %622

622:                                              ; preds = %621
  %623 = load i64, ptr %68, align 8, !tbaa !11
  %624 = add nsw i64 %623, 1
  store i64 %624, ptr %68, align 8, !tbaa !11
  br label %511, !llvm.loop !22

625:                                              ; preds = %511
  store i64 0, ptr %68, align 8, !tbaa !11
  br label %626

626:                                              ; preds = %752, %625
  %627 = load i64, ptr %68, align 8, !tbaa !11
  %628 = load i64, ptr %71, align 8, !tbaa !11
  %629 = sub nsw i64 %628, 1
  %630 = icmp sle i64 %627, %629
  br i1 %630, label %631, label %755

631:                                              ; preds = %626
  store i64 0, ptr %69, align 8, !tbaa !11
  br label %632

632:                                              ; preds = %748, %631
  %633 = load i64, ptr %69, align 8, !tbaa !11
  %634 = load i64, ptr %72, align 8, !tbaa !11
  %635 = sub nsw i64 %634, 1
  %636 = icmp sle i64 %633, %635
  br i1 %636, label %637, label %751

637:                                              ; preds = %632
  store i64 0, ptr %70, align 8, !tbaa !11
  br label %638

638:                                              ; preds = %744, %637
  %639 = load i64, ptr %70, align 8, !tbaa !11
  %640 = load i64, ptr %73, align 8, !tbaa !11
  %641 = sub nsw i64 %640, 1
  %642 = icmp sle i64 %639, %641
  br i1 %642, label %643, label %747

643:                                              ; preds = %638
  %644 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %645 = load ptr, ptr %644, align 8, !tbaa !15
  %646 = load i64, ptr %68, align 8, !tbaa !11
  %647 = getelementptr inbounds double, ptr %645, i64 %646
  %648 = load double, ptr %647, align 8, !tbaa !13
  %649 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %650 = load ptr, ptr %649, align 8, !tbaa !15
  %651 = load i64, ptr %69, align 8, !tbaa !11
  %652 = getelementptr inbounds double, ptr %650, i64 %651
  %653 = load double, ptr %652, align 8, !tbaa !13
  %654 = load i64, ptr %70, align 8, !tbaa !11
  %655 = load ptr, ptr %4, align 8, !tbaa !9
  %656 = call noundef double @_ZL23testspline2dunit_func1vddlPN11alglib_impl8ae_stateE(double noundef %648, double noundef %653, i64 noundef %654, ptr noundef %655)
  %657 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %35, i32 0, i32 4
  %658 = load ptr, ptr %657, align 8, !tbaa !15
  %659 = load i64, ptr %73, align 8, !tbaa !11
  %660 = load i64, ptr %71, align 8, !tbaa !11
  %661 = load i64, ptr %69, align 8, !tbaa !11
  %662 = mul nsw i64 %660, %661
  %663 = load i64, ptr %68, align 8, !tbaa !11
  %664 = add nsw i64 %662, %663
  %665 = mul nsw i64 %659, %664
  %666 = load i64, ptr %70, align 8, !tbaa !11
  %667 = add nsw i64 %665, %666
  %668 = getelementptr inbounds double, ptr %658, i64 %667
  store double %656, ptr %668, align 8, !tbaa !13
  %669 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %670 = load ptr, ptr %669, align 8, !tbaa !15
  %671 = load i64, ptr %68, align 8, !tbaa !11
  %672 = getelementptr inbounds double, ptr %670, i64 %671
  %673 = load double, ptr %672, align 8, !tbaa !13
  %674 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %675 = load ptr, ptr %674, align 8, !tbaa !15
  %676 = load i64, ptr %69, align 8, !tbaa !11
  %677 = getelementptr inbounds double, ptr %675, i64 %676
  %678 = load double, ptr %677, align 8, !tbaa !13
  %679 = load i64, ptr %70, align 8, !tbaa !11
  %680 = load ptr, ptr %4, align 8, !tbaa !9
  %681 = call noundef double @_ZL25testspline2dunit_func1vdxddlPN11alglib_impl8ae_stateE(double noundef %673, double noundef %678, i64 noundef %679, ptr noundef %680)
  %682 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %38, i32 0, i32 4
  %683 = load ptr, ptr %682, align 8, !tbaa !15
  %684 = load i64, ptr %73, align 8, !tbaa !11
  %685 = load i64, ptr %71, align 8, !tbaa !11
  %686 = load i64, ptr %69, align 8, !tbaa !11
  %687 = mul nsw i64 %685, %686
  %688 = load i64, ptr %68, align 8, !tbaa !11
  %689 = add nsw i64 %687, %688
  %690 = mul nsw i64 %684, %689
  %691 = load i64, ptr %70, align 8, !tbaa !11
  %692 = add nsw i64 %690, %691
  %693 = getelementptr inbounds double, ptr %683, i64 %692
  store double %681, ptr %693, align 8, !tbaa !13
  %694 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %695 = load ptr, ptr %694, align 8, !tbaa !15
  %696 = load i64, ptr %68, align 8, !tbaa !11
  %697 = getelementptr inbounds double, ptr %695, i64 %696
  %698 = load double, ptr %697, align 8, !tbaa !13
  %699 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %700 = load ptr, ptr %699, align 8, !tbaa !15
  %701 = load i64, ptr %69, align 8, !tbaa !11
  %702 = getelementptr inbounds double, ptr %700, i64 %701
  %703 = load double, ptr %702, align 8, !tbaa !13
  %704 = load i64, ptr %70, align 8, !tbaa !11
  %705 = load ptr, ptr %4, align 8, !tbaa !9
  %706 = call noundef double @_ZL25testspline2dunit_func1vdyddlPN11alglib_impl8ae_stateE(double noundef %698, double noundef %703, i64 noundef %704, ptr noundef %705)
  %707 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %40, i32 0, i32 4
  %708 = load ptr, ptr %707, align 8, !tbaa !15
  %709 = load i64, ptr %73, align 8, !tbaa !11
  %710 = load i64, ptr %71, align 8, !tbaa !11
  %711 = load i64, ptr %69, align 8, !tbaa !11
  %712 = mul nsw i64 %710, %711
  %713 = load i64, ptr %68, align 8, !tbaa !11
  %714 = add nsw i64 %712, %713
  %715 = mul nsw i64 %709, %714
  %716 = load i64, ptr %70, align 8, !tbaa !11
  %717 = add nsw i64 %715, %716
  %718 = getelementptr inbounds double, ptr %708, i64 %717
  store double %706, ptr %718, align 8, !tbaa !13
  %719 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %720 = load ptr, ptr %719, align 8, !tbaa !15
  %721 = load i64, ptr %68, align 8, !tbaa !11
  %722 = getelementptr inbounds double, ptr %720, i64 %721
  %723 = load double, ptr %722, align 8, !tbaa !13
  %724 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %725 = load ptr, ptr %724, align 8, !tbaa !15
  %726 = load i64, ptr %69, align 8, !tbaa !11
  %727 = getelementptr inbounds double, ptr %725, i64 %726
  %728 = load double, ptr %727, align 8, !tbaa !13
  %729 = load i64, ptr %70, align 8, !tbaa !11
  %730 = load ptr, ptr %4, align 8, !tbaa !9
  %731 = call noundef double @_ZL27testspline2dunit_func1vdxdyddlPN11alglib_impl8ae_stateE(double noundef %723, double noundef %728, i64 noundef %729, ptr noundef %730)
  %732 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %42, i32 0, i32 4
  %733 = load ptr, ptr %732, align 8, !tbaa !15
  %734 = load i64, ptr %73, align 8, !tbaa !11
  %735 = load i64, ptr %71, align 8, !tbaa !11
  %736 = load i64, ptr %69, align 8, !tbaa !11
  %737 = mul nsw i64 %735, %736
  %738 = load i64, ptr %68, align 8, !tbaa !11
  %739 = add nsw i64 %737, %738
  %740 = mul nsw i64 %734, %739
  %741 = load i64, ptr %70, align 8, !tbaa !11
  %742 = add nsw i64 %740, %741
  %743 = getelementptr inbounds double, ptr %733, i64 %742
  store double %731, ptr %743, align 8, !tbaa !13
  br label %744

744:                                              ; preds = %643
  %745 = load i64, ptr %70, align 8, !tbaa !11
  %746 = add nsw i64 %745, 1
  store i64 %746, ptr %70, align 8, !tbaa !11
  br label %638, !llvm.loop !23

747:                                              ; preds = %638
  br label %748

748:                                              ; preds = %747
  %749 = load i64, ptr %69, align 8, !tbaa !11
  %750 = add nsw i64 %749, 1
  store i64 %750, ptr %69, align 8, !tbaa !11
  br label %632, !llvm.loop !24

751:                                              ; preds = %632
  br label %752

752:                                              ; preds = %751
  %753 = load i64, ptr %68, align 8, !tbaa !11
  %754 = add nsw i64 %753, 1
  store i64 %754, ptr %68, align 8, !tbaa !11
  br label %626, !llvm.loop !25

755:                                              ; preds = %626
  %756 = load ptr, ptr %4, align 8, !tbaa !9
  %757 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef %122, i64 noundef 3, ptr noundef %756)
  %758 = add nsw i64 0, %757
  store i64 %758, ptr %54, align 8, !tbaa !11
  %759 = load ptr, ptr %4, align 8, !tbaa !9
  %760 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef %122, i64 noundef 3, ptr noundef %759)
  %761 = add nsw i64 0, %760
  store i64 %761, ptr %55, align 8, !tbaa !11
  %762 = load ptr, ptr %4, align 8, !tbaa !9
  %763 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef %122, i64 noundef 3, ptr noundef %762)
  %764 = add nsw i64 0, %763
  store i64 %764, ptr %56, align 8, !tbaa !11
  %765 = load ptr, ptr %4, align 8, !tbaa !9
  %766 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef %122, i64 noundef 3, ptr noundef %765)
  %767 = add nsw i64 0, %766
  store i64 %767, ptr %57, align 8, !tbaa !11
  %768 = load i64, ptr %71, align 8, !tbaa !11
  %769 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %43, i64 noundef %768, ptr noundef %769)
  %770 = load i64, ptr %71, align 8, !tbaa !11
  %771 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %44, i64 noundef %770, ptr noundef %771)
  %772 = load i64, ptr %72, align 8, !tbaa !11
  %773 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %45, i64 noundef %772, ptr noundef %773)
  %774 = load i64, ptr %72, align 8, !tbaa !11
  %775 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %46, i64 noundef %774, ptr noundef %775)
  %776 = load i64, ptr %73, align 8, !tbaa !11
  %777 = load i64, ptr %71, align 8, !tbaa !11
  %778 = mul nsw i64 %776, %777
  %779 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %48, i64 noundef %778, ptr noundef %779)
  %780 = load i64, ptr %73, align 8, !tbaa !11
  %781 = load i64, ptr %71, align 8, !tbaa !11
  %782 = mul nsw i64 %780, %781
  %783 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %49, i64 noundef %782, ptr noundef %783)
  %784 = load i64, ptr %73, align 8, !tbaa !11
  %785 = load i64, ptr %72, align 8, !tbaa !11
  %786 = mul nsw i64 %784, %785
  %787 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %50, i64 noundef %786, ptr noundef %787)
  %788 = load i64, ptr %73, align 8, !tbaa !11
  %789 = load i64, ptr %72, align 8, !tbaa !11
  %790 = mul nsw i64 %788, %789
  %791 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %51, i64 noundef %790, ptr noundef %791)
  store i64 0, ptr %68, align 8, !tbaa !11
  br label %792

792:                                              ; preds = %872, %755
  %793 = load i64, ptr %68, align 8, !tbaa !11
  %794 = load i64, ptr %71, align 8, !tbaa !11
  %795 = sub nsw i64 %794, 1
  %796 = icmp sle i64 %793, %795
  br i1 %796, label %797, label %875

797:                                              ; preds = %792
  store i64 0, ptr %70, align 8, !tbaa !11
  br label %798

798:                                              ; preds = %868, %797
  %799 = load i64, ptr %70, align 8, !tbaa !11
  %800 = load i64, ptr %73, align 8, !tbaa !11
  %801 = sub nsw i64 %800, 1
  %802 = icmp sle i64 %799, %801
  br i1 %802, label %803, label %871

803:                                              ; preds = %798
  %804 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %805 = load ptr, ptr %804, align 8, !tbaa !15
  %806 = load i64, ptr %68, align 8, !tbaa !11
  %807 = getelementptr inbounds double, ptr %805, i64 %806
  %808 = load double, ptr %807, align 8, !tbaa !13
  %809 = load double, ptr %65, align 8, !tbaa !13
  %810 = load i64, ptr %70, align 8, !tbaa !11
  %811 = load ptr, ptr %4, align 8, !tbaa !9
  %812 = call noundef double @_ZL25testspline2dunit_func1vdyddlPN11alglib_impl8ae_stateE(double noundef %808, double noundef %809, i64 noundef %810, ptr noundef %811)
  %813 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %48, i32 0, i32 4
  %814 = load ptr, ptr %813, align 8, !tbaa !15
  %815 = load i64, ptr %68, align 8, !tbaa !11
  %816 = load i64, ptr %73, align 8, !tbaa !11
  %817 = mul nsw i64 %815, %816
  %818 = load i64, ptr %70, align 8, !tbaa !11
  %819 = add nsw i64 %817, %818
  %820 = getelementptr inbounds double, ptr %814, i64 %819
  store double %812, ptr %820, align 8, !tbaa !13
  %821 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %822 = load ptr, ptr %821, align 8, !tbaa !15
  %823 = load i64, ptr %68, align 8, !tbaa !11
  %824 = getelementptr inbounds double, ptr %822, i64 %823
  %825 = load double, ptr %824, align 8, !tbaa !13
  %826 = load double, ptr %67, align 8, !tbaa !13
  %827 = load i64, ptr %70, align 8, !tbaa !11
  %828 = load ptr, ptr %4, align 8, !tbaa !9
  %829 = call noundef double @_ZL25testspline2dunit_func1vdyddlPN11alglib_impl8ae_stateE(double noundef %825, double noundef %826, i64 noundef %827, ptr noundef %828)
  %830 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %49, i32 0, i32 4
  %831 = load ptr, ptr %830, align 8, !tbaa !15
  %832 = load i64, ptr %68, align 8, !tbaa !11
  %833 = load i64, ptr %73, align 8, !tbaa !11
  %834 = mul nsw i64 %832, %833
  %835 = load i64, ptr %70, align 8, !tbaa !11
  %836 = add nsw i64 %834, %835
  %837 = getelementptr inbounds double, ptr %831, i64 %836
  store double %829, ptr %837, align 8, !tbaa !13
  %838 = load i64, ptr %70, align 8, !tbaa !11
  %839 = icmp eq i64 %838, 0
  br i1 %839, label %840, label %867

840:                                              ; preds = %803
  %841 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %842 = load ptr, ptr %841, align 8, !tbaa !15
  %843 = load i64, ptr %68, align 8, !tbaa !11
  %844 = getelementptr inbounds double, ptr %842, i64 %843
  %845 = load double, ptr %844, align 8, !tbaa !13
  %846 = load double, ptr %65, align 8, !tbaa !13
  %847 = load i64, ptr %70, align 8, !tbaa !11
  %848 = load ptr, ptr %4, align 8, !tbaa !9
  %849 = call noundef double @_ZL25testspline2dunit_func1vdyddlPN11alglib_impl8ae_stateE(double noundef %845, double noundef %846, i64 noundef %847, ptr noundef %848)
  %850 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %43, i32 0, i32 4
  %851 = load ptr, ptr %850, align 8, !tbaa !15
  %852 = load i64, ptr %68, align 8, !tbaa !11
  %853 = getelementptr inbounds double, ptr %851, i64 %852
  store double %849, ptr %853, align 8, !tbaa !13
  %854 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %855 = load ptr, ptr %854, align 8, !tbaa !15
  %856 = load i64, ptr %68, align 8, !tbaa !11
  %857 = getelementptr inbounds double, ptr %855, i64 %856
  %858 = load double, ptr %857, align 8, !tbaa !13
  %859 = load double, ptr %67, align 8, !tbaa !13
  %860 = load i64, ptr %70, align 8, !tbaa !11
  %861 = load ptr, ptr %4, align 8, !tbaa !9
  %862 = call noundef double @_ZL25testspline2dunit_func1vdyddlPN11alglib_impl8ae_stateE(double noundef %858, double noundef %859, i64 noundef %860, ptr noundef %861)
  %863 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %44, i32 0, i32 4
  %864 = load ptr, ptr %863, align 8, !tbaa !15
  %865 = load i64, ptr %68, align 8, !tbaa !11
  %866 = getelementptr inbounds double, ptr %864, i64 %865
  store double %862, ptr %866, align 8, !tbaa !13
  br label %867

867:                                              ; preds = %840, %803
  br label %868

868:                                              ; preds = %867
  %869 = load i64, ptr %70, align 8, !tbaa !11
  %870 = add nsw i64 %869, 1
  store i64 %870, ptr %70, align 8, !tbaa !11
  br label %798, !llvm.loop !26

871:                                              ; preds = %798
  br label %872

872:                                              ; preds = %871
  %873 = load i64, ptr %68, align 8, !tbaa !11
  %874 = add nsw i64 %873, 1
  store i64 %874, ptr %68, align 8, !tbaa !11
  br label %792, !llvm.loop !27

875:                                              ; preds = %792
  store i64 0, ptr %69, align 8, !tbaa !11
  br label %876

876:                                              ; preds = %956, %875
  %877 = load i64, ptr %69, align 8, !tbaa !11
  %878 = load i64, ptr %72, align 8, !tbaa !11
  %879 = sub nsw i64 %878, 1
  %880 = icmp sle i64 %877, %879
  br i1 %880, label %881, label %959

881:                                              ; preds = %876
  store i64 0, ptr %70, align 8, !tbaa !11
  br label %882

882:                                              ; preds = %952, %881
  %883 = load i64, ptr %70, align 8, !tbaa !11
  %884 = load i64, ptr %73, align 8, !tbaa !11
  %885 = sub nsw i64 %884, 1
  %886 = icmp sle i64 %883, %885
  br i1 %886, label %887, label %955

887:                                              ; preds = %882
  %888 = load double, ptr %64, align 8, !tbaa !13
  %889 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %890 = load ptr, ptr %889, align 8, !tbaa !15
  %891 = load i64, ptr %69, align 8, !tbaa !11
  %892 = getelementptr inbounds double, ptr %890, i64 %891
  %893 = load double, ptr %892, align 8, !tbaa !13
  %894 = load i64, ptr %70, align 8, !tbaa !11
  %895 = load ptr, ptr %4, align 8, !tbaa !9
  %896 = call noundef double @_ZL25testspline2dunit_func1vdxddlPN11alglib_impl8ae_stateE(double noundef %888, double noundef %893, i64 noundef %894, ptr noundef %895)
  %897 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %50, i32 0, i32 4
  %898 = load ptr, ptr %897, align 8, !tbaa !15
  %899 = load i64, ptr %69, align 8, !tbaa !11
  %900 = load i64, ptr %73, align 8, !tbaa !11
  %901 = mul nsw i64 %899, %900
  %902 = load i64, ptr %70, align 8, !tbaa !11
  %903 = add nsw i64 %901, %902
  %904 = getelementptr inbounds double, ptr %898, i64 %903
  store double %896, ptr %904, align 8, !tbaa !13
  %905 = load double, ptr %66, align 8, !tbaa !13
  %906 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %907 = load ptr, ptr %906, align 8, !tbaa !15
  %908 = load i64, ptr %69, align 8, !tbaa !11
  %909 = getelementptr inbounds double, ptr %907, i64 %908
  %910 = load double, ptr %909, align 8, !tbaa !13
  %911 = load i64, ptr %70, align 8, !tbaa !11
  %912 = load ptr, ptr %4, align 8, !tbaa !9
  %913 = call noundef double @_ZL25testspline2dunit_func1vdxddlPN11alglib_impl8ae_stateE(double noundef %905, double noundef %910, i64 noundef %911, ptr noundef %912)
  %914 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %51, i32 0, i32 4
  %915 = load ptr, ptr %914, align 8, !tbaa !15
  %916 = load i64, ptr %69, align 8, !tbaa !11
  %917 = load i64, ptr %73, align 8, !tbaa !11
  %918 = mul nsw i64 %916, %917
  %919 = load i64, ptr %70, align 8, !tbaa !11
  %920 = add nsw i64 %918, %919
  %921 = getelementptr inbounds double, ptr %915, i64 %920
  store double %913, ptr %921, align 8, !tbaa !13
  %922 = load i64, ptr %70, align 8, !tbaa !11
  %923 = icmp eq i64 %922, 0
  br i1 %923, label %924, label %951

924:                                              ; preds = %887
  %925 = load double, ptr %64, align 8, !tbaa !13
  %926 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %927 = load ptr, ptr %926, align 8, !tbaa !15
  %928 = load i64, ptr %69, align 8, !tbaa !11
  %929 = getelementptr inbounds double, ptr %927, i64 %928
  %930 = load double, ptr %929, align 8, !tbaa !13
  %931 = load i64, ptr %70, align 8, !tbaa !11
  %932 = load ptr, ptr %4, align 8, !tbaa !9
  %933 = call noundef double @_ZL25testspline2dunit_func1vdxddlPN11alglib_impl8ae_stateE(double noundef %925, double noundef %930, i64 noundef %931, ptr noundef %932)
  %934 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %45, i32 0, i32 4
  %935 = load ptr, ptr %934, align 8, !tbaa !15
  %936 = load i64, ptr %69, align 8, !tbaa !11
  %937 = getelementptr inbounds double, ptr %935, i64 %936
  store double %933, ptr %937, align 8, !tbaa !13
  %938 = load double, ptr %66, align 8, !tbaa !13
  %939 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %940 = load ptr, ptr %939, align 8, !tbaa !15
  %941 = load i64, ptr %69, align 8, !tbaa !11
  %942 = getelementptr inbounds double, ptr %940, i64 %941
  %943 = load double, ptr %942, align 8, !tbaa !13
  %944 = load i64, ptr %70, align 8, !tbaa !11
  %945 = load ptr, ptr %4, align 8, !tbaa !9
  %946 = call noundef double @_ZL25testspline2dunit_func1vdxddlPN11alglib_impl8ae_stateE(double noundef %938, double noundef %943, i64 noundef %944, ptr noundef %945)
  %947 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %46, i32 0, i32 4
  %948 = load ptr, ptr %947, align 8, !tbaa !15
  %949 = load i64, ptr %69, align 8, !tbaa !11
  %950 = getelementptr inbounds double, ptr %948, i64 %949
  store double %946, ptr %950, align 8, !tbaa !13
  br label %951

951:                                              ; preds = %924, %887
  br label %952

952:                                              ; preds = %951
  %953 = load i64, ptr %70, align 8, !tbaa !11
  %954 = add nsw i64 %953, 1
  store i64 %954, ptr %70, align 8, !tbaa !11
  br label %882, !llvm.loop !28

955:                                              ; preds = %882
  br label %956

956:                                              ; preds = %955
  %957 = load i64, ptr %69, align 8, !tbaa !11
  %958 = add nsw i64 %957, 1
  store i64 %958, ptr %69, align 8, !tbaa !11
  br label %876, !llvm.loop !29

959:                                              ; preds = %876
  %960 = load i64, ptr %54, align 8, !tbaa !11
  %961 = icmp eq i64 %960, 0
  br i1 %961, label %962, label %965

962:                                              ; preds = %959
  %963 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %43, i64 noundef 0, ptr noundef %963)
  %964 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %48, i64 noundef 0, ptr noundef %964)
  br label %965

965:                                              ; preds = %962, %959
  %966 = load i64, ptr %55, align 8, !tbaa !11
  %967 = icmp eq i64 %966, 0
  br i1 %967, label %968, label %971

968:                                              ; preds = %965
  %969 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %44, i64 noundef 0, ptr noundef %969)
  %970 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %49, i64 noundef 0, ptr noundef %970)
  br label %971

971:                                              ; preds = %968, %965
  %972 = load i64, ptr %56, align 8, !tbaa !11
  %973 = icmp eq i64 %972, 0
  br i1 %973, label %974, label %977

974:                                              ; preds = %971
  %975 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %45, i64 noundef 0, ptr noundef %975)
  %976 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %50, i64 noundef 0, ptr noundef %976)
  br label %977

977:                                              ; preds = %974, %971
  %978 = load i64, ptr %57, align 8, !tbaa !11
  %979 = icmp eq i64 %978, 0
  br i1 %979, label %980, label %983

980:                                              ; preds = %977
  %981 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %46, i64 noundef 0, ptr noundef %981)
  %982 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %51, i64 noundef 0, ptr noundef %982)
  br label %983

983:                                              ; preds = %980, %977
  %984 = load i64, ptr %54, align 8, !tbaa !11
  %985 = load i64, ptr %55, align 8, !tbaa !11
  %986 = load i64, ptr %56, align 8, !tbaa !11
  %987 = load i64, ptr %57, align 8, !tbaa !11
  %988 = load ptr, ptr %4, align 8, !tbaa !9
  %989 = call noundef i64 @_ZN11alglib_impl5imin4EllllPNS_8ae_stateE(i64 noundef %984, i64 noundef %985, i64 noundef %986, i64 noundef %987, ptr noundef %988)
  %990 = icmp ne i64 %989, 0
  br i1 %990, label %999, label %991

991:                                              ; preds = %983
  %992 = load i64, ptr %54, align 8, !tbaa !11
  %993 = load i64, ptr %55, align 8, !tbaa !11
  %994 = load i64, ptr %56, align 8, !tbaa !11
  %995 = load i64, ptr %57, align 8, !tbaa !11
  %996 = load ptr, ptr %4, align 8, !tbaa !9
  %997 = call noundef i64 @_ZN11alglib_impl5imax4EllllPNS_8ae_stateE(i64 noundef %992, i64 noundef %993, i64 noundef %994, i64 noundef %995, ptr noundef %996)
  %998 = icmp ne i64 %997, 0
  br i1 %998, label %999, label %1076

999:                                              ; preds = %991, %983
  %1000 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %47, i64 noundef 4, ptr noundef %1000)
  %1001 = load i64, ptr %73, align 8, !tbaa !11
  %1002 = mul nsw i64 4, %1001
  %1003 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %52, i64 noundef %1002, ptr noundef %1003)
  store i64 0, ptr %69, align 8, !tbaa !11
  br label %1004

1004:                                             ; preds = %1072, %999
  %1005 = load i64, ptr %69, align 8, !tbaa !11
  %1006 = icmp sle i64 %1005, 1
  br i1 %1006, label %1007, label %1075

1007:                                             ; preds = %1004
  store i64 0, ptr %68, align 8, !tbaa !11
  br label %1008

1008:                                             ; preds = %1068, %1007
  %1009 = load i64, ptr %68, align 8, !tbaa !11
  %1010 = icmp sle i64 %1009, 1
  br i1 %1010, label %1011, label %1071

1011:                                             ; preds = %1008
  store i64 0, ptr %70, align 8, !tbaa !11
  br label %1012

1012:                                             ; preds = %1064, %1011
  %1013 = load i64, ptr %70, align 8, !tbaa !11
  %1014 = load i64, ptr %73, align 8, !tbaa !11
  %1015 = sub nsw i64 %1014, 1
  %1016 = icmp sle i64 %1013, %1015
  br i1 %1016, label %1017, label %1067

1017:                                             ; preds = %1012
  %1018 = load double, ptr %64, align 8, !tbaa !13
  %1019 = load i64, ptr %68, align 8, !tbaa !11
  %1020 = sitofp i64 %1019 to double
  %1021 = load double, ptr %66, align 8, !tbaa !13
  %1022 = load double, ptr %64, align 8, !tbaa !13
  %1023 = fsub double %1021, %1022
  %1024 = call double @llvm.fmuladd.f64(double %1020, double %1023, double %1018)
  store double %1024, ptr %118, align 8, !tbaa !13
  %1025 = load double, ptr %65, align 8, !tbaa !13
  %1026 = load i64, ptr %69, align 8, !tbaa !11
  %1027 = sitofp i64 %1026 to double
  %1028 = load double, ptr %67, align 8, !tbaa !13
  %1029 = load double, ptr %65, align 8, !tbaa !13
  %1030 = fsub double %1028, %1029
  %1031 = call double @llvm.fmuladd.f64(double %1027, double %1030, double %1025)
  store double %1031, ptr %119, align 8, !tbaa !13
  %1032 = load double, ptr %118, align 8, !tbaa !13
  %1033 = load double, ptr %119, align 8, !tbaa !13
  %1034 = load i64, ptr %70, align 8, !tbaa !11
  %1035 = load ptr, ptr %4, align 8, !tbaa !9
  %1036 = call noundef double @_ZL27testspline2dunit_func1vdxdyddlPN11alglib_impl8ae_stateE(double noundef %1032, double noundef %1033, i64 noundef %1034, ptr noundef %1035)
  %1037 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %52, i32 0, i32 4
  %1038 = load ptr, ptr %1037, align 8, !tbaa !15
  %1039 = load i64, ptr %69, align 8, !tbaa !11
  %1040 = mul nsw i64 2, %1039
  %1041 = load i64, ptr %68, align 8, !tbaa !11
  %1042 = add nsw i64 %1040, %1041
  %1043 = load i64, ptr %73, align 8, !tbaa !11
  %1044 = mul nsw i64 %1042, %1043
  %1045 = load i64, ptr %70, align 8, !tbaa !11
  %1046 = add nsw i64 %1044, %1045
  %1047 = getelementptr inbounds double, ptr %1038, i64 %1046
  store double %1036, ptr %1047, align 8, !tbaa !13
  %1048 = load i64, ptr %70, align 8, !tbaa !11
  %1049 = icmp eq i64 %1048, 0
  br i1 %1049, label %1050, label %1063

1050:                                             ; preds = %1017
  %1051 = load double, ptr %118, align 8, !tbaa !13
  %1052 = load double, ptr %119, align 8, !tbaa !13
  %1053 = load i64, ptr %70, align 8, !tbaa !11
  %1054 = load ptr, ptr %4, align 8, !tbaa !9
  %1055 = call noundef double @_ZL27testspline2dunit_func1vdxdyddlPN11alglib_impl8ae_stateE(double noundef %1051, double noundef %1052, i64 noundef %1053, ptr noundef %1054)
  %1056 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %47, i32 0, i32 4
  %1057 = load ptr, ptr %1056, align 8, !tbaa !15
  %1058 = load i64, ptr %69, align 8, !tbaa !11
  %1059 = mul nsw i64 2, %1058
  %1060 = load i64, ptr %68, align 8, !tbaa !11
  %1061 = add nsw i64 %1059, %1060
  %1062 = getelementptr inbounds double, ptr %1057, i64 %1061
  store double %1055, ptr %1062, align 8, !tbaa !13
  br label %1063

1063:                                             ; preds = %1050, %1017
  br label %1064

1064:                                             ; preds = %1063
  %1065 = load i64, ptr %70, align 8, !tbaa !11
  %1066 = add nsw i64 %1065, 1
  store i64 %1066, ptr %70, align 8, !tbaa !11
  br label %1012, !llvm.loop !30

1067:                                             ; preds = %1012
  br label %1068

1068:                                             ; preds = %1067
  %1069 = load i64, ptr %68, align 8, !tbaa !11
  %1070 = add nsw i64 %1069, 1
  store i64 %1070, ptr %68, align 8, !tbaa !11
  br label %1008, !llvm.loop !31

1071:                                             ; preds = %1008
  br label %1072

1072:                                             ; preds = %1071
  %1073 = load i64, ptr %69, align 8, !tbaa !11
  %1074 = add nsw i64 %1073, 1
  store i64 %1074, ptr %69, align 8, !tbaa !11
  br label %1004, !llvm.loop !32

1075:                                             ; preds = %1004
  br label %1079

1076:                                             ; preds = %991
  %1077 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %47, i64 noundef 0, ptr noundef %1077)
  %1078 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %52, i64 noundef 0, ptr noundef %1078)
  br label %1079

1079:                                             ; preds = %1076, %1075
  %1080 = load i64, ptr %71, align 8, !tbaa !11
  %1081 = load i64, ptr %72, align 8, !tbaa !11
  %1082 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl22spline2dbuildbilinearvEPKNS_9ae_vectorElS2_lS2_lPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %28, i64 noundef %1080, ptr noundef %29, i64 noundef %1081, ptr noundef %34, i64 noundef 1, ptr noundef %30, ptr noundef %1082)
  store double 0.000000e+00, ptr %76, align 8, !tbaa !13
  store i64 0, ptr %68, align 8, !tbaa !11
  br label %1083

1083:                                             ; preds = %1125, %1079
  %1084 = load i64, ptr %68, align 8, !tbaa !11
  %1085 = load i64, ptr %72, align 8, !tbaa !11
  %1086 = sub nsw i64 %1085, 1
  %1087 = icmp sle i64 %1084, %1086
  br i1 %1087, label %1088, label %1128

1088:                                             ; preds = %1083
  store i64 0, ptr %69, align 8, !tbaa !11
  br label %1089

1089:                                             ; preds = %1121, %1088
  %1090 = load i64, ptr %69, align 8, !tbaa !11
  %1091 = load i64, ptr %71, align 8, !tbaa !11
  %1092 = sub nsw i64 %1091, 1
  %1093 = icmp sle i64 %1090, %1092
  br i1 %1093, label %1094, label %1124

1094:                                             ; preds = %1089
  %1095 = load double, ptr %76, align 8, !tbaa !13
  %1096 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %61, i32 0, i32 6
  %1097 = load ptr, ptr %1096, align 8, !tbaa !15
  %1098 = load i64, ptr %68, align 8, !tbaa !11
  %1099 = getelementptr inbounds ptr, ptr %1097, i64 %1098
  %1100 = load ptr, ptr %1099, align 8, !tbaa !9
  %1101 = load i64, ptr %69, align 8, !tbaa !11
  %1102 = getelementptr inbounds double, ptr %1100, i64 %1101
  %1103 = load double, ptr %1102, align 8, !tbaa !13
  %1104 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %1105 = load ptr, ptr %1104, align 8, !tbaa !15
  %1106 = load i64, ptr %69, align 8, !tbaa !11
  %1107 = getelementptr inbounds double, ptr %1105, i64 %1106
  %1108 = load double, ptr %1107, align 8, !tbaa !13
  %1109 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %1110 = load ptr, ptr %1109, align 8, !tbaa !15
  %1111 = load i64, ptr %68, align 8, !tbaa !11
  %1112 = getelementptr inbounds double, ptr %1110, i64 %1111
  %1113 = load double, ptr %1112, align 8, !tbaa !13
  %1114 = load ptr, ptr %4, align 8, !tbaa !9
  %1115 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef %30, double noundef %1108, double noundef %1113, ptr noundef %1114)
  %1116 = fsub double %1103, %1115
  %1117 = load ptr, ptr %4, align 8, !tbaa !9
  %1118 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1116, ptr noundef %1117)
  %1119 = load ptr, ptr %4, align 8, !tbaa !9
  %1120 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1095, double noundef %1118, ptr noundef %1119)
  store double %1120, ptr %76, align 8, !tbaa !13
  br label %1121

1121:                                             ; preds = %1094
  %1122 = load i64, ptr %69, align 8, !tbaa !11
  %1123 = add nsw i64 %1122, 1
  store i64 %1123, ptr %69, align 8, !tbaa !11
  br label %1089, !llvm.loop !33

1124:                                             ; preds = %1089
  br label %1125

1125:                                             ; preds = %1124
  %1126 = load i64, ptr %68, align 8, !tbaa !11
  %1127 = add nsw i64 %1126, 1
  store i64 %1127, ptr %68, align 8, !tbaa !11
  br label %1083, !llvm.loop !34

1128:                                             ; preds = %1083
  %1129 = load i8, ptr %7, align 1, !tbaa !5, !range !35, !noundef !36
  %1130 = trunc i8 %1129 to i1
  br i1 %1130, label %1134, label %1131

1131:                                             ; preds = %1128
  %1132 = load double, ptr %76, align 8, !tbaa !13
  %1133 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1132, double noundef 0x3D95FD7FE1796496)
  br label %1134

1134:                                             ; preds = %1131, %1128
  %1135 = phi i1 [ true, %1128 ], [ %1133, %1131 ]
  %1136 = zext i1 %1135 to i8
  store i8 %1136, ptr %7, align 1, !tbaa !5
  store double 0.000000e+00, ptr %76, align 8, !tbaa !13
  store i64 0, ptr %68, align 8, !tbaa !11
  br label %1137

1137:                                             ; preds = %1244, %1134
  %1138 = load i64, ptr %68, align 8, !tbaa !11
  %1139 = load i64, ptr %72, align 8, !tbaa !11
  %1140 = sub nsw i64 %1139, 2
  %1141 = icmp sle i64 %1138, %1140
  br i1 %1141, label %1142, label %1247

1142:                                             ; preds = %1137
  store i64 0, ptr %69, align 8, !tbaa !11
  br label %1143

1143:                                             ; preds = %1240, %1142
  %1144 = load i64, ptr %69, align 8, !tbaa !11
  %1145 = load i64, ptr %71, align 8, !tbaa !11
  %1146 = sub nsw i64 %1145, 2
  %1147 = icmp sle i64 %1144, %1146
  br i1 %1147, label %1148, label %1243

1148:                                             ; preds = %1143
  %1149 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %32, i32 0, i32 4
  %1150 = load ptr, ptr %1149, align 8, !tbaa !15
  %1151 = load i64, ptr %69, align 8, !tbaa !11
  %1152 = mul nsw i64 2, %1151
  %1153 = add nsw i64 %1152, 1
  %1154 = getelementptr inbounds double, ptr %1150, i64 %1153
  %1155 = load double, ptr %1154, align 8, !tbaa !13
  %1156 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %33, i32 0, i32 4
  %1157 = load ptr, ptr %1156, align 8, !tbaa !15
  %1158 = load i64, ptr %68, align 8, !tbaa !11
  %1159 = mul nsw i64 2, %1158
  %1160 = add nsw i64 %1159, 1
  %1161 = getelementptr inbounds double, ptr %1157, i64 %1160
  %1162 = load double, ptr %1161, align 8, !tbaa !13
  %1163 = load ptr, ptr %4, align 8, !tbaa !9
  %1164 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef %30, double noundef %1155, double noundef %1162, ptr noundef %1163)
  store double %1164, ptr %92, align 8, !tbaa !13
  %1165 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %32, i32 0, i32 4
  %1166 = load ptr, ptr %1165, align 8, !tbaa !15
  %1167 = load i64, ptr %69, align 8, !tbaa !11
  %1168 = mul nsw i64 2, %1167
  %1169 = getelementptr inbounds double, ptr %1166, i64 %1168
  %1170 = load double, ptr %1169, align 8, !tbaa !13
  %1171 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %33, i32 0, i32 4
  %1172 = load ptr, ptr %1171, align 8, !tbaa !15
  %1173 = load i64, ptr %68, align 8, !tbaa !11
  %1174 = mul nsw i64 2, %1173
  %1175 = getelementptr inbounds double, ptr %1172, i64 %1174
  %1176 = load double, ptr %1175, align 8, !tbaa !13
  %1177 = load ptr, ptr %4, align 8, !tbaa !9
  %1178 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef %30, double noundef %1170, double noundef %1176, ptr noundef %1177)
  store double %1178, ptr %93, align 8, !tbaa !13
  %1179 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %32, i32 0, i32 4
  %1180 = load ptr, ptr %1179, align 8, !tbaa !15
  %1181 = load i64, ptr %69, align 8, !tbaa !11
  %1182 = mul nsw i64 2, %1181
  %1183 = add nsw i64 %1182, 2
  %1184 = getelementptr inbounds double, ptr %1180, i64 %1183
  %1185 = load double, ptr %1184, align 8, !tbaa !13
  %1186 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %33, i32 0, i32 4
  %1187 = load ptr, ptr %1186, align 8, !tbaa !15
  %1188 = load i64, ptr %68, align 8, !tbaa !11
  %1189 = mul nsw i64 2, %1188
  %1190 = getelementptr inbounds double, ptr %1187, i64 %1189
  %1191 = load double, ptr %1190, align 8, !tbaa !13
  %1192 = load ptr, ptr %4, align 8, !tbaa !9
  %1193 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef %30, double noundef %1185, double noundef %1191, ptr noundef %1192)
  store double %1193, ptr %94, align 8, !tbaa !13
  %1194 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %32, i32 0, i32 4
  %1195 = load ptr, ptr %1194, align 8, !tbaa !15
  %1196 = load i64, ptr %69, align 8, !tbaa !11
  %1197 = mul nsw i64 2, %1196
  %1198 = add nsw i64 %1197, 2
  %1199 = getelementptr inbounds double, ptr %1195, i64 %1198
  %1200 = load double, ptr %1199, align 8, !tbaa !13
  %1201 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %33, i32 0, i32 4
  %1202 = load ptr, ptr %1201, align 8, !tbaa !15
  %1203 = load i64, ptr %68, align 8, !tbaa !11
  %1204 = mul nsw i64 2, %1203
  %1205 = add nsw i64 %1204, 2
  %1206 = getelementptr inbounds double, ptr %1202, i64 %1205
  %1207 = load double, ptr %1206, align 8, !tbaa !13
  %1208 = load ptr, ptr %4, align 8, !tbaa !9
  %1209 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef %30, double noundef %1200, double noundef %1207, ptr noundef %1208)
  store double %1209, ptr %95, align 8, !tbaa !13
  %1210 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %32, i32 0, i32 4
  %1211 = load ptr, ptr %1210, align 8, !tbaa !15
  %1212 = load i64, ptr %69, align 8, !tbaa !11
  %1213 = mul nsw i64 2, %1212
  %1214 = getelementptr inbounds double, ptr %1211, i64 %1213
  %1215 = load double, ptr %1214, align 8, !tbaa !13
  %1216 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %33, i32 0, i32 4
  %1217 = load ptr, ptr %1216, align 8, !tbaa !15
  %1218 = load i64, ptr %68, align 8, !tbaa !11
  %1219 = mul nsw i64 2, %1218
  %1220 = add nsw i64 %1219, 2
  %1221 = getelementptr inbounds double, ptr %1217, i64 %1220
  %1222 = load double, ptr %1221, align 8, !tbaa !13
  %1223 = load ptr, ptr %4, align 8, !tbaa !9
  %1224 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef %30, double noundef %1215, double noundef %1222, ptr noundef %1223)
  store double %1224, ptr %96, align 8, !tbaa !13
  %1225 = load double, ptr %76, align 8, !tbaa !13
  %1226 = load double, ptr %93, align 8, !tbaa !13
  %1227 = load double, ptr %94, align 8, !tbaa !13
  %1228 = fadd double %1226, %1227
  %1229 = load double, ptr %95, align 8, !tbaa !13
  %1230 = fadd double %1228, %1229
  %1231 = load double, ptr %96, align 8, !tbaa !13
  %1232 = fadd double %1230, %1231
  %1233 = load double, ptr %92, align 8, !tbaa !13
  %1234 = fneg double %1233
  %1235 = call double @llvm.fmuladd.f64(double 2.500000e-01, double %1232, double %1234)
  %1236 = load ptr, ptr %4, align 8, !tbaa !9
  %1237 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1235, ptr noundef %1236)
  %1238 = load ptr, ptr %4, align 8, !tbaa !9
  %1239 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1225, double noundef %1237, ptr noundef %1238)
  store double %1239, ptr %76, align 8, !tbaa !13
  br label %1240

1240:                                             ; preds = %1148
  %1241 = load i64, ptr %69, align 8, !tbaa !11
  %1242 = add nsw i64 %1241, 1
  store i64 %1242, ptr %69, align 8, !tbaa !11
  br label %1143, !llvm.loop !37

1243:                                             ; preds = %1143
  br label %1244

1244:                                             ; preds = %1243
  %1245 = load i64, ptr %68, align 8, !tbaa !11
  %1246 = add nsw i64 %1245, 1
  store i64 %1246, ptr %68, align 8, !tbaa !11
  br label %1137, !llvm.loop !38

1247:                                             ; preds = %1137
  %1248 = load i8, ptr %7, align 1, !tbaa !5, !range !35, !noundef !36
  %1249 = trunc i8 %1248 to i1
  br i1 %1249, label %1253, label %1250

1250:                                             ; preds = %1247
  %1251 = load double, ptr %76, align 8, !tbaa !13
  %1252 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1251, double noundef 0x3D95FD7FE1796496)
  br label %1253

1253:                                             ; preds = %1250, %1247
  %1254 = phi i1 [ true, %1247 ], [ %1252, %1250 ]
  %1255 = zext i1 %1254 to i8
  store i8 %1255, ptr %7, align 1, !tbaa !5
  %1256 = load i64, ptr %72, align 8, !tbaa !11
  %1257 = load i64, ptr %71, align 8, !tbaa !11
  %1258 = load double, ptr %26, align 8, !tbaa !13
  %1259 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testspline2dunit_lconstPKN11alglib_impl19spline2dinterpolantEPKNS_9ae_vectorES5_lldPdS6_S6_S6_S6_S6_PNS_8ae_stateE(ptr noundef %30, ptr noundef %32, ptr noundef %33, i64 noundef %1256, i64 noundef %1257, double noundef %1258, ptr noundef %80, ptr noundef %81, ptr noundef %82, ptr noundef %88, ptr noundef %83, ptr noundef %89, ptr noundef %1259)
  %1260 = load i64, ptr %72, align 8, !tbaa !11
  %1261 = load i64, ptr %71, align 8, !tbaa !11
  %1262 = load double, ptr %26, align 8, !tbaa !13
  %1263 = fdiv double %1262, 3.000000e+00
  %1264 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testspline2dunit_lconstPKN11alglib_impl19spline2dinterpolantEPKNS_9ae_vectorES5_lldPdS6_S6_S6_S6_S6_PNS_8ae_stateE(ptr noundef %30, ptr noundef %32, ptr noundef %33, i64 noundef %1260, i64 noundef %1261, double noundef %1263, ptr noundef %84, ptr noundef %85, ptr noundef %86, ptr noundef %90, ptr noundef %87, ptr noundef %91, ptr noundef %1264)
  %1265 = load i8, ptr %7, align 1, !tbaa !5, !range !35, !noundef !36
  %1266 = trunc i8 %1265 to i1
  br i1 %1266, label %1272, label %1267

1267:                                             ; preds = %1253
  %1268 = load double, ptr %84, align 8, !tbaa !13
  %1269 = load double, ptr %80, align 8, !tbaa !13
  %1270 = fdiv double %1268, %1269
  %1271 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1270, double noundef 1.200000e+00)
  br label %1272

1272:                                             ; preds = %1267, %1253
  %1273 = phi i1 [ true, %1253 ], [ %1271, %1267 ]
  %1274 = zext i1 %1273 to i8
  store i8 %1274, ptr %7, align 1, !tbaa !5
  store double 0.000000e+00, ptr %76, align 8, !tbaa !13
  store i64 0, ptr %68, align 8, !tbaa !11
  br label %1275

1275:                                             ; preds = %1415, %1272
  %1276 = load i64, ptr %68, align 8, !tbaa !11
  %1277 = load i64, ptr %72, align 8, !tbaa !11
  %1278 = sub nsw i64 %1277, 2
  %1279 = icmp sle i64 %1276, %1278
  br i1 %1279, label %1280, label %1418

1280:                                             ; preds = %1275
  store i64 0, ptr %69, align 8, !tbaa !11
  br label %1281

1281:                                             ; preds = %1411, %1280
  %1282 = load i64, ptr %69, align 8, !tbaa !11
  %1283 = load i64, ptr %71, align 8, !tbaa !11
  %1284 = sub nsw i64 %1283, 2
  %1285 = icmp sle i64 %1282, %1284
  br i1 %1285, label %1286, label %1414

1286:                                             ; preds = %1281
  %1287 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %120, i32 0, i32 4
  %1288 = load ptr, ptr %1287, align 8, !tbaa !15
  %1289 = load i64, ptr %69, align 8, !tbaa !11
  %1290 = getelementptr inbounds double, ptr %1288, i64 %1289
  %1291 = load double, ptr %1290, align 8, !tbaa !13
  %1292 = load ptr, ptr %4, align 8, !tbaa !9
  %1293 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1292)
  %1294 = call double @llvm.fmuladd.f64(double 8.000000e-01, double %1293, double 1.000000e-01)
  %1295 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %120, i32 0, i32 4
  %1296 = load ptr, ptr %1295, align 8, !tbaa !15
  %1297 = load i64, ptr %69, align 8, !tbaa !11
  %1298 = add nsw i64 %1297, 1
  %1299 = getelementptr inbounds double, ptr %1296, i64 %1298
  %1300 = load double, ptr %1299, align 8, !tbaa !13
  %1301 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %120, i32 0, i32 4
  %1302 = load ptr, ptr %1301, align 8, !tbaa !15
  %1303 = load i64, ptr %69, align 8, !tbaa !11
  %1304 = getelementptr inbounds double, ptr %1302, i64 %1303
  %1305 = load double, ptr %1304, align 8, !tbaa !13
  %1306 = fsub double %1300, %1305
  %1307 = call double @llvm.fmuladd.f64(double %1294, double %1306, double %1291)
  store double %1307, ptr %118, align 8, !tbaa !13
  %1308 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %121, i32 0, i32 4
  %1309 = load ptr, ptr %1308, align 8, !tbaa !15
  %1310 = load i64, ptr %68, align 8, !tbaa !11
  %1311 = getelementptr inbounds double, ptr %1309, i64 %1310
  %1312 = load double, ptr %1311, align 8, !tbaa !13
  %1313 = load ptr, ptr %4, align 8, !tbaa !9
  %1314 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1313)
  %1315 = call double @llvm.fmuladd.f64(double 8.000000e-01, double %1314, double 1.000000e-01)
  %1316 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %121, i32 0, i32 4
  %1317 = load ptr, ptr %1316, align 8, !tbaa !15
  %1318 = load i64, ptr %68, align 8, !tbaa !11
  %1319 = add nsw i64 %1318, 1
  %1320 = getelementptr inbounds double, ptr %1317, i64 %1319
  %1321 = load double, ptr %1320, align 8, !tbaa !13
  %1322 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %121, i32 0, i32 4
  %1323 = load ptr, ptr %1322, align 8, !tbaa !15
  %1324 = load i64, ptr %68, align 8, !tbaa !11
  %1325 = getelementptr inbounds double, ptr %1323, i64 %1324
  %1326 = load double, ptr %1325, align 8, !tbaa !13
  %1327 = fsub double %1321, %1326
  %1328 = call double @llvm.fmuladd.f64(double %1315, double %1327, double %1312)
  store double %1328, ptr %119, align 8, !tbaa !13
  %1329 = load double, ptr %118, align 8, !tbaa !13
  %1330 = load double, ptr %119, align 8, !tbaa !13
  %1331 = load double, ptr %27, align 8, !tbaa !13
  %1332 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL27testspline2dunit_twodnumderPKN11alglib_impl19spline2dinterpolantEdddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef %30, double noundef %1329, double noundef %1330, double noundef %1331, ptr noundef %101, ptr noundef %102, ptr noundef %103, ptr noundef %110, ptr noundef %104, ptr noundef %111, ptr noundef %1332)
  %1333 = load double, ptr %118, align 8, !tbaa !13
  %1334 = load double, ptr %119, align 8, !tbaa !13
  %1335 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12spline2ddiffEPKNS_19spline2dinterpolantEddPdS3_S3_PNS_8ae_stateE(ptr noundef %30, double noundef %1333, double noundef %1334, ptr noundef %97, ptr noundef %98, ptr noundef %99, ptr noundef %1335)
  %1336 = load double, ptr %76, align 8, !tbaa !13
  %1337 = load double, ptr %97, align 8, !tbaa !13
  %1338 = load double, ptr %101, align 8, !tbaa !13
  %1339 = fsub double %1337, %1338
  %1340 = load ptr, ptr %4, align 8, !tbaa !9
  %1341 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1339, ptr noundef %1340)
  %1342 = load ptr, ptr %4, align 8, !tbaa !9
  %1343 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1336, double noundef %1341, ptr noundef %1342)
  store double %1343, ptr %76, align 8, !tbaa !13
  %1344 = load double, ptr %76, align 8, !tbaa !13
  %1345 = load double, ptr %98, align 8, !tbaa !13
  %1346 = load double, ptr %102, align 8, !tbaa !13
  %1347 = fsub double %1345, %1346
  %1348 = load ptr, ptr %4, align 8, !tbaa !9
  %1349 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1347, ptr noundef %1348)
  %1350 = load ptr, ptr %4, align 8, !tbaa !9
  %1351 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1344, double noundef %1349, ptr noundef %1350)
  store double %1351, ptr %76, align 8, !tbaa !13
  %1352 = load double, ptr %76, align 8, !tbaa !13
  %1353 = load double, ptr %99, align 8, !tbaa !13
  %1354 = load double, ptr %103, align 8, !tbaa !13
  %1355 = fsub double %1353, %1354
  %1356 = load ptr, ptr %4, align 8, !tbaa !9
  %1357 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1355, ptr noundef %1356)
  %1358 = load ptr, ptr %4, align 8, !tbaa !9
  %1359 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1352, double noundef %1357, ptr noundef %1358)
  store double %1359, ptr %76, align 8, !tbaa !13
  %1360 = load double, ptr %118, align 8, !tbaa !13
  %1361 = load double, ptr %119, align 8, !tbaa !13
  %1362 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef %30, double noundef %1360, double noundef %1361, ptr noundef %97, ptr noundef %98, ptr noundef %99, ptr noundef %108, ptr noundef %100, ptr noundef %109, ptr noundef %1362)
  %1363 = load double, ptr %76, align 8, !tbaa !13
  %1364 = load double, ptr %97, align 8, !tbaa !13
  %1365 = load double, ptr %101, align 8, !tbaa !13
  %1366 = fsub double %1364, %1365
  %1367 = load ptr, ptr %4, align 8, !tbaa !9
  %1368 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1366, ptr noundef %1367)
  %1369 = load ptr, ptr %4, align 8, !tbaa !9
  %1370 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1363, double noundef %1368, ptr noundef %1369)
  store double %1370, ptr %76, align 8, !tbaa !13
  %1371 = load double, ptr %76, align 8, !tbaa !13
  %1372 = load double, ptr %98, align 8, !tbaa !13
  %1373 = load double, ptr %102, align 8, !tbaa !13
  %1374 = fsub double %1372, %1373
  %1375 = load ptr, ptr %4, align 8, !tbaa !9
  %1376 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1374, ptr noundef %1375)
  %1377 = load ptr, ptr %4, align 8, !tbaa !9
  %1378 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1371, double noundef %1376, ptr noundef %1377)
  store double %1378, ptr %76, align 8, !tbaa !13
  %1379 = load double, ptr %76, align 8, !tbaa !13
  %1380 = load double, ptr %99, align 8, !tbaa !13
  %1381 = load double, ptr %103, align 8, !tbaa !13
  %1382 = fsub double %1380, %1381
  %1383 = load ptr, ptr %4, align 8, !tbaa !9
  %1384 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1382, ptr noundef %1383)
  %1385 = load ptr, ptr %4, align 8, !tbaa !9
  %1386 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1379, double noundef %1384, ptr noundef %1385)
  store double %1386, ptr %76, align 8, !tbaa !13
  %1387 = load double, ptr %76, align 8, !tbaa !13
  %1388 = load double, ptr %108, align 8, !tbaa !13
  %1389 = load double, ptr %110, align 8, !tbaa !13
  %1390 = fsub double %1388, %1389
  %1391 = load ptr, ptr %4, align 8, !tbaa !9
  %1392 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1390, ptr noundef %1391)
  %1393 = load ptr, ptr %4, align 8, !tbaa !9
  %1394 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1387, double noundef %1392, ptr noundef %1393)
  store double %1394, ptr %76, align 8, !tbaa !13
  %1395 = load double, ptr %76, align 8, !tbaa !13
  %1396 = load double, ptr %100, align 8, !tbaa !13
  %1397 = load double, ptr %104, align 8, !tbaa !13
  %1398 = fsub double %1396, %1397
  %1399 = load ptr, ptr %4, align 8, !tbaa !9
  %1400 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1398, ptr noundef %1399)
  %1401 = load ptr, ptr %4, align 8, !tbaa !9
  %1402 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1395, double noundef %1400, ptr noundef %1401)
  store double %1402, ptr %76, align 8, !tbaa !13
  %1403 = load double, ptr %76, align 8, !tbaa !13
  %1404 = load double, ptr %109, align 8, !tbaa !13
  %1405 = load double, ptr %111, align 8, !tbaa !13
  %1406 = fsub double %1404, %1405
  %1407 = load ptr, ptr %4, align 8, !tbaa !9
  %1408 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1406, ptr noundef %1407)
  %1409 = load ptr, ptr %4, align 8, !tbaa !9
  %1410 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1403, double noundef %1408, ptr noundef %1409)
  store double %1410, ptr %76, align 8, !tbaa !13
  br label %1411

1411:                                             ; preds = %1286
  %1412 = load i64, ptr %69, align 8, !tbaa !11
  %1413 = add nsw i64 %1412, 1
  store i64 %1413, ptr %69, align 8, !tbaa !11
  br label %1281, !llvm.loop !39

1414:                                             ; preds = %1281
  br label %1415

1415:                                             ; preds = %1414
  %1416 = load i64, ptr %68, align 8, !tbaa !11
  %1417 = add nsw i64 %1416, 1
  store i64 %1417, ptr %68, align 8, !tbaa !11
  br label %1275, !llvm.loop !40

1418:                                             ; preds = %1275
  %1419 = load i8, ptr %9, align 1, !tbaa !5, !range !35, !noundef !36
  %1420 = trunc i8 %1419 to i1
  br i1 %1420, label %1424, label %1421

1421:                                             ; preds = %1418
  %1422 = load double, ptr %76, align 8, !tbaa !13
  %1423 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1422, double noundef 1.000000e-03)
  br label %1424

1424:                                             ; preds = %1421, %1418
  %1425 = phi i1 [ true, %1418 ], [ %1423, %1421 ]
  %1426 = zext i1 %1425 to i8
  store i8 %1426, ptr %9, align 1, !tbaa !5
  %1427 = load i8, ptr %12, align 1, !tbaa !5, !range !35, !noundef !36
  %1428 = trunc i8 %1427 to i1
  br i1 %1428, label %1433, label %1429

1429:                                             ; preds = %1424
  %1430 = load ptr, ptr %4, align 8, !tbaa !9
  %1431 = call noundef zeroext i1 @_ZL27testspline2dunit_testunpackPKN11alglib_impl19spline2dinterpolantEPKNS_9ae_vectorES5_PNS_8ae_stateE(ptr noundef %30, ptr noundef %32, ptr noundef %33, ptr noundef %1430)
  %1432 = xor i1 %1431, true
  br label %1433

1433:                                             ; preds = %1429, %1424
  %1434 = phi i1 [ true, %1424 ], [ %1432, %1429 ]
  %1435 = zext i1 %1434 to i8
  store i8 %1435, ptr %12, align 1, !tbaa !5
  %1436 = load i8, ptr %13, align 1, !tbaa !5, !range !35, !noundef !36
  %1437 = trunc i8 %1436 to i1
  br i1 %1437, label %1446, label %1438

1438:                                             ; preds = %1433
  %1439 = load double, ptr %64, align 8, !tbaa !13
  %1440 = load double, ptr %66, align 8, !tbaa !13
  %1441 = load double, ptr %65, align 8, !tbaa !13
  %1442 = load double, ptr %67, align 8, !tbaa !13
  %1443 = load ptr, ptr %4, align 8, !tbaa !9
  %1444 = call noundef zeroext i1 @_ZL29testspline2dunit_testlintransPKN11alglib_impl19spline2dinterpolantElddddPNS_8ae_stateE(ptr noundef %30, i64 noundef 1, double noundef %1439, double noundef %1440, double noundef %1441, double noundef %1442, ptr noundef %1443)
  %1445 = xor i1 %1444, true
  br label %1446

1446:                                             ; preds = %1438, %1433
  %1447 = phi i1 [ true, %1433 ], [ %1445, %1438 ]
  %1448 = zext i1 %1447 to i8
  store i8 %1448, ptr %13, align 1, !tbaa !5
  %1449 = load i64, ptr %71, align 8, !tbaa !11
  %1450 = load i64, ptr %72, align 8, !tbaa !11
  %1451 = load i64, ptr %73, align 8, !tbaa !11
  %1452 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl22spline2dbuildbilinearvEPKNS_9ae_vectorElS2_lS2_lPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %28, i64 noundef %1449, ptr noundef %29, i64 noundef %1450, ptr noundef %35, i64 noundef %1451, ptr noundef %30, ptr noundef %1452)
  %1453 = load i8, ptr %13, align 1, !tbaa !5, !range !35, !noundef !36
  %1454 = trunc i8 %1453 to i1
  br i1 %1454, label %1464, label %1455

1455:                                             ; preds = %1446
  %1456 = load i64, ptr %73, align 8, !tbaa !11
  %1457 = load double, ptr %64, align 8, !tbaa !13
  %1458 = load double, ptr %66, align 8, !tbaa !13
  %1459 = load double, ptr %65, align 8, !tbaa !13
  %1460 = load double, ptr %67, align 8, !tbaa !13
  %1461 = load ptr, ptr %4, align 8, !tbaa !9
  %1462 = call noundef zeroext i1 @_ZL29testspline2dunit_testlintransPKN11alglib_impl19spline2dinterpolantElddddPNS_8ae_stateE(ptr noundef %30, i64 noundef %1456, double noundef %1457, double noundef %1458, double noundef %1459, double noundef %1460, ptr noundef %1461)
  %1463 = xor i1 %1462, true
  br label %1464

1464:                                             ; preds = %1455, %1446
  %1465 = phi i1 [ true, %1446 ], [ %1463, %1455 ]
  %1466 = zext i1 %1465 to i8
  store i8 %1466, ptr %13, align 1, !tbaa !5
  %1467 = load i64, ptr %71, align 8, !tbaa !11
  %1468 = load i64, ptr %72, align 8, !tbaa !11
  %1469 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl21spline2dbuildbicubicvEPKNS_9ae_vectorElS2_lS2_lPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %28, i64 noundef %1467, ptr noundef %29, i64 noundef %1468, ptr noundef %34, i64 noundef 1, ptr noundef %30, ptr noundef %1469)
  store double 0.000000e+00, ptr %76, align 8, !tbaa !13
  store i64 0, ptr %68, align 8, !tbaa !11
  br label %1470

1470:                                             ; preds = %1512, %1464
  %1471 = load i64, ptr %68, align 8, !tbaa !11
  %1472 = load i64, ptr %72, align 8, !tbaa !11
  %1473 = sub nsw i64 %1472, 1
  %1474 = icmp sle i64 %1471, %1473
  br i1 %1474, label %1475, label %1515

1475:                                             ; preds = %1470
  store i64 0, ptr %69, align 8, !tbaa !11
  br label %1476

1476:                                             ; preds = %1508, %1475
  %1477 = load i64, ptr %69, align 8, !tbaa !11
  %1478 = load i64, ptr %71, align 8, !tbaa !11
  %1479 = sub nsw i64 %1478, 1
  %1480 = icmp sle i64 %1477, %1479
  br i1 %1480, label %1481, label %1511

1481:                                             ; preds = %1476
  %1482 = load double, ptr %76, align 8, !tbaa !13
  %1483 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %61, i32 0, i32 6
  %1484 = load ptr, ptr %1483, align 8, !tbaa !15
  %1485 = load i64, ptr %68, align 8, !tbaa !11
  %1486 = getelementptr inbounds ptr, ptr %1484, i64 %1485
  %1487 = load ptr, ptr %1486, align 8, !tbaa !9
  %1488 = load i64, ptr %69, align 8, !tbaa !11
  %1489 = getelementptr inbounds double, ptr %1487, i64 %1488
  %1490 = load double, ptr %1489, align 8, !tbaa !13
  %1491 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %1492 = load ptr, ptr %1491, align 8, !tbaa !15
  %1493 = load i64, ptr %69, align 8, !tbaa !11
  %1494 = getelementptr inbounds double, ptr %1492, i64 %1493
  %1495 = load double, ptr %1494, align 8, !tbaa !13
  %1496 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %1497 = load ptr, ptr %1496, align 8, !tbaa !15
  %1498 = load i64, ptr %68, align 8, !tbaa !11
  %1499 = getelementptr inbounds double, ptr %1497, i64 %1498
  %1500 = load double, ptr %1499, align 8, !tbaa !13
  %1501 = load ptr, ptr %4, align 8, !tbaa !9
  %1502 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef %30, double noundef %1495, double noundef %1500, ptr noundef %1501)
  %1503 = fsub double %1490, %1502
  %1504 = load ptr, ptr %4, align 8, !tbaa !9
  %1505 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1503, ptr noundef %1504)
  %1506 = load ptr, ptr %4, align 8, !tbaa !9
  %1507 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1482, double noundef %1505, ptr noundef %1506)
  store double %1507, ptr %76, align 8, !tbaa !13
  br label %1508

1508:                                             ; preds = %1481
  %1509 = load i64, ptr %69, align 8, !tbaa !11
  %1510 = add nsw i64 %1509, 1
  store i64 %1510, ptr %69, align 8, !tbaa !11
  br label %1476, !llvm.loop !41

1511:                                             ; preds = %1476
  br label %1512

1512:                                             ; preds = %1511
  %1513 = load i64, ptr %68, align 8, !tbaa !11
  %1514 = add nsw i64 %1513, 1
  store i64 %1514, ptr %68, align 8, !tbaa !11
  br label %1470, !llvm.loop !42

1515:                                             ; preds = %1470
  %1516 = load i8, ptr %8, align 1, !tbaa !5, !range !35, !noundef !36
  %1517 = trunc i8 %1516 to i1
  br i1 %1517, label %1521, label %1518

1518:                                             ; preds = %1515
  %1519 = load double, ptr %76, align 8, !tbaa !13
  %1520 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1519, double noundef 0x3D95FD7FE1796496)
  br label %1521

1521:                                             ; preds = %1518, %1515
  %1522 = phi i1 [ true, %1515 ], [ %1520, %1518 ]
  %1523 = zext i1 %1522 to i8
  store i8 %1523, ptr %8, align 1, !tbaa !5
  %1524 = load i64, ptr %72, align 8, !tbaa !11
  %1525 = load i64, ptr %71, align 8, !tbaa !11
  %1526 = load double, ptr %26, align 8, !tbaa !13
  %1527 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testspline2dunit_lconstPKN11alglib_impl19spline2dinterpolantEPKNS_9ae_vectorES5_lldPdS6_S6_S6_S6_S6_PNS_8ae_stateE(ptr noundef %30, ptr noundef %32, ptr noundef %33, i64 noundef %1524, i64 noundef %1525, double noundef %1526, ptr noundef %80, ptr noundef %81, ptr noundef %82, ptr noundef %88, ptr noundef %83, ptr noundef %89, ptr noundef %1527)
  %1528 = load i64, ptr %72, align 8, !tbaa !11
  %1529 = load i64, ptr %71, align 8, !tbaa !11
  %1530 = load double, ptr %26, align 8, !tbaa !13
  %1531 = fdiv double %1530, 3.000000e+00
  %1532 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testspline2dunit_lconstPKN11alglib_impl19spline2dinterpolantEPKNS_9ae_vectorES5_lldPdS6_S6_S6_S6_S6_PNS_8ae_stateE(ptr noundef %30, ptr noundef %32, ptr noundef %33, i64 noundef %1528, i64 noundef %1529, double noundef %1531, ptr noundef %84, ptr noundef %85, ptr noundef %86, ptr noundef %90, ptr noundef %87, ptr noundef %91, ptr noundef %1532)
  %1533 = load double, ptr %84, align 8, !tbaa !13
  %1534 = load double, ptr %80, align 8, !tbaa !13
  %1535 = fdiv double %1533, %1534
  %1536 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1535, double noundef 1.200000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %8, i1 noundef zeroext %1536, ptr noundef @.str.19, i32 noundef 110044, ptr noundef @.str.830)
  %1537 = load double, ptr %85, align 8, !tbaa !13
  %1538 = load double, ptr %81, align 8, !tbaa !13
  %1539 = fdiv double %1537, %1538
  %1540 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1539, double noundef 1.200000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %8, i1 noundef zeroext %1540, ptr noundef @.str.19, i32 noundef 110045, ptr noundef @.str.831)
  %1541 = load double, ptr %86, align 8, !tbaa !13
  %1542 = load double, ptr %82, align 8, !tbaa !13
  %1543 = fdiv double %1541, %1542
  %1544 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1543, double noundef 1.200000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %8, i1 noundef zeroext %1544, ptr noundef @.str.19, i32 noundef 110046, ptr noundef @.str.832)
  %1545 = load double, ptr %90, align 8, !tbaa !13
  %1546 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1545, double noundef 5.000000e-02)
  br i1 %1546, label %1547, label %1555

1547:                                             ; preds = %1521
  %1548 = load double, ptr %88, align 8, !tbaa !13
  %1549 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1548, double noundef 5.000000e-02)
  br i1 %1549, label %1550, label %1555

1550:                                             ; preds = %1547
  %1551 = load double, ptr %90, align 8, !tbaa !13
  %1552 = load double, ptr %88, align 8, !tbaa !13
  %1553 = fdiv double %1551, %1552
  %1554 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1553, double noundef 1.200000e+00)
  br label %1555

1555:                                             ; preds = %1550, %1547, %1521
  %1556 = phi i1 [ false, %1547 ], [ false, %1521 ], [ %1554, %1550 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %8, i1 noundef zeroext %1556, ptr noundef @.str.19, i32 noundef 110047, ptr noundef @.str.833)
  %1557 = load double, ptr %87, align 8, !tbaa !13
  %1558 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1557, double noundef 5.000000e-02)
  br i1 %1558, label %1559, label %1567

1559:                                             ; preds = %1555
  %1560 = load double, ptr %83, align 8, !tbaa !13
  %1561 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1560, double noundef 5.000000e-02)
  br i1 %1561, label %1562, label %1567

1562:                                             ; preds = %1559
  %1563 = load double, ptr %87, align 8, !tbaa !13
  %1564 = load double, ptr %83, align 8, !tbaa !13
  %1565 = fdiv double %1563, %1564
  %1566 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1565, double noundef 1.200000e+00)
  br label %1567

1567:                                             ; preds = %1562, %1559, %1555
  %1568 = phi i1 [ false, %1559 ], [ false, %1555 ], [ %1566, %1562 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %8, i1 noundef zeroext %1568, ptr noundef @.str.19, i32 noundef 110048, ptr noundef @.str.834)
  %1569 = load double, ptr %91, align 8, !tbaa !13
  %1570 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1569, double noundef 5.000000e-02)
  br i1 %1570, label %1571, label %1579

1571:                                             ; preds = %1567
  %1572 = load double, ptr %89, align 8, !tbaa !13
  %1573 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1572, double noundef 5.000000e-02)
  br i1 %1573, label %1574, label %1579

1574:                                             ; preds = %1571
  %1575 = load double, ptr %91, align 8, !tbaa !13
  %1576 = load double, ptr %89, align 8, !tbaa !13
  %1577 = fdiv double %1575, %1576
  %1578 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1577, double noundef 1.200000e+00)
  br label %1579

1579:                                             ; preds = %1574, %1571, %1567
  %1580 = phi i1 [ false, %1571 ], [ false, %1567 ], [ %1578, %1574 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %8, i1 noundef zeroext %1580, ptr noundef @.str.19, i32 noundef 110049, ptr noundef @.str.835)
  store double 0.000000e+00, ptr %76, align 8, !tbaa !13
  store i64 0, ptr %68, align 8, !tbaa !11
  br label %1581

1581:                                             ; preds = %1915, %1579
  %1582 = load i64, ptr %68, align 8, !tbaa !11
  %1583 = load i64, ptr %72, align 8, !tbaa !11
  %1584 = sub nsw i64 %1583, 2
  %1585 = icmp sle i64 %1582, %1584
  br i1 %1585, label %1586, label %1918

1586:                                             ; preds = %1581
  store i64 0, ptr %69, align 8, !tbaa !11
  br label %1587

1587:                                             ; preds = %1911, %1586
  %1588 = load i64, ptr %69, align 8, !tbaa !11
  %1589 = load i64, ptr %71, align 8, !tbaa !11
  %1590 = sub nsw i64 %1589, 2
  %1591 = icmp sle i64 %1588, %1590
  br i1 %1591, label %1592, label %1914

1592:                                             ; preds = %1587
  %1593 = load ptr, ptr %4, align 8, !tbaa !9
  %1594 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 3, ptr noundef %1593)
  store i64 %1594, ptr %70, align 8, !tbaa !11
  %1595 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %120, i32 0, i32 4
  %1596 = load ptr, ptr %1595, align 8, !tbaa !15
  %1597 = load i64, ptr %69, align 8, !tbaa !11
  %1598 = getelementptr inbounds double, ptr %1596, i64 %1597
  %1599 = load double, ptr %1598, align 8, !tbaa !13
  %1600 = load ptr, ptr %4, align 8, !tbaa !9
  %1601 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1600)
  %1602 = call double @llvm.fmuladd.f64(double 8.000000e-01, double %1601, double 1.000000e-01)
  %1603 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %120, i32 0, i32 4
  %1604 = load ptr, ptr %1603, align 8, !tbaa !15
  %1605 = load i64, ptr %69, align 8, !tbaa !11
  %1606 = add nsw i64 %1605, 1
  %1607 = getelementptr inbounds double, ptr %1604, i64 %1606
  %1608 = load double, ptr %1607, align 8, !tbaa !13
  %1609 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %120, i32 0, i32 4
  %1610 = load ptr, ptr %1609, align 8, !tbaa !15
  %1611 = load i64, ptr %69, align 8, !tbaa !11
  %1612 = getelementptr inbounds double, ptr %1610, i64 %1611
  %1613 = load double, ptr %1612, align 8, !tbaa !13
  %1614 = fsub double %1608, %1613
  %1615 = call double @llvm.fmuladd.f64(double %1602, double %1614, double %1599)
  store double %1615, ptr %118, align 8, !tbaa !13
  %1616 = load i64, ptr %70, align 8, !tbaa !11
  %1617 = icmp eq i64 %1616, 1
  br i1 %1617, label %1618, label %1624

1618:                                             ; preds = %1592
  %1619 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %120, i32 0, i32 4
  %1620 = load ptr, ptr %1619, align 8, !tbaa !15
  %1621 = load i64, ptr %69, align 8, !tbaa !11
  %1622 = getelementptr inbounds double, ptr %1620, i64 %1621
  %1623 = load double, ptr %1622, align 8, !tbaa !13
  store double %1623, ptr %118, align 8, !tbaa !13
  br label %1624

1624:                                             ; preds = %1618, %1592
  %1625 = load i64, ptr %70, align 8, !tbaa !11
  %1626 = icmp eq i64 %1625, 2
  br i1 %1626, label %1627, label %1634

1627:                                             ; preds = %1624
  %1628 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %120, i32 0, i32 4
  %1629 = load ptr, ptr %1628, align 8, !tbaa !15
  %1630 = load i64, ptr %69, align 8, !tbaa !11
  %1631 = add nsw i64 %1630, 1
  %1632 = getelementptr inbounds double, ptr %1629, i64 %1631
  %1633 = load double, ptr %1632, align 8, !tbaa !13
  store double %1633, ptr %118, align 8, !tbaa !13
  br label %1634

1634:                                             ; preds = %1627, %1624
  %1635 = load ptr, ptr %4, align 8, !tbaa !9
  %1636 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 3, ptr noundef %1635)
  store i64 %1636, ptr %70, align 8, !tbaa !11
  %1637 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %121, i32 0, i32 4
  %1638 = load ptr, ptr %1637, align 8, !tbaa !15
  %1639 = load i64, ptr %68, align 8, !tbaa !11
  %1640 = getelementptr inbounds double, ptr %1638, i64 %1639
  %1641 = load double, ptr %1640, align 8, !tbaa !13
  %1642 = load ptr, ptr %4, align 8, !tbaa !9
  %1643 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1642)
  %1644 = call double @llvm.fmuladd.f64(double 8.000000e-01, double %1643, double 1.000000e-01)
  %1645 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %121, i32 0, i32 4
  %1646 = load ptr, ptr %1645, align 8, !tbaa !15
  %1647 = load i64, ptr %68, align 8, !tbaa !11
  %1648 = add nsw i64 %1647, 1
  %1649 = getelementptr inbounds double, ptr %1646, i64 %1648
  %1650 = load double, ptr %1649, align 8, !tbaa !13
  %1651 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %121, i32 0, i32 4
  %1652 = load ptr, ptr %1651, align 8, !tbaa !15
  %1653 = load i64, ptr %68, align 8, !tbaa !11
  %1654 = getelementptr inbounds double, ptr %1652, i64 %1653
  %1655 = load double, ptr %1654, align 8, !tbaa !13
  %1656 = fsub double %1650, %1655
  %1657 = call double @llvm.fmuladd.f64(double %1644, double %1656, double %1641)
  store double %1657, ptr %119, align 8, !tbaa !13
  %1658 = load i64, ptr %70, align 8, !tbaa !11
  %1659 = icmp eq i64 %1658, 1
  br i1 %1659, label %1660, label %1666

1660:                                             ; preds = %1634
  %1661 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %121, i32 0, i32 4
  %1662 = load ptr, ptr %1661, align 8, !tbaa !15
  %1663 = load i64, ptr %68, align 8, !tbaa !11
  %1664 = getelementptr inbounds double, ptr %1662, i64 %1663
  %1665 = load double, ptr %1664, align 8, !tbaa !13
  store double %1665, ptr %119, align 8, !tbaa !13
  br label %1666

1666:                                             ; preds = %1660, %1634
  %1667 = load i64, ptr %70, align 8, !tbaa !11
  %1668 = icmp eq i64 %1667, 2
  br i1 %1668, label %1669, label %1676

1669:                                             ; preds = %1666
  %1670 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %121, i32 0, i32 4
  %1671 = load ptr, ptr %1670, align 8, !tbaa !15
  %1672 = load i64, ptr %68, align 8, !tbaa !11
  %1673 = add nsw i64 %1672, 1
  %1674 = getelementptr inbounds double, ptr %1671, i64 %1673
  %1675 = load double, ptr %1674, align 8, !tbaa !13
  store double %1675, ptr %119, align 8, !tbaa !13
  br label %1676

1676:                                             ; preds = %1669, %1666
  %1677 = load double, ptr %118, align 8, !tbaa !13
  %1678 = load double, ptr %119, align 8, !tbaa !13
  %1679 = load double, ptr %27, align 8, !tbaa !13
  %1680 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL27testspline2dunit_twodnumderPKN11alglib_impl19spline2dinterpolantEdddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef %30, double noundef %1677, double noundef %1678, double noundef %1679, ptr noundef %101, ptr noundef %102, ptr noundef %103, ptr noundef %110, ptr noundef %104, ptr noundef %111, ptr noundef %1680)
  %1681 = load double, ptr %118, align 8, !tbaa !13
  %1682 = load double, ptr %119, align 8, !tbaa !13
  %1683 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12spline2ddiffEPKNS_19spline2dinterpolantEddPdS3_S3_PNS_8ae_stateE(ptr noundef %30, double noundef %1681, double noundef %1682, ptr noundef %97, ptr noundef %98, ptr noundef %99, ptr noundef %1683)
  %1684 = load double, ptr %76, align 8, !tbaa !13
  %1685 = load double, ptr %97, align 8, !tbaa !13
  %1686 = load double, ptr %101, align 8, !tbaa !13
  %1687 = fsub double %1685, %1686
  %1688 = load ptr, ptr %4, align 8, !tbaa !9
  %1689 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1687, ptr noundef %1688)
  %1690 = load ptr, ptr %4, align 8, !tbaa !9
  %1691 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1684, double noundef %1689, ptr noundef %1690)
  store double %1691, ptr %76, align 8, !tbaa !13
  %1692 = load double, ptr %76, align 8, !tbaa !13
  %1693 = load double, ptr %98, align 8, !tbaa !13
  %1694 = load double, ptr %102, align 8, !tbaa !13
  %1695 = fsub double %1693, %1694
  %1696 = load ptr, ptr %4, align 8, !tbaa !9
  %1697 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1695, ptr noundef %1696)
  %1698 = load ptr, ptr %4, align 8, !tbaa !9
  %1699 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1692, double noundef %1697, ptr noundef %1698)
  store double %1699, ptr %76, align 8, !tbaa !13
  %1700 = load double, ptr %76, align 8, !tbaa !13
  %1701 = load double, ptr %99, align 8, !tbaa !13
  %1702 = load double, ptr %103, align 8, !tbaa !13
  %1703 = fsub double %1701, %1702
  %1704 = load ptr, ptr %4, align 8, !tbaa !9
  %1705 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1703, ptr noundef %1704)
  %1706 = load ptr, ptr %4, align 8, !tbaa !9
  %1707 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1700, double noundef %1705, ptr noundef %1706)
  store double %1707, ptr %76, align 8, !tbaa !13
  %1708 = load double, ptr %118, align 8, !tbaa !13
  %1709 = load double, ptr %119, align 8, !tbaa !13
  %1710 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef %30, double noundef %1708, double noundef %1709, ptr noundef %97, ptr noundef %98, ptr noundef %99, ptr noundef %108, ptr noundef %100, ptr noundef %109, ptr noundef %1710)
  %1711 = load double, ptr %97, align 8, !tbaa !13
  %1712 = load double, ptr %101, align 8, !tbaa !13
  %1713 = fsub double %1711, %1712
  %1714 = load ptr, ptr %4, align 8, !tbaa !9
  %1715 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1713, ptr noundef %1714)
  %1716 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1715, double noundef 1.000000e-03)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1716, ptr noundef @.str.19, i32 noundef 110093, ptr noundef @.str.836)
  %1717 = load double, ptr %98, align 8, !tbaa !13
  %1718 = load double, ptr %102, align 8, !tbaa !13
  %1719 = fsub double %1717, %1718
  %1720 = load ptr, ptr %4, align 8, !tbaa !9
  %1721 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1719, ptr noundef %1720)
  %1722 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1721, double noundef 1.000000e-03)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1722, ptr noundef @.str.19, i32 noundef 110094, ptr noundef @.str.837)
  %1723 = load double, ptr %99, align 8, !tbaa !13
  %1724 = load double, ptr %103, align 8, !tbaa !13
  %1725 = fsub double %1723, %1724
  %1726 = load ptr, ptr %4, align 8, !tbaa !9
  %1727 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1725, ptr noundef %1726)
  %1728 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1727, double noundef 1.000000e-03)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1728, ptr noundef @.str.19, i32 noundef 110095, ptr noundef @.str.838)
  %1729 = load double, ptr %108, align 8, !tbaa !13
  %1730 = load double, ptr %110, align 8, !tbaa !13
  %1731 = fsub double %1729, %1730
  %1732 = load ptr, ptr %4, align 8, !tbaa !9
  %1733 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1731, ptr noundef %1732)
  %1734 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1733, double noundef 1.000000e-03)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1734, ptr noundef @.str.19, i32 noundef 110096, ptr noundef @.str.839)
  %1735 = load double, ptr %100, align 8, !tbaa !13
  %1736 = load double, ptr %104, align 8, !tbaa !13
  %1737 = fsub double %1735, %1736
  %1738 = load ptr, ptr %4, align 8, !tbaa !9
  %1739 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1737, ptr noundef %1738)
  %1740 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1739, double noundef 1.000000e-03)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1740, ptr noundef @.str.19, i32 noundef 110097, ptr noundef @.str.840)
  %1741 = load double, ptr %109, align 8, !tbaa !13
  %1742 = load double, ptr %111, align 8, !tbaa !13
  %1743 = fsub double %1741, %1742
  %1744 = load ptr, ptr %4, align 8, !tbaa !9
  %1745 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1743, ptr noundef %1744)
  %1746 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1745, double noundef 1.000000e-03)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1746, ptr noundef @.str.19, i32 noundef 110098, ptr noundef @.str.841)
  %1747 = load i64, ptr %68, align 8, !tbaa !11
  %1748 = icmp eq i64 %1747, 0
  br i1 %1748, label %1754, label %1749

1749:                                             ; preds = %1676
  %1750 = load i64, ptr %68, align 8, !tbaa !11
  %1751 = load i64, ptr %72, align 8, !tbaa !11
  %1752 = sub nsw i64 %1751, 2
  %1753 = icmp eq i64 %1750, %1752
  br i1 %1753, label %1754, label %1827

1754:                                             ; preds = %1749, %1676
  %1755 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %120, i32 0, i32 4
  %1756 = load ptr, ptr %1755, align 8, !tbaa !15
  %1757 = load i64, ptr %69, align 8, !tbaa !11
  %1758 = getelementptr inbounds double, ptr %1756, i64 %1757
  %1759 = load double, ptr %1758, align 8, !tbaa !13
  %1760 = load ptr, ptr %4, align 8, !tbaa !9
  %1761 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %122, ptr noundef %1760)
  %1762 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %120, i32 0, i32 4
  %1763 = load ptr, ptr %1762, align 8, !tbaa !15
  %1764 = load i64, ptr %69, align 8, !tbaa !11
  %1765 = add nsw i64 %1764, 1
  %1766 = getelementptr inbounds double, ptr %1763, i64 %1765
  %1767 = load double, ptr %1766, align 8, !tbaa !13
  %1768 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %120, i32 0, i32 4
  %1769 = load ptr, ptr %1768, align 8, !tbaa !15
  %1770 = load i64, ptr %69, align 8, !tbaa !11
  %1771 = getelementptr inbounds double, ptr %1769, i64 %1770
  %1772 = load double, ptr %1771, align 8, !tbaa !13
  %1773 = fsub double %1767, %1772
  %1774 = call double @llvm.fmuladd.f64(double %1761, double %1773, double %1759)
  store double %1774, ptr %118, align 8, !tbaa !13
  %1775 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %121, i32 0, i32 4
  %1776 = load ptr, ptr %1775, align 8, !tbaa !15
  %1777 = load i64, ptr %68, align 8, !tbaa !11
  %1778 = getelementptr inbounds double, ptr %1776, i64 %1777
  %1779 = load double, ptr %1778, align 8, !tbaa !13
  %1780 = load ptr, ptr %4, align 8, !tbaa !9
  %1781 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %122, ptr noundef %1780)
  %1782 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %121, i32 0, i32 4
  %1783 = load ptr, ptr %1782, align 8, !tbaa !15
  %1784 = load i64, ptr %68, align 8, !tbaa !11
  %1785 = add nsw i64 %1784, 1
  %1786 = getelementptr inbounds double, ptr %1783, i64 %1785
  %1787 = load double, ptr %1786, align 8, !tbaa !13
  %1788 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %121, i32 0, i32 4
  %1789 = load ptr, ptr %1788, align 8, !tbaa !15
  %1790 = load i64, ptr %68, align 8, !tbaa !11
  %1791 = getelementptr inbounds double, ptr %1789, i64 %1790
  %1792 = load double, ptr %1791, align 8, !tbaa !13
  %1793 = fsub double %1787, %1792
  %1794 = call double @llvm.fmuladd.f64(double %1781, double %1793, double %1779)
  store double %1794, ptr %119, align 8, !tbaa !13
  %1795 = load double, ptr %118, align 8, !tbaa !13
  %1796 = load double, ptr %119, align 8, !tbaa !13
  %1797 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef %30, double noundef %1795, double noundef %1796, ptr noundef %97, ptr noundef %98, ptr noundef %99, ptr noundef %108, ptr noundef %100, ptr noundef %109, ptr noundef %1797)
  %1798 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %121, i32 0, i32 4
  %1799 = load ptr, ptr %1798, align 8, !tbaa !15
  %1800 = load i64, ptr %68, align 8, !tbaa !11
  %1801 = getelementptr inbounds double, ptr %1799, i64 %1800
  %1802 = load double, ptr %1801, align 8, !tbaa !13
  %1803 = load ptr, ptr %4, align 8, !tbaa !9
  %1804 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %122, ptr noundef %1803)
  %1805 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %121, i32 0, i32 4
  %1806 = load ptr, ptr %1805, align 8, !tbaa !15
  %1807 = load i64, ptr %68, align 8, !tbaa !11
  %1808 = add nsw i64 %1807, 1
  %1809 = getelementptr inbounds double, ptr %1806, i64 %1808
  %1810 = load double, ptr %1809, align 8, !tbaa !13
  %1811 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %121, i32 0, i32 4
  %1812 = load ptr, ptr %1811, align 8, !tbaa !15
  %1813 = load i64, ptr %68, align 8, !tbaa !11
  %1814 = getelementptr inbounds double, ptr %1812, i64 %1813
  %1815 = load double, ptr %1814, align 8, !tbaa !13
  %1816 = fsub double %1810, %1815
  %1817 = call double @llvm.fmuladd.f64(double %1804, double %1816, double %1802)
  store double %1817, ptr %119, align 8, !tbaa !13
  %1818 = load double, ptr %118, align 8, !tbaa !13
  %1819 = load double, ptr %119, align 8, !tbaa !13
  %1820 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef %30, double noundef %1818, double noundef %1819, ptr noundef %105, ptr noundef %106, ptr noundef %107, ptr noundef %112, ptr noundef %114, ptr noundef %113, ptr noundef %1820)
  %1821 = load double, ptr %113, align 8, !tbaa !13
  %1822 = load double, ptr %109, align 8, !tbaa !13
  %1823 = fsub double %1821, %1822
  %1824 = load ptr, ptr %4, align 8, !tbaa !9
  %1825 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1823, ptr noundef %1824)
  %1826 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1825, double noundef 1.000000e-08)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1826, ptr noundef @.str.19, i32 noundef 110110, ptr noundef @.str.842)
  br label %1827

1827:                                             ; preds = %1754, %1749
  %1828 = load i64, ptr %69, align 8, !tbaa !11
  %1829 = icmp eq i64 %1828, 0
  br i1 %1829, label %1835, label %1830

1830:                                             ; preds = %1827
  %1831 = load i64, ptr %69, align 8, !tbaa !11
  %1832 = load i64, ptr %71, align 8, !tbaa !11
  %1833 = sub nsw i64 %1832, 2
  %1834 = icmp eq i64 %1831, %1833
  br i1 %1834, label %1835, label %1910

1835:                                             ; preds = %1830, %1827
  %1836 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %120, i32 0, i32 4
  %1837 = load ptr, ptr %1836, align 8, !tbaa !15
  %1838 = load i64, ptr %69, align 8, !tbaa !11
  %1839 = getelementptr inbounds double, ptr %1837, i64 %1838
  %1840 = load double, ptr %1839, align 8, !tbaa !13
  %1841 = load ptr, ptr %4, align 8, !tbaa !9
  %1842 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %122, ptr noundef %1841)
  %1843 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %120, i32 0, i32 4
  %1844 = load ptr, ptr %1843, align 8, !tbaa !15
  %1845 = load i64, ptr %69, align 8, !tbaa !11
  %1846 = add nsw i64 %1845, 1
  %1847 = getelementptr inbounds double, ptr %1844, i64 %1846
  %1848 = load double, ptr %1847, align 8, !tbaa !13
  %1849 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %120, i32 0, i32 4
  %1850 = load ptr, ptr %1849, align 8, !tbaa !15
  %1851 = load i64, ptr %69, align 8, !tbaa !11
  %1852 = getelementptr inbounds double, ptr %1850, i64 %1851
  %1853 = load double, ptr %1852, align 8, !tbaa !13
  %1854 = fsub double %1848, %1853
  %1855 = call double @llvm.fmuladd.f64(double %1842, double %1854, double %1840)
  store double %1855, ptr %118, align 8, !tbaa !13
  %1856 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %121, i32 0, i32 4
  %1857 = load ptr, ptr %1856, align 8, !tbaa !15
  %1858 = load i64, ptr %68, align 8, !tbaa !11
  %1859 = getelementptr inbounds double, ptr %1857, i64 %1858
  %1860 = load double, ptr %1859, align 8, !tbaa !13
  %1861 = load ptr, ptr %4, align 8, !tbaa !9
  %1862 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %122, ptr noundef %1861)
  %1863 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %121, i32 0, i32 4
  %1864 = load ptr, ptr %1863, align 8, !tbaa !15
  %1865 = load i64, ptr %68, align 8, !tbaa !11
  %1866 = add nsw i64 %1865, 1
  %1867 = getelementptr inbounds double, ptr %1864, i64 %1866
  %1868 = load double, ptr %1867, align 8, !tbaa !13
  %1869 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %121, i32 0, i32 4
  %1870 = load ptr, ptr %1869, align 8, !tbaa !15
  %1871 = load i64, ptr %68, align 8, !tbaa !11
  %1872 = getelementptr inbounds double, ptr %1870, i64 %1871
  %1873 = load double, ptr %1872, align 8, !tbaa !13
  %1874 = fsub double %1868, %1873
  %1875 = call double @llvm.fmuladd.f64(double %1862, double %1874, double %1860)
  store double %1875, ptr %119, align 8, !tbaa !13
  %1876 = load double, ptr %118, align 8, !tbaa !13
  %1877 = load double, ptr %119, align 8, !tbaa !13
  %1878 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef %30, double noundef %1876, double noundef %1877, ptr noundef %97, ptr noundef %98, ptr noundef %99, ptr noundef %108, ptr noundef %100, ptr noundef %109, ptr noundef %1878)
  %1879 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %120, i32 0, i32 4
  %1880 = load ptr, ptr %1879, align 8, !tbaa !15
  %1881 = load i64, ptr %69, align 8, !tbaa !11
  %1882 = getelementptr inbounds double, ptr %1880, i64 %1881
  %1883 = load double, ptr %1882, align 8, !tbaa !13
  %1884 = load ptr, ptr %4, align 8, !tbaa !9
  %1885 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %122, ptr noundef %1884)
  %1886 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %120, i32 0, i32 4
  %1887 = load ptr, ptr %1886, align 8, !tbaa !15
  %1888 = load i64, ptr %69, align 8, !tbaa !11
  %1889 = add nsw i64 %1888, 1
  %1890 = getelementptr inbounds double, ptr %1887, i64 %1889
  %1891 = load double, ptr %1890, align 8, !tbaa !13
  %1892 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %120, i32 0, i32 4
  %1893 = load ptr, ptr %1892, align 8, !tbaa !15
  %1894 = load i64, ptr %69, align 8, !tbaa !11
  %1895 = getelementptr inbounds double, ptr %1893, i64 %1894
  %1896 = load double, ptr %1895, align 8, !tbaa !13
  %1897 = fsub double %1891, %1896
  %1898 = call double @llvm.fmuladd.f64(double %1885, double %1897, double %1883)
  store double %1898, ptr %118, align 8, !tbaa !13
  %1899 = load double, ptr %118, align 8, !tbaa !13
  %1900 = load double, ptr %119, align 8, !tbaa !13
  %1901 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef %30, double noundef %1899, double noundef %1900, ptr noundef %105, ptr noundef %106, ptr noundef %107, ptr noundef %112, ptr noundef %114, ptr noundef %113, ptr noundef %1901)
  %1902 = load double, ptr %112, align 8, !tbaa !13
  %1903 = load double, ptr %108, align 8, !tbaa !13
  %1904 = fsub double %1902, %1903
  %1905 = load ptr, ptr %4, align 8, !tbaa !9
  %1906 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1904, ptr noundef %1905)
  %1907 = load ptr, ptr %4, align 8, !tbaa !9
  %1908 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 5.000000e-16, ptr noundef %1907)
  %1909 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1906, double noundef %1908)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %1909, ptr noundef @.str.19, i32 noundef 110119, ptr noundef @.str.843)
  br label %1910

1910:                                             ; preds = %1835, %1830
  br label %1911

1911:                                             ; preds = %1910
  %1912 = load i64, ptr %69, align 8, !tbaa !11
  %1913 = add nsw i64 %1912, 1
  store i64 %1913, ptr %69, align 8, !tbaa !11
  br label %1587, !llvm.loop !43

1914:                                             ; preds = %1587
  br label %1915

1915:                                             ; preds = %1914
  %1916 = load i64, ptr %68, align 8, !tbaa !11
  %1917 = add nsw i64 %1916, 1
  store i64 %1917, ptr %68, align 8, !tbaa !11
  br label %1581, !llvm.loop !44

1918:                                             ; preds = %1581
  %1919 = load i8, ptr %9, align 1, !tbaa !5, !range !35, !noundef !36
  %1920 = trunc i8 %1919 to i1
  br i1 %1920, label %1924, label %1921

1921:                                             ; preds = %1918
  %1922 = load double, ptr %76, align 8, !tbaa !13
  %1923 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1922, double noundef 1.000000e-03)
  br label %1924

1924:                                             ; preds = %1921, %1918
  %1925 = phi i1 [ true, %1918 ], [ %1923, %1921 ]
  %1926 = zext i1 %1925 to i8
  store i8 %1926, ptr %9, align 1, !tbaa !5
  %1927 = load i8, ptr %12, align 1, !tbaa !5, !range !35, !noundef !36
  %1928 = trunc i8 %1927 to i1
  br i1 %1928, label %1933, label %1929

1929:                                             ; preds = %1924
  %1930 = load ptr, ptr %4, align 8, !tbaa !9
  %1931 = call noundef zeroext i1 @_ZL27testspline2dunit_testunpackPKN11alglib_impl19spline2dinterpolantEPKNS_9ae_vectorES5_PNS_8ae_stateE(ptr noundef %30, ptr noundef %32, ptr noundef %33, ptr noundef %1930)
  %1932 = xor i1 %1931, true
  br label %1933

1933:                                             ; preds = %1929, %1924
  %1934 = phi i1 [ true, %1924 ], [ %1932, %1929 ]
  %1935 = zext i1 %1934 to i8
  store i8 %1935, ptr %12, align 1, !tbaa !5
  %1936 = load i8, ptr %13, align 1, !tbaa !5, !range !35, !noundef !36
  %1937 = trunc i8 %1936 to i1
  br i1 %1937, label %1946, label %1938

1938:                                             ; preds = %1933
  %1939 = load double, ptr %64, align 8, !tbaa !13
  %1940 = load double, ptr %66, align 8, !tbaa !13
  %1941 = load double, ptr %65, align 8, !tbaa !13
  %1942 = load double, ptr %67, align 8, !tbaa !13
  %1943 = load ptr, ptr %4, align 8, !tbaa !9
  %1944 = call noundef zeroext i1 @_ZL29testspline2dunit_testlintransPKN11alglib_impl19spline2dinterpolantElddddPNS_8ae_stateE(ptr noundef %30, i64 noundef 1, double noundef %1939, double noundef %1940, double noundef %1941, double noundef %1942, ptr noundef %1943)
  %1945 = xor i1 %1944, true
  br label %1946

1946:                                             ; preds = %1938, %1933
  %1947 = phi i1 [ true, %1933 ], [ %1945, %1938 ]
  %1948 = zext i1 %1947 to i8
  store i8 %1948, ptr %13, align 1, !tbaa !5
  %1949 = load i64, ptr %71, align 8, !tbaa !11
  %1950 = load i64, ptr %72, align 8, !tbaa !11
  %1951 = load i64, ptr %54, align 8, !tbaa !11
  %1952 = load i64, ptr %55, align 8, !tbaa !11
  %1953 = load i64, ptr %56, align 8, !tbaa !11
  %1954 = load i64, ptr %57, align 8, !tbaa !11
  %1955 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl21spline2dbuildclampedvEPKNS_9ae_vectorElS2_lS2_lS2_lS2_lS2_lS2_S2_lPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %28, i64 noundef %1949, ptr noundef %29, i64 noundef %1950, ptr noundef %43, i64 noundef %1951, ptr noundef %44, i64 noundef %1952, ptr noundef %45, i64 noundef %1953, ptr noundef %46, i64 noundef %1954, ptr noundef %47, ptr noundef %34, i64 noundef 1, ptr noundef %30, ptr noundef %1955)
  store double 0.000000e+00, ptr %76, align 8, !tbaa !13
  store i64 0, ptr %68, align 8, !tbaa !11
  br label %1956

1956:                                             ; preds = %1998, %1946
  %1957 = load i64, ptr %68, align 8, !tbaa !11
  %1958 = load i64, ptr %72, align 8, !tbaa !11
  %1959 = sub nsw i64 %1958, 1
  %1960 = icmp sle i64 %1957, %1959
  br i1 %1960, label %1961, label %2001

1961:                                             ; preds = %1956
  store i64 0, ptr %69, align 8, !tbaa !11
  br label %1962

1962:                                             ; preds = %1994, %1961
  %1963 = load i64, ptr %69, align 8, !tbaa !11
  %1964 = load i64, ptr %71, align 8, !tbaa !11
  %1965 = sub nsw i64 %1964, 1
  %1966 = icmp sle i64 %1963, %1965
  br i1 %1966, label %1967, label %1997

1967:                                             ; preds = %1962
  %1968 = load double, ptr %76, align 8, !tbaa !13
  %1969 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %61, i32 0, i32 6
  %1970 = load ptr, ptr %1969, align 8, !tbaa !15
  %1971 = load i64, ptr %68, align 8, !tbaa !11
  %1972 = getelementptr inbounds ptr, ptr %1970, i64 %1971
  %1973 = load ptr, ptr %1972, align 8, !tbaa !9
  %1974 = load i64, ptr %69, align 8, !tbaa !11
  %1975 = getelementptr inbounds double, ptr %1973, i64 %1974
  %1976 = load double, ptr %1975, align 8, !tbaa !13
  %1977 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %1978 = load ptr, ptr %1977, align 8, !tbaa !15
  %1979 = load i64, ptr %69, align 8, !tbaa !11
  %1980 = getelementptr inbounds double, ptr %1978, i64 %1979
  %1981 = load double, ptr %1980, align 8, !tbaa !13
  %1982 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %1983 = load ptr, ptr %1982, align 8, !tbaa !15
  %1984 = load i64, ptr %68, align 8, !tbaa !11
  %1985 = getelementptr inbounds double, ptr %1983, i64 %1984
  %1986 = load double, ptr %1985, align 8, !tbaa !13
  %1987 = load ptr, ptr %4, align 8, !tbaa !9
  %1988 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef %30, double noundef %1981, double noundef %1986, ptr noundef %1987)
  %1989 = fsub double %1976, %1988
  %1990 = load ptr, ptr %4, align 8, !tbaa !9
  %1991 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1989, ptr noundef %1990)
  %1992 = load ptr, ptr %4, align 8, !tbaa !9
  %1993 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1968, double noundef %1991, ptr noundef %1992)
  store double %1993, ptr %76, align 8, !tbaa !13
  br label %1994

1994:                                             ; preds = %1967
  %1995 = load i64, ptr %69, align 8, !tbaa !11
  %1996 = add nsw i64 %1995, 1
  store i64 %1996, ptr %69, align 8, !tbaa !11
  br label %1962, !llvm.loop !45

1997:                                             ; preds = %1962
  br label %1998

1998:                                             ; preds = %1997
  %1999 = load i64, ptr %68, align 8, !tbaa !11
  %2000 = add nsw i64 %1999, 1
  store i64 %2000, ptr %68, align 8, !tbaa !11
  br label %1956, !llvm.loop !46

2001:                                             ; preds = %1956
  %2002 = load double, ptr %76, align 8, !tbaa !13
  %2003 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2002, double noundef 0x3D95FD7FE1796496)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %8, i1 noundef zeroext %2003, ptr noundef @.str.19, i32 noundef 110147, ptr noundef @.str.844)
  store i64 0, ptr %68, align 8, !tbaa !11
  br label %2004

2004:                                             ; preds = %2152, %2001
  %2005 = load i64, ptr %68, align 8, !tbaa !11
  %2006 = load i64, ptr %72, align 8, !tbaa !11
  %2007 = sub nsw i64 %2006, 1
  %2008 = icmp sle i64 %2005, %2007
  br i1 %2008, label %2009, label %2155

2009:                                             ; preds = %2004
  %2010 = load i64, ptr %56, align 8, !tbaa !11
  %2011 = icmp ne i64 %2010, 0
  br i1 %2011, label %2012, label %2042

2012:                                             ; preds = %2009
  %2013 = load double, ptr %64, align 8, !tbaa !13
  %2014 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %2015 = load ptr, ptr %2014, align 8, !tbaa !15
  %2016 = load i64, ptr %68, align 8, !tbaa !11
  %2017 = getelementptr inbounds double, ptr %2015, i64 %2016
  %2018 = load double, ptr %2017, align 8, !tbaa !13
  %2019 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef %30, double noundef %2013, double noundef %2018, ptr noundef %97, ptr noundef %98, ptr noundef %99, ptr noundef %108, ptr noundef %100, ptr noundef %109, ptr noundef %2019)
  store double 0.000000e+00, ptr %77, align 8, !tbaa !13
  %2020 = load i64, ptr %56, align 8, !tbaa !11
  %2021 = icmp eq i64 %2020, 1
  br i1 %2021, label %2022, label %2024

2022:                                             ; preds = %2012
  %2023 = load double, ptr %98, align 8, !tbaa !13
  store double %2023, ptr %77, align 8, !tbaa !13
  br label %2024

2024:                                             ; preds = %2022, %2012
  %2025 = load i64, ptr %56, align 8, !tbaa !11
  %2026 = icmp eq i64 %2025, 2
  br i1 %2026, label %2027, label %2029

2027:                                             ; preds = %2024
  %2028 = load double, ptr %108, align 8, !tbaa !13
  store double %2028, ptr %77, align 8, !tbaa !13
  br label %2029

2029:                                             ; preds = %2027, %2024
  %2030 = load double, ptr %77, align 8, !tbaa !13
  %2031 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %45, i32 0, i32 4
  %2032 = load ptr, ptr %2031, align 8, !tbaa !15
  %2033 = load i64, ptr %68, align 8, !tbaa !11
  %2034 = getelementptr inbounds double, ptr %2032, i64 %2033
  %2035 = load double, ptr %2034, align 8, !tbaa !13
  %2036 = fsub double %2030, %2035
  %2037 = load ptr, ptr %4, align 8, !tbaa !9
  %2038 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2036, ptr noundef %2037)
  %2039 = load ptr, ptr %4, align 8, !tbaa !9
  %2040 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 5.000000e-16, ptr noundef %2039)
  %2041 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2038, double noundef %2040)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %8, i1 noundef zeroext %2041, ptr noundef @.str.19, i32 noundef 110166, ptr noundef @.str.845)
  br label %2078

2042:                                             ; preds = %2009
  %2043 = load double, ptr %64, align 8, !tbaa !13
  store double %2043, ptr %118, align 8, !tbaa !13
  %2044 = load double, ptr %65, align 8, !tbaa !13
  %2045 = load ptr, ptr %4, align 8, !tbaa !9
  %2046 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %122, ptr noundef %2045)
  %2047 = load double, ptr %67, align 8, !tbaa !13
  %2048 = load double, ptr %65, align 8, !tbaa !13
  %2049 = fsub double %2047, %2048
  %2050 = call double @llvm.fmuladd.f64(double %2046, double %2049, double %2044)
  store double %2050, ptr %119, align 8, !tbaa !13
  %2051 = load double, ptr %118, align 8, !tbaa !13
  %2052 = load double, ptr %119, align 8, !tbaa !13
  %2053 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef %30, double noundef %2051, double noundef %2052, ptr noundef %97, ptr noundef %98, ptr noundef %99, ptr noundef %108, ptr noundef %100, ptr noundef %109, ptr noundef %2053)
  %2054 = load double, ptr %64, align 8, !tbaa !13
  %2055 = load ptr, ptr %4, align 8, !tbaa !9
  %2056 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %122, ptr noundef %2055)
  %2057 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %120, i32 0, i32 4
  %2058 = load ptr, ptr %2057, align 8, !tbaa !15
  %2059 = getelementptr inbounds double, ptr %2058, i64 1
  %2060 = load double, ptr %2059, align 8, !tbaa !13
  %2061 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %120, i32 0, i32 4
  %2062 = load ptr, ptr %2061, align 8, !tbaa !15
  %2063 = getelementptr inbounds double, ptr %2062, i64 0
  %2064 = load double, ptr %2063, align 8, !tbaa !13
  %2065 = fsub double %2060, %2064
  %2066 = call double @llvm.fmuladd.f64(double %2056, double %2065, double %2054)
  store double %2066, ptr %118, align 8, !tbaa !13
  %2067 = load double, ptr %118, align 8, !tbaa !13
  %2068 = load double, ptr %119, align 8, !tbaa !13
  %2069 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef %30, double noundef %2067, double noundef %2068, ptr noundef %101, ptr noundef %102, ptr noundef %103, ptr noundef %110, ptr noundef %104, ptr noundef %111, ptr noundef %2069)
  %2070 = load double, ptr %110, align 8, !tbaa !13
  %2071 = load double, ptr %108, align 8, !tbaa !13
  %2072 = fsub double %2070, %2071
  %2073 = load ptr, ptr %4, align 8, !tbaa !9
  %2074 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2072, ptr noundef %2073)
  %2075 = load ptr, ptr %4, align 8, !tbaa !9
  %2076 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 5.000000e-16, ptr noundef %2075)
  %2077 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2074, double noundef %2076)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %8, i1 noundef zeroext %2077, ptr noundef @.str.19, i32 noundef 110179, ptr noundef @.str.846)
  br label %2078

2078:                                             ; preds = %2042, %2029
  %2079 = load i64, ptr %57, align 8, !tbaa !11
  %2080 = icmp ne i64 %2079, 0
  br i1 %2080, label %2081, label %2111

2081:                                             ; preds = %2078
  %2082 = load double, ptr %66, align 8, !tbaa !13
  %2083 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %2084 = load ptr, ptr %2083, align 8, !tbaa !15
  %2085 = load i64, ptr %68, align 8, !tbaa !11
  %2086 = getelementptr inbounds double, ptr %2084, i64 %2085
  %2087 = load double, ptr %2086, align 8, !tbaa !13
  %2088 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef %30, double noundef %2082, double noundef %2087, ptr noundef %97, ptr noundef %98, ptr noundef %99, ptr noundef %108, ptr noundef %100, ptr noundef %109, ptr noundef %2088)
  store double 0.000000e+00, ptr %77, align 8, !tbaa !13
  %2089 = load i64, ptr %57, align 8, !tbaa !11
  %2090 = icmp eq i64 %2089, 1
  br i1 %2090, label %2091, label %2093

2091:                                             ; preds = %2081
  %2092 = load double, ptr %98, align 8, !tbaa !13
  store double %2092, ptr %77, align 8, !tbaa !13
  br label %2093

2093:                                             ; preds = %2091, %2081
  %2094 = load i64, ptr %57, align 8, !tbaa !11
  %2095 = icmp eq i64 %2094, 2
  br i1 %2095, label %2096, label %2098

2096:                                             ; preds = %2093
  %2097 = load double, ptr %108, align 8, !tbaa !13
  store double %2097, ptr %77, align 8, !tbaa !13
  br label %2098

2098:                                             ; preds = %2096, %2093
  %2099 = load double, ptr %77, align 8, !tbaa !13
  %2100 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %46, i32 0, i32 4
  %2101 = load ptr, ptr %2100, align 8, !tbaa !15
  %2102 = load i64, ptr %68, align 8, !tbaa !11
  %2103 = getelementptr inbounds double, ptr %2101, i64 %2102
  %2104 = load double, ptr %2103, align 8, !tbaa !13
  %2105 = fsub double %2099, %2104
  %2106 = load ptr, ptr %4, align 8, !tbaa !9
  %2107 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2105, ptr noundef %2106)
  %2108 = load ptr, ptr %4, align 8, !tbaa !9
  %2109 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 5.000000e-16, ptr noundef %2108)
  %2110 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2107, double noundef %2109)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %8, i1 noundef zeroext %2110, ptr noundef @.str.19, i32 noundef 110197, ptr noundef @.str.847)
  br label %2151

2111:                                             ; preds = %2078
  %2112 = load double, ptr %66, align 8, !tbaa !13
  store double %2112, ptr %118, align 8, !tbaa !13
  %2113 = load double, ptr %65, align 8, !tbaa !13
  %2114 = load ptr, ptr %4, align 8, !tbaa !9
  %2115 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %122, ptr noundef %2114)
  %2116 = load double, ptr %67, align 8, !tbaa !13
  %2117 = load double, ptr %65, align 8, !tbaa !13
  %2118 = fsub double %2116, %2117
  %2119 = call double @llvm.fmuladd.f64(double %2115, double %2118, double %2113)
  store double %2119, ptr %119, align 8, !tbaa !13
  %2120 = load double, ptr %118, align 8, !tbaa !13
  %2121 = load double, ptr %119, align 8, !tbaa !13
  %2122 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef %30, double noundef %2120, double noundef %2121, ptr noundef %97, ptr noundef %98, ptr noundef %99, ptr noundef %108, ptr noundef %100, ptr noundef %109, ptr noundef %2122)
  %2123 = load double, ptr %66, align 8, !tbaa !13
  %2124 = load ptr, ptr %4, align 8, !tbaa !9
  %2125 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %122, ptr noundef %2124)
  %2126 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %120, i32 0, i32 4
  %2127 = load ptr, ptr %2126, align 8, !tbaa !15
  %2128 = load i64, ptr %71, align 8, !tbaa !11
  %2129 = sub nsw i64 %2128, 2
  %2130 = getelementptr inbounds double, ptr %2127, i64 %2129
  %2131 = load double, ptr %2130, align 8, !tbaa !13
  %2132 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %120, i32 0, i32 4
  %2133 = load ptr, ptr %2132, align 8, !tbaa !15
  %2134 = load i64, ptr %71, align 8, !tbaa !11
  %2135 = sub nsw i64 %2134, 1
  %2136 = getelementptr inbounds double, ptr %2133, i64 %2135
  %2137 = load double, ptr %2136, align 8, !tbaa !13
  %2138 = fsub double %2131, %2137
  %2139 = call double @llvm.fmuladd.f64(double %2125, double %2138, double %2123)
  store double %2139, ptr %118, align 8, !tbaa !13
  %2140 = load double, ptr %118, align 8, !tbaa !13
  %2141 = load double, ptr %119, align 8, !tbaa !13
  %2142 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef %30, double noundef %2140, double noundef %2141, ptr noundef %101, ptr noundef %102, ptr noundef %103, ptr noundef %110, ptr noundef %104, ptr noundef %111, ptr noundef %2142)
  %2143 = load double, ptr %110, align 8, !tbaa !13
  %2144 = load double, ptr %108, align 8, !tbaa !13
  %2145 = fsub double %2143, %2144
  %2146 = load ptr, ptr %4, align 8, !tbaa !9
  %2147 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2145, ptr noundef %2146)
  %2148 = load ptr, ptr %4, align 8, !tbaa !9
  %2149 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 5.000000e-16, ptr noundef %2148)
  %2150 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2147, double noundef %2149)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %8, i1 noundef zeroext %2150, ptr noundef @.str.19, i32 noundef 110210, ptr noundef @.str.848)
  br label %2151

2151:                                             ; preds = %2111, %2098
  br label %2152

2152:                                             ; preds = %2151
  %2153 = load i64, ptr %68, align 8, !tbaa !11
  %2154 = add nsw i64 %2153, 1
  store i64 %2154, ptr %68, align 8, !tbaa !11
  br label %2004, !llvm.loop !47

2155:                                             ; preds = %2004
  store i64 0, ptr %69, align 8, !tbaa !11
  br label %2156

2156:                                             ; preds = %2304, %2155
  %2157 = load i64, ptr %69, align 8, !tbaa !11
  %2158 = load i64, ptr %71, align 8, !tbaa !11
  %2159 = sub nsw i64 %2158, 1
  %2160 = icmp sle i64 %2157, %2159
  br i1 %2160, label %2161, label %2307

2161:                                             ; preds = %2156
  %2162 = load i64, ptr %54, align 8, !tbaa !11
  %2163 = icmp ne i64 %2162, 0
  br i1 %2163, label %2164, label %2194

2164:                                             ; preds = %2161
  %2165 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %2166 = load ptr, ptr %2165, align 8, !tbaa !15
  %2167 = load i64, ptr %69, align 8, !tbaa !11
  %2168 = getelementptr inbounds double, ptr %2166, i64 %2167
  %2169 = load double, ptr %2168, align 8, !tbaa !13
  %2170 = load double, ptr %65, align 8, !tbaa !13
  %2171 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef %30, double noundef %2169, double noundef %2170, ptr noundef %97, ptr noundef %98, ptr noundef %99, ptr noundef %108, ptr noundef %100, ptr noundef %109, ptr noundef %2171)
  store double 0.000000e+00, ptr %77, align 8, !tbaa !13
  %2172 = load i64, ptr %54, align 8, !tbaa !11
  %2173 = icmp eq i64 %2172, 1
  br i1 %2173, label %2174, label %2176

2174:                                             ; preds = %2164
  %2175 = load double, ptr %99, align 8, !tbaa !13
  store double %2175, ptr %77, align 8, !tbaa !13
  br label %2176

2176:                                             ; preds = %2174, %2164
  %2177 = load i64, ptr %54, align 8, !tbaa !11
  %2178 = icmp eq i64 %2177, 2
  br i1 %2178, label %2179, label %2181

2179:                                             ; preds = %2176
  %2180 = load double, ptr %109, align 8, !tbaa !13
  store double %2180, ptr %77, align 8, !tbaa !13
  br label %2181

2181:                                             ; preds = %2179, %2176
  %2182 = load double, ptr %77, align 8, !tbaa !13
  %2183 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %43, i32 0, i32 4
  %2184 = load ptr, ptr %2183, align 8, !tbaa !15
  %2185 = load i64, ptr %69, align 8, !tbaa !11
  %2186 = getelementptr inbounds double, ptr %2184, i64 %2185
  %2187 = load double, ptr %2186, align 8, !tbaa !13
  %2188 = fsub double %2182, %2187
  %2189 = load ptr, ptr %4, align 8, !tbaa !9
  %2190 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2188, ptr noundef %2189)
  %2191 = load ptr, ptr %4, align 8, !tbaa !9
  %2192 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 5.000000e-16, ptr noundef %2191)
  %2193 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2190, double noundef %2192)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %8, i1 noundef zeroext %2193, ptr noundef @.str.19, i32 noundef 110231, ptr noundef @.str.849)
  br label %2230

2194:                                             ; preds = %2161
  %2195 = load double, ptr %64, align 8, !tbaa !13
  %2196 = load ptr, ptr %4, align 8, !tbaa !9
  %2197 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %122, ptr noundef %2196)
  %2198 = load double, ptr %66, align 8, !tbaa !13
  %2199 = load double, ptr %64, align 8, !tbaa !13
  %2200 = fsub double %2198, %2199
  %2201 = call double @llvm.fmuladd.f64(double %2197, double %2200, double %2195)
  store double %2201, ptr %118, align 8, !tbaa !13
  %2202 = load double, ptr %65, align 8, !tbaa !13
  store double %2202, ptr %119, align 8, !tbaa !13
  %2203 = load double, ptr %118, align 8, !tbaa !13
  %2204 = load double, ptr %119, align 8, !tbaa !13
  %2205 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef %30, double noundef %2203, double noundef %2204, ptr noundef %97, ptr noundef %98, ptr noundef %99, ptr noundef %108, ptr noundef %100, ptr noundef %109, ptr noundef %2205)
  %2206 = load double, ptr %65, align 8, !tbaa !13
  %2207 = load ptr, ptr %4, align 8, !tbaa !9
  %2208 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %122, ptr noundef %2207)
  %2209 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %121, i32 0, i32 4
  %2210 = load ptr, ptr %2209, align 8, !tbaa !15
  %2211 = getelementptr inbounds double, ptr %2210, i64 1
  %2212 = load double, ptr %2211, align 8, !tbaa !13
  %2213 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %121, i32 0, i32 4
  %2214 = load ptr, ptr %2213, align 8, !tbaa !15
  %2215 = getelementptr inbounds double, ptr %2214, i64 0
  %2216 = load double, ptr %2215, align 8, !tbaa !13
  %2217 = fsub double %2212, %2216
  %2218 = call double @llvm.fmuladd.f64(double %2208, double %2217, double %2206)
  store double %2218, ptr %119, align 8, !tbaa !13
  %2219 = load double, ptr %118, align 8, !tbaa !13
  %2220 = load double, ptr %119, align 8, !tbaa !13
  %2221 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef %30, double noundef %2219, double noundef %2220, ptr noundef %101, ptr noundef %102, ptr noundef %103, ptr noundef %110, ptr noundef %104, ptr noundef %111, ptr noundef %2221)
  %2222 = load double, ptr %111, align 8, !tbaa !13
  %2223 = load double, ptr %109, align 8, !tbaa !13
  %2224 = fsub double %2222, %2223
  %2225 = load ptr, ptr %4, align 8, !tbaa !9
  %2226 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2224, ptr noundef %2225)
  %2227 = load ptr, ptr %4, align 8, !tbaa !9
  %2228 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 5.000000e-16, ptr noundef %2227)
  %2229 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2226, double noundef %2228)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %8, i1 noundef zeroext %2229, ptr noundef @.str.19, i32 noundef 110244, ptr noundef @.str.850)
  br label %2230

2230:                                             ; preds = %2194, %2181
  %2231 = load i64, ptr %55, align 8, !tbaa !11
  %2232 = icmp ne i64 %2231, 0
  br i1 %2232, label %2233, label %2263

2233:                                             ; preds = %2230
  %2234 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %2235 = load ptr, ptr %2234, align 8, !tbaa !15
  %2236 = load i64, ptr %69, align 8, !tbaa !11
  %2237 = getelementptr inbounds double, ptr %2235, i64 %2236
  %2238 = load double, ptr %2237, align 8, !tbaa !13
  %2239 = load double, ptr %67, align 8, !tbaa !13
  %2240 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef %30, double noundef %2238, double noundef %2239, ptr noundef %97, ptr noundef %98, ptr noundef %99, ptr noundef %108, ptr noundef %100, ptr noundef %109, ptr noundef %2240)
  store double 0.000000e+00, ptr %77, align 8, !tbaa !13
  %2241 = load i64, ptr %55, align 8, !tbaa !11
  %2242 = icmp eq i64 %2241, 1
  br i1 %2242, label %2243, label %2245

2243:                                             ; preds = %2233
  %2244 = load double, ptr %99, align 8, !tbaa !13
  store double %2244, ptr %77, align 8, !tbaa !13
  br label %2245

2245:                                             ; preds = %2243, %2233
  %2246 = load i64, ptr %55, align 8, !tbaa !11
  %2247 = icmp eq i64 %2246, 2
  br i1 %2247, label %2248, label %2250

2248:                                             ; preds = %2245
  %2249 = load double, ptr %109, align 8, !tbaa !13
  store double %2249, ptr %77, align 8, !tbaa !13
  br label %2250

2250:                                             ; preds = %2248, %2245
  %2251 = load double, ptr %77, align 8, !tbaa !13
  %2252 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %44, i32 0, i32 4
  %2253 = load ptr, ptr %2252, align 8, !tbaa !15
  %2254 = load i64, ptr %69, align 8, !tbaa !11
  %2255 = getelementptr inbounds double, ptr %2253, i64 %2254
  %2256 = load double, ptr %2255, align 8, !tbaa !13
  %2257 = fsub double %2251, %2256
  %2258 = load ptr, ptr %4, align 8, !tbaa !9
  %2259 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2257, ptr noundef %2258)
  %2260 = load ptr, ptr %4, align 8, !tbaa !9
  %2261 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 5.000000e-16, ptr noundef %2260)
  %2262 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2259, double noundef %2261)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %8, i1 noundef zeroext %2262, ptr noundef @.str.19, i32 noundef 110262, ptr noundef @.str.851)
  br label %2303

2263:                                             ; preds = %2230
  %2264 = load double, ptr %64, align 8, !tbaa !13
  %2265 = load ptr, ptr %4, align 8, !tbaa !9
  %2266 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %122, ptr noundef %2265)
  %2267 = load double, ptr %66, align 8, !tbaa !13
  %2268 = load double, ptr %64, align 8, !tbaa !13
  %2269 = fsub double %2267, %2268
  %2270 = call double @llvm.fmuladd.f64(double %2266, double %2269, double %2264)
  store double %2270, ptr %118, align 8, !tbaa !13
  %2271 = load double, ptr %67, align 8, !tbaa !13
  store double %2271, ptr %119, align 8, !tbaa !13
  %2272 = load double, ptr %118, align 8, !tbaa !13
  %2273 = load double, ptr %119, align 8, !tbaa !13
  %2274 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef %30, double noundef %2272, double noundef %2273, ptr noundef %97, ptr noundef %98, ptr noundef %99, ptr noundef %108, ptr noundef %100, ptr noundef %109, ptr noundef %2274)
  %2275 = load double, ptr %67, align 8, !tbaa !13
  %2276 = load ptr, ptr %4, align 8, !tbaa !9
  %2277 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %122, ptr noundef %2276)
  %2278 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %121, i32 0, i32 4
  %2279 = load ptr, ptr %2278, align 8, !tbaa !15
  %2280 = load i64, ptr %72, align 8, !tbaa !11
  %2281 = sub nsw i64 %2280, 2
  %2282 = getelementptr inbounds double, ptr %2279, i64 %2281
  %2283 = load double, ptr %2282, align 8, !tbaa !13
  %2284 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %121, i32 0, i32 4
  %2285 = load ptr, ptr %2284, align 8, !tbaa !15
  %2286 = load i64, ptr %72, align 8, !tbaa !11
  %2287 = sub nsw i64 %2286, 1
  %2288 = getelementptr inbounds double, ptr %2285, i64 %2287
  %2289 = load double, ptr %2288, align 8, !tbaa !13
  %2290 = fsub double %2283, %2289
  %2291 = call double @llvm.fmuladd.f64(double %2277, double %2290, double %2275)
  store double %2291, ptr %119, align 8, !tbaa !13
  %2292 = load double, ptr %118, align 8, !tbaa !13
  %2293 = load double, ptr %119, align 8, !tbaa !13
  %2294 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef %30, double noundef %2292, double noundef %2293, ptr noundef %101, ptr noundef %102, ptr noundef %103, ptr noundef %110, ptr noundef %104, ptr noundef %111, ptr noundef %2294)
  %2295 = load double, ptr %111, align 8, !tbaa !13
  %2296 = load double, ptr %109, align 8, !tbaa !13
  %2297 = fsub double %2295, %2296
  %2298 = load ptr, ptr %4, align 8, !tbaa !9
  %2299 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2297, ptr noundef %2298)
  %2300 = load ptr, ptr %4, align 8, !tbaa !9
  %2301 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 5.000000e-16, ptr noundef %2300)
  %2302 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2299, double noundef %2301)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %8, i1 noundef zeroext %2302, ptr noundef @.str.19, i32 noundef 110275, ptr noundef @.str.852)
  br label %2303

2303:                                             ; preds = %2263, %2250
  br label %2304

2304:                                             ; preds = %2303
  %2305 = load i64, ptr %69, align 8, !tbaa !11
  %2306 = add nsw i64 %2305, 1
  store i64 %2306, ptr %69, align 8, !tbaa !11
  br label %2156, !llvm.loop !48

2307:                                             ; preds = %2156
  store i64 0, ptr %68, align 8, !tbaa !11
  br label %2308

2308:                                             ; preds = %2376, %2307
  %2309 = load i64, ptr %68, align 8, !tbaa !11
  %2310 = icmp sle i64 %2309, 1
  br i1 %2310, label %2311, label %2379

2311:                                             ; preds = %2308
  store i64 0, ptr %69, align 8, !tbaa !11
  br label %2312

2312:                                             ; preds = %2372, %2311
  %2313 = load i64, ptr %69, align 8, !tbaa !11
  %2314 = icmp sle i64 %2313, 1
  br i1 %2314, label %2315, label %2375

2315:                                             ; preds = %2312
  %2316 = load i64, ptr %69, align 8, !tbaa !11
  %2317 = icmp eq i64 %2316, 0
  %2318 = load i64, ptr %56, align 8, !tbaa !11
  %2319 = load i64, ptr %57, align 8, !tbaa !11
  %2320 = load ptr, ptr %4, align 8, !tbaa !9
  %2321 = call noundef i64 @_ZN11alglib_impl6icase2EbllPNS_8ae_stateE(i1 noundef zeroext %2317, i64 noundef %2318, i64 noundef %2319, ptr noundef %2320)
  %2322 = icmp ne i64 %2321, 0
  br i1 %2322, label %2323, label %2371

2323:                                             ; preds = %2315
  %2324 = load i64, ptr %68, align 8, !tbaa !11
  %2325 = icmp eq i64 %2324, 0
  %2326 = load i64, ptr %54, align 8, !tbaa !11
  %2327 = load i64, ptr %55, align 8, !tbaa !11
  %2328 = load ptr, ptr %4, align 8, !tbaa !9
  %2329 = call noundef i64 @_ZN11alglib_impl6icase2EbllPNS_8ae_stateE(i1 noundef zeroext %2325, i64 noundef %2326, i64 noundef %2327, ptr noundef %2328)
  %2330 = icmp ne i64 %2329, 0
  br i1 %2330, label %2331, label %2371

2331:                                             ; preds = %2323
  %2332 = load i64, ptr %69, align 8, !tbaa !11
  %2333 = icmp eq i64 %2332, 0
  %2334 = load double, ptr %64, align 8, !tbaa !13
  %2335 = load double, ptr %66, align 8, !tbaa !13
  %2336 = load ptr, ptr %4, align 8, !tbaa !9
  %2337 = call noundef double @_ZN11alglib_impl6rcase2EbddPNS_8ae_stateE(i1 noundef zeroext %2333, double noundef %2334, double noundef %2335, ptr noundef %2336)
  %2338 = load i64, ptr %68, align 8, !tbaa !11
  %2339 = icmp eq i64 %2338, 0
  %2340 = load double, ptr %65, align 8, !tbaa !13
  %2341 = load double, ptr %67, align 8, !tbaa !13
  %2342 = load ptr, ptr %4, align 8, !tbaa !9
  %2343 = call noundef double @_ZN11alglib_impl6rcase2EbddPNS_8ae_stateE(i1 noundef zeroext %2339, double noundef %2340, double noundef %2341, ptr noundef %2342)
  %2344 = load i64, ptr %69, align 8, !tbaa !11
  %2345 = icmp eq i64 %2344, 0
  %2346 = load i64, ptr %56, align 8, !tbaa !11
  %2347 = load i64, ptr %57, align 8, !tbaa !11
  %2348 = load ptr, ptr %4, align 8, !tbaa !9
  %2349 = call noundef i64 @_ZN11alglib_impl6icase2EbllPNS_8ae_stateE(i1 noundef zeroext %2345, i64 noundef %2346, i64 noundef %2347, ptr noundef %2348)
  %2350 = load i64, ptr %68, align 8, !tbaa !11
  %2351 = icmp eq i64 %2350, 0
  %2352 = load i64, ptr %54, align 8, !tbaa !11
  %2353 = load i64, ptr %55, align 8, !tbaa !11
  %2354 = load ptr, ptr %4, align 8, !tbaa !9
  %2355 = call noundef i64 @_ZN11alglib_impl6icase2EbllPNS_8ae_stateE(i1 noundef zeroext %2351, i64 noundef %2352, i64 noundef %2353, ptr noundef %2354)
  %2356 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL48testspline2dunit_computemixedderivativebybndtypePN11alglib_impl19spline2dinterpolantEddlldPdS2_PNS_8ae_stateE(ptr noundef %30, double noundef %2337, double noundef %2343, i64 noundef %2349, i64 noundef %2355, double noundef 1.000000e-05, ptr noundef %115, ptr noundef %116, ptr noundef %2356)
  %2357 = load double, ptr %115, align 8, !tbaa !13
  %2358 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %47, i32 0, i32 4
  %2359 = load ptr, ptr %2358, align 8, !tbaa !15
  %2360 = load i64, ptr %68, align 8, !tbaa !11
  %2361 = mul nsw i64 2, %2360
  %2362 = load i64, ptr %69, align 8, !tbaa !11
  %2363 = add nsw i64 %2361, %2362
  %2364 = getelementptr inbounds double, ptr %2359, i64 %2363
  %2365 = load double, ptr %2364, align 8, !tbaa !13
  %2366 = fsub double %2357, %2365
  %2367 = load ptr, ptr %4, align 8, !tbaa !9
  %2368 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2366, ptr noundef %2367)
  %2369 = load double, ptr %116, align 8, !tbaa !13
  %2370 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2368, double noundef %2369)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %8, i1 noundef zeroext %2370, ptr noundef @.str.19, i32 noundef 110285, ptr noundef @.str.853)
  br label %2371

2371:                                             ; preds = %2331, %2323, %2315
  br label %2372

2372:                                             ; preds = %2371
  %2373 = load i64, ptr %69, align 8, !tbaa !11
  %2374 = add nsw i64 %2373, 1
  store i64 %2374, ptr %69, align 8, !tbaa !11
  br label %2312, !llvm.loop !49

2375:                                             ; preds = %2312
  br label %2376

2376:                                             ; preds = %2375
  %2377 = load i64, ptr %68, align 8, !tbaa !11
  %2378 = add nsw i64 %2377, 1
  store i64 %2378, ptr %68, align 8, !tbaa !11
  br label %2308, !llvm.loop !50

2379:                                             ; preds = %2308
  %2380 = load i64, ptr %72, align 8, !tbaa !11
  %2381 = load i64, ptr %71, align 8, !tbaa !11
  %2382 = load double, ptr %26, align 8, !tbaa !13
  %2383 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testspline2dunit_lconstPKN11alglib_impl19spline2dinterpolantEPKNS_9ae_vectorES5_lldPdS6_S6_S6_S6_S6_PNS_8ae_stateE(ptr noundef %30, ptr noundef %32, ptr noundef %33, i64 noundef %2380, i64 noundef %2381, double noundef %2382, ptr noundef %80, ptr noundef %81, ptr noundef %82, ptr noundef %88, ptr noundef %83, ptr noundef %89, ptr noundef %2383)
  %2384 = load i64, ptr %72, align 8, !tbaa !11
  %2385 = load i64, ptr %71, align 8, !tbaa !11
  %2386 = load double, ptr %26, align 8, !tbaa !13
  %2387 = fdiv double %2386, 3.000000e+00
  %2388 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testspline2dunit_lconstPKN11alglib_impl19spline2dinterpolantEPKNS_9ae_vectorES5_lldPdS6_S6_S6_S6_S6_PNS_8ae_stateE(ptr noundef %30, ptr noundef %32, ptr noundef %33, i64 noundef %2384, i64 noundef %2385, double noundef %2387, ptr noundef %84, ptr noundef %85, ptr noundef %86, ptr noundef %90, ptr noundef %87, ptr noundef %91, ptr noundef %2388)
  %2389 = load double, ptr %84, align 8, !tbaa !13
  %2390 = load double, ptr %80, align 8, !tbaa !13
  %2391 = fdiv double %2389, %2390
  %2392 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2391, double noundef 1.200000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %8, i1 noundef zeroext %2392, ptr noundef @.str.19, i32 noundef 110291, ptr noundef @.str.854)
  %2393 = load double, ptr %85, align 8, !tbaa !13
  %2394 = load double, ptr %81, align 8, !tbaa !13
  %2395 = fdiv double %2393, %2394
  %2396 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2395, double noundef 1.200000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %8, i1 noundef zeroext %2396, ptr noundef @.str.19, i32 noundef 110292, ptr noundef @.str.855)
  %2397 = load double, ptr %86, align 8, !tbaa !13
  %2398 = load double, ptr %82, align 8, !tbaa !13
  %2399 = fdiv double %2397, %2398
  %2400 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2399, double noundef 1.200000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %8, i1 noundef zeroext %2400, ptr noundef @.str.19, i32 noundef 110293, ptr noundef @.str.856)
  %2401 = load double, ptr %90, align 8, !tbaa !13
  %2402 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2401, double noundef 5.000000e-02)
  br i1 %2402, label %2403, label %2411

2403:                                             ; preds = %2379
  %2404 = load double, ptr %88, align 8, !tbaa !13
  %2405 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2404, double noundef 5.000000e-02)
  br i1 %2405, label %2406, label %2411

2406:                                             ; preds = %2403
  %2407 = load double, ptr %90, align 8, !tbaa !13
  %2408 = load double, ptr %88, align 8, !tbaa !13
  %2409 = fdiv double %2407, %2408
  %2410 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2409, double noundef 1.200000e+00)
  br label %2411

2411:                                             ; preds = %2406, %2403, %2379
  %2412 = phi i1 [ false, %2403 ], [ false, %2379 ], [ %2410, %2406 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %8, i1 noundef zeroext %2412, ptr noundef @.str.19, i32 noundef 110294, ptr noundef @.str.857)
  %2413 = load double, ptr %87, align 8, !tbaa !13
  %2414 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2413, double noundef 5.000000e-02)
  br i1 %2414, label %2415, label %2423

2415:                                             ; preds = %2411
  %2416 = load double, ptr %83, align 8, !tbaa !13
  %2417 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2416, double noundef 5.000000e-02)
  br i1 %2417, label %2418, label %2423

2418:                                             ; preds = %2415
  %2419 = load double, ptr %87, align 8, !tbaa !13
  %2420 = load double, ptr %83, align 8, !tbaa !13
  %2421 = fdiv double %2419, %2420
  %2422 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2421, double noundef 1.200000e+00)
  br label %2423

2423:                                             ; preds = %2418, %2415, %2411
  %2424 = phi i1 [ false, %2415 ], [ false, %2411 ], [ %2422, %2418 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %8, i1 noundef zeroext %2424, ptr noundef @.str.19, i32 noundef 110295, ptr noundef @.str.858)
  %2425 = load double, ptr %91, align 8, !tbaa !13
  %2426 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2425, double noundef 5.000000e-02)
  br i1 %2426, label %2427, label %2435

2427:                                             ; preds = %2423
  %2428 = load double, ptr %89, align 8, !tbaa !13
  %2429 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2428, double noundef 5.000000e-02)
  br i1 %2429, label %2430, label %2435

2430:                                             ; preds = %2427
  %2431 = load double, ptr %91, align 8, !tbaa !13
  %2432 = load double, ptr %89, align 8, !tbaa !13
  %2433 = fdiv double %2431, %2432
  %2434 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2433, double noundef 1.200000e+00)
  br label %2435

2435:                                             ; preds = %2430, %2427, %2423
  %2436 = phi i1 [ false, %2427 ], [ false, %2423 ], [ %2434, %2430 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %8, i1 noundef zeroext %2436, ptr noundef @.str.19, i32 noundef 110296, ptr noundef @.str.859)
  store double 0.000000e+00, ptr %76, align 8, !tbaa !13
  store i64 0, ptr %68, align 8, !tbaa !11
  br label %2437

2437:                                             ; preds = %2637, %2435
  %2438 = load i64, ptr %68, align 8, !tbaa !11
  %2439 = load i64, ptr %72, align 8, !tbaa !11
  %2440 = sub nsw i64 %2439, 2
  %2441 = icmp sle i64 %2438, %2440
  br i1 %2441, label %2442, label %2640

2442:                                             ; preds = %2437
  store i64 0, ptr %69, align 8, !tbaa !11
  br label %2443

2443:                                             ; preds = %2633, %2442
  %2444 = load i64, ptr %69, align 8, !tbaa !11
  %2445 = load i64, ptr %71, align 8, !tbaa !11
  %2446 = sub nsw i64 %2445, 2
  %2447 = icmp sle i64 %2444, %2446
  br i1 %2447, label %2448, label %2636

2448:                                             ; preds = %2443
  %2449 = load ptr, ptr %4, align 8, !tbaa !9
  %2450 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 3, ptr noundef %2449)
  store i64 %2450, ptr %70, align 8, !tbaa !11
  %2451 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %120, i32 0, i32 4
  %2452 = load ptr, ptr %2451, align 8, !tbaa !15
  %2453 = load i64, ptr %69, align 8, !tbaa !11
  %2454 = getelementptr inbounds double, ptr %2452, i64 %2453
  %2455 = load double, ptr %2454, align 8, !tbaa !13
  %2456 = load ptr, ptr %4, align 8, !tbaa !9
  %2457 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %2456)
  %2458 = call double @llvm.fmuladd.f64(double 8.000000e-01, double %2457, double 1.000000e-01)
  %2459 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %120, i32 0, i32 4
  %2460 = load ptr, ptr %2459, align 8, !tbaa !15
  %2461 = load i64, ptr %69, align 8, !tbaa !11
  %2462 = add nsw i64 %2461, 1
  %2463 = getelementptr inbounds double, ptr %2460, i64 %2462
  %2464 = load double, ptr %2463, align 8, !tbaa !13
  %2465 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %120, i32 0, i32 4
  %2466 = load ptr, ptr %2465, align 8, !tbaa !15
  %2467 = load i64, ptr %69, align 8, !tbaa !11
  %2468 = getelementptr inbounds double, ptr %2466, i64 %2467
  %2469 = load double, ptr %2468, align 8, !tbaa !13
  %2470 = fsub double %2464, %2469
  %2471 = call double @llvm.fmuladd.f64(double %2458, double %2470, double %2455)
  store double %2471, ptr %118, align 8, !tbaa !13
  %2472 = load i64, ptr %70, align 8, !tbaa !11
  %2473 = icmp eq i64 %2472, 1
  br i1 %2473, label %2474, label %2480

2474:                                             ; preds = %2448
  %2475 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %120, i32 0, i32 4
  %2476 = load ptr, ptr %2475, align 8, !tbaa !15
  %2477 = load i64, ptr %69, align 8, !tbaa !11
  %2478 = getelementptr inbounds double, ptr %2476, i64 %2477
  %2479 = load double, ptr %2478, align 8, !tbaa !13
  store double %2479, ptr %118, align 8, !tbaa !13
  br label %2480

2480:                                             ; preds = %2474, %2448
  %2481 = load i64, ptr %70, align 8, !tbaa !11
  %2482 = icmp eq i64 %2481, 2
  br i1 %2482, label %2483, label %2490

2483:                                             ; preds = %2480
  %2484 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %120, i32 0, i32 4
  %2485 = load ptr, ptr %2484, align 8, !tbaa !15
  %2486 = load i64, ptr %69, align 8, !tbaa !11
  %2487 = add nsw i64 %2486, 1
  %2488 = getelementptr inbounds double, ptr %2485, i64 %2487
  %2489 = load double, ptr %2488, align 8, !tbaa !13
  store double %2489, ptr %118, align 8, !tbaa !13
  br label %2490

2490:                                             ; preds = %2483, %2480
  %2491 = load ptr, ptr %4, align 8, !tbaa !9
  %2492 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 3, ptr noundef %2491)
  store i64 %2492, ptr %70, align 8, !tbaa !11
  %2493 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %121, i32 0, i32 4
  %2494 = load ptr, ptr %2493, align 8, !tbaa !15
  %2495 = load i64, ptr %68, align 8, !tbaa !11
  %2496 = getelementptr inbounds double, ptr %2494, i64 %2495
  %2497 = load double, ptr %2496, align 8, !tbaa !13
  %2498 = load ptr, ptr %4, align 8, !tbaa !9
  %2499 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %2498)
  %2500 = call double @llvm.fmuladd.f64(double 8.000000e-01, double %2499, double 1.000000e-01)
  %2501 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %121, i32 0, i32 4
  %2502 = load ptr, ptr %2501, align 8, !tbaa !15
  %2503 = load i64, ptr %68, align 8, !tbaa !11
  %2504 = add nsw i64 %2503, 1
  %2505 = getelementptr inbounds double, ptr %2502, i64 %2504
  %2506 = load double, ptr %2505, align 8, !tbaa !13
  %2507 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %121, i32 0, i32 4
  %2508 = load ptr, ptr %2507, align 8, !tbaa !15
  %2509 = load i64, ptr %68, align 8, !tbaa !11
  %2510 = getelementptr inbounds double, ptr %2508, i64 %2509
  %2511 = load double, ptr %2510, align 8, !tbaa !13
  %2512 = fsub double %2506, %2511
  %2513 = call double @llvm.fmuladd.f64(double %2500, double %2512, double %2497)
  store double %2513, ptr %119, align 8, !tbaa !13
  %2514 = load i64, ptr %70, align 8, !tbaa !11
  %2515 = icmp eq i64 %2514, 1
  br i1 %2515, label %2516, label %2522

2516:                                             ; preds = %2490
  %2517 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %121, i32 0, i32 4
  %2518 = load ptr, ptr %2517, align 8, !tbaa !15
  %2519 = load i64, ptr %68, align 8, !tbaa !11
  %2520 = getelementptr inbounds double, ptr %2518, i64 %2519
  %2521 = load double, ptr %2520, align 8, !tbaa !13
  store double %2521, ptr %119, align 8, !tbaa !13
  br label %2522

2522:                                             ; preds = %2516, %2490
  %2523 = load i64, ptr %70, align 8, !tbaa !11
  %2524 = icmp eq i64 %2523, 2
  br i1 %2524, label %2525, label %2532

2525:                                             ; preds = %2522
  %2526 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %121, i32 0, i32 4
  %2527 = load ptr, ptr %2526, align 8, !tbaa !15
  %2528 = load i64, ptr %68, align 8, !tbaa !11
  %2529 = add nsw i64 %2528, 1
  %2530 = getelementptr inbounds double, ptr %2527, i64 %2529
  %2531 = load double, ptr %2530, align 8, !tbaa !13
  store double %2531, ptr %119, align 8, !tbaa !13
  br label %2532

2532:                                             ; preds = %2525, %2522
  %2533 = load double, ptr %118, align 8, !tbaa !13
  %2534 = load double, ptr %119, align 8, !tbaa !13
  %2535 = load double, ptr %27, align 8, !tbaa !13
  %2536 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL27testspline2dunit_twodnumderPKN11alglib_impl19spline2dinterpolantEdddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef %30, double noundef %2533, double noundef %2534, double noundef %2535, ptr noundef %101, ptr noundef %102, ptr noundef %103, ptr noundef %110, ptr noundef %104, ptr noundef %111, ptr noundef %2536)
  %2537 = load double, ptr %118, align 8, !tbaa !13
  %2538 = load double, ptr %119, align 8, !tbaa !13
  %2539 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12spline2ddiffEPKNS_19spline2dinterpolantEddPdS3_S3_PNS_8ae_stateE(ptr noundef %30, double noundef %2537, double noundef %2538, ptr noundef %97, ptr noundef %98, ptr noundef %99, ptr noundef %2539)
  %2540 = load double, ptr %76, align 8, !tbaa !13
  %2541 = load double, ptr %97, align 8, !tbaa !13
  %2542 = load double, ptr %101, align 8, !tbaa !13
  %2543 = fsub double %2541, %2542
  %2544 = load ptr, ptr %4, align 8, !tbaa !9
  %2545 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2543, ptr noundef %2544)
  %2546 = load ptr, ptr %4, align 8, !tbaa !9
  %2547 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %2540, double noundef %2545, ptr noundef %2546)
  store double %2547, ptr %76, align 8, !tbaa !13
  %2548 = load double, ptr %76, align 8, !tbaa !13
  %2549 = load double, ptr %98, align 8, !tbaa !13
  %2550 = load double, ptr %102, align 8, !tbaa !13
  %2551 = fsub double %2549, %2550
  %2552 = load ptr, ptr %4, align 8, !tbaa !9
  %2553 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2551, ptr noundef %2552)
  %2554 = load ptr, ptr %4, align 8, !tbaa !9
  %2555 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %2548, double noundef %2553, ptr noundef %2554)
  store double %2555, ptr %76, align 8, !tbaa !13
  %2556 = load double, ptr %76, align 8, !tbaa !13
  %2557 = load double, ptr %99, align 8, !tbaa !13
  %2558 = load double, ptr %103, align 8, !tbaa !13
  %2559 = fsub double %2557, %2558
  %2560 = load ptr, ptr %4, align 8, !tbaa !9
  %2561 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2559, ptr noundef %2560)
  %2562 = load ptr, ptr %4, align 8, !tbaa !9
  %2563 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %2556, double noundef %2561, ptr noundef %2562)
  store double %2563, ptr %76, align 8, !tbaa !13
  %2564 = load double, ptr %118, align 8, !tbaa !13
  %2565 = load double, ptr %119, align 8, !tbaa !13
  %2566 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef %30, double noundef %2564, double noundef %2565, ptr noundef %97, ptr noundef %98, ptr noundef %99, ptr noundef %108, ptr noundef %100, ptr noundef %109, ptr noundef %2566)
  %2567 = load double, ptr %97, align 8, !tbaa !13
  %2568 = load double, ptr %101, align 8, !tbaa !13
  %2569 = fsub double %2567, %2568
  %2570 = load ptr, ptr %4, align 8, !tbaa !9
  %2571 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2569, ptr noundef %2570)
  %2572 = load double, ptr %97, align 8, !tbaa !13
  %2573 = load double, ptr %101, align 8, !tbaa !13
  %2574 = load ptr, ptr %4, align 8, !tbaa !9
  %2575 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %2572, double noundef %2573, double noundef 1.000000e+00, ptr noundef %2574)
  %2576 = fmul double 1.000000e-02, %2575
  %2577 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2571, double noundef %2576)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %2577, ptr noundef @.str.19, i32 noundef 110340, ptr noundef @.str.860)
  %2578 = load double, ptr %98, align 8, !tbaa !13
  %2579 = load double, ptr %102, align 8, !tbaa !13
  %2580 = fsub double %2578, %2579
  %2581 = load ptr, ptr %4, align 8, !tbaa !9
  %2582 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2580, ptr noundef %2581)
  %2583 = load double, ptr %98, align 8, !tbaa !13
  %2584 = load double, ptr %102, align 8, !tbaa !13
  %2585 = load ptr, ptr %4, align 8, !tbaa !9
  %2586 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %2583, double noundef %2584, double noundef 1.000000e+00, ptr noundef %2585)
  %2587 = fmul double 1.000000e-02, %2586
  %2588 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2582, double noundef %2587)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %2588, ptr noundef @.str.19, i32 noundef 110341, ptr noundef @.str.861)
  %2589 = load double, ptr %99, align 8, !tbaa !13
  %2590 = load double, ptr %103, align 8, !tbaa !13
  %2591 = fsub double %2589, %2590
  %2592 = load ptr, ptr %4, align 8, !tbaa !9
  %2593 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2591, ptr noundef %2592)
  %2594 = load double, ptr %99, align 8, !tbaa !13
  %2595 = load double, ptr %103, align 8, !tbaa !13
  %2596 = load ptr, ptr %4, align 8, !tbaa !9
  %2597 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %2594, double noundef %2595, double noundef 1.000000e+00, ptr noundef %2596)
  %2598 = fmul double 1.000000e-02, %2597
  %2599 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2593, double noundef %2598)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %2599, ptr noundef @.str.19, i32 noundef 110342, ptr noundef @.str.862)
  %2600 = load double, ptr %108, align 8, !tbaa !13
  %2601 = load double, ptr %110, align 8, !tbaa !13
  %2602 = fsub double %2600, %2601
  %2603 = load ptr, ptr %4, align 8, !tbaa !9
  %2604 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2602, ptr noundef %2603)
  %2605 = load double, ptr %108, align 8, !tbaa !13
  %2606 = load double, ptr %110, align 8, !tbaa !13
  %2607 = load ptr, ptr %4, align 8, !tbaa !9
  %2608 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %2605, double noundef %2606, double noundef 1.000000e+00, ptr noundef %2607)
  %2609 = fmul double 1.000000e-02, %2608
  %2610 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2604, double noundef %2609)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %2610, ptr noundef @.str.19, i32 noundef 110343, ptr noundef @.str.863)
  %2611 = load double, ptr %100, align 8, !tbaa !13
  %2612 = load double, ptr %104, align 8, !tbaa !13
  %2613 = fsub double %2611, %2612
  %2614 = load ptr, ptr %4, align 8, !tbaa !9
  %2615 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2613, ptr noundef %2614)
  %2616 = load double, ptr %100, align 8, !tbaa !13
  %2617 = load double, ptr %104, align 8, !tbaa !13
  %2618 = load ptr, ptr %4, align 8, !tbaa !9
  %2619 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %2616, double noundef %2617, double noundef 1.000000e+00, ptr noundef %2618)
  %2620 = fmul double 1.000000e-02, %2619
  %2621 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2615, double noundef %2620)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %2621, ptr noundef @.str.19, i32 noundef 110344, ptr noundef @.str.864)
  %2622 = load double, ptr %109, align 8, !tbaa !13
  %2623 = load double, ptr %111, align 8, !tbaa !13
  %2624 = fsub double %2622, %2623
  %2625 = load ptr, ptr %4, align 8, !tbaa !9
  %2626 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2624, ptr noundef %2625)
  %2627 = load double, ptr %109, align 8, !tbaa !13
  %2628 = load double, ptr %111, align 8, !tbaa !13
  %2629 = load ptr, ptr %4, align 8, !tbaa !9
  %2630 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %2627, double noundef %2628, double noundef 1.000000e+00, ptr noundef %2629)
  %2631 = fmul double 1.000000e-02, %2630
  %2632 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2626, double noundef %2631)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %2632, ptr noundef @.str.19, i32 noundef 110345, ptr noundef @.str.865)
  br label %2633

2633:                                             ; preds = %2532
  %2634 = load i64, ptr %69, align 8, !tbaa !11
  %2635 = add nsw i64 %2634, 1
  store i64 %2635, ptr %69, align 8, !tbaa !11
  br label %2443, !llvm.loop !51

2636:                                             ; preds = %2443
  br label %2637

2637:                                             ; preds = %2636
  %2638 = load i64, ptr %68, align 8, !tbaa !11
  %2639 = add nsw i64 %2638, 1
  store i64 %2639, ptr %68, align 8, !tbaa !11
  br label %2437, !llvm.loop !52

2640:                                             ; preds = %2437
  %2641 = load i8, ptr %9, align 1, !tbaa !5, !range !35, !noundef !36
  %2642 = trunc i8 %2641 to i1
  br i1 %2642, label %2646, label %2643

2643:                                             ; preds = %2640
  %2644 = load double, ptr %76, align 8, !tbaa !13
  %2645 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2644, double noundef 1.000000e-03)
  br label %2646

2646:                                             ; preds = %2643, %2640
  %2647 = phi i1 [ true, %2640 ], [ %2645, %2643 ]
  %2648 = zext i1 %2647 to i8
  store i8 %2648, ptr %9, align 1, !tbaa !5
  %2649 = load ptr, ptr %4, align 8, !tbaa !9
  %2650 = call noundef zeroext i1 @_ZL27testspline2dunit_testunpackPKN11alglib_impl19spline2dinterpolantEPKNS_9ae_vectorES5_PNS_8ae_stateE(ptr noundef %30, ptr noundef %32, ptr noundef %33, ptr noundef %2649)
  %2651 = xor i1 %2650, true
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %12, i1 noundef zeroext %2651, ptr noundef @.str.19, i32 noundef 110349, ptr noundef @.str.866)
  %2652 = load double, ptr %64, align 8, !tbaa !13
  %2653 = load double, ptr %66, align 8, !tbaa !13
  %2654 = load double, ptr %65, align 8, !tbaa !13
  %2655 = load double, ptr %67, align 8, !tbaa !13
  %2656 = load ptr, ptr %4, align 8, !tbaa !9
  %2657 = call noundef zeroext i1 @_ZL29testspline2dunit_testlintransPKN11alglib_impl19spline2dinterpolantElddddPNS_8ae_stateE(ptr noundef %30, i64 noundef 1, double noundef %2652, double noundef %2653, double noundef %2654, double noundef %2655, ptr noundef %2656)
  %2658 = xor i1 %2657, true
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %13, i1 noundef zeroext %2658, ptr noundef @.str.19, i32 noundef 110350, ptr noundef @.str.867)
  %2659 = load i64, ptr %71, align 8, !tbaa !11
  %2660 = load i64, ptr %72, align 8, !tbaa !11
  %2661 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl21spline2dbuildhermitevEPKNS_9ae_vectorElS2_lS2_S2_S2_S2_lPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %28, i64 noundef %2659, ptr noundef %29, i64 noundef %2660, ptr noundef %34, ptr noundef %37, ptr noundef %39, ptr noundef %41, i64 noundef 1, ptr noundef %30, ptr noundef %2661)
  store i64 0, ptr %68, align 8, !tbaa !11
  br label %2662

2662:                                             ; preds = %2806, %2646
  %2663 = load i64, ptr %68, align 8, !tbaa !11
  %2664 = load i64, ptr %72, align 8, !tbaa !11
  %2665 = sub nsw i64 %2664, 1
  %2666 = icmp sle i64 %2663, %2665
  br i1 %2666, label %2667, label %2809

2667:                                             ; preds = %2662
  store i64 0, ptr %69, align 8, !tbaa !11
  br label %2668

2668:                                             ; preds = %2802, %2667
  %2669 = load i64, ptr %69, align 8, !tbaa !11
  %2670 = load i64, ptr %71, align 8, !tbaa !11
  %2671 = sub nsw i64 %2670, 1
  %2672 = icmp sle i64 %2669, %2671
  br i1 %2672, label %2673, label %2805

2673:                                             ; preds = %2668
  %2674 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %61, i32 0, i32 6
  %2675 = load ptr, ptr %2674, align 8, !tbaa !15
  %2676 = load i64, ptr %68, align 8, !tbaa !11
  %2677 = getelementptr inbounds ptr, ptr %2675, i64 %2676
  %2678 = load ptr, ptr %2677, align 8, !tbaa !9
  %2679 = load i64, ptr %69, align 8, !tbaa !11
  %2680 = getelementptr inbounds double, ptr %2678, i64 %2679
  %2681 = load double, ptr %2680, align 8, !tbaa !13
  %2682 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %2683 = load ptr, ptr %2682, align 8, !tbaa !15
  %2684 = load i64, ptr %69, align 8, !tbaa !11
  %2685 = getelementptr inbounds double, ptr %2683, i64 %2684
  %2686 = load double, ptr %2685, align 8, !tbaa !13
  %2687 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %2688 = load ptr, ptr %2687, align 8, !tbaa !15
  %2689 = load i64, ptr %68, align 8, !tbaa !11
  %2690 = getelementptr inbounds double, ptr %2688, i64 %2689
  %2691 = load double, ptr %2690, align 8, !tbaa !13
  %2692 = load ptr, ptr %4, align 8, !tbaa !9
  %2693 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef %30, double noundef %2686, double noundef %2691, ptr noundef %2692)
  %2694 = fsub double %2681, %2693
  %2695 = load ptr, ptr %4, align 8, !tbaa !9
  %2696 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2694, ptr noundef %2695)
  %2697 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2696, double noundef 0x3D95FD7FE1796496)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %8, i1 noundef zeroext %2697, ptr noundef @.str.19, i32 noundef 110363, ptr noundef @.str.868)
  %2698 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %2699 = load ptr, ptr %2698, align 8, !tbaa !15
  %2700 = load i64, ptr %69, align 8, !tbaa !11
  %2701 = getelementptr inbounds double, ptr %2699, i64 %2700
  %2702 = load double, ptr %2701, align 8, !tbaa !13
  %2703 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %2704 = load ptr, ptr %2703, align 8, !tbaa !15
  %2705 = load i64, ptr %68, align 8, !tbaa !11
  %2706 = getelementptr inbounds double, ptr %2704, i64 %2705
  %2707 = load double, ptr %2706, align 8, !tbaa !13
  %2708 = load double, ptr %27, align 8, !tbaa !13
  %2709 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL27testspline2dunit_twodnumderPKN11alglib_impl19spline2dinterpolantEdddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef %30, double noundef %2702, double noundef %2707, double noundef %2708, ptr noundef %101, ptr noundef %102, ptr noundef %103, ptr noundef %110, ptr noundef %104, ptr noundef %111, ptr noundef %2709)
  %2710 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %2711 = load ptr, ptr %2710, align 8, !tbaa !15
  %2712 = load i64, ptr %69, align 8, !tbaa !11
  %2713 = getelementptr inbounds double, ptr %2711, i64 %2712
  %2714 = load double, ptr %2713, align 8, !tbaa !13
  %2715 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %2716 = load ptr, ptr %2715, align 8, !tbaa !15
  %2717 = load i64, ptr %68, align 8, !tbaa !11
  %2718 = getelementptr inbounds double, ptr %2716, i64 %2717
  %2719 = load double, ptr %2718, align 8, !tbaa !13
  %2720 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef %30, double noundef %2714, double noundef %2719, ptr noundef %101, ptr noundef %98, ptr noundef %99, ptr noundef %108, ptr noundef %100, ptr noundef %109, ptr noundef %2720)
  %2721 = load double, ptr %102, align 8, !tbaa !13
  %2722 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %37, i32 0, i32 4
  %2723 = load ptr, ptr %2722, align 8, !tbaa !15
  %2724 = load i64, ptr %68, align 8, !tbaa !11
  %2725 = load i64, ptr %71, align 8, !tbaa !11
  %2726 = mul nsw i64 %2724, %2725
  %2727 = load i64, ptr %69, align 8, !tbaa !11
  %2728 = add nsw i64 %2726, %2727
  %2729 = getelementptr inbounds double, ptr %2723, i64 %2728
  %2730 = load double, ptr %2729, align 8, !tbaa !13
  %2731 = fsub double %2721, %2730
  %2732 = load ptr, ptr %4, align 8, !tbaa !9
  %2733 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2731, ptr noundef %2732)
  %2734 = load double, ptr %102, align 8, !tbaa !13
  %2735 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %37, i32 0, i32 4
  %2736 = load ptr, ptr %2735, align 8, !tbaa !15
  %2737 = load i64, ptr %68, align 8, !tbaa !11
  %2738 = load i64, ptr %71, align 8, !tbaa !11
  %2739 = mul nsw i64 %2737, %2738
  %2740 = load i64, ptr %69, align 8, !tbaa !11
  %2741 = add nsw i64 %2739, %2740
  %2742 = getelementptr inbounds double, ptr %2736, i64 %2741
  %2743 = load double, ptr %2742, align 8, !tbaa !13
  %2744 = load ptr, ptr %4, align 8, !tbaa !9
  %2745 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %2734, double noundef %2743, double noundef 1.000000e+00, ptr noundef %2744)
  %2746 = fmul double 1.000000e-02, %2745
  %2747 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2733, double noundef %2746)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %8, i1 noundef zeroext %2747, ptr noundef @.str.19, i32 noundef 110366, ptr noundef @.str.869)
  %2748 = load double, ptr %103, align 8, !tbaa !13
  %2749 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %39, i32 0, i32 4
  %2750 = load ptr, ptr %2749, align 8, !tbaa !15
  %2751 = load i64, ptr %68, align 8, !tbaa !11
  %2752 = load i64, ptr %71, align 8, !tbaa !11
  %2753 = mul nsw i64 %2751, %2752
  %2754 = load i64, ptr %69, align 8, !tbaa !11
  %2755 = add nsw i64 %2753, %2754
  %2756 = getelementptr inbounds double, ptr %2750, i64 %2755
  %2757 = load double, ptr %2756, align 8, !tbaa !13
  %2758 = fsub double %2748, %2757
  %2759 = load ptr, ptr %4, align 8, !tbaa !9
  %2760 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2758, ptr noundef %2759)
  %2761 = load double, ptr %103, align 8, !tbaa !13
  %2762 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %39, i32 0, i32 4
  %2763 = load ptr, ptr %2762, align 8, !tbaa !15
  %2764 = load i64, ptr %68, align 8, !tbaa !11
  %2765 = load i64, ptr %71, align 8, !tbaa !11
  %2766 = mul nsw i64 %2764, %2765
  %2767 = load i64, ptr %69, align 8, !tbaa !11
  %2768 = add nsw i64 %2766, %2767
  %2769 = getelementptr inbounds double, ptr %2763, i64 %2768
  %2770 = load double, ptr %2769, align 8, !tbaa !13
  %2771 = load ptr, ptr %4, align 8, !tbaa !9
  %2772 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %2761, double noundef %2770, double noundef 1.000000e+00, ptr noundef %2771)
  %2773 = fmul double 1.000000e-02, %2772
  %2774 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2760, double noundef %2773)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %8, i1 noundef zeroext %2774, ptr noundef @.str.19, i32 noundef 110367, ptr noundef @.str.870)
  %2775 = load double, ptr %104, align 8, !tbaa !13
  %2776 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %41, i32 0, i32 4
  %2777 = load ptr, ptr %2776, align 8, !tbaa !15
  %2778 = load i64, ptr %68, align 8, !tbaa !11
  %2779 = load i64, ptr %71, align 8, !tbaa !11
  %2780 = mul nsw i64 %2778, %2779
  %2781 = load i64, ptr %69, align 8, !tbaa !11
  %2782 = add nsw i64 %2780, %2781
  %2783 = getelementptr inbounds double, ptr %2777, i64 %2782
  %2784 = load double, ptr %2783, align 8, !tbaa !13
  %2785 = fsub double %2775, %2784
  %2786 = load ptr, ptr %4, align 8, !tbaa !9
  %2787 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2785, ptr noundef %2786)
  %2788 = load double, ptr %104, align 8, !tbaa !13
  %2789 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %41, i32 0, i32 4
  %2790 = load ptr, ptr %2789, align 8, !tbaa !15
  %2791 = load i64, ptr %68, align 8, !tbaa !11
  %2792 = load i64, ptr %71, align 8, !tbaa !11
  %2793 = mul nsw i64 %2791, %2792
  %2794 = load i64, ptr %69, align 8, !tbaa !11
  %2795 = add nsw i64 %2793, %2794
  %2796 = getelementptr inbounds double, ptr %2790, i64 %2795
  %2797 = load double, ptr %2796, align 8, !tbaa !13
  %2798 = load ptr, ptr %4, align 8, !tbaa !9
  %2799 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %2788, double noundef %2797, double noundef 1.000000e+00, ptr noundef %2798)
  %2800 = fmul double 1.000000e-02, %2799
  %2801 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2787, double noundef %2800)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %8, i1 noundef zeroext %2801, ptr noundef @.str.19, i32 noundef 110368, ptr noundef @.str.871)
  br label %2802

2802:                                             ; preds = %2673
  %2803 = load i64, ptr %69, align 8, !tbaa !11
  %2804 = add nsw i64 %2803, 1
  store i64 %2804, ptr %69, align 8, !tbaa !11
  br label %2668, !llvm.loop !53

2805:                                             ; preds = %2668
  br label %2806

2806:                                             ; preds = %2805
  %2807 = load i64, ptr %68, align 8, !tbaa !11
  %2808 = add nsw i64 %2807, 1
  store i64 %2808, ptr %68, align 8, !tbaa !11
  br label %2662, !llvm.loop !54

2809:                                             ; preds = %2662
  %2810 = load i64, ptr %72, align 8, !tbaa !11
  %2811 = load i64, ptr %71, align 8, !tbaa !11
  %2812 = load double, ptr %26, align 8, !tbaa !13
  %2813 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testspline2dunit_lconstPKN11alglib_impl19spline2dinterpolantEPKNS_9ae_vectorES5_lldPdS6_S6_S6_S6_S6_PNS_8ae_stateE(ptr noundef %30, ptr noundef %32, ptr noundef %33, i64 noundef %2810, i64 noundef %2811, double noundef %2812, ptr noundef %80, ptr noundef %81, ptr noundef %82, ptr noundef %88, ptr noundef %83, ptr noundef %89, ptr noundef %2813)
  %2814 = load i64, ptr %72, align 8, !tbaa !11
  %2815 = load i64, ptr %71, align 8, !tbaa !11
  %2816 = load double, ptr %26, align 8, !tbaa !13
  %2817 = fdiv double %2816, 3.000000e+00
  %2818 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testspline2dunit_lconstPKN11alglib_impl19spline2dinterpolantEPKNS_9ae_vectorES5_lldPdS6_S6_S6_S6_S6_PNS_8ae_stateE(ptr noundef %30, ptr noundef %32, ptr noundef %33, i64 noundef %2814, i64 noundef %2815, double noundef %2817, ptr noundef %84, ptr noundef %85, ptr noundef %86, ptr noundef %90, ptr noundef %87, ptr noundef %91, ptr noundef %2818)
  %2819 = load double, ptr %84, align 8, !tbaa !13
  %2820 = load double, ptr %80, align 8, !tbaa !13
  %2821 = fdiv double %2819, %2820
  %2822 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2821, double noundef 1.200000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %8, i1 noundef zeroext %2822, ptr noundef @.str.19, i32 noundef 110373, ptr noundef @.str.872)
  %2823 = load double, ptr %85, align 8, !tbaa !13
  %2824 = load double, ptr %81, align 8, !tbaa !13
  %2825 = fdiv double %2823, %2824
  %2826 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2825, double noundef 1.200000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %8, i1 noundef zeroext %2826, ptr noundef @.str.19, i32 noundef 110374, ptr noundef @.str.873)
  %2827 = load double, ptr %86, align 8, !tbaa !13
  %2828 = load double, ptr %82, align 8, !tbaa !13
  %2829 = fdiv double %2827, %2828
  %2830 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2829, double noundef 1.200000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %8, i1 noundef zeroext %2830, ptr noundef @.str.19, i32 noundef 110375, ptr noundef @.str.874)
  %2831 = load double, ptr %87, align 8, !tbaa !13
  %2832 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2831, double noundef 5.000000e-02)
  br i1 %2832, label %2833, label %2841

2833:                                             ; preds = %2809
  %2834 = load double, ptr %83, align 8, !tbaa !13
  %2835 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2834, double noundef 5.000000e-02)
  br i1 %2835, label %2836, label %2841

2836:                                             ; preds = %2833
  %2837 = load double, ptr %87, align 8, !tbaa !13
  %2838 = load double, ptr %83, align 8, !tbaa !13
  %2839 = fdiv double %2837, %2838
  %2840 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2839, double noundef 1.200000e+00)
  br label %2841

2841:                                             ; preds = %2836, %2833, %2809
  %2842 = phi i1 [ false, %2833 ], [ false, %2809 ], [ %2840, %2836 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %8, i1 noundef zeroext %2842, ptr noundef @.str.19, i32 noundef 110376, ptr noundef @.str.875)
  store i64 0, ptr %68, align 8, !tbaa !11
  br label %2843

2843:                                             ; preds = %3030, %2841
  %2844 = load i64, ptr %68, align 8, !tbaa !11
  %2845 = load i64, ptr %72, align 8, !tbaa !11
  %2846 = sub nsw i64 %2845, 2
  %2847 = icmp sle i64 %2844, %2846
  br i1 %2847, label %2848, label %3033

2848:                                             ; preds = %2843
  store i64 0, ptr %69, align 8, !tbaa !11
  br label %2849

2849:                                             ; preds = %3026, %2848
  %2850 = load i64, ptr %69, align 8, !tbaa !11
  %2851 = load i64, ptr %71, align 8, !tbaa !11
  %2852 = sub nsw i64 %2851, 2
  %2853 = icmp sle i64 %2850, %2852
  br i1 %2853, label %2854, label %3029

2854:                                             ; preds = %2849
  %2855 = load ptr, ptr %4, align 8, !tbaa !9
  %2856 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 3, ptr noundef %2855)
  store i64 %2856, ptr %70, align 8, !tbaa !11
  %2857 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %120, i32 0, i32 4
  %2858 = load ptr, ptr %2857, align 8, !tbaa !15
  %2859 = load i64, ptr %69, align 8, !tbaa !11
  %2860 = getelementptr inbounds double, ptr %2858, i64 %2859
  %2861 = load double, ptr %2860, align 8, !tbaa !13
  %2862 = load ptr, ptr %4, align 8, !tbaa !9
  %2863 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %2862)
  %2864 = call double @llvm.fmuladd.f64(double 8.000000e-01, double %2863, double 1.000000e-01)
  %2865 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %120, i32 0, i32 4
  %2866 = load ptr, ptr %2865, align 8, !tbaa !15
  %2867 = load i64, ptr %69, align 8, !tbaa !11
  %2868 = add nsw i64 %2867, 1
  %2869 = getelementptr inbounds double, ptr %2866, i64 %2868
  %2870 = load double, ptr %2869, align 8, !tbaa !13
  %2871 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %120, i32 0, i32 4
  %2872 = load ptr, ptr %2871, align 8, !tbaa !15
  %2873 = load i64, ptr %69, align 8, !tbaa !11
  %2874 = getelementptr inbounds double, ptr %2872, i64 %2873
  %2875 = load double, ptr %2874, align 8, !tbaa !13
  %2876 = fsub double %2870, %2875
  %2877 = call double @llvm.fmuladd.f64(double %2864, double %2876, double %2861)
  store double %2877, ptr %118, align 8, !tbaa !13
  %2878 = load i64, ptr %70, align 8, !tbaa !11
  %2879 = icmp eq i64 %2878, 1
  br i1 %2879, label %2880, label %2886

2880:                                             ; preds = %2854
  %2881 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %120, i32 0, i32 4
  %2882 = load ptr, ptr %2881, align 8, !tbaa !15
  %2883 = load i64, ptr %69, align 8, !tbaa !11
  %2884 = getelementptr inbounds double, ptr %2882, i64 %2883
  %2885 = load double, ptr %2884, align 8, !tbaa !13
  store double %2885, ptr %118, align 8, !tbaa !13
  br label %2886

2886:                                             ; preds = %2880, %2854
  %2887 = load i64, ptr %70, align 8, !tbaa !11
  %2888 = icmp eq i64 %2887, 2
  br i1 %2888, label %2889, label %2896

2889:                                             ; preds = %2886
  %2890 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %120, i32 0, i32 4
  %2891 = load ptr, ptr %2890, align 8, !tbaa !15
  %2892 = load i64, ptr %69, align 8, !tbaa !11
  %2893 = add nsw i64 %2892, 1
  %2894 = getelementptr inbounds double, ptr %2891, i64 %2893
  %2895 = load double, ptr %2894, align 8, !tbaa !13
  store double %2895, ptr %118, align 8, !tbaa !13
  br label %2896

2896:                                             ; preds = %2889, %2886
  %2897 = load ptr, ptr %4, align 8, !tbaa !9
  %2898 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 3, ptr noundef %2897)
  store i64 %2898, ptr %70, align 8, !tbaa !11
  %2899 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %121, i32 0, i32 4
  %2900 = load ptr, ptr %2899, align 8, !tbaa !15
  %2901 = load i64, ptr %68, align 8, !tbaa !11
  %2902 = getelementptr inbounds double, ptr %2900, i64 %2901
  %2903 = load double, ptr %2902, align 8, !tbaa !13
  %2904 = load ptr, ptr %4, align 8, !tbaa !9
  %2905 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %2904)
  %2906 = call double @llvm.fmuladd.f64(double 8.000000e-01, double %2905, double 1.000000e-01)
  %2907 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %121, i32 0, i32 4
  %2908 = load ptr, ptr %2907, align 8, !tbaa !15
  %2909 = load i64, ptr %68, align 8, !tbaa !11
  %2910 = add nsw i64 %2909, 1
  %2911 = getelementptr inbounds double, ptr %2908, i64 %2910
  %2912 = load double, ptr %2911, align 8, !tbaa !13
  %2913 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %121, i32 0, i32 4
  %2914 = load ptr, ptr %2913, align 8, !tbaa !15
  %2915 = load i64, ptr %68, align 8, !tbaa !11
  %2916 = getelementptr inbounds double, ptr %2914, i64 %2915
  %2917 = load double, ptr %2916, align 8, !tbaa !13
  %2918 = fsub double %2912, %2917
  %2919 = call double @llvm.fmuladd.f64(double %2906, double %2918, double %2903)
  store double %2919, ptr %119, align 8, !tbaa !13
  %2920 = load i64, ptr %70, align 8, !tbaa !11
  %2921 = icmp eq i64 %2920, 1
  br i1 %2921, label %2922, label %2928

2922:                                             ; preds = %2896
  %2923 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %121, i32 0, i32 4
  %2924 = load ptr, ptr %2923, align 8, !tbaa !15
  %2925 = load i64, ptr %68, align 8, !tbaa !11
  %2926 = getelementptr inbounds double, ptr %2924, i64 %2925
  %2927 = load double, ptr %2926, align 8, !tbaa !13
  store double %2927, ptr %119, align 8, !tbaa !13
  br label %2928

2928:                                             ; preds = %2922, %2896
  %2929 = load i64, ptr %70, align 8, !tbaa !11
  %2930 = icmp eq i64 %2929, 2
  br i1 %2930, label %2931, label %2938

2931:                                             ; preds = %2928
  %2932 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %121, i32 0, i32 4
  %2933 = load ptr, ptr %2932, align 8, !tbaa !15
  %2934 = load i64, ptr %68, align 8, !tbaa !11
  %2935 = add nsw i64 %2934, 1
  %2936 = getelementptr inbounds double, ptr %2933, i64 %2935
  %2937 = load double, ptr %2936, align 8, !tbaa !13
  store double %2937, ptr %119, align 8, !tbaa !13
  br label %2938

2938:                                             ; preds = %2931, %2928
  %2939 = load double, ptr %118, align 8, !tbaa !13
  %2940 = load double, ptr %119, align 8, !tbaa !13
  %2941 = load double, ptr %27, align 8, !tbaa !13
  %2942 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL27testspline2dunit_twodnumderPKN11alglib_impl19spline2dinterpolantEdddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef %30, double noundef %2939, double noundef %2940, double noundef %2941, ptr noundef %101, ptr noundef %102, ptr noundef %103, ptr noundef %110, ptr noundef %104, ptr noundef %111, ptr noundef %2942)
  %2943 = load double, ptr %118, align 8, !tbaa !13
  %2944 = load double, ptr %119, align 8, !tbaa !13
  %2945 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12spline2ddiffEPKNS_19spline2dinterpolantEddPdS3_S3_PNS_8ae_stateE(ptr noundef %30, double noundef %2943, double noundef %2944, ptr noundef %97, ptr noundef %98, ptr noundef %99, ptr noundef %2945)
  %2946 = load double, ptr %97, align 8, !tbaa !13
  %2947 = load double, ptr %101, align 8, !tbaa !13
  %2948 = fsub double %2946, %2947
  %2949 = load ptr, ptr %4, align 8, !tbaa !9
  %2950 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2948, ptr noundef %2949)
  %2951 = load double, ptr %97, align 8, !tbaa !13
  %2952 = load double, ptr %101, align 8, !tbaa !13
  %2953 = load ptr, ptr %4, align 8, !tbaa !9
  %2954 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %2951, double noundef %2952, double noundef 1.000000e+00, ptr noundef %2953)
  %2955 = fmul double 1.000000e-02, %2954
  %2956 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2950, double noundef %2955)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %2956, ptr noundef @.str.19, i32 noundef 110411, ptr noundef @.str.876)
  %2957 = load double, ptr %98, align 8, !tbaa !13
  %2958 = load double, ptr %102, align 8, !tbaa !13
  %2959 = fsub double %2957, %2958
  %2960 = load ptr, ptr %4, align 8, !tbaa !9
  %2961 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2959, ptr noundef %2960)
  %2962 = load double, ptr %98, align 8, !tbaa !13
  %2963 = load double, ptr %102, align 8, !tbaa !13
  %2964 = load ptr, ptr %4, align 8, !tbaa !9
  %2965 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %2962, double noundef %2963, double noundef 1.000000e+00, ptr noundef %2964)
  %2966 = fmul double 1.000000e-02, %2965
  %2967 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2961, double noundef %2966)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %2967, ptr noundef @.str.19, i32 noundef 110412, ptr noundef @.str.877)
  %2968 = load double, ptr %99, align 8, !tbaa !13
  %2969 = load double, ptr %103, align 8, !tbaa !13
  %2970 = fsub double %2968, %2969
  %2971 = load ptr, ptr %4, align 8, !tbaa !9
  %2972 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2970, ptr noundef %2971)
  %2973 = load double, ptr %99, align 8, !tbaa !13
  %2974 = load double, ptr %103, align 8, !tbaa !13
  %2975 = load ptr, ptr %4, align 8, !tbaa !9
  %2976 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %2973, double noundef %2974, double noundef 1.000000e+00, ptr noundef %2975)
  %2977 = fmul double 1.000000e-02, %2976
  %2978 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2972, double noundef %2977)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %2978, ptr noundef @.str.19, i32 noundef 110413, ptr noundef @.str.878)
  %2979 = load double, ptr %118, align 8, !tbaa !13
  %2980 = load double, ptr %119, align 8, !tbaa !13
  %2981 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef %30, double noundef %2979, double noundef %2980, ptr noundef %97, ptr noundef %98, ptr noundef %99, ptr noundef %108, ptr noundef %100, ptr noundef %109, ptr noundef %2981)
  %2982 = load double, ptr %97, align 8, !tbaa !13
  %2983 = load double, ptr %101, align 8, !tbaa !13
  %2984 = fsub double %2982, %2983
  %2985 = load ptr, ptr %4, align 8, !tbaa !9
  %2986 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2984, ptr noundef %2985)
  %2987 = load double, ptr %97, align 8, !tbaa !13
  %2988 = load double, ptr %101, align 8, !tbaa !13
  %2989 = load ptr, ptr %4, align 8, !tbaa !9
  %2990 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %2987, double noundef %2988, double noundef 1.000000e+00, ptr noundef %2989)
  %2991 = fmul double 1.000000e-02, %2990
  %2992 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2986, double noundef %2991)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %2992, ptr noundef @.str.19, i32 noundef 110419, ptr noundef @.str.879)
  %2993 = load double, ptr %98, align 8, !tbaa !13
  %2994 = load double, ptr %102, align 8, !tbaa !13
  %2995 = fsub double %2993, %2994
  %2996 = load ptr, ptr %4, align 8, !tbaa !9
  %2997 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2995, ptr noundef %2996)
  %2998 = load double, ptr %98, align 8, !tbaa !13
  %2999 = load double, ptr %102, align 8, !tbaa !13
  %3000 = load ptr, ptr %4, align 8, !tbaa !9
  %3001 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %2998, double noundef %2999, double noundef 1.000000e+00, ptr noundef %3000)
  %3002 = fmul double 1.000000e-02, %3001
  %3003 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2997, double noundef %3002)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %3003, ptr noundef @.str.19, i32 noundef 110420, ptr noundef @.str.880)
  %3004 = load double, ptr %99, align 8, !tbaa !13
  %3005 = load double, ptr %103, align 8, !tbaa !13
  %3006 = fsub double %3004, %3005
  %3007 = load ptr, ptr %4, align 8, !tbaa !9
  %3008 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %3006, ptr noundef %3007)
  %3009 = load double, ptr %99, align 8, !tbaa !13
  %3010 = load double, ptr %103, align 8, !tbaa !13
  %3011 = load ptr, ptr %4, align 8, !tbaa !9
  %3012 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %3009, double noundef %3010, double noundef 1.000000e+00, ptr noundef %3011)
  %3013 = fmul double 1.000000e-02, %3012
  %3014 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %3008, double noundef %3013)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %3014, ptr noundef @.str.19, i32 noundef 110421, ptr noundef @.str.881)
  %3015 = load double, ptr %100, align 8, !tbaa !13
  %3016 = load double, ptr %104, align 8, !tbaa !13
  %3017 = fsub double %3015, %3016
  %3018 = load ptr, ptr %4, align 8, !tbaa !9
  %3019 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %3017, ptr noundef %3018)
  %3020 = load double, ptr %100, align 8, !tbaa !13
  %3021 = load double, ptr %104, align 8, !tbaa !13
  %3022 = load ptr, ptr %4, align 8, !tbaa !9
  %3023 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %3020, double noundef %3021, double noundef 1.000000e+00, ptr noundef %3022)
  %3024 = fmul double 1.000000e-02, %3023
  %3025 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %3019, double noundef %3024)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %9, i1 noundef zeroext %3025, ptr noundef @.str.19, i32 noundef 110422, ptr noundef @.str.882)
  br label %3026

3026:                                             ; preds = %2938
  %3027 = load i64, ptr %69, align 8, !tbaa !11
  %3028 = add nsw i64 %3027, 1
  store i64 %3028, ptr %69, align 8, !tbaa !11
  br label %2849, !llvm.loop !55

3029:                                             ; preds = %2849
  br label %3030

3030:                                             ; preds = %3029
  %3031 = load i64, ptr %68, align 8, !tbaa !11
  %3032 = add nsw i64 %3031, 1
  store i64 %3032, ptr %68, align 8, !tbaa !11
  br label %2843, !llvm.loop !56

3033:                                             ; preds = %2843
  %3034 = load ptr, ptr %4, align 8, !tbaa !9
  %3035 = call noundef zeroext i1 @_ZL27testspline2dunit_testunpackPKN11alglib_impl19spline2dinterpolantEPKNS_9ae_vectorES5_PNS_8ae_stateE(ptr noundef %30, ptr noundef %32, ptr noundef %33, ptr noundef %3034)
  %3036 = xor i1 %3035, true
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %12, i1 noundef zeroext %3036, ptr noundef @.str.19, i32 noundef 110425, ptr noundef @.str.883)
  %3037 = load double, ptr %64, align 8, !tbaa !13
  %3038 = load double, ptr %66, align 8, !tbaa !13
  %3039 = load double, ptr %65, align 8, !tbaa !13
  %3040 = load double, ptr %67, align 8, !tbaa !13
  %3041 = load ptr, ptr %4, align 8, !tbaa !9
  %3042 = call noundef zeroext i1 @_ZL29testspline2dunit_testlintransPKN11alglib_impl19spline2dinterpolantElddddPNS_8ae_stateE(ptr noundef %30, i64 noundef 1, double noundef %3037, double noundef %3038, double noundef %3039, double noundef %3040, ptr noundef %3041)
  %3043 = xor i1 %3042, true
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %13, i1 noundef zeroext %3043, ptr noundef @.str.19, i32 noundef 110426, ptr noundef @.str.884)
  %3044 = load i64, ptr %71, align 8, !tbaa !11
  %3045 = load i64, ptr %72, align 8, !tbaa !11
  %3046 = load i64, ptr %73, align 8, !tbaa !11
  %3047 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl21spline2dbuildbicubicvEPKNS_9ae_vectorElS2_lS2_lPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %28, i64 noundef %3044, ptr noundef %29, i64 noundef %3045, ptr noundef %35, i64 noundef %3046, ptr noundef %30, ptr noundef %3047)
  %3048 = load i8, ptr %13, align 1, !tbaa !5, !range !35, !noundef !36
  %3049 = trunc i8 %3048 to i1
  br i1 %3049, label %3059, label %3050

3050:                                             ; preds = %3033
  %3051 = load i64, ptr %73, align 8, !tbaa !11
  %3052 = load double, ptr %64, align 8, !tbaa !13
  %3053 = load double, ptr %66, align 8, !tbaa !13
  %3054 = load double, ptr %65, align 8, !tbaa !13
  %3055 = load double, ptr %67, align 8, !tbaa !13
  %3056 = load ptr, ptr %4, align 8, !tbaa !9
  %3057 = call noundef zeroext i1 @_ZL29testspline2dunit_testlintransPKN11alglib_impl19spline2dinterpolantElddddPNS_8ae_stateE(ptr noundef %30, i64 noundef %3051, double noundef %3052, double noundef %3053, double noundef %3054, double noundef %3055, ptr noundef %3056)
  %3058 = xor i1 %3057, true
  br label %3059

3059:                                             ; preds = %3050, %3033
  %3060 = phi i1 [ true, %3033 ], [ %3058, %3050 ]
  %3061 = zext i1 %3060 to i8
  store i8 %3061, ptr %13, align 1, !tbaa !5
  %3062 = load ptr, ptr %4, align 8, !tbaa !9
  %3063 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %3062)
  %3064 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %3063, double noundef 5.000000e-01)
  br i1 %3064, label %3065, label %3069

3065:                                             ; preds = %3059
  %3066 = load i64, ptr %72, align 8, !tbaa !11
  %3067 = load i64, ptr %71, align 8, !tbaa !11
  %3068 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20spline2dbuildbicubicEPKNS_9ae_vectorES2_PKNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %28, ptr noundef %29, ptr noundef %61, i64 noundef %3066, i64 noundef %3067, ptr noundef %30, ptr noundef %3068)
  br label %3073

3069:                                             ; preds = %3059
  %3070 = load i64, ptr %72, align 8, !tbaa !11
  %3071 = load i64, ptr %71, align 8, !tbaa !11
  %3072 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl21spline2dbuildbilinearEPKNS_9ae_vectorES2_PKNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %28, ptr noundef %29, ptr noundef %61, i64 noundef %3070, i64 noundef %3071, ptr noundef %30, ptr noundef %3072)
  br label %3073

3073:                                             ; preds = %3069, %3065
  %3074 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL30testspline2dunit_unsetspline2dPN11alglib_impl19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %31, ptr noundef %3074)
  %3075 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12spline2dcopyEPKNS_19spline2dinterpolantEPS0_PNS_8ae_stateE(ptr noundef %30, ptr noundef %31, ptr noundef %3075)
  store double 0.000000e+00, ptr %76, align 8, !tbaa !13
  store i64 1, ptr %68, align 8, !tbaa !11
  br label %3076

3076:                                             ; preds = %3108, %3073
  %3077 = load i64, ptr %68, align 8, !tbaa !11
  %3078 = icmp sle i64 %3077, 5
  br i1 %3078, label %3079, label %3111

3079:                                             ; preds = %3076
  %3080 = load double, ptr %64, align 8, !tbaa !13
  %3081 = load double, ptr %66, align 8, !tbaa !13
  %3082 = load double, ptr %64, align 8, !tbaa !13
  %3083 = fsub double %3081, %3082
  %3084 = load ptr, ptr %4, align 8, !tbaa !9
  %3085 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %3084)
  %3086 = call double @llvm.fmuladd.f64(double %3083, double %3085, double %3080)
  store double %3086, ptr %78, align 8, !tbaa !13
  %3087 = load double, ptr %65, align 8, !tbaa !13
  %3088 = load double, ptr %67, align 8, !tbaa !13
  %3089 = load double, ptr %65, align 8, !tbaa !13
  %3090 = fsub double %3088, %3089
  %3091 = load ptr, ptr %4, align 8, !tbaa !9
  %3092 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %3091)
  %3093 = call double @llvm.fmuladd.f64(double %3090, double %3092, double %3087)
  store double %3093, ptr %79, align 8, !tbaa !13
  %3094 = load double, ptr %76, align 8, !tbaa !13
  %3095 = load double, ptr %78, align 8, !tbaa !13
  %3096 = load double, ptr %79, align 8, !tbaa !13
  %3097 = load ptr, ptr %4, align 8, !tbaa !9
  %3098 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef %30, double noundef %3095, double noundef %3096, ptr noundef %3097)
  %3099 = load double, ptr %78, align 8, !tbaa !13
  %3100 = load double, ptr %79, align 8, !tbaa !13
  %3101 = load ptr, ptr %4, align 8, !tbaa !9
  %3102 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef %31, double noundef %3099, double noundef %3100, ptr noundef %3101)
  %3103 = fsub double %3098, %3102
  %3104 = load ptr, ptr %4, align 8, !tbaa !9
  %3105 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %3103, ptr noundef %3104)
  %3106 = load ptr, ptr %4, align 8, !tbaa !9
  %3107 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %3094, double noundef %3105, ptr noundef %3106)
  store double %3107, ptr %76, align 8, !tbaa !13
  br label %3108

3108:                                             ; preds = %3079
  %3109 = load i64, ptr %68, align 8, !tbaa !11
  %3110 = add nsw i64 %3109, 1
  store i64 %3110, ptr %68, align 8, !tbaa !11
  br label %3076, !llvm.loop !57

3111:                                             ; preds = %3076
  %3112 = load i8, ptr %10, align 1, !tbaa !5, !range !35, !noundef !36
  %3113 = trunc i8 %3112 to i1
  br i1 %3113, label %3117, label %3114

3114:                                             ; preds = %3111
  %3115 = load double, ptr %76, align 8, !tbaa !13
  %3116 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %3115, double noundef 0x3D95FD7FE1796496)
  br label %3117

3117:                                             ; preds = %3114, %3111
  %3118 = phi i1 [ true, %3111 ], [ %3116, %3114 ]
  %3119 = zext i1 %3118 to i8
  store i8 %3119, ptr %10, align 1, !tbaa !5
  %3120 = load ptr, ptr %4, align 8, !tbaa !9
  %3121 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %3120)
  %3122 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %3121, double noundef 5.000000e-01)
  br i1 %3122, label %3123, label %3127

3123:                                             ; preds = %3117
  %3124 = load i64, ptr %72, align 8, !tbaa !11
  %3125 = load i64, ptr %71, align 8, !tbaa !11
  %3126 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20spline2dbuildbicubicEPKNS_9ae_vectorES2_PKNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %28, ptr noundef %29, ptr noundef %61, i64 noundef %3124, i64 noundef %3125, ptr noundef %30, ptr noundef %3126)
  br label %3131

3127:                                             ; preds = %3117
  %3128 = load i64, ptr %72, align 8, !tbaa !11
  %3129 = load i64, ptr %71, align 8, !tbaa !11
  %3130 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl21spline2dbuildbilinearEPKNS_9ae_vectorES2_PKNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %28, ptr noundef %29, ptr noundef %61, i64 noundef %3128, i64 noundef %3129, ptr noundef %30, ptr noundef %3130)
  br label %3131

3131:                                             ; preds = %3127, %3123
  %3132 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL30testspline2dunit_unsetspline2dPN11alglib_impl19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %31, ptr noundef %3132)
  call void @llvm.lifetime.start.p0(i64 88, ptr %124) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %125) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr %126) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr %127) #5
  %3133 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %3133, ptr noundef %126)
  call void @_ZN11alglib_impl18ae_serializer_initEPNS_13ae_serializerE(ptr noundef %124)
  call void @_ZN11alglib_impl25ae_serializer_alloc_startEPNS_13ae_serializerE(ptr noundef %124)
  %3134 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13spline2dallocEPNS_13ae_serializerEPKNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %124, ptr noundef %30, ptr noundef %3134)
  %3135 = call noundef i64 @_ZN11alglib_impl28ae_serializer_get_alloc_sizeEPNS_13ae_serializerE(ptr noundef %124)
  store i64 %3135, ptr %125, align 8, !tbaa !11
  call void @llvm.memset.p0.i64(ptr align 8 %127, i8 0, i64 32, i1 false)
  %3136 = load i64, ptr %125, align 8, !tbaa !11
  %3137 = add nsw i64 %3136, 1
  %3138 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl10ae_db_initEPNS_12ae_dyn_blockElPNS_8ae_stateEb(ptr noundef %127, i64 noundef %3137, ptr noundef %3138, i1 noundef zeroext true)
  %3139 = getelementptr inbounds %"struct.alglib_impl::ae_dyn_block", ptr %127, i32 0, i32 2
  %3140 = load volatile ptr, ptr %3139, align 8, !tbaa !58
  call void @_ZN11alglib_impl24ae_serializer_sstart_strEPNS_13ae_serializerEPc(ptr noundef %124, ptr noundef %3140)
  %3141 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl17spline2dserializeEPNS_13ae_serializerEPKNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %124, ptr noundef %30, ptr noundef %3141)
  %3142 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl18ae_serializer_stopEPNS_13ae_serializerEPNS_8ae_stateE(ptr noundef %124, ptr noundef %3142)
  call void @_ZN11alglib_impl19ae_serializer_clearEPNS_13ae_serializerE(ptr noundef %124)
  call void @_ZN11alglib_impl18ae_serializer_initEPNS_13ae_serializerE(ptr noundef %124)
  %3143 = getelementptr inbounds %"struct.alglib_impl::ae_dyn_block", ptr %127, i32 0, i32 2
  %3144 = load volatile ptr, ptr %3143, align 8, !tbaa !58
  call void @_ZN11alglib_impl24ae_serializer_ustart_strEPNS_13ae_serializerEPKc(ptr noundef %124, ptr noundef %3144)
  %3145 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl19spline2dunserializeEPNS_13ae_serializerEPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %124, ptr noundef %31, ptr noundef %3145)
  %3146 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl18ae_serializer_stopEPNS_13ae_serializerEPNS_8ae_stateE(ptr noundef %124, ptr noundef %3146)
  call void @_ZN11alglib_impl19ae_serializer_clearEPNS_13ae_serializerE(ptr noundef %124)
  %3147 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %3147)
  call void @llvm.lifetime.end.p0(i64 32, ptr %127) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %126) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #5
  call void @llvm.lifetime.end.p0(i64 88, ptr %124) #5
  store double 0.000000e+00, ptr %76, align 8, !tbaa !13
  store i64 1, ptr %68, align 8, !tbaa !11
  br label %3148

3148:                                             ; preds = %3180, %3131
  %3149 = load i64, ptr %68, align 8, !tbaa !11
  %3150 = icmp sle i64 %3149, 5
  br i1 %3150, label %3151, label %3183

3151:                                             ; preds = %3148
  %3152 = load double, ptr %64, align 8, !tbaa !13
  %3153 = load double, ptr %66, align 8, !tbaa !13
  %3154 = load double, ptr %64, align 8, !tbaa !13
  %3155 = fsub double %3153, %3154
  %3156 = load ptr, ptr %4, align 8, !tbaa !9
  %3157 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %3156)
  %3158 = call double @llvm.fmuladd.f64(double %3155, double %3157, double %3152)
  store double %3158, ptr %78, align 8, !tbaa !13
  %3159 = load double, ptr %65, align 8, !tbaa !13
  %3160 = load double, ptr %67, align 8, !tbaa !13
  %3161 = load double, ptr %65, align 8, !tbaa !13
  %3162 = fsub double %3160, %3161
  %3163 = load ptr, ptr %4, align 8, !tbaa !9
  %3164 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %3163)
  %3165 = call double @llvm.fmuladd.f64(double %3162, double %3164, double %3159)
  store double %3165, ptr %79, align 8, !tbaa !13
  %3166 = load double, ptr %76, align 8, !tbaa !13
  %3167 = load double, ptr %78, align 8, !tbaa !13
  %3168 = load double, ptr %79, align 8, !tbaa !13
  %3169 = load ptr, ptr %4, align 8, !tbaa !9
  %3170 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef %30, double noundef %3167, double noundef %3168, ptr noundef %3169)
  %3171 = load double, ptr %78, align 8, !tbaa !13
  %3172 = load double, ptr %79, align 8, !tbaa !13
  %3173 = load ptr, ptr %4, align 8, !tbaa !9
  %3174 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef %31, double noundef %3171, double noundef %3172, ptr noundef %3173)
  %3175 = fsub double %3170, %3174
  %3176 = load ptr, ptr %4, align 8, !tbaa !9
  %3177 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %3175, ptr noundef %3176)
  %3178 = load ptr, ptr %4, align 8, !tbaa !9
  %3179 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %3166, double noundef %3177, ptr noundef %3178)
  store double %3179, ptr %76, align 8, !tbaa !13
  br label %3180

3180:                                             ; preds = %3151
  %3181 = load i64, ptr %68, align 8, !tbaa !11
  %3182 = add nsw i64 %3181, 1
  store i64 %3182, ptr %68, align 8, !tbaa !11
  br label %3148, !llvm.loop !60

3183:                                             ; preds = %3148
  %3184 = load double, ptr %76, align 8, !tbaa !13
  %3185 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %3184, double noundef 0x3D95FD7FE1796496)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %11, i1 noundef zeroext %3185, ptr noundef @.str.19, i32 noundef 110506, ptr noundef @.str.885)
  store i64 0, ptr %25, align 8, !tbaa !11
  br label %3186

3186:                                             ; preds = %3369, %3183
  %3187 = load i64, ptr %25, align 8, !tbaa !11
  %3188 = icmp sle i64 %3187, 2
  br i1 %3188, label %3189, label %3372

3189:                                             ; preds = %3186
  %3190 = load i64, ptr %72, align 8, !tbaa !11
  %3191 = load i64, ptr %71, align 8, !tbaa !11
  %3192 = mul nsw i64 %3190, %3191
  %3193 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %36, i64 noundef %3192, ptr noundef %3193)
  store i64 0, ptr %68, align 8, !tbaa !11
  br label %3194

3194:                                             ; preds = %3242, %3189
  %3195 = load i64, ptr %68, align 8, !tbaa !11
  %3196 = load i64, ptr %72, align 8, !tbaa !11
  %3197 = sub nsw i64 %3196, 1
  %3198 = icmp sle i64 %3195, %3197
  br i1 %3198, label %3199, label %3245

3199:                                             ; preds = %3194
  store i64 0, ptr %69, align 8, !tbaa !11
  br label %3200

3200:                                             ; preds = %3238, %3199
  %3201 = load i64, ptr %69, align 8, !tbaa !11
  %3202 = load i64, ptr %71, align 8, !tbaa !11
  %3203 = sub nsw i64 %3202, 1
  %3204 = icmp sle i64 %3201, %3203
  br i1 %3204, label %3205, label %3241

3205:                                             ; preds = %3200
  %3206 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %61, i32 0, i32 6
  %3207 = load ptr, ptr %3206, align 8, !tbaa !15
  %3208 = load i64, ptr %68, align 8, !tbaa !11
  %3209 = getelementptr inbounds ptr, ptr %3207, i64 %3208
  %3210 = load ptr, ptr %3209, align 8, !tbaa !9
  %3211 = load i64, ptr %69, align 8, !tbaa !11
  %3212 = getelementptr inbounds double, ptr %3210, i64 %3211
  %3213 = load double, ptr %3212, align 8, !tbaa !13
  %3214 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %63, i32 0, i32 6
  %3215 = load ptr, ptr %3214, align 8, !tbaa !15
  %3216 = load i64, ptr %69, align 8, !tbaa !11
  %3217 = getelementptr inbounds ptr, ptr %3215, i64 %3216
  %3218 = load ptr, ptr %3217, align 8, !tbaa !9
  %3219 = load i64, ptr %68, align 8, !tbaa !11
  %3220 = getelementptr inbounds double, ptr %3218, i64 %3219
  store double %3213, ptr %3220, align 8, !tbaa !13
  %3221 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %34, i32 0, i32 4
  %3222 = load ptr, ptr %3221, align 8, !tbaa !15
  %3223 = load i64, ptr %68, align 8, !tbaa !11
  %3224 = load i64, ptr %71, align 8, !tbaa !11
  %3225 = mul nsw i64 %3223, %3224
  %3226 = load i64, ptr %69, align 8, !tbaa !11
  %3227 = add nsw i64 %3225, %3226
  %3228 = getelementptr inbounds double, ptr %3222, i64 %3227
  %3229 = load double, ptr %3228, align 8, !tbaa !13
  %3230 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %36, i32 0, i32 4
  %3231 = load ptr, ptr %3230, align 8, !tbaa !15
  %3232 = load i64, ptr %69, align 8, !tbaa !11
  %3233 = load i64, ptr %72, align 8, !tbaa !11
  %3234 = mul nsw i64 %3232, %3233
  %3235 = load i64, ptr %68, align 8, !tbaa !11
  %3236 = add nsw i64 %3234, %3235
  %3237 = getelementptr inbounds double, ptr %3231, i64 %3236
  store double %3229, ptr %3237, align 8, !tbaa !13
  br label %3238

3238:                                             ; preds = %3205
  %3239 = load i64, ptr %69, align 8, !tbaa !11
  %3240 = add nsw i64 %3239, 1
  store i64 %3240, ptr %69, align 8, !tbaa !11
  br label %3200, !llvm.loop !61

3241:                                             ; preds = %3200
  br label %3242

3242:                                             ; preds = %3241
  %3243 = load i64, ptr %68, align 8, !tbaa !11
  %3244 = add nsw i64 %3243, 1
  store i64 %3244, ptr %68, align 8, !tbaa !11
  br label %3194, !llvm.loop !62

3245:                                             ; preds = %3194
  %3246 = load i64, ptr %54, align 8, !tbaa !11
  %3247 = load i64, ptr %55, align 8, !tbaa !11
  %3248 = load i64, ptr %56, align 8, !tbaa !11
  %3249 = load i64, ptr %57, align 8, !tbaa !11
  %3250 = load ptr, ptr %4, align 8, !tbaa !9
  %3251 = call noundef i64 @_ZN11alglib_impl5imin4EllllPNS_8ae_stateE(i64 noundef %3246, i64 noundef %3247, i64 noundef %3248, i64 noundef %3249, ptr noundef %3250)
  %3252 = icmp ne i64 %3251, 0
  br i1 %3252, label %3261, label %3253

3253:                                             ; preds = %3245
  %3254 = load i64, ptr %54, align 8, !tbaa !11
  %3255 = load i64, ptr %55, align 8, !tbaa !11
  %3256 = load i64, ptr %56, align 8, !tbaa !11
  %3257 = load i64, ptr %57, align 8, !tbaa !11
  %3258 = load ptr, ptr %4, align 8, !tbaa !9
  %3259 = call noundef i64 @_ZN11alglib_impl5imax4EllllPNS_8ae_stateE(i64 noundef %3254, i64 noundef %3255, i64 noundef %3256, i64 noundef %3257, ptr noundef %3258)
  %3260 = icmp ne i64 %3259, 0
  br i1 %3260, label %3261, label %3294

3261:                                             ; preds = %3253, %3245
  %3262 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %53, i64 noundef 4, ptr noundef %3262)
  store i64 0, ptr %68, align 8, !tbaa !11
  br label %3263

3263:                                             ; preds = %3290, %3261
  %3264 = load i64, ptr %68, align 8, !tbaa !11
  %3265 = icmp sle i64 %3264, 1
  br i1 %3265, label %3266, label %3293

3266:                                             ; preds = %3263
  store i64 0, ptr %69, align 8, !tbaa !11
  br label %3267

3267:                                             ; preds = %3286, %3266
  %3268 = load i64, ptr %69, align 8, !tbaa !11
  %3269 = icmp sle i64 %3268, 1
  br i1 %3269, label %3270, label %3289

3270:                                             ; preds = %3267
  %3271 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %47, i32 0, i32 4
  %3272 = load ptr, ptr %3271, align 8, !tbaa !15
  %3273 = load i64, ptr %68, align 8, !tbaa !11
  %3274 = mul nsw i64 %3273, 2
  %3275 = load i64, ptr %69, align 8, !tbaa !11
  %3276 = add nsw i64 %3274, %3275
  %3277 = getelementptr inbounds double, ptr %3272, i64 %3276
  %3278 = load double, ptr %3277, align 8, !tbaa !13
  %3279 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %53, i32 0, i32 4
  %3280 = load ptr, ptr %3279, align 8, !tbaa !15
  %3281 = load i64, ptr %69, align 8, !tbaa !11
  %3282 = mul nsw i64 %3281, 2
  %3283 = load i64, ptr %68, align 8, !tbaa !11
  %3284 = add nsw i64 %3282, %3283
  %3285 = getelementptr inbounds double, ptr %3280, i64 %3284
  store double %3278, ptr %3285, align 8, !tbaa !13
  br label %3286

3286:                                             ; preds = %3270
  %3287 = load i64, ptr %69, align 8, !tbaa !11
  %3288 = add nsw i64 %3287, 1
  store i64 %3288, ptr %69, align 8, !tbaa !11
  br label %3267, !llvm.loop !63

3289:                                             ; preds = %3267
  br label %3290

3290:                                             ; preds = %3289
  %3291 = load i64, ptr %68, align 8, !tbaa !11
  %3292 = add nsw i64 %3291, 1
  store i64 %3292, ptr %68, align 8, !tbaa !11
  br label %3263, !llvm.loop !64

3293:                                             ; preds = %3263
  br label %3296

3294:                                             ; preds = %3253
  %3295 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %53, i64 noundef 0, ptr noundef %3295)
  br label %3296

3296:                                             ; preds = %3294, %3293
  %3297 = load i64, ptr %25, align 8, !tbaa !11
  %3298 = icmp eq i64 %3297, 0
  br i1 %3298, label %3299, label %3306

3299:                                             ; preds = %3296
  %3300 = load i64, ptr %72, align 8, !tbaa !11
  %3301 = load i64, ptr %71, align 8, !tbaa !11
  %3302 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl21spline2dbuildbilinearEPKNS_9ae_vectorES2_PKNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %28, ptr noundef %29, ptr noundef %61, i64 noundef %3300, i64 noundef %3301, ptr noundef %30, ptr noundef %3302)
  %3303 = load i64, ptr %71, align 8, !tbaa !11
  %3304 = load i64, ptr %72, align 8, !tbaa !11
  %3305 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl21spline2dbuildbilinearEPKNS_9ae_vectorES2_PKNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %29, ptr noundef %28, ptr noundef %63, i64 noundef %3303, i64 noundef %3304, ptr noundef %31, ptr noundef %3305)
  br label %3306

3306:                                             ; preds = %3299, %3296
  %3307 = load i64, ptr %25, align 8, !tbaa !11
  %3308 = icmp eq i64 %3307, 1
  br i1 %3308, label %3309, label %3316

3309:                                             ; preds = %3306
  %3310 = load i64, ptr %72, align 8, !tbaa !11
  %3311 = load i64, ptr %71, align 8, !tbaa !11
  %3312 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20spline2dbuildbicubicEPKNS_9ae_vectorES2_PKNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %28, ptr noundef %29, ptr noundef %61, i64 noundef %3310, i64 noundef %3311, ptr noundef %30, ptr noundef %3312)
  %3313 = load i64, ptr %71, align 8, !tbaa !11
  %3314 = load i64, ptr %72, align 8, !tbaa !11
  %3315 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20spline2dbuildbicubicEPKNS_9ae_vectorES2_PKNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %29, ptr noundef %28, ptr noundef %63, i64 noundef %3313, i64 noundef %3314, ptr noundef %31, ptr noundef %3315)
  br label %3316

3316:                                             ; preds = %3309, %3306
  %3317 = load i64, ptr %25, align 8, !tbaa !11
  %3318 = icmp eq i64 %3317, 2
  br i1 %3318, label %3319, label %3334

3319:                                             ; preds = %3316
  %3320 = load i64, ptr %71, align 8, !tbaa !11
  %3321 = load i64, ptr %72, align 8, !tbaa !11
  %3322 = load i64, ptr %54, align 8, !tbaa !11
  %3323 = load i64, ptr %55, align 8, !tbaa !11
  %3324 = load i64, ptr %56, align 8, !tbaa !11
  %3325 = load i64, ptr %57, align 8, !tbaa !11
  %3326 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl21spline2dbuildclampedvEPKNS_9ae_vectorElS2_lS2_lS2_lS2_lS2_lS2_S2_lPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %28, i64 noundef %3320, ptr noundef %29, i64 noundef %3321, ptr noundef %43, i64 noundef %3322, ptr noundef %44, i64 noundef %3323, ptr noundef %45, i64 noundef %3324, ptr noundef %46, i64 noundef %3325, ptr noundef %47, ptr noundef %34, i64 noundef 1, ptr noundef %30, ptr noundef %3326)
  %3327 = load i64, ptr %72, align 8, !tbaa !11
  %3328 = load i64, ptr %71, align 8, !tbaa !11
  %3329 = load i64, ptr %56, align 8, !tbaa !11
  %3330 = load i64, ptr %57, align 8, !tbaa !11
  %3331 = load i64, ptr %54, align 8, !tbaa !11
  %3332 = load i64, ptr %55, align 8, !tbaa !11
  %3333 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl21spline2dbuildclampedvEPKNS_9ae_vectorElS2_lS2_lS2_lS2_lS2_lS2_S2_lPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %29, i64 noundef %3327, ptr noundef %28, i64 noundef %3328, ptr noundef %45, i64 noundef %3329, ptr noundef %46, i64 noundef %3330, ptr noundef %43, i64 noundef %3331, ptr noundef %44, i64 noundef %3332, ptr noundef %53, ptr noundef %36, i64 noundef 1, ptr noundef %31, ptr noundef %3333)
  br label %3334

3334:                                             ; preds = %3319, %3316
  store i64 1, ptr %68, align 8, !tbaa !11
  br label %3335

3335:                                             ; preds = %3365, %3334
  %3336 = load i64, ptr %68, align 8, !tbaa !11
  %3337 = icmp sle i64 %3336, 10
  br i1 %3337, label %3338, label %3368

3338:                                             ; preds = %3335
  %3339 = load double, ptr %64, align 8, !tbaa !13
  %3340 = load double, ptr %66, align 8, !tbaa !13
  %3341 = load double, ptr %64, align 8, !tbaa !13
  %3342 = fsub double %3340, %3341
  %3343 = load ptr, ptr %4, align 8, !tbaa !9
  %3344 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %3343)
  %3345 = call double @llvm.fmuladd.f64(double %3342, double %3344, double %3339)
  store double %3345, ptr %78, align 8, !tbaa !13
  %3346 = load double, ptr %65, align 8, !tbaa !13
  %3347 = load double, ptr %67, align 8, !tbaa !13
  %3348 = load double, ptr %65, align 8, !tbaa !13
  %3349 = fsub double %3347, %3348
  %3350 = load ptr, ptr %4, align 8, !tbaa !9
  %3351 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %3350)
  %3352 = call double @llvm.fmuladd.f64(double %3349, double %3351, double %3346)
  store double %3352, ptr %79, align 8, !tbaa !13
  %3353 = load double, ptr %78, align 8, !tbaa !13
  %3354 = load double, ptr %79, align 8, !tbaa !13
  %3355 = load ptr, ptr %4, align 8, !tbaa !9
  %3356 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef %30, double noundef %3353, double noundef %3354, ptr noundef %3355)
  %3357 = load double, ptr %79, align 8, !tbaa !13
  %3358 = load double, ptr %78, align 8, !tbaa !13
  %3359 = load ptr, ptr %4, align 8, !tbaa !9
  %3360 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef %31, double noundef %3357, double noundef %3358, ptr noundef %3359)
  %3361 = fsub double %3356, %3360
  %3362 = load ptr, ptr %4, align 8, !tbaa !9
  %3363 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %3361, ptr noundef %3362)
  %3364 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %3363, double noundef 0x3D95FD7FE1796496)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %14, i1 noundef zeroext %3364, ptr noundef @.str.19, i32 noundef 110564, ptr noundef @.str.886)
  br label %3365

3365:                                             ; preds = %3338
  %3366 = load i64, ptr %68, align 8, !tbaa !11
  %3367 = add nsw i64 %3366, 1
  store i64 %3367, ptr %68, align 8, !tbaa !11
  br label %3335, !llvm.loop !65

3368:                                             ; preds = %3335
  br label %3369

3369:                                             ; preds = %3368
  %3370 = load i64, ptr %25, align 8, !tbaa !11
  %3371 = add nsw i64 %3370, 1
  store i64 %3371, ptr %25, align 8, !tbaa !11
  br label %3186, !llvm.loop !66

3372:                                             ; preds = %3186
  br label %3373

3373:                                             ; preds = %3372
  %3374 = load i64, ptr %23, align 8, !tbaa !11
  %3375 = add nsw i64 %3374, 1
  store i64 %3375, ptr %23, align 8, !tbaa !11
  br label %240, !llvm.loop !67

3376:                                             ; preds = %240
  br label %3377

3377:                                             ; preds = %3376
  %3378 = load i64, ptr %72, align 8, !tbaa !11
  %3379 = add nsw i64 %3378, 1
  store i64 %3379, ptr %72, align 8, !tbaa !11
  br label %175, !llvm.loop !68

3380:                                             ; preds = %175
  br label %3381

3381:                                             ; preds = %3380
  %3382 = load i64, ptr %71, align 8, !tbaa !11
  %3383 = add nsw i64 %3382, 1
  store i64 %3383, ptr %71, align 8, !tbaa !11
  br label %171, !llvm.loop !69

3384:                                             ; preds = %171
  store i64 2, ptr %72, align 8, !tbaa !11
  br label %3385

3385:                                             ; preds = %3673, %3384
  %3386 = load i64, ptr %72, align 8, !tbaa !11
  %3387 = icmp sle i64 %3386, 6
  br i1 %3387, label %3388, label %3676

3388:                                             ; preds = %3385
  store i64 2, ptr %71, align 8, !tbaa !11
  br label %3389

3389:                                             ; preds = %3669, %3388
  %3390 = load i64, ptr %71, align 8, !tbaa !11
  %3391 = icmp sle i64 %3390, 6
  br i1 %3391, label %3392, label %3672

3392:                                             ; preds = %3389
  %3393 = load i64, ptr %72, align 8, !tbaa !11
  %3394 = sub nsw i64 %3393, 1
  %3395 = add nsw i64 %3394, 1
  %3396 = load i64, ptr %71, align 8, !tbaa !11
  %3397 = sub nsw i64 %3396, 1
  %3398 = add nsw i64 %3397, 1
  %3399 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %61, i64 noundef %3395, i64 noundef %3398, ptr noundef %3399)
  %3400 = load i64, ptr %71, align 8, !tbaa !11
  %3401 = sub nsw i64 %3400, 1
  %3402 = add nsw i64 %3401, 1
  %3403 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %28, i64 noundef %3402, ptr noundef %3403)
  %3404 = load i64, ptr %72, align 8, !tbaa !11
  %3405 = sub nsw i64 %3404, 1
  %3406 = add nsw i64 %3405, 1
  %3407 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %29, i64 noundef %3406, ptr noundef %3407)
  store i64 0, ptr %69, align 8, !tbaa !11
  br label %3408

3408:                                             ; preds = %3424, %3392
  %3409 = load i64, ptr %69, align 8, !tbaa !11
  %3410 = load i64, ptr %71, align 8, !tbaa !11
  %3411 = sub nsw i64 %3410, 1
  %3412 = icmp sle i64 %3409, %3411
  br i1 %3412, label %3413, label %3427

3413:                                             ; preds = %3408
  %3414 = load i64, ptr %69, align 8, !tbaa !11
  %3415 = sitofp i64 %3414 to double
  %3416 = load i64, ptr %71, align 8, !tbaa !11
  %3417 = sub nsw i64 %3416, 1
  %3418 = sitofp i64 %3417 to double
  %3419 = fdiv double %3415, %3418
  %3420 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %3421 = load ptr, ptr %3420, align 8, !tbaa !15
  %3422 = load i64, ptr %69, align 8, !tbaa !11
  %3423 = getelementptr inbounds double, ptr %3421, i64 %3422
  store double %3419, ptr %3423, align 8, !tbaa !13
  br label %3424

3424:                                             ; preds = %3413
  %3425 = load i64, ptr %69, align 8, !tbaa !11
  %3426 = add nsw i64 %3425, 1
  store i64 %3426, ptr %69, align 8, !tbaa !11
  br label %3408, !llvm.loop !70

3427:                                             ; preds = %3408
  store i64 0, ptr %68, align 8, !tbaa !11
  br label %3428

3428:                                             ; preds = %3444, %3427
  %3429 = load i64, ptr %68, align 8, !tbaa !11
  %3430 = load i64, ptr %72, align 8, !tbaa !11
  %3431 = sub nsw i64 %3430, 1
  %3432 = icmp sle i64 %3429, %3431
  br i1 %3432, label %3433, label %3447

3433:                                             ; preds = %3428
  %3434 = load i64, ptr %68, align 8, !tbaa !11
  %3435 = sitofp i64 %3434 to double
  %3436 = load i64, ptr %72, align 8, !tbaa !11
  %3437 = sub nsw i64 %3436, 1
  %3438 = sitofp i64 %3437 to double
  %3439 = fdiv double %3435, %3438
  %3440 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %3441 = load ptr, ptr %3440, align 8, !tbaa !15
  %3442 = load i64, ptr %68, align 8, !tbaa !11
  %3443 = getelementptr inbounds double, ptr %3441, i64 %3442
  store double %3439, ptr %3443, align 8, !tbaa !13
  br label %3444

3444:                                             ; preds = %3433
  %3445 = load i64, ptr %68, align 8, !tbaa !11
  %3446 = add nsw i64 %3445, 1
  store i64 %3446, ptr %68, align 8, !tbaa !11
  br label %3428, !llvm.loop !71

3447:                                             ; preds = %3428
  store i64 0, ptr %68, align 8, !tbaa !11
  br label %3448

3448:                                             ; preds = %3524, %3447
  %3449 = load i64, ptr %68, align 8, !tbaa !11
  %3450 = load i64, ptr %72, align 8, !tbaa !11
  %3451 = sub nsw i64 %3450, 1
  %3452 = icmp sle i64 %3449, %3451
  br i1 %3452, label %3453, label %3527

3453:                                             ; preds = %3448
  store i64 0, ptr %69, align 8, !tbaa !11
  br label %3454

3454:                                             ; preds = %3520, %3453
  %3455 = load i64, ptr %69, align 8, !tbaa !11
  %3456 = load i64, ptr %71, align 8, !tbaa !11
  %3457 = sub nsw i64 %3456, 1
  %3458 = icmp sle i64 %3455, %3457
  br i1 %3458, label %3459, label %3523

3459:                                             ; preds = %3454
  %3460 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %3461 = load ptr, ptr %3460, align 8, !tbaa !15
  %3462 = load i64, ptr %69, align 8, !tbaa !11
  %3463 = getelementptr inbounds double, ptr %3461, i64 %3462
  %3464 = load double, ptr %3463, align 8, !tbaa !13
  %3465 = fmul double 6.000000e-01, %3464
  %3466 = load ptr, ptr %4, align 8, !tbaa !9
  %3467 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %3465, ptr noundef %3466)
  %3468 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %3469 = load ptr, ptr %3468, align 8, !tbaa !15
  %3470 = load i64, ptr %68, align 8, !tbaa !11
  %3471 = getelementptr inbounds double, ptr %3469, i64 %3470
  %3472 = load double, ptr %3471, align 8, !tbaa !13
  %3473 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %3474 = load ptr, ptr %3473, align 8, !tbaa !15
  %3475 = load i64, ptr %69, align 8, !tbaa !11
  %3476 = getelementptr inbounds double, ptr %3474, i64 %3475
  %3477 = load double, ptr %3476, align 8, !tbaa !13
  %3478 = fmul double 8.000000e-02, %3477
  %3479 = call double @llvm.fmuladd.f64(double -3.000000e-01, double %3472, double %3478)
  %3480 = load ptr, ptr %4, align 8, !tbaa !9
  %3481 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %3479, ptr noundef %3480)
  %3482 = fsub double %3467, %3481
  %3483 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %3484 = load ptr, ptr %3483, align 8, !tbaa !15
  %3485 = load i64, ptr %69, align 8, !tbaa !11
  %3486 = getelementptr inbounds double, ptr %3484, i64 %3485
  %3487 = load double, ptr %3486, align 8, !tbaa !13
  %3488 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %3489 = load ptr, ptr %3488, align 8, !tbaa !15
  %3490 = load i64, ptr %68, align 8, !tbaa !11
  %3491 = getelementptr inbounds double, ptr %3489, i64 %3490
  %3492 = load double, ptr %3491, align 8, !tbaa !13
  %3493 = call double @llvm.fmuladd.f64(double 1.200000e+00, double %3492, double %3487)
  %3494 = fmul double 0x400921FB54442D18, %3493
  %3495 = load ptr, ptr %4, align 8, !tbaa !9
  %3496 = call noundef double @_ZN11alglib_impl6ae_cosEdPNS_8ae_stateE(double noundef %3494, ptr noundef %3495)
  %3497 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %3496, double %3482)
  %3498 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %3499 = load ptr, ptr %3498, align 8, !tbaa !15
  %3500 = load i64, ptr %69, align 8, !tbaa !11
  %3501 = getelementptr inbounds double, ptr %3499, i64 %3500
  %3502 = load double, ptr %3501, align 8, !tbaa !13
  %3503 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %3504 = load ptr, ptr %3503, align 8, !tbaa !15
  %3505 = load i64, ptr %68, align 8, !tbaa !11
  %3506 = getelementptr inbounds double, ptr %3504, i64 %3505
  %3507 = load double, ptr %3506, align 8, !tbaa !13
  %3508 = fmul double 1.500000e+01, %3507
  %3509 = call double @llvm.fmuladd.f64(double 2.000000e+01, double %3502, double %3508)
  %3510 = load ptr, ptr %4, align 8, !tbaa !9
  %3511 = call noundef double @_ZN11alglib_impl6ae_cosEdPNS_8ae_stateE(double noundef %3509, ptr noundef %3510)
  %3512 = call double @llvm.fmuladd.f64(double 1.000000e-01, double %3511, double %3497)
  %3513 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %61, i32 0, i32 6
  %3514 = load ptr, ptr %3513, align 8, !tbaa !15
  %3515 = load i64, ptr %68, align 8, !tbaa !11
  %3516 = getelementptr inbounds ptr, ptr %3514, i64 %3515
  %3517 = load ptr, ptr %3516, align 8, !tbaa !9
  %3518 = load i64, ptr %69, align 8, !tbaa !11
  %3519 = getelementptr inbounds double, ptr %3517, i64 %3518
  store double %3512, ptr %3519, align 8, !tbaa !13
  br label %3520

3520:                                             ; preds = %3459
  %3521 = load i64, ptr %69, align 8, !tbaa !11
  %3522 = add nsw i64 %3521, 1
  store i64 %3522, ptr %69, align 8, !tbaa !11
  br label %3454, !llvm.loop !72

3523:                                             ; preds = %3454
  br label %3524

3524:                                             ; preds = %3523
  %3525 = load i64, ptr %68, align 8, !tbaa !11
  %3526 = add nsw i64 %3525, 1
  store i64 %3526, ptr %68, align 8, !tbaa !11
  br label %3448, !llvm.loop !73

3527:                                             ; preds = %3448
  store i64 2, ptr %75, align 8, !tbaa !11
  br label %3528

3528:                                             ; preds = %3665, %3527
  %3529 = load i64, ptr %75, align 8, !tbaa !11
  %3530 = icmp sle i64 %3529, 6
  br i1 %3530, label %3531, label %3668

3531:                                             ; preds = %3528
  store i64 2, ptr %74, align 8, !tbaa !11
  br label %3532

3532:                                             ; preds = %3661, %3531
  %3533 = load i64, ptr %74, align 8, !tbaa !11
  %3534 = icmp sle i64 %3533, 6
  br i1 %3534, label %3535, label %3664

3535:                                             ; preds = %3532
  store i64 1, ptr %23, align 8, !tbaa !11
  br label %3536

3536:                                             ; preds = %3657, %3535
  %3537 = load i64, ptr %23, align 8, !tbaa !11
  %3538 = load i64, ptr %24, align 8, !tbaa !11
  %3539 = icmp sle i64 %3537, %3538
  br i1 %3539, label %3540, label %3660

3540:                                             ; preds = %3536
  store i64 0, ptr %25, align 8, !tbaa !11
  br label %3541

3541:                                             ; preds = %3653, %3540
  %3542 = load i64, ptr %25, align 8, !tbaa !11
  %3543 = icmp sle i64 %3542, 1
  br i1 %3543, label %3544, label %3656

3544:                                             ; preds = %3541
  %3545 = load i64, ptr %25, align 8, !tbaa !11
  %3546 = icmp eq i64 %3545, 0
  br i1 %3546, label %3547, label %3556

3547:                                             ; preds = %3544
  %3548 = load i64, ptr %72, align 8, !tbaa !11
  %3549 = load i64, ptr %71, align 8, !tbaa !11
  %3550 = load i64, ptr %75, align 8, !tbaa !11
  %3551 = load i64, ptr %74, align 8, !tbaa !11
  %3552 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl24spline2dresamplebilinearEPKNS_9ae_matrixEllPS0_llPNS_8ae_stateE(ptr noundef %61, i64 noundef %3548, i64 noundef %3549, ptr noundef %62, i64 noundef %3550, i64 noundef %3551, ptr noundef %3552)
  %3553 = load i64, ptr %72, align 8, !tbaa !11
  %3554 = load i64, ptr %71, align 8, !tbaa !11
  %3555 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl21spline2dbuildbilinearEPKNS_9ae_vectorES2_PKNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %28, ptr noundef %29, ptr noundef %61, i64 noundef %3553, i64 noundef %3554, ptr noundef %30, ptr noundef %3555)
  br label %3556

3556:                                             ; preds = %3547, %3544
  %3557 = load i64, ptr %25, align 8, !tbaa !11
  %3558 = icmp eq i64 %3557, 1
  br i1 %3558, label %3559, label %3568

3559:                                             ; preds = %3556
  %3560 = load i64, ptr %72, align 8, !tbaa !11
  %3561 = load i64, ptr %71, align 8, !tbaa !11
  %3562 = load i64, ptr %75, align 8, !tbaa !11
  %3563 = load i64, ptr %74, align 8, !tbaa !11
  %3564 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl23spline2dresamplebicubicEPKNS_9ae_matrixEllPS0_llPNS_8ae_stateE(ptr noundef %61, i64 noundef %3560, i64 noundef %3561, ptr noundef %62, i64 noundef %3562, i64 noundef %3563, ptr noundef %3564)
  %3565 = load i64, ptr %72, align 8, !tbaa !11
  %3566 = load i64, ptr %71, align 8, !tbaa !11
  %3567 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20spline2dbuildbicubicEPKNS_9ae_vectorES2_PKNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %28, ptr noundef %29, ptr noundef %61, i64 noundef %3565, i64 noundef %3566, ptr noundef %30, ptr noundef %3567)
  br label %3568

3568:                                             ; preds = %3559, %3556
  store double 0.000000e+00, ptr %76, align 8, !tbaa !13
  store double 0.000000e+00, ptr %117, align 8, !tbaa !13
  store i64 0, ptr %68, align 8, !tbaa !11
  br label %3569

3569:                                             ; preds = %3621, %3568
  %3570 = load i64, ptr %68, align 8, !tbaa !11
  %3571 = load i64, ptr %75, align 8, !tbaa !11
  %3572 = sub nsw i64 %3571, 1
  %3573 = icmp sle i64 %3570, %3572
  br i1 %3573, label %3574, label %3624

3574:                                             ; preds = %3569
  store i64 0, ptr %69, align 8, !tbaa !11
  br label %3575

3575:                                             ; preds = %3617, %3574
  %3576 = load i64, ptr %69, align 8, !tbaa !11
  %3577 = load i64, ptr %74, align 8, !tbaa !11
  %3578 = sub nsw i64 %3577, 1
  %3579 = icmp sle i64 %3576, %3578
  br i1 %3579, label %3580, label %3620

3580:                                             ; preds = %3575
  %3581 = load i64, ptr %69, align 8, !tbaa !11
  %3582 = sitofp i64 %3581 to double
  %3583 = load i64, ptr %74, align 8, !tbaa !11
  %3584 = sub nsw i64 %3583, 1
  %3585 = sitofp i64 %3584 to double
  %3586 = fdiv double %3582, %3585
  %3587 = load i64, ptr %68, align 8, !tbaa !11
  %3588 = sitofp i64 %3587 to double
  %3589 = load i64, ptr %75, align 8, !tbaa !11
  %3590 = sub nsw i64 %3589, 1
  %3591 = sitofp i64 %3590 to double
  %3592 = fdiv double %3588, %3591
  %3593 = load ptr, ptr %4, align 8, !tbaa !9
  %3594 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef %30, double noundef %3586, double noundef %3592, ptr noundef %3593)
  store double %3594, ptr %97, align 8, !tbaa !13
  %3595 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %62, i32 0, i32 6
  %3596 = load ptr, ptr %3595, align 8, !tbaa !15
  %3597 = load i64, ptr %68, align 8, !tbaa !11
  %3598 = getelementptr inbounds ptr, ptr %3596, i64 %3597
  %3599 = load ptr, ptr %3598, align 8, !tbaa !9
  %3600 = load i64, ptr %69, align 8, !tbaa !11
  %3601 = getelementptr inbounds double, ptr %3599, i64 %3600
  %3602 = load double, ptr %3601, align 8, !tbaa !13
  store double %3602, ptr %101, align 8, !tbaa !13
  %3603 = load double, ptr %76, align 8, !tbaa !13
  %3604 = load double, ptr %97, align 8, !tbaa !13
  %3605 = load double, ptr %101, align 8, !tbaa !13
  %3606 = fsub double %3604, %3605
  %3607 = load ptr, ptr %4, align 8, !tbaa !9
  %3608 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %3606, ptr noundef %3607)
  %3609 = load ptr, ptr %4, align 8, !tbaa !9
  %3610 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %3603, double noundef %3608, ptr noundef %3609)
  store double %3610, ptr %76, align 8, !tbaa !13
  %3611 = load double, ptr %117, align 8, !tbaa !13
  %3612 = load double, ptr %97, align 8, !tbaa !13
  %3613 = load ptr, ptr %4, align 8, !tbaa !9
  %3614 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %3612, ptr noundef %3613)
  %3615 = load ptr, ptr %4, align 8, !tbaa !9
  %3616 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %3611, double noundef %3614, ptr noundef %3615)
  store double %3616, ptr %117, align 8, !tbaa !13
  br label %3617

3617:                                             ; preds = %3580
  %3618 = load i64, ptr %69, align 8, !tbaa !11
  %3619 = add nsw i64 %3618, 1
  store i64 %3619, ptr %69, align 8, !tbaa !11
  br label %3575, !llvm.loop !74

3620:                                             ; preds = %3575
  br label %3621

3621:                                             ; preds = %3620
  %3622 = load i64, ptr %68, align 8, !tbaa !11
  %3623 = add nsw i64 %3622, 1
  store i64 %3623, ptr %68, align 8, !tbaa !11
  br label %3569, !llvm.loop !75

3624:                                             ; preds = %3569
  %3625 = load i64, ptr %25, align 8, !tbaa !11
  %3626 = icmp eq i64 %3625, 0
  br i1 %3626, label %3627, label %3638

3627:                                             ; preds = %3624
  %3628 = load i8, ptr %15, align 1, !tbaa !5, !range !35, !noundef !36
  %3629 = trunc i8 %3628 to i1
  br i1 %3629, label %3635, label %3630

3630:                                             ; preds = %3627
  %3631 = load double, ptr %76, align 8, !tbaa !13
  %3632 = load double, ptr %117, align 8, !tbaa !13
  %3633 = fdiv double %3631, %3632
  %3634 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %3633, double noundef 0x3D95FD7FE1796496)
  br label %3635

3635:                                             ; preds = %3630, %3627
  %3636 = phi i1 [ true, %3627 ], [ %3634, %3630 ]
  %3637 = zext i1 %3636 to i8
  store i8 %3637, ptr %15, align 1, !tbaa !5
  br label %3638

3638:                                             ; preds = %3635, %3624
  %3639 = load i64, ptr %25, align 8, !tbaa !11
  %3640 = icmp eq i64 %3639, 1
  br i1 %3640, label %3641, label %3652

3641:                                             ; preds = %3638
  %3642 = load i8, ptr %16, align 1, !tbaa !5, !range !35, !noundef !36
  %3643 = trunc i8 %3642 to i1
  br i1 %3643, label %3649, label %3644

3644:                                             ; preds = %3641
  %3645 = load double, ptr %76, align 8, !tbaa !13
  %3646 = load double, ptr %117, align 8, !tbaa !13
  %3647 = fdiv double %3645, %3646
  %3648 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %3647, double noundef 0x3D95FD7FE1796496)
  br label %3649

3649:                                             ; preds = %3644, %3641
  %3650 = phi i1 [ true, %3641 ], [ %3648, %3644 ]
  %3651 = zext i1 %3650 to i8
  store i8 %3651, ptr %16, align 1, !tbaa !5
  br label %3652

3652:                                             ; preds = %3649, %3638
  br label %3653

3653:                                             ; preds = %3652
  %3654 = load i64, ptr %25, align 8, !tbaa !11
  %3655 = add nsw i64 %3654, 1
  store i64 %3655, ptr %25, align 8, !tbaa !11
  br label %3541, !llvm.loop !76

3656:                                             ; preds = %3541
  br label %3657

3657:                                             ; preds = %3656
  %3658 = load i64, ptr %23, align 8, !tbaa !11
  %3659 = add nsw i64 %3658, 1
  store i64 %3659, ptr %23, align 8, !tbaa !11
  br label %3536, !llvm.loop !77

3660:                                             ; preds = %3536
  br label %3661

3661:                                             ; preds = %3660
  %3662 = load i64, ptr %74, align 8, !tbaa !11
  %3663 = add nsw i64 %3662, 1
  store i64 %3663, ptr %74, align 8, !tbaa !11
  br label %3532, !llvm.loop !78

3664:                                             ; preds = %3532
  br label %3665

3665:                                             ; preds = %3664
  %3666 = load i64, ptr %75, align 8, !tbaa !11
  %3667 = add nsw i64 %3666, 1
  store i64 %3667, ptr %75, align 8, !tbaa !11
  br label %3528, !llvm.loop !79

3668:                                             ; preds = %3528
  br label %3669

3669:                                             ; preds = %3668
  %3670 = load i64, ptr %71, align 8, !tbaa !11
  %3671 = add nsw i64 %3670, 1
  store i64 %3671, ptr %71, align 8, !tbaa !11
  br label %3389, !llvm.loop !80

3672:                                             ; preds = %3389
  br label %3673

3673:                                             ; preds = %3672
  %3674 = load i64, ptr %72, align 8, !tbaa !11
  %3675 = add nsw i64 %3674, 1
  store i64 %3675, ptr %72, align 8, !tbaa !11
  br label %3385, !llvm.loop !81

3676:                                             ; preds = %3385
  %3677 = load ptr, ptr %4, align 8, !tbaa !9
  %3678 = call noundef zeroext i1 @_ZL31testspline2dunit_testspline2dvfbPN11alglib_impl8ae_stateE(i1 noundef zeroext true, ptr noundef %3677)
  %3679 = zext i1 %3678 to i8
  store i8 %3679, ptr %17, align 1, !tbaa !5
  %3680 = load i8, ptr %7, align 1, !tbaa !5, !range !35, !noundef !36
  %3681 = trunc i8 %3680 to i1
  br i1 %3681, label %3727, label %3682

3682:                                             ; preds = %3676
  %3683 = load i8, ptr %8, align 1, !tbaa !5, !range !35, !noundef !36
  %3684 = trunc i8 %3683 to i1
  br i1 %3684, label %3727, label %3685

3685:                                             ; preds = %3682
  %3686 = load i8, ptr %9, align 1, !tbaa !5, !range !35, !noundef !36
  %3687 = trunc i8 %3686 to i1
  br i1 %3687, label %3727, label %3688

3688:                                             ; preds = %3685
  %3689 = load i8, ptr %10, align 1, !tbaa !5, !range !35, !noundef !36
  %3690 = trunc i8 %3689 to i1
  br i1 %3690, label %3727, label %3691

3691:                                             ; preds = %3688
  %3692 = load i8, ptr %11, align 1, !tbaa !5, !range !35, !noundef !36
  %3693 = trunc i8 %3692 to i1
  br i1 %3693, label %3727, label %3694

3694:                                             ; preds = %3691
  %3695 = load i8, ptr %12, align 1, !tbaa !5, !range !35, !noundef !36
  %3696 = trunc i8 %3695 to i1
  br i1 %3696, label %3727, label %3697

3697:                                             ; preds = %3694
  %3698 = load i8, ptr %13, align 1, !tbaa !5, !range !35, !noundef !36
  %3699 = trunc i8 %3698 to i1
  br i1 %3699, label %3727, label %3700

3700:                                             ; preds = %3697
  %3701 = load i8, ptr %14, align 1, !tbaa !5, !range !35, !noundef !36
  %3702 = trunc i8 %3701 to i1
  br i1 %3702, label %3727, label %3703

3703:                                             ; preds = %3700
  %3704 = load i8, ptr %15, align 1, !tbaa !5, !range !35, !noundef !36
  %3705 = trunc i8 %3704 to i1
  br i1 %3705, label %3727, label %3706

3706:                                             ; preds = %3703
  %3707 = load i8, ptr %16, align 1, !tbaa !5, !range !35, !noundef !36
  %3708 = trunc i8 %3707 to i1
  br i1 %3708, label %3727, label %3709

3709:                                             ; preds = %3706
  %3710 = load i8, ptr %17, align 1, !tbaa !5, !range !35, !noundef !36
  %3711 = trunc i8 %3710 to i1
  br i1 %3711, label %3727, label %3712

3712:                                             ; preds = %3709
  %3713 = load i8, ptr %18, align 1, !tbaa !5, !range !35, !noundef !36
  %3714 = trunc i8 %3713 to i1
  br i1 %3714, label %3727, label %3715

3715:                                             ; preds = %3712
  %3716 = load i8, ptr %22, align 1, !tbaa !5, !range !35, !noundef !36
  %3717 = trunc i8 %3716 to i1
  br i1 %3717, label %3727, label %3718

3718:                                             ; preds = %3715
  %3719 = load i8, ptr %21, align 1, !tbaa !5, !range !35, !noundef !36
  %3720 = trunc i8 %3719 to i1
  br i1 %3720, label %3727, label %3721

3721:                                             ; preds = %3718
  %3722 = load i8, ptr %20, align 1, !tbaa !5, !range !35, !noundef !36
  %3723 = trunc i8 %3722 to i1
  br i1 %3723, label %3727, label %3724

3724:                                             ; preds = %3721
  %3725 = load i8, ptr %19, align 1, !tbaa !5, !range !35, !noundef !36
  %3726 = trunc i8 %3725 to i1
  br label %3727

3727:                                             ; preds = %3724, %3721, %3718, %3715, %3712, %3709, %3706, %3703, %3700, %3697, %3694, %3691, %3688, %3685, %3682, %3676
  %3728 = phi i1 [ true, %3721 ], [ true, %3718 ], [ true, %3715 ], [ true, %3712 ], [ true, %3709 ], [ true, %3706 ], [ true, %3703 ], [ true, %3700 ], [ true, %3697 ], [ true, %3694 ], [ true, %3691 ], [ true, %3688 ], [ true, %3685 ], [ true, %3682 ], [ true, %3676 ], [ %3726, %3724 ]
  %3729 = zext i1 %3728 to i8
  store i8 %3729, ptr %6, align 1, !tbaa !5
  %3730 = load i8, ptr %3, align 1, !tbaa !5, !range !35, !noundef !36
  %3731 = trunc i8 %3730 to i1
  br i1 %3731, label %3873, label %3732

3732:                                             ; preds = %3727
  %3733 = call i32 (ptr, ...) @printf(ptr noundef @.str.887)
  %3734 = call i32 (ptr, ...) @printf(ptr noundef @.str.800)
  %3735 = call i32 (ptr, ...) @printf(ptr noundef @.str.888)
  %3736 = load i8, ptr %7, align 1, !tbaa !5, !range !35, !noundef !36
  %3737 = trunc i8 %3736 to i1
  br i1 %3737, label %3738, label %3740

3738:                                             ; preds = %3732
  %3739 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %3742

3740:                                             ; preds = %3732
  %3741 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %3742

3742:                                             ; preds = %3740, %3738
  %3743 = call i32 (ptr, ...) @printf(ptr noundef @.str.889)
  %3744 = load i8, ptr %8, align 1, !tbaa !5, !range !35, !noundef !36
  %3745 = trunc i8 %3744 to i1
  br i1 %3745, label %3746, label %3748

3746:                                             ; preds = %3742
  %3747 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %3750

3748:                                             ; preds = %3742
  %3749 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %3750

3750:                                             ; preds = %3748, %3746
  %3751 = call i32 (ptr, ...) @printf(ptr noundef @.str.890)
  %3752 = load i8, ptr %9, align 1, !tbaa !5, !range !35, !noundef !36
  %3753 = trunc i8 %3752 to i1
  br i1 %3753, label %3754, label %3756

3754:                                             ; preds = %3750
  %3755 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %3758

3756:                                             ; preds = %3750
  %3757 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %3758

3758:                                             ; preds = %3756, %3754
  %3759 = call i32 (ptr, ...) @printf(ptr noundef @.str.891)
  %3760 = load i8, ptr %10, align 1, !tbaa !5, !range !35, !noundef !36
  %3761 = trunc i8 %3760 to i1
  br i1 %3761, label %3762, label %3764

3762:                                             ; preds = %3758
  %3763 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %3766

3764:                                             ; preds = %3758
  %3765 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %3766

3766:                                             ; preds = %3764, %3762
  %3767 = call i32 (ptr, ...) @printf(ptr noundef @.str.892)
  %3768 = load i8, ptr %11, align 1, !tbaa !5, !range !35, !noundef !36
  %3769 = trunc i8 %3768 to i1
  br i1 %3769, label %3770, label %3772

3770:                                             ; preds = %3766
  %3771 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %3774

3772:                                             ; preds = %3766
  %3773 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %3774

3774:                                             ; preds = %3772, %3770
  %3775 = call i32 (ptr, ...) @printf(ptr noundef @.str.893)
  %3776 = load i8, ptr %12, align 1, !tbaa !5, !range !35, !noundef !36
  %3777 = trunc i8 %3776 to i1
  br i1 %3777, label %3778, label %3780

3778:                                             ; preds = %3774
  %3779 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %3782

3780:                                             ; preds = %3774
  %3781 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %3782

3782:                                             ; preds = %3780, %3778
  %3783 = call i32 (ptr, ...) @printf(ptr noundef @.str.894)
  %3784 = load i8, ptr %13, align 1, !tbaa !5, !range !35, !noundef !36
  %3785 = trunc i8 %3784 to i1
  br i1 %3785, label %3786, label %3788

3786:                                             ; preds = %3782
  %3787 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %3790

3788:                                             ; preds = %3782
  %3789 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %3790

3790:                                             ; preds = %3788, %3786
  %3791 = call i32 (ptr, ...) @printf(ptr noundef @.str.895)
  %3792 = load i8, ptr %14, align 1, !tbaa !5, !range !35, !noundef !36
  %3793 = trunc i8 %3792 to i1
  br i1 %3793, label %3794, label %3796

3794:                                             ; preds = %3790
  %3795 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %3798

3796:                                             ; preds = %3790
  %3797 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %3798

3798:                                             ; preds = %3796, %3794
  %3799 = call i32 (ptr, ...) @printf(ptr noundef @.str.896)
  %3800 = load i8, ptr %17, align 1, !tbaa !5, !range !35, !noundef !36
  %3801 = trunc i8 %3800 to i1
  br i1 %3801, label %3802, label %3804

3802:                                             ; preds = %3798
  %3803 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %3806

3804:                                             ; preds = %3798
  %3805 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %3806

3806:                                             ; preds = %3804, %3802
  %3807 = call i32 (ptr, ...) @printf(ptr noundef @.str.897)
  %3808 = load i8, ptr %18, align 1, !tbaa !5, !range !35, !noundef !36
  %3809 = trunc i8 %3808 to i1
  br i1 %3809, label %3810, label %3812

3810:                                             ; preds = %3806
  %3811 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %3814

3812:                                             ; preds = %3806
  %3813 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %3814

3814:                                             ; preds = %3812, %3810
  %3815 = call i32 (ptr, ...) @printf(ptr noundef @.str.898)
  %3816 = call i32 (ptr, ...) @printf(ptr noundef @.str.899)
  %3817 = load i8, ptr %22, align 1, !tbaa !5, !range !35, !noundef !36
  %3818 = trunc i8 %3817 to i1
  br i1 %3818, label %3819, label %3821

3819:                                             ; preds = %3814
  %3820 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %3823

3821:                                             ; preds = %3814
  %3822 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %3823

3823:                                             ; preds = %3821, %3819
  %3824 = call i32 (ptr, ...) @printf(ptr noundef @.str.900)
  %3825 = load i8, ptr %21, align 1, !tbaa !5, !range !35, !noundef !36
  %3826 = trunc i8 %3825 to i1
  br i1 %3826, label %3827, label %3829

3827:                                             ; preds = %3823
  %3828 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %3831

3829:                                             ; preds = %3823
  %3830 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %3831

3831:                                             ; preds = %3829, %3827
  %3832 = call i32 (ptr, ...) @printf(ptr noundef @.str.901)
  %3833 = load i8, ptr %20, align 1, !tbaa !5, !range !35, !noundef !36
  %3834 = trunc i8 %3833 to i1
  br i1 %3834, label %3835, label %3837

3835:                                             ; preds = %3831
  %3836 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %3839

3837:                                             ; preds = %3831
  %3838 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %3839

3839:                                             ; preds = %3837, %3835
  %3840 = call i32 (ptr, ...) @printf(ptr noundef @.str.902)
  %3841 = load i8, ptr %19, align 1, !tbaa !5, !range !35, !noundef !36
  %3842 = trunc i8 %3841 to i1
  br i1 %3842, label %3843, label %3845

3843:                                             ; preds = %3839
  %3844 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %3847

3845:                                             ; preds = %3839
  %3846 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %3847

3847:                                             ; preds = %3845, %3843
  %3848 = call i32 (ptr, ...) @printf(ptr noundef @.str.903)
  %3849 = call i32 (ptr, ...) @printf(ptr noundef @.str.888)
  %3850 = load i8, ptr %15, align 1, !tbaa !5, !range !35, !noundef !36
  %3851 = trunc i8 %3850 to i1
  br i1 %3851, label %3852, label %3854

3852:                                             ; preds = %3847
  %3853 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %3856

3854:                                             ; preds = %3847
  %3855 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %3856

3856:                                             ; preds = %3854, %3852
  %3857 = call i32 (ptr, ...) @printf(ptr noundef @.str.889)
  %3858 = load i8, ptr %16, align 1, !tbaa !5, !range !35, !noundef !36
  %3859 = trunc i8 %3858 to i1
  br i1 %3859, label %3860, label %3862

3860:                                             ; preds = %3856
  %3861 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %3864

3862:                                             ; preds = %3856
  %3863 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %3864

3864:                                             ; preds = %3862, %3860
  %3865 = load i8, ptr %6, align 1, !tbaa !5, !range !35, !noundef !36
  %3866 = trunc i8 %3865 to i1
  br i1 %3866, label %3867, label %3869

3867:                                             ; preds = %3864
  %3868 = call i32 (ptr, ...) @printf(ptr noundef @.str.15)
  br label %3871

3869:                                             ; preds = %3864
  %3870 = call i32 (ptr, ...) @printf(ptr noundef @.str.16)
  br label %3871

3871:                                             ; preds = %3869, %3867
  %3872 = call i32 (ptr, ...) @printf(ptr noundef @.str.17)
  br label %3873

3873:                                             ; preds = %3871, %3727
  %3874 = load i8, ptr %6, align 1, !tbaa !5, !range !35, !noundef !36
  %3875 = trunc i8 %3874 to i1
  %3876 = xor i1 %3875, true
  %3877 = zext i1 %3876 to i8
  store i8 %3877, ptr %123, align 1, !tbaa !5
  %3878 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %3878)
  %3879 = load i8, ptr %123, align 1, !tbaa !5, !range !35, !noundef !36
  %3880 = trunc i8 %3879 to i1
  call void @llvm.lifetime.end.p0(i64 1, ptr %123) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %122) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %121) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %120) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 80, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 80, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 80, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 360, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 360, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 8, 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 1, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #5
  ret i1 %3880
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

%"struct.alglib_impl::ae_frame" = type { %"struct.alglib_impl::ae_dyn_block" }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%"struct.alglib_impl::ae_vector" = type { i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon }
%union.anon = type { ptr }
%"struct.alglib_impl::spline2dinterpolant" = type { i64, i8, i64, i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::ae_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%union.anon.0 = type { ptr }
%"struct.alglib_impl::hqrndstate" = type { i64, i64, i64 }
%"struct.alglib_impl::ae_serializer" = type { i64, i64, i64, i64, i64, ptr, ptr, ptr, i64, ptr, ptr }

@.str.2 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.800 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.830 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.831 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.832 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.833 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.834 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.835 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.836 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.837 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.838 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.839 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.840 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.841 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.842 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.843 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.844 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.845 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.846 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.847 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.848 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.849 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.850 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.851 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.852 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.853 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.854 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.855 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.856 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.857 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.858 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.859 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.860 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.861 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.862 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.863 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.864 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.865 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.866 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.867 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.868 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.869 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.870 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.871 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.872 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.873 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.874 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.875 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.876 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.877 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.878 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.879 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.880 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.881 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.882 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.883 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.884 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.885 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.886 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.887 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.888 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.889 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.890 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.891 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.892 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.893 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.894 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.895 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.896 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.897 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.898 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.899 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.900 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.901 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.902 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.903 = external hidden unnamed_addr constant [13 x i8], align 1

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

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) 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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN11alglib_impl14hqrndrandomizeEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef, ptr noundef) local_unnamed_addr #3

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

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

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

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) local_unnamed_addr #3

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

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

declare void @_ZN11alglib_impl18ae_serializer_initEPNS_13ae_serializerE(ptr noundef) local_unnamed_addr #3

declare void @_ZN11alglib_impl25ae_serializer_alloc_startEPNS_13ae_serializerE(ptr noundef) local_unnamed_addr #3

declare noundef i64 @_ZN11alglib_impl28ae_serializer_get_alloc_sizeEPNS_13ae_serializerE(ptr noundef) local_unnamed_addr #3

declare void @_ZN11alglib_impl10ae_db_initEPNS_12ae_dyn_blockElPNS_8ae_stateEb(ptr noundef, i64 noundef, ptr noundef, i1 noundef zeroext) local_unnamed_addr #3

declare void @_ZN11alglib_impl24ae_serializer_sstart_strEPNS_13ae_serializerEPc(ptr noundef, ptr noundef) local_unnamed_addr #3

declare void @_ZN11alglib_impl18ae_serializer_stopEPNS_13ae_serializerEPNS_8ae_stateE(ptr noundef, ptr noundef) local_unnamed_addr #3

declare void @_ZN11alglib_impl19ae_serializer_clearEPNS_13ae_serializerE(ptr noundef) local_unnamed_addr #3

declare void @_ZN11alglib_impl24ae_serializer_ustart_strEPNS_13ae_serializerEPKc(ptr noundef, ptr noundef) local_unnamed_addr #3

declare noundef double @_ZN11alglib_impl6rcase2EbddPNS_8ae_stateE(i1 noundef zeroext, double noundef, double noundef, ptr noundef) local_unnamed_addr #3

declare noundef i64 @_ZN11alglib_impl6icase2EbllPNS_8ae_stateE(i1 noundef zeroext, i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #3

declare noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef, double noundef, double noundef, ptr noundef) local_unnamed_addr #3

declare noundef double @_ZN11alglib_impl6ae_cosEdPNS_8ae_stateE(double noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z12testspline2dbPN11alglib_impl8ae_stateE(i1 noundef zeroext %0, ptr noundef %1) local_unnamed_addr #5 {
  %3 = alloca %"struct.alglib_impl::ae_frame", align 8
  %4 = alloca i8, align 1
  %5 = alloca i8, align 1
  %6 = alloca i8, align 1
  %7 = alloca i8, align 1
  %8 = alloca i8, align 1
  %9 = alloca i8, align 1
  %10 = alloca i8, align 1
  %11 = alloca i8, align 1
  %12 = alloca i8, align 1
  %13 = alloca i8, align 1
  %14 = alloca i8, align 1
  %15 = alloca %"struct.alglib_impl::ae_vector", align 8
  %16 = alloca %"struct.alglib_impl::ae_vector", align 8
  %17 = alloca %"struct.alglib_impl::spline2dinterpolant", align 8
  %18 = alloca %"struct.alglib_impl::spline2dinterpolant", align 8
  %19 = alloca %"struct.alglib_impl::ae_vector", align 8
  %20 = alloca %"struct.alglib_impl::ae_vector", align 8
  %21 = alloca %"struct.alglib_impl::ae_vector", align 8
  %22 = alloca %"struct.alglib_impl::ae_vector", align 8
  %23 = alloca %"struct.alglib_impl::ae_vector", align 8
  %24 = alloca %"struct.alglib_impl::ae_vector", align 8
  %25 = alloca %"struct.alglib_impl::ae_vector", align 8
  %26 = alloca %"struct.alglib_impl::ae_vector", align 8
  %27 = alloca %"struct.alglib_impl::ae_vector", align 8
  %28 = alloca %"struct.alglib_impl::ae_vector", align 8
  %29 = alloca %"struct.alglib_impl::ae_vector", align 8
  %30 = alloca %"struct.alglib_impl::ae_vector", align 8
  %31 = alloca %"struct.alglib_impl::ae_vector", align 8
  %32 = alloca %"struct.alglib_impl::ae_vector", align 8
  %33 = alloca %"struct.alglib_impl::ae_vector", align 8
  %34 = alloca %"struct.alglib_impl::ae_vector", align 8
  %35 = alloca %"struct.alglib_impl::ae_vector", align 8
  %36 = alloca %"struct.alglib_impl::ae_vector", align 8
  %37 = alloca %"struct.alglib_impl::ae_vector", align 8
  %38 = alloca %"struct.alglib_impl::ae_vector", align 8
  %39 = alloca %"struct.alglib_impl::ae_vector", align 8
  %40 = alloca %"struct.alglib_impl::ae_vector", align 8
  %41 = alloca %"struct.alglib_impl::ae_vector", align 8
  %42 = alloca %"struct.alglib_impl::ae_vector", align 8
  %43 = alloca %"struct.alglib_impl::ae_vector", align 8
  %44 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %45 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %46 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %47 = alloca double, align 8
  %48 = alloca double, align 8
  %49 = alloca double, align 8
  %50 = alloca double, align 8
  %51 = alloca double, align 8
  %52 = alloca double, align 8
  %53 = alloca double, align 8
  %54 = alloca double, align 8
  %55 = alloca double, align 8
  %56 = alloca double, align 8
  %57 = alloca double, align 8
  %58 = alloca double, align 8
  %59 = alloca double, align 8
  %60 = alloca double, align 8
  %61 = alloca double, align 8
  %62 = alloca double, align 8
  %63 = alloca double, align 8
  %64 = alloca double, align 8
  %65 = alloca double, align 8
  %66 = alloca double, align 8
  %67 = alloca double, align 8
  %68 = alloca double, align 8
  %69 = alloca double, align 8
  %70 = alloca double, align 8
  %71 = alloca double, align 8
  %72 = alloca double, align 8
  %73 = alloca double, align 8
  %74 = alloca double, align 8
  %75 = alloca double, align 8
  %76 = alloca double, align 8
  %77 = alloca double, align 8
  %78 = alloca double, align 8
  %79 = alloca %"struct.alglib_impl::ae_vector", align 8
  %80 = alloca %"struct.alglib_impl::ae_vector", align 8
  %81 = alloca %"struct.alglib_impl::hqrndstate", align 8
  %82 = alloca %"struct.alglib_impl::ae_serializer", align 8
  %83 = alloca %"struct.alglib_impl::ae_frame", align 8
  %84 = alloca %"struct.alglib_impl::ae_dyn_block", align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %15) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %16) #6
  call void @llvm.lifetime.start.p0(i64 360, ptr nonnull %17) #6
  call void @llvm.lifetime.start.p0(i64 360, ptr nonnull %18) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %19) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %21) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %25) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %27) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %28) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %31) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %32) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %33) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %34) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %35) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %36) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %37) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %38) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %39) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %40) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %41) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %42) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %43) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %44) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %45) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %46) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %53) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %55) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %56) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %57) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %58) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %59) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %60) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %61) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %62) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %63) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %64) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %65) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %66) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %67) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %68) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %69) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %70) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %71) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %72) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %73) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %74) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %75) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %76) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %77) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %78) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %79) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %80) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %81) #6
  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) %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(360) %17, i8 0, i64 360, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(360) %18, i8 0, i64 360, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %19, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %20, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %21, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %22, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %23, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %24, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %25, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %26, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %27, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %28, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %29, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %30, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %31, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %32, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %33, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %34, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %35, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %36, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %37, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %38, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %39, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %40, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %41, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %42, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %43, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %44, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %45, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %46, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %79, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %80, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %81, i8 0, i64 24, i1 false)
  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_impl25_spline2dinterpolant_initEPvPNS_8ae_stateEb(ptr noundef nonnull %17, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl25_spline2dinterpolant_initEPvPNS_8ae_stateEb(ptr noundef nonnull %18, 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 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %20, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %21, 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 %22, 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 %23, 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 %24, 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 %25, 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 %26, 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 %27, 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 %28, 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 %29, 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 %30, 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 %31, 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 %32, 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 %33, 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 %34, 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 %35, 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 %36, 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 %37, 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 %38, 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 %39, 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 %40, 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 %41, 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 %42, 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 %43, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %44, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %45, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %46, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %79, 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 %80, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl16_hqrndstate_initEPvPNS_8ae_stateEb(ptr noundef nonnull %81, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14hqrndrandomizeEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %81, ptr noundef %1)
  store i8 0, ptr %4, align 1, !tbaa !5
  store i8 0, ptr %5, align 1, !tbaa !5
  store i8 0, ptr %6, align 1, !tbaa !5
  store i8 0, ptr %7, align 1, !tbaa !5
  store i8 0, ptr %8, align 1, !tbaa !5
  store i8 0, ptr %9, align 1, !tbaa !5
  store i8 0, ptr %11, align 1, !tbaa !5
  store i8 0, ptr %12, align 1, !tbaa !5
  store i8 0, ptr %14, align 1, !tbaa !5
  store i8 0, ptr %13, align 1, !tbaa !5
  call void @_ZL24testspline2dunit_testnanPbPN11alglib_impl8ae_stateE(ptr noundef nonnull %10, ptr noundef %1)
  call void @_ZL41testspline2dunit_testfittingfastddmsolverPbPN11alglib_impl8ae_stateE(ptr noundef nonnull %11, ptr noundef %1)
  call void @_ZL33testspline2dunit_testfittingpriorPbPN11alglib_impl8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  call void @_ZL39testspline2dunit_testfittingblocksolverPbPN11alglib_impl8ae_stateE(ptr noundef nonnull %12, ptr noundef %1)
  call void @_ZL35testspline2dunit_testfittingpenaltyPbPN11alglib_impl8ae_stateE(ptr noundef nonnull %13, ptr noundef %1)
  %85 = getelementptr inbounds i8, ptr %15, i64 56
  %86 = getelementptr inbounds i8, ptr %19, i64 56
  %87 = getelementptr inbounds i8, ptr %16, i64 56
  %88 = getelementptr inbounds i8, ptr %20, i64 56
  %89 = getelementptr inbounds i8, ptr %44, i64 72
  %90 = getelementptr inbounds i8, ptr %21, i64 56
  %91 = getelementptr inbounds i8, ptr %24, i64 56
  %92 = getelementptr inbounds i8, ptr %26, i64 56
  %93 = getelementptr inbounds i8, ptr %28, i64 56
  %94 = getelementptr inbounds i8, ptr %22, i64 56
  %95 = getelementptr inbounds i8, ptr %25, i64 56
  %96 = getelementptr inbounds i8, ptr %27, i64 56
  %97 = getelementptr inbounds i8, ptr %29, i64 56
  %98 = getelementptr inbounds i8, ptr %35, i64 56
  %99 = getelementptr inbounds i8, ptr %36, i64 56
  %100 = getelementptr inbounds i8, ptr %30, i64 56
  %101 = getelementptr inbounds i8, ptr %31, i64 56
  %102 = getelementptr inbounds i8, ptr %37, i64 56
  %103 = getelementptr inbounds i8, ptr %38, i64 56
  %104 = getelementptr inbounds i8, ptr %32, i64 56
  %105 = getelementptr inbounds i8, ptr %33, i64 56
  %106 = getelementptr inbounds i8, ptr %39, i64 56
  %107 = getelementptr inbounds i8, ptr %34, i64 56
  %108 = getelementptr inbounds i8, ptr %79, i64 56
  %109 = getelementptr inbounds i8, ptr %80, i64 56
  %110 = getelementptr inbounds i8, ptr %84, i64 16
  %111 = getelementptr inbounds i8, ptr %46, i64 72
  %112 = getelementptr inbounds i8, ptr %23, i64 56
  %113 = getelementptr inbounds i8, ptr %40, i64 56
  br label %.preheader1473

.preheader1473:                                   ; preds = %2, %1791
  %indvars.iv = phi i64 [ 1, %2 ], [ %indvars.iv.next, %1791 ]
  %.01590 = phi i1 [ false, %2 ], [ %575, %1791 ]
  %.012761589 = phi i1 [ false, %2 ], [ %1575, %1791 ]
  %.013151588 = phi i64 [ 2, %2 ], [ %1792, %1791 ]
  %114 = shl nuw nsw i64 %.013151588, 1
  %115 = add nsw i64 %114, -1
  %116 = add nsw i64 %.013151588, -1
  %117 = uitofp nneg i64 %114 to double
  %118 = add nsw i64 %.013151588, -2
  %119 = fdiv double 0x400921FB54442D18, %117
  %exitcond1701.not.1 = icmp eq i64 %.013151588, 2
  %exitcond1701.not.2 = icmp eq i64 %.013151588, 3
  %exitcond1701.not.3 = icmp eq i64 %.013151588, 4
  %exitcond1701.not.4 = icmp eq i64 %.013151588, 5
  %exitcond1701.not.5 = icmp eq i64 %.013151588, 6
  br label %121

.preheader1446:                                   ; preds = %1791
  %120 = getelementptr inbounds i8, ptr %45, i64 72
  br label %.preheader1445

121:                                              ; preds = %.preheader1473, %1789
  %indvars.iv1677 = phi i64 [ 1, %.preheader1473 ], [ %indvars.iv.next1678, %1789 ]
  %.11587 = phi i1 [ %.01590, %.preheader1473 ], [ %575, %1789 ]
  %.112771586 = phi i1 [ %.012761589, %.preheader1473 ], [ %1575, %1789 ]
  %.013131585 = phi i64 [ 2, %.preheader1473 ], [ %1790, %1789 ]
  %122 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 2, ptr noundef %1)
  %123 = add i64 %122, 2
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %15, i64 noundef %.013151588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %16, i64 noundef %.013131585, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %19, i64 noundef %115, ptr noundef %1)
  %124 = shl nuw nsw i64 %.013131585, 1
  %125 = add nsw i64 %124, -1
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %20, i64 noundef %125, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %44, i64 noundef %.013131585, i64 noundef %.013151588, ptr noundef %1)
  %126 = mul nuw nsw i64 %.013131585, %.013151588
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %21, i64 noundef %126, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %24, i64 noundef %126, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %26, i64 noundef %126, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %28, i64 noundef %126, ptr noundef %1)
  %127 = mul nsw i64 %123, %126
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %22, i64 noundef %127, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %25, i64 noundef %127, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %27, i64 noundef %127, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %29, i64 noundef %127, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %46, i64 noundef %.013151588, i64 noundef %.013131585, ptr noundef %1)
  %128 = add nsw i64 %.013131585, -1
  %129 = uitofp nneg i64 %124 to double
  %.not14271482 = icmp slt i64 %122, -1
  %130 = mul nsw i64 %123, %.013151588
  %131 = mul nsw i64 %123, %.013131585
  %132 = shl nsw i64 %123, 2
  %133 = add nsw i64 %.013131585, -2
  %134 = fdiv double 0x400921FB54442D18, %129
  %exitcond1651.peel = icmp eq i64 %123, 1
  %exitcond1656.peel = icmp eq i64 %123, 1
  %exitcond1661.peel = icmp eq i64 %123, 1
  %135 = shl nsw i64 %123, 1
  %exitcond1661.peel.11666 = icmp eq i64 %123, 1
  %136 = mul nsw i64 %123, 3
  %.idx = shl nsw i64 %.013131585, 4
  %.idx1801 = mul i64 %.013131585, 24
  %.idx1802 = shl nsw i64 %.013131585, 5
  %.idx1803 = mul i64 %.013131585, 40
  %.idx1804 = mul i64 %.013131585, 48
  br label %.peel.next

.peel.next:                                       ; preds = %121, %1787
  %.21584 = phi i1 [ %.11587, %121 ], [ %575, %1787 ]
  %.212781583 = phi i1 [ %.112771586, %121 ], [ %1575, %1787 ]
  %.012921582 = phi i64 [ 1, %121 ], [ %1788, %1787 ]
  %137 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %138 = fsub double -1.000000e+00, %137
  %139 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %140 = fadd double %139, 1.000000e+00
  %141 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %142 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %143 = fadd double %138, %140
  %144 = fsub double %140, %138
  %145 = fmul double %144, -5.000000e-01
  %146 = call noundef double @_ZN11alglib_impl6ae_cosEdPNS_8ae_stateE(double noundef %119, ptr noundef %1)
  %147 = fmul double %145, %146
  %148 = call double @llvm.fmuladd.f64(double %143, double 5.000000e-01, double %147)
  %149 = load ptr, ptr %85, align 8, !tbaa !9
  store double %148, ptr %149, align 8, !tbaa !10
  %150 = load ptr, ptr %85, align 8, !tbaa !9
  store double %138, ptr %150, align 8, !tbaa !10
  %.pre1722 = load ptr, ptr %86, align 8, !tbaa !9
  %.pre = load ptr, ptr %85, align 8, !tbaa !9
  %.pre1721 = load double, ptr %.pre, align 8, !tbaa !10
  store double %.pre1721, ptr %.pre1722, align 8, !tbaa !10
  br label %151

151:                                              ; preds = %165, %.peel.next
  %.013211476 = phi i64 [ 1, %.peel.next ], [ %181, %165 ]
  %152 = shl nuw nsw i64 %.013211476, 1
  %153 = or disjoint i64 %152, 1
  %154 = uitofp nneg i64 %153 to double
  %155 = fmul double %154, 0x400921FB54442D18
  %156 = fdiv double %155, %117
  %157 = call noundef double @_ZN11alglib_impl6ae_cosEdPNS_8ae_stateE(double noundef %156, ptr noundef %1)
  %158 = fmul double %145, %157
  %159 = call double @llvm.fmuladd.f64(double %143, double 5.000000e-01, double %158)
  %160 = load ptr, ptr %85, align 8, !tbaa !9
  %161 = getelementptr inbounds double, ptr %160, i64 %.013211476
  store double %159, ptr %161, align 8, !tbaa !10
  %.pre1725.pre = load ptr, ptr %85, align 8, !tbaa !9
  %162 = icmp eq i64 %.013211476, %116
  br i1 %162, label %163, label %165

163:                                              ; preds = %151
  %164 = getelementptr inbounds double, ptr %.pre1725.pre, i64 %116
  store double %140, ptr %164, align 8, !tbaa !10
  %.pre1724 = load ptr, ptr %85, align 8, !tbaa !9
  br label %165

165:                                              ; preds = %163, %151
  %166 = phi ptr [ %.pre1724, %163 ], [ %.pre1725.pre, %151 ]
  %167 = getelementptr inbounds double, ptr %166, i64 %.013211476
  %168 = load double, ptr %167, align 8, !tbaa !10
  %169 = load ptr, ptr %86, align 8, !tbaa !9
  %170 = getelementptr inbounds double, ptr %169, i64 %152
  store double %168, ptr %170, align 8, !tbaa !10
  %171 = load ptr, ptr %85, align 8, !tbaa !9
  %172 = getelementptr inbounds double, ptr %171, i64 %.013211476
  %173 = load double, ptr %172, align 8, !tbaa !10
  %174 = getelementptr i8, ptr %172, i64 -8
  %175 = load double, ptr %174, align 8, !tbaa !10
  %176 = fadd double %173, %175
  %177 = fmul double %176, 5.000000e-01
  %178 = load ptr, ptr %86, align 8, !tbaa !9
  %179 = getelementptr double, ptr %178, i64 %152
  %180 = getelementptr i8, ptr %179, i64 -8
  store double %177, ptr %180, align 8, !tbaa !10
  %181 = add nuw nsw i64 %.013211476, 1
  %exitcond.not = icmp eq i64 %181, %.013151588
  br i1 %exitcond.not, label %.loopexit1638, label %151, !llvm.loop !12

.loopexit1638:                                    ; preds = %165
  %182 = fsub double -1.000000e+00, %141
  call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.013151588, ptr noundef nonnull %15, ptr noundef nonnull %79, ptr noundef %1)
  br label %192

.peel.next1642:                                   ; preds = %202
  %183 = fadd double %142, 1.000000e+00
  %184 = fadd double %182, %183
  %185 = fsub double %183, %182
  %186 = fmul double %185, -5.000000e-01
  %187 = call noundef double @_ZN11alglib_impl6ae_cosEdPNS_8ae_stateE(double noundef %134, ptr noundef %1)
  %188 = fmul double %186, %187
  %189 = call double @llvm.fmuladd.f64(double %184, double 5.000000e-01, double %188)
  %190 = load ptr, ptr %87, align 8, !tbaa !9
  store double %189, ptr %190, align 8, !tbaa !10
  %191 = load ptr, ptr %87, align 8, !tbaa !9
  store double %182, ptr %191, align 8, !tbaa !10
  %.pre1730 = load ptr, ptr %88, align 8, !tbaa !9
  %.pre1727 = load ptr, ptr %87, align 8, !tbaa !9
  %.pre1729 = load double, ptr %.pre1727, align 8, !tbaa !10
  store double %.pre1729, ptr %.pre1730, align 8, !tbaa !10
  br label %204

192:                                              ; preds = %.loopexit1638, %202
  %.113221477 = phi i64 [ 0, %.loopexit1638 ], [ %203, %202 ]
  %193 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef %.013151588, ptr noundef %1)
  %.not1431 = icmp eq i64 %193, %.113221477
  br i1 %.not1431, label %202, label %194

194:                                              ; preds = %192
  %195 = load ptr, ptr %85, align 8, !tbaa !9
  %196 = getelementptr inbounds double, ptr %195, i64 %.113221477
  %197 = load double, ptr %196, align 8, !tbaa !10
  %198 = getelementptr inbounds double, ptr %195, i64 %193
  %199 = load double, ptr %198, align 8, !tbaa !10
  store double %199, ptr %196, align 8, !tbaa !10
  %200 = load ptr, ptr %85, align 8, !tbaa !9
  %201 = getelementptr inbounds double, ptr %200, i64 %193
  store double %197, ptr %201, align 8, !tbaa !10
  br label %202

202:                                              ; preds = %192, %194
  %203 = add nuw nsw i64 %.113221477, 1
  %exitcond1639.not = icmp eq i64 %203, %.013151588
  br i1 %exitcond1639.not, label %.peel.next1642, label %192, !llvm.loop !15

204:                                              ; preds = %218, %.peel.next1642
  %.013391478 = phi i64 [ 1, %.peel.next1642 ], [ %234, %218 ]
  %205 = shl nuw nsw i64 %.013391478, 1
  %206 = or disjoint i64 %205, 1
  %207 = uitofp nneg i64 %206 to double
  %208 = fmul double %207, 0x400921FB54442D18
  %209 = fdiv double %208, %129
  %210 = call noundef double @_ZN11alglib_impl6ae_cosEdPNS_8ae_stateE(double noundef %209, ptr noundef %1)
  %211 = fmul double %186, %210
  %212 = call double @llvm.fmuladd.f64(double %184, double 5.000000e-01, double %211)
  %213 = load ptr, ptr %87, align 8, !tbaa !9
  %214 = getelementptr inbounds double, ptr %213, i64 %.013391478
  store double %212, ptr %214, align 8, !tbaa !10
  %.pre1733.pre = load ptr, ptr %87, align 8, !tbaa !9
  %215 = icmp eq i64 %.013391478, %128
  br i1 %215, label %216, label %218

216:                                              ; preds = %204
  %217 = getelementptr inbounds double, ptr %.pre1733.pre, i64 %128
  store double %183, ptr %217, align 8, !tbaa !10
  %.pre1732 = load ptr, ptr %87, align 8, !tbaa !9
  br label %218

218:                                              ; preds = %216, %204
  %219 = phi ptr [ %.pre1732, %216 ], [ %.pre1733.pre, %204 ]
  %220 = getelementptr inbounds double, ptr %219, i64 %.013391478
  %221 = load double, ptr %220, align 8, !tbaa !10
  %222 = load ptr, ptr %88, align 8, !tbaa !9
  %223 = getelementptr inbounds double, ptr %222, i64 %205
  store double %221, ptr %223, align 8, !tbaa !10
  %224 = load ptr, ptr %87, align 8, !tbaa !9
  %225 = getelementptr inbounds double, ptr %224, i64 %.013391478
  %226 = load double, ptr %225, align 8, !tbaa !10
  %227 = getelementptr i8, ptr %225, i64 -8
  %228 = load double, ptr %227, align 8, !tbaa !10
  %229 = fadd double %226, %228
  %230 = fmul double %229, 5.000000e-01
  %231 = load ptr, ptr %88, align 8, !tbaa !9
  %232 = getelementptr double, ptr %231, i64 %205
  %233 = getelementptr i8, ptr %232, i64 -8
  store double %230, ptr %233, align 8, !tbaa !10
  %234 = add nuw nsw i64 %.013391478, 1
  %exitcond1640.not = icmp eq i64 %234, %.013131585
  br i1 %exitcond1640.not, label %.loopexit1644, label %204, !llvm.loop !16

.loopexit1644:                                    ; preds = %218
  call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.013131585, ptr noundef nonnull %16, ptr noundef nonnull %80, ptr noundef %1)
  br label %235

235:                                              ; preds = %.loopexit1644, %245
  %.113401479 = phi i64 [ 0, %.loopexit1644 ], [ %246, %245 ]
  %236 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef %.013131585, ptr noundef %1)
  %.not1429 = icmp eq i64 %236, %.113401479
  br i1 %.not1429, label %245, label %237

237:                                              ; preds = %235
  %238 = load ptr, ptr %87, align 8, !tbaa !9
  %239 = getelementptr inbounds double, ptr %238, i64 %.113401479
  %240 = load double, ptr %239, align 8, !tbaa !10
  %241 = getelementptr inbounds double, ptr %238, i64 %236
  %242 = load double, ptr %241, align 8, !tbaa !10
  store double %242, ptr %239, align 8, !tbaa !10
  %243 = load ptr, ptr %87, align 8, !tbaa !9
  %244 = getelementptr inbounds double, ptr %243, i64 %236
  store double %240, ptr %244, align 8, !tbaa !10
  br label %245

245:                                              ; preds = %235, %237
  %246 = add nuw nsw i64 %.113401479, 1
  %exitcond1645.not = icmp eq i64 %246, %.013131585
  br i1 %exitcond1645.not, label %.preheader1465, label %235, !llvm.loop !17

.preheader1465:                                   ; preds = %245, %296
  %.213411481 = phi i64 [ %297, %296 ], [ 0, %245 ]
  %247 = mul nuw nsw i64 %.213411481, %.013151588
  br label %248

248:                                              ; preds = %.preheader1465, %248
  %.213231480 = phi i64 [ 0, %.preheader1465 ], [ %295, %248 ]
  %249 = load ptr, ptr %85, align 8, !tbaa !9
  %250 = getelementptr inbounds double, ptr %249, i64 %.213231480
  %251 = load double, ptr %250, align 8, !tbaa !10
  %252 = load ptr, ptr %87, align 8, !tbaa !9
  %253 = getelementptr inbounds double, ptr %252, i64 %.213411481
  %254 = load double, ptr %253, align 8, !tbaa !10
  %255 = call noundef double @_ZL23testspline2dunit_func1vddlPN11alglib_impl8ae_stateE(double noundef %251, double noundef %254, i64 noundef 0, ptr noundef %1)
  %256 = load ptr, ptr %89, align 8, !tbaa !9
  %257 = getelementptr inbounds ptr, ptr %256, i64 %.213411481
  %258 = load ptr, ptr %257, align 8, !tbaa !18
  %259 = getelementptr inbounds double, ptr %258, i64 %.213231480
  store double %255, ptr %259, align 8, !tbaa !10
  %260 = load ptr, ptr %89, align 8, !tbaa !9
  %261 = getelementptr inbounds ptr, ptr %260, i64 %.213411481
  %262 = load ptr, ptr %261, align 8, !tbaa !18
  %263 = getelementptr inbounds double, ptr %262, i64 %.213231480
  %264 = load double, ptr %263, align 8, !tbaa !10
  %265 = load ptr, ptr %90, align 8, !tbaa !9
  %266 = add nuw nsw i64 %.213231480, %247
  %267 = getelementptr inbounds double, ptr %265, i64 %266
  store double %264, ptr %267, align 8, !tbaa !10
  %268 = load ptr, ptr %85, align 8, !tbaa !9
  %269 = getelementptr inbounds double, ptr %268, i64 %.213231480
  %270 = load double, ptr %269, align 8, !tbaa !10
  %271 = load ptr, ptr %87, align 8, !tbaa !9
  %272 = getelementptr inbounds double, ptr %271, i64 %.213411481
  %273 = load double, ptr %272, align 8, !tbaa !10
  %274 = call noundef double @_ZL25testspline2dunit_func1vdxddlPN11alglib_impl8ae_stateE(double noundef %270, double noundef %273, i64 noundef 0, ptr noundef %1)
  %275 = load ptr, ptr %91, align 8, !tbaa !9
  %276 = getelementptr inbounds double, ptr %275, i64 %266
  store double %274, ptr %276, align 8, !tbaa !10
  %277 = load ptr, ptr %85, align 8, !tbaa !9
  %278 = getelementptr inbounds double, ptr %277, i64 %.213231480
  %279 = load double, ptr %278, align 8, !tbaa !10
  %280 = load ptr, ptr %87, align 8, !tbaa !9
  %281 = getelementptr inbounds double, ptr %280, i64 %.213411481
  %282 = load double, ptr %281, align 8, !tbaa !10
  %283 = call noundef double @_ZL25testspline2dunit_func1vdyddlPN11alglib_impl8ae_stateE(double noundef %279, double noundef %282, i64 noundef 0, ptr noundef %1)
  %284 = load ptr, ptr %92, align 8, !tbaa !9
  %285 = getelementptr inbounds double, ptr %284, i64 %266
  store double %283, ptr %285, align 8, !tbaa !10
  %286 = load ptr, ptr %85, align 8, !tbaa !9
  %287 = getelementptr inbounds double, ptr %286, i64 %.213231480
  %288 = load double, ptr %287, align 8, !tbaa !10
  %289 = load ptr, ptr %87, align 8, !tbaa !9
  %290 = getelementptr inbounds double, ptr %289, i64 %.213411481
  %291 = load double, ptr %290, align 8, !tbaa !10
  %292 = call noundef double @_ZL27testspline2dunit_func1vdxdyddlPN11alglib_impl8ae_stateE(double noundef %288, double noundef %291, i64 noundef 0, ptr noundef %1)
  %293 = load ptr, ptr %93, align 8, !tbaa !9
  %294 = getelementptr inbounds double, ptr %293, i64 %266
  store double %292, ptr %294, align 8, !tbaa !10
  %295 = add nuw nsw i64 %.213231480, 1
  %exitcond1646.not = icmp eq i64 %295, %.013151588
  br i1 %exitcond1646.not, label %296, label %248, !llvm.loop !20

296:                                              ; preds = %248
  %297 = add nuw nsw i64 %.213411481, 1
  %exitcond1647.not = icmp eq i64 %297, %.013131585
  br i1 %exitcond1647.not, label %.preheader1464, label %.preheader1465, !llvm.loop !21

.preheader1464:                                   ; preds = %296, %.split.us
  %.313421485 = phi i64 [ %341, %.split.us ], [ 0, %296 ]
  br i1 %.not14271482, label %.split.us, label %.preheader1450

.preheader1450:                                   ; preds = %.preheader1464, %._crit_edge
  %.313241484 = phi i64 [ %340, %._crit_edge ], [ 0, %.preheader1464 ]
  %298 = mul nuw nsw i64 %.313241484, %.013151588
  %299 = add nuw nsw i64 %298, %.313421485
  %300 = mul nsw i64 %299, %123
  br label %301

301:                                              ; preds = %.preheader1450, %301
  %.013171483 = phi i64 [ 0, %.preheader1450 ], [ %339, %301 ]
  %302 = load ptr, ptr %85, align 8, !tbaa !9
  %303 = getelementptr inbounds double, ptr %302, i64 %.313421485
  %304 = load double, ptr %303, align 8, !tbaa !10
  %305 = load ptr, ptr %87, align 8, !tbaa !9
  %306 = getelementptr inbounds double, ptr %305, i64 %.313241484
  %307 = load double, ptr %306, align 8, !tbaa !10
  %308 = call noundef double @_ZL23testspline2dunit_func1vddlPN11alglib_impl8ae_stateE(double noundef %304, double noundef %307, i64 noundef %.013171483, ptr noundef %1)
  %309 = load ptr, ptr %94, align 8, !tbaa !9
  %310 = add nsw i64 %.013171483, %300
  %311 = getelementptr inbounds double, ptr %309, i64 %310
  store double %308, ptr %311, align 8, !tbaa !10
  %312 = load ptr, ptr %85, align 8, !tbaa !9
  %313 = getelementptr inbounds double, ptr %312, i64 %.313421485
  %314 = load double, ptr %313, align 8, !tbaa !10
  %315 = load ptr, ptr %87, align 8, !tbaa !9
  %316 = getelementptr inbounds double, ptr %315, i64 %.313241484
  %317 = load double, ptr %316, align 8, !tbaa !10
  %318 = call noundef double @_ZL25testspline2dunit_func1vdxddlPN11alglib_impl8ae_stateE(double noundef %314, double noundef %317, i64 noundef %.013171483, ptr noundef %1)
  %319 = load ptr, ptr %95, align 8, !tbaa !9
  %320 = getelementptr inbounds double, ptr %319, i64 %310
  store double %318, ptr %320, align 8, !tbaa !10
  %321 = load ptr, ptr %85, align 8, !tbaa !9
  %322 = getelementptr inbounds double, ptr %321, i64 %.313421485
  %323 = load double, ptr %322, align 8, !tbaa !10
  %324 = load ptr, ptr %87, align 8, !tbaa !9
  %325 = getelementptr inbounds double, ptr %324, i64 %.313241484
  %326 = load double, ptr %325, align 8, !tbaa !10
  %327 = call noundef double @_ZL25testspline2dunit_func1vdyddlPN11alglib_impl8ae_stateE(double noundef %323, double noundef %326, i64 noundef %.013171483, ptr noundef %1)
  %328 = load ptr, ptr %96, align 8, !tbaa !9
  %329 = getelementptr inbounds double, ptr %328, i64 %310
  store double %327, ptr %329, align 8, !tbaa !10
  %330 = load ptr, ptr %85, align 8, !tbaa !9
  %331 = getelementptr inbounds double, ptr %330, i64 %.313421485
  %332 = load double, ptr %331, align 8, !tbaa !10
  %333 = load ptr, ptr %87, align 8, !tbaa !9
  %334 = getelementptr inbounds double, ptr %333, i64 %.313241484
  %335 = load double, ptr %334, align 8, !tbaa !10
  %336 = call noundef double @_ZL27testspline2dunit_func1vdxdyddlPN11alglib_impl8ae_stateE(double noundef %332, double noundef %335, i64 noundef %.013171483, ptr noundef %1)
  %337 = load ptr, ptr %97, align 8, !tbaa !9
  %338 = getelementptr inbounds double, ptr %337, i64 %310
  store double %336, ptr %338, align 8, !tbaa !10
  %339 = add nuw i64 %.013171483, 1
  %exitcond1648 = icmp eq i64 %339, %123
  br i1 %exitcond1648, label %._crit_edge, label %301, !llvm.loop !22

._crit_edge:                                      ; preds = %301
  %340 = add nuw nsw i64 %.313241484, 1
  %exitcond1649.not = icmp eq i64 %340, %.013131585
  br i1 %exitcond1649.not, label %.split.us, label %.preheader1450, !llvm.loop !23

.split.us:                                        ; preds = %._crit_edge, %.preheader1464
  %341 = add nuw nsw i64 %.313421485, 1
  %exitcond1650.not = icmp eq i64 %341, %.013151588
  br i1 %exitcond1650.not, label %342, label %.preheader1464, !llvm.loop !24

342:                                              ; preds = %.split.us
  %343 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef nonnull %81, i64 noundef 3, ptr noundef %1)
  %344 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef nonnull %81, i64 noundef 3, ptr noundef %1)
  %345 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef nonnull %81, i64 noundef 3, ptr noundef %1)
  %346 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef nonnull %81, i64 noundef 3, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %30, i64 noundef %.013151588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %31, i64 noundef %.013151588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %32, i64 noundef %.013131585, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %33, i64 noundef %.013131585, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %35, i64 noundef %130, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %36, i64 noundef %130, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %37, i64 noundef %131, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %38, i64 noundef %131, ptr noundef %1)
  br label %.preheader1463

.preheader1463:                                   ; preds = %342, %._crit_edge1488
  %.413431489 = phi i64 [ 0, %342 ], [ %387, %._crit_edge1488 ]
  br i1 %.not14271482, label %._crit_edge1488, label %347

347:                                              ; preds = %.preheader1463
  %348 = mul nsw i64 %.413431489, %123
  %349 = load ptr, ptr %85, align 8, !tbaa !9
  %350 = getelementptr inbounds double, ptr %349, i64 %.413431489
  %351 = load double, ptr %350, align 8, !tbaa !10
  %352 = call noundef double @_ZL25testspline2dunit_func1vdyddlPN11alglib_impl8ae_stateE(double noundef %351, double noundef %182, i64 noundef 0, ptr noundef %1)
  %353 = load ptr, ptr %98, align 8, !tbaa !9
  %354 = getelementptr inbounds double, ptr %353, i64 %348
  store double %352, ptr %354, align 8, !tbaa !10
  %355 = load ptr, ptr %85, align 8, !tbaa !9
  %356 = getelementptr inbounds double, ptr %355, i64 %.413431489
  %357 = load double, ptr %356, align 8, !tbaa !10
  %358 = call noundef double @_ZL25testspline2dunit_func1vdyddlPN11alglib_impl8ae_stateE(double noundef %357, double noundef %183, i64 noundef 0, ptr noundef %1)
  %359 = load ptr, ptr %99, align 8, !tbaa !9
  %360 = getelementptr inbounds double, ptr %359, i64 %348
  store double %358, ptr %360, align 8, !tbaa !10
  %361 = load ptr, ptr %85, align 8, !tbaa !9
  %362 = getelementptr inbounds double, ptr %361, i64 %.413431489
  %363 = load double, ptr %362, align 8, !tbaa !10
  %364 = call noundef double @_ZL25testspline2dunit_func1vdyddlPN11alglib_impl8ae_stateE(double noundef %363, double noundef %182, i64 noundef 0, ptr noundef %1)
  %365 = load ptr, ptr %100, align 8, !tbaa !9
  %366 = getelementptr inbounds double, ptr %365, i64 %.413431489
  store double %364, ptr %366, align 8, !tbaa !10
  %367 = load ptr, ptr %85, align 8, !tbaa !9
  %368 = getelementptr inbounds double, ptr %367, i64 %.413431489
  %369 = load double, ptr %368, align 8, !tbaa !10
  %370 = call noundef double @_ZL25testspline2dunit_func1vdyddlPN11alglib_impl8ae_stateE(double noundef %369, double noundef %183, i64 noundef 0, ptr noundef %1)
  %371 = load ptr, ptr %101, align 8, !tbaa !9
  %372 = getelementptr inbounds double, ptr %371, i64 %.413431489
  store double %370, ptr %372, align 8, !tbaa !10
  br i1 %exitcond1651.peel, label %._crit_edge1488, label %.peel.next1653

.peel.next1653:                                   ; preds = %347, %.peel.next1653
  %.113181487 = phi i64 [ %386, %.peel.next1653 ], [ 1, %347 ]
  %373 = load ptr, ptr %85, align 8, !tbaa !9
  %374 = getelementptr inbounds double, ptr %373, i64 %.413431489
  %375 = load double, ptr %374, align 8, !tbaa !10
  %376 = call noundef double @_ZL25testspline2dunit_func1vdyddlPN11alglib_impl8ae_stateE(double noundef %375, double noundef %182, i64 noundef %.113181487, ptr noundef %1)
  %377 = load ptr, ptr %98, align 8, !tbaa !9
  %378 = add nsw i64 %.113181487, %348
  %379 = getelementptr inbounds double, ptr %377, i64 %378
  store double %376, ptr %379, align 8, !tbaa !10
  %380 = load ptr, ptr %85, align 8, !tbaa !9
  %381 = getelementptr inbounds double, ptr %380, i64 %.413431489
  %382 = load double, ptr %381, align 8, !tbaa !10
  %383 = call noundef double @_ZL25testspline2dunit_func1vdyddlPN11alglib_impl8ae_stateE(double noundef %382, double noundef %183, i64 noundef %.113181487, ptr noundef %1)
  %384 = load ptr, ptr %99, align 8, !tbaa !9
  %385 = getelementptr inbounds double, ptr %384, i64 %378
  store double %383, ptr %385, align 8, !tbaa !10
  %386 = add nuw i64 %.113181487, 1
  %exitcond1651 = icmp eq i64 %386, %123
  br i1 %exitcond1651, label %._crit_edge1488, label %.peel.next1653, !llvm.loop !25

._crit_edge1488:                                  ; preds = %.peel.next1653, %347, %.preheader1463
  %387 = add nuw nsw i64 %.413431489, 1
  %exitcond1655.not = icmp eq i64 %387, %.013151588
  br i1 %exitcond1655.not, label %.preheader1462, label %.preheader1463, !llvm.loop !26

.preheader1462:                                   ; preds = %._crit_edge1488, %._crit_edge1493
  %.413251494 = phi i64 [ %428, %._crit_edge1493 ], [ 0, %._crit_edge1488 ]
  br i1 %.not14271482, label %._crit_edge1493, label %388

388:                                              ; preds = %.preheader1462
  %389 = mul nsw i64 %.413251494, %123
  %390 = load ptr, ptr %87, align 8, !tbaa !9
  %391 = getelementptr inbounds double, ptr %390, i64 %.413251494
  %392 = load double, ptr %391, align 8, !tbaa !10
  %393 = call noundef double @_ZL25testspline2dunit_func1vdxddlPN11alglib_impl8ae_stateE(double noundef %138, double noundef %392, i64 noundef 0, ptr noundef %1)
  %394 = load ptr, ptr %102, align 8, !tbaa !9
  %395 = getelementptr inbounds double, ptr %394, i64 %389
  store double %393, ptr %395, align 8, !tbaa !10
  %396 = load ptr, ptr %87, align 8, !tbaa !9
  %397 = getelementptr inbounds double, ptr %396, i64 %.413251494
  %398 = load double, ptr %397, align 8, !tbaa !10
  %399 = call noundef double @_ZL25testspline2dunit_func1vdxddlPN11alglib_impl8ae_stateE(double noundef %140, double noundef %398, i64 noundef 0, ptr noundef %1)
  %400 = load ptr, ptr %103, align 8, !tbaa !9
  %401 = getelementptr inbounds double, ptr %400, i64 %389
  store double %399, ptr %401, align 8, !tbaa !10
  %402 = load ptr, ptr %87, align 8, !tbaa !9
  %403 = getelementptr inbounds double, ptr %402, i64 %.413251494
  %404 = load double, ptr %403, align 8, !tbaa !10
  %405 = call noundef double @_ZL25testspline2dunit_func1vdxddlPN11alglib_impl8ae_stateE(double noundef %138, double noundef %404, i64 noundef 0, ptr noundef %1)
  %406 = load ptr, ptr %104, align 8, !tbaa !9
  %407 = getelementptr inbounds double, ptr %406, i64 %.413251494
  store double %405, ptr %407, align 8, !tbaa !10
  %408 = load ptr, ptr %87, align 8, !tbaa !9
  %409 = getelementptr inbounds double, ptr %408, i64 %.413251494
  %410 = load double, ptr %409, align 8, !tbaa !10
  %411 = call noundef double @_ZL25testspline2dunit_func1vdxddlPN11alglib_impl8ae_stateE(double noundef %140, double noundef %410, i64 noundef 0, ptr noundef %1)
  %412 = load ptr, ptr %105, align 8, !tbaa !9
  %413 = getelementptr inbounds double, ptr %412, i64 %.413251494
  store double %411, ptr %413, align 8, !tbaa !10
  br i1 %exitcond1656.peel, label %._crit_edge1493, label %.peel.next1658

.peel.next1658:                                   ; preds = %388, %.peel.next1658
  %.213191491 = phi i64 [ %427, %.peel.next1658 ], [ 1, %388 ]
  %414 = load ptr, ptr %87, align 8, !tbaa !9
  %415 = getelementptr inbounds double, ptr %414, i64 %.413251494
  %416 = load double, ptr %415, align 8, !tbaa !10
  %417 = call noundef double @_ZL25testspline2dunit_func1vdxddlPN11alglib_impl8ae_stateE(double noundef %138, double noundef %416, i64 noundef %.213191491, ptr noundef %1)
  %418 = load ptr, ptr %102, align 8, !tbaa !9
  %419 = add nsw i64 %.213191491, %389
  %420 = getelementptr inbounds double, ptr %418, i64 %419
  store double %417, ptr %420, align 8, !tbaa !10
  %421 = load ptr, ptr %87, align 8, !tbaa !9
  %422 = getelementptr inbounds double, ptr %421, i64 %.413251494
  %423 = load double, ptr %422, align 8, !tbaa !10
  %424 = call noundef double @_ZL25testspline2dunit_func1vdxddlPN11alglib_impl8ae_stateE(double noundef %140, double noundef %423, i64 noundef %.213191491, ptr noundef %1)
  %425 = load ptr, ptr %103, align 8, !tbaa !9
  %426 = getelementptr inbounds double, ptr %425, i64 %419
  store double %424, ptr %426, align 8, !tbaa !10
  %427 = add nuw i64 %.213191491, 1
  %exitcond1656 = icmp eq i64 %427, %123
  br i1 %exitcond1656, label %._crit_edge1493, label %.peel.next1658, !llvm.loop !27

._crit_edge1493:                                  ; preds = %.peel.next1658, %388, %.preheader1462
  %428 = add nuw nsw i64 %.413251494, 1
  %exitcond1660.not = icmp eq i64 %428, %.013131585
  br i1 %exitcond1660.not, label %429, label %.preheader1462, !llvm.loop !28

429:                                              ; preds = %._crit_edge1493
  %430 = icmp eq i64 %343, 0
  br i1 %430, label %431, label %432

431:                                              ; preds = %429
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %30, i64 noundef 0, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %35, i64 noundef 0, ptr noundef %1)
  br label %432

432:                                              ; preds = %431, %429
  %433 = icmp eq i64 %344, 0
  br i1 %433, label %434, label %435

434:                                              ; preds = %432
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %31, i64 noundef 0, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %36, i64 noundef 0, ptr noundef %1)
  br label %435

435:                                              ; preds = %434, %432
  %436 = icmp eq i64 %345, 0
  br i1 %436, label %437, label %438

437:                                              ; preds = %435
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %32, i64 noundef 0, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %37, i64 noundef 0, ptr noundef %1)
  br label %438

438:                                              ; preds = %437, %435
  %439 = icmp eq i64 %346, 0
  br i1 %439, label %440, label %441

440:                                              ; preds = %438
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %33, i64 noundef 0, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %38, i64 noundef 0, ptr noundef %1)
  br label %441

441:                                              ; preds = %440, %438
  %442 = call noundef i64 @_ZN11alglib_impl5imin4EllllPNS_8ae_stateE(i64 noundef %343, i64 noundef %344, i64 noundef %345, i64 noundef %346, ptr noundef %1)
  %.not = icmp eq i64 %442, 0
  br i1 %.not, label %443, label %.preheader1461

443:                                              ; preds = %441
  %444 = call noundef i64 @_ZN11alglib_impl5imax4EllllPNS_8ae_stateE(i64 noundef %343, i64 noundef %344, i64 noundef %345, i64 noundef %346, ptr noundef %1)
  %.not1392 = icmp eq i64 %444, 0
  br i1 %.not1392, label %493, label %.preheader1461

.preheader1461:                                   ; preds = %443, %441
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %34, i64 noundef 4, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %39, i64 noundef %132, ptr noundef %1)
  %445 = call double @llvm.fmuladd.f64(double %185, double 0.000000e+00, double %182)
  br i1 %.not14271482, label %.loopexit1468, label %446

446:                                              ; preds = %.preheader1461
  %447 = call double @llvm.fmuladd.f64(double %144, double 0.000000e+00, double %138)
  %448 = call noundef double @_ZL27testspline2dunit_func1vdxdyddlPN11alglib_impl8ae_stateE(double noundef %447, double noundef %445, i64 noundef 0, ptr noundef %1)
  %449 = load ptr, ptr %106, align 8, !tbaa !9
  store double %448, ptr %449, align 8, !tbaa !10
  %450 = call noundef double @_ZL27testspline2dunit_func1vdxdyddlPN11alglib_impl8ae_stateE(double noundef %447, double noundef %445, i64 noundef 0, ptr noundef %1)
  %451 = load ptr, ptr %107, align 8, !tbaa !9
  store double %450, ptr %451, align 8, !tbaa !10
  br i1 %exitcond1661.peel, label %.loopexit1740, label %.peel.next1663

.peel.next1663:                                   ; preds = %446, %.peel.next1663
  %.313201496 = phi i64 [ %455, %.peel.next1663 ], [ 1, %446 ]
  %452 = call noundef double @_ZL27testspline2dunit_func1vdxdyddlPN11alglib_impl8ae_stateE(double noundef %447, double noundef %445, i64 noundef %.313201496, ptr noundef %1)
  %453 = load ptr, ptr %106, align 8, !tbaa !9
  %454 = getelementptr double, ptr %453, i64 %.313201496
  store double %452, ptr %454, align 8, !tbaa !10
  %455 = add nuw i64 %.313201496, 1
  %exitcond1661 = icmp eq i64 %455, %123
  br i1 %exitcond1661, label %.loopexit1740, label %.peel.next1663, !llvm.loop !29

.loopexit1740:                                    ; preds = %.peel.next1663, %446
  %456 = fadd double %144, %138
  %457 = call noundef double @_ZL27testspline2dunit_func1vdxdyddlPN11alglib_impl8ae_stateE(double noundef %456, double noundef %445, i64 noundef 0, ptr noundef %1)
  %458 = load ptr, ptr %106, align 8, !tbaa !9
  %459 = getelementptr double, ptr %458, i64 %123
  store double %457, ptr %459, align 8, !tbaa !10
  %460 = call noundef double @_ZL27testspline2dunit_func1vdxdyddlPN11alglib_impl8ae_stateE(double noundef %456, double noundef %445, i64 noundef 0, ptr noundef %1)
  %461 = load ptr, ptr %107, align 8, !tbaa !9
  %462 = getelementptr inbounds i8, ptr %461, i64 8
  store double %460, ptr %462, align 8, !tbaa !10
  br i1 %exitcond1661.peel, label %.split1501.us.thread1738, label %.peel.next1663.1

.peel.next1663.1:                                 ; preds = %.loopexit1740, %.peel.next1663.1
  %.313201496.1 = phi i64 [ %467, %.peel.next1663.1 ], [ 1, %.loopexit1740 ]
  %463 = call noundef double @_ZL27testspline2dunit_func1vdxdyddlPN11alglib_impl8ae_stateE(double noundef %456, double noundef %445, i64 noundef %.313201496.1, ptr noundef %1)
  %464 = load ptr, ptr %106, align 8, !tbaa !9
  %465 = getelementptr double, ptr %464, i64 %123
  %466 = getelementptr double, ptr %465, i64 %.313201496.1
  store double %463, ptr %466, align 8, !tbaa !10
  %467 = add nuw i64 %.313201496.1, 1
  %exitcond1661.1 = icmp eq i64 %467, %123
  br i1 %exitcond1661.1, label %.split1501.us, label %.peel.next1663.1, !llvm.loop !29

.split1501.us:                                    ; preds = %.peel.next1663.1
  br i1 %.not14271482, label %.loopexit1468, label %.split1501.us.thread1738

.split1501.us.thread1738:                         ; preds = %.loopexit1740, %.split1501.us
  %468 = fadd double %185, %182
  %469 = call double @llvm.fmuladd.f64(double %144, double 0.000000e+00, double %138)
  %470 = call noundef double @_ZL27testspline2dunit_func1vdxdyddlPN11alglib_impl8ae_stateE(double noundef %469, double noundef %468, i64 noundef 0, ptr noundef %1)
  %471 = load ptr, ptr %106, align 8, !tbaa !9
  %472 = getelementptr double, ptr %471, i64 %135
  store double %470, ptr %472, align 8, !tbaa !10
  %473 = call noundef double @_ZL27testspline2dunit_func1vdxdyddlPN11alglib_impl8ae_stateE(double noundef %469, double noundef %468, i64 noundef 0, ptr noundef %1)
  %474 = load ptr, ptr %107, align 8, !tbaa !9
  %475 = getelementptr inbounds i8, ptr %474, i64 16
  store double %473, ptr %475, align 8, !tbaa !10
  br i1 %exitcond1661.peel.11666, label %.loopexit1739, label %.peel.next1663.11667

.peel.next1663.11667:                             ; preds = %.split1501.us.thread1738, %.peel.next1663.11667
  %.313201496.11670 = phi i64 [ %480, %.peel.next1663.11667 ], [ 1, %.split1501.us.thread1738 ]
  %476 = call noundef double @_ZL27testspline2dunit_func1vdxdyddlPN11alglib_impl8ae_stateE(double noundef %469, double noundef %468, i64 noundef %.313201496.11670, ptr noundef %1)
  %477 = load ptr, ptr %106, align 8, !tbaa !9
  %478 = getelementptr double, ptr %477, i64 %135
  %479 = getelementptr double, ptr %478, i64 %.313201496.11670
  store double %476, ptr %479, align 8, !tbaa !10
  %480 = add nuw i64 %.313201496.11670, 1
  %exitcond1661.11671 = icmp eq i64 %480, %123
  br i1 %exitcond1661.11671, label %.loopexit1739, label %.peel.next1663.11667, !llvm.loop !29

.loopexit1739:                                    ; preds = %.peel.next1663.11667, %.split1501.us.thread1738
  %481 = fadd double %144, %138
  %482 = call noundef double @_ZL27testspline2dunit_func1vdxdyddlPN11alglib_impl8ae_stateE(double noundef %481, double noundef %468, i64 noundef 0, ptr noundef %1)
  %483 = load ptr, ptr %106, align 8, !tbaa !9
  %484 = getelementptr double, ptr %483, i64 %136
  store double %482, ptr %484, align 8, !tbaa !10
  %485 = call noundef double @_ZL27testspline2dunit_func1vdxdyddlPN11alglib_impl8ae_stateE(double noundef %481, double noundef %468, i64 noundef 0, ptr noundef %1)
  %486 = load ptr, ptr %107, align 8, !tbaa !9
  %487 = getelementptr inbounds i8, ptr %486, i64 24
  store double %485, ptr %487, align 8, !tbaa !10
  br i1 %exitcond1661.peel.11666, label %.loopexit1468, label %.peel.next1663.1.1

.peel.next1663.1.1:                               ; preds = %.loopexit1739, %.peel.next1663.1.1
  %.313201496.1.1 = phi i64 [ %492, %.peel.next1663.1.1 ], [ 1, %.loopexit1739 ]
  %488 = call noundef double @_ZL27testspline2dunit_func1vdxdyddlPN11alglib_impl8ae_stateE(double noundef %481, double noundef %468, i64 noundef %.313201496.1.1, ptr noundef %1)
  %489 = load ptr, ptr %106, align 8, !tbaa !9
  %490 = getelementptr double, ptr %489, i64 %136
  %491 = getelementptr double, ptr %490, i64 %.313201496.1.1
  store double %488, ptr %491, align 8, !tbaa !10
  %492 = add nuw i64 %.313201496.1.1, 1
  %exitcond1661.1.1 = icmp eq i64 %492, %123
  br i1 %exitcond1661.1.1, label %.loopexit1468, label %.peel.next1663.1.1, !llvm.loop !29

493:                                              ; preds = %443
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %34, i64 noundef 0, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %39, i64 noundef 0, ptr noundef %1)
  br label %.loopexit1468

.loopexit1468:                                    ; preds = %.peel.next1663.1.1, %.preheader1461, %.loopexit1739, %.split1501.us, %493
  call void @_ZN11alglib_impl22spline2dbuildbilinearvEPKNS_9ae_vectorElS2_lS2_lPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %15, i64 noundef %.013151588, ptr noundef nonnull %16, i64 noundef %.013131585, ptr noundef nonnull %21, i64 noundef 1, ptr noundef nonnull %17, ptr noundef %1)
  br label %.preheader1460

.preheader1460:                                   ; preds = %.loopexit1468, %511
  %.013011506 = phi double [ 0.000000e+00, %.loopexit1468 ], [ %509, %511 ]
  %.613451505 = phi i64 [ 0, %.loopexit1468 ], [ %512, %511 ]
  br label %494

494:                                              ; preds = %.preheader1460, %494
  %.113021504 = phi double [ %.013011506, %.preheader1460 ], [ %509, %494 ]
  %.613271503 = phi i64 [ 0, %.preheader1460 ], [ %510, %494 ]
  %495 = load ptr, ptr %89, align 8, !tbaa !9
  %496 = getelementptr inbounds ptr, ptr %495, i64 %.613451505
  %497 = load ptr, ptr %496, align 8, !tbaa !18
  %498 = getelementptr inbounds double, ptr %497, i64 %.613271503
  %499 = load double, ptr %498, align 8, !tbaa !10
  %500 = load ptr, ptr %85, align 8, !tbaa !9
  %501 = getelementptr inbounds double, ptr %500, i64 %.613271503
  %502 = load double, ptr %501, align 8, !tbaa !10
  %503 = load ptr, ptr %87, align 8, !tbaa !9
  %504 = getelementptr inbounds double, ptr %503, i64 %.613451505
  %505 = load double, ptr %504, align 8, !tbaa !10
  %506 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %17, double noundef %502, double noundef %505, ptr noundef %1)
  %507 = fsub double %499, %506
  %508 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %507, ptr noundef %1)
  %509 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.113021504, double noundef %508, ptr noundef %1)
  %510 = add nuw nsw i64 %.613271503, 1
  %exitcond1674.not = icmp eq i64 %510, %.013151588
  br i1 %exitcond1674.not, label %511, label %494, !llvm.loop !30

511:                                              ; preds = %494
  %512 = add nuw nsw i64 %.613451505, 1
  %exitcond1675.not = icmp eq i64 %512, %.013131585
  br i1 %exitcond1675.not, label %513, label %.preheader1460, !llvm.loop !31

513:                                              ; preds = %511
  br i1 %.21584, label %.preheader1459.preheader, label %514

514:                                              ; preds = %513
  %515 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %509, double noundef 0x3D95FD7FE1796496)
  br label %.preheader1459.preheader

.preheader1459.preheader:                         ; preds = %513, %514
  %516 = phi i1 [ true, %513 ], [ %515, %514 ]
  br label %.lr.ph1510

.lr.ph1510:                                       ; preds = %._crit_edge1511, %.preheader1459.preheader
  %.213031514 = phi double [ %565, %._crit_edge1511 ], [ 0.000000e+00, %.preheader1459.preheader ]
  %.713461513 = phi i64 [ %567, %._crit_edge1511 ], [ 0, %.preheader1459.preheader ]
  %517 = shl nuw nsw i64 %.713461513, 1
  %518 = or disjoint i64 %517, 1
  %519 = add nuw nsw i64 %517, 2
  br label %520

520:                                              ; preds = %.lr.ph1510, %520
  %.313041509 = phi double [ %.213031514, %.lr.ph1510 ], [ %565, %520 ]
  %.713281508 = phi i64 [ 0, %.lr.ph1510 ], [ %566, %520 ]
  %521 = load ptr, ptr %86, align 8, !tbaa !9
  %522 = shl nuw nsw i64 %.713281508, 1
  %523 = or disjoint i64 %522, 1
  %524 = getelementptr inbounds double, ptr %521, i64 %523
  %525 = load double, ptr %524, align 8, !tbaa !10
  %526 = load ptr, ptr %88, align 8, !tbaa !9
  %527 = getelementptr inbounds double, ptr %526, i64 %518
  %528 = load double, ptr %527, align 8, !tbaa !10
  %529 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %17, double noundef %525, double noundef %528, ptr noundef %1)
  %530 = load ptr, ptr %86, align 8, !tbaa !9
  %531 = getelementptr inbounds double, ptr %530, i64 %522
  %532 = load double, ptr %531, align 8, !tbaa !10
  %533 = load ptr, ptr %88, align 8, !tbaa !9
  %534 = getelementptr inbounds double, ptr %533, i64 %517
  %535 = load double, ptr %534, align 8, !tbaa !10
  %536 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %17, double noundef %532, double noundef %535, ptr noundef %1)
  %537 = load ptr, ptr %86, align 8, !tbaa !9
  %538 = add nuw nsw i64 %522, 2
  %539 = getelementptr inbounds double, ptr %537, i64 %538
  %540 = load double, ptr %539, align 8, !tbaa !10
  %541 = load ptr, ptr %88, align 8, !tbaa !9
  %542 = getelementptr inbounds double, ptr %541, i64 %517
  %543 = load double, ptr %542, align 8, !tbaa !10
  %544 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %17, double noundef %540, double noundef %543, ptr noundef %1)
  %545 = load ptr, ptr %86, align 8, !tbaa !9
  %546 = getelementptr inbounds double, ptr %545, i64 %538
  %547 = load double, ptr %546, align 8, !tbaa !10
  %548 = load ptr, ptr %88, align 8, !tbaa !9
  %549 = getelementptr inbounds double, ptr %548, i64 %519
  %550 = load double, ptr %549, align 8, !tbaa !10
  %551 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %17, double noundef %547, double noundef %550, ptr noundef %1)
  %552 = load ptr, ptr %86, align 8, !tbaa !9
  %553 = getelementptr inbounds double, ptr %552, i64 %522
  %554 = load double, ptr %553, align 8, !tbaa !10
  %555 = load ptr, ptr %88, align 8, !tbaa !9
  %556 = getelementptr inbounds double, ptr %555, i64 %519
  %557 = load double, ptr %556, align 8, !tbaa !10
  %558 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %17, double noundef %554, double noundef %557, ptr noundef %1)
  %559 = fadd double %536, %544
  %560 = fadd double %559, %551
  %561 = fadd double %560, %558
  %562 = fneg double %529
  %563 = call double @llvm.fmuladd.f64(double %561, double 2.500000e-01, double %562)
  %564 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %563, ptr noundef %1)
  %565 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.313041509, double noundef %564, ptr noundef %1)
  %566 = add nuw nsw i64 %.713281508, 1
  %exitcond1676.not = icmp eq i64 %566, %indvars.iv
  br i1 %exitcond1676.not, label %._crit_edge1511, label %520, !llvm.loop !32

._crit_edge1511:                                  ; preds = %520
  %567 = add nuw nsw i64 %.713461513, 1
  %exitcond1679.not = icmp eq i64 %567, %indvars.iv1677
  br i1 %exitcond1679.not, label %._crit_edge1515, label %.lr.ph1510, !llvm.loop !33

._crit_edge1515:                                  ; preds = %._crit_edge1511
  br i1 %516, label %.critedge, label %568

568:                                              ; preds = %._crit_edge1515
  %569 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %565, double noundef 0x3D95FD7FE1796496)
  call void @_ZL23testspline2dunit_lconstPKN11alglib_impl19spline2dinterpolantEPKNS_9ae_vectorES5_lldPdS6_S6_S6_S6_S6_PNS_8ae_stateE(ptr noundef nonnull %17, ptr noundef nonnull %19, ptr noundef nonnull %20, i64 noundef %.013131585, i64 noundef %.013151588, double noundef 1.000000e-03, ptr noundef nonnull %47, ptr noundef nonnull %48, ptr noundef nonnull %49, ptr noundef nonnull %55, ptr noundef nonnull %50, ptr noundef nonnull %56, ptr noundef %1)
  call void @_ZL23testspline2dunit_lconstPKN11alglib_impl19spline2dinterpolantEPKNS_9ae_vectorES5_lldPdS6_S6_S6_S6_S6_PNS_8ae_stateE(ptr noundef nonnull %17, ptr noundef nonnull %19, ptr noundef nonnull %20, i64 noundef %.013131585, i64 noundef %.013151588, double noundef 0x3F35D867C3ECE2A5, ptr noundef nonnull %51, ptr noundef nonnull %52, ptr noundef nonnull %53, ptr noundef nonnull %57, ptr noundef nonnull %54, ptr noundef nonnull %58, ptr noundef %1)
  br i1 %569, label %.preheader1458.preheader, label %570

570:                                              ; preds = %568
  %571 = load double, ptr %51, align 8, !tbaa !10
  %572 = load double, ptr %47, align 8, !tbaa !10
  %573 = fdiv double %571, %572
  %574 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %573, double noundef 1.200000e+00)
  br label %.preheader1458.preheader

.critedge:                                        ; preds = %._crit_edge1515
  call void @_ZL23testspline2dunit_lconstPKN11alglib_impl19spline2dinterpolantEPKNS_9ae_vectorES5_lldPdS6_S6_S6_S6_S6_PNS_8ae_stateE(ptr noundef nonnull %17, ptr noundef nonnull %19, ptr noundef nonnull %20, i64 noundef %.013131585, i64 noundef %.013151588, double noundef 1.000000e-03, ptr noundef nonnull %47, ptr noundef nonnull %48, ptr noundef nonnull %49, ptr noundef nonnull %55, ptr noundef nonnull %50, ptr noundef nonnull %56, ptr noundef %1)
  call void @_ZL23testspline2dunit_lconstPKN11alglib_impl19spline2dinterpolantEPKNS_9ae_vectorES5_lldPdS6_S6_S6_S6_S6_PNS_8ae_stateE(ptr noundef nonnull %17, ptr noundef nonnull %19, ptr noundef nonnull %20, i64 noundef %.013131585, i64 noundef %.013151588, double noundef 0x3F35D867C3ECE2A5, ptr noundef nonnull %51, ptr noundef nonnull %52, ptr noundef nonnull %53, ptr noundef nonnull %57, ptr noundef nonnull %54, ptr noundef nonnull %58, ptr noundef %1)
  br label %.preheader1458.preheader

.preheader1458.preheader:                         ; preds = %568, %570, %.critedge
  %575 = phi i1 [ true, %568 ], [ %574, %570 ], [ true, %.critedge ]
  br label %.lr.ph1521.preheader

.lr.ph1521.preheader:                             ; preds = %._crit_edge1522, %.preheader1458.preheader
  %.413051526 = phi double [ %645, %._crit_edge1522 ], [ 0.000000e+00, %.preheader1458.preheader ]
  %.813471525 = phi i64 [ %646, %._crit_edge1522 ], [ 0, %.preheader1458.preheader ]
  br label %.lr.ph1521

.lr.ph1521:                                       ; preds = %.lr.ph1521.preheader, %.lr.ph1521
  %.513061520 = phi double [ %645, %.lr.ph1521 ], [ %.413051526, %.lr.ph1521.preheader ]
  %.813291519 = phi i64 [ %582, %.lr.ph1521 ], [ 0, %.lr.ph1521.preheader ]
  %576 = load ptr, ptr %108, align 8, !tbaa !9
  %577 = getelementptr inbounds double, ptr %576, i64 %.813291519
  %578 = load double, ptr %577, align 8, !tbaa !10
  %579 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %580 = call double @llvm.fmuladd.f64(double %579, double 8.000000e-01, double 1.000000e-01)
  %581 = load ptr, ptr %108, align 8, !tbaa !9
  %582 = add nuw nsw i64 %.813291519, 1
  %583 = getelementptr inbounds double, ptr %581, i64 %582
  %584 = load double, ptr %583, align 8, !tbaa !10
  %585 = getelementptr inbounds double, ptr %581, i64 %.813291519
  %586 = load double, ptr %585, align 8, !tbaa !10
  %587 = fsub double %584, %586
  %588 = call double @llvm.fmuladd.f64(double %580, double %587, double %578)
  %589 = load ptr, ptr %109, align 8, !tbaa !9
  %590 = getelementptr inbounds double, ptr %589, i64 %.813471525
  %591 = load double, ptr %590, align 8, !tbaa !10
  %592 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %593 = call double @llvm.fmuladd.f64(double %592, double 8.000000e-01, double 1.000000e-01)
  %594 = load ptr, ptr %109, align 8, !tbaa !9
  %595 = getelementptr inbounds double, ptr %594, i64 %.813471525
  %596 = getelementptr inbounds i8, ptr %595, i64 8
  %597 = load double, ptr %596, align 8, !tbaa !10
  %598 = load double, ptr %595, align 8, !tbaa !10
  %599 = fsub double %597, %598
  %600 = call double @llvm.fmuladd.f64(double %593, double %599, double %591)
  call void @_ZL27testspline2dunit_twodnumderPKN11alglib_impl19spline2dinterpolantEdddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %17, double noundef %588, double noundef %600, double noundef 1.000000e-05, ptr noundef nonnull %63, ptr noundef nonnull %64, ptr noundef nonnull %65, ptr noundef nonnull %72, ptr noundef nonnull %66, ptr noundef nonnull %73, ptr noundef %1)
  call void @_ZN11alglib_impl12spline2ddiffEPKNS_19spline2dinterpolantEddPdS3_S3_PNS_8ae_stateE(ptr noundef nonnull %17, double noundef %588, double noundef %600, ptr noundef nonnull %59, ptr noundef nonnull %60, ptr noundef nonnull %61, ptr noundef %1)
  %601 = load double, ptr %59, align 8, !tbaa !10
  %602 = load double, ptr %63, align 8, !tbaa !10
  %603 = fsub double %601, %602
  %604 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %603, ptr noundef %1)
  %605 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.513061520, double noundef %604, ptr noundef %1)
  %606 = load double, ptr %60, align 8, !tbaa !10
  %607 = load double, ptr %64, align 8, !tbaa !10
  %608 = fsub double %606, %607
  %609 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %608, ptr noundef %1)
  %610 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %605, double noundef %609, ptr noundef %1)
  %611 = load double, ptr %61, align 8, !tbaa !10
  %612 = load double, ptr %65, align 8, !tbaa !10
  %613 = fsub double %611, %612
  %614 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %613, ptr noundef %1)
  %615 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %610, double noundef %614, ptr noundef %1)
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %17, double noundef %588, double noundef %600, ptr noundef nonnull %59, ptr noundef nonnull %60, ptr noundef nonnull %61, ptr noundef nonnull %70, ptr noundef nonnull %62, ptr noundef nonnull %71, ptr noundef %1)
  %616 = load double, ptr %59, align 8, !tbaa !10
  %617 = load double, ptr %63, align 8, !tbaa !10
  %618 = fsub double %616, %617
  %619 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %618, ptr noundef %1)
  %620 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %615, double noundef %619, ptr noundef %1)
  %621 = load double, ptr %60, align 8, !tbaa !10
  %622 = load double, ptr %64, align 8, !tbaa !10
  %623 = fsub double %621, %622
  %624 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %623, ptr noundef %1)
  %625 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %620, double noundef %624, ptr noundef %1)
  %626 = load double, ptr %61, align 8, !tbaa !10
  %627 = load double, ptr %65, align 8, !tbaa !10
  %628 = fsub double %626, %627
  %629 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %628, ptr noundef %1)
  %630 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %625, double noundef %629, ptr noundef %1)
  %631 = load double, ptr %70, align 8, !tbaa !10
  %632 = load double, ptr %72, align 8, !tbaa !10
  %633 = fsub double %631, %632
  %634 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %633, ptr noundef %1)
  %635 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %630, double noundef %634, ptr noundef %1)
  %636 = load double, ptr %62, align 8, !tbaa !10
  %637 = load double, ptr %66, align 8, !tbaa !10
  %638 = fsub double %636, %637
  %639 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %638, ptr noundef %1)
  %640 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %635, double noundef %639, ptr noundef %1)
  %641 = load double, ptr %71, align 8, !tbaa !10
  %642 = load double, ptr %73, align 8, !tbaa !10
  %643 = fsub double %641, %642
  %644 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %643, ptr noundef %1)
  %645 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %640, double noundef %644, ptr noundef %1)
  %exitcond1680.not = icmp eq i64 %582, %indvars.iv
  br i1 %exitcond1680.not, label %._crit_edge1522, label %.lr.ph1521, !llvm.loop !34

._crit_edge1522:                                  ; preds = %.lr.ph1521
  %646 = add nuw nsw i64 %.813471525, 1
  %exitcond1681.not = icmp eq i64 %646, %indvars.iv1677
  br i1 %exitcond1681.not, label %._crit_edge1527, label %.lr.ph1521.preheader, !llvm.loop !35

._crit_edge1527:                                  ; preds = %._crit_edge1522
  %647 = load i8, ptr %5, align 1, !tbaa !5, !range !36, !noundef !37
  %648 = trunc nuw i8 %647 to i1
  br i1 %648, label %651, label %649

649:                                              ; preds = %._crit_edge1527
  %650 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %645, double noundef 1.000000e-03)
  br label %651

651:                                              ; preds = %649, %._crit_edge1527
  %652 = phi i1 [ true, %._crit_edge1527 ], [ %650, %649 ]
  %653 = zext i1 %652 to i8
  store i8 %653, ptr %5, align 1, !tbaa !5
  %654 = load i8, ptr %7, align 1, !tbaa !5, !range !36, !noundef !37
  %655 = trunc nuw i8 %654 to i1
  br i1 %655, label %659, label %656

656:                                              ; preds = %651
  %657 = call noundef zeroext i1 @_ZL27testspline2dunit_testunpackPKN11alglib_impl19spline2dinterpolantEPKNS_9ae_vectorES5_PNS_8ae_stateE(ptr noundef nonnull %17, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef %1)
  %658 = xor i1 %657, true
  br label %659

659:                                              ; preds = %656, %651
  %660 = phi i1 [ true, %651 ], [ %658, %656 ]
  %661 = zext i1 %660 to i8
  store i8 %661, ptr %7, align 1, !tbaa !5
  %662 = load i8, ptr %8, align 1, !tbaa !5, !range !36, !noundef !37
  %663 = trunc nuw i8 %662 to i1
  br i1 %663, label %667, label %664

664:                                              ; preds = %659
  %665 = call noundef zeroext i1 @_ZL29testspline2dunit_testlintransPKN11alglib_impl19spline2dinterpolantElddddPNS_8ae_stateE(ptr noundef nonnull %17, i64 noundef 1, double noundef %138, double noundef %140, double noundef %182, double noundef %183, ptr noundef %1)
  %666 = xor i1 %665, true
  br label %667

667:                                              ; preds = %664, %659
  %668 = phi i1 [ true, %659 ], [ %666, %664 ]
  %669 = zext i1 %668 to i8
  store i8 %669, ptr %8, align 1, !tbaa !5
  call void @_ZN11alglib_impl22spline2dbuildbilinearvEPKNS_9ae_vectorElS2_lS2_lPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %15, i64 noundef %.013151588, ptr noundef nonnull %16, i64 noundef %.013131585, ptr noundef nonnull %22, i64 noundef %123, ptr noundef nonnull %17, ptr noundef %1)
  %670 = load i8, ptr %8, align 1, !tbaa !5, !range !36, !noundef !37
  %671 = trunc nuw i8 %670 to i1
  br i1 %671, label %675, label %672

672:                                              ; preds = %667
  %673 = call noundef zeroext i1 @_ZL29testspline2dunit_testlintransPKN11alglib_impl19spline2dinterpolantElddddPNS_8ae_stateE(ptr noundef nonnull %17, i64 noundef %123, double noundef %138, double noundef %140, double noundef %182, double noundef %183, ptr noundef %1)
  %674 = xor i1 %673, true
  br label %675

675:                                              ; preds = %672, %667
  %676 = phi i1 [ true, %667 ], [ %674, %672 ]
  %677 = zext i1 %676 to i8
  store i8 %677, ptr %8, align 1, !tbaa !5
  call void @_ZN11alglib_impl21spline2dbuildbicubicvEPKNS_9ae_vectorElS2_lS2_lPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %15, i64 noundef %.013151588, ptr noundef nonnull %16, i64 noundef %.013131585, ptr noundef nonnull %21, i64 noundef 1, ptr noundef nonnull %17, ptr noundef %1)
  br label %.preheader1457

.preheader1457:                                   ; preds = %675, %695
  %.613071532 = phi double [ 0.000000e+00, %675 ], [ %693, %695 ]
  %.913481531 = phi i64 [ 0, %675 ], [ %696, %695 ]
  br label %678

678:                                              ; preds = %.preheader1457, %678
  %.713081530 = phi double [ %.613071532, %.preheader1457 ], [ %693, %678 ]
  %.913301529 = phi i64 [ 0, %.preheader1457 ], [ %694, %678 ]
  %679 = load ptr, ptr %89, align 8, !tbaa !9
  %680 = getelementptr inbounds ptr, ptr %679, i64 %.913481531
  %681 = load ptr, ptr %680, align 8, !tbaa !18
  %682 = getelementptr inbounds double, ptr %681, i64 %.913301529
  %683 = load double, ptr %682, align 8, !tbaa !10
  %684 = load ptr, ptr %85, align 8, !tbaa !9
  %685 = getelementptr inbounds double, ptr %684, i64 %.913301529
  %686 = load double, ptr %685, align 8, !tbaa !10
  %687 = load ptr, ptr %87, align 8, !tbaa !9
  %688 = getelementptr inbounds double, ptr %687, i64 %.913481531
  %689 = load double, ptr %688, align 8, !tbaa !10
  %690 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %17, double noundef %686, double noundef %689, ptr noundef %1)
  %691 = fsub double %683, %690
  %692 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %691, ptr noundef %1)
  %693 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.713081530, double noundef %692, ptr noundef %1)
  %694 = add nuw nsw i64 %.913301529, 1
  %exitcond1682.not = icmp eq i64 %694, %.013151588
  br i1 %exitcond1682.not, label %695, label %678, !llvm.loop !38

695:                                              ; preds = %678
  %696 = add nuw nsw i64 %.913481531, 1
  %exitcond1683.not = icmp eq i64 %696, %.013131585
  br i1 %exitcond1683.not, label %697, label %.preheader1457, !llvm.loop !39

697:                                              ; preds = %695
  %698 = load i8, ptr %4, align 1, !tbaa !5, !range !36, !noundef !37
  %699 = trunc nuw i8 %698 to i1
  br i1 %699, label %702, label %700

700:                                              ; preds = %697
  %701 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %693, double noundef 0x3D95FD7FE1796496)
  br label %702

702:                                              ; preds = %700, %697
  %703 = phi i1 [ true, %697 ], [ %701, %700 ]
  %704 = zext i1 %703 to i8
  store i8 %704, ptr %4, align 1, !tbaa !5
  call void @_ZL23testspline2dunit_lconstPKN11alglib_impl19spline2dinterpolantEPKNS_9ae_vectorES5_lldPdS6_S6_S6_S6_S6_PNS_8ae_stateE(ptr noundef nonnull %17, ptr noundef nonnull %19, ptr noundef nonnull %20, i64 noundef %.013131585, i64 noundef %.013151588, double noundef 1.000000e-03, ptr noundef nonnull %47, ptr noundef nonnull %48, ptr noundef nonnull %49, ptr noundef nonnull %55, ptr noundef nonnull %50, ptr noundef nonnull %56, ptr noundef %1)
  call void @_ZL23testspline2dunit_lconstPKN11alglib_impl19spline2dinterpolantEPKNS_9ae_vectorES5_lldPdS6_S6_S6_S6_S6_PNS_8ae_stateE(ptr noundef nonnull %17, ptr noundef nonnull %19, ptr noundef nonnull %20, i64 noundef %.013131585, i64 noundef %.013151588, double noundef 0x3F35D867C3ECE2A5, ptr noundef nonnull %51, ptr noundef nonnull %52, ptr noundef nonnull %53, ptr noundef nonnull %57, ptr noundef nonnull %54, ptr noundef nonnull %58, ptr noundef %1)
  %705 = load double, ptr %51, align 8, !tbaa !10
  %706 = load double, ptr %47, align 8, !tbaa !10
  %707 = fdiv double %705, %706
  %708 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %707, double noundef 1.200000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %708, ptr noundef nonnull @.str.19, i32 noundef 110044, ptr noundef nonnull @.str.830)
  %709 = load double, ptr %52, align 8, !tbaa !10
  %710 = load double, ptr %48, align 8, !tbaa !10
  %711 = fdiv double %709, %710
  %712 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %711, double noundef 1.200000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %712, ptr noundef nonnull @.str.19, i32 noundef 110045, ptr noundef nonnull @.str.831)
  %713 = load double, ptr %53, align 8, !tbaa !10
  %714 = load double, ptr %49, align 8, !tbaa !10
  %715 = fdiv double %713, %714
  %716 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %715, double noundef 1.200000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %716, ptr noundef nonnull @.str.19, i32 noundef 110046, ptr noundef nonnull @.str.832)
  %717 = load double, ptr %57, align 8, !tbaa !10
  %718 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %717, double noundef 5.000000e-02)
  br i1 %718, label %719, label %727

719:                                              ; preds = %702
  %720 = load double, ptr %55, align 8, !tbaa !10
  %721 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %720, double noundef 5.000000e-02)
  br i1 %721, label %722, label %727

722:                                              ; preds = %719
  %723 = load double, ptr %57, align 8, !tbaa !10
  %724 = load double, ptr %55, align 8, !tbaa !10
  %725 = fdiv double %723, %724
  %726 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %725, double noundef 1.200000e+00)
  br label %727

727:                                              ; preds = %722, %719, %702
  %728 = phi i1 [ false, %719 ], [ false, %702 ], [ %726, %722 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %728, ptr noundef nonnull @.str.19, i32 noundef 110047, ptr noundef nonnull @.str.833)
  %729 = load double, ptr %54, align 8, !tbaa !10
  %730 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %729, double noundef 5.000000e-02)
  br i1 %730, label %731, label %739

731:                                              ; preds = %727
  %732 = load double, ptr %50, align 8, !tbaa !10
  %733 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %732, double noundef 5.000000e-02)
  br i1 %733, label %734, label %739

734:                                              ; preds = %731
  %735 = load double, ptr %54, align 8, !tbaa !10
  %736 = load double, ptr %50, align 8, !tbaa !10
  %737 = fdiv double %735, %736
  %738 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %737, double noundef 1.200000e+00)
  br label %739

739:                                              ; preds = %734, %731, %727
  %740 = phi i1 [ false, %731 ], [ false, %727 ], [ %738, %734 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %740, ptr noundef nonnull @.str.19, i32 noundef 110048, ptr noundef nonnull @.str.834)
  %741 = load double, ptr %58, align 8, !tbaa !10
  %742 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %741, double noundef 5.000000e-02)
  br i1 %742, label %743, label %.preheader1456.preheader

743:                                              ; preds = %739
  %744 = load double, ptr %56, align 8, !tbaa !10
  %745 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %744, double noundef 5.000000e-02)
  br i1 %745, label %746, label %.preheader1456.preheader

746:                                              ; preds = %743
  %747 = load double, ptr %58, align 8, !tbaa !10
  %748 = load double, ptr %56, align 8, !tbaa !10
  %749 = fdiv double %747, %748
  %750 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %749, double noundef 1.200000e+00)
  br label %.preheader1456.preheader

.preheader1456.preheader:                         ; preds = %739, %743, %746
  %751 = phi i1 [ false, %743 ], [ false, %739 ], [ %750, %746 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %751, ptr noundef nonnull @.str.19, i32 noundef 110049, ptr noundef nonnull @.str.835)
  br label %.lr.ph1536

.lr.ph1536:                                       ; preds = %._crit_edge1537, %.preheader1456.preheader
  %.81541 = phi double [ %801, %._crit_edge1537 ], [ 0.000000e+00, %.preheader1456.preheader ]
  %.1013491540 = phi i64 [ %752, %._crit_edge1537 ], [ 0, %.preheader1456.preheader ]
  %752 = add nuw nsw i64 %.1013491540, 1
  %753 = icmp eq i64 %.1013491540, 0
  %754 = icmp eq i64 %.1013491540, %133
  %or.cond = or i1 %753, %754
  br label %755

755:                                              ; preds = %.lr.ph1536, %914
  %.91535 = phi double [ %.81541, %.lr.ph1536 ], [ %801, %914 ]
  %.1013311534 = phi i64 [ 0, %.lr.ph1536 ], [ %763, %914 ]
  %756 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 3, ptr noundef %1)
  %757 = load ptr, ptr %108, align 8, !tbaa !9
  %758 = getelementptr inbounds double, ptr %757, i64 %.1013311534
  %759 = load double, ptr %758, align 8, !tbaa !10
  %760 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %761 = call double @llvm.fmuladd.f64(double %760, double 8.000000e-01, double 1.000000e-01)
  %762 = load ptr, ptr %108, align 8, !tbaa !9
  %763 = add nuw nsw i64 %.1013311534, 1
  %764 = getelementptr inbounds double, ptr %762, i64 %763
  %765 = load double, ptr %764, align 8, !tbaa !10
  %766 = getelementptr inbounds double, ptr %762, i64 %.1013311534
  %767 = load double, ptr %766, align 8, !tbaa !10
  %768 = fsub double %765, %767
  %769 = call double @llvm.fmuladd.f64(double %761, double %768, double %759)
  %770 = icmp eq i64 %756, 1
  %.01268 = select i1 %770, double %767, double %769
  %771 = icmp eq i64 %756, 2
  %.11269 = select i1 %771, double %765, double %.01268
  %772 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 3, ptr noundef %1)
  %773 = load ptr, ptr %109, align 8, !tbaa !9
  %774 = getelementptr inbounds double, ptr %773, i64 %.1013491540
  %775 = load double, ptr %774, align 8, !tbaa !10
  %776 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %777 = call double @llvm.fmuladd.f64(double %776, double 8.000000e-01, double 1.000000e-01)
  %778 = load ptr, ptr %109, align 8, !tbaa !9
  %779 = getelementptr inbounds double, ptr %778, i64 %752
  %780 = load double, ptr %779, align 8, !tbaa !10
  %781 = getelementptr inbounds double, ptr %778, i64 %.1013491540
  %782 = load double, ptr %781, align 8, !tbaa !10
  %783 = fsub double %780, %782
  %784 = call double @llvm.fmuladd.f64(double %777, double %783, double %775)
  %785 = icmp eq i64 %772, 1
  %.01265 = select i1 %785, double %782, double %784
  %786 = icmp eq i64 %772, 2
  %.11266 = select i1 %786, double %780, double %.01265
  call void @_ZL27testspline2dunit_twodnumderPKN11alglib_impl19spline2dinterpolantEdddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %17, double noundef %.11269, double noundef %.11266, double noundef 1.000000e-05, ptr noundef nonnull %63, ptr noundef nonnull %64, ptr noundef nonnull %65, ptr noundef nonnull %72, ptr noundef nonnull %66, ptr noundef nonnull %73, ptr noundef %1)
  call void @_ZN11alglib_impl12spline2ddiffEPKNS_19spline2dinterpolantEddPdS3_S3_PNS_8ae_stateE(ptr noundef nonnull %17, double noundef %.11269, double noundef %.11266, ptr noundef nonnull %59, ptr noundef nonnull %60, ptr noundef nonnull %61, ptr noundef %1)
  %787 = load double, ptr %59, align 8, !tbaa !10
  %788 = load double, ptr %63, align 8, !tbaa !10
  %789 = fsub double %787, %788
  %790 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %789, ptr noundef %1)
  %791 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.91535, double noundef %790, ptr noundef %1)
  %792 = load double, ptr %60, align 8, !tbaa !10
  %793 = load double, ptr %64, align 8, !tbaa !10
  %794 = fsub double %792, %793
  %795 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %794, ptr noundef %1)
  %796 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %791, double noundef %795, ptr noundef %1)
  %797 = load double, ptr %61, align 8, !tbaa !10
  %798 = load double, ptr %65, align 8, !tbaa !10
  %799 = fsub double %797, %798
  %800 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %799, ptr noundef %1)
  %801 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %796, double noundef %800, ptr noundef %1)
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %17, double noundef %.11269, double noundef %.11266, ptr noundef nonnull %59, ptr noundef nonnull %60, ptr noundef nonnull %61, ptr noundef nonnull %70, ptr noundef nonnull %62, ptr noundef nonnull %71, ptr noundef %1)
  %802 = load double, ptr %59, align 8, !tbaa !10
  %803 = load double, ptr %63, align 8, !tbaa !10
  %804 = fsub double %802, %803
  %805 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %804, ptr noundef %1)
  %806 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %805, double noundef 1.000000e-03)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %5, i1 noundef zeroext %806, ptr noundef nonnull @.str.19, i32 noundef 110093, ptr noundef nonnull @.str.836)
  %807 = load double, ptr %60, align 8, !tbaa !10
  %808 = load double, ptr %64, align 8, !tbaa !10
  %809 = fsub double %807, %808
  %810 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %809, ptr noundef %1)
  %811 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %810, double noundef 1.000000e-03)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %5, i1 noundef zeroext %811, ptr noundef nonnull @.str.19, i32 noundef 110094, ptr noundef nonnull @.str.837)
  %812 = load double, ptr %61, align 8, !tbaa !10
  %813 = load double, ptr %65, align 8, !tbaa !10
  %814 = fsub double %812, %813
  %815 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %814, ptr noundef %1)
  %816 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %815, double noundef 1.000000e-03)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %5, i1 noundef zeroext %816, ptr noundef nonnull @.str.19, i32 noundef 110095, ptr noundef nonnull @.str.838)
  %817 = load double, ptr %70, align 8, !tbaa !10
  %818 = load double, ptr %72, align 8, !tbaa !10
  %819 = fsub double %817, %818
  %820 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %819, ptr noundef %1)
  %821 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %820, double noundef 1.000000e-03)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %5, i1 noundef zeroext %821, ptr noundef nonnull @.str.19, i32 noundef 110096, ptr noundef nonnull @.str.839)
  %822 = load double, ptr %62, align 8, !tbaa !10
  %823 = load double, ptr %66, align 8, !tbaa !10
  %824 = fsub double %822, %823
  %825 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %824, ptr noundef %1)
  %826 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %825, double noundef 1.000000e-03)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %5, i1 noundef zeroext %826, ptr noundef nonnull @.str.19, i32 noundef 110097, ptr noundef nonnull @.str.840)
  %827 = load double, ptr %71, align 8, !tbaa !10
  %828 = load double, ptr %73, align 8, !tbaa !10
  %829 = fsub double %827, %828
  %830 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %829, ptr noundef %1)
  %831 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %830, double noundef 1.000000e-03)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %5, i1 noundef zeroext %831, ptr noundef nonnull @.str.19, i32 noundef 110098, ptr noundef nonnull @.str.841)
  br i1 %or.cond, label %832, label %871

832:                                              ; preds = %755
  %833 = load ptr, ptr %108, align 8, !tbaa !9
  %834 = getelementptr inbounds double, ptr %833, i64 %.1013311534
  %835 = load double, ptr %834, align 8, !tbaa !10
  %836 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %81, ptr noundef %1)
  %837 = load ptr, ptr %108, align 8, !tbaa !9
  %838 = getelementptr inbounds double, ptr %837, i64 %763
  %839 = load double, ptr %838, align 8, !tbaa !10
  %840 = getelementptr inbounds double, ptr %837, i64 %.1013311534
  %841 = load double, ptr %840, align 8, !tbaa !10
  %842 = fsub double %839, %841
  %843 = call double @llvm.fmuladd.f64(double %836, double %842, double %835)
  %844 = load ptr, ptr %109, align 8, !tbaa !9
  %845 = getelementptr inbounds double, ptr %844, i64 %.1013491540
  %846 = load double, ptr %845, align 8, !tbaa !10
  %847 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %81, ptr noundef %1)
  %848 = load ptr, ptr %109, align 8, !tbaa !9
  %849 = getelementptr inbounds double, ptr %848, i64 %752
  %850 = load double, ptr %849, align 8, !tbaa !10
  %851 = getelementptr inbounds double, ptr %848, i64 %.1013491540
  %852 = load double, ptr %851, align 8, !tbaa !10
  %853 = fsub double %850, %852
  %854 = call double @llvm.fmuladd.f64(double %847, double %853, double %846)
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %17, double noundef %843, double noundef %854, ptr noundef nonnull %59, ptr noundef nonnull %60, ptr noundef nonnull %61, ptr noundef nonnull %70, ptr noundef nonnull %62, ptr noundef nonnull %71, ptr noundef %1)
  %855 = load ptr, ptr %109, align 8, !tbaa !9
  %856 = getelementptr inbounds double, ptr %855, i64 %.1013491540
  %857 = load double, ptr %856, align 8, !tbaa !10
  %858 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %81, ptr noundef %1)
  %859 = load ptr, ptr %109, align 8, !tbaa !9
  %860 = getelementptr inbounds double, ptr %859, i64 %752
  %861 = load double, ptr %860, align 8, !tbaa !10
  %862 = getelementptr inbounds double, ptr %859, i64 %.1013491540
  %863 = load double, ptr %862, align 8, !tbaa !10
  %864 = fsub double %861, %863
  %865 = call double @llvm.fmuladd.f64(double %858, double %864, double %857)
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %17, double noundef %843, double noundef %865, ptr noundef nonnull %67, ptr noundef nonnull %68, ptr noundef nonnull %69, ptr noundef nonnull %74, ptr noundef nonnull %76, ptr noundef nonnull %75, ptr noundef %1)
  %866 = load double, ptr %75, align 8, !tbaa !10
  %867 = load double, ptr %71, align 8, !tbaa !10
  %868 = fsub double %866, %867
  %869 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %868, ptr noundef %1)
  %870 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %869, double noundef 1.000000e-08)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %5, i1 noundef zeroext %870, ptr noundef nonnull @.str.19, i32 noundef 110110, ptr noundef nonnull @.str.842)
  br label %871

871:                                              ; preds = %755, %832
  %872 = icmp eq i64 %.1013311534, 0
  %873 = icmp eq i64 %.1013311534, %118
  %or.cond1433 = or i1 %872, %873
  br i1 %or.cond1433, label %874, label %914

874:                                              ; preds = %871
  %875 = load ptr, ptr %108, align 8, !tbaa !9
  %876 = getelementptr inbounds double, ptr %875, i64 %.1013311534
  %877 = load double, ptr %876, align 8, !tbaa !10
  %878 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %81, ptr noundef %1)
  %879 = load ptr, ptr %108, align 8, !tbaa !9
  %880 = getelementptr inbounds double, ptr %879, i64 %763
  %881 = load double, ptr %880, align 8, !tbaa !10
  %882 = getelementptr inbounds double, ptr %879, i64 %.1013311534
  %883 = load double, ptr %882, align 8, !tbaa !10
  %884 = fsub double %881, %883
  %885 = call double @llvm.fmuladd.f64(double %878, double %884, double %877)
  %886 = load ptr, ptr %109, align 8, !tbaa !9
  %887 = getelementptr inbounds double, ptr %886, i64 %.1013491540
  %888 = load double, ptr %887, align 8, !tbaa !10
  %889 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %81, ptr noundef %1)
  %890 = load ptr, ptr %109, align 8, !tbaa !9
  %891 = getelementptr inbounds double, ptr %890, i64 %752
  %892 = load double, ptr %891, align 8, !tbaa !10
  %893 = getelementptr inbounds double, ptr %890, i64 %.1013491540
  %894 = load double, ptr %893, align 8, !tbaa !10
  %895 = fsub double %892, %894
  %896 = call double @llvm.fmuladd.f64(double %889, double %895, double %888)
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %17, double noundef %885, double noundef %896, ptr noundef nonnull %59, ptr noundef nonnull %60, ptr noundef nonnull %61, ptr noundef nonnull %70, ptr noundef nonnull %62, ptr noundef nonnull %71, ptr noundef %1)
  %897 = load ptr, ptr %108, align 8, !tbaa !9
  %898 = getelementptr inbounds double, ptr %897, i64 %.1013311534
  %899 = load double, ptr %898, align 8, !tbaa !10
  %900 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %81, ptr noundef %1)
  %901 = load ptr, ptr %108, align 8, !tbaa !9
  %902 = getelementptr inbounds double, ptr %901, i64 %763
  %903 = load double, ptr %902, align 8, !tbaa !10
  %904 = getelementptr inbounds double, ptr %901, i64 %.1013311534
  %905 = load double, ptr %904, align 8, !tbaa !10
  %906 = fsub double %903, %905
  %907 = call double @llvm.fmuladd.f64(double %900, double %906, double %899)
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %17, double noundef %907, double noundef %896, ptr noundef nonnull %67, ptr noundef nonnull %68, ptr noundef nonnull %69, ptr noundef nonnull %74, ptr noundef nonnull %76, ptr noundef nonnull %75, ptr noundef %1)
  %908 = load double, ptr %74, align 8, !tbaa !10
  %909 = load double, ptr %70, align 8, !tbaa !10
  %910 = fsub double %908, %909
  %911 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %910, ptr noundef %1)
  %912 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 5.000000e-16, ptr noundef %1)
  %913 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %911, double noundef %912)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %5, i1 noundef zeroext %913, ptr noundef nonnull @.str.19, i32 noundef 110119, ptr noundef nonnull @.str.843)
  br label %914

914:                                              ; preds = %871, %874
  %exitcond1684.not = icmp eq i64 %763, %indvars.iv
  br i1 %exitcond1684.not, label %._crit_edge1537, label %755, !llvm.loop !40

._crit_edge1537:                                  ; preds = %914
  %exitcond1685.not = icmp eq i64 %752, %indvars.iv1677
  br i1 %exitcond1685.not, label %._crit_edge1542, label %.lr.ph1536, !llvm.loop !41

._crit_edge1542:                                  ; preds = %._crit_edge1537
  %915 = load i8, ptr %5, align 1, !tbaa !5, !range !36, !noundef !37
  %916 = trunc nuw i8 %915 to i1
  br i1 %916, label %919, label %917

917:                                              ; preds = %._crit_edge1542
  %918 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %801, double noundef 1.000000e-03)
  br label %919

919:                                              ; preds = %917, %._crit_edge1542
  %920 = phi i1 [ true, %._crit_edge1542 ], [ %918, %917 ]
  %921 = zext i1 %920 to i8
  store i8 %921, ptr %5, align 1, !tbaa !5
  %922 = load i8, ptr %7, align 1, !tbaa !5, !range !36, !noundef !37
  %923 = trunc nuw i8 %922 to i1
  br i1 %923, label %927, label %924

924:                                              ; preds = %919
  %925 = call noundef zeroext i1 @_ZL27testspline2dunit_testunpackPKN11alglib_impl19spline2dinterpolantEPKNS_9ae_vectorES5_PNS_8ae_stateE(ptr noundef nonnull %17, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef %1)
  %926 = xor i1 %925, true
  br label %927

927:                                              ; preds = %924, %919
  %928 = phi i1 [ true, %919 ], [ %926, %924 ]
  %929 = zext i1 %928 to i8
  store i8 %929, ptr %7, align 1, !tbaa !5
  %930 = load i8, ptr %8, align 1, !tbaa !5, !range !36, !noundef !37
  %931 = trunc nuw i8 %930 to i1
  br i1 %931, label %935, label %932

932:                                              ; preds = %927
  %933 = call noundef zeroext i1 @_ZL29testspline2dunit_testlintransPKN11alglib_impl19spline2dinterpolantElddddPNS_8ae_stateE(ptr noundef nonnull %17, i64 noundef 1, double noundef %138, double noundef %140, double noundef %182, double noundef %183, ptr noundef %1)
  %934 = xor i1 %933, true
  br label %935

935:                                              ; preds = %932, %927
  %936 = phi i1 [ true, %927 ], [ %934, %932 ]
  %937 = zext i1 %936 to i8
  store i8 %937, ptr %8, align 1, !tbaa !5
  call void @_ZN11alglib_impl21spline2dbuildclampedvEPKNS_9ae_vectorElS2_lS2_lS2_lS2_lS2_lS2_S2_lPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %15, i64 noundef %.013151588, ptr noundef nonnull %16, i64 noundef %.013131585, ptr noundef nonnull %30, i64 noundef %343, ptr noundef nonnull %31, i64 noundef %344, ptr noundef nonnull %32, i64 noundef %345, ptr noundef nonnull %33, i64 noundef %346, ptr noundef nonnull %34, ptr noundef nonnull %21, i64 noundef 1, ptr noundef nonnull %17, ptr noundef %1)
  br label %.preheader1455

.preheader1455:                                   ; preds = %935, %955
  %.101547 = phi double [ 0.000000e+00, %935 ], [ %953, %955 ]
  %.1113501546 = phi i64 [ 0, %935 ], [ %956, %955 ]
  br label %938

938:                                              ; preds = %.preheader1455, %938
  %.111545 = phi double [ %.101547, %.preheader1455 ], [ %953, %938 ]
  %.1113321544 = phi i64 [ 0, %.preheader1455 ], [ %954, %938 ]
  %939 = load ptr, ptr %89, align 8, !tbaa !9
  %940 = getelementptr inbounds ptr, ptr %939, i64 %.1113501546
  %941 = load ptr, ptr %940, align 8, !tbaa !18
  %942 = getelementptr inbounds double, ptr %941, i64 %.1113321544
  %943 = load double, ptr %942, align 8, !tbaa !10
  %944 = load ptr, ptr %85, align 8, !tbaa !9
  %945 = getelementptr inbounds double, ptr %944, i64 %.1113321544
  %946 = load double, ptr %945, align 8, !tbaa !10
  %947 = load ptr, ptr %87, align 8, !tbaa !9
  %948 = getelementptr inbounds double, ptr %947, i64 %.1113501546
  %949 = load double, ptr %948, align 8, !tbaa !10
  %950 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %17, double noundef %946, double noundef %949, ptr noundef %1)
  %951 = fsub double %943, %950
  %952 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %951, ptr noundef %1)
  %953 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.111545, double noundef %952, ptr noundef %1)
  %954 = add nuw nsw i64 %.1113321544, 1
  %exitcond1686.not = icmp eq i64 %954, %.013151588
  br i1 %exitcond1686.not, label %955, label %938, !llvm.loop !42

955:                                              ; preds = %938
  %956 = add nuw nsw i64 %.1113501546, 1
  %exitcond1687.not = icmp eq i64 %956, %.013131585
  br i1 %exitcond1687.not, label %957, label %.preheader1455, !llvm.loop !43

957:                                              ; preds = %955
  %958 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %953, double noundef 0x3D95FD7FE1796496)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %958, ptr noundef nonnull @.str.19, i32 noundef 110147, ptr noundef nonnull @.str.844)
  %959 = icmp eq i64 %345, 1
  %960 = icmp eq i64 %345, 2
  %961 = icmp eq i64 %346, 1
  %962 = icmp eq i64 %346, 2
  br label %967

.preheader1467:                                   ; preds = %1029
  %963 = icmp eq i64 %343, 1
  %964 = icmp eq i64 %343, 2
  %965 = icmp eq i64 %344, 1
  %966 = icmp eq i64 %344, 2
  br label %1031

967:                                              ; preds = %957, %1029
  %.1213511548 = phi i64 [ 0, %957 ], [ %1030, %1029 ]
  br i1 %436, label %981, label %968

968:                                              ; preds = %967
  %969 = load ptr, ptr %87, align 8, !tbaa !9
  %970 = getelementptr inbounds double, ptr %969, i64 %.1213511548
  %971 = load double, ptr %970, align 8, !tbaa !10
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %17, double noundef %138, double noundef %971, ptr noundef nonnull %59, ptr noundef nonnull %60, ptr noundef nonnull %61, ptr noundef nonnull %70, ptr noundef nonnull %62, ptr noundef nonnull %71, ptr noundef %1)
  %972 = load double, ptr %60, align 8
  %.01294 = select i1 %959, double %972, double 0.000000e+00
  %973 = load double, ptr %70, align 8
  %.11295 = select i1 %960, double %973, double %.01294
  %974 = load ptr, ptr %104, align 8, !tbaa !9
  %975 = getelementptr inbounds double, ptr %974, i64 %.1213511548
  %976 = load double, ptr %975, align 8, !tbaa !10
  %977 = fsub double %.11295, %976
  %978 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %977, ptr noundef %1)
  %979 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 5.000000e-16, ptr noundef %1)
  %980 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %978, double noundef %979)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %980, ptr noundef nonnull @.str.19, i32 noundef 110166, ptr noundef nonnull @.str.845)
  br label %997

981:                                              ; preds = %967
  %982 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %81, ptr noundef %1)
  %983 = call double @llvm.fmuladd.f64(double %982, double %185, double %182)
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %17, double noundef %138, double noundef %983, ptr noundef nonnull %59, ptr noundef nonnull %60, ptr noundef nonnull %61, ptr noundef nonnull %70, ptr noundef nonnull %62, ptr noundef nonnull %71, ptr noundef %1)
  %984 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %81, ptr noundef %1)
  %985 = load ptr, ptr %108, align 8, !tbaa !9
  %986 = getelementptr inbounds i8, ptr %985, i64 8
  %987 = load double, ptr %986, align 8, !tbaa !10
  %988 = load double, ptr %985, align 8, !tbaa !10
  %989 = fsub double %987, %988
  %990 = call double @llvm.fmuladd.f64(double %984, double %989, double %138)
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %17, double noundef %990, double noundef %983, ptr noundef nonnull %63, ptr noundef nonnull %64, ptr noundef nonnull %65, ptr noundef nonnull %72, ptr noundef nonnull %66, ptr noundef nonnull %73, ptr noundef %1)
  %991 = load double, ptr %72, align 8, !tbaa !10
  %992 = load double, ptr %70, align 8, !tbaa !10
  %993 = fsub double %991, %992
  %994 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %993, ptr noundef %1)
  %995 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 5.000000e-16, ptr noundef %1)
  %996 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %994, double noundef %995)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %996, ptr noundef nonnull @.str.19, i32 noundef 110179, ptr noundef nonnull @.str.846)
  br label %997

997:                                              ; preds = %981, %968
  br i1 %439, label %1011, label %998

998:                                              ; preds = %997
  %999 = load ptr, ptr %87, align 8, !tbaa !9
  %1000 = getelementptr inbounds double, ptr %999, i64 %.1213511548
  %1001 = load double, ptr %1000, align 8, !tbaa !10
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %17, double noundef %140, double noundef %1001, ptr noundef nonnull %59, ptr noundef nonnull %60, ptr noundef nonnull %61, ptr noundef nonnull %70, ptr noundef nonnull %62, ptr noundef nonnull %71, ptr noundef %1)
  %1002 = load double, ptr %60, align 8
  %.21296 = select i1 %961, double %1002, double 0.000000e+00
  %1003 = load double, ptr %70, align 8
  %.31297 = select i1 %962, double %1003, double %.21296
  %1004 = load ptr, ptr %105, align 8, !tbaa !9
  %1005 = getelementptr inbounds double, ptr %1004, i64 %.1213511548
  %1006 = load double, ptr %1005, align 8, !tbaa !10
  %1007 = fsub double %.31297, %1006
  %1008 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1007, ptr noundef %1)
  %1009 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 5.000000e-16, ptr noundef %1)
  %1010 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1008, double noundef %1009)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %1010, ptr noundef nonnull @.str.19, i32 noundef 110197, ptr noundef nonnull @.str.847)
  br label %1029

1011:                                             ; preds = %997
  %1012 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %81, ptr noundef %1)
  %1013 = call double @llvm.fmuladd.f64(double %1012, double %185, double %182)
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %17, double noundef %140, double noundef %1013, ptr noundef nonnull %59, ptr noundef nonnull %60, ptr noundef nonnull %61, ptr noundef nonnull %70, ptr noundef nonnull %62, ptr noundef nonnull %71, ptr noundef %1)
  %1014 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %81, ptr noundef %1)
  %1015 = load ptr, ptr %108, align 8, !tbaa !9
  %1016 = getelementptr double, ptr %1015, i64 %.013151588
  %1017 = getelementptr i8, ptr %1016, i64 -16
  %1018 = load double, ptr %1017, align 8, !tbaa !10
  %1019 = getelementptr inbounds double, ptr %1015, i64 %116
  %1020 = load double, ptr %1019, align 8, !tbaa !10
  %1021 = fsub double %1018, %1020
  %1022 = call double @llvm.fmuladd.f64(double %1014, double %1021, double %140)
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %17, double noundef %1022, double noundef %1013, ptr noundef nonnull %63, ptr noundef nonnull %64, ptr noundef nonnull %65, ptr noundef nonnull %72, ptr noundef nonnull %66, ptr noundef nonnull %73, ptr noundef %1)
  %1023 = load double, ptr %72, align 8, !tbaa !10
  %1024 = load double, ptr %70, align 8, !tbaa !10
  %1025 = fsub double %1023, %1024
  %1026 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1025, ptr noundef %1)
  %1027 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 5.000000e-16, ptr noundef %1)
  %1028 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1026, double noundef %1027)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %1028, ptr noundef nonnull @.str.19, i32 noundef 110210, ptr noundef nonnull @.str.848)
  br label %1029

1029:                                             ; preds = %998, %1011
  %1030 = add nuw nsw i64 %.1213511548, 1
  %exitcond1688.not = icmp eq i64 %1030, %.013131585
  br i1 %exitcond1688.not, label %.preheader1467, label %967, !llvm.loop !44

1031:                                             ; preds = %.preheader1467, %1092
  %.1213331549 = phi i64 [ 0, %.preheader1467 ], [ %1093, %1092 ]
  br i1 %430, label %1045, label %1032

1032:                                             ; preds = %1031
  %1033 = load ptr, ptr %85, align 8, !tbaa !9
  %1034 = getelementptr inbounds double, ptr %1033, i64 %.1213331549
  %1035 = load double, ptr %1034, align 8, !tbaa !10
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %17, double noundef %1035, double noundef %182, ptr noundef nonnull %59, ptr noundef nonnull %60, ptr noundef nonnull %61, ptr noundef nonnull %70, ptr noundef nonnull %62, ptr noundef nonnull %71, ptr noundef %1)
  %1036 = load double, ptr %61, align 8
  %.41298 = select i1 %963, double %1036, double 0.000000e+00
  %1037 = load double, ptr %71, align 8
  %.51299 = select i1 %964, double %1037, double %.41298
  %1038 = load ptr, ptr %100, align 8, !tbaa !9
  %1039 = getelementptr inbounds double, ptr %1038, i64 %.1213331549
  %1040 = load double, ptr %1039, align 8, !tbaa !10
  %1041 = fsub double %.51299, %1040
  %1042 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1041, ptr noundef %1)
  %1043 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 5.000000e-16, ptr noundef %1)
  %1044 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1042, double noundef %1043)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %1044, ptr noundef nonnull @.str.19, i32 noundef 110231, ptr noundef nonnull @.str.849)
  br label %1061

1045:                                             ; preds = %1031
  %1046 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %81, ptr noundef %1)
  %1047 = call double @llvm.fmuladd.f64(double %1046, double %144, double %138)
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %17, double noundef %1047, double noundef %182, ptr noundef nonnull %59, ptr noundef nonnull %60, ptr noundef nonnull %61, ptr noundef nonnull %70, ptr noundef nonnull %62, ptr noundef nonnull %71, ptr noundef %1)
  %1048 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %81, ptr noundef %1)
  %1049 = load ptr, ptr %109, align 8, !tbaa !9
  %1050 = getelementptr inbounds i8, ptr %1049, i64 8
  %1051 = load double, ptr %1050, align 8, !tbaa !10
  %1052 = load double, ptr %1049, align 8, !tbaa !10
  %1053 = fsub double %1051, %1052
  %1054 = call double @llvm.fmuladd.f64(double %1048, double %1053, double %182)
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %17, double noundef %1047, double noundef %1054, ptr noundef nonnull %63, ptr noundef nonnull %64, ptr noundef nonnull %65, ptr noundef nonnull %72, ptr noundef nonnull %66, ptr noundef nonnull %73, ptr noundef %1)
  %1055 = load double, ptr %73, align 8, !tbaa !10
  %1056 = load double, ptr %71, align 8, !tbaa !10
  %1057 = fsub double %1055, %1056
  %1058 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1057, ptr noundef %1)
  %1059 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 5.000000e-16, ptr noundef %1)
  %1060 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1058, double noundef %1059)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %1060, ptr noundef nonnull @.str.19, i32 noundef 110244, ptr noundef nonnull @.str.850)
  br label %1061

1061:                                             ; preds = %1045, %1032
  br i1 %433, label %1075, label %1062

1062:                                             ; preds = %1061
  %1063 = load ptr, ptr %85, align 8, !tbaa !9
  %1064 = getelementptr inbounds double, ptr %1063, i64 %.1213331549
  %1065 = load double, ptr %1064, align 8, !tbaa !10
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %17, double noundef %1065, double noundef %183, ptr noundef nonnull %59, ptr noundef nonnull %60, ptr noundef nonnull %61, ptr noundef nonnull %70, ptr noundef nonnull %62, ptr noundef nonnull %71, ptr noundef %1)
  %1066 = load double, ptr %61, align 8
  %.61300 = select i1 %965, double %1066, double 0.000000e+00
  %1067 = load double, ptr %71, align 8
  %.7 = select i1 %966, double %1067, double %.61300
  %1068 = load ptr, ptr %101, align 8, !tbaa !9
  %1069 = getelementptr inbounds double, ptr %1068, i64 %.1213331549
  %1070 = load double, ptr %1069, align 8, !tbaa !10
  %1071 = fsub double %.7, %1070
  %1072 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1071, ptr noundef %1)
  %1073 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 5.000000e-16, ptr noundef %1)
  %1074 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1072, double noundef %1073)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %1074, ptr noundef nonnull @.str.19, i32 noundef 110262, ptr noundef nonnull @.str.851)
  br label %1092

1075:                                             ; preds = %1061
  %1076 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %81, ptr noundef %1)
  %1077 = call double @llvm.fmuladd.f64(double %1076, double %144, double %138)
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %17, double noundef %1077, double noundef %183, ptr noundef nonnull %59, ptr noundef nonnull %60, ptr noundef nonnull %61, ptr noundef nonnull %70, ptr noundef nonnull %62, ptr noundef nonnull %71, ptr noundef %1)
  %1078 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %81, ptr noundef %1)
  %1079 = load ptr, ptr %109, align 8, !tbaa !9
  %1080 = getelementptr inbounds double, ptr %1079, i64 %133
  %1081 = load double, ptr %1080, align 8, !tbaa !10
  %1082 = getelementptr inbounds double, ptr %1079, i64 %128
  %1083 = load double, ptr %1082, align 8, !tbaa !10
  %1084 = fsub double %1081, %1083
  %1085 = call double @llvm.fmuladd.f64(double %1078, double %1084, double %183)
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %17, double noundef %1077, double noundef %1085, ptr noundef nonnull %63, ptr noundef nonnull %64, ptr noundef nonnull %65, ptr noundef nonnull %72, ptr noundef nonnull %66, ptr noundef nonnull %73, ptr noundef %1)
  %1086 = load double, ptr %73, align 8, !tbaa !10
  %1087 = load double, ptr %71, align 8, !tbaa !10
  %1088 = fsub double %1086, %1087
  %1089 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1088, ptr noundef %1)
  %1090 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 5.000000e-16, ptr noundef %1)
  %1091 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1089, double noundef %1090)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %1091, ptr noundef nonnull @.str.19, i32 noundef 110275, ptr noundef nonnull @.str.852)
  br label %1092

1092:                                             ; preds = %1062, %1075
  %1093 = add nuw nsw i64 %.1213331549, 1
  %exitcond1689.not = icmp eq i64 %1093, %.013151588
  br i1 %exitcond1689.not, label %.preheader1454.preheader, label %1031, !llvm.loop !45

.preheader1454.preheader:                         ; preds = %1092
  %1094 = call noundef i64 @_ZN11alglib_impl6icase2EbllPNS_8ae_stateE(i1 noundef zeroext true, i64 noundef %345, i64 noundef %346, ptr noundef %1)
  %.not1411 = icmp eq i64 %1094, 0
  br i1 %.not1411, label %1109, label %1095

1095:                                             ; preds = %.preheader1454.preheader
  %1096 = call noundef i64 @_ZN11alglib_impl6icase2EbllPNS_8ae_stateE(i1 noundef zeroext true, i64 noundef %343, i64 noundef %344, ptr noundef %1)
  %.not1412 = icmp eq i64 %1096, 0
  br i1 %.not1412, label %1109, label %1097

1097:                                             ; preds = %1095
  %1098 = call noundef double @_ZN11alglib_impl6rcase2EbddPNS_8ae_stateE(i1 noundef zeroext true, double noundef %138, double noundef %140, ptr noundef %1)
  %1099 = call noundef double @_ZN11alglib_impl6rcase2EbddPNS_8ae_stateE(i1 noundef zeroext true, double noundef %182, double noundef %183, ptr noundef %1)
  %1100 = call noundef i64 @_ZN11alglib_impl6icase2EbllPNS_8ae_stateE(i1 noundef zeroext true, i64 noundef %345, i64 noundef %346, ptr noundef %1)
  %1101 = call noundef i64 @_ZN11alglib_impl6icase2EbllPNS_8ae_stateE(i1 noundef zeroext true, i64 noundef %343, i64 noundef %344, ptr noundef %1)
  call void @_ZL48testspline2dunit_computemixedderivativebybndtypePN11alglib_impl19spline2dinterpolantEddlldPdS2_PNS_8ae_stateE(ptr noundef nonnull %17, double noundef %1098, double noundef %1099, i64 noundef %1100, i64 noundef %1101, double noundef 1.000000e-05, ptr noundef nonnull %77, ptr noundef nonnull %78, ptr noundef %1)
  %1102 = load double, ptr %77, align 8, !tbaa !10
  %1103 = load ptr, ptr %107, align 8, !tbaa !9
  %1104 = load double, ptr %1103, align 8, !tbaa !10
  %1105 = fsub double %1102, %1104
  %1106 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1105, ptr noundef %1)
  %1107 = load double, ptr %78, align 8, !tbaa !10
  %1108 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1106, double noundef %1107)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %1108, ptr noundef nonnull @.str.19, i32 noundef 110285, ptr noundef nonnull @.str.853)
  br label %1109

1109:                                             ; preds = %.preheader1454.preheader, %1095, %1097
  %1110 = call noundef i64 @_ZN11alglib_impl6icase2EbllPNS_8ae_stateE(i1 noundef zeroext false, i64 noundef %345, i64 noundef %346, ptr noundef %1)
  %.not1411.1 = icmp eq i64 %1110, 0
  br i1 %.not1411.1, label %.preheader1454.1, label %1111

1111:                                             ; preds = %1109
  %1112 = call noundef i64 @_ZN11alglib_impl6icase2EbllPNS_8ae_stateE(i1 noundef zeroext true, i64 noundef %343, i64 noundef %344, ptr noundef %1)
  %.not1412.1 = icmp eq i64 %1112, 0
  br i1 %.not1412.1, label %.preheader1454.1, label %1113

1113:                                             ; preds = %1111
  %1114 = call noundef double @_ZN11alglib_impl6rcase2EbddPNS_8ae_stateE(i1 noundef zeroext false, double noundef %138, double noundef %140, ptr noundef %1)
  %1115 = call noundef double @_ZN11alglib_impl6rcase2EbddPNS_8ae_stateE(i1 noundef zeroext true, double noundef %182, double noundef %183, ptr noundef %1)
  %1116 = call noundef i64 @_ZN11alglib_impl6icase2EbllPNS_8ae_stateE(i1 noundef zeroext false, i64 noundef %345, i64 noundef %346, ptr noundef %1)
  %1117 = call noundef i64 @_ZN11alglib_impl6icase2EbllPNS_8ae_stateE(i1 noundef zeroext true, i64 noundef %343, i64 noundef %344, ptr noundef %1)
  call void @_ZL48testspline2dunit_computemixedderivativebybndtypePN11alglib_impl19spline2dinterpolantEddlldPdS2_PNS_8ae_stateE(ptr noundef nonnull %17, double noundef %1114, double noundef %1115, i64 noundef %1116, i64 noundef %1117, double noundef 1.000000e-05, ptr noundef nonnull %77, ptr noundef nonnull %78, ptr noundef %1)
  %1118 = load double, ptr %77, align 8, !tbaa !10
  %1119 = load ptr, ptr %107, align 8, !tbaa !9
  %1120 = getelementptr inbounds i8, ptr %1119, i64 8
  %1121 = load double, ptr %1120, align 8, !tbaa !10
  %1122 = fsub double %1118, %1121
  %1123 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1122, ptr noundef %1)
  %1124 = load double, ptr %78, align 8, !tbaa !10
  %1125 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1123, double noundef %1124)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %1125, ptr noundef nonnull @.str.19, i32 noundef 110285, ptr noundef nonnull @.str.853)
  br label %.preheader1454.1

.preheader1454.1:                                 ; preds = %1113, %1111, %1109
  %1126 = call noundef i64 @_ZN11alglib_impl6icase2EbllPNS_8ae_stateE(i1 noundef zeroext true, i64 noundef %345, i64 noundef %346, ptr noundef %1)
  %.not1411.11690 = icmp eq i64 %1126, 0
  br i1 %.not1411.11690, label %1142, label %1127

1127:                                             ; preds = %.preheader1454.1
  %1128 = call noundef i64 @_ZN11alglib_impl6icase2EbllPNS_8ae_stateE(i1 noundef zeroext false, i64 noundef %343, i64 noundef %344, ptr noundef %1)
  %.not1412.11691 = icmp eq i64 %1128, 0
  br i1 %.not1412.11691, label %1142, label %1129

1129:                                             ; preds = %1127
  %1130 = call noundef double @_ZN11alglib_impl6rcase2EbddPNS_8ae_stateE(i1 noundef zeroext true, double noundef %138, double noundef %140, ptr noundef %1)
  %1131 = call noundef double @_ZN11alglib_impl6rcase2EbddPNS_8ae_stateE(i1 noundef zeroext false, double noundef %182, double noundef %183, ptr noundef %1)
  %1132 = call noundef i64 @_ZN11alglib_impl6icase2EbllPNS_8ae_stateE(i1 noundef zeroext true, i64 noundef %345, i64 noundef %346, ptr noundef %1)
  %1133 = call noundef i64 @_ZN11alglib_impl6icase2EbllPNS_8ae_stateE(i1 noundef zeroext false, i64 noundef %343, i64 noundef %344, ptr noundef %1)
  call void @_ZL48testspline2dunit_computemixedderivativebybndtypePN11alglib_impl19spline2dinterpolantEddlldPdS2_PNS_8ae_stateE(ptr noundef nonnull %17, double noundef %1130, double noundef %1131, i64 noundef %1132, i64 noundef %1133, double noundef 1.000000e-05, ptr noundef nonnull %77, ptr noundef nonnull %78, ptr noundef %1)
  %1134 = load double, ptr %77, align 8, !tbaa !10
  %1135 = load ptr, ptr %107, align 8, !tbaa !9
  %1136 = getelementptr inbounds i8, ptr %1135, i64 16
  %1137 = load double, ptr %1136, align 8, !tbaa !10
  %1138 = fsub double %1134, %1137
  %1139 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1138, ptr noundef %1)
  %1140 = load double, ptr %78, align 8, !tbaa !10
  %1141 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1139, double noundef %1140)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %1141, ptr noundef nonnull @.str.19, i32 noundef 110285, ptr noundef nonnull @.str.853)
  br label %1142

1142:                                             ; preds = %1129, %1127, %.preheader1454.1
  %1143 = call noundef i64 @_ZN11alglib_impl6icase2EbllPNS_8ae_stateE(i1 noundef zeroext false, i64 noundef %345, i64 noundef %346, ptr noundef %1)
  %.not1411.1.1 = icmp eq i64 %1143, 0
  br i1 %.not1411.1.1, label %1159, label %1144

1144:                                             ; preds = %1142
  %1145 = call noundef i64 @_ZN11alglib_impl6icase2EbllPNS_8ae_stateE(i1 noundef zeroext false, i64 noundef %343, i64 noundef %344, ptr noundef %1)
  %.not1412.1.1 = icmp eq i64 %1145, 0
  br i1 %.not1412.1.1, label %1159, label %1146

1146:                                             ; preds = %1144
  %1147 = call noundef double @_ZN11alglib_impl6rcase2EbddPNS_8ae_stateE(i1 noundef zeroext false, double noundef %138, double noundef %140, ptr noundef %1)
  %1148 = call noundef double @_ZN11alglib_impl6rcase2EbddPNS_8ae_stateE(i1 noundef zeroext false, double noundef %182, double noundef %183, ptr noundef %1)
  %1149 = call noundef i64 @_ZN11alglib_impl6icase2EbllPNS_8ae_stateE(i1 noundef zeroext false, i64 noundef %345, i64 noundef %346, ptr noundef %1)
  %1150 = call noundef i64 @_ZN11alglib_impl6icase2EbllPNS_8ae_stateE(i1 noundef zeroext false, i64 noundef %343, i64 noundef %344, ptr noundef %1)
  call void @_ZL48testspline2dunit_computemixedderivativebybndtypePN11alglib_impl19spline2dinterpolantEddlldPdS2_PNS_8ae_stateE(ptr noundef nonnull %17, double noundef %1147, double noundef %1148, i64 noundef %1149, i64 noundef %1150, double noundef 1.000000e-05, ptr noundef nonnull %77, ptr noundef nonnull %78, ptr noundef %1)
  %1151 = load double, ptr %77, align 8, !tbaa !10
  %1152 = load ptr, ptr %107, align 8, !tbaa !9
  %1153 = getelementptr inbounds i8, ptr %1152, i64 24
  %1154 = load double, ptr %1153, align 8, !tbaa !10
  %1155 = fsub double %1151, %1154
  %1156 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1155, ptr noundef %1)
  %1157 = load double, ptr %78, align 8, !tbaa !10
  %1158 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1156, double noundef %1157)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %1158, ptr noundef nonnull @.str.19, i32 noundef 110285, ptr noundef nonnull @.str.853)
  br label %1159

1159:                                             ; preds = %1146, %1144, %1142
  call void @_ZL23testspline2dunit_lconstPKN11alglib_impl19spline2dinterpolantEPKNS_9ae_vectorES5_lldPdS6_S6_S6_S6_S6_PNS_8ae_stateE(ptr noundef nonnull %17, ptr noundef nonnull %19, ptr noundef nonnull %20, i64 noundef %.013131585, i64 noundef %.013151588, double noundef 1.000000e-03, ptr noundef nonnull %47, ptr noundef nonnull %48, ptr noundef nonnull %49, ptr noundef nonnull %55, ptr noundef nonnull %50, ptr noundef nonnull %56, ptr noundef %1)
  call void @_ZL23testspline2dunit_lconstPKN11alglib_impl19spline2dinterpolantEPKNS_9ae_vectorES5_lldPdS6_S6_S6_S6_S6_PNS_8ae_stateE(ptr noundef nonnull %17, ptr noundef nonnull %19, ptr noundef nonnull %20, i64 noundef %.013131585, i64 noundef %.013151588, double noundef 0x3F35D867C3ECE2A5, ptr noundef nonnull %51, ptr noundef nonnull %52, ptr noundef nonnull %53, ptr noundef nonnull %57, ptr noundef nonnull %54, ptr noundef nonnull %58, ptr noundef %1)
  %1160 = load double, ptr %51, align 8, !tbaa !10
  %1161 = load double, ptr %47, align 8, !tbaa !10
  %1162 = fdiv double %1160, %1161
  %1163 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1162, double noundef 1.200000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %1163, ptr noundef nonnull @.str.19, i32 noundef 110291, ptr noundef nonnull @.str.854)
  %1164 = load double, ptr %52, align 8, !tbaa !10
  %1165 = load double, ptr %48, align 8, !tbaa !10
  %1166 = fdiv double %1164, %1165
  %1167 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1166, double noundef 1.200000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %1167, ptr noundef nonnull @.str.19, i32 noundef 110292, ptr noundef nonnull @.str.855)
  %1168 = load double, ptr %53, align 8, !tbaa !10
  %1169 = load double, ptr %49, align 8, !tbaa !10
  %1170 = fdiv double %1168, %1169
  %1171 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1170, double noundef 1.200000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %1171, ptr noundef nonnull @.str.19, i32 noundef 110293, ptr noundef nonnull @.str.856)
  %1172 = load double, ptr %57, align 8, !tbaa !10
  %1173 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1172, double noundef 5.000000e-02)
  br i1 %1173, label %1174, label %1182

1174:                                             ; preds = %1159
  %1175 = load double, ptr %55, align 8, !tbaa !10
  %1176 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1175, double noundef 5.000000e-02)
  br i1 %1176, label %1177, label %1182

1177:                                             ; preds = %1174
  %1178 = load double, ptr %57, align 8, !tbaa !10
  %1179 = load double, ptr %55, align 8, !tbaa !10
  %1180 = fdiv double %1178, %1179
  %1181 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1180, double noundef 1.200000e+00)
  br label %1182

1182:                                             ; preds = %1177, %1174, %1159
  %1183 = phi i1 [ false, %1174 ], [ false, %1159 ], [ %1181, %1177 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %1183, ptr noundef nonnull @.str.19, i32 noundef 110294, ptr noundef nonnull @.str.857)
  %1184 = load double, ptr %54, align 8, !tbaa !10
  %1185 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1184, double noundef 5.000000e-02)
  br i1 %1185, label %1186, label %1194

1186:                                             ; preds = %1182
  %1187 = load double, ptr %50, align 8, !tbaa !10
  %1188 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1187, double noundef 5.000000e-02)
  br i1 %1188, label %1189, label %1194

1189:                                             ; preds = %1186
  %1190 = load double, ptr %54, align 8, !tbaa !10
  %1191 = load double, ptr %50, align 8, !tbaa !10
  %1192 = fdiv double %1190, %1191
  %1193 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1192, double noundef 1.200000e+00)
  br label %1194

1194:                                             ; preds = %1189, %1186, %1182
  %1195 = phi i1 [ false, %1186 ], [ false, %1182 ], [ %1193, %1189 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %1195, ptr noundef nonnull @.str.19, i32 noundef 110295, ptr noundef nonnull @.str.858)
  %1196 = load double, ptr %58, align 8, !tbaa !10
  %1197 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1196, double noundef 5.000000e-02)
  br i1 %1197, label %1198, label %.preheader1453.preheader

1198:                                             ; preds = %1194
  %1199 = load double, ptr %56, align 8, !tbaa !10
  %1200 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1199, double noundef 5.000000e-02)
  br i1 %1200, label %1201, label %.preheader1453.preheader

1201:                                             ; preds = %1198
  %1202 = load double, ptr %58, align 8, !tbaa !10
  %1203 = load double, ptr %56, align 8, !tbaa !10
  %1204 = fdiv double %1202, %1203
  %1205 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1204, double noundef 1.200000e+00)
  br label %.preheader1453.preheader

.preheader1453.preheader:                         ; preds = %1194, %1198, %1201
  %1206 = phi i1 [ false, %1198 ], [ false, %1194 ], [ %1205, %1201 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %1206, ptr noundef nonnull @.str.19, i32 noundef 110296, ptr noundef nonnull @.str.859)
  br label %.lr.ph1555.preheader

.lr.ph1555.preheader:                             ; preds = %._crit_edge1556, %.preheader1453.preheader
  %.121560 = phi double [ %1252, %._crit_edge1556 ], [ 0.000000e+00, %.preheader1453.preheader ]
  %.1413531559 = phi i64 [ %1307, %._crit_edge1556 ], [ 0, %.preheader1453.preheader ]
  br label %.lr.ph1555

.lr.ph1555:                                       ; preds = %.lr.ph1555.preheader, %.lr.ph1555
  %.131554 = phi double [ %1252, %.lr.ph1555 ], [ %.121560, %.lr.ph1555.preheader ]
  %.1413351553 = phi i64 [ %1214, %.lr.ph1555 ], [ 0, %.lr.ph1555.preheader ]
  %1207 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 3, ptr noundef %1)
  %1208 = load ptr, ptr %108, align 8, !tbaa !9
  %1209 = getelementptr inbounds double, ptr %1208, i64 %.1413351553
  %1210 = load double, ptr %1209, align 8, !tbaa !10
  %1211 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %1212 = call double @llvm.fmuladd.f64(double %1211, double 8.000000e-01, double 1.000000e-01)
  %1213 = load ptr, ptr %108, align 8, !tbaa !9
  %1214 = add nuw nsw i64 %.1413351553, 1
  %1215 = getelementptr inbounds double, ptr %1213, i64 %1214
  %1216 = load double, ptr %1215, align 8, !tbaa !10
  %1217 = getelementptr inbounds double, ptr %1213, i64 %.1413351553
  %1218 = load double, ptr %1217, align 8, !tbaa !10
  %1219 = fsub double %1216, %1218
  %1220 = call double @llvm.fmuladd.f64(double %1212, double %1219, double %1210)
  %1221 = icmp eq i64 %1207, 1
  %.21270 = select i1 %1221, double %1218, double %1220
  %1222 = icmp eq i64 %1207, 2
  %.31271 = select i1 %1222, double %1216, double %.21270
  %1223 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 3, ptr noundef %1)
  %1224 = load ptr, ptr %109, align 8, !tbaa !9
  %1225 = getelementptr inbounds double, ptr %1224, i64 %.1413531559
  %1226 = load double, ptr %1225, align 8, !tbaa !10
  %1227 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %1228 = call double @llvm.fmuladd.f64(double %1227, double 8.000000e-01, double 1.000000e-01)
  %1229 = load ptr, ptr %109, align 8, !tbaa !9
  %1230 = getelementptr inbounds double, ptr %1229, i64 %.1413531559
  %1231 = getelementptr inbounds i8, ptr %1230, i64 8
  %1232 = load double, ptr %1231, align 8, !tbaa !10
  %1233 = load double, ptr %1230, align 8, !tbaa !10
  %1234 = fsub double %1232, %1233
  %1235 = call double @llvm.fmuladd.f64(double %1228, double %1234, double %1226)
  %1236 = icmp eq i64 %1223, 1
  %.21267 = select i1 %1236, double %1233, double %1235
  %1237 = icmp eq i64 %1223, 2
  %.3 = select i1 %1237, double %1232, double %.21267
  call void @_ZL27testspline2dunit_twodnumderPKN11alglib_impl19spline2dinterpolantEdddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %17, double noundef %.31271, double noundef %.3, double noundef 1.000000e-05, ptr noundef nonnull %63, ptr noundef nonnull %64, ptr noundef nonnull %65, ptr noundef nonnull %72, ptr noundef nonnull %66, ptr noundef nonnull %73, ptr noundef %1)
  call void @_ZN11alglib_impl12spline2ddiffEPKNS_19spline2dinterpolantEddPdS3_S3_PNS_8ae_stateE(ptr noundef nonnull %17, double noundef %.31271, double noundef %.3, ptr noundef nonnull %59, ptr noundef nonnull %60, ptr noundef nonnull %61, ptr noundef %1)
  %1238 = load double, ptr %59, align 8, !tbaa !10
  %1239 = load double, ptr %63, align 8, !tbaa !10
  %1240 = fsub double %1238, %1239
  %1241 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1240, ptr noundef %1)
  %1242 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.131554, double noundef %1241, ptr noundef %1)
  %1243 = load double, ptr %60, align 8, !tbaa !10
  %1244 = load double, ptr %64, align 8, !tbaa !10
  %1245 = fsub double %1243, %1244
  %1246 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1245, ptr noundef %1)
  %1247 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1242, double noundef %1246, ptr noundef %1)
  %1248 = load double, ptr %61, align 8, !tbaa !10
  %1249 = load double, ptr %65, align 8, !tbaa !10
  %1250 = fsub double %1248, %1249
  %1251 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1250, ptr noundef %1)
  %1252 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1247, double noundef %1251, ptr noundef %1)
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %17, double noundef %.31271, double noundef %.3, ptr noundef nonnull %59, ptr noundef nonnull %60, ptr noundef nonnull %61, ptr noundef nonnull %70, ptr noundef nonnull %62, ptr noundef nonnull %71, ptr noundef %1)
  %1253 = load double, ptr %59, align 8, !tbaa !10
  %1254 = load double, ptr %63, align 8, !tbaa !10
  %1255 = fsub double %1253, %1254
  %1256 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1255, ptr noundef %1)
  %1257 = load double, ptr %59, align 8, !tbaa !10
  %1258 = load double, ptr %63, align 8, !tbaa !10
  %1259 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %1257, double noundef %1258, double noundef 1.000000e+00, ptr noundef %1)
  %1260 = fmul double %1259, 1.000000e-02
  %1261 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1256, double noundef %1260)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %5, i1 noundef zeroext %1261, ptr noundef nonnull @.str.19, i32 noundef 110340, ptr noundef nonnull @.str.860)
  %1262 = load double, ptr %60, align 8, !tbaa !10
  %1263 = load double, ptr %64, align 8, !tbaa !10
  %1264 = fsub double %1262, %1263
  %1265 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1264, ptr noundef %1)
  %1266 = load double, ptr %60, align 8, !tbaa !10
  %1267 = load double, ptr %64, align 8, !tbaa !10
  %1268 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %1266, double noundef %1267, double noundef 1.000000e+00, ptr noundef %1)
  %1269 = fmul double %1268, 1.000000e-02
  %1270 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1265, double noundef %1269)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %5, i1 noundef zeroext %1270, ptr noundef nonnull @.str.19, i32 noundef 110341, ptr noundef nonnull @.str.861)
  %1271 = load double, ptr %61, align 8, !tbaa !10
  %1272 = load double, ptr %65, align 8, !tbaa !10
  %1273 = fsub double %1271, %1272
  %1274 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1273, ptr noundef %1)
  %1275 = load double, ptr %61, align 8, !tbaa !10
  %1276 = load double, ptr %65, align 8, !tbaa !10
  %1277 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %1275, double noundef %1276, double noundef 1.000000e+00, ptr noundef %1)
  %1278 = fmul double %1277, 1.000000e-02
  %1279 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1274, double noundef %1278)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %5, i1 noundef zeroext %1279, ptr noundef nonnull @.str.19, i32 noundef 110342, ptr noundef nonnull @.str.862)
  %1280 = load double, ptr %70, align 8, !tbaa !10
  %1281 = load double, ptr %72, align 8, !tbaa !10
  %1282 = fsub double %1280, %1281
  %1283 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1282, ptr noundef %1)
  %1284 = load double, ptr %70, align 8, !tbaa !10
  %1285 = load double, ptr %72, align 8, !tbaa !10
  %1286 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %1284, double noundef %1285, double noundef 1.000000e+00, ptr noundef %1)
  %1287 = fmul double %1286, 1.000000e-02
  %1288 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1283, double noundef %1287)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %5, i1 noundef zeroext %1288, ptr noundef nonnull @.str.19, i32 noundef 110343, ptr noundef nonnull @.str.863)
  %1289 = load double, ptr %62, align 8, !tbaa !10
  %1290 = load double, ptr %66, align 8, !tbaa !10
  %1291 = fsub double %1289, %1290
  %1292 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1291, ptr noundef %1)
  %1293 = load double, ptr %62, align 8, !tbaa !10
  %1294 = load double, ptr %66, align 8, !tbaa !10
  %1295 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %1293, double noundef %1294, double noundef 1.000000e+00, ptr noundef %1)
  %1296 = fmul double %1295, 1.000000e-02
  %1297 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1292, double noundef %1296)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %5, i1 noundef zeroext %1297, ptr noundef nonnull @.str.19, i32 noundef 110344, ptr noundef nonnull @.str.864)
  %1298 = load double, ptr %71, align 8, !tbaa !10
  %1299 = load double, ptr %73, align 8, !tbaa !10
  %1300 = fsub double %1298, %1299
  %1301 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1300, ptr noundef %1)
  %1302 = load double, ptr %71, align 8, !tbaa !10
  %1303 = load double, ptr %73, align 8, !tbaa !10
  %1304 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %1302, double noundef %1303, double noundef 1.000000e+00, ptr noundef %1)
  %1305 = fmul double %1304, 1.000000e-02
  %1306 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1301, double noundef %1305)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %5, i1 noundef zeroext %1306, ptr noundef nonnull @.str.19, i32 noundef 110345, ptr noundef nonnull @.str.865)
  %exitcond1693.not = icmp eq i64 %1214, %indvars.iv
  br i1 %exitcond1693.not, label %._crit_edge1556, label %.lr.ph1555, !llvm.loop !46

._crit_edge1556:                                  ; preds = %.lr.ph1555
  %1307 = add nuw nsw i64 %.1413531559, 1
  %exitcond1694.not = icmp eq i64 %1307, %indvars.iv1677
  br i1 %exitcond1694.not, label %._crit_edge1561, label %.lr.ph1555.preheader, !llvm.loop !47

._crit_edge1561:                                  ; preds = %._crit_edge1556
  %1308 = load i8, ptr %5, align 1, !tbaa !5, !range !36, !noundef !37
  %1309 = trunc nuw i8 %1308 to i1
  br i1 %1309, label %1312, label %1310

1310:                                             ; preds = %._crit_edge1561
  %1311 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1252, double noundef 1.000000e-03)
  br label %1312

1312:                                             ; preds = %1310, %._crit_edge1561
  %1313 = phi i1 [ true, %._crit_edge1561 ], [ %1311, %1310 ]
  %1314 = zext i1 %1313 to i8
  store i8 %1314, ptr %5, align 1, !tbaa !5
  %1315 = call noundef zeroext i1 @_ZL27testspline2dunit_testunpackPKN11alglib_impl19spline2dinterpolantEPKNS_9ae_vectorES5_PNS_8ae_stateE(ptr noundef nonnull %17, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef %1)
  %1316 = xor i1 %1315, true
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %7, i1 noundef zeroext %1316, ptr noundef nonnull @.str.19, i32 noundef 110349, ptr noundef nonnull @.str.866)
  %1317 = call noundef zeroext i1 @_ZL29testspline2dunit_testlintransPKN11alglib_impl19spline2dinterpolantElddddPNS_8ae_stateE(ptr noundef nonnull %17, i64 noundef 1, double noundef %138, double noundef %140, double noundef %182, double noundef %183, ptr noundef %1)
  %1318 = xor i1 %1317, true
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %8, i1 noundef zeroext %1318, ptr noundef nonnull @.str.19, i32 noundef 110350, ptr noundef nonnull @.str.867)
  call void @_ZN11alglib_impl21spline2dbuildhermitevEPKNS_9ae_vectorElS2_lS2_S2_S2_S2_lPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %15, i64 noundef %.013151588, ptr noundef nonnull %16, i64 noundef %.013131585, ptr noundef nonnull %21, ptr noundef nonnull %24, ptr noundef nonnull %26, ptr noundef nonnull %28, i64 noundef 1, ptr noundef nonnull %17, ptr noundef %1)
  br label %.preheader1452

.preheader1452:                                   ; preds = %1312, %1389
  %.1513541564 = phi i64 [ 0, %1312 ], [ %1390, %1389 ]
  %1319 = mul nuw nsw i64 %.1513541564, %.013151588
  br label %1320

1320:                                             ; preds = %.preheader1452, %1320
  %.1513361563 = phi i64 [ 0, %.preheader1452 ], [ %1388, %1320 ]
  %1321 = load ptr, ptr %89, align 8, !tbaa !9
  %1322 = getelementptr inbounds ptr, ptr %1321, i64 %.1513541564
  %1323 = load ptr, ptr %1322, align 8, !tbaa !18
  %1324 = getelementptr inbounds double, ptr %1323, i64 %.1513361563
  %1325 = load double, ptr %1324, align 8, !tbaa !10
  %1326 = load ptr, ptr %85, align 8, !tbaa !9
  %1327 = getelementptr inbounds double, ptr %1326, i64 %.1513361563
  %1328 = load double, ptr %1327, align 8, !tbaa !10
  %1329 = load ptr, ptr %87, align 8, !tbaa !9
  %1330 = getelementptr inbounds double, ptr %1329, i64 %.1513541564
  %1331 = load double, ptr %1330, align 8, !tbaa !10
  %1332 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %17, double noundef %1328, double noundef %1331, ptr noundef %1)
  %1333 = fsub double %1325, %1332
  %1334 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1333, ptr noundef %1)
  %1335 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1334, double noundef 0x3D95FD7FE1796496)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %1335, ptr noundef nonnull @.str.19, i32 noundef 110363, ptr noundef nonnull @.str.868)
  %1336 = load ptr, ptr %85, align 8, !tbaa !9
  %1337 = getelementptr inbounds double, ptr %1336, i64 %.1513361563
  %1338 = load double, ptr %1337, align 8, !tbaa !10
  %1339 = load ptr, ptr %87, align 8, !tbaa !9
  %1340 = getelementptr inbounds double, ptr %1339, i64 %.1513541564
  %1341 = load double, ptr %1340, align 8, !tbaa !10
  call void @_ZL27testspline2dunit_twodnumderPKN11alglib_impl19spline2dinterpolantEdddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %17, double noundef %1338, double noundef %1341, double noundef 1.000000e-05, ptr noundef nonnull %63, ptr noundef nonnull %64, ptr noundef nonnull %65, ptr noundef nonnull %72, ptr noundef nonnull %66, ptr noundef nonnull %73, ptr noundef %1)
  %1342 = load ptr, ptr %85, align 8, !tbaa !9
  %1343 = getelementptr inbounds double, ptr %1342, i64 %.1513361563
  %1344 = load double, ptr %1343, align 8, !tbaa !10
  %1345 = load ptr, ptr %87, align 8, !tbaa !9
  %1346 = getelementptr inbounds double, ptr %1345, i64 %.1513541564
  %1347 = load double, ptr %1346, align 8, !tbaa !10
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %17, double noundef %1344, double noundef %1347, ptr noundef nonnull %63, ptr noundef nonnull %60, ptr noundef nonnull %61, ptr noundef nonnull %70, ptr noundef nonnull %62, ptr noundef nonnull %71, ptr noundef %1)
  %1348 = load double, ptr %64, align 8, !tbaa !10
  %1349 = load ptr, ptr %91, align 8, !tbaa !9
  %1350 = add nuw nsw i64 %.1513361563, %1319
  %1351 = getelementptr inbounds double, ptr %1349, i64 %1350
  %1352 = load double, ptr %1351, align 8, !tbaa !10
  %1353 = fsub double %1348, %1352
  %1354 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1353, ptr noundef %1)
  %1355 = load double, ptr %64, align 8, !tbaa !10
  %1356 = load ptr, ptr %91, align 8, !tbaa !9
  %1357 = getelementptr inbounds double, ptr %1356, i64 %1350
  %1358 = load double, ptr %1357, align 8, !tbaa !10
  %1359 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %1355, double noundef %1358, double noundef 1.000000e+00, ptr noundef %1)
  %1360 = fmul double %1359, 1.000000e-02
  %1361 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1354, double noundef %1360)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %1361, ptr noundef nonnull @.str.19, i32 noundef 110366, ptr noundef nonnull @.str.869)
  %1362 = load double, ptr %65, align 8, !tbaa !10
  %1363 = load ptr, ptr %92, align 8, !tbaa !9
  %1364 = getelementptr inbounds double, ptr %1363, i64 %1350
  %1365 = load double, ptr %1364, align 8, !tbaa !10
  %1366 = fsub double %1362, %1365
  %1367 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1366, ptr noundef %1)
  %1368 = load double, ptr %65, align 8, !tbaa !10
  %1369 = load ptr, ptr %92, align 8, !tbaa !9
  %1370 = getelementptr inbounds double, ptr %1369, i64 %1350
  %1371 = load double, ptr %1370, align 8, !tbaa !10
  %1372 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %1368, double noundef %1371, double noundef 1.000000e+00, ptr noundef %1)
  %1373 = fmul double %1372, 1.000000e-02
  %1374 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1367, double noundef %1373)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %1374, ptr noundef nonnull @.str.19, i32 noundef 110367, ptr noundef nonnull @.str.870)
  %1375 = load double, ptr %66, align 8, !tbaa !10
  %1376 = load ptr, ptr %93, align 8, !tbaa !9
  %1377 = getelementptr inbounds double, ptr %1376, i64 %1350
  %1378 = load double, ptr %1377, align 8, !tbaa !10
  %1379 = fsub double %1375, %1378
  %1380 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1379, ptr noundef %1)
  %1381 = load double, ptr %66, align 8, !tbaa !10
  %1382 = load ptr, ptr %93, align 8, !tbaa !9
  %1383 = getelementptr inbounds double, ptr %1382, i64 %1350
  %1384 = load double, ptr %1383, align 8, !tbaa !10
  %1385 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %1381, double noundef %1384, double noundef 1.000000e+00, ptr noundef %1)
  %1386 = fmul double %1385, 1.000000e-02
  %1387 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1380, double noundef %1386)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %1387, ptr noundef nonnull @.str.19, i32 noundef 110368, ptr noundef nonnull @.str.871)
  %1388 = add nuw nsw i64 %.1513361563, 1
  %exitcond1695.not = icmp eq i64 %1388, %.013151588
  br i1 %exitcond1695.not, label %1389, label %1320, !llvm.loop !48

1389:                                             ; preds = %1320
  %1390 = add nuw nsw i64 %.1513541564, 1
  %exitcond1696.not = icmp eq i64 %1390, %.013131585
  br i1 %exitcond1696.not, label %1391, label %.preheader1452, !llvm.loop !49

1391:                                             ; preds = %1389
  call void @_ZL23testspline2dunit_lconstPKN11alglib_impl19spline2dinterpolantEPKNS_9ae_vectorES5_lldPdS6_S6_S6_S6_S6_PNS_8ae_stateE(ptr noundef nonnull %17, ptr noundef nonnull %19, ptr noundef nonnull %20, i64 noundef %.013131585, i64 noundef %.013151588, double noundef 1.000000e-03, ptr noundef nonnull %47, ptr noundef nonnull %48, ptr noundef nonnull %49, ptr noundef nonnull %55, ptr noundef nonnull %50, ptr noundef nonnull %56, ptr noundef %1)
  call void @_ZL23testspline2dunit_lconstPKN11alglib_impl19spline2dinterpolantEPKNS_9ae_vectorES5_lldPdS6_S6_S6_S6_S6_PNS_8ae_stateE(ptr noundef nonnull %17, ptr noundef nonnull %19, ptr noundef nonnull %20, i64 noundef %.013131585, i64 noundef %.013151588, double noundef 0x3F35D867C3ECE2A5, ptr noundef nonnull %51, ptr noundef nonnull %52, ptr noundef nonnull %53, ptr noundef nonnull %57, ptr noundef nonnull %54, ptr noundef nonnull %58, ptr noundef %1)
  %1392 = load double, ptr %51, align 8, !tbaa !10
  %1393 = load double, ptr %47, align 8, !tbaa !10
  %1394 = fdiv double %1392, %1393
  %1395 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1394, double noundef 1.200000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %1395, ptr noundef nonnull @.str.19, i32 noundef 110373, ptr noundef nonnull @.str.872)
  %1396 = load double, ptr %52, align 8, !tbaa !10
  %1397 = load double, ptr %48, align 8, !tbaa !10
  %1398 = fdiv double %1396, %1397
  %1399 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1398, double noundef 1.200000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %1399, ptr noundef nonnull @.str.19, i32 noundef 110374, ptr noundef nonnull @.str.873)
  %1400 = load double, ptr %53, align 8, !tbaa !10
  %1401 = load double, ptr %49, align 8, !tbaa !10
  %1402 = fdiv double %1400, %1401
  %1403 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1402, double noundef 1.200000e+00)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %1403, ptr noundef nonnull @.str.19, i32 noundef 110375, ptr noundef nonnull @.str.874)
  %1404 = load double, ptr %54, align 8, !tbaa !10
  %1405 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1404, double noundef 5.000000e-02)
  br i1 %1405, label %1406, label %.preheader1451.preheader

1406:                                             ; preds = %1391
  %1407 = load double, ptr %50, align 8, !tbaa !10
  %1408 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1407, double noundef 5.000000e-02)
  br i1 %1408, label %1409, label %.preheader1451.preheader

1409:                                             ; preds = %1406
  %1410 = load double, ptr %54, align 8, !tbaa !10
  %1411 = load double, ptr %50, align 8, !tbaa !10
  %1412 = fdiv double %1410, %1411
  %1413 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1412, double noundef 1.200000e+00)
  br label %.preheader1451.preheader

.preheader1451.preheader:                         ; preds = %1391, %1406, %1409
  %1414 = phi i1 [ false, %1406 ], [ false, %1391 ], [ %1413, %1409 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %1414, ptr noundef nonnull @.str.19, i32 noundef 110376, ptr noundef nonnull @.str.875)
  br label %.lr.ph1567.preheader

.lr.ph1567.preheader:                             ; preds = %._crit_edge1568, %.preheader1451.preheader
  %.1613551570 = phi i64 [ %1509, %._crit_edge1568 ], [ 0, %.preheader1451.preheader ]
  br label %.lr.ph1567

.lr.ph1567:                                       ; preds = %.lr.ph1567.preheader, %.lr.ph1567
  %.1613371566 = phi i64 [ %1422, %.lr.ph1567 ], [ 0, %.lr.ph1567.preheader ]
  %1415 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 3, ptr noundef %1)
  %1416 = load ptr, ptr %108, align 8, !tbaa !9
  %1417 = getelementptr inbounds double, ptr %1416, i64 %.1613371566
  %1418 = load double, ptr %1417, align 8, !tbaa !10
  %1419 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %1420 = call double @llvm.fmuladd.f64(double %1419, double 8.000000e-01, double 1.000000e-01)
  %1421 = load ptr, ptr %108, align 8, !tbaa !9
  %1422 = add nuw nsw i64 %.1613371566, 1
  %1423 = getelementptr inbounds double, ptr %1421, i64 %1422
  %1424 = load double, ptr %1423, align 8, !tbaa !10
  %1425 = getelementptr inbounds double, ptr %1421, i64 %.1613371566
  %1426 = load double, ptr %1425, align 8, !tbaa !10
  %1427 = fsub double %1424, %1426
  %1428 = call double @llvm.fmuladd.f64(double %1420, double %1427, double %1418)
  %1429 = icmp eq i64 %1415, 1
  %.41272 = select i1 %1429, double %1426, double %1428
  %1430 = icmp eq i64 %1415, 2
  %.51273 = select i1 %1430, double %1424, double %.41272
  %1431 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 3, ptr noundef %1)
  %1432 = load ptr, ptr %109, align 8, !tbaa !9
  %1433 = getelementptr inbounds double, ptr %1432, i64 %.1613551570
  %1434 = load double, ptr %1433, align 8, !tbaa !10
  %1435 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %1436 = call double @llvm.fmuladd.f64(double %1435, double 8.000000e-01, double 1.000000e-01)
  %1437 = load ptr, ptr %109, align 8, !tbaa !9
  %1438 = getelementptr inbounds double, ptr %1437, i64 %.1613551570
  %1439 = getelementptr inbounds i8, ptr %1438, i64 8
  %1440 = load double, ptr %1439, align 8, !tbaa !10
  %1441 = load double, ptr %1438, align 8, !tbaa !10
  %1442 = fsub double %1440, %1441
  %1443 = call double @llvm.fmuladd.f64(double %1436, double %1442, double %1434)
  %1444 = icmp eq i64 %1431, 1
  %.4 = select i1 %1444, double %1441, double %1443
  %1445 = icmp eq i64 %1431, 2
  %.5 = select i1 %1445, double %1440, double %.4
  call void @_ZL27testspline2dunit_twodnumderPKN11alglib_impl19spline2dinterpolantEdddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %17, double noundef %.51273, double noundef %.5, double noundef 1.000000e-05, ptr noundef nonnull %63, ptr noundef nonnull %64, ptr noundef nonnull %65, ptr noundef nonnull %72, ptr noundef nonnull %66, ptr noundef nonnull %73, ptr noundef %1)
  call void @_ZN11alglib_impl12spline2ddiffEPKNS_19spline2dinterpolantEddPdS3_S3_PNS_8ae_stateE(ptr noundef nonnull %17, double noundef %.51273, double noundef %.5, ptr noundef nonnull %59, ptr noundef nonnull %60, ptr noundef nonnull %61, ptr noundef %1)
  %1446 = load double, ptr %59, align 8, !tbaa !10
  %1447 = load double, ptr %63, align 8, !tbaa !10
  %1448 = fsub double %1446, %1447
  %1449 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1448, ptr noundef %1)
  %1450 = load double, ptr %59, align 8, !tbaa !10
  %1451 = load double, ptr %63, align 8, !tbaa !10
  %1452 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %1450, double noundef %1451, double noundef 1.000000e+00, ptr noundef %1)
  %1453 = fmul double %1452, 1.000000e-02
  %1454 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1449, double noundef %1453)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %5, i1 noundef zeroext %1454, ptr noundef nonnull @.str.19, i32 noundef 110411, ptr noundef nonnull @.str.876)
  %1455 = load double, ptr %60, align 8, !tbaa !10
  %1456 = load double, ptr %64, align 8, !tbaa !10
  %1457 = fsub double %1455, %1456
  %1458 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1457, ptr noundef %1)
  %1459 = load double, ptr %60, align 8, !tbaa !10
  %1460 = load double, ptr %64, align 8, !tbaa !10
  %1461 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %1459, double noundef %1460, double noundef 1.000000e+00, ptr noundef %1)
  %1462 = fmul double %1461, 1.000000e-02
  %1463 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1458, double noundef %1462)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %5, i1 noundef zeroext %1463, ptr noundef nonnull @.str.19, i32 noundef 110412, ptr noundef nonnull @.str.877)
  %1464 = load double, ptr %61, align 8, !tbaa !10
  %1465 = load double, ptr %65, align 8, !tbaa !10
  %1466 = fsub double %1464, %1465
  %1467 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1466, ptr noundef %1)
  %1468 = load double, ptr %61, align 8, !tbaa !10
  %1469 = load double, ptr %65, align 8, !tbaa !10
  %1470 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %1468, double noundef %1469, double noundef 1.000000e+00, ptr noundef %1)
  %1471 = fmul double %1470, 1.000000e-02
  %1472 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1467, double noundef %1471)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %5, i1 noundef zeroext %1472, ptr noundef nonnull @.str.19, i32 noundef 110413, ptr noundef nonnull @.str.878)
  call void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %17, double noundef %.51273, double noundef %.5, ptr noundef nonnull %59, ptr noundef nonnull %60, ptr noundef nonnull %61, ptr noundef nonnull %70, ptr noundef nonnull %62, ptr noundef nonnull %71, ptr noundef %1)
  %1473 = load double, ptr %59, align 8, !tbaa !10
  %1474 = load double, ptr %63, align 8, !tbaa !10
  %1475 = fsub double %1473, %1474
  %1476 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1475, ptr noundef %1)
  %1477 = load double, ptr %59, align 8, !tbaa !10
  %1478 = load double, ptr %63, align 8, !tbaa !10
  %1479 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %1477, double noundef %1478, double noundef 1.000000e+00, ptr noundef %1)
  %1480 = fmul double %1479, 1.000000e-02
  %1481 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1476, double noundef %1480)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %5, i1 noundef zeroext %1481, ptr noundef nonnull @.str.19, i32 noundef 110419, ptr noundef nonnull @.str.879)
  %1482 = load double, ptr %60, align 8, !tbaa !10
  %1483 = load double, ptr %64, align 8, !tbaa !10
  %1484 = fsub double %1482, %1483
  %1485 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1484, ptr noundef %1)
  %1486 = load double, ptr %60, align 8, !tbaa !10
  %1487 = load double, ptr %64, align 8, !tbaa !10
  %1488 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %1486, double noundef %1487, double noundef 1.000000e+00, ptr noundef %1)
  %1489 = fmul double %1488, 1.000000e-02
  %1490 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1485, double noundef %1489)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %5, i1 noundef zeroext %1490, ptr noundef nonnull @.str.19, i32 noundef 110420, ptr noundef nonnull @.str.880)
  %1491 = load double, ptr %61, align 8, !tbaa !10
  %1492 = load double, ptr %65, align 8, !tbaa !10
  %1493 = fsub double %1491, %1492
  %1494 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1493, ptr noundef %1)
  %1495 = load double, ptr %61, align 8, !tbaa !10
  %1496 = load double, ptr %65, align 8, !tbaa !10
  %1497 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %1495, double noundef %1496, double noundef 1.000000e+00, ptr noundef %1)
  %1498 = fmul double %1497, 1.000000e-02
  %1499 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1494, double noundef %1498)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %5, i1 noundef zeroext %1499, ptr noundef nonnull @.str.19, i32 noundef 110421, ptr noundef nonnull @.str.881)
  %1500 = load double, ptr %62, align 8, !tbaa !10
  %1501 = load double, ptr %66, align 8, !tbaa !10
  %1502 = fsub double %1500, %1501
  %1503 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1502, ptr noundef %1)
  %1504 = load double, ptr %62, align 8, !tbaa !10
  %1505 = load double, ptr %66, align 8, !tbaa !10
  %1506 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %1504, double noundef %1505, double noundef 1.000000e+00, ptr noundef %1)
  %1507 = fmul double %1506, 1.000000e-02
  %1508 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1503, double noundef %1507)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %5, i1 noundef zeroext %1508, ptr noundef nonnull @.str.19, i32 noundef 110422, ptr noundef nonnull @.str.882)
  %exitcond1697.not = icmp eq i64 %1422, %indvars.iv
  br i1 %exitcond1697.not, label %._crit_edge1568, label %.lr.ph1567, !llvm.loop !50

._crit_edge1568:                                  ; preds = %.lr.ph1567
  %1509 = add nuw nsw i64 %.1613551570, 1
  %exitcond1698.not = icmp eq i64 %1509, %indvars.iv1677
  br i1 %exitcond1698.not, label %._crit_edge1571, label %.lr.ph1567.preheader, !llvm.loop !51

._crit_edge1571:                                  ; preds = %._crit_edge1568
  %1510 = call noundef zeroext i1 @_ZL27testspline2dunit_testunpackPKN11alglib_impl19spline2dinterpolantEPKNS_9ae_vectorES5_PNS_8ae_stateE(ptr noundef nonnull %17, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef %1)
  %1511 = xor i1 %1510, true
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %7, i1 noundef zeroext %1511, ptr noundef nonnull @.str.19, i32 noundef 110425, ptr noundef nonnull @.str.883)
  %1512 = call noundef zeroext i1 @_ZL29testspline2dunit_testlintransPKN11alglib_impl19spline2dinterpolantElddddPNS_8ae_stateE(ptr noundef nonnull %17, i64 noundef 1, double noundef %138, double noundef %140, double noundef %182, double noundef %183, ptr noundef %1)
  %1513 = xor i1 %1512, true
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %8, i1 noundef zeroext %1513, ptr noundef nonnull @.str.19, i32 noundef 110426, ptr noundef nonnull @.str.884)
  call void @_ZN11alglib_impl21spline2dbuildbicubicvEPKNS_9ae_vectorElS2_lS2_lPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %15, i64 noundef %.013151588, ptr noundef nonnull %16, i64 noundef %.013131585, ptr noundef nonnull %22, i64 noundef %123, ptr noundef nonnull %17, ptr noundef %1)
  %1514 = load i8, ptr %8, align 1, !tbaa !5, !range !36, !noundef !37
  %1515 = trunc nuw i8 %1514 to i1
  br i1 %1515, label %1519, label %1516

1516:                                             ; preds = %._crit_edge1571
  %1517 = call noundef zeroext i1 @_ZL29testspline2dunit_testlintransPKN11alglib_impl19spline2dinterpolantElddddPNS_8ae_stateE(ptr noundef nonnull %17, i64 noundef %123, double noundef %138, double noundef %140, double noundef %182, double noundef %183, ptr noundef %1)
  %1518 = xor i1 %1517, true
  br label %1519

1519:                                             ; preds = %1516, %._crit_edge1571
  %1520 = phi i1 [ true, %._crit_edge1571 ], [ %1518, %1516 ]
  %1521 = zext i1 %1520 to i8
  store i8 %1521, ptr %8, align 1, !tbaa !5
  %1522 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %1523 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1522, double noundef 5.000000e-01)
  br i1 %1523, label %1524, label %1525

1524:                                             ; preds = %1519
  call void @_ZN11alglib_impl20spline2dbuildbicubicEPKNS_9ae_vectorES2_PKNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef nonnull %44, i64 noundef %.013131585, i64 noundef %.013151588, ptr noundef nonnull %17, ptr noundef %1)
  br label %1526

1525:                                             ; preds = %1519
  call void @_ZN11alglib_impl21spline2dbuildbilinearEPKNS_9ae_vectorES2_PKNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef nonnull %44, i64 noundef %.013131585, i64 noundef %.013151588, ptr noundef nonnull %17, ptr noundef %1)
  br label %1526

1526:                                             ; preds = %1525, %1524
  call void @_ZL30testspline2dunit_unsetspline2dPN11alglib_impl19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %18, ptr noundef %1)
  call void @_ZN11alglib_impl12spline2dcopyEPKNS_19spline2dinterpolantEPS0_PNS_8ae_stateE(ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef %1)
  %1527 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %1528 = call double @llvm.fmuladd.f64(double %144, double %1527, double %138)
  %1529 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %1530 = call double @llvm.fmuladd.f64(double %185, double %1529, double %182)
  %1531 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %17, double noundef %1528, double noundef %1530, ptr noundef %1)
  %1532 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %18, double noundef %1528, double noundef %1530, ptr noundef %1)
  %1533 = fsub double %1531, %1532
  %1534 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1533, ptr noundef %1)
  %1535 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef 0.000000e+00, double noundef %1534, ptr noundef %1)
  %1536 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %1537 = call double @llvm.fmuladd.f64(double %144, double %1536, double %138)
  %1538 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %1539 = call double @llvm.fmuladd.f64(double %185, double %1538, double %182)
  %1540 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %17, double noundef %1537, double noundef %1539, ptr noundef %1)
  %1541 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %18, double noundef %1537, double noundef %1539, ptr noundef %1)
  %1542 = fsub double %1540, %1541
  %1543 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1542, ptr noundef %1)
  %1544 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1535, double noundef %1543, ptr noundef %1)
  %1545 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %1546 = call double @llvm.fmuladd.f64(double %144, double %1545, double %138)
  %1547 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %1548 = call double @llvm.fmuladd.f64(double %185, double %1547, double %182)
  %1549 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %17, double noundef %1546, double noundef %1548, ptr noundef %1)
  %1550 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %18, double noundef %1546, double noundef %1548, ptr noundef %1)
  %1551 = fsub double %1549, %1550
  %1552 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1551, ptr noundef %1)
  %1553 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1544, double noundef %1552, ptr noundef %1)
  %1554 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %1555 = call double @llvm.fmuladd.f64(double %144, double %1554, double %138)
  %1556 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %1557 = call double @llvm.fmuladd.f64(double %185, double %1556, double %182)
  %1558 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %17, double noundef %1555, double noundef %1557, ptr noundef %1)
  %1559 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %18, double noundef %1555, double noundef %1557, ptr noundef %1)
  %1560 = fsub double %1558, %1559
  %1561 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1560, ptr noundef %1)
  %1562 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1553, double noundef %1561, ptr noundef %1)
  %1563 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %1564 = call double @llvm.fmuladd.f64(double %144, double %1563, double %138)
  %1565 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %1566 = call double @llvm.fmuladd.f64(double %185, double %1565, double %182)
  %1567 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %17, double noundef %1564, double noundef %1566, ptr noundef %1)
  %1568 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %18, double noundef %1564, double noundef %1566, ptr noundef %1)
  %1569 = fsub double %1567, %1568
  %1570 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1569, ptr noundef %1)
  %1571 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1562, double noundef %1570, ptr noundef %1)
  br i1 %.212781583, label %1574, label %1572

1572:                                             ; preds = %1526
  %1573 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1571, double noundef 0x3D95FD7FE1796496)
  br label %1574

1574:                                             ; preds = %1572, %1526
  %1575 = phi i1 [ true, %1526 ], [ %1573, %1572 ]
  %1576 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %1577 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1576, double noundef 5.000000e-01)
  br i1 %1577, label %1578, label %1579

1578:                                             ; preds = %1574
  call void @_ZN11alglib_impl20spline2dbuildbicubicEPKNS_9ae_vectorES2_PKNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef nonnull %44, i64 noundef %.013131585, i64 noundef %.013151588, ptr noundef nonnull %17, ptr noundef %1)
  br label %1580

1579:                                             ; preds = %1574
  call void @_ZN11alglib_impl21spline2dbuildbilinearEPKNS_9ae_vectorES2_PKNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef nonnull %44, i64 noundef %.013131585, i64 noundef %.013151588, ptr noundef nonnull %17, ptr noundef %1)
  br label %1580

1580:                                             ; preds = %1579, %1578
  call void @_ZL30testspline2dunit_unsetspline2dPN11alglib_impl19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %18, ptr noundef %1)
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %82) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %83) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %84) #6
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %1, ptr noundef nonnull %83)
  call void @_ZN11alglib_impl18ae_serializer_initEPNS_13ae_serializerE(ptr noundef nonnull %82)
  call void @_ZN11alglib_impl25ae_serializer_alloc_startEPNS_13ae_serializerE(ptr noundef nonnull %82)
  call void @_ZN11alglib_impl13spline2dallocEPNS_13ae_serializerEPKNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %82, ptr noundef nonnull %17, ptr noundef %1)
  %1581 = call noundef i64 @_ZN11alglib_impl28ae_serializer_get_alloc_sizeEPNS_13ae_serializerE(ptr noundef nonnull %82)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %84, i8 0, i64 32, i1 false)
  %1582 = add nsw i64 %1581, 1
  call void @_ZN11alglib_impl10ae_db_initEPNS_12ae_dyn_blockElPNS_8ae_stateEb(ptr noundef nonnull %84, i64 noundef %1582, ptr noundef %1, i1 noundef zeroext true)
  %1583 = load volatile ptr, ptr %110, align 8, !tbaa !52
  call void @_ZN11alglib_impl24ae_serializer_sstart_strEPNS_13ae_serializerEPc(ptr noundef nonnull %82, ptr noundef %1583)
  call void @_ZN11alglib_impl17spline2dserializeEPNS_13ae_serializerEPKNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %82, ptr noundef nonnull %17, ptr noundef %1)
  call void @_ZN11alglib_impl18ae_serializer_stopEPNS_13ae_serializerEPNS_8ae_stateE(ptr noundef nonnull %82, ptr noundef %1)
  call void @_ZN11alglib_impl19ae_serializer_clearEPNS_13ae_serializerE(ptr noundef nonnull %82)
  call void @_ZN11alglib_impl18ae_serializer_initEPNS_13ae_serializerE(ptr noundef nonnull %82)
  %1584 = load volatile ptr, ptr %110, align 8, !tbaa !52
  call void @_ZN11alglib_impl24ae_serializer_ustart_strEPNS_13ae_serializerEPKc(ptr noundef nonnull %82, ptr noundef %1584)
  call void @_ZN11alglib_impl19spline2dunserializeEPNS_13ae_serializerEPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %82, ptr noundef nonnull %18, ptr noundef %1)
  call void @_ZN11alglib_impl18ae_serializer_stopEPNS_13ae_serializerEPNS_8ae_stateE(ptr noundef nonnull %82, ptr noundef %1)
  call void @_ZN11alglib_impl19ae_serializer_clearEPNS_13ae_serializerE(ptr noundef nonnull %82)
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1)
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %84) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %83) #6
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %82) #6
  %1585 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %1586 = call double @llvm.fmuladd.f64(double %144, double %1585, double %138)
  %1587 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %1588 = call double @llvm.fmuladd.f64(double %185, double %1587, double %182)
  %1589 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %17, double noundef %1586, double noundef %1588, ptr noundef %1)
  %1590 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %18, double noundef %1586, double noundef %1588, ptr noundef %1)
  %1591 = fsub double %1589, %1590
  %1592 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1591, ptr noundef %1)
  %1593 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef 0.000000e+00, double noundef %1592, ptr noundef %1)
  %1594 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %1595 = call double @llvm.fmuladd.f64(double %144, double %1594, double %138)
  %1596 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %1597 = call double @llvm.fmuladd.f64(double %185, double %1596, double %182)
  %1598 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %17, double noundef %1595, double noundef %1597, ptr noundef %1)
  %1599 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %18, double noundef %1595, double noundef %1597, ptr noundef %1)
  %1600 = fsub double %1598, %1599
  %1601 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1600, ptr noundef %1)
  %1602 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1593, double noundef %1601, ptr noundef %1)
  %1603 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %1604 = call double @llvm.fmuladd.f64(double %144, double %1603, double %138)
  %1605 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %1606 = call double @llvm.fmuladd.f64(double %185, double %1605, double %182)
  %1607 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %17, double noundef %1604, double noundef %1606, ptr noundef %1)
  %1608 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %18, double noundef %1604, double noundef %1606, ptr noundef %1)
  %1609 = fsub double %1607, %1608
  %1610 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1609, ptr noundef %1)
  %1611 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1602, double noundef %1610, ptr noundef %1)
  %1612 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %1613 = call double @llvm.fmuladd.f64(double %144, double %1612, double %138)
  %1614 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %1615 = call double @llvm.fmuladd.f64(double %185, double %1614, double %182)
  %1616 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %17, double noundef %1613, double noundef %1615, ptr noundef %1)
  %1617 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %18, double noundef %1613, double noundef %1615, ptr noundef %1)
  %1618 = fsub double %1616, %1617
  %1619 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1618, ptr noundef %1)
  %1620 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1611, double noundef %1619, ptr noundef %1)
  %1621 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %1622 = call double @llvm.fmuladd.f64(double %144, double %1621, double %138)
  %1623 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %1624 = call double @llvm.fmuladd.f64(double %185, double %1623, double %182)
  %1625 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %17, double noundef %1622, double noundef %1624, ptr noundef %1)
  %1626 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %18, double noundef %1622, double noundef %1624, ptr noundef %1)
  %1627 = fsub double %1625, %1626
  %1628 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1627, ptr noundef %1)
  %1629 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1620, double noundef %1628, ptr noundef %1)
  %1630 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1629, double noundef 0x3D95FD7FE1796496)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %6, i1 noundef zeroext %1630, ptr noundef nonnull @.str.19, i32 noundef 110506, ptr noundef nonnull @.str.885)
  br label %1631

1631:                                             ; preds = %1580, %1785
  %.013111581 = phi i64 [ 0, %1580 ], [ %1786, %1785 ]
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %23, i64 noundef %126, ptr noundef %1)
  br label %.preheader1448

.preheader1448:                                   ; preds = %1631, %1746
  %.1913581577 = phi i64 [ 0, %1631 ], [ %1747, %1746 ]
  %1632 = mul nuw nsw i64 %.1913581577, %.013151588
  %1633 = load ptr, ptr %89, align 8, !tbaa !9
  %1634 = getelementptr inbounds ptr, ptr %1633, i64 %.1913581577
  %1635 = load ptr, ptr %1634, align 8, !tbaa !18
  %1636 = load double, ptr %1635, align 8, !tbaa !10
  %1637 = load ptr, ptr %111, align 8, !tbaa !9
  %1638 = load ptr, ptr %1637, align 8, !tbaa !18
  %1639 = getelementptr inbounds double, ptr %1638, i64 %.1913581577
  store double %1636, ptr %1639, align 8, !tbaa !10
  %1640 = load ptr, ptr %90, align 8, !tbaa !9
  %1641 = getelementptr inbounds double, ptr %1640, i64 %1632
  %1642 = load double, ptr %1641, align 8, !tbaa !10
  %1643 = load ptr, ptr %112, align 8, !tbaa !9
  %1644 = getelementptr inbounds double, ptr %1643, i64 %.1913581577
  store double %1642, ptr %1644, align 8, !tbaa !10
  %1645 = load ptr, ptr %89, align 8, !tbaa !9
  %1646 = getelementptr inbounds ptr, ptr %1645, i64 %.1913581577
  %1647 = load ptr, ptr %1646, align 8, !tbaa !18
  %1648 = getelementptr inbounds i8, ptr %1647, i64 8
  %1649 = load double, ptr %1648, align 8, !tbaa !10
  %1650 = load ptr, ptr %111, align 8, !tbaa !9
  %1651 = getelementptr inbounds i8, ptr %1650, i64 8
  %1652 = load ptr, ptr %1651, align 8, !tbaa !18
  %1653 = getelementptr inbounds double, ptr %1652, i64 %.1913581577
  store double %1649, ptr %1653, align 8, !tbaa !10
  %1654 = load ptr, ptr %90, align 8, !tbaa !9
  %1655 = getelementptr inbounds double, ptr %1654, i64 %1632
  %1656 = getelementptr inbounds i8, ptr %1655, i64 8
  %1657 = load double, ptr %1656, align 8, !tbaa !10
  %1658 = load ptr, ptr %112, align 8, !tbaa !9
  %1659 = getelementptr inbounds double, ptr %1658, i64 %.013131585
  %1660 = getelementptr inbounds double, ptr %1659, i64 %.1913581577
  store double %1657, ptr %1660, align 8, !tbaa !10
  br i1 %exitcond1701.not.1, label %1746, label %1661, !llvm.loop !54

1661:                                             ; preds = %.preheader1448
  %1662 = load ptr, ptr %89, align 8, !tbaa !9
  %1663 = getelementptr inbounds ptr, ptr %1662, i64 %.1913581577
  %1664 = load ptr, ptr %1663, align 8, !tbaa !18
  %1665 = getelementptr inbounds i8, ptr %1664, i64 16
  %1666 = load double, ptr %1665, align 8, !tbaa !10
  %1667 = load ptr, ptr %111, align 8, !tbaa !9
  %1668 = getelementptr inbounds i8, ptr %1667, i64 16
  %1669 = load ptr, ptr %1668, align 8, !tbaa !18
  %1670 = getelementptr inbounds double, ptr %1669, i64 %.1913581577
  store double %1666, ptr %1670, align 8, !tbaa !10
  %1671 = load ptr, ptr %90, align 8, !tbaa !9
  %1672 = getelementptr inbounds double, ptr %1671, i64 %1632
  %1673 = getelementptr inbounds i8, ptr %1672, i64 16
  %1674 = load double, ptr %1673, align 8, !tbaa !10
  %1675 = load ptr, ptr %112, align 8, !tbaa !9
  %1676 = getelementptr inbounds i8, ptr %1675, i64 %.idx
  %1677 = getelementptr inbounds double, ptr %1676, i64 %.1913581577
  store double %1674, ptr %1677, align 8, !tbaa !10
  br i1 %exitcond1701.not.2, label %1746, label %1678, !llvm.loop !54

1678:                                             ; preds = %1661
  %1679 = load ptr, ptr %89, align 8, !tbaa !9
  %1680 = getelementptr inbounds ptr, ptr %1679, i64 %.1913581577
  %1681 = load ptr, ptr %1680, align 8, !tbaa !18
  %1682 = getelementptr inbounds i8, ptr %1681, i64 24
  %1683 = load double, ptr %1682, align 8, !tbaa !10
  %1684 = load ptr, ptr %111, align 8, !tbaa !9
  %1685 = getelementptr inbounds i8, ptr %1684, i64 24
  %1686 = load ptr, ptr %1685, align 8, !tbaa !18
  %1687 = getelementptr inbounds double, ptr %1686, i64 %.1913581577
  store double %1683, ptr %1687, align 8, !tbaa !10
  %1688 = load ptr, ptr %90, align 8, !tbaa !9
  %1689 = getelementptr inbounds double, ptr %1688, i64 %1632
  %1690 = getelementptr inbounds i8, ptr %1689, i64 24
  %1691 = load double, ptr %1690, align 8, !tbaa !10
  %1692 = load ptr, ptr %112, align 8, !tbaa !9
  %1693 = getelementptr inbounds i8, ptr %1692, i64 %.idx1801
  %1694 = getelementptr inbounds double, ptr %1693, i64 %.1913581577
  store double %1691, ptr %1694, align 8, !tbaa !10
  br i1 %exitcond1701.not.3, label %1746, label %1695, !llvm.loop !54

1695:                                             ; preds = %1678
  %1696 = load ptr, ptr %89, align 8, !tbaa !9
  %1697 = getelementptr inbounds ptr, ptr %1696, i64 %.1913581577
  %1698 = load ptr, ptr %1697, align 8, !tbaa !18
  %1699 = getelementptr inbounds i8, ptr %1698, i64 32
  %1700 = load double, ptr %1699, align 8, !tbaa !10
  %1701 = load ptr, ptr %111, align 8, !tbaa !9
  %1702 = getelementptr inbounds i8, ptr %1701, i64 32
  %1703 = load ptr, ptr %1702, align 8, !tbaa !18
  %1704 = getelementptr inbounds double, ptr %1703, i64 %.1913581577
  store double %1700, ptr %1704, align 8, !tbaa !10
  %1705 = load ptr, ptr %90, align 8, !tbaa !9
  %1706 = getelementptr inbounds double, ptr %1705, i64 %1632
  %1707 = getelementptr inbounds i8, ptr %1706, i64 32
  %1708 = load double, ptr %1707, align 8, !tbaa !10
  %1709 = load ptr, ptr %112, align 8, !tbaa !9
  %1710 = getelementptr inbounds i8, ptr %1709, i64 %.idx1802
  %1711 = getelementptr inbounds double, ptr %1710, i64 %.1913581577
  store double %1708, ptr %1711, align 8, !tbaa !10
  br i1 %exitcond1701.not.4, label %1746, label %1712, !llvm.loop !54

1712:                                             ; preds = %1695
  %1713 = load ptr, ptr %89, align 8, !tbaa !9
  %1714 = getelementptr inbounds ptr, ptr %1713, i64 %.1913581577
  %1715 = load ptr, ptr %1714, align 8, !tbaa !18
  %1716 = getelementptr inbounds i8, ptr %1715, i64 40
  %1717 = load double, ptr %1716, align 8, !tbaa !10
  %1718 = load ptr, ptr %111, align 8, !tbaa !9
  %1719 = getelementptr inbounds i8, ptr %1718, i64 40
  %1720 = load ptr, ptr %1719, align 8, !tbaa !18
  %1721 = getelementptr inbounds double, ptr %1720, i64 %.1913581577
  store double %1717, ptr %1721, align 8, !tbaa !10
  %1722 = load ptr, ptr %90, align 8, !tbaa !9
  %1723 = getelementptr inbounds double, ptr %1722, i64 %1632
  %1724 = getelementptr inbounds i8, ptr %1723, i64 40
  %1725 = load double, ptr %1724, align 8, !tbaa !10
  %1726 = load ptr, ptr %112, align 8, !tbaa !9
  %1727 = getelementptr inbounds i8, ptr %1726, i64 %.idx1803
  %1728 = getelementptr inbounds double, ptr %1727, i64 %.1913581577
  store double %1725, ptr %1728, align 8, !tbaa !10
  br i1 %exitcond1701.not.5, label %1746, label %1729, !llvm.loop !54

1729:                                             ; preds = %1712
  %1730 = load ptr, ptr %89, align 8, !tbaa !9
  %1731 = getelementptr inbounds ptr, ptr %1730, i64 %.1913581577
  %1732 = load ptr, ptr %1731, align 8, !tbaa !18
  %1733 = getelementptr inbounds i8, ptr %1732, i64 48
  %1734 = load double, ptr %1733, align 8, !tbaa !10
  %1735 = load ptr, ptr %111, align 8, !tbaa !9
  %1736 = getelementptr inbounds i8, ptr %1735, i64 48
  %1737 = load ptr, ptr %1736, align 8, !tbaa !18
  %1738 = getelementptr inbounds double, ptr %1737, i64 %.1913581577
  store double %1734, ptr %1738, align 8, !tbaa !10
  %1739 = load ptr, ptr %90, align 8, !tbaa !9
  %1740 = getelementptr inbounds double, ptr %1739, i64 %1632
  %1741 = getelementptr inbounds i8, ptr %1740, i64 48
  %1742 = load double, ptr %1741, align 8, !tbaa !10
  %1743 = load ptr, ptr %112, align 8, !tbaa !9
  %1744 = getelementptr inbounds i8, ptr %1743, i64 %.idx1804
  %1745 = getelementptr inbounds double, ptr %1744, i64 %.1913581577
  store double %1742, ptr %1745, align 8, !tbaa !10
  br label %1746

1746:                                             ; preds = %1729, %1712, %1695, %1678, %1661, %.preheader1448
  %1747 = add nuw nsw i64 %.1913581577, 1
  %exitcond1702.not = icmp eq i64 %1747, %.013131585
  br i1 %exitcond1702.not, label %1748, label %.preheader1448, !llvm.loop !55

1748:                                             ; preds = %1746
  %1749 = call noundef i64 @_ZN11alglib_impl5imin4EllllPNS_8ae_stateE(i64 noundef %343, i64 noundef %344, i64 noundef %345, i64 noundef %346, ptr noundef %1)
  %.not1405 = icmp eq i64 %1749, 0
  br i1 %.not1405, label %1750, label %.preheader1447

1750:                                             ; preds = %1748
  %1751 = call noundef i64 @_ZN11alglib_impl5imax4EllllPNS_8ae_stateE(i64 noundef %343, i64 noundef %344, i64 noundef %345, i64 noundef %346, ptr noundef %1)
  %.not1406 = icmp eq i64 %1751, 0
  br i1 %.not1406, label %1770, label %.preheader1447

.preheader1447:                                   ; preds = %1750, %1748
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %40, i64 noundef 4, ptr noundef %1)
  %1752 = load ptr, ptr %107, align 8, !tbaa !9
  %1753 = load double, ptr %1752, align 8, !tbaa !10
  %1754 = load ptr, ptr %113, align 8, !tbaa !9
  store double %1753, ptr %1754, align 8, !tbaa !10
  %1755 = load ptr, ptr %107, align 8, !tbaa !9
  %1756 = getelementptr inbounds i8, ptr %1755, i64 8
  %1757 = load double, ptr %1756, align 8, !tbaa !10
  %1758 = load ptr, ptr %113, align 8, !tbaa !9
  %1759 = getelementptr inbounds i8, ptr %1758, i64 16
  store double %1757, ptr %1759, align 8, !tbaa !10
  %1760 = load ptr, ptr %107, align 8, !tbaa !9
  %1761 = getelementptr inbounds i8, ptr %1760, i64 16
  %1762 = load double, ptr %1761, align 8, !tbaa !10
  %1763 = load ptr, ptr %113, align 8, !tbaa !9
  %1764 = getelementptr inbounds i8, ptr %1763, i64 8
  store double %1762, ptr %1764, align 8, !tbaa !10
  %1765 = load ptr, ptr %107, align 8, !tbaa !9
  %1766 = getelementptr inbounds i8, ptr %1765, i64 24
  %1767 = load double, ptr %1766, align 8, !tbaa !10
  %1768 = load ptr, ptr %113, align 8, !tbaa !9
  %1769 = getelementptr inbounds i8, ptr %1768, i64 24
  store double %1767, ptr %1769, align 8, !tbaa !10
  br label %.loopexit

1770:                                             ; preds = %1750
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %40, i64 noundef 0, ptr noundef %1)
  br label %.loopexit

.loopexit:                                        ; preds = %.preheader1447, %1770
  switch i64 %.013111581, label %.preheader1791 [
    i64 0, label %1771
    i64 1, label %1772
    i64 2, label %1773
  ]

1771:                                             ; preds = %.loopexit
  call void @_ZN11alglib_impl21spline2dbuildbilinearEPKNS_9ae_vectorES2_PKNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef nonnull %44, i64 noundef %.013131585, i64 noundef %.013151588, ptr noundef nonnull %17, ptr noundef %1)
  call void @_ZN11alglib_impl21spline2dbuildbilinearEPKNS_9ae_vectorES2_PKNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef nonnull %15, ptr noundef nonnull %46, i64 noundef %.013151588, i64 noundef %.013131585, ptr noundef nonnull %18, ptr noundef %1)
  br label %.preheader1791

1772:                                             ; preds = %.loopexit
  call void @_ZN11alglib_impl20spline2dbuildbicubicEPKNS_9ae_vectorES2_PKNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef nonnull %44, i64 noundef %.013131585, i64 noundef %.013151588, ptr noundef nonnull %17, ptr noundef %1)
  call void @_ZN11alglib_impl20spline2dbuildbicubicEPKNS_9ae_vectorES2_PKNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef nonnull %15, ptr noundef nonnull %46, i64 noundef %.013151588, i64 noundef %.013131585, ptr noundef nonnull %18, ptr noundef %1)
  br label %.preheader1791

1773:                                             ; preds = %.loopexit
  call void @_ZN11alglib_impl21spline2dbuildclampedvEPKNS_9ae_vectorElS2_lS2_lS2_lS2_lS2_lS2_S2_lPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %15, i64 noundef %.013151588, ptr noundef nonnull %16, i64 noundef %.013131585, ptr noundef nonnull %30, i64 noundef %343, ptr noundef nonnull %31, i64 noundef %344, ptr noundef nonnull %32, i64 noundef %345, ptr noundef nonnull %33, i64 noundef %346, ptr noundef nonnull %34, ptr noundef nonnull %21, i64 noundef 1, ptr noundef nonnull %17, ptr noundef %1)
  call void @_ZN11alglib_impl21spline2dbuildclampedvEPKNS_9ae_vectorElS2_lS2_lS2_lS2_lS2_lS2_S2_lPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %16, i64 noundef %.013131585, ptr noundef nonnull %15, i64 noundef %.013151588, ptr noundef nonnull %32, i64 noundef %345, ptr noundef nonnull %33, i64 noundef %346, ptr noundef nonnull %30, i64 noundef %343, ptr noundef nonnull %31, i64 noundef %344, ptr noundef nonnull %40, ptr noundef nonnull %23, i64 noundef 1, ptr noundef nonnull %18, ptr noundef %1)
  br label %.preheader1791

.preheader1791:                                   ; preds = %1772, %1771, %.loopexit, %1773
  br label %1774

1774:                                             ; preds = %.preheader1791, %1774
  %.2113601580 = phi i64 [ %1784, %1774 ], [ 1, %.preheader1791 ]
  %1775 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %1776 = call double @llvm.fmuladd.f64(double %144, double %1775, double %138)
  %1777 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %1778 = call double @llvm.fmuladd.f64(double %185, double %1777, double %182)
  %1779 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %17, double noundef %1776, double noundef %1778, ptr noundef %1)
  %1780 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %18, double noundef %1778, double noundef %1776, ptr noundef %1)
  %1781 = fsub double %1779, %1780
  %1782 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1781, ptr noundef %1)
  %1783 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1782, double noundef 0x3D95FD7FE1796496)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %9, i1 noundef zeroext %1783, ptr noundef nonnull @.str.19, i32 noundef 110564, ptr noundef nonnull @.str.886)
  %1784 = add nuw nsw i64 %.2113601580, 1
  %exitcond1704.not = icmp eq i64 %1784, 11
  br i1 %exitcond1704.not, label %1785, label %1774, !llvm.loop !56

1785:                                             ; preds = %1774
  %1786 = add nuw nsw i64 %.013111581, 1
  %exitcond1705.not = icmp eq i64 %1786, 3
  br i1 %exitcond1705.not, label %1787, label %1631, !llvm.loop !57

1787:                                             ; preds = %1785
  %1788 = add nuw nsw i64 %.012921582, 1
  %exitcond1706.not = icmp eq i64 %1788, 11
  br i1 %exitcond1706.not, label %1789, label %.peel.next, !llvm.loop !58

1789:                                             ; preds = %1787
  %1790 = add nuw nsw i64 %.013131585, 1
  %indvars.iv.next1678 = add nuw nsw i64 %indvars.iv1677, 1
  %exitcond1707.not = icmp eq i64 %indvars.iv.next1678, 7
  br i1 %exitcond1707.not, label %1791, label %121, !llvm.loop !59

1791:                                             ; preds = %1789
  %1792 = add nuw nsw i64 %.013151588, 1
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond1708.not = icmp eq i64 %indvars.iv.next, 7
  br i1 %exitcond1708.not, label %.preheader1446, label %.preheader1473, !llvm.loop !60

.preheader1445:                                   ; preds = %.preheader1446, %1943
  %.012791618 = phi i1 [ false, %.preheader1446 ], [ %1909, %1943 ]
  %.012851617 = phi i1 [ false, %.preheader1446 ], [ %1935, %1943 ]
  %.113141616 = phi i64 [ 2, %.preheader1446 ], [ %1944, %1943 ]
  %1793 = add nsw i64 %.113141616, -1
  %1794 = sitofp i64 %1793 to double
  %1795 = fdiv double 0.000000e+00, %1794
  %1796 = fdiv double 1.000000e+00, %1794
  %exitcond1710.not.1 = icmp eq i64 %.113141616, 2
  %1797 = fdiv double 2.000000e+00, %1794
  %exitcond1710.not.2 = icmp eq i64 %.113141616, 3
  %1798 = fdiv double 3.000000e+00, %1794
  %exitcond1710.not.3 = icmp eq i64 %.113141616, 4
  %1799 = fdiv double 4.000000e+00, %1794
  %exitcond1710.not.4 = icmp eq i64 %.113141616, 5
  %1800 = fdiv double 5.000000e+00, %1794
  br label %1801

1801:                                             ; preds = %.preheader1445, %1941
  %.112801615 = phi i1 [ %.012791618, %.preheader1445 ], [ %1909, %1941 ]
  %.112861614 = phi i1 [ %.012851617, %.preheader1445 ], [ %1935, %1941 ]
  %.113161613 = phi i64 [ 2, %.preheader1445 ], [ %1942, %1941 ]
  %1802 = add nsw i64 %.113161613, -1
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %44, i64 noundef %.113141616, i64 noundef %.113161613, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %15, i64 noundef %.113161613, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %16, i64 noundef %.113141616, ptr noundef %1)
  %1803 = sitofp i64 %1802 to double
  %1804 = fdiv double 0.000000e+00, %1803
  %1805 = load ptr, ptr %85, align 8, !tbaa !9
  store double %1804, ptr %1805, align 8, !tbaa !10
  %1806 = fdiv double 1.000000e+00, %1803
  %1807 = load ptr, ptr %85, align 8, !tbaa !9
  %1808 = getelementptr inbounds i8, ptr %1807, i64 8
  store double %1806, ptr %1808, align 8, !tbaa !10
  %exitcond1709.not.1 = icmp eq i64 %.113161613, 2
  br i1 %exitcond1709.not.1, label %.preheader1444, label %1809, !llvm.loop !61

1809:                                             ; preds = %1801
  %1810 = fdiv double 2.000000e+00, %1803
  %1811 = load ptr, ptr %85, align 8, !tbaa !9
  %1812 = getelementptr inbounds i8, ptr %1811, i64 16
  store double %1810, ptr %1812, align 8, !tbaa !10
  %exitcond1709.not.2 = icmp eq i64 %.113161613, 3
  br i1 %exitcond1709.not.2, label %.preheader1444, label %1813, !llvm.loop !61

1813:                                             ; preds = %1809
  %1814 = fdiv double 3.000000e+00, %1803
  %1815 = load ptr, ptr %85, align 8, !tbaa !9
  %1816 = getelementptr inbounds i8, ptr %1815, i64 24
  store double %1814, ptr %1816, align 8, !tbaa !10
  %exitcond1709.not.3 = icmp eq i64 %.113161613, 4
  br i1 %exitcond1709.not.3, label %.preheader1444, label %1817, !llvm.loop !61

1817:                                             ; preds = %1813
  %1818 = fdiv double 4.000000e+00, %1803
  %1819 = load ptr, ptr %85, align 8, !tbaa !9
  %1820 = getelementptr inbounds i8, ptr %1819, i64 32
  store double %1818, ptr %1820, align 8, !tbaa !10
  %exitcond1709.not.4 = icmp eq i64 %.113161613, 5
  br i1 %exitcond1709.not.4, label %.preheader1444, label %1821, !llvm.loop !61

1821:                                             ; preds = %1817
  %1822 = fdiv double 5.000000e+00, %1803
  %1823 = load ptr, ptr %85, align 8, !tbaa !9
  %1824 = getelementptr inbounds i8, ptr %1823, i64 40
  store double %1822, ptr %1824, align 8, !tbaa !10
  br label %.preheader1444

.preheader1444:                                   ; preds = %1801, %1809, %1813, %1817, %1821
  %1825 = load ptr, ptr %87, align 8, !tbaa !9
  store double %1795, ptr %1825, align 8, !tbaa !10
  %1826 = load ptr, ptr %87, align 8, !tbaa !9
  %1827 = getelementptr inbounds i8, ptr %1826, i64 8
  store double %1796, ptr %1827, align 8, !tbaa !10
  br i1 %exitcond1710.not.1, label %.preheader1441.preheader, label %.preheader1444.2, !llvm.loop !62

.preheader1444.2:                                 ; preds = %.preheader1444
  %1828 = load ptr, ptr %87, align 8, !tbaa !9
  %1829 = getelementptr inbounds i8, ptr %1828, i64 16
  store double %1797, ptr %1829, align 8, !tbaa !10
  br i1 %exitcond1710.not.2, label %.preheader1441.preheader, label %.preheader1444.3, !llvm.loop !62

.preheader1444.3:                                 ; preds = %.preheader1444.2
  %1830 = load ptr, ptr %87, align 8, !tbaa !9
  %1831 = getelementptr inbounds i8, ptr %1830, i64 24
  store double %1798, ptr %1831, align 8, !tbaa !10
  br i1 %exitcond1710.not.3, label %.preheader1441.preheader, label %.preheader1444.4, !llvm.loop !62

.preheader1444.4:                                 ; preds = %.preheader1444.3
  %1832 = load ptr, ptr %87, align 8, !tbaa !9
  %1833 = getelementptr inbounds i8, ptr %1832, i64 32
  store double %1799, ptr %1833, align 8, !tbaa !10
  br i1 %exitcond1710.not.4, label %.preheader1441.preheader, label %.preheader1444.5, !llvm.loop !62

.preheader1444.5:                                 ; preds = %.preheader1444.4
  %1834 = load ptr, ptr %87, align 8, !tbaa !9
  %1835 = getelementptr inbounds i8, ptr %1834, i64 40
  store double %1800, ptr %1835, align 8, !tbaa !10
  br label %.preheader1441.preheader

.preheader1441.preheader:                         ; preds = %.preheader1444.5, %.preheader1444.4, %.preheader1444.3, %.preheader1444.2, %.preheader1444
  br label %.preheader1441

.preheader1441:                                   ; preds = %.preheader1441.preheader, %1877
  %.231594 = phi i64 [ %1878, %1877 ], [ 0, %.preheader1441.preheader ]
  br label %1836

1836:                                             ; preds = %.preheader1441, %1836
  %.201593 = phi i64 [ 0, %.preheader1441 ], [ %1876, %1836 ]
  %1837 = load ptr, ptr %85, align 8, !tbaa !9
  %1838 = getelementptr inbounds double, ptr %1837, i64 %.201593
  %1839 = load double, ptr %1838, align 8, !tbaa !10
  %1840 = fmul double %1839, 6.000000e-01
  %1841 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %1840, ptr noundef %1)
  %1842 = load ptr, ptr %87, align 8, !tbaa !9
  %1843 = getelementptr inbounds double, ptr %1842, i64 %.231594
  %1844 = load double, ptr %1843, align 8, !tbaa !10
  %1845 = load ptr, ptr %85, align 8, !tbaa !9
  %1846 = getelementptr inbounds double, ptr %1845, i64 %.201593
  %1847 = load double, ptr %1846, align 8, !tbaa !10
  %1848 = fmul double %1847, 8.000000e-02
  %1849 = call double @llvm.fmuladd.f64(double %1844, double -3.000000e-01, double %1848)
  %1850 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %1849, ptr noundef %1)
  %1851 = fsub double %1841, %1850
  %1852 = load ptr, ptr %85, align 8, !tbaa !9
  %1853 = getelementptr inbounds double, ptr %1852, i64 %.201593
  %1854 = load double, ptr %1853, align 8, !tbaa !10
  %1855 = load ptr, ptr %87, align 8, !tbaa !9
  %1856 = getelementptr inbounds double, ptr %1855, i64 %.231594
  %1857 = load double, ptr %1856, align 8, !tbaa !10
  %1858 = call double @llvm.fmuladd.f64(double %1857, double 1.200000e+00, double %1854)
  %1859 = fmul double %1858, 0x400921FB54442D18
  %1860 = call noundef double @_ZN11alglib_impl6ae_cosEdPNS_8ae_stateE(double noundef %1859, ptr noundef %1)
  %1861 = call double @llvm.fmuladd.f64(double %1860, double 2.000000e+00, double %1851)
  %1862 = load ptr, ptr %85, align 8, !tbaa !9
  %1863 = getelementptr inbounds double, ptr %1862, i64 %.201593
  %1864 = load double, ptr %1863, align 8, !tbaa !10
  %1865 = load ptr, ptr %87, align 8, !tbaa !9
  %1866 = getelementptr inbounds double, ptr %1865, i64 %.231594
  %1867 = load double, ptr %1866, align 8, !tbaa !10
  %1868 = fmul double %1867, 1.500000e+01
  %1869 = call double @llvm.fmuladd.f64(double %1864, double 2.000000e+01, double %1868)
  %1870 = call noundef double @_ZN11alglib_impl6ae_cosEdPNS_8ae_stateE(double noundef %1869, ptr noundef %1)
  %1871 = call double @llvm.fmuladd.f64(double %1870, double 1.000000e-01, double %1861)
  %1872 = load ptr, ptr %89, align 8, !tbaa !9
  %1873 = getelementptr inbounds ptr, ptr %1872, i64 %.231594
  %1874 = load ptr, ptr %1873, align 8, !tbaa !18
  %1875 = getelementptr inbounds double, ptr %1874, i64 %.201593
  store double %1871, ptr %1875, align 8, !tbaa !10
  %1876 = add nuw nsw i64 %.201593, 1
  %exitcond1711.not = icmp eq i64 %1876, %.113161613
  br i1 %exitcond1711.not, label %1877, label %1836, !llvm.loop !63

1877:                                             ; preds = %1836
  %1878 = add nuw nsw i64 %.231594, 1
  %exitcond1712.not = icmp eq i64 %1878, %.113141616
  br i1 %exitcond1712.not, label %.preheader1440, label %.preheader1441, !llvm.loop !64

.preheader1440:                                   ; preds = %1877, %1939
  %.212811612 = phi i1 [ %1909, %1939 ], [ %.112801615, %1877 ]
  %.212871611 = phi i1 [ %1935, %1939 ], [ %.112861614, %1877 ]
  %.013091610 = phi i64 [ %1940, %1939 ], [ 2, %1877 ]
  %1879 = add nsw i64 %.013091610, -1
  %1880 = sitofp i64 %1879 to double
  br label %.preheader1439

.preheader1439:                                   ; preds = %.preheader1440, %1937
  %.312821609 = phi i1 [ %.212811612, %.preheader1440 ], [ %1909, %1937 ]
  %.312881608 = phi i1 [ %.212871611, %.preheader1440 ], [ %1935, %1937 ]
  %.013101607 = phi i64 [ 2, %.preheader1440 ], [ %1938, %1937 ]
  %1881 = add nsw i64 %.013101607, -1
  %1882 = sitofp i64 %1881 to double
  br label %1883

1883:                                             ; preds = %.preheader1439, %1934
  %.412831606 = phi i1 [ %.312821609, %.preheader1439 ], [ %1909, %1934 ]
  %.412891605 = phi i1 [ %.312881608, %.preheader1439 ], [ %1935, %1934 ]
  %.112931604 = phi i64 [ 1, %.preheader1439 ], [ %1936, %1934 ]
  call void @_ZN11alglib_impl24spline2dresamplebilinearEPKNS_9ae_matrixEllPS0_llPNS_8ae_stateE(ptr noundef nonnull %44, i64 noundef %.113141616, i64 noundef %.113161613, ptr noundef nonnull %45, i64 noundef %.013091610, i64 noundef %.013101607, ptr noundef %1)
  call void @_ZN11alglib_impl21spline2dbuildbilinearEPKNS_9ae_vectorES2_PKNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef nonnull %44, i64 noundef %.113141616, i64 noundef %.113161613, ptr noundef nonnull %17, ptr noundef %1)
  br label %.preheader

.preheader:                                       ; preds = %1883, %1902
  %.012741600 = phi double [ 0.000000e+00, %1883 ], [ %1900, %1902 ]
  %.161599 = phi double [ 0.000000e+00, %1883 ], [ %1897, %1902 ]
  %.241598 = phi i64 [ 0, %1883 ], [ %1903, %1902 ]
  %1884 = uitofp nneg i64 %.241598 to double
  %1885 = fdiv double %1884, %1880
  br label %1886

1886:                                             ; preds = %.preheader, %1886
  %.112751597 = phi double [ %.012741600, %.preheader ], [ %1900, %1886 ]
  %.171596 = phi double [ %.161599, %.preheader ], [ %1897, %1886 ]
  %.211595 = phi i64 [ 0, %.preheader ], [ %1901, %1886 ]
  %1887 = uitofp nneg i64 %.211595 to double
  %1888 = fdiv double %1887, %1882
  %1889 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %17, double noundef %1888, double noundef %1885, ptr noundef %1)
  store double %1889, ptr %59, align 8, !tbaa !10
  %1890 = load ptr, ptr %120, align 8, !tbaa !9
  %1891 = getelementptr inbounds ptr, ptr %1890, i64 %.241598
  %1892 = load ptr, ptr %1891, align 8, !tbaa !18
  %1893 = getelementptr inbounds double, ptr %1892, i64 %.211595
  %1894 = load double, ptr %1893, align 8, !tbaa !10
  store double %1894, ptr %63, align 8, !tbaa !10
  %1895 = fsub double %1889, %1894
  %1896 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1895, ptr noundef %1)
  %1897 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.171596, double noundef %1896, ptr noundef %1)
  %1898 = load double, ptr %59, align 8, !tbaa !10
  %1899 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1898, ptr noundef %1)
  %1900 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.112751597, double noundef %1899, ptr noundef %1)
  %1901 = add nuw nsw i64 %.211595, 1
  %exitcond1713.not = icmp eq i64 %1901, %.013101607
  br i1 %exitcond1713.not, label %1902, label %1886, !llvm.loop !65

1902:                                             ; preds = %1886
  %1903 = add nuw nsw i64 %.241598, 1
  %exitcond1714.not = icmp eq i64 %1903, %.013091610
  br i1 %exitcond1714.not, label %1904, label %.preheader, !llvm.loop !66

1904:                                             ; preds = %1902
  br i1 %.412831606, label %1908, label %1905

1905:                                             ; preds = %1904
  %1906 = fdiv double %1897, %1900
  %1907 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1906, double noundef 0x3D95FD7FE1796496)
  br label %1908

1908:                                             ; preds = %1905, %1904
  %1909 = phi i1 [ true, %1904 ], [ %1907, %1905 ]
  call void @_ZN11alglib_impl23spline2dresamplebicubicEPKNS_9ae_matrixEllPS0_llPNS_8ae_stateE(ptr noundef nonnull %44, i64 noundef %.113141616, i64 noundef %.113161613, ptr noundef nonnull %45, i64 noundef %.013091610, i64 noundef %.013101607, ptr noundef %1)
  call void @_ZN11alglib_impl20spline2dbuildbicubicEPKNS_9ae_vectorES2_PKNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef nonnull %44, i64 noundef %.113141616, i64 noundef %.113161613, ptr noundef nonnull %17, ptr noundef %1)
  br label %.preheader.1

.preheader.1:                                     ; preds = %1928, %1908
  %.012741600.1 = phi double [ 0.000000e+00, %1908 ], [ %1926, %1928 ]
  %.161599.1 = phi double [ 0.000000e+00, %1908 ], [ %1923, %1928 ]
  %.241598.1 = phi i64 [ 0, %1908 ], [ %1929, %1928 ]
  %1910 = uitofp nneg i64 %.241598.1 to double
  %1911 = fdiv double %1910, %1880
  br label %1912

1912:                                             ; preds = %1912, %.preheader.1
  %.112751597.1 = phi double [ %.012741600.1, %.preheader.1 ], [ %1926, %1912 ]
  %.171596.1 = phi double [ %.161599.1, %.preheader.1 ], [ %1923, %1912 ]
  %.211595.1 = phi i64 [ 0, %.preheader.1 ], [ %1927, %1912 ]
  %1913 = uitofp nneg i64 %.211595.1 to double
  %1914 = fdiv double %1913, %1882
  %1915 = call noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %17, double noundef %1914, double noundef %1911, ptr noundef %1)
  store double %1915, ptr %59, align 8, !tbaa !10
  %1916 = load ptr, ptr %120, align 8, !tbaa !9
  %1917 = getelementptr inbounds ptr, ptr %1916, i64 %.241598.1
  %1918 = load ptr, ptr %1917, align 8, !tbaa !18
  %1919 = getelementptr inbounds double, ptr %1918, i64 %.211595.1
  %1920 = load double, ptr %1919, align 8, !tbaa !10
  store double %1920, ptr %63, align 8, !tbaa !10
  %1921 = fsub double %1915, %1920
  %1922 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1921, ptr noundef %1)
  %1923 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.171596.1, double noundef %1922, ptr noundef %1)
  %1924 = load double, ptr %59, align 8, !tbaa !10
  %1925 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1924, ptr noundef %1)
  %1926 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.112751597.1, double noundef %1925, ptr noundef %1)
  %1927 = add nuw nsw i64 %.211595.1, 1
  %exitcond1713.1.not = icmp eq i64 %1927, %.013101607
  br i1 %exitcond1713.1.not, label %1928, label %1912, !llvm.loop !65

1928:                                             ; preds = %1912
  %1929 = add nuw nsw i64 %.241598.1, 1
  %exitcond1714.1.not = icmp eq i64 %1929, %.013091610
  br i1 %exitcond1714.1.not, label %1930, label %.preheader.1, !llvm.loop !66

1930:                                             ; preds = %1928
  br i1 %.412891605, label %1934, label %1931

1931:                                             ; preds = %1930
  %1932 = fdiv double %1923, %1926
  %1933 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1932, double noundef 0x3D95FD7FE1796496)
  br label %1934

1934:                                             ; preds = %1930, %1931
  %1935 = phi i1 [ true, %1930 ], [ %1933, %1931 ]
  %1936 = add nuw nsw i64 %.112931604, 1
  %exitcond1715.not = icmp eq i64 %1936, 11
  br i1 %exitcond1715.not, label %1937, label %1883, !llvm.loop !67

1937:                                             ; preds = %1934
  %1938 = add nuw nsw i64 %.013101607, 1
  %exitcond1716.not = icmp eq i64 %1938, 7
  br i1 %exitcond1716.not, label %1939, label %.preheader1439, !llvm.loop !68

1939:                                             ; preds = %1937
  %1940 = add nuw nsw i64 %.013091610, 1
  %exitcond1717.not = icmp eq i64 %1940, 7
  br i1 %exitcond1717.not, label %1941, label %.preheader1440, !llvm.loop !69

1941:                                             ; preds = %1939
  %1942 = add nuw nsw i64 %.113161613, 1
  %exitcond1718.not = icmp eq i64 %1942, 7
  br i1 %exitcond1718.not, label %1943, label %1801, !llvm.loop !70

1943:                                             ; preds = %1941
  %1944 = add nuw nsw i64 %.113141616, 1
  %exitcond1719.not = icmp eq i64 %1944, 7
  br i1 %exitcond1719.not, label %1945, label %.preheader1445, !llvm.loop !71

1945:                                             ; preds = %1943
  %1946 = call noundef zeroext i1 @_ZL31testspline2dunit_testspline2dvfbPN11alglib_impl8ae_stateE(i1 noundef zeroext true, ptr noundef %1)
  br i1 %575, label %1981, label %1947

1947:                                             ; preds = %1945
  %1948 = load i8, ptr %4, align 1, !tbaa !5, !range !36, !noundef !37
  %1949 = trunc nuw i8 %1948 to i1
  %1950 = load i8, ptr %5, align 1, !range !36
  %1951 = trunc nuw i8 %1950 to i1
  %brmerge = or i1 %1575, %1951
  %or.cond1771 = select i1 %1949, i1 true, i1 %brmerge
  br i1 %or.cond1771, label %1981, label %1952

1952:                                             ; preds = %1947
  %1953 = load i8, ptr %6, align 1, !tbaa !5, !range !36, !noundef !37
  %1954 = trunc nuw i8 %1953 to i1
  br i1 %1954, label %1981, label %1955

1955:                                             ; preds = %1952
  %1956 = load i8, ptr %7, align 1, !tbaa !5, !range !36, !noundef !37
  %1957 = trunc nuw i8 %1956 to i1
  br i1 %1957, label %1981, label %1958

1958:                                             ; preds = %1955
  %1959 = load i8, ptr %8, align 1, !tbaa !5, !range !36, !noundef !37
  %1960 = trunc nuw i8 %1959 to i1
  br i1 %1960, label %1981, label %1961

1961:                                             ; preds = %1958
  %1962 = load i8, ptr %9, align 1, !tbaa !5, !range !36, !noundef !37
  %1963 = trunc nuw i8 %1962 to i1
  %1964 = or i1 %1935, %1963
  %1965 = or i1 %1964, %1946
  %or.cond1436 = or i1 %1965, %1909
  br i1 %or.cond1436, label %1981, label %1966

1966:                                             ; preds = %1961
  %1967 = load i8, ptr %10, align 1, !tbaa !5, !range !36, !noundef !37
  %1968 = trunc nuw i8 %1967 to i1
  br i1 %1968, label %1981, label %1969

1969:                                             ; preds = %1966
  %1970 = load i8, ptr %14, align 1, !tbaa !5, !range !36, !noundef !37
  %1971 = trunc nuw i8 %1970 to i1
  br i1 %1971, label %1981, label %1972

1972:                                             ; preds = %1969
  %1973 = load i8, ptr %13, align 1, !tbaa !5, !range !36, !noundef !37
  %1974 = trunc nuw i8 %1973 to i1
  br i1 %1974, label %1981, label %1975

1975:                                             ; preds = %1972
  %1976 = load i8, ptr %12, align 1, !tbaa !5, !range !36, !noundef !37
  %1977 = trunc nuw i8 %1976 to i1
  br i1 %1977, label %1981, label %1978

1978:                                             ; preds = %1975
  %1979 = load i8, ptr %11, align 1, !tbaa !5, !range !36, !noundef !37
  %1980 = trunc nuw i8 %1979 to i1
  br label %1981

1981:                                             ; preds = %1978, %1975, %1972, %1969, %1966, %1961, %1958, %1955, %1952, %1947, %1945
  %1982 = phi i1 [ true, %1975 ], [ true, %1972 ], [ true, %1969 ], [ true, %1966 ], [ true, %1961 ], [ true, %1958 ], [ true, %1955 ], [ true, %1952 ], [ true, %1947 ], [ true, %1945 ], [ %1980, %1978 ]
  br i1 %0, label %2044, label %1983

1983:                                             ; preds = %1981
  %1984 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.887)
  %1985 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.800)
  %1986 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.888)
  %.str.2..str.3 = select i1 %575, ptr @.str.2, ptr @.str.3
  %1987 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.2..str.3)
  %1988 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.889)
  %1989 = load i8, ptr %4, align 1, !tbaa !5, !range !36, !noundef !37
  %1990 = trunc nuw i8 %1989 to i1
  %.str.3.sink1755 = select i1 %1990, ptr @.str.2, ptr @.str.3
  %1991 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink1755)
  %1992 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.890)
  %1993 = load i8, ptr %5, align 1, !tbaa !5, !range !36, !noundef !37
  %1994 = trunc nuw i8 %1993 to i1
  %.str.3.sink1756 = select i1 %1994, ptr @.str.2, ptr @.str.3
  %1995 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink1756)
  %1996 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.891)
  %.str.3.sink1757 = select i1 %1575, ptr @.str.2, ptr @.str.3
  %1997 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink1757)
  %1998 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.892)
  %1999 = load i8, ptr %6, align 1, !tbaa !5, !range !36, !noundef !37
  %2000 = trunc nuw i8 %1999 to i1
  %.str.3.sink1758 = select i1 %2000, ptr @.str.2, ptr @.str.3
  %2001 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink1758)
  %2002 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.893)
  %2003 = load i8, ptr %7, align 1, !tbaa !5, !range !36, !noundef !37
  %2004 = trunc nuw i8 %2003 to i1
  %.str.3.sink1759 = select i1 %2004, ptr @.str.2, ptr @.str.3
  %2005 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink1759)
  %2006 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.894)
  %2007 = load i8, ptr %8, align 1, !tbaa !5, !range !36, !noundef !37
  %2008 = trunc nuw i8 %2007 to i1
  %.str.3.sink1760 = select i1 %2008, ptr @.str.2, ptr @.str.3
  %2009 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink1760)
  %2010 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.895)
  %2011 = load i8, ptr %9, align 1, !tbaa !5, !range !36, !noundef !37
  %2012 = trunc nuw i8 %2011 to i1
  %.str.3.sink1761 = select i1 %2012, ptr @.str.2, ptr @.str.3
  %2013 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink1761)
  %2014 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.896)
  %.str.3.sink1762 = select i1 %1946, ptr @.str.2, ptr @.str.3
  %2015 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink1762)
  %2016 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.897)
  %2017 = load i8, ptr %10, align 1, !tbaa !5, !range !36, !noundef !37
  %2018 = trunc nuw i8 %2017 to i1
  %.str.3.sink1763 = select i1 %2018, ptr @.str.2, ptr @.str.3
  %2019 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink1763)
  %2020 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.898)
  %2021 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.899)
  %2022 = load i8, ptr %14, align 1, !tbaa !5, !range !36, !noundef !37
  %2023 = trunc nuw i8 %2022 to i1
  %.str.3.sink1764 = select i1 %2023, ptr @.str.2, ptr @.str.3
  %2024 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink1764)
  %2025 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.900)
  %2026 = load i8, ptr %13, align 1, !tbaa !5, !range !36, !noundef !37
  %2027 = trunc nuw i8 %2026 to i1
  %.str.3.sink1765 = select i1 %2027, ptr @.str.2, ptr @.str.3
  %2028 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink1765)
  %2029 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.901)
  %2030 = load i8, ptr %12, align 1, !tbaa !5, !range !36, !noundef !37
  %2031 = trunc nuw i8 %2030 to i1
  %.str.3.sink1766 = select i1 %2031, ptr @.str.2, ptr @.str.3
  %2032 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink1766)
  %2033 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.902)
  %2034 = load i8, ptr %11, align 1, !tbaa !5, !range !36, !noundef !37
  %2035 = trunc nuw i8 %2034 to i1
  %.str.3.sink1767 = select i1 %2035, ptr @.str.2, ptr @.str.3
  %2036 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink1767)
  %2037 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.903)
  %2038 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.888)
  %.str.3.sink1768 = select i1 %1909, ptr @.str.2, ptr @.str.3
  %2039 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink1768)
  %2040 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.889)
  %.str.3.sink1769 = select i1 %1935, ptr @.str.2, ptr @.str.3
  %2041 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink1769)
  %.str.16.sink = select i1 %1982, ptr @.str.15, ptr @.str.16
  %2042 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.16.sink)
  %2043 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.17)
  br label %2044

2044:                                             ; preds = %1983, %1981
  %2045 = xor i1 %1982, true
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %81) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %80) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %79) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %78) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %77) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %75) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %74) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %71) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %70) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %69) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %66) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %57) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %46) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %45) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %44) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %43) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %42) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %41) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %40) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %39) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %38) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 360, ptr nonnull %18) #6
  call void @llvm.lifetime.end.p0(i64 360, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #6
  ret i1 %2045
}

declare void @_ZN11alglib_impl25_spline2dinterpolant_initEPvPNS_8ae_stateEb(ptr noundef, ptr noundef, i1 noundef zeroext) local_unnamed_addr #3

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

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

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

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

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

declare void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

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

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

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

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

declare noundef i64 @_ZN11alglib_impl5imin4EllllPNS_8ae_stateE(i64 noundef, i64 noundef, i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #3

declare noundef i64 @_ZN11alglib_impl5imax4EllllPNS_8ae_stateE(i64 noundef, i64 noundef, i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #3

declare void @_ZN11alglib_impl22spline2dbuildbilinearvEPKNS_9ae_vectorElS2_lS2_lPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare noundef double @_ZN11alglib_impl12spline2dcalcEPKNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef, double noundef, double noundef, ptr noundef) local_unnamed_addr #3

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

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

declare void @_ZN11alglib_impl12spline2ddiffEPKNS_19spline2dinterpolantEddPdS3_S3_PNS_8ae_stateE(ptr noundef, double noundef, double noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare void @_ZN11alglib_impl13spline2ddiff2EPKNS_19spline2dinterpolantEddPdS3_S3_S3_S3_S3_PNS_8ae_stateE(ptr noundef, double noundef, double noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL27testspline2dunit_testunpackPKN11alglib_impl19spline2dinterpolantEPKNS_9ae_vectorES5_PNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

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

declare void @_ZN11alglib_impl21spline2dbuildbicubicvEPKNS_9ae_vectorElS2_lS2_lPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare void @_ZN11alglib_impl21spline2dbuildclampedvEPKNS_9ae_vectorElS2_lS2_lS2_lS2_lS2_lS2_S2_lPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

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

declare void @_ZN11alglib_impl21spline2dbuildhermitevEPKNS_9ae_vectorElS2_lS2_S2_S2_S2_lPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare void @_ZN11alglib_impl20spline2dbuildbicubicEPKNS_9ae_vectorES2_PKNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare void @_ZN11alglib_impl21spline2dbuildbilinearEPKNS_9ae_vectorES2_PKNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

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

declare void @_ZN11alglib_impl12spline2dcopyEPKNS_19spline2dinterpolantEPS0_PNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare void @_ZN11alglib_impl13spline2dallocEPNS_13ae_serializerEPKNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare void @_ZN11alglib_impl17spline2dserializeEPNS_13ae_serializerEPKNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare void @_ZN11alglib_impl19spline2dunserializeEPNS_13ae_serializerEPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare void @_ZN11alglib_impl24spline2dresamplebilinearEPKNS_9ae_matrixEllPS0_llPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #3

declare void @_ZN11alglib_impl23spline2dresamplebicubicEPKNS_9ae_matrixEllPS0_llPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL31testspline2dunit_testspline2dvfbPN11alglib_impl8ae_stateE(i1 noundef zeroext, ptr noundef) local_unnamed_addr #5

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { "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 nounwind willreturn memory(argmem: write) }
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 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"bool", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"double", !7, i64 0}
!12 = distinct !{!12, !13, !14}
!13 = !{!"llvm.loop.mustprogress"}
!14 = !{!"llvm.loop.peeled.count", i32 1}
!15 = distinct !{!15, !13}
!16 = distinct !{!16, !13, !14}
!17 = distinct !{!17, !13}
!18 = !{!19, !19, i64 0}
!19 = !{!"any pointer", !7, i64 0}
!20 = distinct !{!20, !13}
!21 = distinct !{!21, !13}
!22 = distinct !{!22, !13}
!23 = distinct !{!23, !13}
!24 = distinct !{!24, !13}
!25 = distinct !{!25, !13, !14}
!26 = distinct !{!26, !13}
!27 = distinct !{!27, !13, !14}
!28 = distinct !{!28, !13}
!29 = distinct !{!29, !13, !14}
!30 = distinct !{!30, !13}
!31 = distinct !{!31, !13}
!32 = distinct !{!32, !13}
!33 = distinct !{!33, !13}
!34 = distinct !{!34, !13}
!35 = distinct !{!35, !13}
!36 = !{i8 0, i8 2}
!37 = !{}
!38 = distinct !{!38, !13}
!39 = distinct !{!39, !13}
!40 = distinct !{!40, !13}
!41 = distinct !{!41, !13}
!42 = distinct !{!42, !13}
!43 = distinct !{!43, !13}
!44 = distinct !{!44, !13}
!45 = distinct !{!45, !13}
!46 = distinct !{!46, !13}
!47 = distinct !{!47, !13}
!48 = distinct !{!48, !13}
!49 = distinct !{!49, !13}
!50 = distinct !{!50, !13}
!51 = distinct !{!51, !13}
!52 = !{!53, !19, i64 16}
!53 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !19, i64 0, !19, i64 8, !19, i64 16, !19, i64 24}
!54 = distinct !{!54, !13}
!55 = distinct !{!55, !13}
!56 = distinct !{!56, !13}
!57 = distinct !{!57, !13}
!58 = distinct !{!58, !13}
!59 = distinct !{!59, !13}
!60 = distinct !{!60, !13}
!61 = distinct !{!61, !13}
!62 = distinct !{!62, !13}
!63 = distinct !{!63, !13}
!64 = distinct !{!64, !13}
!65 = distinct !{!65, !13}
!66 = distinct !{!66, !13}
!67 = distinct !{!67, !13}
!68 = distinct !{!68, !13}
!69 = distinct !{!69, !13}
!70 = distinct !{!70, !13}
!71 = distinct !{!71, !13}


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