; LLVM IR from venumb/ZSPACE :: cpp/depends/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, i64, i64, i64, %"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::ae_serializer" = type { i64, i64, i64, i64, i64, ptr, ptr, ptr, i64, ptr, ptr }

@.str.1 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.618 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.654 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.655 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.656 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.657 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.658 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.659 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.660 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.661 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.662 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.663 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.664 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.665 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.666 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.667 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.668 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.669 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.670 = 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 void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef, ptr noundef) #1

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

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

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

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

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

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) #1

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

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

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

declare noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef) #1

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

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

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

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

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

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

declare noundef double @_ZN11alglib_impl6ae_expEdPNS_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 i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca double, align 8
  %26 = alloca double, 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::spline2dinterpolant", align 8
  %30 = alloca %"struct.alglib_impl::spline2dinterpolant", 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_matrix", align 8
  %36 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %37 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %38 = alloca double, align 8
  %39 = alloca double, align 8
  %40 = alloca double, align 8
  %41 = alloca double, align 8
  %42 = alloca i64, align 8
  %43 = alloca i64, align 8
  %44 = alloca i64, align 8
  %45 = alloca i64, align 8
  %46 = alloca i64, align 8
  %47 = alloca i64, align 8
  %48 = alloca i64, align 8
  %49 = alloca i64, 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 i8, align 1
  %77 = alloca %"struct.alglib_impl::ae_serializer", align 8
  %78 = alloca i64, align 8
  %79 = alloca %"struct.alglib_impl::ae_frame", align 8
  %80 = alloca %"struct.alglib_impl::ae_dyn_block", align 8
  %81 = zext i1 %0 to i8
  store i8 %81, 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 8, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %27) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %28) #5
  call void @llvm.lifetime.start.p0(i64 224, ptr %29) #5
  call void @llvm.lifetime.start.p0(i64 224, ptr %30) #5
  call void @llvm.lifetime.start.p0(i64 64, 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 80, ptr %35) #5
  call void @llvm.lifetime.start.p0(i64 80, ptr %36) #5
  call void @llvm.lifetime.start.p0(i64 80, ptr %37) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.start.p0(i64 8, 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 8, ptr %58) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #5
  call void @llvm.lifetime.start.p0(i64 8, 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 1, ptr %76) #5
  %82 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %82, ptr noundef %5)
  call void @llvm.memset.p0.i64(ptr align 8 %27, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %28, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %29, i8 0, i64 224, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %30, i8 0, i64 224, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %31, i8 0, i64 64, 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 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %36, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %37, i8 0, i64 80, i1 false)
  %83 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %27, i64 noundef 0, i64 noundef 3, ptr noundef %83, i1 noundef zeroext true)
  %84 = 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 %84, i1 noundef zeroext true)
  %85 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl25_spline2dinterpolant_initEPvPNS_8ae_stateEb(ptr noundef %29, ptr noundef %85, i1 noundef zeroext true)
  %86 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl25_spline2dinterpolant_initEPvPNS_8ae_stateEb(ptr noundef %30, ptr noundef %86, i1 noundef zeroext true)
  %87 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %31, i64 noundef 0, i64 noundef 3, ptr noundef %87, i1 noundef zeroext true)
  %88 = 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 %88, i1 noundef zeroext true)
  %89 = 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 %89, i1 noundef zeroext true)
  %90 = 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 %90, i1 noundef zeroext true)
  %91 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %35, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %91, i1 noundef zeroext true)
  %92 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %36, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %92, i1 noundef zeroext true)
  %93 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %37, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %93, i1 noundef zeroext true)
  store i8 0, ptr %6, align 1, !tbaa !5
  store i64 10, ptr %23, align 8, !tbaa !11
  store double 1.000000e-05, ptr %26, align 8, !tbaa !13
  store double 1.000000e-03, ptr %25, 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 %18, align 1, !tbaa !5
  store i8 0, ptr %19, align 1, !tbaa !5
  store i8 0, ptr %21, align 1, !tbaa !5
  store i8 0, ptr %20, align 1, !tbaa !5
  %94 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL41testspline2dunit_testfittingfastddmsolverPbPN11alglib_impl8ae_stateE(ptr noundef %18, ptr noundef %94)
  %95 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL33testspline2dunit_testfittingpriorPbPN11alglib_impl8ae_stateE(ptr noundef %21, ptr noundef %95)
  %96 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL39testspline2dunit_testfittingblocksolverPbPN11alglib_impl8ae_stateE(ptr noundef %19, ptr noundef %96)
  %97 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL35testspline2dunit_testfittingpenaltyPbPN11alglib_impl8ae_stateE(ptr noundef %20, ptr noundef %97)
  store i64 2, ptr %45, align 8, !tbaa !11
  br label %98

98:                                               ; preds = %1401, %2
  %99 = load i64, ptr %45, align 8, !tbaa !11
  %100 = icmp sle i64 %99, 7
  br i1 %100, label %101, label %1404

101:                                              ; preds = %98
  store i64 2, ptr %46, align 8, !tbaa !11
  br label %102

102:                                              ; preds = %1397, %101
  %103 = load i64, ptr %46, align 8, !tbaa !11
  %104 = icmp sle i64 %103, 7
  br i1 %104, label %105, label %1400

105:                                              ; preds = %102
  %106 = load ptr, ptr %4, align 8, !tbaa !9
  %107 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 2, ptr noundef %106)
  %108 = add nsw i64 %107, 2
  store i64 %108, ptr %47, align 8, !tbaa !11
  %109 = load i64, ptr %45, align 8, !tbaa !11
  %110 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %27, i64 noundef %109, ptr noundef %110)
  %111 = load i64, ptr %46, align 8, !tbaa !11
  %112 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %28, i64 noundef %111, ptr noundef %112)
  %113 = load i64, ptr %45, align 8, !tbaa !11
  %114 = mul nsw i64 2, %113
  %115 = sub nsw i64 %114, 1
  %116 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %31, i64 noundef %115, ptr noundef %116)
  %117 = load i64, ptr %46, align 8, !tbaa !11
  %118 = mul nsw i64 2, %117
  %119 = sub nsw i64 %118, 1
  %120 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %32, i64 noundef %119, ptr noundef %120)
  %121 = load i64, ptr %46, align 8, !tbaa !11
  %122 = load i64, ptr %45, align 8, !tbaa !11
  %123 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %35, i64 noundef %121, i64 noundef %122, ptr noundef %123)
  %124 = load i64, ptr %46, align 8, !tbaa !11
  %125 = load i64, ptr %45, align 8, !tbaa !11
  %126 = mul nsw i64 %124, %125
  %127 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %33, i64 noundef %126, ptr noundef %127)
  %128 = load i64, ptr %46, align 8, !tbaa !11
  %129 = load i64, ptr %45, align 8, !tbaa !11
  %130 = mul nsw i64 %128, %129
  %131 = load i64, ptr %47, align 8, !tbaa !11
  %132 = mul nsw i64 %130, %131
  %133 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %34, i64 noundef %132, ptr noundef %133)
  %134 = load i64, ptr %45, align 8, !tbaa !11
  %135 = load i64, ptr %46, align 8, !tbaa !11
  %136 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %37, i64 noundef %134, i64 noundef %135, ptr noundef %136)
  store i64 1, ptr %22, align 8, !tbaa !11
  br label %137

137:                                              ; preds = %1393, %105
  %138 = load i64, ptr %22, align 8, !tbaa !11
  %139 = load i64, ptr %23, align 8, !tbaa !11
  %140 = icmp sle i64 %138, %139
  br i1 %140, label %141, label %1396

141:                                              ; preds = %137
  %142 = load ptr, ptr %4, align 8, !tbaa !9
  %143 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %142)
  %144 = fsub double -1.000000e+00, %143
  store double %144, ptr %38, align 8, !tbaa !13
  %145 = load ptr, ptr %4, align 8, !tbaa !9
  %146 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %145)
  %147 = fadd double 1.000000e+00, %146
  store double %147, ptr %40, align 8, !tbaa !13
  %148 = load ptr, ptr %4, align 8, !tbaa !9
  %149 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %148)
  %150 = fsub double -1.000000e+00, %149
  store double %150, ptr %39, align 8, !tbaa !13
  %151 = load ptr, ptr %4, align 8, !tbaa !9
  %152 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %151)
  %153 = fadd double 1.000000e+00, %152
  store double %153, ptr %41, align 8, !tbaa !13
  store i64 0, ptr %43, align 8, !tbaa !11
  br label %154

154:                                              ; preds = %238, %141
  %155 = load i64, ptr %43, align 8, !tbaa !11
  %156 = load i64, ptr %45, align 8, !tbaa !11
  %157 = sub nsw i64 %156, 1
  %158 = icmp sle i64 %155, %157
  br i1 %158, label %159, label %241

159:                                              ; preds = %154
  %160 = load double, ptr %40, align 8, !tbaa !13
  %161 = load double, ptr %38, align 8, !tbaa !13
  %162 = fadd double %160, %161
  %163 = load double, ptr %40, align 8, !tbaa !13
  %164 = load double, ptr %38, align 8, !tbaa !13
  %165 = fsub double %163, %164
  %166 = fmul double 5.000000e-01, %165
  %167 = load i64, ptr %43, align 8, !tbaa !11
  %168 = mul nsw i64 2, %167
  %169 = add nsw i64 %168, 1
  %170 = sitofp i64 %169 to double
  %171 = fmul double 0x400921FB54442D18, %170
  %172 = load i64, ptr %45, align 8, !tbaa !11
  %173 = mul nsw i64 2, %172
  %174 = sitofp i64 %173 to double
  %175 = fdiv double %171, %174
  %176 = load ptr, ptr %4, align 8, !tbaa !9
  %177 = call noundef double @_ZN11alglib_impl6ae_cosEdPNS_8ae_stateE(double noundef %175, ptr noundef %176)
  %178 = fmul double %166, %177
  %179 = fneg double %178
  %180 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %162, double %179)
  %181 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %182 = load ptr, ptr %181, align 8, !tbaa !15
  %183 = load i64, ptr %43, align 8, !tbaa !11
  %184 = getelementptr inbounds double, ptr %182, i64 %183
  store double %180, ptr %184, align 8, !tbaa !13
  %185 = load i64, ptr %43, align 8, !tbaa !11
  %186 = icmp eq i64 %185, 0
  br i1 %186, label %187, label %193

187:                                              ; preds = %159
  %188 = load double, ptr %38, align 8, !tbaa !13
  %189 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %190 = load ptr, ptr %189, align 8, !tbaa !15
  %191 = load i64, ptr %43, align 8, !tbaa !11
  %192 = getelementptr inbounds double, ptr %190, i64 %191
  store double %188, ptr %192, align 8, !tbaa !13
  br label %193

193:                                              ; preds = %187, %159
  %194 = load i64, ptr %43, align 8, !tbaa !11
  %195 = load i64, ptr %45, align 8, !tbaa !11
  %196 = sub nsw i64 %195, 1
  %197 = icmp eq i64 %194, %196
  br i1 %197, label %198, label %204

198:                                              ; preds = %193
  %199 = load double, ptr %40, align 8, !tbaa !13
  %200 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %201 = load ptr, ptr %200, align 8, !tbaa !15
  %202 = load i64, ptr %43, align 8, !tbaa !11
  %203 = getelementptr inbounds double, ptr %201, i64 %202
  store double %199, ptr %203, align 8, !tbaa !13
  br label %204

204:                                              ; preds = %198, %193
  %205 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %206 = load ptr, ptr %205, align 8, !tbaa !15
  %207 = load i64, ptr %43, align 8, !tbaa !11
  %208 = getelementptr inbounds double, ptr %206, i64 %207
  %209 = load double, ptr %208, align 8, !tbaa !13
  %210 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %31, i32 0, i32 4
  %211 = load ptr, ptr %210, align 8, !tbaa !15
  %212 = load i64, ptr %43, align 8, !tbaa !11
  %213 = mul nsw i64 2, %212
  %214 = getelementptr inbounds double, ptr %211, i64 %213
  store double %209, ptr %214, align 8, !tbaa !13
  %215 = load i64, ptr %43, align 8, !tbaa !11
  %216 = icmp sgt i64 %215, 0
  br i1 %216, label %217, label %237

217:                                              ; preds = %204
  %218 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %219 = load ptr, ptr %218, align 8, !tbaa !15
  %220 = load i64, ptr %43, align 8, !tbaa !11
  %221 = getelementptr inbounds double, ptr %219, i64 %220
  %222 = load double, ptr %221, align 8, !tbaa !13
  %223 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %224 = load ptr, ptr %223, align 8, !tbaa !15
  %225 = load i64, ptr %43, align 8, !tbaa !11
  %226 = sub nsw i64 %225, 1
  %227 = getelementptr inbounds double, ptr %224, i64 %226
  %228 = load double, ptr %227, align 8, !tbaa !13
  %229 = fadd double %222, %228
  %230 = fmul double 5.000000e-01, %229
  %231 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %31, i32 0, i32 4
  %232 = load ptr, ptr %231, align 8, !tbaa !15
  %233 = load i64, ptr %43, align 8, !tbaa !11
  %234 = mul nsw i64 2, %233
  %235 = sub nsw i64 %234, 1
  %236 = getelementptr inbounds double, ptr %232, i64 %235
  store double %230, ptr %236, align 8, !tbaa !13
  br label %237

237:                                              ; preds = %217, %204
  br label %238

238:                                              ; preds = %237
  %239 = load i64, ptr %43, align 8, !tbaa !11
  %240 = add nsw i64 %239, 1
  store i64 %240, ptr %43, align 8, !tbaa !11
  br label %154, !llvm.loop !16

241:                                              ; preds = %154
  store i64 0, ptr %43, align 8, !tbaa !11
  br label %242

242:                                              ; preds = %275, %241
  %243 = load i64, ptr %43, align 8, !tbaa !11
  %244 = load i64, ptr %45, align 8, !tbaa !11
  %245 = sub nsw i64 %244, 1
  %246 = icmp sle i64 %243, %245
  br i1 %246, label %247, label %278

247:                                              ; preds = %242
  %248 = load i64, ptr %45, align 8, !tbaa !11
  %249 = load ptr, ptr %4, align 8, !tbaa !9
  %250 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef %248, ptr noundef %249)
  store i64 %250, ptr %44, align 8, !tbaa !11
  %251 = load i64, ptr %44, align 8, !tbaa !11
  %252 = load i64, ptr %43, align 8, !tbaa !11
  %253 = icmp ne i64 %251, %252
  br i1 %253, label %254, label %274

254:                                              ; preds = %247
  %255 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %256 = load ptr, ptr %255, align 8, !tbaa !15
  %257 = load i64, ptr %43, align 8, !tbaa !11
  %258 = getelementptr inbounds double, ptr %256, i64 %257
  %259 = load double, ptr %258, align 8, !tbaa !13
  store double %259, ptr %51, align 8, !tbaa !13
  %260 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %261 = load ptr, ptr %260, align 8, !tbaa !15
  %262 = load i64, ptr %44, align 8, !tbaa !11
  %263 = getelementptr inbounds double, ptr %261, i64 %262
  %264 = load double, ptr %263, align 8, !tbaa !13
  %265 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %266 = load ptr, ptr %265, align 8, !tbaa !15
  %267 = load i64, ptr %43, align 8, !tbaa !11
  %268 = getelementptr inbounds double, ptr %266, i64 %267
  store double %264, ptr %268, align 8, !tbaa !13
  %269 = load double, ptr %51, align 8, !tbaa !13
  %270 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %271 = load ptr, ptr %270, align 8, !tbaa !15
  %272 = load i64, ptr %44, align 8, !tbaa !11
  %273 = getelementptr inbounds double, ptr %271, i64 %272
  store double %269, ptr %273, align 8, !tbaa !13
  br label %274

274:                                              ; preds = %254, %247
  br label %275

275:                                              ; preds = %274
  %276 = load i64, ptr %43, align 8, !tbaa !11
  %277 = add nsw i64 %276, 1
  store i64 %277, ptr %43, align 8, !tbaa !11
  br label %242, !llvm.loop !18

278:                                              ; preds = %242
  store i64 0, ptr %42, align 8, !tbaa !11
  br label %279

279:                                              ; preds = %363, %278
  %280 = load i64, ptr %42, align 8, !tbaa !11
  %281 = load i64, ptr %46, align 8, !tbaa !11
  %282 = sub nsw i64 %281, 1
  %283 = icmp sle i64 %280, %282
  br i1 %283, label %284, label %366

284:                                              ; preds = %279
  %285 = load double, ptr %41, align 8, !tbaa !13
  %286 = load double, ptr %39, align 8, !tbaa !13
  %287 = fadd double %285, %286
  %288 = load double, ptr %41, align 8, !tbaa !13
  %289 = load double, ptr %39, align 8, !tbaa !13
  %290 = fsub double %288, %289
  %291 = fmul double 5.000000e-01, %290
  %292 = load i64, ptr %42, align 8, !tbaa !11
  %293 = mul nsw i64 2, %292
  %294 = add nsw i64 %293, 1
  %295 = sitofp i64 %294 to double
  %296 = fmul double 0x400921FB54442D18, %295
  %297 = load i64, ptr %46, align 8, !tbaa !11
  %298 = mul nsw i64 2, %297
  %299 = sitofp i64 %298 to double
  %300 = fdiv double %296, %299
  %301 = load ptr, ptr %4, align 8, !tbaa !9
  %302 = call noundef double @_ZN11alglib_impl6ae_cosEdPNS_8ae_stateE(double noundef %300, ptr noundef %301)
  %303 = fmul double %291, %302
  %304 = fneg double %303
  %305 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %287, double %304)
  %306 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %307 = load ptr, ptr %306, align 8, !tbaa !15
  %308 = load i64, ptr %42, align 8, !tbaa !11
  %309 = getelementptr inbounds double, ptr %307, i64 %308
  store double %305, ptr %309, align 8, !tbaa !13
  %310 = load i64, ptr %42, align 8, !tbaa !11
  %311 = icmp eq i64 %310, 0
  br i1 %311, label %312, label %318

312:                                              ; preds = %284
  %313 = load double, ptr %39, align 8, !tbaa !13
  %314 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %315 = load ptr, ptr %314, align 8, !tbaa !15
  %316 = load i64, ptr %42, align 8, !tbaa !11
  %317 = getelementptr inbounds double, ptr %315, i64 %316
  store double %313, ptr %317, align 8, !tbaa !13
  br label %318

318:                                              ; preds = %312, %284
  %319 = load i64, ptr %42, align 8, !tbaa !11
  %320 = load i64, ptr %46, align 8, !tbaa !11
  %321 = sub nsw i64 %320, 1
  %322 = icmp eq i64 %319, %321
  br i1 %322, label %323, label %329

323:                                              ; preds = %318
  %324 = load double, ptr %41, align 8, !tbaa !13
  %325 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %326 = load ptr, ptr %325, align 8, !tbaa !15
  %327 = load i64, ptr %42, align 8, !tbaa !11
  %328 = getelementptr inbounds double, ptr %326, i64 %327
  store double %324, ptr %328, align 8, !tbaa !13
  br label %329

329:                                              ; preds = %323, %318
  %330 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %331 = load ptr, ptr %330, align 8, !tbaa !15
  %332 = load i64, ptr %42, align 8, !tbaa !11
  %333 = getelementptr inbounds double, ptr %331, i64 %332
  %334 = load double, ptr %333, align 8, !tbaa !13
  %335 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %32, i32 0, i32 4
  %336 = load ptr, ptr %335, align 8, !tbaa !15
  %337 = load i64, ptr %42, align 8, !tbaa !11
  %338 = mul nsw i64 2, %337
  %339 = getelementptr inbounds double, ptr %336, i64 %338
  store double %334, ptr %339, align 8, !tbaa !13
  %340 = load i64, ptr %42, align 8, !tbaa !11
  %341 = icmp sgt i64 %340, 0
  br i1 %341, label %342, label %362

342:                                              ; preds = %329
  %343 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %344 = load ptr, ptr %343, align 8, !tbaa !15
  %345 = load i64, ptr %42, align 8, !tbaa !11
  %346 = getelementptr inbounds double, ptr %344, i64 %345
  %347 = load double, ptr %346, align 8, !tbaa !13
  %348 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %349 = load ptr, ptr %348, align 8, !tbaa !15
  %350 = load i64, ptr %42, align 8, !tbaa !11
  %351 = sub nsw i64 %350, 1
  %352 = getelementptr inbounds double, ptr %349, i64 %351
  %353 = load double, ptr %352, align 8, !tbaa !13
  %354 = fadd double %347, %353
  %355 = fmul double 5.000000e-01, %354
  %356 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %32, i32 0, i32 4
  %357 = load ptr, ptr %356, align 8, !tbaa !15
  %358 = load i64, ptr %42, align 8, !tbaa !11
  %359 = mul nsw i64 2, %358
  %360 = sub nsw i64 %359, 1
  %361 = getelementptr inbounds double, ptr %357, i64 %360
  store double %355, ptr %361, align 8, !tbaa !13
  br label %362

362:                                              ; preds = %342, %329
  br label %363

363:                                              ; preds = %362
  %364 = load i64, ptr %42, align 8, !tbaa !11
  %365 = add nsw i64 %364, 1
  store i64 %365, ptr %42, align 8, !tbaa !11
  br label %279, !llvm.loop !19

366:                                              ; preds = %279
  store i64 0, ptr %42, align 8, !tbaa !11
  br label %367

367:                                              ; preds = %400, %366
  %368 = load i64, ptr %42, align 8, !tbaa !11
  %369 = load i64, ptr %46, align 8, !tbaa !11
  %370 = sub nsw i64 %369, 1
  %371 = icmp sle i64 %368, %370
  br i1 %371, label %372, label %403

372:                                              ; preds = %367
  %373 = load i64, ptr %46, align 8, !tbaa !11
  %374 = load ptr, ptr %4, align 8, !tbaa !9
  %375 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef %373, ptr noundef %374)
  store i64 %375, ptr %44, align 8, !tbaa !11
  %376 = load i64, ptr %44, align 8, !tbaa !11
  %377 = load i64, ptr %42, align 8, !tbaa !11
  %378 = icmp ne i64 %376, %377
  br i1 %378, label %379, label %399

379:                                              ; preds = %372
  %380 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %381 = load ptr, ptr %380, align 8, !tbaa !15
  %382 = load i64, ptr %42, align 8, !tbaa !11
  %383 = getelementptr inbounds double, ptr %381, i64 %382
  %384 = load double, ptr %383, align 8, !tbaa !13
  store double %384, ptr %51, align 8, !tbaa !13
  %385 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %386 = load ptr, ptr %385, align 8, !tbaa !15
  %387 = load i64, ptr %44, align 8, !tbaa !11
  %388 = getelementptr inbounds double, ptr %386, i64 %387
  %389 = load double, ptr %388, align 8, !tbaa !13
  %390 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %391 = load ptr, ptr %390, align 8, !tbaa !15
  %392 = load i64, ptr %42, align 8, !tbaa !11
  %393 = getelementptr inbounds double, ptr %391, i64 %392
  store double %389, ptr %393, align 8, !tbaa !13
  %394 = load double, ptr %51, align 8, !tbaa !13
  %395 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %396 = load ptr, ptr %395, align 8, !tbaa !15
  %397 = load i64, ptr %44, align 8, !tbaa !11
  %398 = getelementptr inbounds double, ptr %396, i64 %397
  store double %394, ptr %398, align 8, !tbaa !13
  br label %399

399:                                              ; preds = %379, %372
  br label %400

400:                                              ; preds = %399
  %401 = load i64, ptr %42, align 8, !tbaa !11
  %402 = add nsw i64 %401, 1
  store i64 %402, ptr %42, align 8, !tbaa !11
  br label %367, !llvm.loop !20

403:                                              ; preds = %367
  store i64 0, ptr %42, align 8, !tbaa !11
  br label %404

404:                                              ; preds = %496, %403
  %405 = load i64, ptr %42, align 8, !tbaa !11
  %406 = load i64, ptr %46, align 8, !tbaa !11
  %407 = sub nsw i64 %406, 1
  %408 = icmp sle i64 %405, %407
  br i1 %408, label %409, label %499

409:                                              ; preds = %404
  store i64 0, ptr %43, align 8, !tbaa !11
  br label %410

410:                                              ; preds = %492, %409
  %411 = load i64, ptr %43, align 8, !tbaa !11
  %412 = load i64, ptr %45, align 8, !tbaa !11
  %413 = sub nsw i64 %412, 1
  %414 = icmp sle i64 %411, %413
  br i1 %414, label %415, label %495

415:                                              ; preds = %410
  %416 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %417 = load ptr, ptr %416, align 8, !tbaa !15
  %418 = load i64, ptr %43, align 8, !tbaa !11
  %419 = getelementptr inbounds double, ptr %417, i64 %418
  %420 = load double, ptr %419, align 8, !tbaa !13
  %421 = fmul double 6.000000e-01, %420
  %422 = load ptr, ptr %4, align 8, !tbaa !9
  %423 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %421, ptr noundef %422)
  %424 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %425 = load ptr, ptr %424, align 8, !tbaa !15
  %426 = load i64, ptr %42, align 8, !tbaa !11
  %427 = getelementptr inbounds double, ptr %425, i64 %426
  %428 = load double, ptr %427, align 8, !tbaa !13
  %429 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %430 = load ptr, ptr %429, align 8, !tbaa !15
  %431 = load i64, ptr %43, align 8, !tbaa !11
  %432 = getelementptr inbounds double, ptr %430, i64 %431
  %433 = load double, ptr %432, align 8, !tbaa !13
  %434 = fmul double 8.000000e-02, %433
  %435 = call double @llvm.fmuladd.f64(double -3.000000e-01, double %428, double %434)
  %436 = load ptr, ptr %4, align 8, !tbaa !9
  %437 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %435, ptr noundef %436)
  %438 = fsub double %423, %437
  %439 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %440 = load ptr, ptr %439, align 8, !tbaa !15
  %441 = load i64, ptr %43, align 8, !tbaa !11
  %442 = getelementptr inbounds double, ptr %440, i64 %441
  %443 = load double, ptr %442, align 8, !tbaa !13
  %444 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %445 = load ptr, ptr %444, align 8, !tbaa !15
  %446 = load i64, ptr %42, align 8, !tbaa !11
  %447 = getelementptr inbounds double, ptr %445, i64 %446
  %448 = load double, ptr %447, align 8, !tbaa !13
  %449 = call double @llvm.fmuladd.f64(double 1.200000e+00, double %448, double %443)
  %450 = fmul double 0x400921FB54442D18, %449
  %451 = load ptr, ptr %4, align 8, !tbaa !9
  %452 = call noundef double @_ZN11alglib_impl6ae_cosEdPNS_8ae_stateE(double noundef %450, ptr noundef %451)
  %453 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %452, double %438)
  %454 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %455 = load ptr, ptr %454, align 8, !tbaa !15
  %456 = load i64, ptr %43, align 8, !tbaa !11
  %457 = getelementptr inbounds double, ptr %455, i64 %456
  %458 = load double, ptr %457, align 8, !tbaa !13
  %459 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %460 = load ptr, ptr %459, align 8, !tbaa !15
  %461 = load i64, ptr %42, align 8, !tbaa !11
  %462 = getelementptr inbounds double, ptr %460, i64 %461
  %463 = load double, ptr %462, align 8, !tbaa !13
  %464 = fmul double 1.500000e+01, %463
  %465 = call double @llvm.fmuladd.f64(double 2.000000e+01, double %458, double %464)
  %466 = load ptr, ptr %4, align 8, !tbaa !9
  %467 = call noundef double @_ZN11alglib_impl6ae_cosEdPNS_8ae_stateE(double noundef %465, ptr noundef %466)
  %468 = call double @llvm.fmuladd.f64(double 1.000000e-01, double %467, double %453)
  %469 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %35, i32 0, i32 6
  %470 = load ptr, ptr %469, align 8, !tbaa !15
  %471 = load i64, ptr %42, align 8, !tbaa !11
  %472 = getelementptr inbounds ptr, ptr %470, i64 %471
  %473 = load ptr, ptr %472, align 8, !tbaa !9
  %474 = load i64, ptr %43, align 8, !tbaa !11
  %475 = getelementptr inbounds double, ptr %473, i64 %474
  store double %468, ptr %475, align 8, !tbaa !13
  %476 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %35, i32 0, i32 6
  %477 = load ptr, ptr %476, align 8, !tbaa !15
  %478 = load i64, ptr %42, align 8, !tbaa !11
  %479 = getelementptr inbounds ptr, ptr %477, i64 %478
  %480 = load ptr, ptr %479, align 8, !tbaa !9
  %481 = load i64, ptr %43, align 8, !tbaa !11
  %482 = getelementptr inbounds double, ptr %480, i64 %481
  %483 = load double, ptr %482, align 8, !tbaa !13
  %484 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %33, i32 0, i32 4
  %485 = load ptr, ptr %484, align 8, !tbaa !15
  %486 = load i64, ptr %42, align 8, !tbaa !11
  %487 = load i64, ptr %45, align 8, !tbaa !11
  %488 = mul nsw i64 %486, %487
  %489 = load i64, ptr %43, align 8, !tbaa !11
  %490 = add nsw i64 %488, %489
  %491 = getelementptr inbounds double, ptr %485, i64 %490
  store double %483, ptr %491, align 8, !tbaa !13
  br label %492

492:                                              ; preds = %415
  %493 = load i64, ptr %43, align 8, !tbaa !11
  %494 = add nsw i64 %493, 1
  store i64 %494, ptr %43, align 8, !tbaa !11
  br label %410, !llvm.loop !21

495:                                              ; preds = %410
  br label %496

496:                                              ; preds = %495
  %497 = load i64, ptr %42, align 8, !tbaa !11
  %498 = add nsw i64 %497, 1
  store i64 %498, ptr %42, align 8, !tbaa !11
  br label %404, !llvm.loop !22

499:                                              ; preds = %404
  store i64 0, ptr %42, align 8, !tbaa !11
  br label %500

500:                                              ; preds = %597, %499
  %501 = load i64, ptr %42, align 8, !tbaa !11
  %502 = load i64, ptr %45, align 8, !tbaa !11
  %503 = sub nsw i64 %502, 1
  %504 = icmp sle i64 %501, %503
  br i1 %504, label %505, label %600

505:                                              ; preds = %500
  store i64 0, ptr %43, align 8, !tbaa !11
  br label %506

506:                                              ; preds = %593, %505
  %507 = load i64, ptr %43, align 8, !tbaa !11
  %508 = load i64, ptr %46, align 8, !tbaa !11
  %509 = sub nsw i64 %508, 1
  %510 = icmp sle i64 %507, %509
  br i1 %510, label %511, label %596

511:                                              ; preds = %506
  store i64 0, ptr %44, align 8, !tbaa !11
  br label %512

512:                                              ; preds = %589, %511
  %513 = load i64, ptr %44, align 8, !tbaa !11
  %514 = load i64, ptr %47, align 8, !tbaa !11
  %515 = sub nsw i64 %514, 1
  %516 = icmp sle i64 %513, %515
  br i1 %516, label %517, label %592

517:                                              ; preds = %512
  %518 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %519 = load ptr, ptr %518, align 8, !tbaa !15
  %520 = load i64, ptr %42, align 8, !tbaa !11
  %521 = getelementptr inbounds double, ptr %519, i64 %520
  %522 = load double, ptr %521, align 8, !tbaa !13
  %523 = fmul double 6.000000e-01, %522
  %524 = load ptr, ptr %4, align 8, !tbaa !9
  %525 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %523, ptr noundef %524)
  %526 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %527 = load ptr, ptr %526, align 8, !tbaa !15
  %528 = load i64, ptr %43, align 8, !tbaa !11
  %529 = getelementptr inbounds double, ptr %527, i64 %528
  %530 = load double, ptr %529, align 8, !tbaa !13
  %531 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %532 = load ptr, ptr %531, align 8, !tbaa !15
  %533 = load i64, ptr %42, align 8, !tbaa !11
  %534 = getelementptr inbounds double, ptr %532, i64 %533
  %535 = load double, ptr %534, align 8, !tbaa !13
  %536 = fmul double 8.000000e-02, %535
  %537 = call double @llvm.fmuladd.f64(double -3.000000e-01, double %530, double %536)
  %538 = load ptr, ptr %4, align 8, !tbaa !9
  %539 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %537, ptr noundef %538)
  %540 = fsub double %525, %539
  %541 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %542 = load ptr, ptr %541, align 8, !tbaa !15
  %543 = load i64, ptr %42, align 8, !tbaa !11
  %544 = getelementptr inbounds double, ptr %542, i64 %543
  %545 = load double, ptr %544, align 8, !tbaa !13
  %546 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %547 = load ptr, ptr %546, align 8, !tbaa !15
  %548 = load i64, ptr %43, align 8, !tbaa !11
  %549 = getelementptr inbounds double, ptr %547, i64 %548
  %550 = load double, ptr %549, align 8, !tbaa !13
  %551 = call double @llvm.fmuladd.f64(double 1.200000e+00, double %550, double %545)
  %552 = load i64, ptr %44, align 8, !tbaa !11
  %553 = sitofp i64 %552 to double
  %554 = fadd double %551, %553
  %555 = fmul double 0x400921FB54442D18, %554
  %556 = load ptr, ptr %4, align 8, !tbaa !9
  %557 = call noundef double @_ZN11alglib_impl6ae_cosEdPNS_8ae_stateE(double noundef %555, ptr noundef %556)
  %558 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %557, double %540)
  %559 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %560 = load ptr, ptr %559, align 8, !tbaa !15
  %561 = load i64, ptr %42, align 8, !tbaa !11
  %562 = getelementptr inbounds double, ptr %560, i64 %561
  %563 = load double, ptr %562, align 8, !tbaa !13
  %564 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %565 = load ptr, ptr %564, align 8, !tbaa !15
  %566 = load i64, ptr %43, align 8, !tbaa !11
  %567 = getelementptr inbounds double, ptr %565, i64 %566
  %568 = load double, ptr %567, align 8, !tbaa !13
  %569 = fmul double 1.500000e+01, %568
  %570 = call double @llvm.fmuladd.f64(double 2.000000e+01, double %563, double %569)
  %571 = load i64, ptr %44, align 8, !tbaa !11
  %572 = sitofp i64 %571 to double
  %573 = fadd double %570, %572
  %574 = load ptr, ptr %4, align 8, !tbaa !9
  %575 = call noundef double @_ZN11alglib_impl6ae_cosEdPNS_8ae_stateE(double noundef %573, ptr noundef %574)
  %576 = call double @llvm.fmuladd.f64(double 1.000000e-01, double %575, double %558)
  %577 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %34, i32 0, i32 4
  %578 = load ptr, ptr %577, align 8, !tbaa !15
  %579 = load i64, ptr %47, align 8, !tbaa !11
  %580 = load i64, ptr %45, align 8, !tbaa !11
  %581 = load i64, ptr %43, align 8, !tbaa !11
  %582 = mul nsw i64 %580, %581
  %583 = load i64, ptr %42, align 8, !tbaa !11
  %584 = add nsw i64 %582, %583
  %585 = mul nsw i64 %579, %584
  %586 = load i64, ptr %44, align 8, !tbaa !11
  %587 = add nsw i64 %585, %586
  %588 = getelementptr inbounds double, ptr %578, i64 %587
  store double %576, ptr %588, align 8, !tbaa !13
  br label %589

589:                                              ; preds = %517
  %590 = load i64, ptr %44, align 8, !tbaa !11
  %591 = add nsw i64 %590, 1
  store i64 %591, ptr %44, align 8, !tbaa !11
  br label %512, !llvm.loop !23

592:                                              ; preds = %512
  br label %593

593:                                              ; preds = %592
  %594 = load i64, ptr %43, align 8, !tbaa !11
  %595 = add nsw i64 %594, 1
  store i64 %595, ptr %43, align 8, !tbaa !11
  br label %506, !llvm.loop !24

596:                                              ; preds = %506
  br label %597

597:                                              ; preds = %596
  %598 = load i64, ptr %42, align 8, !tbaa !11
  %599 = add nsw i64 %598, 1
  store i64 %599, ptr %42, align 8, !tbaa !11
  br label %500, !llvm.loop !25

600:                                              ; preds = %500
  %601 = load i64, ptr %45, align 8, !tbaa !11
  %602 = load i64, ptr %46, align 8, !tbaa !11
  %603 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl22spline2dbuildbilinearvEPNS_9ae_vectorElS1_lS1_lPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %27, i64 noundef %601, ptr noundef %28, i64 noundef %602, ptr noundef %33, i64 noundef 1, ptr noundef %29, ptr noundef %603)
  store double 0.000000e+00, ptr %50, align 8, !tbaa !13
  store i64 0, ptr %42, align 8, !tbaa !11
  br label %604

604:                                              ; preds = %646, %600
  %605 = load i64, ptr %42, align 8, !tbaa !11
  %606 = load i64, ptr %46, align 8, !tbaa !11
  %607 = sub nsw i64 %606, 1
  %608 = icmp sle i64 %605, %607
  br i1 %608, label %609, label %649

609:                                              ; preds = %604
  store i64 0, ptr %43, align 8, !tbaa !11
  br label %610

610:                                              ; preds = %642, %609
  %611 = load i64, ptr %43, align 8, !tbaa !11
  %612 = load i64, ptr %45, align 8, !tbaa !11
  %613 = sub nsw i64 %612, 1
  %614 = icmp sle i64 %611, %613
  br i1 %614, label %615, label %645

615:                                              ; preds = %610
  %616 = load double, ptr %50, align 8, !tbaa !13
  %617 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %35, i32 0, i32 6
  %618 = load ptr, ptr %617, align 8, !tbaa !15
  %619 = load i64, ptr %42, align 8, !tbaa !11
  %620 = getelementptr inbounds ptr, ptr %618, i64 %619
  %621 = load ptr, ptr %620, align 8, !tbaa !9
  %622 = load i64, ptr %43, align 8, !tbaa !11
  %623 = getelementptr inbounds double, ptr %621, i64 %622
  %624 = load double, ptr %623, align 8, !tbaa !13
  %625 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %626 = load ptr, ptr %625, align 8, !tbaa !15
  %627 = load i64, ptr %43, align 8, !tbaa !11
  %628 = getelementptr inbounds double, ptr %626, i64 %627
  %629 = load double, ptr %628, align 8, !tbaa !13
  %630 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %631 = load ptr, ptr %630, align 8, !tbaa !15
  %632 = load i64, ptr %42, align 8, !tbaa !11
  %633 = getelementptr inbounds double, ptr %631, i64 %632
  %634 = load double, ptr %633, align 8, !tbaa !13
  %635 = load ptr, ptr %4, align 8, !tbaa !9
  %636 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef %29, double noundef %629, double noundef %634, ptr noundef %635)
  %637 = fsub double %624, %636
  %638 = load ptr, ptr %4, align 8, !tbaa !9
  %639 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %637, ptr noundef %638)
  %640 = load ptr, ptr %4, align 8, !tbaa !9
  %641 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %616, double noundef %639, ptr noundef %640)
  store double %641, ptr %50, align 8, !tbaa !13
  br label %642

642:                                              ; preds = %615
  %643 = load i64, ptr %43, align 8, !tbaa !11
  %644 = add nsw i64 %643, 1
  store i64 %644, ptr %43, align 8, !tbaa !11
  br label %610, !llvm.loop !26

645:                                              ; preds = %610
  br label %646

646:                                              ; preds = %645
  %647 = load i64, ptr %42, align 8, !tbaa !11
  %648 = add nsw i64 %647, 1
  store i64 %648, ptr %42, align 8, !tbaa !11
  br label %604, !llvm.loop !27

649:                                              ; preds = %604
  %650 = load i8, ptr %7, align 1, !tbaa !5, !range !28, !noundef !29
  %651 = trunc i8 %650 to i1
  br i1 %651, label %655, label %652

652:                                              ; preds = %649
  %653 = load double, ptr %50, align 8, !tbaa !13
  %654 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %653, double noundef 0x3D95FD7FE1796496)
  br label %655

655:                                              ; preds = %652, %649
  %656 = phi i1 [ true, %649 ], [ %654, %652 ]
  %657 = zext i1 %656 to i8
  store i8 %657, ptr %7, align 1, !tbaa !5
  store double 0.000000e+00, ptr %50, align 8, !tbaa !13
  store i64 0, ptr %42, align 8, !tbaa !11
  br label %658

658:                                              ; preds = %765, %655
  %659 = load i64, ptr %42, align 8, !tbaa !11
  %660 = load i64, ptr %46, align 8, !tbaa !11
  %661 = sub nsw i64 %660, 2
  %662 = icmp sle i64 %659, %661
  br i1 %662, label %663, label %768

663:                                              ; preds = %658
  store i64 0, ptr %43, align 8, !tbaa !11
  br label %664

664:                                              ; preds = %761, %663
  %665 = load i64, ptr %43, align 8, !tbaa !11
  %666 = load i64, ptr %45, align 8, !tbaa !11
  %667 = sub nsw i64 %666, 2
  %668 = icmp sle i64 %665, %667
  br i1 %668, label %669, label %764

669:                                              ; preds = %664
  %670 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %31, i32 0, i32 4
  %671 = load ptr, ptr %670, align 8, !tbaa !15
  %672 = load i64, ptr %43, align 8, !tbaa !11
  %673 = mul nsw i64 2, %672
  %674 = add nsw i64 %673, 1
  %675 = getelementptr inbounds double, ptr %671, i64 %674
  %676 = load double, ptr %675, align 8, !tbaa !13
  %677 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %32, i32 0, i32 4
  %678 = load ptr, ptr %677, align 8, !tbaa !15
  %679 = load i64, ptr %42, align 8, !tbaa !11
  %680 = mul nsw i64 2, %679
  %681 = add nsw i64 %680, 1
  %682 = getelementptr inbounds double, ptr %678, i64 %681
  %683 = load double, ptr %682, align 8, !tbaa !13
  %684 = load ptr, ptr %4, align 8, !tbaa !9
  %685 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef %29, double noundef %676, double noundef %683, ptr noundef %684)
  store double %685, ptr %62, align 8, !tbaa !13
  %686 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %31, i32 0, i32 4
  %687 = load ptr, ptr %686, align 8, !tbaa !15
  %688 = load i64, ptr %43, align 8, !tbaa !11
  %689 = mul nsw i64 2, %688
  %690 = getelementptr inbounds double, ptr %687, i64 %689
  %691 = load double, ptr %690, align 8, !tbaa !13
  %692 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %32, i32 0, i32 4
  %693 = load ptr, ptr %692, align 8, !tbaa !15
  %694 = load i64, ptr %42, align 8, !tbaa !11
  %695 = mul nsw i64 2, %694
  %696 = getelementptr inbounds double, ptr %693, i64 %695
  %697 = load double, ptr %696, align 8, !tbaa !13
  %698 = load ptr, ptr %4, align 8, !tbaa !9
  %699 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef %29, double noundef %691, double noundef %697, ptr noundef %698)
  store double %699, ptr %63, align 8, !tbaa !13
  %700 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %31, i32 0, i32 4
  %701 = load ptr, ptr %700, align 8, !tbaa !15
  %702 = load i64, ptr %43, align 8, !tbaa !11
  %703 = mul nsw i64 2, %702
  %704 = add nsw i64 %703, 2
  %705 = getelementptr inbounds double, ptr %701, i64 %704
  %706 = load double, ptr %705, align 8, !tbaa !13
  %707 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %32, i32 0, i32 4
  %708 = load ptr, ptr %707, align 8, !tbaa !15
  %709 = load i64, ptr %42, align 8, !tbaa !11
  %710 = mul nsw i64 2, %709
  %711 = getelementptr inbounds double, ptr %708, i64 %710
  %712 = load double, ptr %711, align 8, !tbaa !13
  %713 = load ptr, ptr %4, align 8, !tbaa !9
  %714 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef %29, double noundef %706, double noundef %712, ptr noundef %713)
  store double %714, ptr %64, align 8, !tbaa !13
  %715 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %31, i32 0, i32 4
  %716 = load ptr, ptr %715, align 8, !tbaa !15
  %717 = load i64, ptr %43, align 8, !tbaa !11
  %718 = mul nsw i64 2, %717
  %719 = add nsw i64 %718, 2
  %720 = getelementptr inbounds double, ptr %716, i64 %719
  %721 = load double, ptr %720, align 8, !tbaa !13
  %722 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %32, i32 0, i32 4
  %723 = load ptr, ptr %722, align 8, !tbaa !15
  %724 = load i64, ptr %42, align 8, !tbaa !11
  %725 = mul nsw i64 2, %724
  %726 = add nsw i64 %725, 2
  %727 = getelementptr inbounds double, ptr %723, i64 %726
  %728 = load double, ptr %727, align 8, !tbaa !13
  %729 = load ptr, ptr %4, align 8, !tbaa !9
  %730 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef %29, double noundef %721, double noundef %728, ptr noundef %729)
  store double %730, ptr %65, align 8, !tbaa !13
  %731 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %31, i32 0, i32 4
  %732 = load ptr, ptr %731, align 8, !tbaa !15
  %733 = load i64, ptr %43, align 8, !tbaa !11
  %734 = mul nsw i64 2, %733
  %735 = getelementptr inbounds double, ptr %732, i64 %734
  %736 = load double, ptr %735, align 8, !tbaa !13
  %737 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %32, i32 0, i32 4
  %738 = load ptr, ptr %737, align 8, !tbaa !15
  %739 = load i64, ptr %42, align 8, !tbaa !11
  %740 = mul nsw i64 2, %739
  %741 = add nsw i64 %740, 2
  %742 = getelementptr inbounds double, ptr %738, i64 %741
  %743 = load double, ptr %742, align 8, !tbaa !13
  %744 = load ptr, ptr %4, align 8, !tbaa !9
  %745 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef %29, double noundef %736, double noundef %743, ptr noundef %744)
  store double %745, ptr %66, align 8, !tbaa !13
  %746 = load double, ptr %50, align 8, !tbaa !13
  %747 = load double, ptr %63, align 8, !tbaa !13
  %748 = load double, ptr %64, align 8, !tbaa !13
  %749 = fadd double %747, %748
  %750 = load double, ptr %65, align 8, !tbaa !13
  %751 = fadd double %749, %750
  %752 = load double, ptr %66, align 8, !tbaa !13
  %753 = fadd double %751, %752
  %754 = load double, ptr %62, align 8, !tbaa !13
  %755 = fneg double %754
  %756 = call double @llvm.fmuladd.f64(double 2.500000e-01, double %753, double %755)
  %757 = load ptr, ptr %4, align 8, !tbaa !9
  %758 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %756, ptr noundef %757)
  %759 = load ptr, ptr %4, align 8, !tbaa !9
  %760 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %746, double noundef %758, ptr noundef %759)
  store double %760, ptr %50, align 8, !tbaa !13
  br label %761

761:                                              ; preds = %669
  %762 = load i64, ptr %43, align 8, !tbaa !11
  %763 = add nsw i64 %762, 1
  store i64 %763, ptr %43, align 8, !tbaa !11
  br label %664, !llvm.loop !30

764:                                              ; preds = %664
  br label %765

765:                                              ; preds = %764
  %766 = load i64, ptr %42, align 8, !tbaa !11
  %767 = add nsw i64 %766, 1
  store i64 %767, ptr %42, align 8, !tbaa !11
  br label %658, !llvm.loop !31

768:                                              ; preds = %658
  %769 = load i8, ptr %7, align 1, !tbaa !5, !range !28, !noundef !29
  %770 = trunc i8 %769 to i1
  br i1 %770, label %774, label %771

771:                                              ; preds = %768
  %772 = load double, ptr %50, align 8, !tbaa !13
  %773 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %772, double noundef 0x3D95FD7FE1796496)
  br label %774

774:                                              ; preds = %771, %768
  %775 = phi i1 [ true, %768 ], [ %773, %771 ]
  %776 = zext i1 %775 to i8
  store i8 %776, ptr %7, align 1, !tbaa !5
  %777 = load i64, ptr %46, align 8, !tbaa !11
  %778 = load i64, ptr %45, align 8, !tbaa !11
  %779 = load double, ptr %25, align 8, !tbaa !13
  %780 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testspline2dunit_lconstPN11alglib_impl19spline2dinterpolantEPNS_9ae_vectorES3_lldPdS4_S4_S4_PNS_8ae_stateE(ptr noundef %29, ptr noundef %31, ptr noundef %32, i64 noundef %777, i64 noundef %778, double noundef %779, ptr noundef %54, ptr noundef %55, ptr noundef %56, ptr noundef %57, ptr noundef %780)
  %781 = load i64, ptr %46, align 8, !tbaa !11
  %782 = load i64, ptr %45, align 8, !tbaa !11
  %783 = load double, ptr %25, align 8, !tbaa !13
  %784 = fdiv double %783, 3.000000e+00
  %785 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testspline2dunit_lconstPN11alglib_impl19spline2dinterpolantEPNS_9ae_vectorES3_lldPdS4_S4_S4_PNS_8ae_stateE(ptr noundef %29, ptr noundef %31, ptr noundef %32, i64 noundef %781, i64 noundef %782, double noundef %784, ptr noundef %58, ptr noundef %59, ptr noundef %60, ptr noundef %61, ptr noundef %785)
  %786 = load i8, ptr %7, align 1, !tbaa !5, !range !28, !noundef !29
  %787 = trunc i8 %786 to i1
  br i1 %787, label %793, label %788

788:                                              ; preds = %774
  %789 = load double, ptr %58, align 8, !tbaa !13
  %790 = load double, ptr %54, align 8, !tbaa !13
  %791 = fdiv double %789, %790
  %792 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %791, double noundef 1.200000e+00)
  br label %793

793:                                              ; preds = %788, %774
  %794 = phi i1 [ true, %774 ], [ %792, %788 ]
  %795 = zext i1 %794 to i8
  store i8 %795, ptr %7, align 1, !tbaa !5
  store double 0.000000e+00, ptr %50, align 8, !tbaa !13
  store i64 0, ptr %42, align 8, !tbaa !11
  br label %796

796:                                              ; preds = %875, %793
  %797 = load i64, ptr %42, align 8, !tbaa !11
  %798 = load i64, ptr %46, align 8, !tbaa !11
  %799 = sub nsw i64 %798, 2
  %800 = icmp sle i64 %797, %799
  br i1 %800, label %801, label %878

801:                                              ; preds = %796
  store i64 0, ptr %43, align 8, !tbaa !11
  br label %802

802:                                              ; preds = %871, %801
  %803 = load i64, ptr %43, align 8, !tbaa !11
  %804 = load i64, ptr %45, align 8, !tbaa !11
  %805 = sub nsw i64 %804, 2
  %806 = icmp sle i64 %803, %805
  br i1 %806, label %807, label %874

807:                                              ; preds = %802
  %808 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %31, i32 0, i32 4
  %809 = load ptr, ptr %808, align 8, !tbaa !15
  %810 = load i64, ptr %43, align 8, !tbaa !11
  %811 = mul nsw i64 2, %810
  %812 = add nsw i64 %811, 1
  %813 = getelementptr inbounds double, ptr %809, i64 %812
  %814 = load double, ptr %813, align 8, !tbaa !13
  %815 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %32, i32 0, i32 4
  %816 = load ptr, ptr %815, align 8, !tbaa !15
  %817 = load i64, ptr %42, align 8, !tbaa !11
  %818 = mul nsw i64 2, %817
  %819 = add nsw i64 %818, 1
  %820 = getelementptr inbounds double, ptr %816, i64 %819
  %821 = load double, ptr %820, align 8, !tbaa !13
  %822 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12spline2ddiffEPNS_19spline2dinterpolantEddPdS2_S2_S2_PNS_8ae_stateE(ptr noundef %29, double noundef %814, double noundef %821, ptr noundef %67, ptr noundef %68, ptr noundef %69, ptr noundef %70, ptr noundef %822)
  %823 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %31, i32 0, i32 4
  %824 = load ptr, ptr %823, align 8, !tbaa !15
  %825 = load i64, ptr %43, align 8, !tbaa !11
  %826 = mul nsw i64 2, %825
  %827 = add nsw i64 %826, 1
  %828 = getelementptr inbounds double, ptr %824, i64 %827
  %829 = load double, ptr %828, align 8, !tbaa !13
  %830 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %32, i32 0, i32 4
  %831 = load ptr, ptr %830, align 8, !tbaa !15
  %832 = load i64, ptr %42, align 8, !tbaa !11
  %833 = mul nsw i64 2, %832
  %834 = add nsw i64 %833, 1
  %835 = getelementptr inbounds double, ptr %831, i64 %834
  %836 = load double, ptr %835, align 8, !tbaa !13
  %837 = load double, ptr %26, align 8, !tbaa !13
  %838 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL27testspline2dunit_twodnumderPN11alglib_impl19spline2dinterpolantEdddPdS2_S2_S2_PNS_8ae_stateE(ptr noundef %29, double noundef %829, double noundef %836, double noundef %837, ptr noundef %71, ptr noundef %72, ptr noundef %73, ptr noundef %74, ptr noundef %838)
  %839 = load double, ptr %50, align 8, !tbaa !13
  %840 = load double, ptr %67, align 8, !tbaa !13
  %841 = load double, ptr %71, align 8, !tbaa !13
  %842 = fsub double %840, %841
  %843 = load ptr, ptr %4, align 8, !tbaa !9
  %844 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %842, ptr noundef %843)
  %845 = load ptr, ptr %4, align 8, !tbaa !9
  %846 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %839, double noundef %844, ptr noundef %845)
  store double %846, ptr %50, align 8, !tbaa !13
  %847 = load double, ptr %50, align 8, !tbaa !13
  %848 = load double, ptr %68, align 8, !tbaa !13
  %849 = load double, ptr %72, align 8, !tbaa !13
  %850 = fsub double %848, %849
  %851 = load ptr, ptr %4, align 8, !tbaa !9
  %852 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %850, ptr noundef %851)
  %853 = load ptr, ptr %4, align 8, !tbaa !9
  %854 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %847, double noundef %852, ptr noundef %853)
  store double %854, ptr %50, align 8, !tbaa !13
  %855 = load double, ptr %50, align 8, !tbaa !13
  %856 = load double, ptr %69, align 8, !tbaa !13
  %857 = load double, ptr %73, align 8, !tbaa !13
  %858 = fsub double %856, %857
  %859 = load ptr, ptr %4, align 8, !tbaa !9
  %860 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %858, ptr noundef %859)
  %861 = load ptr, ptr %4, align 8, !tbaa !9
  %862 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %855, double noundef %860, ptr noundef %861)
  store double %862, ptr %50, align 8, !tbaa !13
  %863 = load double, ptr %50, align 8, !tbaa !13
  %864 = load double, ptr %70, align 8, !tbaa !13
  %865 = load double, ptr %74, align 8, !tbaa !13
  %866 = fsub double %864, %865
  %867 = load ptr, ptr %4, align 8, !tbaa !9
  %868 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %866, ptr noundef %867)
  %869 = load ptr, ptr %4, align 8, !tbaa !9
  %870 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %863, double noundef %868, ptr noundef %869)
  store double %870, ptr %50, align 8, !tbaa !13
  br label %871

871:                                              ; preds = %807
  %872 = load i64, ptr %43, align 8, !tbaa !11
  %873 = add nsw i64 %872, 1
  store i64 %873, ptr %43, align 8, !tbaa !11
  br label %802, !llvm.loop !32

874:                                              ; preds = %802
  br label %875

875:                                              ; preds = %874
  %876 = load i64, ptr %42, align 8, !tbaa !11
  %877 = add nsw i64 %876, 1
  store i64 %877, ptr %42, align 8, !tbaa !11
  br label %796, !llvm.loop !33

878:                                              ; preds = %796
  %879 = load i8, ptr %9, align 1, !tbaa !5, !range !28, !noundef !29
  %880 = trunc i8 %879 to i1
  br i1 %880, label %884, label %881

881:                                              ; preds = %878
  %882 = load double, ptr %50, align 8, !tbaa !13
  %883 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %882, double noundef 1.000000e-03)
  br label %884

884:                                              ; preds = %881, %878
  %885 = phi i1 [ true, %878 ], [ %883, %881 ]
  %886 = zext i1 %885 to i8
  store i8 %886, ptr %9, align 1, !tbaa !5
  %887 = load i8, ptr %12, align 1, !tbaa !5, !range !28, !noundef !29
  %888 = trunc i8 %887 to i1
  br i1 %888, label %893, label %889

889:                                              ; preds = %884
  %890 = load ptr, ptr %4, align 8, !tbaa !9
  %891 = call noundef zeroext i1 @_ZL27testspline2dunit_testunpackPN11alglib_impl19spline2dinterpolantEPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef %29, ptr noundef %31, ptr noundef %32, ptr noundef %890)
  %892 = xor i1 %891, true
  br label %893

893:                                              ; preds = %889, %884
  %894 = phi i1 [ true, %884 ], [ %892, %889 ]
  %895 = zext i1 %894 to i8
  store i8 %895, ptr %12, align 1, !tbaa !5
  %896 = load i8, ptr %13, align 1, !tbaa !5, !range !28, !noundef !29
  %897 = trunc i8 %896 to i1
  br i1 %897, label %906, label %898

898:                                              ; preds = %893
  %899 = load double, ptr %38, align 8, !tbaa !13
  %900 = load double, ptr %40, align 8, !tbaa !13
  %901 = load double, ptr %39, align 8, !tbaa !13
  %902 = load double, ptr %41, align 8, !tbaa !13
  %903 = load ptr, ptr %4, align 8, !tbaa !9
  %904 = call noundef zeroext i1 @_ZL29testspline2dunit_testlintransPN11alglib_impl19spline2dinterpolantElddddPNS_8ae_stateE(ptr noundef %29, i64 noundef 1, double noundef %899, double noundef %900, double noundef %901, double noundef %902, ptr noundef %903)
  %905 = xor i1 %904, true
  br label %906

906:                                              ; preds = %898, %893
  %907 = phi i1 [ true, %893 ], [ %905, %898 ]
  %908 = zext i1 %907 to i8
  store i8 %908, ptr %13, align 1, !tbaa !5
  %909 = load i64, ptr %45, align 8, !tbaa !11
  %910 = load i64, ptr %46, align 8, !tbaa !11
  %911 = load i64, ptr %47, align 8, !tbaa !11
  %912 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl22spline2dbuildbilinearvEPNS_9ae_vectorElS1_lS1_lPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %27, i64 noundef %909, ptr noundef %28, i64 noundef %910, ptr noundef %34, i64 noundef %911, ptr noundef %29, ptr noundef %912)
  %913 = load i8, ptr %13, align 1, !tbaa !5, !range !28, !noundef !29
  %914 = trunc i8 %913 to i1
  br i1 %914, label %924, label %915

915:                                              ; preds = %906
  %916 = load i64, ptr %47, align 8, !tbaa !11
  %917 = load double, ptr %38, align 8, !tbaa !13
  %918 = load double, ptr %40, align 8, !tbaa !13
  %919 = load double, ptr %39, align 8, !tbaa !13
  %920 = load double, ptr %41, align 8, !tbaa !13
  %921 = load ptr, ptr %4, align 8, !tbaa !9
  %922 = call noundef zeroext i1 @_ZL29testspline2dunit_testlintransPN11alglib_impl19spline2dinterpolantElddddPNS_8ae_stateE(ptr noundef %29, i64 noundef %916, double noundef %917, double noundef %918, double noundef %919, double noundef %920, ptr noundef %921)
  %923 = xor i1 %922, true
  br label %924

924:                                              ; preds = %915, %906
  %925 = phi i1 [ true, %906 ], [ %923, %915 ]
  %926 = zext i1 %925 to i8
  store i8 %926, ptr %13, align 1, !tbaa !5
  %927 = load i64, ptr %45, align 8, !tbaa !11
  %928 = load i64, ptr %46, align 8, !tbaa !11
  %929 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl21spline2dbuildbicubicvEPNS_9ae_vectorElS1_lS1_lPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %27, i64 noundef %927, ptr noundef %28, i64 noundef %928, ptr noundef %33, i64 noundef 1, ptr noundef %29, ptr noundef %929)
  store double 0.000000e+00, ptr %50, align 8, !tbaa !13
  store i64 0, ptr %42, align 8, !tbaa !11
  br label %930

930:                                              ; preds = %972, %924
  %931 = load i64, ptr %42, align 8, !tbaa !11
  %932 = load i64, ptr %46, align 8, !tbaa !11
  %933 = sub nsw i64 %932, 1
  %934 = icmp sle i64 %931, %933
  br i1 %934, label %935, label %975

935:                                              ; preds = %930
  store i64 0, ptr %43, align 8, !tbaa !11
  br label %936

936:                                              ; preds = %968, %935
  %937 = load i64, ptr %43, align 8, !tbaa !11
  %938 = load i64, ptr %45, align 8, !tbaa !11
  %939 = sub nsw i64 %938, 1
  %940 = icmp sle i64 %937, %939
  br i1 %940, label %941, label %971

941:                                              ; preds = %936
  %942 = load double, ptr %50, align 8, !tbaa !13
  %943 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %35, i32 0, i32 6
  %944 = load ptr, ptr %943, align 8, !tbaa !15
  %945 = load i64, ptr %42, align 8, !tbaa !11
  %946 = getelementptr inbounds ptr, ptr %944, i64 %945
  %947 = load ptr, ptr %946, align 8, !tbaa !9
  %948 = load i64, ptr %43, align 8, !tbaa !11
  %949 = getelementptr inbounds double, ptr %947, i64 %948
  %950 = load double, ptr %949, align 8, !tbaa !13
  %951 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %952 = load ptr, ptr %951, align 8, !tbaa !15
  %953 = load i64, ptr %43, align 8, !tbaa !11
  %954 = getelementptr inbounds double, ptr %952, i64 %953
  %955 = load double, ptr %954, align 8, !tbaa !13
  %956 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %957 = load ptr, ptr %956, align 8, !tbaa !15
  %958 = load i64, ptr %42, align 8, !tbaa !11
  %959 = getelementptr inbounds double, ptr %957, i64 %958
  %960 = load double, ptr %959, align 8, !tbaa !13
  %961 = load ptr, ptr %4, align 8, !tbaa !9
  %962 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef %29, double noundef %955, double noundef %960, ptr noundef %961)
  %963 = fsub double %950, %962
  %964 = load ptr, ptr %4, align 8, !tbaa !9
  %965 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %963, ptr noundef %964)
  %966 = load ptr, ptr %4, align 8, !tbaa !9
  %967 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %942, double noundef %965, ptr noundef %966)
  store double %967, ptr %50, align 8, !tbaa !13
  br label %968

968:                                              ; preds = %941
  %969 = load i64, ptr %43, align 8, !tbaa !11
  %970 = add nsw i64 %969, 1
  store i64 %970, ptr %43, align 8, !tbaa !11
  br label %936, !llvm.loop !34

971:                                              ; preds = %936
  br label %972

972:                                              ; preds = %971
  %973 = load i64, ptr %42, align 8, !tbaa !11
  %974 = add nsw i64 %973, 1
  store i64 %974, ptr %42, align 8, !tbaa !11
  br label %930, !llvm.loop !35

975:                                              ; preds = %930
  %976 = load i8, ptr %8, align 1, !tbaa !5, !range !28, !noundef !29
  %977 = trunc i8 %976 to i1
  br i1 %977, label %981, label %978

978:                                              ; preds = %975
  %979 = load double, ptr %50, align 8, !tbaa !13
  %980 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %979, double noundef 0x3D95FD7FE1796496)
  br label %981

981:                                              ; preds = %978, %975
  %982 = phi i1 [ true, %975 ], [ %980, %978 ]
  %983 = zext i1 %982 to i8
  store i8 %983, ptr %8, align 1, !tbaa !5
  %984 = load i64, ptr %46, align 8, !tbaa !11
  %985 = load i64, ptr %45, align 8, !tbaa !11
  %986 = load double, ptr %25, align 8, !tbaa !13
  %987 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testspline2dunit_lconstPN11alglib_impl19spline2dinterpolantEPNS_9ae_vectorES3_lldPdS4_S4_S4_PNS_8ae_stateE(ptr noundef %29, ptr noundef %31, ptr noundef %32, i64 noundef %984, i64 noundef %985, double noundef %986, ptr noundef %54, ptr noundef %55, ptr noundef %56, ptr noundef %57, ptr noundef %987)
  %988 = load i64, ptr %46, align 8, !tbaa !11
  %989 = load i64, ptr %45, align 8, !tbaa !11
  %990 = load double, ptr %25, align 8, !tbaa !13
  %991 = fdiv double %990, 3.000000e+00
  %992 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testspline2dunit_lconstPN11alglib_impl19spline2dinterpolantEPNS_9ae_vectorES3_lldPdS4_S4_S4_PNS_8ae_stateE(ptr noundef %29, ptr noundef %31, ptr noundef %32, i64 noundef %988, i64 noundef %989, double noundef %991, ptr noundef %58, ptr noundef %59, ptr noundef %60, ptr noundef %61, ptr noundef %992)
  %993 = load i8, ptr %8, align 1, !tbaa !5, !range !28, !noundef !29
  %994 = trunc i8 %993 to i1
  br i1 %994, label %1000, label %995

995:                                              ; preds = %981
  %996 = load double, ptr %58, align 8, !tbaa !13
  %997 = load double, ptr %54, align 8, !tbaa !13
  %998 = fdiv double %996, %997
  %999 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %998, double noundef 1.200000e+00)
  br label %1000

1000:                                             ; preds = %995, %981
  %1001 = phi i1 [ true, %981 ], [ %999, %995 ]
  %1002 = zext i1 %1001 to i8
  store i8 %1002, ptr %8, align 1, !tbaa !5
  %1003 = load i8, ptr %8, align 1, !tbaa !5, !range !28, !noundef !29
  %1004 = trunc i8 %1003 to i1
  br i1 %1004, label %1010, label %1005

1005:                                             ; preds = %1000
  %1006 = load double, ptr %59, align 8, !tbaa !13
  %1007 = load double, ptr %55, align 8, !tbaa !13
  %1008 = fdiv double %1006, %1007
  %1009 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1008, double noundef 1.200000e+00)
  br label %1010

1010:                                             ; preds = %1005, %1000
  %1011 = phi i1 [ true, %1000 ], [ %1009, %1005 ]
  %1012 = zext i1 %1011 to i8
  store i8 %1012, ptr %8, align 1, !tbaa !5
  %1013 = load i8, ptr %8, align 1, !tbaa !5, !range !28, !noundef !29
  %1014 = trunc i8 %1013 to i1
  br i1 %1014, label %1020, label %1015

1015:                                             ; preds = %1010
  %1016 = load double, ptr %60, align 8, !tbaa !13
  %1017 = load double, ptr %56, align 8, !tbaa !13
  %1018 = fdiv double %1016, %1017
  %1019 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1018, double noundef 1.200000e+00)
  br label %1020

1020:                                             ; preds = %1015, %1010
  %1021 = phi i1 [ true, %1010 ], [ %1019, %1015 ]
  %1022 = zext i1 %1021 to i8
  store i8 %1022, ptr %8, align 1, !tbaa !5
  %1023 = load double, ptr %61, align 8, !tbaa !13
  %1024 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1023, double noundef 1.000000e-02)
  br i1 %1024, label %1025, label %1039

1025:                                             ; preds = %1020
  %1026 = load double, ptr %57, align 8, !tbaa !13
  %1027 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1026, double noundef 1.000000e-02)
  br i1 %1027, label %1028, label %1039

1028:                                             ; preds = %1025
  %1029 = load i8, ptr %8, align 1, !tbaa !5, !range !28, !noundef !29
  %1030 = trunc i8 %1029 to i1
  br i1 %1030, label %1036, label %1031

1031:                                             ; preds = %1028
  %1032 = load double, ptr %61, align 8, !tbaa !13
  %1033 = load double, ptr %57, align 8, !tbaa !13
  %1034 = fdiv double %1032, %1033
  %1035 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1034, double noundef 1.200000e+00)
  br label %1036

1036:                                             ; preds = %1031, %1028
  %1037 = phi i1 [ true, %1028 ], [ %1035, %1031 ]
  %1038 = zext i1 %1037 to i8
  store i8 %1038, ptr %8, align 1, !tbaa !5
  br label %1039

1039:                                             ; preds = %1036, %1025, %1020
  store double 0.000000e+00, ptr %50, align 8, !tbaa !13
  store i64 0, ptr %42, align 8, !tbaa !11
  br label %1040

1040:                                             ; preds = %1113, %1039
  %1041 = load i64, ptr %42, align 8, !tbaa !11
  %1042 = load i64, ptr %46, align 8, !tbaa !11
  %1043 = mul nsw i64 2, %1042
  %1044 = sub nsw i64 %1043, 2
  %1045 = icmp sle i64 %1041, %1044
  br i1 %1045, label %1046, label %1116

1046:                                             ; preds = %1040
  store i64 0, ptr %43, align 8, !tbaa !11
  br label %1047

1047:                                             ; preds = %1109, %1046
  %1048 = load i64, ptr %43, align 8, !tbaa !11
  %1049 = load i64, ptr %45, align 8, !tbaa !11
  %1050 = mul nsw i64 2, %1049
  %1051 = sub nsw i64 %1050, 2
  %1052 = icmp sle i64 %1048, %1051
  br i1 %1052, label %1053, label %1112

1053:                                             ; preds = %1047
  %1054 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %31, i32 0, i32 4
  %1055 = load ptr, ptr %1054, align 8, !tbaa !15
  %1056 = load i64, ptr %43, align 8, !tbaa !11
  %1057 = getelementptr inbounds double, ptr %1055, i64 %1056
  %1058 = load double, ptr %1057, align 8, !tbaa !13
  %1059 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %32, i32 0, i32 4
  %1060 = load ptr, ptr %1059, align 8, !tbaa !15
  %1061 = load i64, ptr %42, align 8, !tbaa !11
  %1062 = getelementptr inbounds double, ptr %1060, i64 %1061
  %1063 = load double, ptr %1062, align 8, !tbaa !13
  %1064 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12spline2ddiffEPNS_19spline2dinterpolantEddPdS2_S2_S2_PNS_8ae_stateE(ptr noundef %29, double noundef %1058, double noundef %1063, ptr noundef %67, ptr noundef %68, ptr noundef %69, ptr noundef %70, ptr noundef %1064)
  %1065 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %31, i32 0, i32 4
  %1066 = load ptr, ptr %1065, align 8, !tbaa !15
  %1067 = load i64, ptr %43, align 8, !tbaa !11
  %1068 = getelementptr inbounds double, ptr %1066, i64 %1067
  %1069 = load double, ptr %1068, align 8, !tbaa !13
  %1070 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %32, i32 0, i32 4
  %1071 = load ptr, ptr %1070, align 8, !tbaa !15
  %1072 = load i64, ptr %42, align 8, !tbaa !11
  %1073 = getelementptr inbounds double, ptr %1071, i64 %1072
  %1074 = load double, ptr %1073, align 8, !tbaa !13
  %1075 = load double, ptr %26, align 8, !tbaa !13
  %1076 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL27testspline2dunit_twodnumderPN11alglib_impl19spline2dinterpolantEdddPdS2_S2_S2_PNS_8ae_stateE(ptr noundef %29, double noundef %1069, double noundef %1074, double noundef %1075, ptr noundef %71, ptr noundef %72, ptr noundef %73, ptr noundef %74, ptr noundef %1076)
  %1077 = load double, ptr %50, align 8, !tbaa !13
  %1078 = load double, ptr %67, align 8, !tbaa !13
  %1079 = load double, ptr %71, align 8, !tbaa !13
  %1080 = fsub double %1078, %1079
  %1081 = load ptr, ptr %4, align 8, !tbaa !9
  %1082 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1080, ptr noundef %1081)
  %1083 = load ptr, ptr %4, align 8, !tbaa !9
  %1084 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1077, double noundef %1082, ptr noundef %1083)
  store double %1084, ptr %50, align 8, !tbaa !13
  %1085 = load double, ptr %50, align 8, !tbaa !13
  %1086 = load double, ptr %68, align 8, !tbaa !13
  %1087 = load double, ptr %72, align 8, !tbaa !13
  %1088 = fsub double %1086, %1087
  %1089 = load ptr, ptr %4, align 8, !tbaa !9
  %1090 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1088, ptr noundef %1089)
  %1091 = load ptr, ptr %4, align 8, !tbaa !9
  %1092 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1085, double noundef %1090, ptr noundef %1091)
  store double %1092, ptr %50, align 8, !tbaa !13
  %1093 = load double, ptr %50, align 8, !tbaa !13
  %1094 = load double, ptr %69, align 8, !tbaa !13
  %1095 = load double, ptr %73, align 8, !tbaa !13
  %1096 = fsub double %1094, %1095
  %1097 = load ptr, ptr %4, align 8, !tbaa !9
  %1098 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1096, ptr noundef %1097)
  %1099 = load ptr, ptr %4, align 8, !tbaa !9
  %1100 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1093, double noundef %1098, ptr noundef %1099)
  store double %1100, ptr %50, align 8, !tbaa !13
  %1101 = load double, ptr %50, align 8, !tbaa !13
  %1102 = load double, ptr %70, align 8, !tbaa !13
  %1103 = load double, ptr %74, align 8, !tbaa !13
  %1104 = fsub double %1102, %1103
  %1105 = load ptr, ptr %4, align 8, !tbaa !9
  %1106 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1104, ptr noundef %1105)
  %1107 = load ptr, ptr %4, align 8, !tbaa !9
  %1108 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1101, double noundef %1106, ptr noundef %1107)
  store double %1108, ptr %50, align 8, !tbaa !13
  br label %1109

1109:                                             ; preds = %1053
  %1110 = load i64, ptr %43, align 8, !tbaa !11
  %1111 = add nsw i64 %1110, 1
  store i64 %1111, ptr %43, align 8, !tbaa !11
  br label %1047, !llvm.loop !36

1112:                                             ; preds = %1047
  br label %1113

1113:                                             ; preds = %1112
  %1114 = load i64, ptr %42, align 8, !tbaa !11
  %1115 = add nsw i64 %1114, 1
  store i64 %1115, ptr %42, align 8, !tbaa !11
  br label %1040, !llvm.loop !37

1116:                                             ; preds = %1040
  %1117 = load i8, ptr %9, align 1, !tbaa !5, !range !28, !noundef !29
  %1118 = trunc i8 %1117 to i1
  br i1 %1118, label %1122, label %1119

1119:                                             ; preds = %1116
  %1120 = load double, ptr %50, align 8, !tbaa !13
  %1121 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1120, double noundef 1.000000e-03)
  br label %1122

1122:                                             ; preds = %1119, %1116
  %1123 = phi i1 [ true, %1116 ], [ %1121, %1119 ]
  %1124 = zext i1 %1123 to i8
  store i8 %1124, ptr %9, align 1, !tbaa !5
  %1125 = load i8, ptr %12, align 1, !tbaa !5, !range !28, !noundef !29
  %1126 = trunc i8 %1125 to i1
  br i1 %1126, label %1131, label %1127

1127:                                             ; preds = %1122
  %1128 = load ptr, ptr %4, align 8, !tbaa !9
  %1129 = call noundef zeroext i1 @_ZL27testspline2dunit_testunpackPN11alglib_impl19spline2dinterpolantEPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef %29, ptr noundef %31, ptr noundef %32, ptr noundef %1128)
  %1130 = xor i1 %1129, true
  br label %1131

1131:                                             ; preds = %1127, %1122
  %1132 = phi i1 [ true, %1122 ], [ %1130, %1127 ]
  %1133 = zext i1 %1132 to i8
  store i8 %1133, ptr %12, align 1, !tbaa !5
  %1134 = load i8, ptr %13, align 1, !tbaa !5, !range !28, !noundef !29
  %1135 = trunc i8 %1134 to i1
  br i1 %1135, label %1144, label %1136

1136:                                             ; preds = %1131
  %1137 = load double, ptr %38, align 8, !tbaa !13
  %1138 = load double, ptr %40, align 8, !tbaa !13
  %1139 = load double, ptr %39, align 8, !tbaa !13
  %1140 = load double, ptr %41, align 8, !tbaa !13
  %1141 = load ptr, ptr %4, align 8, !tbaa !9
  %1142 = call noundef zeroext i1 @_ZL29testspline2dunit_testlintransPN11alglib_impl19spline2dinterpolantElddddPNS_8ae_stateE(ptr noundef %29, i64 noundef 1, double noundef %1137, double noundef %1138, double noundef %1139, double noundef %1140, ptr noundef %1141)
  %1143 = xor i1 %1142, true
  br label %1144

1144:                                             ; preds = %1136, %1131
  %1145 = phi i1 [ true, %1131 ], [ %1143, %1136 ]
  %1146 = zext i1 %1145 to i8
  store i8 %1146, ptr %13, align 1, !tbaa !5
  %1147 = load i64, ptr %45, align 8, !tbaa !11
  %1148 = load i64, ptr %46, align 8, !tbaa !11
  %1149 = load i64, ptr %47, align 8, !tbaa !11
  %1150 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl21spline2dbuildbicubicvEPNS_9ae_vectorElS1_lS1_lPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %27, i64 noundef %1147, ptr noundef %28, i64 noundef %1148, ptr noundef %34, i64 noundef %1149, ptr noundef %29, ptr noundef %1150)
  %1151 = load i8, ptr %13, align 1, !tbaa !5, !range !28, !noundef !29
  %1152 = trunc i8 %1151 to i1
  br i1 %1152, label %1162, label %1153

1153:                                             ; preds = %1144
  %1154 = load i64, ptr %47, align 8, !tbaa !11
  %1155 = load double, ptr %38, align 8, !tbaa !13
  %1156 = load double, ptr %40, align 8, !tbaa !13
  %1157 = load double, ptr %39, align 8, !tbaa !13
  %1158 = load double, ptr %41, align 8, !tbaa !13
  %1159 = load ptr, ptr %4, align 8, !tbaa !9
  %1160 = call noundef zeroext i1 @_ZL29testspline2dunit_testlintransPN11alglib_impl19spline2dinterpolantElddddPNS_8ae_stateE(ptr noundef %29, i64 noundef %1154, double noundef %1155, double noundef %1156, double noundef %1157, double noundef %1158, ptr noundef %1159)
  %1161 = xor i1 %1160, true
  br label %1162

1162:                                             ; preds = %1153, %1144
  %1163 = phi i1 [ true, %1144 ], [ %1161, %1153 ]
  %1164 = zext i1 %1163 to i8
  store i8 %1164, ptr %13, align 1, !tbaa !5
  %1165 = load ptr, ptr %4, align 8, !tbaa !9
  %1166 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1165)
  %1167 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1166, double noundef 5.000000e-01)
  br i1 %1167, label %1168, label %1172

1168:                                             ; preds = %1162
  %1169 = load i64, ptr %46, align 8, !tbaa !11
  %1170 = load i64, ptr %45, align 8, !tbaa !11
  %1171 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20spline2dbuildbicubicEPNS_9ae_vectorES1_PNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %27, ptr noundef %28, ptr noundef %35, i64 noundef %1169, i64 noundef %1170, ptr noundef %29, ptr noundef %1171)
  br label %1176

1172:                                             ; preds = %1162
  %1173 = load i64, ptr %46, align 8, !tbaa !11
  %1174 = load i64, ptr %45, align 8, !tbaa !11
  %1175 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl21spline2dbuildbilinearEPNS_9ae_vectorES1_PNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %27, ptr noundef %28, ptr noundef %35, i64 noundef %1173, i64 noundef %1174, ptr noundef %29, ptr noundef %1175)
  br label %1176

1176:                                             ; preds = %1172, %1168
  %1177 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL30testspline2dunit_unsetspline2dPN11alglib_impl19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %30, ptr noundef %1177)
  %1178 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12spline2dcopyEPNS_19spline2dinterpolantES1_PNS_8ae_stateE(ptr noundef %29, ptr noundef %30, ptr noundef %1178)
  store double 0.000000e+00, ptr %50, align 8, !tbaa !13
  store i64 1, ptr %42, align 8, !tbaa !11
  br label %1179

1179:                                             ; preds = %1211, %1176
  %1180 = load i64, ptr %42, align 8, !tbaa !11
  %1181 = icmp sle i64 %1180, 5
  br i1 %1181, label %1182, label %1214

1182:                                             ; preds = %1179
  %1183 = load double, ptr %38, align 8, !tbaa !13
  %1184 = load double, ptr %40, align 8, !tbaa !13
  %1185 = load double, ptr %38, align 8, !tbaa !13
  %1186 = fsub double %1184, %1185
  %1187 = load ptr, ptr %4, align 8, !tbaa !9
  %1188 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1187)
  %1189 = call double @llvm.fmuladd.f64(double %1186, double %1188, double %1183)
  store double %1189, ptr %52, align 8, !tbaa !13
  %1190 = load double, ptr %39, align 8, !tbaa !13
  %1191 = load double, ptr %41, align 8, !tbaa !13
  %1192 = load double, ptr %39, align 8, !tbaa !13
  %1193 = fsub double %1191, %1192
  %1194 = load ptr, ptr %4, align 8, !tbaa !9
  %1195 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1194)
  %1196 = call double @llvm.fmuladd.f64(double %1193, double %1195, double %1190)
  store double %1196, ptr %53, align 8, !tbaa !13
  %1197 = load double, ptr %50, align 8, !tbaa !13
  %1198 = load double, ptr %52, align 8, !tbaa !13
  %1199 = load double, ptr %53, align 8, !tbaa !13
  %1200 = load ptr, ptr %4, align 8, !tbaa !9
  %1201 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef %29, double noundef %1198, double noundef %1199, ptr noundef %1200)
  %1202 = load double, ptr %52, align 8, !tbaa !13
  %1203 = load double, ptr %53, align 8, !tbaa !13
  %1204 = load ptr, ptr %4, align 8, !tbaa !9
  %1205 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef %30, double noundef %1202, double noundef %1203, ptr noundef %1204)
  %1206 = fsub double %1201, %1205
  %1207 = load ptr, ptr %4, align 8, !tbaa !9
  %1208 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1206, ptr noundef %1207)
  %1209 = load ptr, ptr %4, align 8, !tbaa !9
  %1210 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1197, double noundef %1208, ptr noundef %1209)
  store double %1210, ptr %50, align 8, !tbaa !13
  br label %1211

1211:                                             ; preds = %1182
  %1212 = load i64, ptr %42, align 8, !tbaa !11
  %1213 = add nsw i64 %1212, 1
  store i64 %1213, ptr %42, align 8, !tbaa !11
  br label %1179, !llvm.loop !38

1214:                                             ; preds = %1179
  %1215 = load i8, ptr %10, align 1, !tbaa !5, !range !28, !noundef !29
  %1216 = trunc i8 %1215 to i1
  br i1 %1216, label %1220, label %1217

1217:                                             ; preds = %1214
  %1218 = load double, ptr %50, align 8, !tbaa !13
  %1219 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1218, double noundef 0x3D95FD7FE1796496)
  br label %1220

1220:                                             ; preds = %1217, %1214
  %1221 = phi i1 [ true, %1214 ], [ %1219, %1217 ]
  %1222 = zext i1 %1221 to i8
  store i8 %1222, ptr %10, align 1, !tbaa !5
  %1223 = load ptr, ptr %4, align 8, !tbaa !9
  %1224 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1223)
  %1225 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1224, double noundef 5.000000e-01)
  br i1 %1225, label %1226, label %1230

1226:                                             ; preds = %1220
  %1227 = load i64, ptr %46, align 8, !tbaa !11
  %1228 = load i64, ptr %45, align 8, !tbaa !11
  %1229 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20spline2dbuildbicubicEPNS_9ae_vectorES1_PNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %27, ptr noundef %28, ptr noundef %35, i64 noundef %1227, i64 noundef %1228, ptr noundef %29, ptr noundef %1229)
  br label %1234

1230:                                             ; preds = %1220
  %1231 = load i64, ptr %46, align 8, !tbaa !11
  %1232 = load i64, ptr %45, align 8, !tbaa !11
  %1233 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl21spline2dbuildbilinearEPNS_9ae_vectorES1_PNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %27, ptr noundef %28, ptr noundef %35, i64 noundef %1231, i64 noundef %1232, ptr noundef %29, ptr noundef %1233)
  br label %1234

1234:                                             ; preds = %1230, %1226
  %1235 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL30testspline2dunit_unsetspline2dPN11alglib_impl19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %30, ptr noundef %1235)
  call void @llvm.lifetime.start.p0(i64 88, ptr %77) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr %79) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr %80) #5
  %1236 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %1236, ptr noundef %79)
  call void @_ZN11alglib_impl18ae_serializer_initEPNS_13ae_serializerE(ptr noundef %77)
  call void @_ZN11alglib_impl25ae_serializer_alloc_startEPNS_13ae_serializerE(ptr noundef %77)
  %1237 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13spline2dallocEPNS_13ae_serializerEPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %77, ptr noundef %29, ptr noundef %1237)
  %1238 = call noundef i64 @_ZN11alglib_impl28ae_serializer_get_alloc_sizeEPNS_13ae_serializerE(ptr noundef %77)
  store i64 %1238, ptr %78, align 8, !tbaa !11
  call void @llvm.memset.p0.i64(ptr align 8 %80, i8 0, i64 32, i1 false)
  %1239 = load i64, ptr %78, align 8, !tbaa !11
  %1240 = add nsw i64 %1239, 1
  %1241 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl10ae_db_initEPNS_12ae_dyn_blockElPNS_8ae_stateEb(ptr noundef %80, i64 noundef %1240, ptr noundef %1241, i1 noundef zeroext true)
  %1242 = getelementptr inbounds %"struct.alglib_impl::ae_dyn_block", ptr %80, i32 0, i32 2
  %1243 = load volatile ptr, ptr %1242, align 8, !tbaa !39
  call void @_ZN11alglib_impl24ae_serializer_sstart_strEPNS_13ae_serializerEPc(ptr noundef %77, ptr noundef %1243)
  %1244 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl17spline2dserializeEPNS_13ae_serializerEPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %77, ptr noundef %29, ptr noundef %1244)
  %1245 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl18ae_serializer_stopEPNS_13ae_serializerEPNS_8ae_stateE(ptr noundef %77, ptr noundef %1245)
  call void @_ZN11alglib_impl19ae_serializer_clearEPNS_13ae_serializerE(ptr noundef %77)
  call void @_ZN11alglib_impl18ae_serializer_initEPNS_13ae_serializerE(ptr noundef %77)
  %1246 = getelementptr inbounds %"struct.alglib_impl::ae_dyn_block", ptr %80, i32 0, i32 2
  %1247 = load volatile ptr, ptr %1246, align 8, !tbaa !39
  call void @_ZN11alglib_impl24ae_serializer_ustart_strEPNS_13ae_serializerEPKc(ptr noundef %77, ptr noundef %1247)
  %1248 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl19spline2dunserializeEPNS_13ae_serializerEPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %77, ptr noundef %30, ptr noundef %1248)
  %1249 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl18ae_serializer_stopEPNS_13ae_serializerEPNS_8ae_stateE(ptr noundef %77, ptr noundef %1249)
  call void @_ZN11alglib_impl19ae_serializer_clearEPNS_13ae_serializerE(ptr noundef %77)
  %1250 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1250)
  call void @llvm.lifetime.end.p0(i64 32, ptr %80) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %79) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #5
  call void @llvm.lifetime.end.p0(i64 88, ptr %77) #5
  store double 0.000000e+00, ptr %50, align 8, !tbaa !13
  store i64 1, ptr %42, align 8, !tbaa !11
  br label %1251

1251:                                             ; preds = %1283, %1234
  %1252 = load i64, ptr %42, align 8, !tbaa !11
  %1253 = icmp sle i64 %1252, 5
  br i1 %1253, label %1254, label %1286

1254:                                             ; preds = %1251
  %1255 = load double, ptr %38, align 8, !tbaa !13
  %1256 = load double, ptr %40, align 8, !tbaa !13
  %1257 = load double, ptr %38, align 8, !tbaa !13
  %1258 = fsub double %1256, %1257
  %1259 = load ptr, ptr %4, align 8, !tbaa !9
  %1260 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1259)
  %1261 = call double @llvm.fmuladd.f64(double %1258, double %1260, double %1255)
  store double %1261, ptr %52, align 8, !tbaa !13
  %1262 = load double, ptr %39, align 8, !tbaa !13
  %1263 = load double, ptr %41, align 8, !tbaa !13
  %1264 = load double, ptr %39, align 8, !tbaa !13
  %1265 = fsub double %1263, %1264
  %1266 = load ptr, ptr %4, align 8, !tbaa !9
  %1267 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1266)
  %1268 = call double @llvm.fmuladd.f64(double %1265, double %1267, double %1262)
  store double %1268, ptr %53, align 8, !tbaa !13
  %1269 = load double, ptr %50, align 8, !tbaa !13
  %1270 = load double, ptr %52, align 8, !tbaa !13
  %1271 = load double, ptr %53, align 8, !tbaa !13
  %1272 = load ptr, ptr %4, align 8, !tbaa !9
  %1273 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef %29, double noundef %1270, double noundef %1271, ptr noundef %1272)
  %1274 = load double, ptr %52, align 8, !tbaa !13
  %1275 = load double, ptr %53, align 8, !tbaa !13
  %1276 = load ptr, ptr %4, align 8, !tbaa !9
  %1277 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef %30, double noundef %1274, double noundef %1275, ptr noundef %1276)
  %1278 = fsub double %1273, %1277
  %1279 = load ptr, ptr %4, align 8, !tbaa !9
  %1280 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1278, ptr noundef %1279)
  %1281 = load ptr, ptr %4, align 8, !tbaa !9
  %1282 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1269, double noundef %1280, ptr noundef %1281)
  store double %1282, ptr %50, align 8, !tbaa !13
  br label %1283

1283:                                             ; preds = %1254
  %1284 = load i64, ptr %42, align 8, !tbaa !11
  %1285 = add nsw i64 %1284, 1
  store i64 %1285, ptr %42, align 8, !tbaa !11
  br label %1251, !llvm.loop !41

1286:                                             ; preds = %1251
  %1287 = load double, ptr %50, align 8, !tbaa !13
  %1288 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1287, double noundef 0x3D95FD7FE1796496)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %11, i1 noundef zeroext %1288, ptr noundef @.str.8, i32 noundef 108289, ptr noundef @.str.654)
  store double 0.000000e+00, ptr %50, align 8, !tbaa !13
  store i64 0, ptr %24, align 8, !tbaa !11
  br label %1289

1289:                                             ; preds = %1381, %1286
  %1290 = load i64, ptr %24, align 8, !tbaa !11
  %1291 = icmp sle i64 %1290, 1
  br i1 %1291, label %1292, label %1384

1292:                                             ; preds = %1289
  store i64 0, ptr %42, align 8, !tbaa !11
  br label %1293

1293:                                             ; preds = %1324, %1292
  %1294 = load i64, ptr %42, align 8, !tbaa !11
  %1295 = load i64, ptr %46, align 8, !tbaa !11
  %1296 = sub nsw i64 %1295, 1
  %1297 = icmp sle i64 %1294, %1296
  br i1 %1297, label %1298, label %1327

1298:                                             ; preds = %1293
  store i64 0, ptr %43, align 8, !tbaa !11
  br label %1299

1299:                                             ; preds = %1320, %1298
  %1300 = load i64, ptr %43, align 8, !tbaa !11
  %1301 = load i64, ptr %45, align 8, !tbaa !11
  %1302 = sub nsw i64 %1301, 1
  %1303 = icmp sle i64 %1300, %1302
  br i1 %1303, label %1304, label %1323

1304:                                             ; preds = %1299
  %1305 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %35, i32 0, i32 6
  %1306 = load ptr, ptr %1305, align 8, !tbaa !15
  %1307 = load i64, ptr %42, align 8, !tbaa !11
  %1308 = getelementptr inbounds ptr, ptr %1306, i64 %1307
  %1309 = load ptr, ptr %1308, align 8, !tbaa !9
  %1310 = load i64, ptr %43, align 8, !tbaa !11
  %1311 = getelementptr inbounds double, ptr %1309, i64 %1310
  %1312 = load double, ptr %1311, align 8, !tbaa !13
  %1313 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %37, i32 0, i32 6
  %1314 = load ptr, ptr %1313, align 8, !tbaa !15
  %1315 = load i64, ptr %43, align 8, !tbaa !11
  %1316 = getelementptr inbounds ptr, ptr %1314, i64 %1315
  %1317 = load ptr, ptr %1316, align 8, !tbaa !9
  %1318 = load i64, ptr %42, align 8, !tbaa !11
  %1319 = getelementptr inbounds double, ptr %1317, i64 %1318
  store double %1312, ptr %1319, align 8, !tbaa !13
  br label %1320

1320:                                             ; preds = %1304
  %1321 = load i64, ptr %43, align 8, !tbaa !11
  %1322 = add nsw i64 %1321, 1
  store i64 %1322, ptr %43, align 8, !tbaa !11
  br label %1299, !llvm.loop !42

1323:                                             ; preds = %1299
  br label %1324

1324:                                             ; preds = %1323
  %1325 = load i64, ptr %42, align 8, !tbaa !11
  %1326 = add nsw i64 %1325, 1
  store i64 %1326, ptr %42, align 8, !tbaa !11
  br label %1293, !llvm.loop !43

1327:                                             ; preds = %1293
  %1328 = load i64, ptr %24, align 8, !tbaa !11
  %1329 = icmp eq i64 %1328, 0
  br i1 %1329, label %1330, label %1337

1330:                                             ; preds = %1327
  %1331 = load i64, ptr %46, align 8, !tbaa !11
  %1332 = load i64, ptr %45, align 8, !tbaa !11
  %1333 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl21spline2dbuildbilinearEPNS_9ae_vectorES1_PNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %27, ptr noundef %28, ptr noundef %35, i64 noundef %1331, i64 noundef %1332, ptr noundef %29, ptr noundef %1333)
  %1334 = load i64, ptr %45, align 8, !tbaa !11
  %1335 = load i64, ptr %46, align 8, !tbaa !11
  %1336 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl21spline2dbuildbilinearEPNS_9ae_vectorES1_PNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %28, ptr noundef %27, ptr noundef %37, i64 noundef %1334, i64 noundef %1335, ptr noundef %30, ptr noundef %1336)
  br label %1344

1337:                                             ; preds = %1327
  %1338 = load i64, ptr %46, align 8, !tbaa !11
  %1339 = load i64, ptr %45, align 8, !tbaa !11
  %1340 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20spline2dbuildbicubicEPNS_9ae_vectorES1_PNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %27, ptr noundef %28, ptr noundef %35, i64 noundef %1338, i64 noundef %1339, ptr noundef %29, ptr noundef %1340)
  %1341 = load i64, ptr %45, align 8, !tbaa !11
  %1342 = load i64, ptr %46, align 8, !tbaa !11
  %1343 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20spline2dbuildbicubicEPNS_9ae_vectorES1_PNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %28, ptr noundef %27, ptr noundef %37, i64 noundef %1341, i64 noundef %1342, ptr noundef %30, ptr noundef %1343)
  br label %1344

1344:                                             ; preds = %1337, %1330
  store i64 1, ptr %42, align 8, !tbaa !11
  br label %1345

1345:                                             ; preds = %1377, %1344
  %1346 = load i64, ptr %42, align 8, !tbaa !11
  %1347 = icmp sle i64 %1346, 10
  br i1 %1347, label %1348, label %1380

1348:                                             ; preds = %1345
  %1349 = load double, ptr %38, align 8, !tbaa !13
  %1350 = load double, ptr %40, align 8, !tbaa !13
  %1351 = load double, ptr %38, align 8, !tbaa !13
  %1352 = fsub double %1350, %1351
  %1353 = load ptr, ptr %4, align 8, !tbaa !9
  %1354 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1353)
  %1355 = call double @llvm.fmuladd.f64(double %1352, double %1354, double %1349)
  store double %1355, ptr %52, align 8, !tbaa !13
  %1356 = load double, ptr %39, align 8, !tbaa !13
  %1357 = load double, ptr %41, align 8, !tbaa !13
  %1358 = load double, ptr %39, align 8, !tbaa !13
  %1359 = fsub double %1357, %1358
  %1360 = load ptr, ptr %4, align 8, !tbaa !9
  %1361 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1360)
  %1362 = call double @llvm.fmuladd.f64(double %1359, double %1361, double %1356)
  store double %1362, ptr %53, align 8, !tbaa !13
  %1363 = load double, ptr %50, align 8, !tbaa !13
  %1364 = load double, ptr %52, align 8, !tbaa !13
  %1365 = load double, ptr %53, align 8, !tbaa !13
  %1366 = load ptr, ptr %4, align 8, !tbaa !9
  %1367 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef %29, double noundef %1364, double noundef %1365, ptr noundef %1366)
  %1368 = load double, ptr %53, align 8, !tbaa !13
  %1369 = load double, ptr %52, align 8, !tbaa !13
  %1370 = load ptr, ptr %4, align 8, !tbaa !9
  %1371 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef %30, double noundef %1368, double noundef %1369, ptr noundef %1370)
  %1372 = fsub double %1367, %1371
  %1373 = load ptr, ptr %4, align 8, !tbaa !9
  %1374 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1372, ptr noundef %1373)
  %1375 = load ptr, ptr %4, align 8, !tbaa !9
  %1376 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1363, double noundef %1374, ptr noundef %1375)
  store double %1376, ptr %50, align 8, !tbaa !13
  br label %1377

1377:                                             ; preds = %1348
  %1378 = load i64, ptr %42, align 8, !tbaa !11
  %1379 = add nsw i64 %1378, 1
  store i64 %1379, ptr %42, align 8, !tbaa !11
  br label %1345, !llvm.loop !44

1380:                                             ; preds = %1345
  br label %1381

1381:                                             ; preds = %1380
  %1382 = load i64, ptr %24, align 8, !tbaa !11
  %1383 = add nsw i64 %1382, 1
  store i64 %1383, ptr %24, align 8, !tbaa !11
  br label %1289, !llvm.loop !45

1384:                                             ; preds = %1289
  %1385 = load i8, ptr %14, align 1, !tbaa !5, !range !28, !noundef !29
  %1386 = trunc i8 %1385 to i1
  br i1 %1386, label %1390, label %1387

1387:                                             ; preds = %1384
  %1388 = load double, ptr %50, align 8, !tbaa !13
  %1389 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1388, double noundef 0x3D95FD7FE1796496)
  br label %1390

1390:                                             ; preds = %1387, %1384
  %1391 = phi i1 [ true, %1384 ], [ %1389, %1387 ]
  %1392 = zext i1 %1391 to i8
  store i8 %1392, ptr %14, align 1, !tbaa !5
  br label %1393

1393:                                             ; preds = %1390
  %1394 = load i64, ptr %22, align 8, !tbaa !11
  %1395 = add nsw i64 %1394, 1
  store i64 %1395, ptr %22, align 8, !tbaa !11
  br label %137, !llvm.loop !46

1396:                                             ; preds = %137
  br label %1397

1397:                                             ; preds = %1396
  %1398 = load i64, ptr %46, align 8, !tbaa !11
  %1399 = add nsw i64 %1398, 1
  store i64 %1399, ptr %46, align 8, !tbaa !11
  br label %102, !llvm.loop !47

1400:                                             ; preds = %102
  br label %1401

1401:                                             ; preds = %1400
  %1402 = load i64, ptr %45, align 8, !tbaa !11
  %1403 = add nsw i64 %1402, 1
  store i64 %1403, ptr %45, align 8, !tbaa !11
  br label %98, !llvm.loop !48

1404:                                             ; preds = %98
  store i64 2, ptr %46, align 8, !tbaa !11
  br label %1405

1405:                                             ; preds = %1693, %1404
  %1406 = load i64, ptr %46, align 8, !tbaa !11
  %1407 = icmp sle i64 %1406, 6
  br i1 %1407, label %1408, label %1696

1408:                                             ; preds = %1405
  store i64 2, ptr %45, align 8, !tbaa !11
  br label %1409

1409:                                             ; preds = %1689, %1408
  %1410 = load i64, ptr %45, align 8, !tbaa !11
  %1411 = icmp sle i64 %1410, 6
  br i1 %1411, label %1412, label %1692

1412:                                             ; preds = %1409
  %1413 = load i64, ptr %46, align 8, !tbaa !11
  %1414 = sub nsw i64 %1413, 1
  %1415 = add nsw i64 %1414, 1
  %1416 = load i64, ptr %45, align 8, !tbaa !11
  %1417 = sub nsw i64 %1416, 1
  %1418 = add nsw i64 %1417, 1
  %1419 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %35, i64 noundef %1415, i64 noundef %1418, ptr noundef %1419)
  %1420 = load i64, ptr %45, align 8, !tbaa !11
  %1421 = sub nsw i64 %1420, 1
  %1422 = add nsw i64 %1421, 1
  %1423 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %27, i64 noundef %1422, ptr noundef %1423)
  %1424 = load i64, ptr %46, align 8, !tbaa !11
  %1425 = sub nsw i64 %1424, 1
  %1426 = add nsw i64 %1425, 1
  %1427 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %28, i64 noundef %1426, ptr noundef %1427)
  store i64 0, ptr %43, align 8, !tbaa !11
  br label %1428

1428:                                             ; preds = %1444, %1412
  %1429 = load i64, ptr %43, align 8, !tbaa !11
  %1430 = load i64, ptr %45, align 8, !tbaa !11
  %1431 = sub nsw i64 %1430, 1
  %1432 = icmp sle i64 %1429, %1431
  br i1 %1432, label %1433, label %1447

1433:                                             ; preds = %1428
  %1434 = load i64, ptr %43, align 8, !tbaa !11
  %1435 = sitofp i64 %1434 to double
  %1436 = load i64, ptr %45, align 8, !tbaa !11
  %1437 = sub nsw i64 %1436, 1
  %1438 = sitofp i64 %1437 to double
  %1439 = fdiv double %1435, %1438
  %1440 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %1441 = load ptr, ptr %1440, align 8, !tbaa !15
  %1442 = load i64, ptr %43, align 8, !tbaa !11
  %1443 = getelementptr inbounds double, ptr %1441, i64 %1442
  store double %1439, ptr %1443, align 8, !tbaa !13
  br label %1444

1444:                                             ; preds = %1433
  %1445 = load i64, ptr %43, align 8, !tbaa !11
  %1446 = add nsw i64 %1445, 1
  store i64 %1446, ptr %43, align 8, !tbaa !11
  br label %1428, !llvm.loop !49

1447:                                             ; preds = %1428
  store i64 0, ptr %42, align 8, !tbaa !11
  br label %1448

1448:                                             ; preds = %1464, %1447
  %1449 = load i64, ptr %42, align 8, !tbaa !11
  %1450 = load i64, ptr %46, align 8, !tbaa !11
  %1451 = sub nsw i64 %1450, 1
  %1452 = icmp sle i64 %1449, %1451
  br i1 %1452, label %1453, label %1467

1453:                                             ; preds = %1448
  %1454 = load i64, ptr %42, align 8, !tbaa !11
  %1455 = sitofp i64 %1454 to double
  %1456 = load i64, ptr %46, align 8, !tbaa !11
  %1457 = sub nsw i64 %1456, 1
  %1458 = sitofp i64 %1457 to double
  %1459 = fdiv double %1455, %1458
  %1460 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %1461 = load ptr, ptr %1460, align 8, !tbaa !15
  %1462 = load i64, ptr %42, align 8, !tbaa !11
  %1463 = getelementptr inbounds double, ptr %1461, i64 %1462
  store double %1459, ptr %1463, align 8, !tbaa !13
  br label %1464

1464:                                             ; preds = %1453
  %1465 = load i64, ptr %42, align 8, !tbaa !11
  %1466 = add nsw i64 %1465, 1
  store i64 %1466, ptr %42, align 8, !tbaa !11
  br label %1448, !llvm.loop !50

1467:                                             ; preds = %1448
  store i64 0, ptr %42, align 8, !tbaa !11
  br label %1468

1468:                                             ; preds = %1544, %1467
  %1469 = load i64, ptr %42, align 8, !tbaa !11
  %1470 = load i64, ptr %46, align 8, !tbaa !11
  %1471 = sub nsw i64 %1470, 1
  %1472 = icmp sle i64 %1469, %1471
  br i1 %1472, label %1473, label %1547

1473:                                             ; preds = %1468
  store i64 0, ptr %43, align 8, !tbaa !11
  br label %1474

1474:                                             ; preds = %1540, %1473
  %1475 = load i64, ptr %43, align 8, !tbaa !11
  %1476 = load i64, ptr %45, align 8, !tbaa !11
  %1477 = sub nsw i64 %1476, 1
  %1478 = icmp sle i64 %1475, %1477
  br i1 %1478, label %1479, label %1543

1479:                                             ; preds = %1474
  %1480 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %1481 = load ptr, ptr %1480, align 8, !tbaa !15
  %1482 = load i64, ptr %43, align 8, !tbaa !11
  %1483 = getelementptr inbounds double, ptr %1481, i64 %1482
  %1484 = load double, ptr %1483, align 8, !tbaa !13
  %1485 = fmul double 6.000000e-01, %1484
  %1486 = load ptr, ptr %4, align 8, !tbaa !9
  %1487 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %1485, ptr noundef %1486)
  %1488 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %1489 = load ptr, ptr %1488, align 8, !tbaa !15
  %1490 = load i64, ptr %42, align 8, !tbaa !11
  %1491 = getelementptr inbounds double, ptr %1489, i64 %1490
  %1492 = load double, ptr %1491, align 8, !tbaa !13
  %1493 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %1494 = load ptr, ptr %1493, align 8, !tbaa !15
  %1495 = load i64, ptr %43, align 8, !tbaa !11
  %1496 = getelementptr inbounds double, ptr %1494, i64 %1495
  %1497 = load double, ptr %1496, align 8, !tbaa !13
  %1498 = fmul double 8.000000e-02, %1497
  %1499 = call double @llvm.fmuladd.f64(double -3.000000e-01, double %1492, double %1498)
  %1500 = load ptr, ptr %4, align 8, !tbaa !9
  %1501 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %1499, ptr noundef %1500)
  %1502 = fsub double %1487, %1501
  %1503 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %1504 = load ptr, ptr %1503, align 8, !tbaa !15
  %1505 = load i64, ptr %43, align 8, !tbaa !11
  %1506 = getelementptr inbounds double, ptr %1504, i64 %1505
  %1507 = load double, ptr %1506, align 8, !tbaa !13
  %1508 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %1509 = load ptr, ptr %1508, align 8, !tbaa !15
  %1510 = load i64, ptr %42, align 8, !tbaa !11
  %1511 = getelementptr inbounds double, ptr %1509, i64 %1510
  %1512 = load double, ptr %1511, align 8, !tbaa !13
  %1513 = call double @llvm.fmuladd.f64(double 1.200000e+00, double %1512, double %1507)
  %1514 = fmul double 0x400921FB54442D18, %1513
  %1515 = load ptr, ptr %4, align 8, !tbaa !9
  %1516 = call noundef double @_ZN11alglib_impl6ae_cosEdPNS_8ae_stateE(double noundef %1514, ptr noundef %1515)
  %1517 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %1516, double %1502)
  %1518 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %1519 = load ptr, ptr %1518, align 8, !tbaa !15
  %1520 = load i64, ptr %43, align 8, !tbaa !11
  %1521 = getelementptr inbounds double, ptr %1519, i64 %1520
  %1522 = load double, ptr %1521, align 8, !tbaa !13
  %1523 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %1524 = load ptr, ptr %1523, align 8, !tbaa !15
  %1525 = load i64, ptr %42, align 8, !tbaa !11
  %1526 = getelementptr inbounds double, ptr %1524, i64 %1525
  %1527 = load double, ptr %1526, align 8, !tbaa !13
  %1528 = fmul double 1.500000e+01, %1527
  %1529 = call double @llvm.fmuladd.f64(double 2.000000e+01, double %1522, double %1528)
  %1530 = load ptr, ptr %4, align 8, !tbaa !9
  %1531 = call noundef double @_ZN11alglib_impl6ae_cosEdPNS_8ae_stateE(double noundef %1529, ptr noundef %1530)
  %1532 = call double @llvm.fmuladd.f64(double 1.000000e-01, double %1531, double %1517)
  %1533 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %35, i32 0, i32 6
  %1534 = load ptr, ptr %1533, align 8, !tbaa !15
  %1535 = load i64, ptr %42, align 8, !tbaa !11
  %1536 = getelementptr inbounds ptr, ptr %1534, i64 %1535
  %1537 = load ptr, ptr %1536, align 8, !tbaa !9
  %1538 = load i64, ptr %43, align 8, !tbaa !11
  %1539 = getelementptr inbounds double, ptr %1537, i64 %1538
  store double %1532, ptr %1539, align 8, !tbaa !13
  br label %1540

1540:                                             ; preds = %1479
  %1541 = load i64, ptr %43, align 8, !tbaa !11
  %1542 = add nsw i64 %1541, 1
  store i64 %1542, ptr %43, align 8, !tbaa !11
  br label %1474, !llvm.loop !51

1543:                                             ; preds = %1474
  br label %1544

1544:                                             ; preds = %1543
  %1545 = load i64, ptr %42, align 8, !tbaa !11
  %1546 = add nsw i64 %1545, 1
  store i64 %1546, ptr %42, align 8, !tbaa !11
  br label %1468, !llvm.loop !52

1547:                                             ; preds = %1468
  store i64 2, ptr %49, align 8, !tbaa !11
  br label %1548

1548:                                             ; preds = %1685, %1547
  %1549 = load i64, ptr %49, align 8, !tbaa !11
  %1550 = icmp sle i64 %1549, 6
  br i1 %1550, label %1551, label %1688

1551:                                             ; preds = %1548
  store i64 2, ptr %48, align 8, !tbaa !11
  br label %1552

1552:                                             ; preds = %1681, %1551
  %1553 = load i64, ptr %48, align 8, !tbaa !11
  %1554 = icmp sle i64 %1553, 6
  br i1 %1554, label %1555, label %1684

1555:                                             ; preds = %1552
  store i64 1, ptr %22, align 8, !tbaa !11
  br label %1556

1556:                                             ; preds = %1677, %1555
  %1557 = load i64, ptr %22, align 8, !tbaa !11
  %1558 = load i64, ptr %23, align 8, !tbaa !11
  %1559 = icmp sle i64 %1557, %1558
  br i1 %1559, label %1560, label %1680

1560:                                             ; preds = %1556
  store i64 0, ptr %24, align 8, !tbaa !11
  br label %1561

1561:                                             ; preds = %1673, %1560
  %1562 = load i64, ptr %24, align 8, !tbaa !11
  %1563 = icmp sle i64 %1562, 1
  br i1 %1563, label %1564, label %1676

1564:                                             ; preds = %1561
  %1565 = load i64, ptr %24, align 8, !tbaa !11
  %1566 = icmp eq i64 %1565, 0
  br i1 %1566, label %1567, label %1576

1567:                                             ; preds = %1564
  %1568 = load i64, ptr %46, align 8, !tbaa !11
  %1569 = load i64, ptr %45, align 8, !tbaa !11
  %1570 = load i64, ptr %49, align 8, !tbaa !11
  %1571 = load i64, ptr %48, align 8, !tbaa !11
  %1572 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl24spline2dresamplebilinearEPNS_9ae_matrixEllS1_llPNS_8ae_stateE(ptr noundef %35, i64 noundef %1568, i64 noundef %1569, ptr noundef %36, i64 noundef %1570, i64 noundef %1571, ptr noundef %1572)
  %1573 = load i64, ptr %46, align 8, !tbaa !11
  %1574 = load i64, ptr %45, align 8, !tbaa !11
  %1575 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl21spline2dbuildbilinearEPNS_9ae_vectorES1_PNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %27, ptr noundef %28, ptr noundef %35, i64 noundef %1573, i64 noundef %1574, ptr noundef %29, ptr noundef %1575)
  br label %1576

1576:                                             ; preds = %1567, %1564
  %1577 = load i64, ptr %24, align 8, !tbaa !11
  %1578 = icmp eq i64 %1577, 1
  br i1 %1578, label %1579, label %1588

1579:                                             ; preds = %1576
  %1580 = load i64, ptr %46, align 8, !tbaa !11
  %1581 = load i64, ptr %45, align 8, !tbaa !11
  %1582 = load i64, ptr %49, align 8, !tbaa !11
  %1583 = load i64, ptr %48, align 8, !tbaa !11
  %1584 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl23spline2dresamplebicubicEPNS_9ae_matrixEllS1_llPNS_8ae_stateE(ptr noundef %35, i64 noundef %1580, i64 noundef %1581, ptr noundef %36, i64 noundef %1582, i64 noundef %1583, ptr noundef %1584)
  %1585 = load i64, ptr %46, align 8, !tbaa !11
  %1586 = load i64, ptr %45, align 8, !tbaa !11
  %1587 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20spline2dbuildbicubicEPNS_9ae_vectorES1_PNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef %27, ptr noundef %28, ptr noundef %35, i64 noundef %1585, i64 noundef %1586, ptr noundef %29, ptr noundef %1587)
  br label %1588

1588:                                             ; preds = %1579, %1576
  store double 0.000000e+00, ptr %50, align 8, !tbaa !13
  store double 0.000000e+00, ptr %75, align 8, !tbaa !13
  store i64 0, ptr %42, align 8, !tbaa !11
  br label %1589

1589:                                             ; preds = %1641, %1588
  %1590 = load i64, ptr %42, align 8, !tbaa !11
  %1591 = load i64, ptr %49, align 8, !tbaa !11
  %1592 = sub nsw i64 %1591, 1
  %1593 = icmp sle i64 %1590, %1592
  br i1 %1593, label %1594, label %1644

1594:                                             ; preds = %1589
  store i64 0, ptr %43, align 8, !tbaa !11
  br label %1595

1595:                                             ; preds = %1637, %1594
  %1596 = load i64, ptr %43, align 8, !tbaa !11
  %1597 = load i64, ptr %48, align 8, !tbaa !11
  %1598 = sub nsw i64 %1597, 1
  %1599 = icmp sle i64 %1596, %1598
  br i1 %1599, label %1600, label %1640

1600:                                             ; preds = %1595
  %1601 = load i64, ptr %43, align 8, !tbaa !11
  %1602 = sitofp i64 %1601 to double
  %1603 = load i64, ptr %48, align 8, !tbaa !11
  %1604 = sub nsw i64 %1603, 1
  %1605 = sitofp i64 %1604 to double
  %1606 = fdiv double %1602, %1605
  %1607 = load i64, ptr %42, align 8, !tbaa !11
  %1608 = sitofp i64 %1607 to double
  %1609 = load i64, ptr %49, align 8, !tbaa !11
  %1610 = sub nsw i64 %1609, 1
  %1611 = sitofp i64 %1610 to double
  %1612 = fdiv double %1608, %1611
  %1613 = load ptr, ptr %4, align 8, !tbaa !9
  %1614 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef %29, double noundef %1606, double noundef %1612, ptr noundef %1613)
  store double %1614, ptr %67, align 8, !tbaa !13
  %1615 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %36, i32 0, i32 6
  %1616 = load ptr, ptr %1615, align 8, !tbaa !15
  %1617 = load i64, ptr %42, align 8, !tbaa !11
  %1618 = getelementptr inbounds ptr, ptr %1616, i64 %1617
  %1619 = load ptr, ptr %1618, align 8, !tbaa !9
  %1620 = load i64, ptr %43, align 8, !tbaa !11
  %1621 = getelementptr inbounds double, ptr %1619, i64 %1620
  %1622 = load double, ptr %1621, align 8, !tbaa !13
  store double %1622, ptr %71, align 8, !tbaa !13
  %1623 = load double, ptr %50, align 8, !tbaa !13
  %1624 = load double, ptr %67, align 8, !tbaa !13
  %1625 = load double, ptr %71, align 8, !tbaa !13
  %1626 = fsub double %1624, %1625
  %1627 = load ptr, ptr %4, align 8, !tbaa !9
  %1628 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1626, ptr noundef %1627)
  %1629 = load ptr, ptr %4, align 8, !tbaa !9
  %1630 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1623, double noundef %1628, ptr noundef %1629)
  store double %1630, ptr %50, align 8, !tbaa !13
  %1631 = load double, ptr %75, align 8, !tbaa !13
  %1632 = load double, ptr %67, align 8, !tbaa !13
  %1633 = load ptr, ptr %4, align 8, !tbaa !9
  %1634 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1632, ptr noundef %1633)
  %1635 = load ptr, ptr %4, align 8, !tbaa !9
  %1636 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1631, double noundef %1634, ptr noundef %1635)
  store double %1636, ptr %75, align 8, !tbaa !13
  br label %1637

1637:                                             ; preds = %1600
  %1638 = load i64, ptr %43, align 8, !tbaa !11
  %1639 = add nsw i64 %1638, 1
  store i64 %1639, ptr %43, align 8, !tbaa !11
  br label %1595, !llvm.loop !53

1640:                                             ; preds = %1595
  br label %1641

1641:                                             ; preds = %1640
  %1642 = load i64, ptr %42, align 8, !tbaa !11
  %1643 = add nsw i64 %1642, 1
  store i64 %1643, ptr %42, align 8, !tbaa !11
  br label %1589, !llvm.loop !54

1644:                                             ; preds = %1589
  %1645 = load i64, ptr %24, align 8, !tbaa !11
  %1646 = icmp eq i64 %1645, 0
  br i1 %1646, label %1647, label %1658

1647:                                             ; preds = %1644
  %1648 = load i8, ptr %15, align 1, !tbaa !5, !range !28, !noundef !29
  %1649 = trunc i8 %1648 to i1
  br i1 %1649, label %1655, label %1650

1650:                                             ; preds = %1647
  %1651 = load double, ptr %50, align 8, !tbaa !13
  %1652 = load double, ptr %75, align 8, !tbaa !13
  %1653 = fdiv double %1651, %1652
  %1654 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1653, double noundef 0x3D95FD7FE1796496)
  br label %1655

1655:                                             ; preds = %1650, %1647
  %1656 = phi i1 [ true, %1647 ], [ %1654, %1650 ]
  %1657 = zext i1 %1656 to i8
  store i8 %1657, ptr %15, align 1, !tbaa !5
  br label %1658

1658:                                             ; preds = %1655, %1644
  %1659 = load i64, ptr %24, align 8, !tbaa !11
  %1660 = icmp eq i64 %1659, 1
  br i1 %1660, label %1661, label %1672

1661:                                             ; preds = %1658
  %1662 = load i8, ptr %16, align 1, !tbaa !5, !range !28, !noundef !29
  %1663 = trunc i8 %1662 to i1
  br i1 %1663, label %1669, label %1664

1664:                                             ; preds = %1661
  %1665 = load double, ptr %50, align 8, !tbaa !13
  %1666 = load double, ptr %75, align 8, !tbaa !13
  %1667 = fdiv double %1665, %1666
  %1668 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1667, double noundef 0x3D95FD7FE1796496)
  br label %1669

1669:                                             ; preds = %1664, %1661
  %1670 = phi i1 [ true, %1661 ], [ %1668, %1664 ]
  %1671 = zext i1 %1670 to i8
  store i8 %1671, ptr %16, align 1, !tbaa !5
  br label %1672

1672:                                             ; preds = %1669, %1658
  br label %1673

1673:                                             ; preds = %1672
  %1674 = load i64, ptr %24, align 8, !tbaa !11
  %1675 = add nsw i64 %1674, 1
  store i64 %1675, ptr %24, align 8, !tbaa !11
  br label %1561, !llvm.loop !55

1676:                                             ; preds = %1561
  br label %1677

1677:                                             ; preds = %1676
  %1678 = load i64, ptr %22, align 8, !tbaa !11
  %1679 = add nsw i64 %1678, 1
  store i64 %1679, ptr %22, align 8, !tbaa !11
  br label %1556, !llvm.loop !56

1680:                                             ; preds = %1556
  br label %1681

1681:                                             ; preds = %1680
  %1682 = load i64, ptr %48, align 8, !tbaa !11
  %1683 = add nsw i64 %1682, 1
  store i64 %1683, ptr %48, align 8, !tbaa !11
  br label %1552, !llvm.loop !57

1684:                                             ; preds = %1552
  br label %1685

1685:                                             ; preds = %1684
  %1686 = load i64, ptr %49, align 8, !tbaa !11
  %1687 = add nsw i64 %1686, 1
  store i64 %1687, ptr %49, align 8, !tbaa !11
  br label %1548, !llvm.loop !58

1688:                                             ; preds = %1548
  br label %1689

1689:                                             ; preds = %1688
  %1690 = load i64, ptr %45, align 8, !tbaa !11
  %1691 = add nsw i64 %1690, 1
  store i64 %1691, ptr %45, align 8, !tbaa !11
  br label %1409, !llvm.loop !59

1692:                                             ; preds = %1409
  br label %1693

1693:                                             ; preds = %1692
  %1694 = load i64, ptr %46, align 8, !tbaa !11
  %1695 = add nsw i64 %1694, 1
  store i64 %1695, ptr %46, align 8, !tbaa !11
  br label %1405, !llvm.loop !60

1696:                                             ; preds = %1405
  %1697 = load ptr, ptr %4, align 8, !tbaa !9
  %1698 = call noundef zeroext i1 @_ZL31testspline2dunit_testspline2dvfbPN11alglib_impl8ae_stateE(i1 noundef zeroext true, ptr noundef %1697)
  %1699 = zext i1 %1698 to i8
  store i8 %1699, ptr %17, align 1, !tbaa !5
  %1700 = load i8, ptr %7, align 1, !tbaa !5, !range !28, !noundef !29
  %1701 = trunc i8 %1700 to i1
  br i1 %1701, label %1744, label %1702

1702:                                             ; preds = %1696
  %1703 = load i8, ptr %8, align 1, !tbaa !5, !range !28, !noundef !29
  %1704 = trunc i8 %1703 to i1
  br i1 %1704, label %1744, label %1705

1705:                                             ; preds = %1702
  %1706 = load i8, ptr %9, align 1, !tbaa !5, !range !28, !noundef !29
  %1707 = trunc i8 %1706 to i1
  br i1 %1707, label %1744, label %1708

1708:                                             ; preds = %1705
  %1709 = load i8, ptr %10, align 1, !tbaa !5, !range !28, !noundef !29
  %1710 = trunc i8 %1709 to i1
  br i1 %1710, label %1744, label %1711

1711:                                             ; preds = %1708
  %1712 = load i8, ptr %11, align 1, !tbaa !5, !range !28, !noundef !29
  %1713 = trunc i8 %1712 to i1
  br i1 %1713, label %1744, label %1714

1714:                                             ; preds = %1711
  %1715 = load i8, ptr %12, align 1, !tbaa !5, !range !28, !noundef !29
  %1716 = trunc i8 %1715 to i1
  br i1 %1716, label %1744, label %1717

1717:                                             ; preds = %1714
  %1718 = load i8, ptr %13, align 1, !tbaa !5, !range !28, !noundef !29
  %1719 = trunc i8 %1718 to i1
  br i1 %1719, label %1744, label %1720

1720:                                             ; preds = %1717
  %1721 = load i8, ptr %14, align 1, !tbaa !5, !range !28, !noundef !29
  %1722 = trunc i8 %1721 to i1
  br i1 %1722, label %1744, label %1723

1723:                                             ; preds = %1720
  %1724 = load i8, ptr %15, align 1, !tbaa !5, !range !28, !noundef !29
  %1725 = trunc i8 %1724 to i1
  br i1 %1725, label %1744, label %1726

1726:                                             ; preds = %1723
  %1727 = load i8, ptr %16, align 1, !tbaa !5, !range !28, !noundef !29
  %1728 = trunc i8 %1727 to i1
  br i1 %1728, label %1744, label %1729

1729:                                             ; preds = %1726
  %1730 = load i8, ptr %17, align 1, !tbaa !5, !range !28, !noundef !29
  %1731 = trunc i8 %1730 to i1
  br i1 %1731, label %1744, label %1732

1732:                                             ; preds = %1729
  %1733 = load i8, ptr %21, align 1, !tbaa !5, !range !28, !noundef !29
  %1734 = trunc i8 %1733 to i1
  br i1 %1734, label %1744, label %1735

1735:                                             ; preds = %1732
  %1736 = load i8, ptr %20, align 1, !tbaa !5, !range !28, !noundef !29
  %1737 = trunc i8 %1736 to i1
  br i1 %1737, label %1744, label %1738

1738:                                             ; preds = %1735
  %1739 = load i8, ptr %19, align 1, !tbaa !5, !range !28, !noundef !29
  %1740 = trunc i8 %1739 to i1
  br i1 %1740, label %1744, label %1741

1741:                                             ; preds = %1738
  %1742 = load i8, ptr %18, align 1, !tbaa !5, !range !28, !noundef !29
  %1743 = trunc i8 %1742 to i1
  br label %1744

1744:                                             ; preds = %1741, %1738, %1735, %1732, %1729, %1726, %1723, %1720, %1717, %1714, %1711, %1708, %1705, %1702, %1696
  %1745 = phi i1 [ true, %1738 ], [ true, %1735 ], [ true, %1732 ], [ true, %1729 ], [ true, %1726 ], [ true, %1723 ], [ true, %1720 ], [ true, %1717 ], [ true, %1714 ], [ true, %1711 ], [ true, %1708 ], [ true, %1705 ], [ true, %1702 ], [ true, %1696 ], [ %1743, %1741 ]
  %1746 = zext i1 %1745 to i8
  store i8 %1746, ptr %6, align 1, !tbaa !5
  %1747 = load i8, ptr %3, align 1, !tbaa !5, !range !28, !noundef !29
  %1748 = trunc i8 %1747 to i1
  br i1 %1748, label %1882, label %1749

1749:                                             ; preds = %1744
  %1750 = call i32 (ptr, ...) @printf(ptr noundef @.str.655)
  %1751 = call i32 (ptr, ...) @printf(ptr noundef @.str.618)
  %1752 = call i32 (ptr, ...) @printf(ptr noundef @.str.656)
  %1753 = load i8, ptr %7, align 1, !tbaa !5, !range !28, !noundef !29
  %1754 = trunc i8 %1753 to i1
  br i1 %1754, label %1755, label %1757

1755:                                             ; preds = %1749
  %1756 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1759

1757:                                             ; preds = %1749
  %1758 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1759

1759:                                             ; preds = %1757, %1755
  %1760 = call i32 (ptr, ...) @printf(ptr noundef @.str.657)
  %1761 = load i8, ptr %8, align 1, !tbaa !5, !range !28, !noundef !29
  %1762 = trunc i8 %1761 to i1
  br i1 %1762, label %1763, label %1765

1763:                                             ; preds = %1759
  %1764 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1767

1765:                                             ; preds = %1759
  %1766 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1767

1767:                                             ; preds = %1765, %1763
  %1768 = call i32 (ptr, ...) @printf(ptr noundef @.str.658)
  %1769 = load i8, ptr %9, align 1, !tbaa !5, !range !28, !noundef !29
  %1770 = trunc i8 %1769 to i1
  br i1 %1770, label %1771, label %1773

1771:                                             ; preds = %1767
  %1772 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1775

1773:                                             ; preds = %1767
  %1774 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1775

1775:                                             ; preds = %1773, %1771
  %1776 = call i32 (ptr, ...) @printf(ptr noundef @.str.659)
  %1777 = load i8, ptr %10, align 1, !tbaa !5, !range !28, !noundef !29
  %1778 = trunc i8 %1777 to i1
  br i1 %1778, label %1779, label %1781

1779:                                             ; preds = %1775
  %1780 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1783

1781:                                             ; preds = %1775
  %1782 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1783

1783:                                             ; preds = %1781, %1779
  %1784 = call i32 (ptr, ...) @printf(ptr noundef @.str.660)
  %1785 = load i8, ptr %11, align 1, !tbaa !5, !range !28, !noundef !29
  %1786 = trunc i8 %1785 to i1
  br i1 %1786, label %1787, label %1789

1787:                                             ; preds = %1783
  %1788 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1791

1789:                                             ; preds = %1783
  %1790 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1791

1791:                                             ; preds = %1789, %1787
  %1792 = call i32 (ptr, ...) @printf(ptr noundef @.str.661)
  %1793 = load i8, ptr %12, align 1, !tbaa !5, !range !28, !noundef !29
  %1794 = trunc i8 %1793 to i1
  br i1 %1794, label %1795, label %1797

1795:                                             ; preds = %1791
  %1796 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1799

1797:                                             ; preds = %1791
  %1798 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1799

1799:                                             ; preds = %1797, %1795
  %1800 = call i32 (ptr, ...) @printf(ptr noundef @.str.662)
  %1801 = load i8, ptr %13, align 1, !tbaa !5, !range !28, !noundef !29
  %1802 = trunc i8 %1801 to i1
  br i1 %1802, label %1803, label %1805

1803:                                             ; preds = %1799
  %1804 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1807

1805:                                             ; preds = %1799
  %1806 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1807

1807:                                             ; preds = %1805, %1803
  %1808 = call i32 (ptr, ...) @printf(ptr noundef @.str.663)
  %1809 = load i8, ptr %14, align 1, !tbaa !5, !range !28, !noundef !29
  %1810 = trunc i8 %1809 to i1
  br i1 %1810, label %1811, label %1813

1811:                                             ; preds = %1807
  %1812 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1815

1813:                                             ; preds = %1807
  %1814 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1815

1815:                                             ; preds = %1813, %1811
  %1816 = call i32 (ptr, ...) @printf(ptr noundef @.str.664)
  %1817 = load i8, ptr %17, align 1, !tbaa !5, !range !28, !noundef !29
  %1818 = trunc i8 %1817 to i1
  br i1 %1818, label %1819, label %1821

1819:                                             ; preds = %1815
  %1820 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1823

1821:                                             ; preds = %1815
  %1822 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1823

1823:                                             ; preds = %1821, %1819
  %1824 = call i32 (ptr, ...) @printf(ptr noundef @.str.665)
  %1825 = call i32 (ptr, ...) @printf(ptr noundef @.str.666)
  %1826 = load i8, ptr %21, align 1, !tbaa !5, !range !28, !noundef !29
  %1827 = trunc i8 %1826 to i1
  br i1 %1827, label %1828, label %1830

1828:                                             ; preds = %1823
  %1829 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1832

1830:                                             ; preds = %1823
  %1831 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1832

1832:                                             ; preds = %1830, %1828
  %1833 = call i32 (ptr, ...) @printf(ptr noundef @.str.667)
  %1834 = load i8, ptr %20, align 1, !tbaa !5, !range !28, !noundef !29
  %1835 = trunc i8 %1834 to i1
  br i1 %1835, label %1836, label %1838

1836:                                             ; preds = %1832
  %1837 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1840

1838:                                             ; preds = %1832
  %1839 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1840

1840:                                             ; preds = %1838, %1836
  %1841 = call i32 (ptr, ...) @printf(ptr noundef @.str.668)
  %1842 = load i8, ptr %19, align 1, !tbaa !5, !range !28, !noundef !29
  %1843 = trunc i8 %1842 to i1
  br i1 %1843, label %1844, label %1846

1844:                                             ; preds = %1840
  %1845 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1848

1846:                                             ; preds = %1840
  %1847 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1848

1848:                                             ; preds = %1846, %1844
  %1849 = call i32 (ptr, ...) @printf(ptr noundef @.str.669)
  %1850 = load i8, ptr %18, align 1, !tbaa !5, !range !28, !noundef !29
  %1851 = trunc i8 %1850 to i1
  br i1 %1851, label %1852, label %1854

1852:                                             ; preds = %1848
  %1853 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1856

1854:                                             ; preds = %1848
  %1855 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1856

1856:                                             ; preds = %1854, %1852
  %1857 = call i32 (ptr, ...) @printf(ptr noundef @.str.670)
  %1858 = call i32 (ptr, ...) @printf(ptr noundef @.str.656)
  %1859 = load i8, ptr %15, align 1, !tbaa !5, !range !28, !noundef !29
  %1860 = trunc i8 %1859 to i1
  br i1 %1860, label %1861, label %1863

1861:                                             ; preds = %1856
  %1862 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1865

1863:                                             ; preds = %1856
  %1864 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1865

1865:                                             ; preds = %1863, %1861
  %1866 = call i32 (ptr, ...) @printf(ptr noundef @.str.657)
  %1867 = load i8, ptr %16, align 1, !tbaa !5, !range !28, !noundef !29
  %1868 = trunc i8 %1867 to i1
  br i1 %1868, label %1869, label %1871

1869:                                             ; preds = %1865
  %1870 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %1873

1871:                                             ; preds = %1865
  %1872 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %1873

1873:                                             ; preds = %1871, %1869
  %1874 = load i8, ptr %6, align 1, !tbaa !5, !range !28, !noundef !29
  %1875 = trunc i8 %1874 to i1
  br i1 %1875, label %1876, label %1878

1876:                                             ; preds = %1873
  %1877 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %1880

1878:                                             ; preds = %1873
  %1879 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1880

1880:                                             ; preds = %1878, %1876
  %1881 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1882

1882:                                             ; preds = %1880, %1744
  %1883 = load i8, ptr %6, align 1, !tbaa !5, !range !28, !noundef !29
  %1884 = trunc i8 %1883 to i1
  %1885 = xor i1 %1884, true
  %1886 = zext i1 %1885 to i8
  store i8 %1886, ptr %76, align 1, !tbaa !5
  %1887 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1887)
  %1888 = load i8, ptr %76, align 1, !tbaa !5, !range !28, !noundef !29
  %1889 = trunc i8 %1888 to i1
  call void @llvm.lifetime.end.p0(i64 1, 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 8, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 80, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 80, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 80, 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 64, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 224, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 224, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 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 8, 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 %1889
}

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

; 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_impl22spline2dbuildbilinearvEPNS_9ae_vectorElS1_lS1_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_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef, double noundef, double noundef, ptr noundef) #1

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL23testspline2dunit_lconstPN11alglib_impl19spline2dinterpolantEPNS_9ae_vectorES3_lldPdS4_S4_S4_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) #4

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

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

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

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

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

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

declare void @_ZN11alglib_impl21spline2dbuildbilinearEPNS_9ae_vectorES1_PNS_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_impl12spline2dcopyEPNS_19spline2dinterpolantES1_PNS_8ae_stateE(ptr noundef, ptr 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 void @_ZN11alglib_impl13spline2dallocEPNS_13ae_serializerEPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef, ptr noundef, 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_impl17spline2dserializeEPNS_13ae_serializerEPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef, 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 void @_ZN11alglib_impl19spline2dunserializeEPNS_13ae_serializerEPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) #1

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"bool", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"double", !7, i64 0}
!15 = !{!7, !7, i64 0}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = distinct !{!18, !17}
!19 = 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 = !{i8 0, i8 2}
!29 = !{}
!30 = distinct !{!30, !17}
!31 = distinct !{!31, !17}
!32 = distinct !{!32, !17}
!33 = distinct !{!33, !17}
!34 = distinct !{!34, !17}
!35 = distinct !{!35, !17}
!36 = distinct !{!36, !17}
!37 = distinct !{!37, !17}
!38 = distinct !{!38, !17}
!39 = !{!40, !10, i64 16}
!40 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24}
!41 = distinct !{!41, !17}
!42 = distinct !{!42, !17}
!43 = distinct !{!43, !17}
!44 = distinct !{!44, !17}
!45 = distinct !{!45, !17}
!46 = distinct !{!46, !17}
!47 = distinct !{!47, !17}
!48 = distinct !{!48, !17}
!49 = distinct !{!49, !17}
!50 = distinct !{!50, !17}
!51 = distinct !{!51, !17}
!52 = distinct !{!52, !17}
!53 = distinct !{!53, !17}
!54 = distinct !{!54, !17}
!55 = distinct !{!55, !17}
!56 = distinct !{!56, !17}
!57 = distinct !{!57, !17}
!58 = distinct !{!58, !17}
!59 = distinct !{!59, !17}
!60 = distinct !{!60, !17}


; 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, i64, i64, i64, %"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::ae_serializer" = type { i64, i64, i64, i64, i64, ptr, ptr, ptr, i64, ptr, ptr }

@.str.1 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.618 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.654 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.655 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.656 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.657 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.658 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.659 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.660 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.661 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.662 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.663 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.664 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.665 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.666 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.667 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.668 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.669 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.670 = 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

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

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

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

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

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

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

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) local_unnamed_addr #1

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

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

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

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

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

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

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

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

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

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

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

; 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 %"struct.alglib_impl::ae_vector", align 8
  %10 = alloca %"struct.alglib_impl::ae_vector", align 8
  %11 = alloca %"struct.alglib_impl::spline2dinterpolant", align 8
  %12 = alloca %"struct.alglib_impl::spline2dinterpolant", align 8
  %13 = alloca %"struct.alglib_impl::ae_vector", align 8
  %14 = alloca %"struct.alglib_impl::ae_vector", align 8
  %15 = alloca %"struct.alglib_impl::ae_vector", align 8
  %16 = alloca %"struct.alglib_impl::ae_vector", align 8
  %17 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %18 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %19 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca double, align 8
  %36 = alloca %"struct.alglib_impl::ae_serializer", align 8
  %37 = alloca %"struct.alglib_impl::ae_frame", align 8
  %38 = 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 64, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 224, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 224, ptr nonnull %12) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %13) #6
  call void @llvm.lifetime.start.p0(i64 64, 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 80, ptr nonnull %17) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %18) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %19) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #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) %9, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %10, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(224) %11, i8 0, i64 224, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(224) %12, i8 0, i64 224, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %13, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %14, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %15, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %16, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %17, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %18, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %19, i8 0, i64 80, i1 false)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %9, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %10, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl25_spline2dinterpolant_initEPvPNS_8ae_stateEb(ptr noundef nonnull %11, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl25_spline2dinterpolant_initEPvPNS_8ae_stateEb(ptr noundef nonnull %12, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %13, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %14, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %15, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %16, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %17, 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 %18, 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 %19, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  store i8 0, ptr %4, align 1, !tbaa !5
  store i8 0, ptr %5, align 1, !tbaa !5
  store i8 0, ptr %6, align 1, !tbaa !5
  store i8 0, ptr %8, align 1, !tbaa !5
  store i8 0, ptr %7, align 1, !tbaa !5
  call void @_ZL41testspline2dunit_testfittingfastddmsolverPbPN11alglib_impl8ae_stateE(ptr noundef nonnull %5, ptr noundef %1)
  call void @_ZL33testspline2dunit_testfittingpriorPbPN11alglib_impl8ae_stateE(ptr noundef nonnull %8, ptr noundef %1)
  call void @_ZL39testspline2dunit_testfittingblocksolverPbPN11alglib_impl8ae_stateE(ptr noundef nonnull %6, ptr noundef %1)
  call void @_ZL35testspline2dunit_testfittingpenaltyPbPN11alglib_impl8ae_stateE(ptr noundef nonnull %7, ptr noundef %1)
  %39 = getelementptr inbounds i8, ptr %9, i64 56
  %40 = getelementptr inbounds i8, ptr %13, i64 56
  %41 = getelementptr inbounds i8, ptr %10, i64 56
  %42 = getelementptr inbounds i8, ptr %14, i64 56
  %43 = getelementptr inbounds i8, ptr %17, i64 72
  %44 = getelementptr inbounds i8, ptr %15, i64 56
  %45 = getelementptr inbounds i8, ptr %16, i64 56
  %46 = getelementptr inbounds i8, ptr %38, i64 16
  %47 = getelementptr inbounds i8, ptr %19, i64 72
  br label %.preheader746

.preheader746:                                    ; preds = %2, %787
  %indvars.iv904 = phi i64 [ 3, %2 ], [ %indvars.iv.next905, %787 ]
  %indvars.iv = phi i64 [ 1, %2 ], [ %indvars.iv.next, %787 ]
  %.0830 = phi i1 [ false, %2 ], [ %354, %787 ]
  %.0590829 = phi i1 [ false, %2 ], [ %.3.in, %787 ]
  %.0593828 = phi i1 [ false, %2 ], [ %494, %787 ]
  %.0596827 = phi i1 [ false, %2 ], [ %560, %787 ]
  %.0599826 = phi i1 [ false, %2 ], [ %499, %787 ]
  %.0602825 = phi i1 [ false, %2 ], [ %506, %787 ]
  %.0611824 = phi i1 [ false, %2 ], [ %783, %787 ]
  %.0616823 = phi i64 [ 2, %2 ], [ %788, %787 ]
  %48 = shl nuw nsw i64 %.0616823, 1
  %49 = add nsw i64 %48, -1
  %50 = add nsw i64 %.0616823, -1
  %51 = uitofp nneg i64 %48 to double
  %52 = fdiv double 0x400921FB54442D18, %51
  %exitcond912.not.1 = icmp eq i64 %.0616823, 2
  %exitcond912.not.2 = icmp eq i64 %.0616823, 3
  %exitcond912.not.3 = icmp eq i64 %.0616823, 4
  %exitcond912.not.4 = icmp eq i64 %.0616823, 5
  %exitcond912.not.5 = icmp eq i64 %.0616823, 6
  br label %54

.preheader730:                                    ; preds = %787
  %53 = getelementptr inbounds i8, ptr %18, i64 72
  br label %.preheader729

54:                                               ; preds = %.preheader746, %785
  %indvars.iv907 = phi i64 [ 3, %.preheader746 ], [ %indvars.iv.next908, %785 ]
  %indvars.iv897 = phi i64 [ 1, %.preheader746 ], [ %indvars.iv.next898, %785 ]
  %.1822 = phi i1 [ %.0830, %.preheader746 ], [ %354, %785 ]
  %.1591821 = phi i1 [ %.0590829, %.preheader746 ], [ %.3.in, %785 ]
  %.1594820 = phi i1 [ %.0593828, %.preheader746 ], [ %494, %785 ]
  %.1597819 = phi i1 [ %.0596827, %.preheader746 ], [ %560, %785 ]
  %.1600818 = phi i1 [ %.0599826, %.preheader746 ], [ %499, %785 ]
  %.1603817 = phi i1 [ %.0602825, %.preheader746 ], [ %506, %785 ]
  %.1612816 = phi i1 [ %.0611824, %.preheader746 ], [ %783, %785 ]
  %.0614815 = phi i64 [ 2, %.preheader746 ], [ %786, %785 ]
  %55 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 2, ptr noundef %1)
  %56 = add i64 %55, 2
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.0616823, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %10, i64 noundef %.0614815, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %13, i64 noundef %49, ptr noundef %1)
  %57 = shl nuw nsw i64 %.0614815, 1
  %58 = add nsw i64 %57, -1
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %14, i64 noundef %58, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %17, i64 noundef %.0614815, i64 noundef %.0616823, ptr noundef %1)
  %59 = mul nuw nsw i64 %.0614815, %.0616823
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %15, i64 noundef %59, ptr noundef %1)
  %60 = mul nsw i64 %56, %59
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %16, i64 noundef %60, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %19, i64 noundef %.0616823, i64 noundef %.0614815, ptr noundef %1)
  %61 = add nsw i64 %.0614815, -1
  %62 = uitofp nneg i64 %57 to double
  %.not702753 = icmp slt i64 %55, -1
  %63 = fdiv double 0x400921FB54442D18, %62
  br label %.peel.next

.peel.next:                                       ; preds = %54, %782
  %.2814 = phi i1 [ %.1822, %54 ], [ %354, %782 ]
  %.2592813 = phi i1 [ %.1591821, %54 ], [ %.3.in, %782 ]
  %.2595812 = phi i1 [ %.1594820, %54 ], [ %494, %782 ]
  %.2598811 = phi i1 [ %.1597819, %54 ], [ %560, %782 ]
  %.2601810 = phi i1 [ %.1600818, %54 ], [ %499, %782 ]
  %.2604809 = phi i1 [ %.1603817, %54 ], [ %506, %782 ]
  %.2613808 = phi i1 [ %.1612816, %54 ], [ %783, %782 ]
  %.0662807 = phi i64 [ 1, %54 ], [ %784, %782 ]
  %64 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %65 = fsub double -1.000000e+00, %64
  %66 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %67 = fadd double %66, 1.000000e+00
  %68 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %69 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %70 = fadd double %65, %67
  %71 = fsub double %67, %65
  %72 = fmul double %71, -5.000000e-01
  %73 = call noundef double @_ZN11alglib_impl6ae_cosEdPNS_8ae_stateE(double noundef %52, ptr noundef %1)
  %74 = fmul double %72, %73
  %75 = call double @llvm.fmuladd.f64(double %70, double 5.000000e-01, double %74)
  %76 = load ptr, ptr %39, align 8, !tbaa !9
  store double %75, ptr %76, align 8, !tbaa !10
  %77 = load ptr, ptr %39, align 8, !tbaa !9
  store double %65, ptr %77, align 8, !tbaa !10
  %.pre931 = load ptr, ptr %40, align 8, !tbaa !9
  %.pre = load ptr, ptr %39, align 8, !tbaa !9
  %.pre930 = load double, ptr %.pre, align 8, !tbaa !10
  store double %.pre930, ptr %.pre931, align 8, !tbaa !10
  br label %78

78:                                               ; preds = %92, %.peel.next
  %.0619747 = phi i64 [ 1, %.peel.next ], [ %108, %92 ]
  %79 = shl nuw nsw i64 %.0619747, 1
  %80 = or disjoint i64 %79, 1
  %81 = uitofp nneg i64 %80 to double
  %82 = fmul double %81, 0x400921FB54442D18
  %83 = fdiv double %82, %51
  %84 = call noundef double @_ZN11alglib_impl6ae_cosEdPNS_8ae_stateE(double noundef %83, ptr noundef %1)
  %85 = fmul double %72, %84
  %86 = call double @llvm.fmuladd.f64(double %70, double 5.000000e-01, double %85)
  %87 = load ptr, ptr %39, align 8, !tbaa !9
  %88 = getelementptr inbounds double, ptr %87, i64 %.0619747
  store double %86, ptr %88, align 8, !tbaa !10
  %.pre933.pre = load ptr, ptr %39, align 8, !tbaa !9
  %89 = icmp eq i64 %.0619747, %50
  br i1 %89, label %90, label %92

90:                                               ; preds = %78
  %91 = getelementptr inbounds double, ptr %.pre933.pre, i64 %50
  store double %67, ptr %91, align 8, !tbaa !10
  %.pre932 = load ptr, ptr %39, align 8, !tbaa !9
  br label %92

92:                                               ; preds = %90, %78
  %93 = phi ptr [ %.pre932, %90 ], [ %.pre933.pre, %78 ]
  %94 = getelementptr inbounds double, ptr %93, i64 %.0619747
  %95 = load double, ptr %94, align 8, !tbaa !10
  %96 = load ptr, ptr %40, align 8, !tbaa !9
  %97 = getelementptr inbounds double, ptr %96, i64 %79
  store double %95, ptr %97, align 8, !tbaa !10
  %98 = load ptr, ptr %39, align 8, !tbaa !9
  %99 = getelementptr inbounds double, ptr %98, i64 %.0619747
  %100 = load double, ptr %99, align 8, !tbaa !10
  %101 = getelementptr i8, ptr %99, i64 -8
  %102 = load double, ptr %101, align 8, !tbaa !10
  %103 = fadd double %100, %102
  %104 = fmul double %103, 5.000000e-01
  %105 = load ptr, ptr %40, align 8, !tbaa !9
  %106 = getelementptr double, ptr %105, i64 %79
  %107 = getelementptr i8, ptr %106, i64 -8
  store double %104, ptr %107, align 8, !tbaa !10
  %108 = add nuw nsw i64 %.0619747, 1
  %exitcond.not = icmp eq i64 %108, %.0616823
  br i1 %exitcond.not, label %.preheader745.preheader, label %78, !llvm.loop !12

.preheader745.preheader:                          ; preds = %92
  %109 = fsub double -1.000000e+00, %68
  br label %.preheader745

.peel.next886:                                    ; preds = %128
  %110 = fadd double %69, 1.000000e+00
  %111 = fadd double %109, %110
  %112 = fsub double %110, %109
  %113 = fmul double %112, -5.000000e-01
  %114 = call noundef double @_ZN11alglib_impl6ae_cosEdPNS_8ae_stateE(double noundef %63, ptr noundef %1)
  %115 = fmul double %113, %114
  %116 = call double @llvm.fmuladd.f64(double %111, double 5.000000e-01, double %115)
  %117 = load ptr, ptr %41, align 8, !tbaa !9
  store double %116, ptr %117, align 8, !tbaa !10
  %118 = load ptr, ptr %41, align 8, !tbaa !9
  store double %109, ptr %118, align 8, !tbaa !10
  %.pre938 = load ptr, ptr %42, align 8, !tbaa !9
  %.pre935 = load ptr, ptr %41, align 8, !tbaa !9
  %.pre937 = load double, ptr %.pre935, align 8, !tbaa !10
  store double %.pre937, ptr %.pre938, align 8, !tbaa !10
  br label %130

.preheader745:                                    ; preds = %.preheader745.preheader, %128
  %.1620748 = phi i64 [ %129, %128 ], [ 0, %.preheader745.preheader ]
  %119 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef %.0616823, ptr noundef %1)
  %.not706 = icmp eq i64 %119, %.1620748
  br i1 %.not706, label %128, label %120

120:                                              ; preds = %.preheader745
  %121 = load ptr, ptr %39, align 8, !tbaa !9
  %122 = getelementptr inbounds double, ptr %121, i64 %.1620748
  %123 = load double, ptr %122, align 8, !tbaa !10
  %124 = getelementptr inbounds double, ptr %121, i64 %119
  %125 = load double, ptr %124, align 8, !tbaa !10
  store double %125, ptr %122, align 8, !tbaa !10
  %126 = load ptr, ptr %39, align 8, !tbaa !9
  %127 = getelementptr inbounds double, ptr %126, i64 %119
  store double %123, ptr %127, align 8, !tbaa !10
  br label %128

128:                                              ; preds = %.preheader745, %120
  %129 = add nuw nsw i64 %.1620748, 1
  %exitcond883.not = icmp eq i64 %129, %.0616823
  br i1 %exitcond883.not, label %.peel.next886, label %.preheader745, !llvm.loop !15

130:                                              ; preds = %144, %.peel.next886
  %.0632749 = phi i64 [ 1, %.peel.next886 ], [ %160, %144 ]
  %131 = shl nuw nsw i64 %.0632749, 1
  %132 = or disjoint i64 %131, 1
  %133 = uitofp nneg i64 %132 to double
  %134 = fmul double %133, 0x400921FB54442D18
  %135 = fdiv double %134, %62
  %136 = call noundef double @_ZN11alglib_impl6ae_cosEdPNS_8ae_stateE(double noundef %135, ptr noundef %1)
  %137 = fmul double %113, %136
  %138 = call double @llvm.fmuladd.f64(double %111, double 5.000000e-01, double %137)
  %139 = load ptr, ptr %41, align 8, !tbaa !9
  %140 = getelementptr inbounds double, ptr %139, i64 %.0632749
  store double %138, ptr %140, align 8, !tbaa !10
  %.pre940.pre = load ptr, ptr %41, align 8, !tbaa !9
  %141 = icmp eq i64 %.0632749, %61
  br i1 %141, label %142, label %144

142:                                              ; preds = %130
  %143 = getelementptr inbounds double, ptr %.pre940.pre, i64 %61
  store double %110, ptr %143, align 8, !tbaa !10
  %.pre939 = load ptr, ptr %41, align 8, !tbaa !9
  br label %144

144:                                              ; preds = %142, %130
  %145 = phi ptr [ %.pre939, %142 ], [ %.pre940.pre, %130 ]
  %146 = getelementptr inbounds double, ptr %145, i64 %.0632749
  %147 = load double, ptr %146, align 8, !tbaa !10
  %148 = load ptr, ptr %42, align 8, !tbaa !9
  %149 = getelementptr inbounds double, ptr %148, i64 %131
  store double %147, ptr %149, align 8, !tbaa !10
  %150 = load ptr, ptr %41, align 8, !tbaa !9
  %151 = getelementptr inbounds double, ptr %150, i64 %.0632749
  %152 = load double, ptr %151, align 8, !tbaa !10
  %153 = getelementptr i8, ptr %151, i64 -8
  %154 = load double, ptr %153, align 8, !tbaa !10
  %155 = fadd double %152, %154
  %156 = fmul double %155, 5.000000e-01
  %157 = load ptr, ptr %42, align 8, !tbaa !9
  %158 = getelementptr double, ptr %157, i64 %131
  %159 = getelementptr i8, ptr %158, i64 -8
  store double %156, ptr %159, align 8, !tbaa !10
  %160 = add nuw nsw i64 %.0632749, 1
  %exitcond884.not = icmp eq i64 %160, %.0614815
  br i1 %exitcond884.not, label %.preheader743, label %130, !llvm.loop !16

.preheader743:                                    ; preds = %144, %170
  %.1633750 = phi i64 [ %171, %170 ], [ 0, %144 ]
  %161 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef %.0614815, ptr noundef %1)
  %.not704 = icmp eq i64 %161, %.1633750
  br i1 %.not704, label %170, label %162

162:                                              ; preds = %.preheader743
  %163 = load ptr, ptr %41, align 8, !tbaa !9
  %164 = getelementptr inbounds double, ptr %163, i64 %.1633750
  %165 = load double, ptr %164, align 8, !tbaa !10
  %166 = getelementptr inbounds double, ptr %163, i64 %161
  %167 = load double, ptr %166, align 8, !tbaa !10
  store double %167, ptr %164, align 8, !tbaa !10
  %168 = load ptr, ptr %41, align 8, !tbaa !9
  %169 = getelementptr inbounds double, ptr %168, i64 %161
  store double %165, ptr %169, align 8, !tbaa !10
  br label %170

170:                                              ; preds = %.preheader743, %162
  %171 = add nuw nsw i64 %.1633750, 1
  %exitcond888.not = icmp eq i64 %171, %.0614815
  br i1 %exitcond888.not, label %.preheader740, label %.preheader743, !llvm.loop !17

.preheader740:                                    ; preds = %170, %222
  %.2634752 = phi i64 [ %223, %222 ], [ 0, %170 ]
  %172 = mul nuw nsw i64 %.2634752, %.0616823
  br label %173

173:                                              ; preds = %.preheader740, %173
  %.2621751 = phi i64 [ 0, %.preheader740 ], [ %221, %173 ]
  %174 = load ptr, ptr %39, align 8, !tbaa !9
  %175 = getelementptr inbounds double, ptr %174, i64 %.2621751
  %176 = load double, ptr %175, align 8, !tbaa !10
  %177 = fmul double %176, 6.000000e-01
  %178 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %177, ptr noundef %1)
  %179 = load ptr, ptr %41, align 8, !tbaa !9
  %180 = getelementptr inbounds double, ptr %179, i64 %.2634752
  %181 = load double, ptr %180, align 8, !tbaa !10
  %182 = load ptr, ptr %39, align 8, !tbaa !9
  %183 = getelementptr inbounds double, ptr %182, i64 %.2621751
  %184 = load double, ptr %183, align 8, !tbaa !10
  %185 = fmul double %184, 8.000000e-02
  %186 = call double @llvm.fmuladd.f64(double %181, double -3.000000e-01, double %185)
  %187 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %186, ptr noundef %1)
  %188 = fsub double %178, %187
  %189 = load ptr, ptr %39, align 8, !tbaa !9
  %190 = getelementptr inbounds double, ptr %189, i64 %.2621751
  %191 = load double, ptr %190, align 8, !tbaa !10
  %192 = load ptr, ptr %41, align 8, !tbaa !9
  %193 = getelementptr inbounds double, ptr %192, i64 %.2634752
  %194 = load double, ptr %193, align 8, !tbaa !10
  %195 = call double @llvm.fmuladd.f64(double %194, double 1.200000e+00, double %191)
  %196 = fmul double %195, 0x400921FB54442D18
  %197 = call noundef double @_ZN11alglib_impl6ae_cosEdPNS_8ae_stateE(double noundef %196, ptr noundef %1)
  %198 = call double @llvm.fmuladd.f64(double %197, double 2.000000e+00, double %188)
  %199 = load ptr, ptr %39, align 8, !tbaa !9
  %200 = getelementptr inbounds double, ptr %199, i64 %.2621751
  %201 = load double, ptr %200, align 8, !tbaa !10
  %202 = load ptr, ptr %41, align 8, !tbaa !9
  %203 = getelementptr inbounds double, ptr %202, i64 %.2634752
  %204 = load double, ptr %203, align 8, !tbaa !10
  %205 = fmul double %204, 1.500000e+01
  %206 = call double @llvm.fmuladd.f64(double %201, double 2.000000e+01, double %205)
  %207 = call noundef double @_ZN11alglib_impl6ae_cosEdPNS_8ae_stateE(double noundef %206, ptr noundef %1)
  %208 = call double @llvm.fmuladd.f64(double %207, double 1.000000e-01, double %198)
  %209 = load ptr, ptr %43, align 8, !tbaa !9
  %210 = getelementptr inbounds ptr, ptr %209, i64 %.2634752
  %211 = load ptr, ptr %210, align 8, !tbaa !18
  %212 = getelementptr inbounds double, ptr %211, i64 %.2621751
  store double %208, ptr %212, align 8, !tbaa !10
  %213 = load ptr, ptr %43, align 8, !tbaa !9
  %214 = getelementptr inbounds ptr, ptr %213, i64 %.2634752
  %215 = load ptr, ptr %214, align 8, !tbaa !18
  %216 = getelementptr inbounds double, ptr %215, i64 %.2621751
  %217 = load double, ptr %216, align 8, !tbaa !10
  %218 = load ptr, ptr %44, align 8, !tbaa !9
  %219 = getelementptr inbounds double, ptr %218, i64 %172
  %220 = getelementptr inbounds double, ptr %219, i64 %.2621751
  store double %217, ptr %220, align 8, !tbaa !10
  %221 = add nuw nsw i64 %.2621751, 1
  %exitcond889.not = icmp eq i64 %221, %.0616823
  br i1 %exitcond889.not, label %222, label %173, !llvm.loop !20

222:                                              ; preds = %173
  %223 = add nuw nsw i64 %.2634752, 1
  %exitcond890.not = icmp eq i64 %223, %.0614815
  br i1 %exitcond890.not, label %.preheader739, label %.preheader740, !llvm.loop !21

.preheader739:                                    ; preds = %222, %.split.us
  %.3635756 = phi i64 [ %271, %.split.us ], [ 0, %222 ]
  br i1 %.not702753, label %.split.us, label %.preheader732

.preheader732:                                    ; preds = %.preheader739, %._crit_edge
  %.3622755 = phi i64 [ %270, %._crit_edge ], [ 0, %.preheader739 ]
  %224 = mul nuw nsw i64 %.3622755, %.0616823
  %225 = add nuw nsw i64 %224, %.3635756
  %226 = mul nsw i64 %225, %56
  br label %227

227:                                              ; preds = %.preheader732, %227
  %.0618754 = phi i64 [ 0, %.preheader732 ], [ %269, %227 ]
  %228 = load ptr, ptr %39, align 8, !tbaa !9
  %229 = getelementptr inbounds double, ptr %228, i64 %.3635756
  %230 = load double, ptr %229, align 8, !tbaa !10
  %231 = fmul double %230, 6.000000e-01
  %232 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %231, ptr noundef %1)
  %233 = load ptr, ptr %41, align 8, !tbaa !9
  %234 = getelementptr inbounds double, ptr %233, i64 %.3622755
  %235 = load double, ptr %234, align 8, !tbaa !10
  %236 = load ptr, ptr %39, align 8, !tbaa !9
  %237 = getelementptr inbounds double, ptr %236, i64 %.3635756
  %238 = load double, ptr %237, align 8, !tbaa !10
  %239 = fmul double %238, 8.000000e-02
  %240 = call double @llvm.fmuladd.f64(double %235, double -3.000000e-01, double %239)
  %241 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %240, ptr noundef %1)
  %242 = fsub double %232, %241
  %243 = load ptr, ptr %39, align 8, !tbaa !9
  %244 = getelementptr inbounds double, ptr %243, i64 %.3635756
  %245 = load double, ptr %244, align 8, !tbaa !10
  %246 = load ptr, ptr %41, align 8, !tbaa !9
  %247 = getelementptr inbounds double, ptr %246, i64 %.3622755
  %248 = load double, ptr %247, align 8, !tbaa !10
  %249 = call double @llvm.fmuladd.f64(double %248, double 1.200000e+00, double %245)
  %250 = uitofp nneg i64 %.0618754 to double
  %251 = fadd double %249, %250
  %252 = fmul double %251, 0x400921FB54442D18
  %253 = call noundef double @_ZN11alglib_impl6ae_cosEdPNS_8ae_stateE(double noundef %252, ptr noundef %1)
  %254 = call double @llvm.fmuladd.f64(double %253, double 2.000000e+00, double %242)
  %255 = load ptr, ptr %39, align 8, !tbaa !9
  %256 = getelementptr inbounds double, ptr %255, i64 %.3635756
  %257 = load double, ptr %256, align 8, !tbaa !10
  %258 = load ptr, ptr %41, align 8, !tbaa !9
  %259 = getelementptr inbounds double, ptr %258, i64 %.3622755
  %260 = load double, ptr %259, align 8, !tbaa !10
  %261 = fmul double %260, 1.500000e+01
  %262 = call double @llvm.fmuladd.f64(double %257, double 2.000000e+01, double %261)
  %263 = fadd double %262, %250
  %264 = call noundef double @_ZN11alglib_impl6ae_cosEdPNS_8ae_stateE(double noundef %263, ptr noundef %1)
  %265 = call double @llvm.fmuladd.f64(double %264, double 1.000000e-01, double %254)
  %266 = load ptr, ptr %45, align 8, !tbaa !9
  %267 = getelementptr double, ptr %266, i64 %226
  %268 = getelementptr double, ptr %267, i64 %.0618754
  store double %265, ptr %268, align 8, !tbaa !10
  %269 = add nuw i64 %.0618754, 1
  %exitcond891 = icmp eq i64 %269, %56
  br i1 %exitcond891, label %._crit_edge, label %227, !llvm.loop !22

._crit_edge:                                      ; preds = %227
  %270 = add nuw nsw i64 %.3622755, 1
  %exitcond892.not = icmp eq i64 %270, %.0614815
  br i1 %exitcond892.not, label %.split.us, label %.preheader732, !llvm.loop !23

.split.us:                                        ; preds = %._crit_edge, %.preheader739
  %271 = add nuw nsw i64 %.3635756, 1
  %exitcond893.not = icmp eq i64 %271, %.0616823
  br i1 %exitcond893.not, label %272, label %.preheader739, !llvm.loop !24

272:                                              ; preds = %.split.us
  call void @_ZN11alglib_impl22spline2dbuildbilinearvEPNS_9ae_vectorElS1_lS1_lPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.0616823, ptr noundef nonnull %10, i64 noundef %.0614815, ptr noundef nonnull %15, i64 noundef 1, ptr noundef nonnull %11, ptr noundef %1)
  br label %.preheader738

.preheader738:                                    ; preds = %272, %290
  %.0605760 = phi double [ 0.000000e+00, %272 ], [ %288, %290 ]
  %.4636759 = phi i64 [ 0, %272 ], [ %291, %290 ]
  br label %273

273:                                              ; preds = %.preheader738, %273
  %.1606758 = phi double [ %.0605760, %.preheader738 ], [ %288, %273 ]
  %.4623757 = phi i64 [ 0, %.preheader738 ], [ %289, %273 ]
  %274 = load ptr, ptr %43, align 8, !tbaa !9
  %275 = getelementptr inbounds ptr, ptr %274, i64 %.4636759
  %276 = load ptr, ptr %275, align 8, !tbaa !18
  %277 = getelementptr inbounds double, ptr %276, i64 %.4623757
  %278 = load double, ptr %277, align 8, !tbaa !10
  %279 = load ptr, ptr %39, align 8, !tbaa !9
  %280 = getelementptr inbounds double, ptr %279, i64 %.4623757
  %281 = load double, ptr %280, align 8, !tbaa !10
  %282 = load ptr, ptr %41, align 8, !tbaa !9
  %283 = getelementptr inbounds double, ptr %282, i64 %.4636759
  %284 = load double, ptr %283, align 8, !tbaa !10
  %285 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %11, double noundef %281, double noundef %284, ptr noundef %1)
  %286 = fsub double %278, %285
  %287 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %286, ptr noundef %1)
  %288 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.1606758, double noundef %287, ptr noundef %1)
  %289 = add nuw nsw i64 %.4623757, 1
  %exitcond894.not = icmp eq i64 %289, %.0616823
  br i1 %exitcond894.not, label %290, label %273, !llvm.loop !25

290:                                              ; preds = %273
  %291 = add nuw nsw i64 %.4636759, 1
  %exitcond895.not = icmp eq i64 %291, %.0614815
  br i1 %exitcond895.not, label %292, label %.preheader738, !llvm.loop !26

292:                                              ; preds = %290
  br i1 %.2814, label %.preheader737.preheader, label %293

293:                                              ; preds = %292
  %294 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %288, double noundef 0x3D95FD7FE1796496)
  br label %.preheader737.preheader

.preheader737.preheader:                          ; preds = %292, %293
  %295 = phi i1 [ true, %292 ], [ %294, %293 ]
  br label %.lr.ph

.lr.ph:                                           ; preds = %._crit_edge764, %.preheader737.preheader
  %.2607767 = phi double [ %344, %._crit_edge764 ], [ 0.000000e+00, %.preheader737.preheader ]
  %.5637766 = phi i64 [ %346, %._crit_edge764 ], [ 0, %.preheader737.preheader ]
  %296 = shl nuw nsw i64 %.5637766, 1
  %297 = or disjoint i64 %296, 1
  %298 = add nuw nsw i64 %296, 2
  br label %299

299:                                              ; preds = %.lr.ph, %299
  %.3608763 = phi double [ %.2607767, %.lr.ph ], [ %344, %299 ]
  %.5624762 = phi i64 [ 0, %.lr.ph ], [ %345, %299 ]
  %300 = load ptr, ptr %40, align 8, !tbaa !9
  %301 = shl nuw nsw i64 %.5624762, 1
  %302 = or disjoint i64 %301, 1
  %303 = getelementptr inbounds double, ptr %300, i64 %302
  %304 = load double, ptr %303, align 8, !tbaa !10
  %305 = load ptr, ptr %42, align 8, !tbaa !9
  %306 = getelementptr inbounds double, ptr %305, i64 %297
  %307 = load double, ptr %306, align 8, !tbaa !10
  %308 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %11, double noundef %304, double noundef %307, ptr noundef %1)
  %309 = load ptr, ptr %40, align 8, !tbaa !9
  %310 = getelementptr inbounds double, ptr %309, i64 %301
  %311 = load double, ptr %310, align 8, !tbaa !10
  %312 = load ptr, ptr %42, align 8, !tbaa !9
  %313 = getelementptr inbounds double, ptr %312, i64 %296
  %314 = load double, ptr %313, align 8, !tbaa !10
  %315 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %11, double noundef %311, double noundef %314, ptr noundef %1)
  %316 = load ptr, ptr %40, align 8, !tbaa !9
  %317 = add nuw nsw i64 %301, 2
  %318 = getelementptr inbounds double, ptr %316, i64 %317
  %319 = load double, ptr %318, align 8, !tbaa !10
  %320 = load ptr, ptr %42, align 8, !tbaa !9
  %321 = getelementptr inbounds double, ptr %320, i64 %296
  %322 = load double, ptr %321, align 8, !tbaa !10
  %323 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %11, double noundef %319, double noundef %322, ptr noundef %1)
  %324 = load ptr, ptr %40, align 8, !tbaa !9
  %325 = getelementptr inbounds double, ptr %324, i64 %317
  %326 = load double, ptr %325, align 8, !tbaa !10
  %327 = load ptr, ptr %42, align 8, !tbaa !9
  %328 = getelementptr inbounds double, ptr %327, i64 %298
  %329 = load double, ptr %328, align 8, !tbaa !10
  %330 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %11, double noundef %326, double noundef %329, ptr noundef %1)
  %331 = load ptr, ptr %40, align 8, !tbaa !9
  %332 = getelementptr inbounds double, ptr %331, i64 %301
  %333 = load double, ptr %332, align 8, !tbaa !10
  %334 = load ptr, ptr %42, align 8, !tbaa !9
  %335 = getelementptr inbounds double, ptr %334, i64 %298
  %336 = load double, ptr %335, align 8, !tbaa !10
  %337 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %11, double noundef %333, double noundef %336, ptr noundef %1)
  %338 = fadd double %315, %323
  %339 = fadd double %338, %330
  %340 = fadd double %339, %337
  %341 = fneg double %308
  %342 = call double @llvm.fmuladd.f64(double %340, double 2.500000e-01, double %341)
  %343 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %342, ptr noundef %1)
  %344 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.3608763, double noundef %343, ptr noundef %1)
  %345 = add nuw nsw i64 %.5624762, 1
  %exitcond896.not = icmp eq i64 %345, %indvars.iv
  br i1 %exitcond896.not, label %._crit_edge764, label %299, !llvm.loop !27

._crit_edge764:                                   ; preds = %299
  %346 = add nuw nsw i64 %.5637766, 1
  %exitcond899.not = icmp eq i64 %346, %indvars.iv897
  br i1 %exitcond899.not, label %._crit_edge768, label %.lr.ph, !llvm.loop !28

._crit_edge768:                                   ; preds = %._crit_edge764
  br i1 %295, label %.critedge, label %347

347:                                              ; preds = %._crit_edge768
  %348 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %344, double noundef 0x3D95FD7FE1796496)
  call void @_ZL23testspline2dunit_lconstPN11alglib_impl19spline2dinterpolantEPNS_9ae_vectorES3_lldPdS4_S4_S4_PNS_8ae_stateE(ptr noundef nonnull %11, ptr noundef nonnull %13, ptr noundef nonnull %14, i64 noundef %.0614815, i64 noundef %.0616823, double noundef 1.000000e-03, ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef %1)
  call void @_ZL23testspline2dunit_lconstPN11alglib_impl19spline2dinterpolantEPNS_9ae_vectorES3_lldPdS4_S4_S4_PNS_8ae_stateE(ptr noundef nonnull %11, ptr noundef nonnull %13, ptr noundef nonnull %14, i64 noundef %.0614815, i64 noundef %.0616823, double noundef 0x3F35D867C3ECE2A5, ptr noundef nonnull %24, ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef %1)
  br i1 %348, label %.preheader736.preheader, label %349

349:                                              ; preds = %347
  %350 = load double, ptr %24, align 8, !tbaa !10
  %351 = load double, ptr %20, align 8, !tbaa !10
  %352 = fdiv double %350, %351
  %353 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %352, double noundef 1.200000e+00)
  br label %.preheader736.preheader

.critedge:                                        ; preds = %._crit_edge768
  call void @_ZL23testspline2dunit_lconstPN11alglib_impl19spline2dinterpolantEPNS_9ae_vectorES3_lldPdS4_S4_S4_PNS_8ae_stateE(ptr noundef nonnull %11, ptr noundef nonnull %13, ptr noundef nonnull %14, i64 noundef %.0614815, i64 noundef %.0616823, double noundef 1.000000e-03, ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef %1)
  call void @_ZL23testspline2dunit_lconstPN11alglib_impl19spline2dinterpolantEPNS_9ae_vectorES3_lldPdS4_S4_S4_PNS_8ae_stateE(ptr noundef nonnull %11, ptr noundef nonnull %13, ptr noundef nonnull %14, i64 noundef %.0614815, i64 noundef %.0616823, double noundef 0x3F35D867C3ECE2A5, ptr noundef nonnull %24, ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef %1)
  br label %.preheader736.preheader

.preheader736.preheader:                          ; preds = %347, %349, %.critedge
  %354 = phi i1 [ true, %347 ], [ %353, %349 ], [ true, %.critedge ]
  br label %.lr.ph774

.lr.ph774:                                        ; preds = %._crit_edge775, %.preheader736.preheader
  %.4779 = phi double [ %391, %._crit_edge775 ], [ 0.000000e+00, %.preheader736.preheader ]
  %.6638778 = phi i64 [ %393, %._crit_edge775 ], [ 0, %.preheader736.preheader ]
  %355 = shl nuw nsw i64 %.6638778, 1
  %356 = or disjoint i64 %355, 1
  br label %357

357:                                              ; preds = %.lr.ph774, %357
  %.5773 = phi double [ %.4779, %.lr.ph774 ], [ %391, %357 ]
  %.6625772 = phi i64 [ 0, %.lr.ph774 ], [ %392, %357 ]
  %358 = load ptr, ptr %40, align 8, !tbaa !9
  %359 = shl nuw nsw i64 %.6625772, 1
  %360 = or disjoint i64 %359, 1
  %361 = getelementptr inbounds double, ptr %358, i64 %360
  %362 = load double, ptr %361, align 8, !tbaa !10
  %363 = load ptr, ptr %42, align 8, !tbaa !9
  %364 = getelementptr inbounds double, ptr %363, i64 %356
  %365 = load double, ptr %364, align 8, !tbaa !10
  call void @_ZN11alglib_impl12spline2ddiffEPNS_19spline2dinterpolantEddPdS2_S2_S2_PNS_8ae_stateE(ptr noundef nonnull %11, double noundef %362, double noundef %365, ptr noundef nonnull %28, ptr noundef nonnull %29, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef %1)
  %366 = load ptr, ptr %40, align 8, !tbaa !9
  %367 = getelementptr inbounds double, ptr %366, i64 %360
  %368 = load double, ptr %367, align 8, !tbaa !10
  %369 = load ptr, ptr %42, align 8, !tbaa !9
  %370 = getelementptr inbounds double, ptr %369, i64 %356
  %371 = load double, ptr %370, align 8, !tbaa !10
  call void @_ZL27testspline2dunit_twodnumderPN11alglib_impl19spline2dinterpolantEdddPdS2_S2_S2_PNS_8ae_stateE(ptr noundef nonnull %11, double noundef %368, double noundef %371, double noundef 1.000000e-05, ptr noundef nonnull %32, ptr noundef nonnull %33, ptr noundef nonnull %34, ptr noundef nonnull %35, ptr noundef %1)
  %372 = load double, ptr %28, align 8, !tbaa !10
  %373 = load double, ptr %32, align 8, !tbaa !10
  %374 = fsub double %372, %373
  %375 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %374, ptr noundef %1)
  %376 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.5773, double noundef %375, ptr noundef %1)
  %377 = load double, ptr %29, align 8, !tbaa !10
  %378 = load double, ptr %33, align 8, !tbaa !10
  %379 = fsub double %377, %378
  %380 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %379, ptr noundef %1)
  %381 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %376, double noundef %380, ptr noundef %1)
  %382 = load double, ptr %30, align 8, !tbaa !10
  %383 = load double, ptr %34, align 8, !tbaa !10
  %384 = fsub double %382, %383
  %385 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %384, ptr noundef %1)
  %386 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %381, double noundef %385, ptr noundef %1)
  %387 = load double, ptr %31, align 8, !tbaa !10
  %388 = load double, ptr %35, align 8, !tbaa !10
  %389 = fsub double %387, %388
  %390 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %389, ptr noundef %1)
  %391 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %386, double noundef %390, ptr noundef %1)
  %392 = add nuw nsw i64 %.6625772, 1
  %exitcond900.not = icmp eq i64 %392, %indvars.iv
  br i1 %exitcond900.not, label %._crit_edge775, label %357, !llvm.loop !29

._crit_edge775:                                   ; preds = %357
  %393 = add nuw nsw i64 %.6638778, 1
  %exitcond901.not = icmp eq i64 %393, %indvars.iv897
  br i1 %exitcond901.not, label %._crit_edge780, label %.lr.ph774, !llvm.loop !30

._crit_edge780:                                   ; preds = %._crit_edge775
  br i1 %.2595812, label %396, label %394

394:                                              ; preds = %._crit_edge780
  %395 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %391, double noundef 1.000000e-03)
  br label %396

396:                                              ; preds = %394, %._crit_edge780
  %397 = phi i1 [ true, %._crit_edge780 ], [ %395, %394 ]
  br i1 %.2601810, label %401, label %398

398:                                              ; preds = %396
  %399 = call noundef zeroext i1 @_ZL27testspline2dunit_testunpackPN11alglib_impl19spline2dinterpolantEPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef nonnull %11, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef %1)
  %400 = xor i1 %399, true
  br label %401

401:                                              ; preds = %398, %396
  %402 = phi i1 [ true, %396 ], [ %400, %398 ]
  br i1 %.2604809, label %.critedge709, label %403

403:                                              ; preds = %401
  %404 = call noundef zeroext i1 @_ZL29testspline2dunit_testlintransPN11alglib_impl19spline2dinterpolantElddddPNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef 1, double noundef %65, double noundef %67, double noundef %109, double noundef %110, ptr noundef %1)
  call void @_ZN11alglib_impl22spline2dbuildbilinearvEPNS_9ae_vectorElS1_lS1_lPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.0616823, ptr noundef nonnull %10, i64 noundef %.0614815, ptr noundef nonnull %16, i64 noundef %56, ptr noundef nonnull %11, ptr noundef %1)
  br i1 %404, label %405, label %408

405:                                              ; preds = %403
  %406 = call noundef zeroext i1 @_ZL29testspline2dunit_testlintransPN11alglib_impl19spline2dinterpolantElddddPNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %56, double noundef %65, double noundef %67, double noundef %109, double noundef %110, ptr noundef %1)
  %407 = xor i1 %406, true
  br label %408

.critedge709:                                     ; preds = %401
  call void @_ZN11alglib_impl22spline2dbuildbilinearvEPNS_9ae_vectorElS1_lS1_lPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.0616823, ptr noundef nonnull %10, i64 noundef %.0614815, ptr noundef nonnull %16, i64 noundef %56, ptr noundef nonnull %11, ptr noundef %1)
  br label %408

408:                                              ; preds = %.critedge709, %405, %403
  %409 = phi i1 [ true, %403 ], [ %407, %405 ], [ true, %.critedge709 ]
  call void @_ZN11alglib_impl21spline2dbuildbicubicvEPNS_9ae_vectorElS1_lS1_lPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.0616823, ptr noundef nonnull %10, i64 noundef %.0614815, ptr noundef nonnull %15, i64 noundef 1, ptr noundef nonnull %11, ptr noundef %1)
  br label %.preheader735

.preheader735:                                    ; preds = %408, %427
  %.6785 = phi double [ 0.000000e+00, %408 ], [ %425, %427 ]
  %.7639784 = phi i64 [ 0, %408 ], [ %428, %427 ]
  br label %410

410:                                              ; preds = %.preheader735, %410
  %.7783 = phi double [ %.6785, %.preheader735 ], [ %425, %410 ]
  %.7626782 = phi i64 [ 0, %.preheader735 ], [ %426, %410 ]
  %411 = load ptr, ptr %43, align 8, !tbaa !9
  %412 = getelementptr inbounds ptr, ptr %411, i64 %.7639784
  %413 = load ptr, ptr %412, align 8, !tbaa !18
  %414 = getelementptr inbounds double, ptr %413, i64 %.7626782
  %415 = load double, ptr %414, align 8, !tbaa !10
  %416 = load ptr, ptr %39, align 8, !tbaa !9
  %417 = getelementptr inbounds double, ptr %416, i64 %.7626782
  %418 = load double, ptr %417, align 8, !tbaa !10
  %419 = load ptr, ptr %41, align 8, !tbaa !9
  %420 = getelementptr inbounds double, ptr %419, i64 %.7639784
  %421 = load double, ptr %420, align 8, !tbaa !10
  %422 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %11, double noundef %418, double noundef %421, ptr noundef %1)
  %423 = fsub double %415, %422
  %424 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %423, ptr noundef %1)
  %425 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.7783, double noundef %424, ptr noundef %1)
  %426 = add nuw nsw i64 %.7626782, 1
  %exitcond902.not = icmp eq i64 %426, %.0616823
  br i1 %exitcond902.not, label %427, label %410, !llvm.loop !31

427:                                              ; preds = %410
  %428 = add nuw nsw i64 %.7639784, 1
  %exitcond903.not = icmp eq i64 %428, %.0614815
  br i1 %exitcond903.not, label %429, label %.preheader735, !llvm.loop !32

429:                                              ; preds = %427
  br i1 %.2592813, label %.critedge711, label %430

430:                                              ; preds = %429
  %431 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %425, double noundef 0x3D95FD7FE1796496)
  call void @_ZL23testspline2dunit_lconstPN11alglib_impl19spline2dinterpolantEPNS_9ae_vectorES3_lldPdS4_S4_S4_PNS_8ae_stateE(ptr noundef nonnull %11, ptr noundef nonnull %13, ptr noundef nonnull %14, i64 noundef %.0614815, i64 noundef %.0616823, double noundef 1.000000e-03, ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef %1)
  call void @_ZL23testspline2dunit_lconstPN11alglib_impl19spline2dinterpolantEPNS_9ae_vectorES3_lldPdS4_S4_S4_PNS_8ae_stateE(ptr noundef nonnull %11, ptr noundef nonnull %13, ptr noundef nonnull %14, i64 noundef %.0614815, i64 noundef %.0616823, double noundef 0x3F35D867C3ECE2A5, ptr noundef nonnull %24, ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef %1)
  br i1 %431, label %.critedge714, label %432

432:                                              ; preds = %430
  %433 = load double, ptr %24, align 8, !tbaa !10
  %434 = load double, ptr %20, align 8, !tbaa !10
  %435 = fdiv double %433, %434
  %436 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %435, double noundef 1.200000e+00)
  br i1 %436, label %.critedge714, label %.critedge713

.critedge711:                                     ; preds = %429
  call void @_ZL23testspline2dunit_lconstPN11alglib_impl19spline2dinterpolantEPNS_9ae_vectorES3_lldPdS4_S4_S4_PNS_8ae_stateE(ptr noundef nonnull %11, ptr noundef nonnull %13, ptr noundef nonnull %14, i64 noundef %.0614815, i64 noundef %.0616823, double noundef 1.000000e-03, ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef %1)
  call void @_ZL23testspline2dunit_lconstPN11alglib_impl19spline2dinterpolantEPNS_9ae_vectorES3_lldPdS4_S4_S4_PNS_8ae_stateE(ptr noundef nonnull %11, ptr noundef nonnull %13, ptr noundef nonnull %14, i64 noundef %.0614815, i64 noundef %.0616823, double noundef 0x3F35D867C3ECE2A5, ptr noundef nonnull %24, ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef %1)
  br label %.critedge714

.critedge713:                                     ; preds = %432
  %437 = load double, ptr %25, align 8, !tbaa !10
  %438 = load double, ptr %21, align 8, !tbaa !10
  %439 = fdiv double %437, %438
  %440 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %439, double noundef 1.200000e+00)
  br i1 %440, label %.critedge714, label %441

441:                                              ; preds = %.critedge713
  %442 = load double, ptr %26, align 8, !tbaa !10
  %443 = load double, ptr %22, align 8, !tbaa !10
  %444 = fdiv double %442, %443
  %445 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %444, double noundef 1.200000e+00)
  br label %.critedge714

.critedge714:                                     ; preds = %432, %.critedge711, %430, %441, %.critedge713
  %446 = phi i1 [ true, %.critedge713 ], [ %445, %441 ], [ true, %430 ], [ true, %.critedge711 ], [ true, %432 ]
  %447 = load double, ptr %27, align 8, !tbaa !10
  %448 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %447, double noundef 1.000000e-02)
  br i1 %448, label %449, label %.preheader734.preheader

449:                                              ; preds = %.critedge714
  %450 = load double, ptr %23, align 8, !tbaa !10
  %451 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %450, double noundef 1.000000e-02)
  %.not717 = xor i1 %451, true
  %brmerge718 = or i1 %446, %.not717
  %.mux = or i1 %446, %451
  br i1 %brmerge718, label %.preheader734.preheader, label %452

452:                                              ; preds = %449
  %453 = load double, ptr %27, align 8, !tbaa !10
  %454 = load double, ptr %23, align 8, !tbaa !10
  %455 = fdiv double %453, %454
  %456 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %455, double noundef 1.200000e+00)
  br label %.preheader734.preheader

.preheader734.preheader:                          ; preds = %.critedge714, %452, %449
  %.3.in = phi i1 [ %.mux, %449 ], [ %446, %.critedge714 ], [ %456, %452 ]
  br label %.lr.ph789.preheader

.lr.ph789.preheader:                              ; preds = %._crit_edge790, %.preheader734.preheader
  %.8794 = phi double [ %488, %._crit_edge790 ], [ 0.000000e+00, %.preheader734.preheader ]
  %.8640793 = phi i64 [ %490, %._crit_edge790 ], [ 0, %.preheader734.preheader ]
  br label %.lr.ph789

.lr.ph789:                                        ; preds = %.lr.ph789.preheader, %.lr.ph789
  %.9788 = phi double [ %488, %.lr.ph789 ], [ %.8794, %.lr.ph789.preheader ]
  %.8627787 = phi i64 [ %489, %.lr.ph789 ], [ 0, %.lr.ph789.preheader ]
  %457 = load ptr, ptr %40, align 8, !tbaa !9
  %458 = getelementptr inbounds double, ptr %457, i64 %.8627787
  %459 = load double, ptr %458, align 8, !tbaa !10
  %460 = load ptr, ptr %42, align 8, !tbaa !9
  %461 = getelementptr inbounds double, ptr %460, i64 %.8640793
  %462 = load double, ptr %461, align 8, !tbaa !10
  call void @_ZN11alglib_impl12spline2ddiffEPNS_19spline2dinterpolantEddPdS2_S2_S2_PNS_8ae_stateE(ptr noundef nonnull %11, double noundef %459, double noundef %462, ptr noundef nonnull %28, ptr noundef nonnull %29, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef %1)
  %463 = load ptr, ptr %40, align 8, !tbaa !9
  %464 = getelementptr inbounds double, ptr %463, i64 %.8627787
  %465 = load double, ptr %464, align 8, !tbaa !10
  %466 = load ptr, ptr %42, align 8, !tbaa !9
  %467 = getelementptr inbounds double, ptr %466, i64 %.8640793
  %468 = load double, ptr %467, align 8, !tbaa !10
  call void @_ZL27testspline2dunit_twodnumderPN11alglib_impl19spline2dinterpolantEdddPdS2_S2_S2_PNS_8ae_stateE(ptr noundef nonnull %11, double noundef %465, double noundef %468, double noundef 1.000000e-05, ptr noundef nonnull %32, ptr noundef nonnull %33, ptr noundef nonnull %34, ptr noundef nonnull %35, ptr noundef %1)
  %469 = load double, ptr %28, align 8, !tbaa !10
  %470 = load double, ptr %32, align 8, !tbaa !10
  %471 = fsub double %469, %470
  %472 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %471, ptr noundef %1)
  %473 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.9788, double noundef %472, ptr noundef %1)
  %474 = load double, ptr %29, align 8, !tbaa !10
  %475 = load double, ptr %33, align 8, !tbaa !10
  %476 = fsub double %474, %475
  %477 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %476, ptr noundef %1)
  %478 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %473, double noundef %477, ptr noundef %1)
  %479 = load double, ptr %30, align 8, !tbaa !10
  %480 = load double, ptr %34, align 8, !tbaa !10
  %481 = fsub double %479, %480
  %482 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %481, ptr noundef %1)
  %483 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %478, double noundef %482, ptr noundef %1)
  %484 = load double, ptr %31, align 8, !tbaa !10
  %485 = load double, ptr %35, align 8, !tbaa !10
  %486 = fsub double %484, %485
  %487 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %486, ptr noundef %1)
  %488 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %483, double noundef %487, ptr noundef %1)
  %489 = add nuw nsw i64 %.8627787, 1
  %exitcond906.not = icmp eq i64 %489, %indvars.iv904
  br i1 %exitcond906.not, label %._crit_edge790, label %.lr.ph789, !llvm.loop !33

._crit_edge790:                                   ; preds = %.lr.ph789
  %490 = add nuw nsw i64 %.8640793, 1
  %exitcond909.not = icmp eq i64 %490, %indvars.iv907
  br i1 %exitcond909.not, label %._crit_edge795, label %.lr.ph789.preheader, !llvm.loop !34

._crit_edge795:                                   ; preds = %._crit_edge790
  br i1 %397, label %493, label %491

491:                                              ; preds = %._crit_edge795
  %492 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %488, double noundef 1.000000e-03)
  br label %493

493:                                              ; preds = %491, %._crit_edge795
  %494 = phi i1 [ true, %._crit_edge795 ], [ %492, %491 ]
  br i1 %402, label %498, label %495

495:                                              ; preds = %493
  %496 = call noundef zeroext i1 @_ZL27testspline2dunit_testunpackPN11alglib_impl19spline2dinterpolantEPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef nonnull %11, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef %1)
  %497 = xor i1 %496, true
  br label %498

498:                                              ; preds = %495, %493
  %499 = phi i1 [ true, %493 ], [ %497, %495 ]
  br i1 %409, label %.critedge716, label %500

500:                                              ; preds = %498
  %501 = call noundef zeroext i1 @_ZL29testspline2dunit_testlintransPN11alglib_impl19spline2dinterpolantElddddPNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef 1, double noundef %65, double noundef %67, double noundef %109, double noundef %110, ptr noundef %1)
  call void @_ZN11alglib_impl21spline2dbuildbicubicvEPNS_9ae_vectorElS1_lS1_lPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.0616823, ptr noundef nonnull %10, i64 noundef %.0614815, ptr noundef nonnull %16, i64 noundef %56, ptr noundef nonnull %11, ptr noundef %1)
  br i1 %501, label %502, label %505

502:                                              ; preds = %500
  %503 = call noundef zeroext i1 @_ZL29testspline2dunit_testlintransPN11alglib_impl19spline2dinterpolantElddddPNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %56, double noundef %65, double noundef %67, double noundef %109, double noundef %110, ptr noundef %1)
  %504 = xor i1 %503, true
  br label %505

.critedge716:                                     ; preds = %498
  call void @_ZN11alglib_impl21spline2dbuildbicubicvEPNS_9ae_vectorElS1_lS1_lPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.0616823, ptr noundef nonnull %10, i64 noundef %.0614815, ptr noundef nonnull %16, i64 noundef %56, ptr noundef nonnull %11, ptr noundef %1)
  br label %505

505:                                              ; preds = %.critedge716, %502, %500
  %506 = phi i1 [ true, %500 ], [ %504, %502 ], [ true, %.critedge716 ]
  %507 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %508 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %507, double noundef 5.000000e-01)
  br i1 %508, label %509, label %510

509:                                              ; preds = %505
  call void @_ZN11alglib_impl20spline2dbuildbicubicEPNS_9ae_vectorES1_PNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %17, i64 noundef %.0614815, i64 noundef %.0616823, ptr noundef nonnull %11, ptr noundef %1)
  br label %511

510:                                              ; preds = %505
  call void @_ZN11alglib_impl21spline2dbuildbilinearEPNS_9ae_vectorES1_PNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %17, i64 noundef %.0614815, i64 noundef %.0616823, ptr noundef nonnull %11, ptr noundef %1)
  br label %511

511:                                              ; preds = %510, %509
  call void @_ZL30testspline2dunit_unsetspline2dPN11alglib_impl19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %12, ptr noundef %1)
  call void @_ZN11alglib_impl12spline2dcopyEPNS_19spline2dinterpolantES1_PNS_8ae_stateE(ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef %1)
  %512 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %513 = call double @llvm.fmuladd.f64(double %71, double %512, double %65)
  %514 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %515 = call double @llvm.fmuladd.f64(double %112, double %514, double %109)
  %516 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %11, double noundef %513, double noundef %515, ptr noundef %1)
  %517 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %12, double noundef %513, double noundef %515, ptr noundef %1)
  %518 = fsub double %516, %517
  %519 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %518, ptr noundef %1)
  %520 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef 0.000000e+00, double noundef %519, ptr noundef %1)
  %521 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %522 = call double @llvm.fmuladd.f64(double %71, double %521, double %65)
  %523 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %524 = call double @llvm.fmuladd.f64(double %112, double %523, double %109)
  %525 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %11, double noundef %522, double noundef %524, ptr noundef %1)
  %526 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %12, double noundef %522, double noundef %524, ptr noundef %1)
  %527 = fsub double %525, %526
  %528 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %527, ptr noundef %1)
  %529 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %520, double noundef %528, ptr noundef %1)
  %530 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %531 = call double @llvm.fmuladd.f64(double %71, double %530, double %65)
  %532 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %533 = call double @llvm.fmuladd.f64(double %112, double %532, double %109)
  %534 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %11, double noundef %531, double noundef %533, ptr noundef %1)
  %535 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %12, double noundef %531, double noundef %533, ptr noundef %1)
  %536 = fsub double %534, %535
  %537 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %536, ptr noundef %1)
  %538 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %529, double noundef %537, ptr noundef %1)
  %539 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %540 = call double @llvm.fmuladd.f64(double %71, double %539, double %65)
  %541 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %542 = call double @llvm.fmuladd.f64(double %112, double %541, double %109)
  %543 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %11, double noundef %540, double noundef %542, ptr noundef %1)
  %544 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %12, double noundef %540, double noundef %542, ptr noundef %1)
  %545 = fsub double %543, %544
  %546 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %545, ptr noundef %1)
  %547 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %538, double noundef %546, ptr noundef %1)
  %548 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %549 = call double @llvm.fmuladd.f64(double %71, double %548, double %65)
  %550 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %551 = call double @llvm.fmuladd.f64(double %112, double %550, double %109)
  %552 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %11, double noundef %549, double noundef %551, ptr noundef %1)
  %553 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %12, double noundef %549, double noundef %551, ptr noundef %1)
  %554 = fsub double %552, %553
  %555 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %554, ptr noundef %1)
  %556 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %547, double noundef %555, ptr noundef %1)
  br i1 %.2598811, label %559, label %557

557:                                              ; preds = %511
  %558 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %556, double noundef 0x3D95FD7FE1796496)
  br label %559

559:                                              ; preds = %557, %511
  %560 = phi i1 [ true, %511 ], [ %558, %557 ]
  %561 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %562 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %561, double noundef 5.000000e-01)
  br i1 %562, label %563, label %564

563:                                              ; preds = %559
  call void @_ZN11alglib_impl20spline2dbuildbicubicEPNS_9ae_vectorES1_PNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %17, i64 noundef %.0614815, i64 noundef %.0616823, ptr noundef nonnull %11, ptr noundef %1)
  br label %565

564:                                              ; preds = %559
  call void @_ZN11alglib_impl21spline2dbuildbilinearEPNS_9ae_vectorES1_PNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %17, i64 noundef %.0614815, i64 noundef %.0616823, ptr noundef nonnull %11, ptr noundef %1)
  br label %565

565:                                              ; preds = %564, %563
  call void @_ZL30testspline2dunit_unsetspline2dPN11alglib_impl19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %12, ptr noundef %1)
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %36) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %37) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %38) #6
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %1, ptr noundef nonnull %37)
  call void @_ZN11alglib_impl18ae_serializer_initEPNS_13ae_serializerE(ptr noundef nonnull %36)
  call void @_ZN11alglib_impl25ae_serializer_alloc_startEPNS_13ae_serializerE(ptr noundef nonnull %36)
  call void @_ZN11alglib_impl13spline2dallocEPNS_13ae_serializerEPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %36, ptr noundef nonnull %11, ptr noundef %1)
  %566 = call noundef i64 @_ZN11alglib_impl28ae_serializer_get_alloc_sizeEPNS_13ae_serializerE(ptr noundef nonnull %36)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %38, i8 0, i64 32, i1 false)
  %567 = add nsw i64 %566, 1
  call void @_ZN11alglib_impl10ae_db_initEPNS_12ae_dyn_blockElPNS_8ae_stateEb(ptr noundef nonnull %38, i64 noundef %567, ptr noundef %1, i1 noundef zeroext true)
  %568 = load volatile ptr, ptr %46, align 8, !tbaa !35
  call void @_ZN11alglib_impl24ae_serializer_sstart_strEPNS_13ae_serializerEPc(ptr noundef nonnull %36, ptr noundef %568)
  call void @_ZN11alglib_impl17spline2dserializeEPNS_13ae_serializerEPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %36, ptr noundef nonnull %11, ptr noundef %1)
  call void @_ZN11alglib_impl18ae_serializer_stopEPNS_13ae_serializerEPNS_8ae_stateE(ptr noundef nonnull %36, ptr noundef %1)
  call void @_ZN11alglib_impl19ae_serializer_clearEPNS_13ae_serializerE(ptr noundef nonnull %36)
  call void @_ZN11alglib_impl18ae_serializer_initEPNS_13ae_serializerE(ptr noundef nonnull %36)
  %569 = load volatile ptr, ptr %46, align 8, !tbaa !35
  call void @_ZN11alglib_impl24ae_serializer_ustart_strEPNS_13ae_serializerEPKc(ptr noundef nonnull %36, ptr noundef %569)
  call void @_ZN11alglib_impl19spline2dunserializeEPNS_13ae_serializerEPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %36, ptr noundef nonnull %12, ptr noundef %1)
  call void @_ZN11alglib_impl18ae_serializer_stopEPNS_13ae_serializerEPNS_8ae_stateE(ptr noundef nonnull %36, ptr noundef %1)
  call void @_ZN11alglib_impl19ae_serializer_clearEPNS_13ae_serializerE(ptr noundef nonnull %36)
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1)
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %36) #6
  %570 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %571 = call double @llvm.fmuladd.f64(double %71, double %570, double %65)
  %572 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %573 = call double @llvm.fmuladd.f64(double %112, double %572, double %109)
  %574 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %11, double noundef %571, double noundef %573, ptr noundef %1)
  %575 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %12, double noundef %571, double noundef %573, ptr noundef %1)
  %576 = fsub double %574, %575
  %577 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %576, ptr noundef %1)
  %578 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef 0.000000e+00, double noundef %577, ptr noundef %1)
  %579 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %580 = call double @llvm.fmuladd.f64(double %71, double %579, double %65)
  %581 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %582 = call double @llvm.fmuladd.f64(double %112, double %581, double %109)
  %583 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %11, double noundef %580, double noundef %582, ptr noundef %1)
  %584 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %12, double noundef %580, double noundef %582, ptr noundef %1)
  %585 = fsub double %583, %584
  %586 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %585, ptr noundef %1)
  %587 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %578, double noundef %586, ptr noundef %1)
  %588 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %589 = call double @llvm.fmuladd.f64(double %71, double %588, double %65)
  %590 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %591 = call double @llvm.fmuladd.f64(double %112, double %590, double %109)
  %592 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %11, double noundef %589, double noundef %591, ptr noundef %1)
  %593 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %12, double noundef %589, double noundef %591, ptr noundef %1)
  %594 = fsub double %592, %593
  %595 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %594, ptr noundef %1)
  %596 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %587, double noundef %595, ptr noundef %1)
  %597 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %598 = call double @llvm.fmuladd.f64(double %71, double %597, double %65)
  %599 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %600 = call double @llvm.fmuladd.f64(double %112, double %599, double %109)
  %601 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %11, double noundef %598, double noundef %600, ptr noundef %1)
  %602 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %12, double noundef %598, double noundef %600, ptr noundef %1)
  %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 %596, double noundef %604, ptr noundef %1)
  %606 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %607 = call double @llvm.fmuladd.f64(double %71, double %606, double %65)
  %608 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %609 = call double @llvm.fmuladd.f64(double %112, double %608, double %109)
  %610 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %11, double noundef %607, double noundef %609, ptr noundef %1)
  %611 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %12, double noundef %607, double noundef %609, ptr noundef %1)
  %612 = fsub double %610, %611
  %613 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %612, ptr noundef %1)
  %614 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %605, double noundef %613, ptr noundef %1)
  %615 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %614, double noundef 0x3D95FD7FE1796496)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %615, ptr noundef nonnull @.str.8, i32 noundef 108289, ptr noundef nonnull @.str.654)
  br label %.preheader733

.preheader733:                                    ; preds = %565, %688
  %.12806 = phi double [ 0.000000e+00, %565 ], [ %778, %688 ]
  %616 = phi i1 [ true, %565 ], [ false, %688 ]
  br label %.preheader731

.preheader731:                                    ; preds = %.preheader733, %683
  %.11643802 = phi i64 [ 0, %.preheader733 ], [ %684, %683 ]
  %617 = load ptr, ptr %43, align 8, !tbaa !9
  %618 = getelementptr inbounds ptr, ptr %617, i64 %.11643802
  %619 = load ptr, ptr %618, align 8, !tbaa !18
  %620 = load double, ptr %619, align 8, !tbaa !10
  %621 = load ptr, ptr %47, align 8, !tbaa !9
  %622 = load ptr, ptr %621, align 8, !tbaa !18
  %623 = getelementptr inbounds double, ptr %622, i64 %.11643802
  store double %620, ptr %623, align 8, !tbaa !10
  %624 = load ptr, ptr %43, align 8, !tbaa !9
  %625 = getelementptr inbounds ptr, ptr %624, i64 %.11643802
  %626 = load ptr, ptr %625, align 8, !tbaa !18
  %627 = getelementptr inbounds i8, ptr %626, i64 8
  %628 = load double, ptr %627, align 8, !tbaa !10
  %629 = load ptr, ptr %47, align 8, !tbaa !9
  %630 = getelementptr inbounds i8, ptr %629, i64 8
  %631 = load ptr, ptr %630, align 8, !tbaa !18
  %632 = getelementptr inbounds double, ptr %631, i64 %.11643802
  store double %628, ptr %632, align 8, !tbaa !10
  br i1 %exitcond912.not.1, label %683, label %633, !llvm.loop !37

633:                                              ; preds = %.preheader731
  %634 = load ptr, ptr %43, align 8, !tbaa !9
  %635 = getelementptr inbounds ptr, ptr %634, i64 %.11643802
  %636 = load ptr, ptr %635, align 8, !tbaa !18
  %637 = getelementptr inbounds i8, ptr %636, i64 16
  %638 = load double, ptr %637, align 8, !tbaa !10
  %639 = load ptr, ptr %47, align 8, !tbaa !9
  %640 = getelementptr inbounds i8, ptr %639, i64 16
  %641 = load ptr, ptr %640, align 8, !tbaa !18
  %642 = getelementptr inbounds double, ptr %641, i64 %.11643802
  store double %638, ptr %642, align 8, !tbaa !10
  br i1 %exitcond912.not.2, label %683, label %643, !llvm.loop !37

643:                                              ; preds = %633
  %644 = load ptr, ptr %43, align 8, !tbaa !9
  %645 = getelementptr inbounds ptr, ptr %644, i64 %.11643802
  %646 = load ptr, ptr %645, align 8, !tbaa !18
  %647 = getelementptr inbounds i8, ptr %646, i64 24
  %648 = load double, ptr %647, align 8, !tbaa !10
  %649 = load ptr, ptr %47, align 8, !tbaa !9
  %650 = getelementptr inbounds i8, ptr %649, i64 24
  %651 = load ptr, ptr %650, align 8, !tbaa !18
  %652 = getelementptr inbounds double, ptr %651, i64 %.11643802
  store double %648, ptr %652, align 8, !tbaa !10
  br i1 %exitcond912.not.3, label %683, label %653, !llvm.loop !37

653:                                              ; preds = %643
  %654 = load ptr, ptr %43, align 8, !tbaa !9
  %655 = getelementptr inbounds ptr, ptr %654, i64 %.11643802
  %656 = load ptr, ptr %655, align 8, !tbaa !18
  %657 = getelementptr inbounds i8, ptr %656, i64 32
  %658 = load double, ptr %657, align 8, !tbaa !10
  %659 = load ptr, ptr %47, align 8, !tbaa !9
  %660 = getelementptr inbounds i8, ptr %659, i64 32
  %661 = load ptr, ptr %660, align 8, !tbaa !18
  %662 = getelementptr inbounds double, ptr %661, i64 %.11643802
  store double %658, ptr %662, align 8, !tbaa !10
  br i1 %exitcond912.not.4, label %683, label %663, !llvm.loop !37

663:                                              ; preds = %653
  %664 = load ptr, ptr %43, align 8, !tbaa !9
  %665 = getelementptr inbounds ptr, ptr %664, i64 %.11643802
  %666 = load ptr, ptr %665, align 8, !tbaa !18
  %667 = getelementptr inbounds i8, ptr %666, i64 40
  %668 = load double, ptr %667, align 8, !tbaa !10
  %669 = load ptr, ptr %47, align 8, !tbaa !9
  %670 = getelementptr inbounds i8, ptr %669, i64 40
  %671 = load ptr, ptr %670, align 8, !tbaa !18
  %672 = getelementptr inbounds double, ptr %671, i64 %.11643802
  store double %668, ptr %672, align 8, !tbaa !10
  br i1 %exitcond912.not.5, label %683, label %673, !llvm.loop !37

673:                                              ; preds = %663
  %674 = load ptr, ptr %43, align 8, !tbaa !9
  %675 = getelementptr inbounds ptr, ptr %674, i64 %.11643802
  %676 = load ptr, ptr %675, align 8, !tbaa !18
  %677 = getelementptr inbounds i8, ptr %676, i64 48
  %678 = load double, ptr %677, align 8, !tbaa !10
  %679 = load ptr, ptr %47, align 8, !tbaa !9
  %680 = getelementptr inbounds i8, ptr %679, i64 48
  %681 = load ptr, ptr %680, align 8, !tbaa !18
  %682 = getelementptr inbounds double, ptr %681, i64 %.11643802
  store double %678, ptr %682, align 8, !tbaa !10
  br label %683

683:                                              ; preds = %673, %663, %653, %643, %633, %.preheader731
  %684 = add nuw nsw i64 %.11643802, 1
  %exitcond913.not = icmp eq i64 %684, %.0614815
  br i1 %exitcond913.not, label %685, label %.preheader731, !llvm.loop !38

685:                                              ; preds = %683
  br i1 %616, label %686, label %687

686:                                              ; preds = %685
  call void @_ZN11alglib_impl21spline2dbuildbilinearEPNS_9ae_vectorES1_PNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %17, i64 noundef %.0614815, i64 noundef %.0616823, ptr noundef nonnull %11, ptr noundef %1)
  call void @_ZN11alglib_impl21spline2dbuildbilinearEPNS_9ae_vectorES1_PNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %10, ptr noundef nonnull %9, ptr noundef nonnull %19, i64 noundef %.0616823, i64 noundef %.0614815, ptr noundef nonnull %12, ptr noundef %1)
  br label %688

687:                                              ; preds = %685
  call void @_ZN11alglib_impl20spline2dbuildbicubicEPNS_9ae_vectorES1_PNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %17, i64 noundef %.0614815, i64 noundef %.0616823, ptr noundef nonnull %11, ptr noundef %1)
  call void @_ZN11alglib_impl20spline2dbuildbicubicEPNS_9ae_vectorES1_PNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %10, ptr noundef nonnull %9, ptr noundef nonnull %19, i64 noundef %.0616823, i64 noundef %.0614815, ptr noundef nonnull %12, ptr noundef %1)
  br label %688

688:                                              ; preds = %687, %686
  %689 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %690 = call double @llvm.fmuladd.f64(double %71, double %689, double %65)
  %691 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %692 = call double @llvm.fmuladd.f64(double %112, double %691, double %109)
  %693 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %11, double noundef %690, double noundef %692, ptr noundef %1)
  %694 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %12, double noundef %692, double noundef %690, ptr noundef %1)
  %695 = fsub double %693, %694
  %696 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %695, ptr noundef %1)
  %697 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.12806, double noundef %696, ptr noundef %1)
  %698 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %699 = call double @llvm.fmuladd.f64(double %71, double %698, double %65)
  %700 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %701 = call double @llvm.fmuladd.f64(double %112, double %700, double %109)
  %702 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %11, double noundef %699, double noundef %701, ptr noundef %1)
  %703 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %12, double noundef %701, double noundef %699, ptr noundef %1)
  %704 = fsub double %702, %703
  %705 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %704, ptr noundef %1)
  %706 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %697, double noundef %705, ptr noundef %1)
  %707 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %708 = call double @llvm.fmuladd.f64(double %71, double %707, double %65)
  %709 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %710 = call double @llvm.fmuladd.f64(double %112, double %709, double %109)
  %711 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %11, double noundef %708, double noundef %710, ptr noundef %1)
  %712 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %12, double noundef %710, double noundef %708, ptr noundef %1)
  %713 = fsub double %711, %712
  %714 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %713, ptr noundef %1)
  %715 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %706, double noundef %714, ptr noundef %1)
  %716 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %717 = call double @llvm.fmuladd.f64(double %71, double %716, double %65)
  %718 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %719 = call double @llvm.fmuladd.f64(double %112, double %718, double %109)
  %720 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %11, double noundef %717, double noundef %719, ptr noundef %1)
  %721 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %12, double noundef %719, double noundef %717, ptr noundef %1)
  %722 = fsub double %720, %721
  %723 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %722, ptr noundef %1)
  %724 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %715, double noundef %723, ptr noundef %1)
  %725 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %726 = call double @llvm.fmuladd.f64(double %71, double %725, double %65)
  %727 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %728 = call double @llvm.fmuladd.f64(double %112, double %727, double %109)
  %729 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %11, double noundef %726, double noundef %728, ptr noundef %1)
  %730 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %12, double noundef %728, double noundef %726, ptr noundef %1)
  %731 = fsub double %729, %730
  %732 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %731, ptr noundef %1)
  %733 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %724, double noundef %732, ptr noundef %1)
  %734 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %735 = call double @llvm.fmuladd.f64(double %71, double %734, double %65)
  %736 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %737 = call double @llvm.fmuladd.f64(double %112, double %736, double %109)
  %738 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %11, double noundef %735, double noundef %737, ptr noundef %1)
  %739 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %12, double noundef %737, double noundef %735, ptr noundef %1)
  %740 = fsub double %738, %739
  %741 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %740, ptr noundef %1)
  %742 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %733, double noundef %741, ptr noundef %1)
  %743 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %744 = call double @llvm.fmuladd.f64(double %71, double %743, double %65)
  %745 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %746 = call double @llvm.fmuladd.f64(double %112, double %745, double %109)
  %747 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %11, double noundef %744, double noundef %746, ptr noundef %1)
  %748 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %12, double noundef %746, double noundef %744, ptr noundef %1)
  %749 = fsub double %747, %748
  %750 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %749, ptr noundef %1)
  %751 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %742, double noundef %750, ptr noundef %1)
  %752 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %753 = call double @llvm.fmuladd.f64(double %71, double %752, double %65)
  %754 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %755 = call double @llvm.fmuladd.f64(double %112, double %754, double %109)
  %756 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %11, double noundef %753, double noundef %755, ptr noundef %1)
  %757 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %12, double noundef %755, double noundef %753, ptr noundef %1)
  %758 = fsub double %756, %757
  %759 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %758, ptr noundef %1)
  %760 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %751, double noundef %759, ptr noundef %1)
  %761 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %762 = call double @llvm.fmuladd.f64(double %71, double %761, double %65)
  %763 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %764 = call double @llvm.fmuladd.f64(double %112, double %763, double %109)
  %765 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %11, double noundef %762, double noundef %764, ptr noundef %1)
  %766 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %12, double noundef %764, double noundef %762, ptr noundef %1)
  %767 = fsub double %765, %766
  %768 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %767, ptr noundef %1)
  %769 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %760, double noundef %768, ptr noundef %1)
  %770 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %771 = call double @llvm.fmuladd.f64(double %71, double %770, double %65)
  %772 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %773 = call double @llvm.fmuladd.f64(double %112, double %772, double %109)
  %774 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %11, double noundef %771, double noundef %773, ptr noundef %1)
  %775 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %12, double noundef %773, double noundef %771, ptr noundef %1)
  %776 = fsub double %774, %775
  %777 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %776, ptr noundef %1)
  %778 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %769, double noundef %777, ptr noundef %1)
  br i1 %616, label %.preheader733, label %779, !llvm.loop !39

779:                                              ; preds = %688
  br i1 %.2613808, label %782, label %780

780:                                              ; preds = %779
  %781 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %778, double noundef 0x3D95FD7FE1796496)
  br label %782

782:                                              ; preds = %780, %779
  %783 = phi i1 [ true, %779 ], [ %781, %780 ]
  %784 = add nuw nsw i64 %.0662807, 1
  %exitcond915.not = icmp eq i64 %784, 11
  br i1 %exitcond915.not, label %785, label %.peel.next, !llvm.loop !40

785:                                              ; preds = %782
  %786 = add nuw nsw i64 %.0614815, 1
  %indvars.iv.next898 = add nuw nsw i64 %indvars.iv897, 1
  %indvars.iv.next908 = add nuw nsw i64 %indvars.iv907, 2
  %exitcond916.not = icmp eq i64 %indvars.iv.next898, 7
  br i1 %exitcond916.not, label %787, label %54, !llvm.loop !41

787:                                              ; preds = %785
  %788 = add nuw nsw i64 %.0616823, 1
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %indvars.iv.next905 = add nuw nsw i64 %indvars.iv904, 2
  %exitcond917.not = icmp eq i64 %indvars.iv.next, 7
  br i1 %exitcond917.not, label %.preheader730, label %.preheader746, !llvm.loop !42

.preheader729:                                    ; preds = %.preheader730, %939
  %.1615858 = phi i64 [ 2, %.preheader730 ], [ %940, %939 ]
  %.0648857 = phi i1 [ false, %.preheader730 ], [ %905, %939 ]
  %.0655856 = phi i1 [ false, %.preheader730 ], [ %931, %939 ]
  %789 = add nsw i64 %.1615858, -1
  %790 = sitofp i64 %789 to double
  %791 = fdiv double 0.000000e+00, %790
  %792 = fdiv double 1.000000e+00, %790
  %exitcond919.not.1 = icmp eq i64 %.1615858, 2
  %793 = fdiv double 2.000000e+00, %790
  %exitcond919.not.2 = icmp eq i64 %.1615858, 3
  %794 = fdiv double 3.000000e+00, %790
  %exitcond919.not.3 = icmp eq i64 %.1615858, 4
  %795 = fdiv double 4.000000e+00, %790
  %exitcond919.not.4 = icmp eq i64 %.1615858, 5
  %796 = fdiv double 5.000000e+00, %790
  br label %797

797:                                              ; preds = %.preheader729, %937
  %.1617855 = phi i64 [ 2, %.preheader729 ], [ %938, %937 ]
  %.1649854 = phi i1 [ %.0648857, %.preheader729 ], [ %905, %937 ]
  %.1656853 = phi i1 [ %.0655856, %.preheader729 ], [ %931, %937 ]
  %798 = add nsw i64 %.1617855, -1
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %17, i64 noundef %.1615858, i64 noundef %.1617855, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.1617855, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %10, i64 noundef %.1615858, ptr noundef %1)
  %799 = sitofp i64 %798 to double
  %800 = fdiv double 0.000000e+00, %799
  %801 = load ptr, ptr %39, align 8, !tbaa !9
  store double %800, ptr %801, align 8, !tbaa !10
  %802 = fdiv double 1.000000e+00, %799
  %803 = load ptr, ptr %39, align 8, !tbaa !9
  %804 = getelementptr inbounds i8, ptr %803, i64 8
  store double %802, ptr %804, align 8, !tbaa !10
  %exitcond918.not.1 = icmp eq i64 %.1617855, 2
  br i1 %exitcond918.not.1, label %.preheader728, label %805, !llvm.loop !43

805:                                              ; preds = %797
  %806 = fdiv double 2.000000e+00, %799
  %807 = load ptr, ptr %39, align 8, !tbaa !9
  %808 = getelementptr inbounds i8, ptr %807, i64 16
  store double %806, ptr %808, align 8, !tbaa !10
  %exitcond918.not.2 = icmp eq i64 %.1617855, 3
  br i1 %exitcond918.not.2, label %.preheader728, label %809, !llvm.loop !43

809:                                              ; preds = %805
  %810 = fdiv double 3.000000e+00, %799
  %811 = load ptr, ptr %39, align 8, !tbaa !9
  %812 = getelementptr inbounds i8, ptr %811, i64 24
  store double %810, ptr %812, align 8, !tbaa !10
  %exitcond918.not.3 = icmp eq i64 %.1617855, 4
  br i1 %exitcond918.not.3, label %.preheader728, label %813, !llvm.loop !43

813:                                              ; preds = %809
  %814 = fdiv double 4.000000e+00, %799
  %815 = load ptr, ptr %39, align 8, !tbaa !9
  %816 = getelementptr inbounds i8, ptr %815, i64 32
  store double %814, ptr %816, align 8, !tbaa !10
  %exitcond918.not.4 = icmp eq i64 %.1617855, 5
  br i1 %exitcond918.not.4, label %.preheader728, label %817, !llvm.loop !43

817:                                              ; preds = %813
  %818 = fdiv double 5.000000e+00, %799
  %819 = load ptr, ptr %39, align 8, !tbaa !9
  %820 = getelementptr inbounds i8, ptr %819, i64 40
  store double %818, ptr %820, align 8, !tbaa !10
  br label %.preheader728

.preheader728:                                    ; preds = %797, %805, %809, %813, %817
  %821 = load ptr, ptr %41, align 8, !tbaa !9
  store double %791, ptr %821, align 8, !tbaa !10
  %822 = load ptr, ptr %41, align 8, !tbaa !9
  %823 = getelementptr inbounds i8, ptr %822, i64 8
  store double %792, ptr %823, align 8, !tbaa !10
  br i1 %exitcond919.not.1, label %.preheader725.preheader, label %.preheader728.2, !llvm.loop !44

.preheader728.2:                                  ; preds = %.preheader728
  %824 = load ptr, ptr %41, align 8, !tbaa !9
  %825 = getelementptr inbounds i8, ptr %824, i64 16
  store double %793, ptr %825, align 8, !tbaa !10
  br i1 %exitcond919.not.2, label %.preheader725.preheader, label %.preheader728.3, !llvm.loop !44

.preheader728.3:                                  ; preds = %.preheader728.2
  %826 = load ptr, ptr %41, align 8, !tbaa !9
  %827 = getelementptr inbounds i8, ptr %826, i64 24
  store double %794, ptr %827, align 8, !tbaa !10
  br i1 %exitcond919.not.3, label %.preheader725.preheader, label %.preheader728.4, !llvm.loop !44

.preheader728.4:                                  ; preds = %.preheader728.3
  %828 = load ptr, ptr %41, align 8, !tbaa !9
  %829 = getelementptr inbounds i8, ptr %828, i64 32
  store double %795, ptr %829, align 8, !tbaa !10
  br i1 %exitcond919.not.4, label %.preheader725.preheader, label %.preheader728.5, !llvm.loop !44

.preheader728.5:                                  ; preds = %.preheader728.4
  %830 = load ptr, ptr %41, align 8, !tbaa !9
  %831 = getelementptr inbounds i8, ptr %830, i64 40
  store double %796, ptr %831, align 8, !tbaa !10
  br label %.preheader725.preheader

.preheader725.preheader:                          ; preds = %.preheader728.5, %.preheader728.4, %.preheader728.3, %.preheader728.2, %.preheader728
  br label %.preheader725

.preheader725:                                    ; preds = %.preheader725.preheader, %873
  %.14646834 = phi i64 [ %874, %873 ], [ 0, %.preheader725.preheader ]
  br label %832

832:                                              ; preds = %.preheader725, %832
  %.11630833 = phi i64 [ 0, %.preheader725 ], [ %872, %832 ]
  %833 = load ptr, ptr %39, align 8, !tbaa !9
  %834 = getelementptr inbounds double, ptr %833, i64 %.11630833
  %835 = load double, ptr %834, align 8, !tbaa !10
  %836 = fmul double %835, 6.000000e-01
  %837 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %836, ptr noundef %1)
  %838 = load ptr, ptr %41, align 8, !tbaa !9
  %839 = getelementptr inbounds double, ptr %838, i64 %.14646834
  %840 = load double, ptr %839, align 8, !tbaa !10
  %841 = load ptr, ptr %39, align 8, !tbaa !9
  %842 = getelementptr inbounds double, ptr %841, i64 %.11630833
  %843 = load double, ptr %842, align 8, !tbaa !10
  %844 = fmul double %843, 8.000000e-02
  %845 = call double @llvm.fmuladd.f64(double %840, double -3.000000e-01, double %844)
  %846 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %845, ptr noundef %1)
  %847 = fsub double %837, %846
  %848 = load ptr, ptr %39, align 8, !tbaa !9
  %849 = getelementptr inbounds double, ptr %848, i64 %.11630833
  %850 = load double, ptr %849, align 8, !tbaa !10
  %851 = load ptr, ptr %41, align 8, !tbaa !9
  %852 = getelementptr inbounds double, ptr %851, i64 %.14646834
  %853 = load double, ptr %852, align 8, !tbaa !10
  %854 = call double @llvm.fmuladd.f64(double %853, double 1.200000e+00, double %850)
  %855 = fmul double %854, 0x400921FB54442D18
  %856 = call noundef double @_ZN11alglib_impl6ae_cosEdPNS_8ae_stateE(double noundef %855, ptr noundef %1)
  %857 = call double @llvm.fmuladd.f64(double %856, double 2.000000e+00, double %847)
  %858 = load ptr, ptr %39, align 8, !tbaa !9
  %859 = getelementptr inbounds double, ptr %858, i64 %.11630833
  %860 = load double, ptr %859, align 8, !tbaa !10
  %861 = load ptr, ptr %41, align 8, !tbaa !9
  %862 = getelementptr inbounds double, ptr %861, i64 %.14646834
  %863 = load double, ptr %862, align 8, !tbaa !10
  %864 = fmul double %863, 1.500000e+01
  %865 = call double @llvm.fmuladd.f64(double %860, double 2.000000e+01, double %864)
  %866 = call noundef double @_ZN11alglib_impl6ae_cosEdPNS_8ae_stateE(double noundef %865, ptr noundef %1)
  %867 = call double @llvm.fmuladd.f64(double %866, double 1.000000e-01, double %857)
  %868 = load ptr, ptr %43, align 8, !tbaa !9
  %869 = getelementptr inbounds ptr, ptr %868, i64 %.14646834
  %870 = load ptr, ptr %869, align 8, !tbaa !18
  %871 = getelementptr inbounds double, ptr %870, i64 %.11630833
  store double %867, ptr %871, align 8, !tbaa !10
  %872 = add nuw nsw i64 %.11630833, 1
  %exitcond920.not = icmp eq i64 %872, %.1617855
  br i1 %exitcond920.not, label %873, label %832, !llvm.loop !45

873:                                              ; preds = %832
  %874 = add nuw nsw i64 %.14646834, 1
  %exitcond921.not = icmp eq i64 %874, %.1615858
  br i1 %exitcond921.not, label %.preheader724, label %.preheader725, !llvm.loop !46

.preheader724:                                    ; preds = %873, %935
  %.0609852 = phi i64 [ %936, %935 ], [ 2, %873 ]
  %.2650851 = phi i1 [ %905, %935 ], [ %.1649854, %873 ]
  %.2657850 = phi i1 [ %931, %935 ], [ %.1656853, %873 ]
  %875 = add nsw i64 %.0609852, -1
  %876 = sitofp i64 %875 to double
  br label %.preheader723

.preheader723:                                    ; preds = %.preheader724, %933
  %.0610849 = phi i64 [ 2, %.preheader724 ], [ %934, %933 ]
  %.3651848 = phi i1 [ %.2650851, %.preheader724 ], [ %905, %933 ]
  %.3658847 = phi i1 [ %.2657850, %.preheader724 ], [ %931, %933 ]
  %877 = add nsw i64 %.0610849, -1
  %878 = sitofp i64 %877 to double
  br label %879

879:                                              ; preds = %.preheader723, %930
  %.4652846 = phi i1 [ %.3651848, %.preheader723 ], [ %905, %930 ]
  %.4659845 = phi i1 [ %.3658847, %.preheader723 ], [ %931, %930 ]
  %.1663844 = phi i64 [ 1, %.preheader723 ], [ %932, %930 ]
  call void @_ZN11alglib_impl24spline2dresamplebilinearEPNS_9ae_matrixEllS1_llPNS_8ae_stateE(ptr noundef nonnull %17, i64 noundef %.1615858, i64 noundef %.1617855, ptr noundef nonnull %18, i64 noundef %.0609852, i64 noundef %.0610849, ptr noundef %1)
  call void @_ZN11alglib_impl21spline2dbuildbilinearEPNS_9ae_vectorES1_PNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %17, i64 noundef %.1615858, i64 noundef %.1617855, ptr noundef nonnull %11, ptr noundef %1)
  br label %.preheader

.preheader:                                       ; preds = %879, %898
  %.0588840 = phi double [ 0.000000e+00, %879 ], [ %896, %898 ]
  %.14839 = phi double [ 0.000000e+00, %879 ], [ %893, %898 ]
  %.15647838 = phi i64 [ 0, %879 ], [ %899, %898 ]
  %880 = uitofp nneg i64 %.15647838 to double
  %881 = fdiv double %880, %876
  br label %882

882:                                              ; preds = %.preheader, %882
  %.1589837 = phi double [ %.0588840, %.preheader ], [ %896, %882 ]
  %.15836 = phi double [ %.14839, %.preheader ], [ %893, %882 ]
  %.12631835 = phi i64 [ 0, %.preheader ], [ %897, %882 ]
  %883 = uitofp nneg i64 %.12631835 to double
  %884 = fdiv double %883, %878
  %885 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %11, double noundef %884, double noundef %881, ptr noundef %1)
  store double %885, ptr %28, align 8, !tbaa !10
  %886 = load ptr, ptr %53, align 8, !tbaa !9
  %887 = getelementptr inbounds ptr, ptr %886, i64 %.15647838
  %888 = load ptr, ptr %887, align 8, !tbaa !18
  %889 = getelementptr inbounds double, ptr %888, i64 %.12631835
  %890 = load double, ptr %889, align 8, !tbaa !10
  store double %890, ptr %32, align 8, !tbaa !10
  %891 = fsub double %885, %890
  %892 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %891, ptr noundef %1)
  %893 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.15836, double noundef %892, ptr noundef %1)
  %894 = load double, ptr %28, align 8, !tbaa !10
  %895 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %894, ptr noundef %1)
  %896 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.1589837, double noundef %895, ptr noundef %1)
  %897 = add nuw nsw i64 %.12631835, 1
  %exitcond922.not = icmp eq i64 %897, %.0610849
  br i1 %exitcond922.not, label %898, label %882, !llvm.loop !47

898:                                              ; preds = %882
  %899 = add nuw nsw i64 %.15647838, 1
  %exitcond923.not = icmp eq i64 %899, %.0609852
  br i1 %exitcond923.not, label %900, label %.preheader, !llvm.loop !48

900:                                              ; preds = %898
  br i1 %.4652846, label %904, label %901

901:                                              ; preds = %900
  %902 = fdiv double %893, %896
  %903 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %902, double noundef 0x3D95FD7FE1796496)
  br label %904

904:                                              ; preds = %901, %900
  %905 = phi i1 [ true, %900 ], [ %903, %901 ]
  call void @_ZN11alglib_impl23spline2dresamplebicubicEPNS_9ae_matrixEllS1_llPNS_8ae_stateE(ptr noundef nonnull %17, i64 noundef %.1615858, i64 noundef %.1617855, ptr noundef nonnull %18, i64 noundef %.0609852, i64 noundef %.0610849, ptr noundef %1)
  call void @_ZN11alglib_impl20spline2dbuildbicubicEPNS_9ae_vectorES1_PNS_9ae_matrixEllPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %17, i64 noundef %.1615858, i64 noundef %.1617855, ptr noundef nonnull %11, ptr noundef %1)
  br label %.preheader.1

.preheader.1:                                     ; preds = %924, %904
  %.0588840.1 = phi double [ 0.000000e+00, %904 ], [ %922, %924 ]
  %.14839.1 = phi double [ 0.000000e+00, %904 ], [ %919, %924 ]
  %.15647838.1 = phi i64 [ 0, %904 ], [ %925, %924 ]
  %906 = uitofp nneg i64 %.15647838.1 to double
  %907 = fdiv double %906, %876
  br label %908

908:                                              ; preds = %908, %.preheader.1
  %.1589837.1 = phi double [ %.0588840.1, %.preheader.1 ], [ %922, %908 ]
  %.15836.1 = phi double [ %.14839.1, %.preheader.1 ], [ %919, %908 ]
  %.12631835.1 = phi i64 [ 0, %.preheader.1 ], [ %923, %908 ]
  %909 = uitofp nneg i64 %.12631835.1 to double
  %910 = fdiv double %909, %878
  %911 = call noundef double @_ZN11alglib_impl12spline2dcalcEPNS_19spline2dinterpolantEddPNS_8ae_stateE(ptr noundef nonnull %11, double noundef %910, double noundef %907, ptr noundef %1)
  store double %911, ptr %28, align 8, !tbaa !10
  %912 = load ptr, ptr %53, align 8, !tbaa !9
  %913 = getelementptr inbounds ptr, ptr %912, i64 %.15647838.1
  %914 = load ptr, ptr %913, align 8, !tbaa !18
  %915 = getelementptr inbounds double, ptr %914, i64 %.12631835.1
  %916 = load double, ptr %915, align 8, !tbaa !10
  store double %916, ptr %32, align 8, !tbaa !10
  %917 = fsub double %911, %916
  %918 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %917, ptr noundef %1)
  %919 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.15836.1, double noundef %918, ptr noundef %1)
  %920 = load double, ptr %28, align 8, !tbaa !10
  %921 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %920, ptr noundef %1)
  %922 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.1589837.1, double noundef %921, ptr noundef %1)
  %923 = add nuw nsw i64 %.12631835.1, 1
  %exitcond922.1.not = icmp eq i64 %923, %.0610849
  br i1 %exitcond922.1.not, label %924, label %908, !llvm.loop !47

924:                                              ; preds = %908
  %925 = add nuw nsw i64 %.15647838.1, 1
  %exitcond923.1.not = icmp eq i64 %925, %.0609852
  br i1 %exitcond923.1.not, label %926, label %.preheader.1, !llvm.loop !48

926:                                              ; preds = %924
  br i1 %.4659845, label %930, label %927

927:                                              ; preds = %926
  %928 = fdiv double %919, %922
  %929 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %928, double noundef 0x3D95FD7FE1796496)
  br label %930

930:                                              ; preds = %926, %927
  %931 = phi i1 [ true, %926 ], [ %929, %927 ]
  %932 = add nuw nsw i64 %.1663844, 1
  %exitcond924.not = icmp eq i64 %932, 11
  br i1 %exitcond924.not, label %933, label %879, !llvm.loop !49

933:                                              ; preds = %930
  %934 = add nuw nsw i64 %.0610849, 1
  %exitcond925.not = icmp eq i64 %934, 7
  br i1 %exitcond925.not, label %935, label %.preheader723, !llvm.loop !50

935:                                              ; preds = %933
  %936 = add nuw nsw i64 %.0609852, 1
  %exitcond926.not = icmp eq i64 %936, 7
  br i1 %exitcond926.not, label %937, label %.preheader724, !llvm.loop !51

937:                                              ; preds = %935
  %938 = add nuw nsw i64 %.1617855, 1
  %exitcond927.not = icmp eq i64 %938, 7
  br i1 %exitcond927.not, label %939, label %797, !llvm.loop !52

939:                                              ; preds = %937
  %940 = add nuw nsw i64 %.1615858, 1
  %exitcond928.not = icmp eq i64 %940, 7
  br i1 %exitcond928.not, label %941, label %.preheader729, !llvm.loop !53

941:                                              ; preds = %939
  %942 = call noundef zeroext i1 @_ZL31testspline2dunit_testspline2dvfbPN11alglib_impl8ae_stateE(i1 noundef zeroext true, ptr noundef %1)
  %brmerge961 = or i1 %354, %.3.in
  %brmerge962 = or i1 %brmerge961, %494
  %brmerge963 = or i1 %brmerge962, %560
  br i1 %brmerge963, label %960, label %943

943:                                              ; preds = %941
  %944 = load i8, ptr %4, align 1, !tbaa !5, !range !54, !noundef !55
  %945 = trunc nuw i8 %944 to i1
  %brmerge964 = or i1 %499, %945
  %brmerge965 = or i1 %brmerge964, %506
  br i1 %brmerge965, label %960, label %946

946:                                              ; preds = %943
  %brmerge = or i1 %942, %931
  %947 = or i1 %905, %brmerge
  %or.cond720 = or i1 %947, %783
  br i1 %or.cond720, label %960, label %948

948:                                              ; preds = %946
  %949 = load i8, ptr %8, align 1, !tbaa !5, !range !54, !noundef !55
  %950 = trunc nuw i8 %949 to i1
  br i1 %950, label %960, label %951

951:                                              ; preds = %948
  %952 = load i8, ptr %7, align 1, !tbaa !5, !range !54, !noundef !55
  %953 = trunc nuw i8 %952 to i1
  br i1 %953, label %960, label %954

954:                                              ; preds = %951
  %955 = load i8, ptr %6, align 1, !tbaa !5, !range !54, !noundef !55
  %956 = trunc nuw i8 %955 to i1
  br i1 %956, label %960, label %957

957:                                              ; preds = %954
  %958 = load i8, ptr %5, align 1, !tbaa !5, !range !54, !noundef !55
  %959 = trunc nuw i8 %958 to i1
  br label %960

960:                                              ; preds = %943, %941, %957, %954, %951, %948, %946
  %961 = phi i1 [ true, %954 ], [ true, %951 ], [ true, %948 ], [ true, %946 ], [ true, %943 ], [ true, %941 ], [ %959, %957 ]
  br i1 %0, label %1009, label %962

962:                                              ; preds = %960
  %963 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.655)
  %964 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.618)
  %965 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.656)
  %.str.7..str.6 = select i1 %354, ptr @.str.7, ptr @.str.6
  %966 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.7..str.6)
  %967 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.657)
  %.str.6.sink966 = select i1 %.3.in, ptr @.str.7, ptr @.str.6
  %968 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink966)
  %969 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.658)
  %.str.6.sink967 = select i1 %494, ptr @.str.7, ptr @.str.6
  %970 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink967)
  %971 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.659)
  %.str.6.sink968 = select i1 %560, ptr @.str.7, ptr @.str.6
  %972 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink968)
  %973 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.660)
  %974 = load i8, ptr %4, align 1, !tbaa !5, !range !54, !noundef !55
  %975 = trunc nuw i8 %974 to i1
  %.str.6.sink969 = select i1 %975, ptr @.str.7, ptr @.str.6
  %976 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink969)
  %977 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.661)
  %.str.6.sink970 = select i1 %499, ptr @.str.7, ptr @.str.6
  %978 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink970)
  %979 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.662)
  %.str.6.sink971 = select i1 %506, ptr @.str.7, ptr @.str.6
  %980 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink971)
  %981 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.663)
  %.str.6.sink972 = select i1 %783, ptr @.str.7, ptr @.str.6
  %982 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink972)
  %983 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.664)
  %.str.6.sink973 = select i1 %942, ptr @.str.7, ptr @.str.6
  %984 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink973)
  %985 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.665)
  %986 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.666)
  %987 = load i8, ptr %8, align 1, !tbaa !5, !range !54, !noundef !55
  %988 = trunc nuw i8 %987 to i1
  %.str.6.sink974 = select i1 %988, ptr @.str.7, ptr @.str.6
  %989 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink974)
  %990 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.667)
  %991 = load i8, ptr %7, align 1, !tbaa !5, !range !54, !noundef !55
  %992 = trunc nuw i8 %991 to i1
  %.str.6.sink975 = select i1 %992, ptr @.str.7, ptr @.str.6
  %993 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink975)
  %994 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.668)
  %995 = load i8, ptr %6, align 1, !tbaa !5, !range !54, !noundef !55
  %996 = trunc nuw i8 %995 to i1
  %.str.6.sink976 = select i1 %996, ptr @.str.7, ptr @.str.6
  %997 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink976)
  %998 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.669)
  %999 = load i8, ptr %5, align 1, !tbaa !5, !range !54, !noundef !55
  %1000 = trunc nuw i8 %999 to i1
  %.str.6.sink977 = select i1 %1000, ptr @.str.7, ptr @.str.6
  %1001 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink977)
  %1002 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.670)
  %1003 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.656)
  %.str.6.sink978 = select i1 %905, ptr @.str.7, ptr @.str.6
  %1004 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink978)
  %1005 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.657)
  %.str.6.sink979 = select i1 %931, ptr @.str.7, ptr @.str.6
  %1006 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink979)
  %.str.2.sink = select i1 %961, ptr @.str.1, ptr @.str.2
  %1007 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.2.sink)
  %1008 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3)
  br label %1009

1009:                                             ; preds = %962, %960
  %1010 = xor i1 %961, true
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %18) #6
  call void @llvm.lifetime.end.p0(i64 80, 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 64, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 224, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 224, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 64, 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 %1010
}

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

; 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_impl22spline2dbuildbilinearvEPNS_9ae_vectorElS1_lS1_lPNS_19spline2dinterpolantEPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL23testspline2dunit_lconstPN11alglib_impl19spline2dinterpolantEPNS_9ae_vectorES3_lldPdS4_S4_S4_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) local_unnamed_addr #5

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL27testspline2dunit_testunpackPN11alglib_impl19spline2dinterpolantEPNS_9ae_vectorES3_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_testlintransPN11alglib_impl19spline2dinterpolantElddddPNS_8ae_stateE(ptr noundef, i64 noundef, double noundef, double noundef, double noundef, double noundef, ptr noundef) local_unnamed_addr #5

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

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

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

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

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

declare void @_ZN11alglib_impl18ae_serializer_initEPNS_13ae_serializerE(ptr noundef) local_unnamed_addr #1

declare void @_ZN11alglib_impl25ae_serializer_alloc_startEPNS_13ae_serializerE(ptr noundef) local_unnamed_addr #1

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

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

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

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

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

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

declare void @_ZN11alglib_impl19ae_serializer_clearEPNS_13ae_serializerE(ptr noundef) local_unnamed_addr #1

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

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

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

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

; 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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #3 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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}
!26 = distinct !{!26, !13}
!27 = distinct !{!27, !13}
!28 = distinct !{!28, !13}
!29 = distinct !{!29, !13}
!30 = distinct !{!30, !13}
!31 = distinct !{!31, !13}
!32 = distinct !{!32, !13}
!33 = distinct !{!33, !13}
!34 = distinct !{!34, !13}
!35 = !{!36, !19, i64 16}
!36 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !19, i64 0, !19, i64 8, !19, i64 16, !19, i64 24}
!37 = distinct !{!37, !13}
!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 = distinct !{!52, !13}
!53 = distinct !{!53, !13}
!54 = !{i8 0, i8 2}
!55 = !{}


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