; LLVM IR from Dimandragon/non-parametric-dsp :: alglib-cpp/tests/test_c.ll (Z9testtsortbPN11alglib_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 }

@.str.15 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [17 x i8], align 1

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

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

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

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

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

declare void @_ZN11alglib_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 noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef, ptr noundef) #1

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

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

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

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) #1

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

64:                                               ; preds = %1568, %2
  %65 = load i64, ptr %7, align 8, !tbaa !11
  %66 = load i64, ptr %13, align 8, !tbaa !11
  %67 = icmp sle i64 %65, %66
  br i1 %67, label %68, label %1571

68:                                               ; preds = %64
  store i64 1, ptr %11, align 8, !tbaa !11
  br label %69

69:                                               ; preds = %1564, %68
  %70 = load i64, ptr %11, align 8, !tbaa !11
  %71 = load i64, ptr %12, align 8, !tbaa !11
  %72 = icmp sle i64 %70, %71
  br i1 %72, label %73, label %1567

73:                                               ; preds = %69
  %74 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL22testtsortunit_unset1diPN11alglib_impl9ae_vectorEPNS_8ae_stateE(ptr noundef %32, ptr noundef %74)
  %75 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL22testtsortunit_unset1diPN11alglib_impl9ae_vectorEPNS_8ae_stateE(ptr noundef %33, ptr noundef %75)
  %76 = load i64, ptr %7, align 8, !tbaa !11
  %77 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %14, i64 noundef %76, ptr noundef %77)
  %78 = load i64, ptr %7, align 8, !tbaa !11
  %79 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %15, i64 noundef %78, ptr noundef %79)
  %80 = load i64, ptr %7, align 8, !tbaa !11
  %81 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %16, i64 noundef %80, ptr noundef %81)
  %82 = load i64, ptr %7, align 8, !tbaa !11
  %83 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %17, i64 noundef %82, ptr noundef %83)
  %84 = load i64, ptr %7, align 8, !tbaa !11
  %85 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %18, i64 noundef %84, ptr noundef %85)
  %86 = load i64, ptr %7, align 8, !tbaa !11
  %87 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %22, i64 noundef %86, ptr noundef %87)
  %88 = load i64, ptr %7, align 8, !tbaa !11
  %89 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %23, i64 noundef %88, ptr noundef %89)
  %90 = load i64, ptr %7, align 8, !tbaa !11
  %91 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %24, i64 noundef %90, ptr noundef %91)
  %92 = load i64, ptr %7, align 8, !tbaa !11
  %93 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %25, i64 noundef %92, ptr noundef %93)
  %94 = load i64, ptr %7, align 8, !tbaa !11
  %95 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %27, i64 noundef %94, ptr noundef %95)
  %96 = load i64, ptr %7, align 8, !tbaa !11
  %97 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %28, i64 noundef %96, ptr noundef %97)
  %98 = load i64, ptr %7, align 8, !tbaa !11
  %99 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %29, i64 noundef %98, ptr noundef %99)
  %100 = load i64, ptr %7, align 8, !tbaa !11
  %101 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %30, i64 noundef %100, ptr noundef %101)
  %102 = load i64, ptr %7, align 8, !tbaa !11
  %103 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %31, i64 noundef %102, ptr noundef %103)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %104

104:                                              ; preds = %222, %73
  %105 = load i64, ptr %8, align 8, !tbaa !11
  %106 = load i64, ptr %7, align 8, !tbaa !11
  %107 = sub nsw i64 %106, 1
  %108 = icmp sle i64 %105, %107
  br i1 %108, label %109, label %225

109:                                              ; preds = %104
  %110 = load ptr, ptr %4, align 8, !tbaa !9
  %111 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 100000000, ptr noundef %110)
  %112 = sitofp i64 %111 to double
  %113 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %114 = load ptr, ptr %113, align 8, !tbaa !13
  %115 = load i64, ptr %8, align 8, !tbaa !11
  %116 = getelementptr inbounds double, ptr %114, i64 %115
  store double %112, ptr %116, align 8, !tbaa !14
  %117 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %118 = load ptr, ptr %117, align 8, !tbaa !13
  %119 = load i64, ptr %8, align 8, !tbaa !11
  %120 = getelementptr inbounds double, ptr %118, i64 %119
  %121 = load double, ptr %120, align 8, !tbaa !14
  %122 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %123 = load ptr, ptr %122, align 8, !tbaa !13
  %124 = load i64, ptr %8, align 8, !tbaa !11
  %125 = getelementptr inbounds double, ptr %123, i64 %124
  store double %121, ptr %125, align 8, !tbaa !14
  %126 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %127 = load ptr, ptr %126, align 8, !tbaa !13
  %128 = load i64, ptr %8, align 8, !tbaa !11
  %129 = getelementptr inbounds double, ptr %127, i64 %128
  %130 = load double, ptr %129, align 8, !tbaa !14
  %131 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %132 = load ptr, ptr %131, align 8, !tbaa !13
  %133 = load i64, ptr %8, align 8, !tbaa !11
  %134 = getelementptr inbounds double, ptr %132, i64 %133
  store double %130, ptr %134, align 8, !tbaa !14
  %135 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %136 = load ptr, ptr %135, align 8, !tbaa !13
  %137 = load i64, ptr %8, align 8, !tbaa !11
  %138 = getelementptr inbounds double, ptr %136, i64 %137
  %139 = load double, ptr %138, align 8, !tbaa !14
  %140 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %141 = load ptr, ptr %140, align 8, !tbaa !13
  %142 = load i64, ptr %8, align 8, !tbaa !11
  %143 = getelementptr inbounds double, ptr %141, i64 %142
  store double %139, ptr %143, align 8, !tbaa !14
  %144 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %145 = load ptr, ptr %144, align 8, !tbaa !13
  %146 = load i64, ptr %8, align 8, !tbaa !11
  %147 = getelementptr inbounds double, ptr %145, i64 %146
  %148 = load double, ptr %147, align 8, !tbaa !14
  %149 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %150 = load ptr, ptr %149, align 8, !tbaa !13
  %151 = load i64, ptr %8, align 8, !tbaa !11
  %152 = getelementptr inbounds double, ptr %150, i64 %151
  store double %148, ptr %152, align 8, !tbaa !14
  %153 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %154 = load ptr, ptr %153, align 8, !tbaa !13
  %155 = load i64, ptr %8, align 8, !tbaa !11
  %156 = getelementptr inbounds double, ptr %154, i64 %155
  %157 = load double, ptr %156, align 8, !tbaa !14
  %158 = load ptr, ptr %4, align 8, !tbaa !9
  %159 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %157, ptr noundef %158)
  %160 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %22, i32 0, i32 4
  %161 = load ptr, ptr %160, align 8, !tbaa !13
  %162 = load i64, ptr %8, align 8, !tbaa !11
  %163 = getelementptr inbounds i64, ptr %161, i64 %162
  store i64 %159, ptr %163, align 8, !tbaa !11
  %164 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %165 = load ptr, ptr %164, align 8, !tbaa !13
  %166 = load i64, ptr %8, align 8, !tbaa !11
  %167 = getelementptr inbounds double, ptr %165, i64 %166
  %168 = load double, ptr %167, align 8, !tbaa !14
  %169 = load ptr, ptr %4, align 8, !tbaa !9
  %170 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %168, ptr noundef %169)
  %171 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %23, i32 0, i32 4
  %172 = load ptr, ptr %171, align 8, !tbaa !13
  %173 = load i64, ptr %8, align 8, !tbaa !11
  %174 = getelementptr inbounds i64, ptr %172, i64 %173
  store i64 %170, ptr %174, align 8, !tbaa !11
  %175 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %176 = load ptr, ptr %175, align 8, !tbaa !13
  %177 = load i64, ptr %8, align 8, !tbaa !11
  %178 = getelementptr inbounds double, ptr %176, i64 %177
  %179 = load double, ptr %178, align 8, !tbaa !14
  %180 = load ptr, ptr %4, align 8, !tbaa !9
  %181 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %179, ptr noundef %180)
  %182 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %24, i32 0, i32 4
  %183 = load ptr, ptr %182, align 8, !tbaa !13
  %184 = load i64, ptr %8, align 8, !tbaa !11
  %185 = getelementptr inbounds i64, ptr %183, i64 %184
  store i64 %181, ptr %185, align 8, !tbaa !11
  %186 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %187 = load ptr, ptr %186, align 8, !tbaa !13
  %188 = load i64, ptr %8, align 8, !tbaa !11
  %189 = getelementptr inbounds double, ptr %187, i64 %188
  %190 = load double, ptr %189, align 8, !tbaa !14
  %191 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %25, i32 0, i32 4
  %192 = load ptr, ptr %191, align 8, !tbaa !13
  %193 = load i64, ptr %8, align 8, !tbaa !11
  %194 = getelementptr inbounds double, ptr %192, i64 %193
  store double %190, ptr %194, align 8, !tbaa !14
  %195 = load i64, ptr %8, align 8, !tbaa !11
  %196 = sitofp i64 %195 to double
  %197 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %198 = load ptr, ptr %197, align 8, !tbaa !13
  %199 = load i64, ptr %8, align 8, !tbaa !11
  %200 = getelementptr inbounds double, ptr %198, i64 %199
  store double %196, ptr %200, align 8, !tbaa !14
  %201 = load i64, ptr %8, align 8, !tbaa !11
  %202 = sitofp i64 %201 to double
  %203 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %204 = load ptr, ptr %203, align 8, !tbaa !13
  %205 = load i64, ptr %8, align 8, !tbaa !11
  %206 = getelementptr inbounds double, ptr %204, i64 %205
  store double %202, ptr %206, align 8, !tbaa !14
  %207 = load i64, ptr %8, align 8, !tbaa !11
  %208 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %209 = load ptr, ptr %208, align 8, !tbaa !13
  %210 = load i64, ptr %8, align 8, !tbaa !11
  %211 = getelementptr inbounds i64, ptr %209, i64 %210
  store i64 %207, ptr %211, align 8, !tbaa !11
  %212 = load i64, ptr %8, align 8, !tbaa !11
  %213 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %30, i32 0, i32 4
  %214 = load ptr, ptr %213, align 8, !tbaa !13
  %215 = load i64, ptr %8, align 8, !tbaa !11
  %216 = getelementptr inbounds i64, ptr %214, i64 %215
  store i64 %212, ptr %216, align 8, !tbaa !11
  %217 = load i64, ptr %8, align 8, !tbaa !11
  %218 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %31, i32 0, i32 4
  %219 = load ptr, ptr %218, align 8, !tbaa !13
  %220 = load i64, ptr %8, align 8, !tbaa !11
  %221 = getelementptr inbounds i64, ptr %219, i64 %220
  store i64 %217, ptr %221, align 8, !tbaa !11
  br label %222

222:                                              ; preds = %109
  %223 = load i64, ptr %8, align 8, !tbaa !11
  %224 = add nsw i64 %223, 1
  store i64 %224, ptr %8, align 8, !tbaa !11
  br label %104, !llvm.loop !16

225:                                              ; preds = %104
  %226 = load i64, ptr %7, align 8, !tbaa !11
  %227 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl7tagsortEPNS_9ae_vectorElS1_S1_PNS_8ae_stateE(ptr noundef %15, i64 noundef %226, ptr noundef %32, ptr noundef %33, ptr noundef %227)
  %228 = load i64, ptr %7, align 8, !tbaa !11
  %229 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL29testtsortunit_testsortresultsPKN11alglib_impl9ae_vectorES2_S2_S2_lPbPNS_8ae_stateE(ptr noundef %15, ptr noundef %32, ptr noundef %33, ptr noundef %14, i64 noundef %228, ptr noundef %6, ptr noundef %229)
  store i8 1, ptr %37, align 1, !tbaa !5
  store i64 1, ptr %8, align 8, !tbaa !11
  br label %230

230:                                              ; preds = %254, %225
  %231 = load i64, ptr %8, align 8, !tbaa !11
  %232 = load i64, ptr %7, align 8, !tbaa !11
  %233 = sub nsw i64 %232, 1
  %234 = icmp sle i64 %231, %233
  br i1 %234, label %235, label %257

235:                                              ; preds = %230
  %236 = load i8, ptr %37, align 1, !tbaa !5, !range !18, !noundef !19
  %237 = trunc i8 %236 to i1
  br i1 %237, label %238, label %251

238:                                              ; preds = %235
  %239 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %240 = load ptr, ptr %239, align 8, !tbaa !13
  %241 = load i64, ptr %8, align 8, !tbaa !11
  %242 = getelementptr inbounds double, ptr %240, i64 %241
  %243 = load double, ptr %242, align 8, !tbaa !14
  %244 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %245 = load ptr, ptr %244, align 8, !tbaa !13
  %246 = load i64, ptr %8, align 8, !tbaa !11
  %247 = sub nsw i64 %246, 1
  %248 = getelementptr inbounds double, ptr %245, i64 %247
  %249 = load double, ptr %248, align 8, !tbaa !14
  %250 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %243, double noundef %249)
  br label %251

251:                                              ; preds = %238, %235
  %252 = phi i1 [ false, %235 ], [ %250, %238 ]
  %253 = zext i1 %252 to i8
  store i8 %253, ptr %37, align 1, !tbaa !5
  br label %254

254:                                              ; preds = %251
  %255 = load i64, ptr %8, align 8, !tbaa !11
  %256 = add nsw i64 %255, 1
  store i64 %256, ptr %8, align 8, !tbaa !11
  br label %230, !llvm.loop !20

257:                                              ; preds = %230
  %258 = load i8, ptr %37, align 1, !tbaa !5, !range !18, !noundef !19
  %259 = trunc i8 %258 to i1
  br i1 %259, label %260, label %521

260:                                              ; preds = %257
  %261 = load i64, ptr %7, align 8, !tbaa !11
  %262 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12tagsortfastiEPNS_9ae_vectorES1_S1_S1_lPNS_8ae_stateE(ptr noundef %16, ptr noundef %29, ptr noundef %34, ptr noundef %36, i64 noundef %261, ptr noundef %262)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %263

263:                                              ; preds = %298, %260
  %264 = load i64, ptr %8, align 8, !tbaa !11
  %265 = load i64, ptr %7, align 8, !tbaa !11
  %266 = sub nsw i64 %265, 1
  %267 = icmp sle i64 %264, %266
  br i1 %267, label %268, label %301

268:                                              ; preds = %263
  %269 = load i8, ptr %6, align 1, !tbaa !5, !range !18, !noundef !19
  %270 = trunc i8 %269 to i1
  br i1 %270, label %295, label %271

271:                                              ; preds = %268
  %272 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %273 = load ptr, ptr %272, align 8, !tbaa !13
  %274 = load i64, ptr %8, align 8, !tbaa !11
  %275 = getelementptr inbounds double, ptr %273, i64 %274
  %276 = load double, ptr %275, align 8, !tbaa !14
  %277 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %278 = load ptr, ptr %277, align 8, !tbaa !13
  %279 = load i64, ptr %8, align 8, !tbaa !11
  %280 = getelementptr inbounds double, ptr %278, i64 %279
  %281 = load double, ptr %280, align 8, !tbaa !14
  %282 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %276, double noundef %281)
  br i1 %282, label %295, label %283

283:                                              ; preds = %271
  %284 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %285 = load ptr, ptr %284, align 8, !tbaa !13
  %286 = load i64, ptr %8, align 8, !tbaa !11
  %287 = getelementptr inbounds i64, ptr %285, i64 %286
  %288 = load i64, ptr %287, align 8, !tbaa !11
  %289 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %32, i32 0, i32 4
  %290 = load ptr, ptr %289, align 8, !tbaa !13
  %291 = load i64, ptr %8, align 8, !tbaa !11
  %292 = getelementptr inbounds i64, ptr %290, i64 %291
  %293 = load i64, ptr %292, align 8, !tbaa !11
  %294 = icmp ne i64 %288, %293
  br label %295

295:                                              ; preds = %283, %271, %268
  %296 = phi i1 [ true, %271 ], [ true, %268 ], [ %294, %283 ]
  %297 = zext i1 %296 to i8
  store i8 %297, ptr %6, align 1, !tbaa !5
  br label %298

298:                                              ; preds = %295
  %299 = load i64, ptr %8, align 8, !tbaa !11
  %300 = add nsw i64 %299, 1
  store i64 %300, ptr %8, align 8, !tbaa !11
  br label %263, !llvm.loop !21

301:                                              ; preds = %263
  %302 = load i64, ptr %7, align 8, !tbaa !11
  %303 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12tagsortfastrEPNS_9ae_vectorES1_S1_S1_lPNS_8ae_stateE(ptr noundef %17, ptr noundef %27, ptr noundef %34, ptr noundef %35, i64 noundef %302, ptr noundef %303)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %304

304:                                              ; preds = %340, %301
  %305 = load i64, ptr %8, align 8, !tbaa !11
  %306 = load i64, ptr %7, align 8, !tbaa !11
  %307 = sub nsw i64 %306, 1
  %308 = icmp sle i64 %305, %307
  br i1 %308, label %309, label %343

309:                                              ; preds = %304
  %310 = load i8, ptr %6, align 1, !tbaa !5, !range !18, !noundef !19
  %311 = trunc i8 %310 to i1
  br i1 %311, label %337, label %312

312:                                              ; preds = %309
  %313 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %314 = load ptr, ptr %313, align 8, !tbaa !13
  %315 = load i64, ptr %8, align 8, !tbaa !11
  %316 = getelementptr inbounds double, ptr %314, i64 %315
  %317 = load double, ptr %316, align 8, !tbaa !14
  %318 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %319 = load ptr, ptr %318, align 8, !tbaa !13
  %320 = load i64, ptr %8, align 8, !tbaa !11
  %321 = getelementptr inbounds double, ptr %319, i64 %320
  %322 = load double, ptr %321, align 8, !tbaa !14
  %323 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %317, double noundef %322)
  br i1 %323, label %337, label %324

324:                                              ; preds = %312
  %325 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %326 = load ptr, ptr %325, align 8, !tbaa !13
  %327 = load i64, ptr %8, align 8, !tbaa !11
  %328 = getelementptr inbounds double, ptr %326, i64 %327
  %329 = load double, ptr %328, align 8, !tbaa !14
  %330 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %32, i32 0, i32 4
  %331 = load ptr, ptr %330, align 8, !tbaa !13
  %332 = load i64, ptr %8, align 8, !tbaa !11
  %333 = getelementptr inbounds i64, ptr %331, i64 %332
  %334 = load i64, ptr %333, align 8, !tbaa !11
  %335 = sitofp i64 %334 to double
  %336 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %329, double noundef %335)
  br label %337

337:                                              ; preds = %324, %312, %309
  %338 = phi i1 [ true, %312 ], [ true, %309 ], [ %336, %324 ]
  %339 = zext i1 %338 to i8
  store i8 %339, ptr %6, align 1, !tbaa !5
  br label %340

340:                                              ; preds = %337
  %341 = load i64, ptr %8, align 8, !tbaa !11
  %342 = add nsw i64 %341, 1
  store i64 %342, ptr %8, align 8, !tbaa !11
  br label %304, !llvm.loop !22

343:                                              ; preds = %304
  %344 = load i64, ptr %7, align 8, !tbaa !11
  %345 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11tagsortfastEPNS_9ae_vectorES1_lPNS_8ae_stateE(ptr noundef %18, ptr noundef %34, i64 noundef %344, ptr noundef %345)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %346

346:                                              ; preds = %369, %343
  %347 = load i64, ptr %8, align 8, !tbaa !11
  %348 = load i64, ptr %7, align 8, !tbaa !11
  %349 = sub nsw i64 %348, 1
  %350 = icmp sle i64 %347, %349
  br i1 %350, label %351, label %372

351:                                              ; preds = %346
  %352 = load i8, ptr %6, align 1, !tbaa !5, !range !18, !noundef !19
  %353 = trunc i8 %352 to i1
  br i1 %353, label %366, label %354

354:                                              ; preds = %351
  %355 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %356 = load ptr, ptr %355, align 8, !tbaa !13
  %357 = load i64, ptr %8, align 8, !tbaa !11
  %358 = getelementptr inbounds double, ptr %356, i64 %357
  %359 = load double, ptr %358, align 8, !tbaa !14
  %360 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %361 = load ptr, ptr %360, align 8, !tbaa !13
  %362 = load i64, ptr %8, align 8, !tbaa !11
  %363 = getelementptr inbounds double, ptr %361, i64 %362
  %364 = load double, ptr %363, align 8, !tbaa !14
  %365 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %359, double noundef %364)
  br label %366

366:                                              ; preds = %354, %351
  %367 = phi i1 [ true, %351 ], [ %365, %354 ]
  %368 = zext i1 %367 to i8
  store i8 %368, ptr %6, align 1, !tbaa !5
  br label %369

369:                                              ; preds = %366
  %370 = load i64, ptr %8, align 8, !tbaa !11
  %371 = add nsw i64 %370, 1
  store i64 %371, ptr %8, align 8, !tbaa !11
  br label %346, !llvm.loop !23

372:                                              ; preds = %346
  %373 = load i64, ptr %7, align 8, !tbaa !11
  %374 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15tagsortmiddleirEPNS_9ae_vectorES1_llPNS_8ae_stateE(ptr noundef %22, ptr noundef %28, i64 noundef 0, i64 noundef %373, ptr noundef %374)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %375

375:                                              ; preds = %412, %372
  %376 = load i64, ptr %8, align 8, !tbaa !11
  %377 = load i64, ptr %7, align 8, !tbaa !11
  %378 = sub nsw i64 %377, 1
  %379 = icmp sle i64 %376, %378
  br i1 %379, label %380, label %415

380:                                              ; preds = %375
  %381 = load i8, ptr %6, align 1, !tbaa !5, !range !18, !noundef !19
  %382 = trunc i8 %381 to i1
  br i1 %382, label %409, label %383

383:                                              ; preds = %380
  %384 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %22, i32 0, i32 4
  %385 = load ptr, ptr %384, align 8, !tbaa !13
  %386 = load i64, ptr %8, align 8, !tbaa !11
  %387 = getelementptr inbounds i64, ptr %385, i64 %386
  %388 = load i64, ptr %387, align 8, !tbaa !11
  %389 = sitofp i64 %388 to double
  %390 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %391 = load ptr, ptr %390, align 8, !tbaa !13
  %392 = load i64, ptr %8, align 8, !tbaa !11
  %393 = getelementptr inbounds double, ptr %391, i64 %392
  %394 = load double, ptr %393, align 8, !tbaa !14
  %395 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %389, double noundef %394)
  br i1 %395, label %409, label %396

396:                                              ; preds = %383
  %397 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %398 = load ptr, ptr %397, align 8, !tbaa !13
  %399 = load i64, ptr %8, align 8, !tbaa !11
  %400 = getelementptr inbounds double, ptr %398, i64 %399
  %401 = load double, ptr %400, align 8, !tbaa !14
  %402 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %32, i32 0, i32 4
  %403 = load ptr, ptr %402, align 8, !tbaa !13
  %404 = load i64, ptr %8, align 8, !tbaa !11
  %405 = getelementptr inbounds i64, ptr %403, i64 %404
  %406 = load i64, ptr %405, align 8, !tbaa !11
  %407 = sitofp i64 %406 to double
  %408 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %401, double noundef %407)
  br label %409

409:                                              ; preds = %396, %383, %380
  %410 = phi i1 [ true, %383 ], [ true, %380 ], [ %408, %396 ]
  %411 = zext i1 %410 to i8
  store i8 %411, ptr %6, align 1, !tbaa !5
  br label %412

412:                                              ; preds = %409
  %413 = load i64, ptr %8, align 8, !tbaa !11
  %414 = add nsw i64 %413, 1
  store i64 %414, ptr %8, align 8, !tbaa !11
  br label %375, !llvm.loop !24

415:                                              ; preds = %375
  %416 = load i64, ptr %7, align 8, !tbaa !11
  %417 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11sortmiddleiEPNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef %23, i64 noundef 0, i64 noundef %416, ptr noundef %417)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %418

418:                                              ; preds = %442, %415
  %419 = load i64, ptr %8, align 8, !tbaa !11
  %420 = load i64, ptr %7, align 8, !tbaa !11
  %421 = sub nsw i64 %420, 1
  %422 = icmp sle i64 %419, %421
  br i1 %422, label %423, label %445

423:                                              ; preds = %418
  %424 = load i8, ptr %6, align 1, !tbaa !5, !range !18, !noundef !19
  %425 = trunc i8 %424 to i1
  br i1 %425, label %439, label %426

426:                                              ; preds = %423
  %427 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %23, i32 0, i32 4
  %428 = load ptr, ptr %427, align 8, !tbaa !13
  %429 = load i64, ptr %8, align 8, !tbaa !11
  %430 = getelementptr inbounds i64, ptr %428, i64 %429
  %431 = load i64, ptr %430, align 8, !tbaa !11
  %432 = sitofp i64 %431 to double
  %433 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %434 = load ptr, ptr %433, align 8, !tbaa !13
  %435 = load i64, ptr %8, align 8, !tbaa !11
  %436 = getelementptr inbounds double, ptr %434, i64 %435
  %437 = load double, ptr %436, align 8, !tbaa !14
  %438 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %432, double noundef %437)
  br label %439

439:                                              ; preds = %426, %423
  %440 = phi i1 [ true, %423 ], [ %438, %426 ]
  %441 = zext i1 %440 to i8
  store i8 %441, ptr %6, align 1, !tbaa !5
  br label %442

442:                                              ; preds = %439
  %443 = load i64, ptr %8, align 8, !tbaa !11
  %444 = add nsw i64 %443, 1
  store i64 %444, ptr %8, align 8, !tbaa !11
  br label %418, !llvm.loop !25

445:                                              ; preds = %418
  %446 = load i64, ptr %7, align 8, !tbaa !11
  %447 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15tagsortmiddleiiEPNS_9ae_vectorES1_llPNS_8ae_stateE(ptr noundef %24, ptr noundef %30, i64 noundef 0, i64 noundef %446, ptr noundef %447)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %448

448:                                              ; preds = %480, %445
  %449 = load i64, ptr %8, align 8, !tbaa !11
  %450 = load i64, ptr %7, align 8, !tbaa !11
  %451 = sub nsw i64 %450, 1
  %452 = icmp sle i64 %449, %451
  br i1 %452, label %453, label %483

453:                                              ; preds = %448
  %454 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %24, i32 0, i32 4
  %455 = load ptr, ptr %454, align 8, !tbaa !13
  %456 = load i64, ptr %8, align 8, !tbaa !11
  %457 = getelementptr inbounds i64, ptr %455, i64 %456
  %458 = load i64, ptr %457, align 8, !tbaa !11
  %459 = sitofp i64 %458 to double
  %460 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %461 = load ptr, ptr %460, align 8, !tbaa !13
  %462 = load i64, ptr %8, align 8, !tbaa !11
  %463 = getelementptr inbounds double, ptr %461, i64 %462
  %464 = load double, ptr %463, align 8, !tbaa !14
  %465 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %459, double noundef %464)
  br i1 %465, label %478, label %466

466:                                              ; preds = %453
  %467 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %30, i32 0, i32 4
  %468 = load ptr, ptr %467, align 8, !tbaa !13
  %469 = load i64, ptr %8, align 8, !tbaa !11
  %470 = getelementptr inbounds i64, ptr %468, i64 %469
  %471 = load i64, ptr %470, align 8, !tbaa !11
  %472 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %32, i32 0, i32 4
  %473 = load ptr, ptr %472, align 8, !tbaa !13
  %474 = load i64, ptr %8, align 8, !tbaa !11
  %475 = getelementptr inbounds i64, ptr %473, i64 %474
  %476 = load i64, ptr %475, align 8, !tbaa !11
  %477 = icmp ne i64 %471, %476
  br label %478

478:                                              ; preds = %466, %453
  %479 = phi i1 [ true, %453 ], [ %477, %466 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %6, i1 noundef zeroext %479, ptr noundef @.str.19, i32 noundef 13699, ptr noundef @.str.95)
  br label %480

480:                                              ; preds = %478
  %481 = load i64, ptr %8, align 8, !tbaa !11
  %482 = add nsw i64 %481, 1
  store i64 %482, ptr %8, align 8, !tbaa !11
  br label %448, !llvm.loop !26

483:                                              ; preds = %448
  %484 = load i64, ptr %7, align 8, !tbaa !11
  %485 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15tagsortmiddleriEPNS_9ae_vectorES1_llPNS_8ae_stateE(ptr noundef %25, ptr noundef %31, i64 noundef 0, i64 noundef %484, ptr noundef %485)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %486

486:                                              ; preds = %517, %483
  %487 = load i64, ptr %8, align 8, !tbaa !11
  %488 = load i64, ptr %7, align 8, !tbaa !11
  %489 = sub nsw i64 %488, 1
  %490 = icmp sle i64 %487, %489
  br i1 %490, label %491, label %520

491:                                              ; preds = %486
  %492 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %25, i32 0, i32 4
  %493 = load ptr, ptr %492, align 8, !tbaa !13
  %494 = load i64, ptr %8, align 8, !tbaa !11
  %495 = getelementptr inbounds double, ptr %493, i64 %494
  %496 = load double, ptr %495, align 8, !tbaa !14
  %497 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %498 = load ptr, ptr %497, align 8, !tbaa !13
  %499 = load i64, ptr %8, align 8, !tbaa !11
  %500 = getelementptr inbounds double, ptr %498, i64 %499
  %501 = load double, ptr %500, align 8, !tbaa !14
  %502 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %496, double noundef %501)
  br i1 %502, label %515, label %503

503:                                              ; preds = %491
  %504 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %31, i32 0, i32 4
  %505 = load ptr, ptr %504, align 8, !tbaa !13
  %506 = load i64, ptr %8, align 8, !tbaa !11
  %507 = getelementptr inbounds i64, ptr %505, i64 %506
  %508 = load i64, ptr %507, align 8, !tbaa !11
  %509 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %32, i32 0, i32 4
  %510 = load ptr, ptr %509, align 8, !tbaa !13
  %511 = load i64, ptr %8, align 8, !tbaa !11
  %512 = getelementptr inbounds i64, ptr %510, i64 %511
  %513 = load i64, ptr %512, align 8, !tbaa !11
  %514 = icmp ne i64 %508, %513
  br label %515

515:                                              ; preds = %503, %491
  %516 = phi i1 [ true, %491 ], [ %514, %503 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %6, i1 noundef zeroext %516, ptr noundef @.str.19, i32 noundef 13704, ptr noundef @.str.96)
  br label %517

517:                                              ; preds = %515
  %518 = load i64, ptr %8, align 8, !tbaa !11
  %519 = add nsw i64 %518, 1
  store i64 %519, ptr %8, align 8, !tbaa !11
  br label %486, !llvm.loop !27

520:                                              ; preds = %486
  br label %521

521:                                              ; preds = %520, %257
  %522 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL22testtsortunit_unset1diPN11alglib_impl9ae_vectorEPNS_8ae_stateE(ptr noundef %32, ptr noundef %522)
  %523 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL22testtsortunit_unset1diPN11alglib_impl9ae_vectorEPNS_8ae_stateE(ptr noundef %33, ptr noundef %523)
  %524 = load i64, ptr %7, align 8, !tbaa !11
  %525 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %14, i64 noundef %524, ptr noundef %525)
  %526 = load i64, ptr %7, align 8, !tbaa !11
  %527 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %15, i64 noundef %526, ptr noundef %527)
  %528 = load i64, ptr %7, align 8, !tbaa !11
  %529 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %16, i64 noundef %528, ptr noundef %529)
  %530 = load i64, ptr %7, align 8, !tbaa !11
  %531 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %17, i64 noundef %530, ptr noundef %531)
  %532 = load i64, ptr %7, align 8, !tbaa !11
  %533 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %18, i64 noundef %532, ptr noundef %533)
  %534 = load i64, ptr %7, align 8, !tbaa !11
  %535 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %22, i64 noundef %534, ptr noundef %535)
  %536 = load i64, ptr %7, align 8, !tbaa !11
  %537 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %23, i64 noundef %536, ptr noundef %537)
  %538 = load i64, ptr %7, align 8, !tbaa !11
  %539 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %24, i64 noundef %538, ptr noundef %539)
  %540 = load i64, ptr %7, align 8, !tbaa !11
  %541 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %27, i64 noundef %540, ptr noundef %541)
  %542 = load i64, ptr %7, align 8, !tbaa !11
  %543 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %28, i64 noundef %542, ptr noundef %543)
  %544 = load i64, ptr %7, align 8, !tbaa !11
  %545 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %29, i64 noundef %544, ptr noundef %545)
  %546 = load i64, ptr %7, align 8, !tbaa !11
  %547 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %30, i64 noundef %546, ptr noundef %547)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %548

548:                                              ; preds = %654, %521
  %549 = load i64, ptr %8, align 8, !tbaa !11
  %550 = load i64, ptr %7, align 8, !tbaa !11
  %551 = sub nsw i64 %550, 1
  %552 = icmp sle i64 %549, %551
  br i1 %552, label %553, label %657

553:                                              ; preds = %548
  %554 = load i64, ptr %7, align 8, !tbaa !11
  %555 = load i64, ptr %8, align 8, !tbaa !11
  %556 = sub nsw i64 %554, %555
  %557 = sdiv i64 %556, 2
  %558 = sitofp i64 %557 to double
  %559 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %560 = load ptr, ptr %559, align 8, !tbaa !13
  %561 = load i64, ptr %8, align 8, !tbaa !11
  %562 = getelementptr inbounds double, ptr %560, i64 %561
  store double %558, ptr %562, align 8, !tbaa !14
  %563 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %564 = load ptr, ptr %563, align 8, !tbaa !13
  %565 = load i64, ptr %8, align 8, !tbaa !11
  %566 = getelementptr inbounds double, ptr %564, i64 %565
  %567 = load double, ptr %566, align 8, !tbaa !14
  %568 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %569 = load ptr, ptr %568, align 8, !tbaa !13
  %570 = load i64, ptr %8, align 8, !tbaa !11
  %571 = getelementptr inbounds double, ptr %569, i64 %570
  store double %567, ptr %571, align 8, !tbaa !14
  %572 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %573 = load ptr, ptr %572, align 8, !tbaa !13
  %574 = load i64, ptr %8, align 8, !tbaa !11
  %575 = getelementptr inbounds double, ptr %573, i64 %574
  %576 = load double, ptr %575, align 8, !tbaa !14
  %577 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %578 = load ptr, ptr %577, align 8, !tbaa !13
  %579 = load i64, ptr %8, align 8, !tbaa !11
  %580 = getelementptr inbounds double, ptr %578, i64 %579
  store double %576, ptr %580, align 8, !tbaa !14
  %581 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %582 = load ptr, ptr %581, align 8, !tbaa !13
  %583 = load i64, ptr %8, align 8, !tbaa !11
  %584 = getelementptr inbounds double, ptr %582, i64 %583
  %585 = load double, ptr %584, align 8, !tbaa !14
  %586 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %587 = load ptr, ptr %586, align 8, !tbaa !13
  %588 = load i64, ptr %8, align 8, !tbaa !11
  %589 = getelementptr inbounds double, ptr %587, i64 %588
  store double %585, ptr %589, align 8, !tbaa !14
  %590 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %591 = load ptr, ptr %590, align 8, !tbaa !13
  %592 = load i64, ptr %8, align 8, !tbaa !11
  %593 = getelementptr inbounds double, ptr %591, i64 %592
  %594 = load double, ptr %593, align 8, !tbaa !14
  %595 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %596 = load ptr, ptr %595, align 8, !tbaa !13
  %597 = load i64, ptr %8, align 8, !tbaa !11
  %598 = getelementptr inbounds double, ptr %596, i64 %597
  store double %594, ptr %598, align 8, !tbaa !14
  %599 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %600 = load ptr, ptr %599, align 8, !tbaa !13
  %601 = load i64, ptr %8, align 8, !tbaa !11
  %602 = getelementptr inbounds double, ptr %600, i64 %601
  %603 = load double, ptr %602, align 8, !tbaa !14
  %604 = load ptr, ptr %4, align 8, !tbaa !9
  %605 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %603, ptr noundef %604)
  %606 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %22, i32 0, i32 4
  %607 = load ptr, ptr %606, align 8, !tbaa !13
  %608 = load i64, ptr %8, align 8, !tbaa !11
  %609 = getelementptr inbounds i64, ptr %607, i64 %608
  store i64 %605, ptr %609, align 8, !tbaa !11
  %610 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %611 = load ptr, ptr %610, align 8, !tbaa !13
  %612 = load i64, ptr %8, align 8, !tbaa !11
  %613 = getelementptr inbounds double, ptr %611, i64 %612
  %614 = load double, ptr %613, align 8, !tbaa !14
  %615 = load ptr, ptr %4, align 8, !tbaa !9
  %616 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %614, ptr noundef %615)
  %617 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %23, i32 0, i32 4
  %618 = load ptr, ptr %617, align 8, !tbaa !13
  %619 = load i64, ptr %8, align 8, !tbaa !11
  %620 = getelementptr inbounds i64, ptr %618, i64 %619
  store i64 %616, ptr %620, align 8, !tbaa !11
  %621 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %622 = load ptr, ptr %621, align 8, !tbaa !13
  %623 = load i64, ptr %8, align 8, !tbaa !11
  %624 = getelementptr inbounds double, ptr %622, i64 %623
  %625 = load double, ptr %624, align 8, !tbaa !14
  %626 = load ptr, ptr %4, align 8, !tbaa !9
  %627 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %625, ptr noundef %626)
  %628 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %24, i32 0, i32 4
  %629 = load ptr, ptr %628, align 8, !tbaa !13
  %630 = load i64, ptr %8, align 8, !tbaa !11
  %631 = getelementptr inbounds i64, ptr %629, i64 %630
  store i64 %627, ptr %631, align 8, !tbaa !11
  %632 = load i64, ptr %8, align 8, !tbaa !11
  %633 = sitofp i64 %632 to double
  %634 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %635 = load ptr, ptr %634, align 8, !tbaa !13
  %636 = load i64, ptr %8, align 8, !tbaa !11
  %637 = getelementptr inbounds double, ptr %635, i64 %636
  store double %633, ptr %637, align 8, !tbaa !14
  %638 = load i64, ptr %8, align 8, !tbaa !11
  %639 = sitofp i64 %638 to double
  %640 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %641 = load ptr, ptr %640, align 8, !tbaa !13
  %642 = load i64, ptr %8, align 8, !tbaa !11
  %643 = getelementptr inbounds double, ptr %641, i64 %642
  store double %639, ptr %643, align 8, !tbaa !14
  %644 = load i64, ptr %8, align 8, !tbaa !11
  %645 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %646 = load ptr, ptr %645, align 8, !tbaa !13
  %647 = load i64, ptr %8, align 8, !tbaa !11
  %648 = getelementptr inbounds i64, ptr %646, i64 %647
  store i64 %644, ptr %648, align 8, !tbaa !11
  %649 = load i64, ptr %8, align 8, !tbaa !11
  %650 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %30, i32 0, i32 4
  %651 = load ptr, ptr %650, align 8, !tbaa !13
  %652 = load i64, ptr %8, align 8, !tbaa !11
  %653 = getelementptr inbounds i64, ptr %651, i64 %652
  store i64 %649, ptr %653, align 8, !tbaa !11
  br label %654

654:                                              ; preds = %553
  %655 = load i64, ptr %8, align 8, !tbaa !11
  %656 = add nsw i64 %655, 1
  store i64 %656, ptr %8, align 8, !tbaa !11
  br label %548, !llvm.loop !28

657:                                              ; preds = %548
  %658 = load i64, ptr %7, align 8, !tbaa !11
  %659 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl7tagsortEPNS_9ae_vectorElS1_S1_PNS_8ae_stateE(ptr noundef %15, i64 noundef %658, ptr noundef %32, ptr noundef %33, ptr noundef %659)
  %660 = load i64, ptr %7, align 8, !tbaa !11
  %661 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL29testtsortunit_testsortresultsPKN11alglib_impl9ae_vectorES2_S2_S2_lPbPNS_8ae_stateE(ptr noundef %15, ptr noundef %32, ptr noundef %33, ptr noundef %14, i64 noundef %660, ptr noundef %6, ptr noundef %661)
  %662 = load i64, ptr %7, align 8, !tbaa !11
  %663 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12tagsortfastiEPNS_9ae_vectorES1_S1_S1_lPNS_8ae_stateE(ptr noundef %16, ptr noundef %29, ptr noundef %34, ptr noundef %36, i64 noundef %662, ptr noundef %663)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %664

664:                                              ; preds = %687, %657
  %665 = load i64, ptr %8, align 8, !tbaa !11
  %666 = load i64, ptr %7, align 8, !tbaa !11
  %667 = sub nsw i64 %666, 1
  %668 = icmp sle i64 %665, %667
  br i1 %668, label %669, label %690

669:                                              ; preds = %664
  %670 = load i8, ptr %6, align 1, !tbaa !5, !range !18, !noundef !19
  %671 = trunc i8 %670 to i1
  br i1 %671, label %684, label %672

672:                                              ; preds = %669
  %673 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %674 = load ptr, ptr %673, align 8, !tbaa !13
  %675 = load i64, ptr %8, align 8, !tbaa !11
  %676 = getelementptr inbounds double, ptr %674, i64 %675
  %677 = load double, ptr %676, align 8, !tbaa !14
  %678 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %679 = load ptr, ptr %678, align 8, !tbaa !13
  %680 = load i64, ptr %8, align 8, !tbaa !11
  %681 = getelementptr inbounds double, ptr %679, i64 %680
  %682 = load double, ptr %681, align 8, !tbaa !14
  %683 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %677, double noundef %682)
  br label %684

684:                                              ; preds = %672, %669
  %685 = phi i1 [ true, %669 ], [ %683, %672 ]
  %686 = zext i1 %685 to i8
  store i8 %686, ptr %6, align 1, !tbaa !5
  br label %687

687:                                              ; preds = %684
  %688 = load i64, ptr %8, align 8, !tbaa !11
  %689 = add nsw i64 %688, 1
  store i64 %689, ptr %8, align 8, !tbaa !11
  br label %664, !llvm.loop !29

690:                                              ; preds = %664
  %691 = load i64, ptr %7, align 8, !tbaa !11
  %692 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12tagsortfastrEPNS_9ae_vectorES1_S1_S1_lPNS_8ae_stateE(ptr noundef %17, ptr noundef %27, ptr noundef %34, ptr noundef %35, i64 noundef %691, ptr noundef %692)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %693

693:                                              ; preds = %716, %690
  %694 = load i64, ptr %8, align 8, !tbaa !11
  %695 = load i64, ptr %7, align 8, !tbaa !11
  %696 = sub nsw i64 %695, 1
  %697 = icmp sle i64 %694, %696
  br i1 %697, label %698, label %719

698:                                              ; preds = %693
  %699 = load i8, ptr %6, align 1, !tbaa !5, !range !18, !noundef !19
  %700 = trunc i8 %699 to i1
  br i1 %700, label %713, label %701

701:                                              ; preds = %698
  %702 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %703 = load ptr, ptr %702, align 8, !tbaa !13
  %704 = load i64, ptr %8, align 8, !tbaa !11
  %705 = getelementptr inbounds double, ptr %703, i64 %704
  %706 = load double, ptr %705, align 8, !tbaa !14
  %707 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %708 = load ptr, ptr %707, align 8, !tbaa !13
  %709 = load i64, ptr %8, align 8, !tbaa !11
  %710 = getelementptr inbounds double, ptr %708, i64 %709
  %711 = load double, ptr %710, align 8, !tbaa !14
  %712 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %706, double noundef %711)
  br label %713

713:                                              ; preds = %701, %698
  %714 = phi i1 [ true, %698 ], [ %712, %701 ]
  %715 = zext i1 %714 to i8
  store i8 %715, ptr %6, align 1, !tbaa !5
  br label %716

716:                                              ; preds = %713
  %717 = load i64, ptr %8, align 8, !tbaa !11
  %718 = add nsw i64 %717, 1
  store i64 %718, ptr %8, align 8, !tbaa !11
  br label %693, !llvm.loop !30

719:                                              ; preds = %693
  %720 = load i64, ptr %7, align 8, !tbaa !11
  %721 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11tagsortfastEPNS_9ae_vectorES1_lPNS_8ae_stateE(ptr noundef %18, ptr noundef %34, i64 noundef %720, ptr noundef %721)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %722

722:                                              ; preds = %745, %719
  %723 = load i64, ptr %8, align 8, !tbaa !11
  %724 = load i64, ptr %7, align 8, !tbaa !11
  %725 = sub nsw i64 %724, 1
  %726 = icmp sle i64 %723, %725
  br i1 %726, label %727, label %748

727:                                              ; preds = %722
  %728 = load i8, ptr %6, align 1, !tbaa !5, !range !18, !noundef !19
  %729 = trunc i8 %728 to i1
  br i1 %729, label %742, label %730

730:                                              ; preds = %727
  %731 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %732 = load ptr, ptr %731, align 8, !tbaa !13
  %733 = load i64, ptr %8, align 8, !tbaa !11
  %734 = getelementptr inbounds double, ptr %732, i64 %733
  %735 = load double, ptr %734, align 8, !tbaa !14
  %736 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %737 = load ptr, ptr %736, align 8, !tbaa !13
  %738 = load i64, ptr %8, align 8, !tbaa !11
  %739 = getelementptr inbounds double, ptr %737, i64 %738
  %740 = load double, ptr %739, align 8, !tbaa !14
  %741 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %735, double noundef %740)
  br label %742

742:                                              ; preds = %730, %727
  %743 = phi i1 [ true, %727 ], [ %741, %730 ]
  %744 = zext i1 %743 to i8
  store i8 %744, ptr %6, align 1, !tbaa !5
  br label %745

745:                                              ; preds = %742
  %746 = load i64, ptr %8, align 8, !tbaa !11
  %747 = add nsw i64 %746, 1
  store i64 %747, ptr %8, align 8, !tbaa !11
  br label %722, !llvm.loop !31

748:                                              ; preds = %722
  %749 = load i64, ptr %7, align 8, !tbaa !11
  %750 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15tagsortmiddleirEPNS_9ae_vectorES1_llPNS_8ae_stateE(ptr noundef %22, ptr noundef %28, i64 noundef 0, i64 noundef %749, ptr noundef %750)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %751

751:                                              ; preds = %775, %748
  %752 = load i64, ptr %8, align 8, !tbaa !11
  %753 = load i64, ptr %7, align 8, !tbaa !11
  %754 = sub nsw i64 %753, 1
  %755 = icmp sle i64 %752, %754
  br i1 %755, label %756, label %778

756:                                              ; preds = %751
  %757 = load i8, ptr %6, align 1, !tbaa !5, !range !18, !noundef !19
  %758 = trunc i8 %757 to i1
  br i1 %758, label %772, label %759

759:                                              ; preds = %756
  %760 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %22, i32 0, i32 4
  %761 = load ptr, ptr %760, align 8, !tbaa !13
  %762 = load i64, ptr %8, align 8, !tbaa !11
  %763 = getelementptr inbounds i64, ptr %761, i64 %762
  %764 = load i64, ptr %763, align 8, !tbaa !11
  %765 = sitofp i64 %764 to double
  %766 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %767 = load ptr, ptr %766, align 8, !tbaa !13
  %768 = load i64, ptr %8, align 8, !tbaa !11
  %769 = getelementptr inbounds double, ptr %767, i64 %768
  %770 = load double, ptr %769, align 8, !tbaa !14
  %771 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %765, double noundef %770)
  br label %772

772:                                              ; preds = %759, %756
  %773 = phi i1 [ true, %756 ], [ %771, %759 ]
  %774 = zext i1 %773 to i8
  store i8 %774, ptr %6, align 1, !tbaa !5
  br label %775

775:                                              ; preds = %772
  %776 = load i64, ptr %8, align 8, !tbaa !11
  %777 = add nsw i64 %776, 1
  store i64 %777, ptr %8, align 8, !tbaa !11
  br label %751, !llvm.loop !32

778:                                              ; preds = %751
  %779 = load i64, ptr %7, align 8, !tbaa !11
  %780 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11sortmiddleiEPNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef %23, i64 noundef 0, i64 noundef %779, ptr noundef %780)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %781

781:                                              ; preds = %805, %778
  %782 = load i64, ptr %8, align 8, !tbaa !11
  %783 = load i64, ptr %7, align 8, !tbaa !11
  %784 = sub nsw i64 %783, 1
  %785 = icmp sle i64 %782, %784
  br i1 %785, label %786, label %808

786:                                              ; preds = %781
  %787 = load i8, ptr %6, align 1, !tbaa !5, !range !18, !noundef !19
  %788 = trunc i8 %787 to i1
  br i1 %788, label %802, label %789

789:                                              ; preds = %786
  %790 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %23, i32 0, i32 4
  %791 = load ptr, ptr %790, align 8, !tbaa !13
  %792 = load i64, ptr %8, align 8, !tbaa !11
  %793 = getelementptr inbounds i64, ptr %791, i64 %792
  %794 = load i64, ptr %793, align 8, !tbaa !11
  %795 = sitofp i64 %794 to double
  %796 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %797 = load ptr, ptr %796, align 8, !tbaa !13
  %798 = load i64, ptr %8, align 8, !tbaa !11
  %799 = getelementptr inbounds double, ptr %797, i64 %798
  %800 = load double, ptr %799, align 8, !tbaa !14
  %801 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %795, double noundef %800)
  br label %802

802:                                              ; preds = %789, %786
  %803 = phi i1 [ true, %786 ], [ %801, %789 ]
  %804 = zext i1 %803 to i8
  store i8 %804, ptr %6, align 1, !tbaa !5
  br label %805

805:                                              ; preds = %802
  %806 = load i64, ptr %8, align 8, !tbaa !11
  %807 = add nsw i64 %806, 1
  store i64 %807, ptr %8, align 8, !tbaa !11
  br label %781, !llvm.loop !33

808:                                              ; preds = %781
  %809 = load i64, ptr %7, align 8, !tbaa !11
  %810 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15tagsortmiddleiiEPNS_9ae_vectorES1_llPNS_8ae_stateE(ptr noundef %24, ptr noundef %30, i64 noundef 0, i64 noundef %809, ptr noundef %810)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %811

811:                                              ; preds = %835, %808
  %812 = load i64, ptr %8, align 8, !tbaa !11
  %813 = load i64, ptr %7, align 8, !tbaa !11
  %814 = sub nsw i64 %813, 1
  %815 = icmp sle i64 %812, %814
  br i1 %815, label %816, label %838

816:                                              ; preds = %811
  %817 = load i8, ptr %6, align 1, !tbaa !5, !range !18, !noundef !19
  %818 = trunc i8 %817 to i1
  br i1 %818, label %832, label %819

819:                                              ; preds = %816
  %820 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %24, i32 0, i32 4
  %821 = load ptr, ptr %820, align 8, !tbaa !13
  %822 = load i64, ptr %8, align 8, !tbaa !11
  %823 = getelementptr inbounds i64, ptr %821, i64 %822
  %824 = load i64, ptr %823, align 8, !tbaa !11
  %825 = sitofp i64 %824 to double
  %826 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %827 = load ptr, ptr %826, align 8, !tbaa !13
  %828 = load i64, ptr %8, align 8, !tbaa !11
  %829 = getelementptr inbounds double, ptr %827, i64 %828
  %830 = load double, ptr %829, align 8, !tbaa !14
  %831 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %825, double noundef %830)
  br label %832

832:                                              ; preds = %819, %816
  %833 = phi i1 [ true, %816 ], [ %831, %819 ]
  %834 = zext i1 %833 to i8
  store i8 %834, ptr %6, align 1, !tbaa !5
  br label %835

835:                                              ; preds = %832
  %836 = load i64, ptr %8, align 8, !tbaa !11
  %837 = add nsw i64 %836, 1
  store i64 %837, ptr %8, align 8, !tbaa !11
  br label %811, !llvm.loop !34

838:                                              ; preds = %811
  %839 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL22testtsortunit_unset1diPN11alglib_impl9ae_vectorEPNS_8ae_stateE(ptr noundef %32, ptr noundef %839)
  %840 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL22testtsortunit_unset1diPN11alglib_impl9ae_vectorEPNS_8ae_stateE(ptr noundef %33, ptr noundef %840)
  %841 = load i64, ptr %7, align 8, !tbaa !11
  %842 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %14, i64 noundef %841, ptr noundef %842)
  %843 = load i64, ptr %7, align 8, !tbaa !11
  %844 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %15, i64 noundef %843, ptr noundef %844)
  %845 = load i64, ptr %7, align 8, !tbaa !11
  %846 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %16, i64 noundef %845, ptr noundef %846)
  %847 = load i64, ptr %7, align 8, !tbaa !11
  %848 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %17, i64 noundef %847, ptr noundef %848)
  %849 = load i64, ptr %7, align 8, !tbaa !11
  %850 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %18, i64 noundef %849, ptr noundef %850)
  %851 = load i64, ptr %7, align 8, !tbaa !11
  %852 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %22, i64 noundef %851, ptr noundef %852)
  %853 = load i64, ptr %7, align 8, !tbaa !11
  %854 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %27, i64 noundef %853, ptr noundef %854)
  %855 = load i64, ptr %7, align 8, !tbaa !11
  %856 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %28, i64 noundef %855, ptr noundef %856)
  %857 = load i64, ptr %7, align 8, !tbaa !11
  %858 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %29, i64 noundef %857, ptr noundef %858)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %859

859:                                              ; preds = %933, %838
  %860 = load i64, ptr %8, align 8, !tbaa !11
  %861 = load i64, ptr %7, align 8, !tbaa !11
  %862 = sub nsw i64 %861, 1
  %863 = icmp sle i64 %860, %862
  br i1 %863, label %864, label %936

864:                                              ; preds = %859
  %865 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %866 = load ptr, ptr %865, align 8, !tbaa !13
  %867 = load i64, ptr %8, align 8, !tbaa !11
  %868 = getelementptr inbounds double, ptr %866, i64 %867
  store double 0.000000e+00, ptr %868, align 8, !tbaa !14
  %869 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %870 = load ptr, ptr %869, align 8, !tbaa !13
  %871 = load i64, ptr %8, align 8, !tbaa !11
  %872 = getelementptr inbounds double, ptr %870, i64 %871
  %873 = load double, ptr %872, align 8, !tbaa !14
  %874 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %875 = load ptr, ptr %874, align 8, !tbaa !13
  %876 = load i64, ptr %8, align 8, !tbaa !11
  %877 = getelementptr inbounds double, ptr %875, i64 %876
  store double %873, ptr %877, align 8, !tbaa !14
  %878 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %879 = load ptr, ptr %878, align 8, !tbaa !13
  %880 = load i64, ptr %8, align 8, !tbaa !11
  %881 = getelementptr inbounds double, ptr %879, i64 %880
  %882 = load double, ptr %881, align 8, !tbaa !14
  %883 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %884 = load ptr, ptr %883, align 8, !tbaa !13
  %885 = load i64, ptr %8, align 8, !tbaa !11
  %886 = getelementptr inbounds double, ptr %884, i64 %885
  store double %882, ptr %886, align 8, !tbaa !14
  %887 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %888 = load ptr, ptr %887, align 8, !tbaa !13
  %889 = load i64, ptr %8, align 8, !tbaa !11
  %890 = getelementptr inbounds double, ptr %888, i64 %889
  %891 = load double, ptr %890, align 8, !tbaa !14
  %892 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %893 = load ptr, ptr %892, align 8, !tbaa !13
  %894 = load i64, ptr %8, align 8, !tbaa !11
  %895 = getelementptr inbounds double, ptr %893, i64 %894
  store double %891, ptr %895, align 8, !tbaa !14
  %896 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %897 = load ptr, ptr %896, align 8, !tbaa !13
  %898 = load i64, ptr %8, align 8, !tbaa !11
  %899 = getelementptr inbounds double, ptr %897, i64 %898
  %900 = load double, ptr %899, align 8, !tbaa !14
  %901 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %902 = load ptr, ptr %901, align 8, !tbaa !13
  %903 = load i64, ptr %8, align 8, !tbaa !11
  %904 = getelementptr inbounds double, ptr %902, i64 %903
  store double %900, ptr %904, align 8, !tbaa !14
  %905 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %906 = load ptr, ptr %905, align 8, !tbaa !13
  %907 = load i64, ptr %8, align 8, !tbaa !11
  %908 = getelementptr inbounds double, ptr %906, i64 %907
  %909 = load double, ptr %908, align 8, !tbaa !14
  %910 = load ptr, ptr %4, align 8, !tbaa !9
  %911 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %909, ptr noundef %910)
  %912 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %22, i32 0, i32 4
  %913 = load ptr, ptr %912, align 8, !tbaa !13
  %914 = load i64, ptr %8, align 8, !tbaa !11
  %915 = getelementptr inbounds i64, ptr %913, i64 %914
  store i64 %911, ptr %915, align 8, !tbaa !11
  %916 = load i64, ptr %8, align 8, !tbaa !11
  %917 = sitofp i64 %916 to double
  %918 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %919 = load ptr, ptr %918, align 8, !tbaa !13
  %920 = load i64, ptr %8, align 8, !tbaa !11
  %921 = getelementptr inbounds double, ptr %919, i64 %920
  store double %917, ptr %921, align 8, !tbaa !14
  %922 = load i64, ptr %8, align 8, !tbaa !11
  %923 = sitofp i64 %922 to double
  %924 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %925 = load ptr, ptr %924, align 8, !tbaa !13
  %926 = load i64, ptr %8, align 8, !tbaa !11
  %927 = getelementptr inbounds double, ptr %925, i64 %926
  store double %923, ptr %927, align 8, !tbaa !14
  %928 = load i64, ptr %8, align 8, !tbaa !11
  %929 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %930 = load ptr, ptr %929, align 8, !tbaa !13
  %931 = load i64, ptr %8, align 8, !tbaa !11
  %932 = getelementptr inbounds i64, ptr %930, i64 %931
  store i64 %928, ptr %932, align 8, !tbaa !11
  br label %933

933:                                              ; preds = %864
  %934 = load i64, ptr %8, align 8, !tbaa !11
  %935 = add nsw i64 %934, 1
  store i64 %935, ptr %8, align 8, !tbaa !11
  br label %859, !llvm.loop !35

936:                                              ; preds = %859
  %937 = load i64, ptr %7, align 8, !tbaa !11
  %938 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl7tagsortEPNS_9ae_vectorElS1_S1_PNS_8ae_stateE(ptr noundef %15, i64 noundef %937, ptr noundef %32, ptr noundef %33, ptr noundef %938)
  %939 = load i64, ptr %7, align 8, !tbaa !11
  %940 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL29testtsortunit_testsortresultsPKN11alglib_impl9ae_vectorES2_S2_S2_lPbPNS_8ae_stateE(ptr noundef %15, ptr noundef %32, ptr noundef %33, ptr noundef %14, i64 noundef %939, ptr noundef %6, ptr noundef %940)
  %941 = load i64, ptr %7, align 8, !tbaa !11
  %942 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12tagsortfastiEPNS_9ae_vectorES1_S1_S1_lPNS_8ae_stateE(ptr noundef %16, ptr noundef %29, ptr noundef %34, ptr noundef %36, i64 noundef %941, ptr noundef %942)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %943

943:                                              ; preds = %966, %936
  %944 = load i64, ptr %8, align 8, !tbaa !11
  %945 = load i64, ptr %7, align 8, !tbaa !11
  %946 = sub nsw i64 %945, 1
  %947 = icmp sle i64 %944, %946
  br i1 %947, label %948, label %969

948:                                              ; preds = %943
  %949 = load i8, ptr %6, align 1, !tbaa !5, !range !18, !noundef !19
  %950 = trunc i8 %949 to i1
  br i1 %950, label %963, label %951

951:                                              ; preds = %948
  %952 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %953 = load ptr, ptr %952, align 8, !tbaa !13
  %954 = load i64, ptr %8, align 8, !tbaa !11
  %955 = getelementptr inbounds double, ptr %953, i64 %954
  %956 = load double, ptr %955, align 8, !tbaa !14
  %957 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %958 = load ptr, ptr %957, align 8, !tbaa !13
  %959 = load i64, ptr %8, align 8, !tbaa !11
  %960 = getelementptr inbounds double, ptr %958, i64 %959
  %961 = load double, ptr %960, align 8, !tbaa !14
  %962 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %956, double noundef %961)
  br label %963

963:                                              ; preds = %951, %948
  %964 = phi i1 [ true, %948 ], [ %962, %951 ]
  %965 = zext i1 %964 to i8
  store i8 %965, ptr %6, align 1, !tbaa !5
  br label %966

966:                                              ; preds = %963
  %967 = load i64, ptr %8, align 8, !tbaa !11
  %968 = add nsw i64 %967, 1
  store i64 %968, ptr %8, align 8, !tbaa !11
  br label %943, !llvm.loop !36

969:                                              ; preds = %943
  %970 = load i64, ptr %7, align 8, !tbaa !11
  %971 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12tagsortfastrEPNS_9ae_vectorES1_S1_S1_lPNS_8ae_stateE(ptr noundef %17, ptr noundef %27, ptr noundef %34, ptr noundef %35, i64 noundef %970, ptr noundef %971)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %972

972:                                              ; preds = %995, %969
  %973 = load i64, ptr %8, align 8, !tbaa !11
  %974 = load i64, ptr %7, align 8, !tbaa !11
  %975 = sub nsw i64 %974, 1
  %976 = icmp sle i64 %973, %975
  br i1 %976, label %977, label %998

977:                                              ; preds = %972
  %978 = load i8, ptr %6, align 1, !tbaa !5, !range !18, !noundef !19
  %979 = trunc i8 %978 to i1
  br i1 %979, label %992, label %980

980:                                              ; preds = %977
  %981 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %982 = load ptr, ptr %981, align 8, !tbaa !13
  %983 = load i64, ptr %8, align 8, !tbaa !11
  %984 = getelementptr inbounds double, ptr %982, i64 %983
  %985 = load double, ptr %984, align 8, !tbaa !14
  %986 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %987 = load ptr, ptr %986, align 8, !tbaa !13
  %988 = load i64, ptr %8, align 8, !tbaa !11
  %989 = getelementptr inbounds double, ptr %987, i64 %988
  %990 = load double, ptr %989, align 8, !tbaa !14
  %991 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %985, double noundef %990)
  br label %992

992:                                              ; preds = %980, %977
  %993 = phi i1 [ true, %977 ], [ %991, %980 ]
  %994 = zext i1 %993 to i8
  store i8 %994, ptr %6, align 1, !tbaa !5
  br label %995

995:                                              ; preds = %992
  %996 = load i64, ptr %8, align 8, !tbaa !11
  %997 = add nsw i64 %996, 1
  store i64 %997, ptr %8, align 8, !tbaa !11
  br label %972, !llvm.loop !37

998:                                              ; preds = %972
  %999 = load i64, ptr %7, align 8, !tbaa !11
  %1000 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11tagsortfastEPNS_9ae_vectorES1_lPNS_8ae_stateE(ptr noundef %18, ptr noundef %34, i64 noundef %999, ptr noundef %1000)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %1001

1001:                                             ; preds = %1024, %998
  %1002 = load i64, ptr %8, align 8, !tbaa !11
  %1003 = load i64, ptr %7, align 8, !tbaa !11
  %1004 = sub nsw i64 %1003, 1
  %1005 = icmp sle i64 %1002, %1004
  br i1 %1005, label %1006, label %1027

1006:                                             ; preds = %1001
  %1007 = load i8, ptr %6, align 1, !tbaa !5, !range !18, !noundef !19
  %1008 = trunc i8 %1007 to i1
  br i1 %1008, label %1021, label %1009

1009:                                             ; preds = %1006
  %1010 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %1011 = load ptr, ptr %1010, align 8, !tbaa !13
  %1012 = load i64, ptr %8, align 8, !tbaa !11
  %1013 = getelementptr inbounds double, ptr %1011, i64 %1012
  %1014 = load double, ptr %1013, align 8, !tbaa !14
  %1015 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %1016 = load ptr, ptr %1015, align 8, !tbaa !13
  %1017 = load i64, ptr %8, align 8, !tbaa !11
  %1018 = getelementptr inbounds double, ptr %1016, i64 %1017
  %1019 = load double, ptr %1018, align 8, !tbaa !14
  %1020 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %1014, double noundef %1019)
  br label %1021

1021:                                             ; preds = %1009, %1006
  %1022 = phi i1 [ true, %1006 ], [ %1020, %1009 ]
  %1023 = zext i1 %1022 to i8
  store i8 %1023, ptr %6, align 1, !tbaa !5
  br label %1024

1024:                                             ; preds = %1021
  %1025 = load i64, ptr %8, align 8, !tbaa !11
  %1026 = add nsw i64 %1025, 1
  store i64 %1026, ptr %8, align 8, !tbaa !11
  br label %1001, !llvm.loop !38

1027:                                             ; preds = %1001
  %1028 = load i64, ptr %7, align 8, !tbaa !11
  %1029 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15tagsortmiddleirEPNS_9ae_vectorES1_llPNS_8ae_stateE(ptr noundef %22, ptr noundef %28, i64 noundef 0, i64 noundef %1028, ptr noundef %1029)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %1030

1030:                                             ; preds = %1054, %1027
  %1031 = load i64, ptr %8, align 8, !tbaa !11
  %1032 = load i64, ptr %7, align 8, !tbaa !11
  %1033 = sub nsw i64 %1032, 1
  %1034 = icmp sle i64 %1031, %1033
  br i1 %1034, label %1035, label %1057

1035:                                             ; preds = %1030
  %1036 = load i8, ptr %6, align 1, !tbaa !5, !range !18, !noundef !19
  %1037 = trunc i8 %1036 to i1
  br i1 %1037, label %1051, label %1038

1038:                                             ; preds = %1035
  %1039 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %22, i32 0, i32 4
  %1040 = load ptr, ptr %1039, align 8, !tbaa !13
  %1041 = load i64, ptr %8, align 8, !tbaa !11
  %1042 = getelementptr inbounds i64, ptr %1040, i64 %1041
  %1043 = load i64, ptr %1042, align 8, !tbaa !11
  %1044 = sitofp i64 %1043 to double
  %1045 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %1046 = load ptr, ptr %1045, align 8, !tbaa !13
  %1047 = load i64, ptr %8, align 8, !tbaa !11
  %1048 = getelementptr inbounds double, ptr %1046, i64 %1047
  %1049 = load double, ptr %1048, align 8, !tbaa !14
  %1050 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %1044, double noundef %1049)
  br label %1051

1051:                                             ; preds = %1038, %1035
  %1052 = phi i1 [ true, %1035 ], [ %1050, %1038 ]
  %1053 = zext i1 %1052 to i8
  store i8 %1053, ptr %6, align 1, !tbaa !5
  br label %1054

1054:                                             ; preds = %1051
  %1055 = load i64, ptr %8, align 8, !tbaa !11
  %1056 = add nsw i64 %1055, 1
  store i64 %1056, ptr %8, align 8, !tbaa !11
  br label %1030, !llvm.loop !39

1057:                                             ; preds = %1030
  %1058 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL22testtsortunit_unset1diPN11alglib_impl9ae_vectorEPNS_8ae_stateE(ptr noundef %32, ptr noundef %1058)
  %1059 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL22testtsortunit_unset1diPN11alglib_impl9ae_vectorEPNS_8ae_stateE(ptr noundef %33, ptr noundef %1059)
  %1060 = load i64, ptr %7, align 8, !tbaa !11
  %1061 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %14, i64 noundef %1060, ptr noundef %1061)
  %1062 = load i64, ptr %7, align 8, !tbaa !11
  %1063 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %15, i64 noundef %1062, ptr noundef %1063)
  %1064 = load i64, ptr %7, align 8, !tbaa !11
  %1065 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %16, i64 noundef %1064, ptr noundef %1065)
  %1066 = load i64, ptr %7, align 8, !tbaa !11
  %1067 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %17, i64 noundef %1066, ptr noundef %1067)
  %1068 = load i64, ptr %7, align 8, !tbaa !11
  %1069 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %18, i64 noundef %1068, ptr noundef %1069)
  %1070 = load i64, ptr %7, align 8, !tbaa !11
  %1071 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %22, i64 noundef %1070, ptr noundef %1071)
  %1072 = load i64, ptr %7, align 8, !tbaa !11
  %1073 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %27, i64 noundef %1072, ptr noundef %1073)
  %1074 = load i64, ptr %7, align 8, !tbaa !11
  %1075 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %28, i64 noundef %1074, ptr noundef %1075)
  %1076 = load i64, ptr %7, align 8, !tbaa !11
  %1077 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %29, i64 noundef %1076, ptr noundef %1077)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %1078

1078:                                             ; preds = %1155, %1057
  %1079 = load i64, ptr %8, align 8, !tbaa !11
  %1080 = load i64, ptr %7, align 8, !tbaa !11
  %1081 = sub nsw i64 %1080, 1
  %1082 = icmp sle i64 %1079, %1081
  br i1 %1082, label %1083, label %1158

1083:                                             ; preds = %1078
  %1084 = load ptr, ptr %4, align 8, !tbaa !9
  %1085 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 2, ptr noundef %1084)
  %1086 = sitofp i64 %1085 to double
  %1087 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %1088 = load ptr, ptr %1087, align 8, !tbaa !13
  %1089 = load i64, ptr %8, align 8, !tbaa !11
  %1090 = getelementptr inbounds double, ptr %1088, i64 %1089
  store double %1086, ptr %1090, align 8, !tbaa !14
  %1091 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %1092 = load ptr, ptr %1091, align 8, !tbaa !13
  %1093 = load i64, ptr %8, align 8, !tbaa !11
  %1094 = getelementptr inbounds double, ptr %1092, i64 %1093
  %1095 = load double, ptr %1094, align 8, !tbaa !14
  %1096 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %1097 = load ptr, ptr %1096, align 8, !tbaa !13
  %1098 = load i64, ptr %8, align 8, !tbaa !11
  %1099 = getelementptr inbounds double, ptr %1097, i64 %1098
  store double %1095, ptr %1099, align 8, !tbaa !14
  %1100 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %1101 = load ptr, ptr %1100, align 8, !tbaa !13
  %1102 = load i64, ptr %8, align 8, !tbaa !11
  %1103 = getelementptr inbounds double, ptr %1101, i64 %1102
  %1104 = load double, ptr %1103, align 8, !tbaa !14
  %1105 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %1106 = load ptr, ptr %1105, align 8, !tbaa !13
  %1107 = load i64, ptr %8, align 8, !tbaa !11
  %1108 = getelementptr inbounds double, ptr %1106, i64 %1107
  store double %1104, ptr %1108, align 8, !tbaa !14
  %1109 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %1110 = load ptr, ptr %1109, align 8, !tbaa !13
  %1111 = load i64, ptr %8, align 8, !tbaa !11
  %1112 = getelementptr inbounds double, ptr %1110, i64 %1111
  %1113 = load double, ptr %1112, align 8, !tbaa !14
  %1114 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %1115 = load ptr, ptr %1114, align 8, !tbaa !13
  %1116 = load i64, ptr %8, align 8, !tbaa !11
  %1117 = getelementptr inbounds double, ptr %1115, i64 %1116
  store double %1113, ptr %1117, align 8, !tbaa !14
  %1118 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %1119 = load ptr, ptr %1118, align 8, !tbaa !13
  %1120 = load i64, ptr %8, align 8, !tbaa !11
  %1121 = getelementptr inbounds double, ptr %1119, i64 %1120
  %1122 = load double, ptr %1121, align 8, !tbaa !14
  %1123 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %1124 = load ptr, ptr %1123, align 8, !tbaa !13
  %1125 = load i64, ptr %8, align 8, !tbaa !11
  %1126 = getelementptr inbounds double, ptr %1124, i64 %1125
  store double %1122, ptr %1126, align 8, !tbaa !14
  %1127 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %1128 = load ptr, ptr %1127, align 8, !tbaa !13
  %1129 = load i64, ptr %8, align 8, !tbaa !11
  %1130 = getelementptr inbounds double, ptr %1128, i64 %1129
  %1131 = load double, ptr %1130, align 8, !tbaa !14
  %1132 = load ptr, ptr %4, align 8, !tbaa !9
  %1133 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %1131, ptr noundef %1132)
  %1134 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %22, i32 0, i32 4
  %1135 = load ptr, ptr %1134, align 8, !tbaa !13
  %1136 = load i64, ptr %8, align 8, !tbaa !11
  %1137 = getelementptr inbounds i64, ptr %1135, i64 %1136
  store i64 %1133, ptr %1137, align 8, !tbaa !11
  %1138 = load i64, ptr %8, align 8, !tbaa !11
  %1139 = sitofp i64 %1138 to double
  %1140 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %1141 = load ptr, ptr %1140, align 8, !tbaa !13
  %1142 = load i64, ptr %8, align 8, !tbaa !11
  %1143 = getelementptr inbounds double, ptr %1141, i64 %1142
  store double %1139, ptr %1143, align 8, !tbaa !14
  %1144 = load i64, ptr %8, align 8, !tbaa !11
  %1145 = sitofp i64 %1144 to double
  %1146 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %1147 = load ptr, ptr %1146, align 8, !tbaa !13
  %1148 = load i64, ptr %8, align 8, !tbaa !11
  %1149 = getelementptr inbounds double, ptr %1147, i64 %1148
  store double %1145, ptr %1149, align 8, !tbaa !14
  %1150 = load i64, ptr %8, align 8, !tbaa !11
  %1151 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %1152 = load ptr, ptr %1151, align 8, !tbaa !13
  %1153 = load i64, ptr %8, align 8, !tbaa !11
  %1154 = getelementptr inbounds i64, ptr %1152, i64 %1153
  store i64 %1150, ptr %1154, align 8, !tbaa !11
  br label %1155

1155:                                             ; preds = %1083
  %1156 = load i64, ptr %8, align 8, !tbaa !11
  %1157 = add nsw i64 %1156, 1
  store i64 %1157, ptr %8, align 8, !tbaa !11
  br label %1078, !llvm.loop !40

1158:                                             ; preds = %1078
  %1159 = load i64, ptr %7, align 8, !tbaa !11
  %1160 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl7tagsortEPNS_9ae_vectorElS1_S1_PNS_8ae_stateE(ptr noundef %15, i64 noundef %1159, ptr noundef %32, ptr noundef %33, ptr noundef %1160)
  %1161 = load i64, ptr %7, align 8, !tbaa !11
  %1162 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL29testtsortunit_testsortresultsPKN11alglib_impl9ae_vectorES2_S2_S2_lPbPNS_8ae_stateE(ptr noundef %15, ptr noundef %32, ptr noundef %33, ptr noundef %14, i64 noundef %1161, ptr noundef %6, ptr noundef %1162)
  %1163 = load i64, ptr %7, align 8, !tbaa !11
  %1164 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12tagsortfastiEPNS_9ae_vectorES1_S1_S1_lPNS_8ae_stateE(ptr noundef %16, ptr noundef %29, ptr noundef %34, ptr noundef %36, i64 noundef %1163, ptr noundef %1164)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %1165

1165:                                             ; preds = %1188, %1158
  %1166 = load i64, ptr %8, align 8, !tbaa !11
  %1167 = load i64, ptr %7, align 8, !tbaa !11
  %1168 = sub nsw i64 %1167, 1
  %1169 = icmp sle i64 %1166, %1168
  br i1 %1169, label %1170, label %1191

1170:                                             ; preds = %1165
  %1171 = load i8, ptr %6, align 1, !tbaa !5, !range !18, !noundef !19
  %1172 = trunc i8 %1171 to i1
  br i1 %1172, label %1185, label %1173

1173:                                             ; preds = %1170
  %1174 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %1175 = load ptr, ptr %1174, align 8, !tbaa !13
  %1176 = load i64, ptr %8, align 8, !tbaa !11
  %1177 = getelementptr inbounds double, ptr %1175, i64 %1176
  %1178 = load double, ptr %1177, align 8, !tbaa !14
  %1179 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %1180 = load ptr, ptr %1179, align 8, !tbaa !13
  %1181 = load i64, ptr %8, align 8, !tbaa !11
  %1182 = getelementptr inbounds double, ptr %1180, i64 %1181
  %1183 = load double, ptr %1182, align 8, !tbaa !14
  %1184 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %1178, double noundef %1183)
  br label %1185

1185:                                             ; preds = %1173, %1170
  %1186 = phi i1 [ true, %1170 ], [ %1184, %1173 ]
  %1187 = zext i1 %1186 to i8
  store i8 %1187, ptr %6, align 1, !tbaa !5
  br label %1188

1188:                                             ; preds = %1185
  %1189 = load i64, ptr %8, align 8, !tbaa !11
  %1190 = add nsw i64 %1189, 1
  store i64 %1190, ptr %8, align 8, !tbaa !11
  br label %1165, !llvm.loop !41

1191:                                             ; preds = %1165
  %1192 = load i64, ptr %7, align 8, !tbaa !11
  %1193 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12tagsortfastrEPNS_9ae_vectorES1_S1_S1_lPNS_8ae_stateE(ptr noundef %17, ptr noundef %27, ptr noundef %34, ptr noundef %35, i64 noundef %1192, ptr noundef %1193)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %1194

1194:                                             ; preds = %1217, %1191
  %1195 = load i64, ptr %8, align 8, !tbaa !11
  %1196 = load i64, ptr %7, align 8, !tbaa !11
  %1197 = sub nsw i64 %1196, 1
  %1198 = icmp sle i64 %1195, %1197
  br i1 %1198, label %1199, label %1220

1199:                                             ; preds = %1194
  %1200 = load i8, ptr %6, align 1, !tbaa !5, !range !18, !noundef !19
  %1201 = trunc i8 %1200 to i1
  br i1 %1201, label %1214, label %1202

1202:                                             ; preds = %1199
  %1203 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %1204 = load ptr, ptr %1203, align 8, !tbaa !13
  %1205 = load i64, ptr %8, align 8, !tbaa !11
  %1206 = getelementptr inbounds double, ptr %1204, i64 %1205
  %1207 = load double, ptr %1206, align 8, !tbaa !14
  %1208 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %1209 = load ptr, ptr %1208, align 8, !tbaa !13
  %1210 = load i64, ptr %8, align 8, !tbaa !11
  %1211 = getelementptr inbounds double, ptr %1209, i64 %1210
  %1212 = load double, ptr %1211, align 8, !tbaa !14
  %1213 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %1207, double noundef %1212)
  br label %1214

1214:                                             ; preds = %1202, %1199
  %1215 = phi i1 [ true, %1199 ], [ %1213, %1202 ]
  %1216 = zext i1 %1215 to i8
  store i8 %1216, ptr %6, align 1, !tbaa !5
  br label %1217

1217:                                             ; preds = %1214
  %1218 = load i64, ptr %8, align 8, !tbaa !11
  %1219 = add nsw i64 %1218, 1
  store i64 %1219, ptr %8, align 8, !tbaa !11
  br label %1194, !llvm.loop !42

1220:                                             ; preds = %1194
  %1221 = load i64, ptr %7, align 8, !tbaa !11
  %1222 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11tagsortfastEPNS_9ae_vectorES1_lPNS_8ae_stateE(ptr noundef %18, ptr noundef %34, i64 noundef %1221, ptr noundef %1222)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %1223

1223:                                             ; preds = %1246, %1220
  %1224 = load i64, ptr %8, align 8, !tbaa !11
  %1225 = load i64, ptr %7, align 8, !tbaa !11
  %1226 = sub nsw i64 %1225, 1
  %1227 = icmp sle i64 %1224, %1226
  br i1 %1227, label %1228, label %1249

1228:                                             ; preds = %1223
  %1229 = load i8, ptr %6, align 1, !tbaa !5, !range !18, !noundef !19
  %1230 = trunc i8 %1229 to i1
  br i1 %1230, label %1243, label %1231

1231:                                             ; preds = %1228
  %1232 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %1233 = load ptr, ptr %1232, align 8, !tbaa !13
  %1234 = load i64, ptr %8, align 8, !tbaa !11
  %1235 = getelementptr inbounds double, ptr %1233, i64 %1234
  %1236 = load double, ptr %1235, align 8, !tbaa !14
  %1237 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %1238 = load ptr, ptr %1237, align 8, !tbaa !13
  %1239 = load i64, ptr %8, align 8, !tbaa !11
  %1240 = getelementptr inbounds double, ptr %1238, i64 %1239
  %1241 = load double, ptr %1240, align 8, !tbaa !14
  %1242 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %1236, double noundef %1241)
  br label %1243

1243:                                             ; preds = %1231, %1228
  %1244 = phi i1 [ true, %1228 ], [ %1242, %1231 ]
  %1245 = zext i1 %1244 to i8
  store i8 %1245, ptr %6, align 1, !tbaa !5
  br label %1246

1246:                                             ; preds = %1243
  %1247 = load i64, ptr %8, align 8, !tbaa !11
  %1248 = add nsw i64 %1247, 1
  store i64 %1248, ptr %8, align 8, !tbaa !11
  br label %1223, !llvm.loop !43

1249:                                             ; preds = %1223
  %1250 = load i64, ptr %7, align 8, !tbaa !11
  %1251 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15tagsortmiddleirEPNS_9ae_vectorES1_llPNS_8ae_stateE(ptr noundef %22, ptr noundef %28, i64 noundef 0, i64 noundef %1250, ptr noundef %1251)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %1252

1252:                                             ; preds = %1276, %1249
  %1253 = load i64, ptr %8, align 8, !tbaa !11
  %1254 = load i64, ptr %7, align 8, !tbaa !11
  %1255 = sub nsw i64 %1254, 1
  %1256 = icmp sle i64 %1253, %1255
  br i1 %1256, label %1257, label %1279

1257:                                             ; preds = %1252
  %1258 = load i8, ptr %6, align 1, !tbaa !5, !range !18, !noundef !19
  %1259 = trunc i8 %1258 to i1
  br i1 %1259, label %1273, label %1260

1260:                                             ; preds = %1257
  %1261 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %22, i32 0, i32 4
  %1262 = load ptr, ptr %1261, align 8, !tbaa !13
  %1263 = load i64, ptr %8, align 8, !tbaa !11
  %1264 = getelementptr inbounds i64, ptr %1262, i64 %1263
  %1265 = load i64, ptr %1264, align 8, !tbaa !11
  %1266 = sitofp i64 %1265 to double
  %1267 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %1268 = load ptr, ptr %1267, align 8, !tbaa !13
  %1269 = load i64, ptr %8, align 8, !tbaa !11
  %1270 = getelementptr inbounds double, ptr %1268, i64 %1269
  %1271 = load double, ptr %1270, align 8, !tbaa !14
  %1272 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %1266, double noundef %1271)
  br label %1273

1273:                                             ; preds = %1260, %1257
  %1274 = phi i1 [ true, %1257 ], [ %1272, %1260 ]
  %1275 = zext i1 %1274 to i8
  store i8 %1275, ptr %6, align 1, !tbaa !5
  br label %1276

1276:                                             ; preds = %1273
  %1277 = load i64, ptr %8, align 8, !tbaa !11
  %1278 = add nsw i64 %1277, 1
  store i64 %1278, ptr %8, align 8, !tbaa !11
  br label %1252, !llvm.loop !44

1279:                                             ; preds = %1252
  %1280 = load i64, ptr %7, align 8, !tbaa !11
  %1281 = mul nsw i64 3, %1280
  store i64 %1281, ptr %9, align 8, !tbaa !11
  %1282 = load i64, ptr %7, align 8, !tbaa !11
  %1283 = load ptr, ptr %4, align 8, !tbaa !9
  %1284 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef %1282, ptr noundef %1283)
  store i64 %1284, ptr %10, align 8, !tbaa !11
  %1285 = load i64, ptr %9, align 8, !tbaa !11
  %1286 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %19, i64 noundef %1285, ptr noundef %1286)
  %1287 = load i64, ptr %9, align 8, !tbaa !11
  %1288 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %20, i64 noundef %1287, ptr noundef %1288)
  %1289 = load i64, ptr %9, align 8, !tbaa !11
  %1290 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %21, i64 noundef %1289, ptr noundef %1290)
  %1291 = load i64, ptr %9, align 8, !tbaa !11
  %1292 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %25, i64 noundef %1291, ptr noundef %1292)
  %1293 = load i64, ptr %9, align 8, !tbaa !11
  %1294 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %27, i64 noundef %1293, ptr noundef %1294)
  %1295 = load i64, ptr %9, align 8, !tbaa !11
  %1296 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %28, i64 noundef %1295, ptr noundef %1296)
  %1297 = load i64, ptr %9, align 8, !tbaa !11
  %1298 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %30, i64 noundef %1297, ptr noundef %1298)
  %1299 = load i64, ptr %9, align 8, !tbaa !11
  %1300 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %31, i64 noundef %1299, ptr noundef %1300)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %1301

1301:                                             ; preds = %1363, %1279
  %1302 = load i64, ptr %8, align 8, !tbaa !11
  %1303 = load i64, ptr %9, align 8, !tbaa !11
  %1304 = sub nsw i64 %1303, 1
  %1305 = icmp sle i64 %1302, %1304
  br i1 %1305, label %1306, label %1366

1306:                                             ; preds = %1301
  %1307 = load ptr, ptr %4, align 8, !tbaa !9
  %1308 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 100000000, ptr noundef %1307)
  %1309 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %19, i32 0, i32 4
  %1310 = load ptr, ptr %1309, align 8, !tbaa !13
  %1311 = load i64, ptr %8, align 8, !tbaa !11
  %1312 = getelementptr inbounds i64, ptr %1310, i64 %1311
  store i64 %1308, ptr %1312, align 8, !tbaa !11
  %1313 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %19, i32 0, i32 4
  %1314 = load ptr, ptr %1313, align 8, !tbaa !13
  %1315 = load i64, ptr %8, align 8, !tbaa !11
  %1316 = getelementptr inbounds i64, ptr %1314, i64 %1315
  %1317 = load i64, ptr %1316, align 8, !tbaa !11
  %1318 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %20, i32 0, i32 4
  %1319 = load ptr, ptr %1318, align 8, !tbaa !13
  %1320 = load i64, ptr %8, align 8, !tbaa !11
  %1321 = getelementptr inbounds i64, ptr %1319, i64 %1320
  store i64 %1317, ptr %1321, align 8, !tbaa !11
  %1322 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %19, i32 0, i32 4
  %1323 = load ptr, ptr %1322, align 8, !tbaa !13
  %1324 = load i64, ptr %8, align 8, !tbaa !11
  %1325 = getelementptr inbounds i64, ptr %1323, i64 %1324
  %1326 = load i64, ptr %1325, align 8, !tbaa !11
  %1327 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %1328 = load ptr, ptr %1327, align 8, !tbaa !13
  %1329 = load i64, ptr %8, align 8, !tbaa !11
  %1330 = getelementptr inbounds i64, ptr %1328, i64 %1329
  store i64 %1326, ptr %1330, align 8, !tbaa !11
  %1331 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %19, i32 0, i32 4
  %1332 = load ptr, ptr %1331, align 8, !tbaa !13
  %1333 = load i64, ptr %8, align 8, !tbaa !11
  %1334 = getelementptr inbounds i64, ptr %1332, i64 %1333
  %1335 = load i64, ptr %1334, align 8, !tbaa !11
  %1336 = sitofp i64 %1335 to double
  %1337 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %25, i32 0, i32 4
  %1338 = load ptr, ptr %1337, align 8, !tbaa !13
  %1339 = load i64, ptr %8, align 8, !tbaa !11
  %1340 = getelementptr inbounds double, ptr %1338, i64 %1339
  store double %1336, ptr %1340, align 8, !tbaa !14
  %1341 = load i64, ptr %8, align 8, !tbaa !11
  %1342 = sitofp i64 %1341 to double
  %1343 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %1344 = load ptr, ptr %1343, align 8, !tbaa !13
  %1345 = load i64, ptr %8, align 8, !tbaa !11
  %1346 = getelementptr inbounds double, ptr %1344, i64 %1345
  store double %1342, ptr %1346, align 8, !tbaa !14
  %1347 = load i64, ptr %8, align 8, !tbaa !11
  %1348 = sitofp i64 %1347 to double
  %1349 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %1350 = load ptr, ptr %1349, align 8, !tbaa !13
  %1351 = load i64, ptr %8, align 8, !tbaa !11
  %1352 = getelementptr inbounds double, ptr %1350, i64 %1351
  store double %1348, ptr %1352, align 8, !tbaa !14
  %1353 = load i64, ptr %8, align 8, !tbaa !11
  %1354 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %30, i32 0, i32 4
  %1355 = load ptr, ptr %1354, align 8, !tbaa !13
  %1356 = load i64, ptr %8, align 8, !tbaa !11
  %1357 = getelementptr inbounds i64, ptr %1355, i64 %1356
  store i64 %1353, ptr %1357, align 8, !tbaa !11
  %1358 = load i64, ptr %8, align 8, !tbaa !11
  %1359 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %31, i32 0, i32 4
  %1360 = load ptr, ptr %1359, align 8, !tbaa !13
  %1361 = load i64, ptr %8, align 8, !tbaa !11
  %1362 = getelementptr inbounds i64, ptr %1360, i64 %1361
  store i64 %1358, ptr %1362, align 8, !tbaa !11
  br label %1363

1363:                                             ; preds = %1306
  %1364 = load i64, ptr %8, align 8, !tbaa !11
  %1365 = add nsw i64 %1364, 1
  store i64 %1365, ptr %8, align 8, !tbaa !11
  br label %1301, !llvm.loop !45

1366:                                             ; preds = %1301
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %1367

1367:                                             ; preds = %1395, %1366
  %1368 = load i64, ptr %8, align 8, !tbaa !11
  %1369 = load i64, ptr %7, align 8, !tbaa !11
  %1370 = sub nsw i64 %1369, 1
  %1371 = icmp sle i64 %1368, %1370
  br i1 %1371, label %1372, label %1398

1372:                                             ; preds = %1367
  %1373 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %19, i32 0, i32 4
  %1374 = load ptr, ptr %1373, align 8, !tbaa !13
  %1375 = load i64, ptr %10, align 8, !tbaa !11
  %1376 = load i64, ptr %8, align 8, !tbaa !11
  %1377 = add nsw i64 %1375, %1376
  %1378 = getelementptr inbounds i64, ptr %1374, i64 %1377
  %1379 = load i64, ptr %1378, align 8, !tbaa !11
  %1380 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %19, i32 0, i32 4
  %1381 = load ptr, ptr %1380, align 8, !tbaa !13
  %1382 = load i64, ptr %8, align 8, !tbaa !11
  %1383 = getelementptr inbounds i64, ptr %1381, i64 %1382
  store i64 %1379, ptr %1383, align 8, !tbaa !11
  %1384 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %1385 = load ptr, ptr %1384, align 8, !tbaa !13
  %1386 = load i64, ptr %10, align 8, !tbaa !11
  %1387 = load i64, ptr %8, align 8, !tbaa !11
  %1388 = add nsw i64 %1386, %1387
  %1389 = getelementptr inbounds double, ptr %1385, i64 %1388
  %1390 = load double, ptr %1389, align 8, !tbaa !14
  %1391 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %1392 = load ptr, ptr %1391, align 8, !tbaa !13
  %1393 = load i64, ptr %8, align 8, !tbaa !11
  %1394 = getelementptr inbounds double, ptr %1392, i64 %1393
  store double %1390, ptr %1394, align 8, !tbaa !14
  br label %1395

1395:                                             ; preds = %1372
  %1396 = load i64, ptr %8, align 8, !tbaa !11
  %1397 = add nsw i64 %1396, 1
  store i64 %1397, ptr %8, align 8, !tbaa !11
  br label %1367, !llvm.loop !46

1398:                                             ; preds = %1367
  %1399 = load i64, ptr %7, align 8, !tbaa !11
  %1400 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15tagsortmiddleirEPNS_9ae_vectorES1_llPNS_8ae_stateE(ptr noundef %19, ptr noundef %27, i64 noundef 0, i64 noundef %1399, ptr noundef %1400)
  store i64 1, ptr %8, align 8, !tbaa !11
  br label %1401

1401:                                             ; preds = %1425, %1398
  %1402 = load i64, ptr %8, align 8, !tbaa !11
  %1403 = load i64, ptr %7, align 8, !tbaa !11
  %1404 = sub nsw i64 %1403, 1
  %1405 = icmp sle i64 %1402, %1404
  br i1 %1405, label %1406, label %1428

1406:                                             ; preds = %1401
  %1407 = load i8, ptr %37, align 1, !tbaa !5, !range !18, !noundef !19
  %1408 = trunc i8 %1407 to i1
  br i1 %1408, label %1409, label %1422

1409:                                             ; preds = %1406
  %1410 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %19, i32 0, i32 4
  %1411 = load ptr, ptr %1410, align 8, !tbaa !13
  %1412 = load i64, ptr %8, align 8, !tbaa !11
  %1413 = getelementptr inbounds i64, ptr %1411, i64 %1412
  %1414 = load i64, ptr %1413, align 8, !tbaa !11
  %1415 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %19, i32 0, i32 4
  %1416 = load ptr, ptr %1415, align 8, !tbaa !13
  %1417 = load i64, ptr %8, align 8, !tbaa !11
  %1418 = sub nsw i64 %1417, 1
  %1419 = getelementptr inbounds i64, ptr %1416, i64 %1418
  %1420 = load i64, ptr %1419, align 8, !tbaa !11
  %1421 = icmp ne i64 %1414, %1420
  br label %1422

1422:                                             ; preds = %1409, %1406
  %1423 = phi i1 [ false, %1406 ], [ %1421, %1409 ]
  %1424 = zext i1 %1423 to i8
  store i8 %1424, ptr %37, align 1, !tbaa !5
  br label %1425

1425:                                             ; preds = %1422
  %1426 = load i64, ptr %8, align 8, !tbaa !11
  %1427 = add nsw i64 %1426, 1
  store i64 %1427, ptr %8, align 8, !tbaa !11
  br label %1401, !llvm.loop !47

1428:                                             ; preds = %1401
  %1429 = load i64, ptr %10, align 8, !tbaa !11
  %1430 = load i64, ptr %7, align 8, !tbaa !11
  %1431 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15tagsortmiddleirEPNS_9ae_vectorES1_llPNS_8ae_stateE(ptr noundef %20, ptr noundef %28, i64 noundef %1429, i64 noundef %1430, ptr noundef %1431)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %1432

1432:                                             ; preds = %1469, %1428
  %1433 = load i64, ptr %8, align 8, !tbaa !11
  %1434 = load i64, ptr %7, align 8, !tbaa !11
  %1435 = sub nsw i64 %1434, 1
  %1436 = icmp sle i64 %1433, %1435
  br i1 %1436, label %1437, label %1472

1437:                                             ; preds = %1432
  %1438 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %20, i32 0, i32 4
  %1439 = load ptr, ptr %1438, align 8, !tbaa !13
  %1440 = load i64, ptr %10, align 8, !tbaa !11
  %1441 = load i64, ptr %8, align 8, !tbaa !11
  %1442 = add nsw i64 %1440, %1441
  %1443 = getelementptr inbounds i64, ptr %1439, i64 %1442
  %1444 = load i64, ptr %1443, align 8, !tbaa !11
  %1445 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %19, i32 0, i32 4
  %1446 = load ptr, ptr %1445, align 8, !tbaa !13
  %1447 = load i64, ptr %8, align 8, !tbaa !11
  %1448 = getelementptr inbounds i64, ptr %1446, i64 %1447
  %1449 = load i64, ptr %1448, align 8, !tbaa !11
  %1450 = icmp ne i64 %1444, %1449
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %6, i1 noundef zeroext %1450, ptr noundef @.str.19, i32 noundef 13912, ptr noundef @.str.97)
  %1451 = load i8, ptr %37, align 1, !tbaa !5, !range !18, !noundef !19
  %1452 = trunc i8 %1451 to i1
  br i1 %1452, label %1453, label %1467

1453:                                             ; preds = %1437
  %1454 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %1455 = load ptr, ptr %1454, align 8, !tbaa !13
  %1456 = load i64, ptr %10, align 8, !tbaa !11
  %1457 = load i64, ptr %8, align 8, !tbaa !11
  %1458 = add nsw i64 %1456, %1457
  %1459 = getelementptr inbounds double, ptr %1455, i64 %1458
  %1460 = load double, ptr %1459, align 8, !tbaa !14
  %1461 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %1462 = load ptr, ptr %1461, align 8, !tbaa !13
  %1463 = load i64, ptr %8, align 8, !tbaa !11
  %1464 = getelementptr inbounds double, ptr %1462, i64 %1463
  %1465 = load double, ptr %1464, align 8, !tbaa !14
  %1466 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %1460, double noundef %1465)
  br label %1467

1467:                                             ; preds = %1453, %1437
  %1468 = phi i1 [ false, %1437 ], [ %1466, %1453 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %6, i1 noundef zeroext %1468, ptr noundef @.str.19, i32 noundef 13913, ptr noundef @.str.98)
  br label %1469

1469:                                             ; preds = %1467
  %1470 = load i64, ptr %8, align 8, !tbaa !11
  %1471 = add nsw i64 %1470, 1
  store i64 %1471, ptr %8, align 8, !tbaa !11
  br label %1432, !llvm.loop !48

1472:                                             ; preds = %1432
  %1473 = load i64, ptr %10, align 8, !tbaa !11
  %1474 = load i64, ptr %7, align 8, !tbaa !11
  %1475 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15tagsortmiddleiiEPNS_9ae_vectorES1_llPNS_8ae_stateE(ptr noundef %21, ptr noundef %30, i64 noundef %1473, i64 noundef %1474, ptr noundef %1475)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %1476

1476:                                             ; preds = %1514, %1472
  %1477 = load i64, ptr %8, align 8, !tbaa !11
  %1478 = load i64, ptr %7, align 8, !tbaa !11
  %1479 = sub nsw i64 %1478, 1
  %1480 = icmp sle i64 %1477, %1479
  br i1 %1480, label %1481, label %1517

1481:                                             ; preds = %1476
  %1482 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %1483 = load ptr, ptr %1482, align 8, !tbaa !13
  %1484 = load i64, ptr %10, align 8, !tbaa !11
  %1485 = load i64, ptr %8, align 8, !tbaa !11
  %1486 = add nsw i64 %1484, %1485
  %1487 = getelementptr inbounds i64, ptr %1483, i64 %1486
  %1488 = load i64, ptr %1487, align 8, !tbaa !11
  %1489 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %19, i32 0, i32 4
  %1490 = load ptr, ptr %1489, align 8, !tbaa !13
  %1491 = load i64, ptr %8, align 8, !tbaa !11
  %1492 = getelementptr inbounds i64, ptr %1490, i64 %1491
  %1493 = load i64, ptr %1492, align 8, !tbaa !11
  %1494 = icmp ne i64 %1488, %1493
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %6, i1 noundef zeroext %1494, ptr noundef @.str.19, i32 noundef 13918, ptr noundef @.str.99)
  %1495 = load i8, ptr %37, align 1, !tbaa !5, !range !18, !noundef !19
  %1496 = trunc i8 %1495 to i1
  br i1 %1496, label %1497, label %1512

1497:                                             ; preds = %1481
  %1498 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %30, i32 0, i32 4
  %1499 = load ptr, ptr %1498, align 8, !tbaa !13
  %1500 = load i64, ptr %10, align 8, !tbaa !11
  %1501 = load i64, ptr %8, align 8, !tbaa !11
  %1502 = add nsw i64 %1500, %1501
  %1503 = getelementptr inbounds i64, ptr %1499, i64 %1502
  %1504 = load i64, ptr %1503, align 8, !tbaa !11
  %1505 = sitofp i64 %1504 to double
  %1506 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %1507 = load ptr, ptr %1506, align 8, !tbaa !13
  %1508 = load i64, ptr %8, align 8, !tbaa !11
  %1509 = getelementptr inbounds double, ptr %1507, i64 %1508
  %1510 = load double, ptr %1509, align 8, !tbaa !14
  %1511 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %1505, double noundef %1510)
  br label %1512

1512:                                             ; preds = %1497, %1481
  %1513 = phi i1 [ false, %1481 ], [ %1511, %1497 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %6, i1 noundef zeroext %1513, ptr noundef @.str.19, i32 noundef 13919, ptr noundef @.str.100)
  br label %1514

1514:                                             ; preds = %1512
  %1515 = load i64, ptr %8, align 8, !tbaa !11
  %1516 = add nsw i64 %1515, 1
  store i64 %1516, ptr %8, align 8, !tbaa !11
  br label %1476, !llvm.loop !49

1517:                                             ; preds = %1476
  %1518 = load i64, ptr %10, align 8, !tbaa !11
  %1519 = load i64, ptr %7, align 8, !tbaa !11
  %1520 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl15tagsortmiddleriEPNS_9ae_vectorES1_llPNS_8ae_stateE(ptr noundef %25, ptr noundef %31, i64 noundef %1518, i64 noundef %1519, ptr noundef %1520)
  store i64 0, ptr %8, align 8, !tbaa !11
  br label %1521

1521:                                             ; preds = %1560, %1517
  %1522 = load i64, ptr %8, align 8, !tbaa !11
  %1523 = load i64, ptr %7, align 8, !tbaa !11
  %1524 = sub nsw i64 %1523, 1
  %1525 = icmp sle i64 %1522, %1524
  br i1 %1525, label %1526, label %1563

1526:                                             ; preds = %1521
  %1527 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %25, i32 0, i32 4
  %1528 = load ptr, ptr %1527, align 8, !tbaa !13
  %1529 = load i64, ptr %10, align 8, !tbaa !11
  %1530 = load i64, ptr %8, align 8, !tbaa !11
  %1531 = add nsw i64 %1529, %1530
  %1532 = getelementptr inbounds double, ptr %1528, i64 %1531
  %1533 = load double, ptr %1532, align 8, !tbaa !14
  %1534 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %19, i32 0, i32 4
  %1535 = load ptr, ptr %1534, align 8, !tbaa !13
  %1536 = load i64, ptr %8, align 8, !tbaa !11
  %1537 = getelementptr inbounds i64, ptr %1535, i64 %1536
  %1538 = load i64, ptr %1537, align 8, !tbaa !11
  %1539 = sitofp i64 %1538 to double
  %1540 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %1533, double noundef %1539)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %6, i1 noundef zeroext %1540, ptr noundef @.str.19, i32 noundef 13924, ptr noundef @.str.101)
  %1541 = load i8, ptr %37, align 1, !tbaa !5, !range !18, !noundef !19
  %1542 = trunc i8 %1541 to i1
  br i1 %1542, label %1543, label %1558

1543:                                             ; preds = %1526
  %1544 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %31, i32 0, i32 4
  %1545 = load ptr, ptr %1544, align 8, !tbaa !13
  %1546 = load i64, ptr %10, align 8, !tbaa !11
  %1547 = load i64, ptr %8, align 8, !tbaa !11
  %1548 = add nsw i64 %1546, %1547
  %1549 = getelementptr inbounds i64, ptr %1545, i64 %1548
  %1550 = load i64, ptr %1549, align 8, !tbaa !11
  %1551 = sitofp i64 %1550 to double
  %1552 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %1553 = load ptr, ptr %1552, align 8, !tbaa !13
  %1554 = load i64, ptr %8, align 8, !tbaa !11
  %1555 = getelementptr inbounds double, ptr %1553, i64 %1554
  %1556 = load double, ptr %1555, align 8, !tbaa !14
  %1557 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %1551, double noundef %1556)
  br label %1558

1558:                                             ; preds = %1543, %1526
  %1559 = phi i1 [ false, %1526 ], [ %1557, %1543 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %6, i1 noundef zeroext %1559, ptr noundef @.str.19, i32 noundef 13925, ptr noundef @.str.102)
  br label %1560

1560:                                             ; preds = %1558
  %1561 = load i64, ptr %8, align 8, !tbaa !11
  %1562 = add nsw i64 %1561, 1
  store i64 %1562, ptr %8, align 8, !tbaa !11
  br label %1521, !llvm.loop !50

1563:                                             ; preds = %1521
  br label %1564

1564:                                             ; preds = %1563
  %1565 = load i64, ptr %11, align 8, !tbaa !11
  %1566 = add nsw i64 %1565, 1
  store i64 %1566, ptr %11, align 8, !tbaa !11
  br label %69, !llvm.loop !51

1567:                                             ; preds = %69
  br label %1568

1568:                                             ; preds = %1567
  %1569 = load i64, ptr %7, align 8, !tbaa !11
  %1570 = add nsw i64 %1569, 1
  store i64 %1570, ptr %7, align 8, !tbaa !11
  br label %64, !llvm.loop !52

1571:                                             ; preds = %64
  %1572 = load i8, ptr %3, align 1, !tbaa !5, !range !18, !noundef !19
  %1573 = trunc i8 %1572 to i1
  br i1 %1573, label %1584, label %1574

1574:                                             ; preds = %1571
  %1575 = call i32 (ptr, ...) @printf(ptr noundef @.str.103)
  %1576 = load i8, ptr %6, align 1, !tbaa !5, !range !18, !noundef !19
  %1577 = trunc i8 %1576 to i1
  br i1 %1577, label %1578, label %1580

1578:                                             ; preds = %1574
  %1579 = call i32 (ptr, ...) @printf(ptr noundef @.str.15)
  br label %1582

1580:                                             ; preds = %1574
  %1581 = call i32 (ptr, ...) @printf(ptr noundef @.str.16)
  br label %1582

1582:                                             ; preds = %1580, %1578
  %1583 = call i32 (ptr, ...) @printf(ptr noundef @.str.17)
  br label %1584

1584:                                             ; preds = %1582, %1571
  %1585 = load i8, ptr %6, align 1, !tbaa !5, !range !18, !noundef !19
  %1586 = trunc i8 %1585 to i1
  %1587 = xor i1 %1586, true
  %1588 = zext i1 %1587 to i8
  store i8 %1588, ptr %38, align 1, !tbaa !5
  %1589 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1589)
  %1590 = load i8, ptr %38, align 1, !tbaa !5, !range !18, !noundef !19
  %1591 = trunc i8 %1590 to i1
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #4
  ret i1 %1591
}

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"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 = !{!7, !7, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"double", !7, i64 0}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = !{i8 0, i8 2}
!19 = !{}
!20 = distinct !{!20, !17}
!21 = distinct !{!21, !17}
!22 = distinct !{!22, !17}
!23 = distinct !{!23, !17}
!24 = distinct !{!24, !17}
!25 = distinct !{!25, !17}
!26 = distinct !{!26, !17}
!27 = distinct !{!27, !17}
!28 = distinct !{!28, !17}
!29 = distinct !{!29, !17}
!30 = distinct !{!30, !17}
!31 = distinct !{!31, !17}
!32 = distinct !{!32, !17}
!33 = distinct !{!33, !17}
!34 = distinct !{!34, !17}
!35 = distinct !{!35, !17}
!36 = distinct !{!36, !17}
!37 = distinct !{!37, !17}
!38 = distinct !{!38, !17}
!39 = distinct !{!39, !17}
!40 = distinct !{!40, !17}
!41 = distinct !{!41, !17}
!42 = distinct !{!42, !17}
!43 = distinct !{!43, !17}
!44 = distinct !{!44, !17}
!45 = distinct !{!45, !17}
!46 = distinct !{!46, !17}
!47 = distinct !{!47, !17}
!48 = distinct !{!48, !17}
!49 = distinct !{!49, !17}
!50 = distinct !{!50, !17}
!51 = distinct !{!51, !17}
!52 = distinct !{!52, !17}


; 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 }

@.str.15 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [17 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z9testtsortbPN11alglib_impl8ae_stateE(i1 noundef zeroext %0, ptr noundef %1) local_unnamed_addr #4 {
  %3 = alloca %"struct.alglib_impl::ae_frame", align 8
  %4 = alloca i8, align 1
  %5 = alloca %"struct.alglib_impl::ae_vector", align 8
  %6 = alloca %"struct.alglib_impl::ae_vector", align 8
  %7 = alloca %"struct.alglib_impl::ae_vector", align 8
  %8 = alloca %"struct.alglib_impl::ae_vector", align 8
  %9 = alloca %"struct.alglib_impl::ae_vector", align 8
  %10 = alloca %"struct.alglib_impl::ae_vector", align 8
  %11 = alloca %"struct.alglib_impl::ae_vector", align 8
  %12 = alloca %"struct.alglib_impl::ae_vector", align 8
  %13 = alloca %"struct.alglib_impl::ae_vector", align 8
  %14 = alloca %"struct.alglib_impl::ae_vector", align 8
  %15 = alloca %"struct.alglib_impl::ae_vector", align 8
  %16 = alloca %"struct.alglib_impl::ae_vector", align 8
  %17 = alloca %"struct.alglib_impl::ae_vector", align 8
  %18 = alloca %"struct.alglib_impl::ae_vector", align 8
  %19 = alloca %"struct.alglib_impl::ae_vector", align 8
  %20 = alloca %"struct.alglib_impl::ae_vector", align 8
  %21 = alloca %"struct.alglib_impl::ae_vector", align 8
  %22 = alloca %"struct.alglib_impl::ae_vector", align 8
  %23 = alloca %"struct.alglib_impl::ae_vector", align 8
  %24 = alloca %"struct.alglib_impl::ae_vector", align 8
  %25 = alloca %"struct.alglib_impl::ae_vector", align 8
  %26 = alloca %"struct.alglib_impl::ae_vector", align 8
  %27 = alloca %"struct.alglib_impl::ae_vector", align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %5) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %6) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %7) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %8) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %9) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %10) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %11) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %13) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %14) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %16) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %17) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %18) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %19) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %20) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %21) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %26) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %27) #5
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %1, ptr noundef nonnull %3)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %5, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %6, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %7, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %8, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %9, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %10, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %11, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %12, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %13, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %14, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %15, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %16, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %17, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %18, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %19, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %20, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %21, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %22, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %23, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %24, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %25, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %26, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %27, i8 0, i64 64, i1 false)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %5, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %6, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %7, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %8, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %9, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %10, i64 noundef 0, i64 noundef 2, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %11, i64 noundef 0, i64 noundef 2, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %12, i64 noundef 0, i64 noundef 2, 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 2, 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 2, 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 2, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %16, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %17, i64 noundef 0, i64 noundef 2, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %18, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %19, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %20, i64 noundef 0, i64 noundef 2, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %21, i64 noundef 0, i64 noundef 2, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %22, i64 noundef 0, i64 noundef 2, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %23, i64 noundef 0, i64 noundef 2, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %24, i64 noundef 0, i64 noundef 2, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %25, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %26, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %27, i64 noundef 0, i64 noundef 2, ptr noundef %1, i1 noundef zeroext true)
  store i8 0, ptr %4, align 1, !tbaa !5
  %28 = getelementptr inbounds i8, ptr %5, i64 56
  %29 = getelementptr inbounds i8, ptr %6, i64 56
  %30 = getelementptr inbounds i8, ptr %7, i64 56
  %31 = getelementptr inbounds i8, ptr %8, i64 56
  %32 = getelementptr inbounds i8, ptr %9, i64 56
  %33 = getelementptr inbounds i8, ptr %13, i64 56
  %34 = getelementptr inbounds i8, ptr %14, i64 56
  %35 = getelementptr inbounds i8, ptr %15, i64 56
  %36 = getelementptr inbounds i8, ptr %16, i64 56
  %37 = getelementptr inbounds i8, ptr %18, i64 56
  %38 = getelementptr inbounds i8, ptr %19, i64 56
  %39 = getelementptr inbounds i8, ptr %20, i64 56
  %40 = getelementptr inbounds i8, ptr %21, i64 56
  %41 = getelementptr inbounds i8, ptr %22, i64 56
  %42 = getelementptr inbounds i8, ptr %23, i64 56
  %43 = getelementptr inbounds i8, ptr %10, i64 56
  %44 = getelementptr inbounds i8, ptr %11, i64 56
  %45 = getelementptr inbounds i8, ptr %12, i64 56
  br label %.preheader546

.preheader546:                                    ; preds = %2, %787
  %indvar = phi i64 [ 0, %2 ], [ %indvar.next, %787 ]
  %.0588 = phi i64 [ 1, %2 ], [ %788, %787 ]
  %.not.not515548 = icmp ugt i64 %.0588, 1
  %46 = mul nuw nsw i64 %.0588, 3
  %xtraiter = and i64 %.0588, 1
  %47 = icmp eq i64 %indvar, 0
  %unroll_iter = and i64 %.0588, 9223372036854775806
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  %xtraiter646 = and i64 %indvar, 1
  %48 = icmp eq i64 %indvar, 1
  %unroll_iter649 = and i64 %indvar, -2
  %lcmp.mod647.not = icmp eq i64 %xtraiter646, 0
  br label %49

49:                                               ; preds = %.preheader546, %785
  %.0513587 = phi i64 [ 1, %.preheader546 ], [ %786, %785 ]
  call void @_ZL22testtsortunit_unset1diPN11alglib_impl9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %23, ptr noundef %1)
  call void @_ZL22testtsortunit_unset1diPN11alglib_impl9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %24, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %5, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %6, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %13, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %14, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %15, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %16, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %18, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %19, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %20, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %21, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %22, i64 noundef %.0588, ptr noundef %1)
  br label %50

50:                                               ; preds = %49, %50
  %.0511547 = phi i64 [ 0, %49 ], [ %109, %50 ]
  %51 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 100000000, ptr noundef %1)
  %52 = sitofp i64 %51 to double
  %53 = load ptr, ptr %28, align 8, !tbaa !9
  %54 = getelementptr inbounds double, ptr %53, i64 %.0511547
  store double %52, ptr %54, align 8, !tbaa !10
  %55 = load ptr, ptr %28, align 8, !tbaa !9
  %56 = getelementptr inbounds double, ptr %55, i64 %.0511547
  %57 = load double, ptr %56, align 8, !tbaa !10
  %58 = load ptr, ptr %29, align 8, !tbaa !9
  %59 = getelementptr inbounds double, ptr %58, i64 %.0511547
  store double %57, ptr %59, align 8, !tbaa !10
  %60 = load ptr, ptr %28, align 8, !tbaa !9
  %61 = getelementptr inbounds double, ptr %60, i64 %.0511547
  %62 = load double, ptr %61, align 8, !tbaa !10
  %63 = load ptr, ptr %30, align 8, !tbaa !9
  %64 = getelementptr inbounds double, ptr %63, i64 %.0511547
  store double %62, ptr %64, align 8, !tbaa !10
  %65 = load ptr, ptr %28, align 8, !tbaa !9
  %66 = getelementptr inbounds double, ptr %65, i64 %.0511547
  %67 = load double, ptr %66, align 8, !tbaa !10
  %68 = load ptr, ptr %31, align 8, !tbaa !9
  %69 = getelementptr inbounds double, ptr %68, i64 %.0511547
  store double %67, ptr %69, align 8, !tbaa !10
  %70 = load ptr, ptr %28, align 8, !tbaa !9
  %71 = getelementptr inbounds double, ptr %70, i64 %.0511547
  %72 = load double, ptr %71, align 8, !tbaa !10
  %73 = load ptr, ptr %32, align 8, !tbaa !9
  %74 = getelementptr inbounds double, ptr %73, i64 %.0511547
  store double %72, ptr %74, align 8, !tbaa !10
  %75 = load ptr, ptr %28, align 8, !tbaa !9
  %76 = getelementptr inbounds double, ptr %75, i64 %.0511547
  %77 = load double, ptr %76, align 8, !tbaa !10
  %78 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %77, ptr noundef %1)
  %79 = load ptr, ptr %33, align 8, !tbaa !9
  %80 = getelementptr inbounds i64, ptr %79, i64 %.0511547
  store i64 %78, ptr %80, align 8, !tbaa !12
  %81 = load ptr, ptr %28, align 8, !tbaa !9
  %82 = getelementptr inbounds double, ptr %81, i64 %.0511547
  %83 = load double, ptr %82, align 8, !tbaa !10
  %84 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %83, ptr noundef %1)
  %85 = load ptr, ptr %34, align 8, !tbaa !9
  %86 = getelementptr inbounds i64, ptr %85, i64 %.0511547
  store i64 %84, ptr %86, align 8, !tbaa !12
  %87 = load ptr, ptr %28, align 8, !tbaa !9
  %88 = getelementptr inbounds double, ptr %87, i64 %.0511547
  %89 = load double, ptr %88, align 8, !tbaa !10
  %90 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %89, ptr noundef %1)
  %91 = load ptr, ptr %35, align 8, !tbaa !9
  %92 = getelementptr inbounds i64, ptr %91, i64 %.0511547
  store i64 %90, ptr %92, align 8, !tbaa !12
  %93 = load ptr, ptr %28, align 8, !tbaa !9
  %94 = getelementptr inbounds double, ptr %93, i64 %.0511547
  %95 = load double, ptr %94, align 8, !tbaa !10
  %96 = load ptr, ptr %36, align 8, !tbaa !9
  %97 = getelementptr inbounds double, ptr %96, i64 %.0511547
  store double %95, ptr %97, align 8, !tbaa !10
  %98 = uitofp nneg i64 %.0511547 to double
  %99 = load ptr, ptr %37, align 8, !tbaa !9
  %100 = getelementptr inbounds double, ptr %99, i64 %.0511547
  store double %98, ptr %100, align 8, !tbaa !10
  %101 = load ptr, ptr %38, align 8, !tbaa !9
  %102 = getelementptr inbounds double, ptr %101, i64 %.0511547
  store double %98, ptr %102, align 8, !tbaa !10
  %103 = load ptr, ptr %39, align 8, !tbaa !9
  %104 = getelementptr inbounds i64, ptr %103, i64 %.0511547
  store i64 %.0511547, ptr %104, align 8, !tbaa !12
  %105 = load ptr, ptr %40, align 8, !tbaa !9
  %106 = getelementptr inbounds i64, ptr %105, i64 %.0511547
  store i64 %.0511547, ptr %106, align 8, !tbaa !12
  %107 = load ptr, ptr %41, align 8, !tbaa !9
  %108 = getelementptr inbounds i64, ptr %107, i64 %.0511547
  store i64 %.0511547, ptr %108, align 8, !tbaa !12
  %109 = add nuw nsw i64 %.0511547, 1
  %exitcond.not = icmp eq i64 %109, %.0588
  br i1 %exitcond.not, label %110, label %50, !llvm.loop !14

110:                                              ; preds = %50
  call void @_ZN11alglib_impl7tagsortEPNS_9ae_vectorElS1_S1_PNS_8ae_stateE(ptr noundef nonnull %6, i64 noundef %.0588, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef %1)
  call void @_ZL29testtsortunit_testsortresultsPKN11alglib_impl9ae_vectorES2_S2_S2_lPbPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull %5, i64 noundef %.0588, ptr noundef nonnull %4, ptr noundef %1)
  br i1 %.not.not515548, label %.lr.ph, label %._crit_edge.thread

.lr.ph:                                           ; preds = %110, %118
  %.0510550 = phi i1 [ %119, %118 ], [ true, %110 ]
  %.1512549 = phi i64 [ %120, %118 ], [ 1, %110 ]
  br i1 %.0510550, label %111, label %118

111:                                              ; preds = %.lr.ph
  %112 = load ptr, ptr %29, align 8, !tbaa !9
  %113 = getelementptr inbounds double, ptr %112, i64 %.1512549
  %114 = load double, ptr %113, align 8, !tbaa !10
  %115 = getelementptr i8, ptr %113, i64 -8
  %116 = load double, ptr %115, align 8, !tbaa !10
  %117 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %114, double noundef %116)
  br label %118

118:                                              ; preds = %111, %.lr.ph
  %119 = phi i1 [ false, %.lr.ph ], [ %117, %111 ]
  %120 = add nuw nsw i64 %.1512549, 1
  %exitcond590.not = icmp eq i64 %120, %.0588
  br i1 %exitcond590.not, label %._crit_edge, label %.lr.ph, !llvm.loop !16

._crit_edge:                                      ; preds = %118
  %121 = zext i1 %119 to i8
  br i1 %119, label %._crit_edge.thread, label %.loopexit

._crit_edge.thread:                               ; preds = %110, %._crit_edge
  %.0510.lcssa642 = phi i8 [ %121, %._crit_edge ], [ 1, %110 ]
  call void @_ZN11alglib_impl12tagsortfastiEPNS_9ae_vectorES1_S1_S1_lPNS_8ae_stateE(ptr noundef nonnull %7, ptr noundef nonnull %20, ptr noundef nonnull %25, ptr noundef nonnull %27, i64 noundef %.0588, ptr noundef %1)
  %.pre = load i8, ptr %4, align 1, !tbaa !5, !range !17
  br label %122

122:                                              ; preds = %._crit_edge.thread, %141
  %123 = phi i8 [ %.pre, %._crit_edge.thread ], [ %143, %141 ]
  %.2551 = phi i64 [ 0, %._crit_edge.thread ], [ %144, %141 ]
  %124 = trunc nuw i8 %123 to i1
  br i1 %124, label %141, label %125

125:                                              ; preds = %122
  %126 = load ptr, ptr %30, align 8, !tbaa !9
  %127 = getelementptr inbounds double, ptr %126, i64 %.2551
  %128 = load double, ptr %127, align 8, !tbaa !10
  %129 = load ptr, ptr %29, align 8, !tbaa !9
  %130 = getelementptr inbounds double, ptr %129, i64 %.2551
  %131 = load double, ptr %130, align 8, !tbaa !10
  %132 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %128, double noundef %131)
  br i1 %132, label %141, label %133

133:                                              ; preds = %125
  %134 = load ptr, ptr %39, align 8, !tbaa !9
  %135 = getelementptr inbounds i64, ptr %134, i64 %.2551
  %136 = load i64, ptr %135, align 8, !tbaa !12
  %137 = load ptr, ptr %42, align 8, !tbaa !9
  %138 = getelementptr inbounds i64, ptr %137, i64 %.2551
  %139 = load i64, ptr %138, align 8, !tbaa !12
  %140 = icmp ne i64 %136, %139
  br label %141

141:                                              ; preds = %133, %125, %122
  %142 = phi i1 [ true, %125 ], [ true, %122 ], [ %140, %133 ]
  %143 = zext i1 %142 to i8
  store i8 %143, ptr %4, align 1, !tbaa !5
  %144 = add nuw nsw i64 %.2551, 1
  %exitcond591.not = icmp eq i64 %144, %.0588
  br i1 %exitcond591.not, label %145, label %122, !llvm.loop !18

145:                                              ; preds = %141
  call void @_ZN11alglib_impl12tagsortfastrEPNS_9ae_vectorES1_S1_S1_lPNS_8ae_stateE(ptr noundef nonnull %8, ptr noundef nonnull %18, ptr noundef nonnull %25, ptr noundef nonnull %26, i64 noundef %.0588, ptr noundef %1)
  %.pre622 = load i8, ptr %4, align 1, !tbaa !5, !range !17
  br label %146

146:                                              ; preds = %145, %166
  %147 = phi i8 [ %.pre622, %145 ], [ %168, %166 ]
  %.3552 = phi i64 [ 0, %145 ], [ %169, %166 ]
  %148 = trunc nuw i8 %147 to i1
  br i1 %148, label %166, label %149

149:                                              ; preds = %146
  %150 = load ptr, ptr %31, align 8, !tbaa !9
  %151 = getelementptr inbounds double, ptr %150, i64 %.3552
  %152 = load double, ptr %151, align 8, !tbaa !10
  %153 = load ptr, ptr %29, align 8, !tbaa !9
  %154 = getelementptr inbounds double, ptr %153, i64 %.3552
  %155 = load double, ptr %154, align 8, !tbaa !10
  %156 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %152, double noundef %155)
  br i1 %156, label %166, label %157

157:                                              ; preds = %149
  %158 = load ptr, ptr %37, align 8, !tbaa !9
  %159 = getelementptr inbounds double, ptr %158, i64 %.3552
  %160 = load double, ptr %159, align 8, !tbaa !10
  %161 = load ptr, ptr %42, align 8, !tbaa !9
  %162 = getelementptr inbounds i64, ptr %161, i64 %.3552
  %163 = load i64, ptr %162, align 8, !tbaa !12
  %164 = sitofp i64 %163 to double
  %165 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %160, double noundef %164)
  br label %166

166:                                              ; preds = %157, %149, %146
  %167 = phi i1 [ true, %149 ], [ true, %146 ], [ %165, %157 ]
  %168 = zext i1 %167 to i8
  store i8 %168, ptr %4, align 1, !tbaa !5
  %169 = add nuw nsw i64 %.3552, 1
  %exitcond592.not = icmp eq i64 %169, %.0588
  br i1 %exitcond592.not, label %170, label %146, !llvm.loop !19

170:                                              ; preds = %166
  call void @_ZN11alglib_impl11tagsortfastEPNS_9ae_vectorES1_lPNS_8ae_stateE(ptr noundef nonnull %9, ptr noundef nonnull %25, i64 noundef %.0588, ptr noundef %1)
  %.pre623 = load i8, ptr %4, align 1, !tbaa !5, !range !17
  br label %171

171:                                              ; preds = %170, %182
  %172 = phi i8 [ %.pre623, %170 ], [ %184, %182 ]
  %.4553 = phi i64 [ 0, %170 ], [ %185, %182 ]
  %173 = trunc nuw i8 %172 to i1
  br i1 %173, label %182, label %174

174:                                              ; preds = %171
  %175 = load ptr, ptr %32, align 8, !tbaa !9
  %176 = getelementptr inbounds double, ptr %175, i64 %.4553
  %177 = load double, ptr %176, align 8, !tbaa !10
  %178 = load ptr, ptr %29, align 8, !tbaa !9
  %179 = getelementptr inbounds double, ptr %178, i64 %.4553
  %180 = load double, ptr %179, align 8, !tbaa !10
  %181 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %177, double noundef %180)
  br label %182

182:                                              ; preds = %174, %171
  %183 = phi i1 [ true, %171 ], [ %181, %174 ]
  %184 = zext i1 %183 to i8
  store i8 %184, ptr %4, align 1, !tbaa !5
  %185 = add nuw nsw i64 %.4553, 1
  %exitcond593.not = icmp eq i64 %185, %.0588
  br i1 %exitcond593.not, label %186, label %171, !llvm.loop !20

186:                                              ; preds = %182
  call void @_ZN11alglib_impl15tagsortmiddleirEPNS_9ae_vectorES1_llPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef nonnull %19, i64 noundef 0, i64 noundef %.0588, ptr noundef %1)
  %.pre624 = load i8, ptr %4, align 1, !tbaa !5, !range !17
  br label %187

187:                                              ; preds = %186, %208
  %188 = phi i8 [ %.pre624, %186 ], [ %210, %208 ]
  %.5554 = phi i64 [ 0, %186 ], [ %211, %208 ]
  %189 = trunc nuw i8 %188 to i1
  br i1 %189, label %208, label %190

190:                                              ; preds = %187
  %191 = load ptr, ptr %33, align 8, !tbaa !9
  %192 = getelementptr inbounds i64, ptr %191, i64 %.5554
  %193 = load i64, ptr %192, align 8, !tbaa !12
  %194 = sitofp i64 %193 to double
  %195 = load ptr, ptr %29, align 8, !tbaa !9
  %196 = getelementptr inbounds double, ptr %195, i64 %.5554
  %197 = load double, ptr %196, align 8, !tbaa !10
  %198 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %194, double noundef %197)
  br i1 %198, label %208, label %199

199:                                              ; preds = %190
  %200 = load ptr, ptr %38, align 8, !tbaa !9
  %201 = getelementptr inbounds double, ptr %200, i64 %.5554
  %202 = load double, ptr %201, align 8, !tbaa !10
  %203 = load ptr, ptr %42, align 8, !tbaa !9
  %204 = getelementptr inbounds i64, ptr %203, i64 %.5554
  %205 = load i64, ptr %204, align 8, !tbaa !12
  %206 = sitofp i64 %205 to double
  %207 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %202, double noundef %206)
  br label %208

208:                                              ; preds = %199, %190, %187
  %209 = phi i1 [ true, %190 ], [ true, %187 ], [ %207, %199 ]
  %210 = zext i1 %209 to i8
  store i8 %210, ptr %4, align 1, !tbaa !5
  %211 = add nuw nsw i64 %.5554, 1
  %exitcond594.not = icmp eq i64 %211, %.0588
  br i1 %exitcond594.not, label %212, label %187, !llvm.loop !21

212:                                              ; preds = %208
  call void @_ZN11alglib_impl11sortmiddleiEPNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef nonnull %14, i64 noundef 0, i64 noundef %.0588, ptr noundef %1)
  %.pre625 = load i8, ptr %4, align 1, !tbaa !5, !range !17
  br label %213

213:                                              ; preds = %212, %225
  %214 = phi i8 [ %.pre625, %212 ], [ %227, %225 ]
  %.6555 = phi i64 [ 0, %212 ], [ %228, %225 ]
  %215 = trunc nuw i8 %214 to i1
  br i1 %215, label %225, label %216

216:                                              ; preds = %213
  %217 = load ptr, ptr %34, align 8, !tbaa !9
  %218 = getelementptr inbounds i64, ptr %217, i64 %.6555
  %219 = load i64, ptr %218, align 8, !tbaa !12
  %220 = sitofp i64 %219 to double
  %221 = load ptr, ptr %29, align 8, !tbaa !9
  %222 = getelementptr inbounds double, ptr %221, i64 %.6555
  %223 = load double, ptr %222, align 8, !tbaa !10
  %224 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %220, double noundef %223)
  br label %225

225:                                              ; preds = %216, %213
  %226 = phi i1 [ true, %213 ], [ %224, %216 ]
  %227 = zext i1 %226 to i8
  store i8 %227, ptr %4, align 1, !tbaa !5
  %228 = add nuw nsw i64 %.6555, 1
  %exitcond595.not = icmp eq i64 %228, %.0588
  br i1 %exitcond595.not, label %229, label %213, !llvm.loop !22

229:                                              ; preds = %225
  call void @_ZN11alglib_impl15tagsortmiddleiiEPNS_9ae_vectorES1_llPNS_8ae_stateE(ptr noundef nonnull %15, ptr noundef nonnull %21, i64 noundef 0, i64 noundef %.0588, ptr noundef %1)
  br label %230

230:                                              ; preds = %229, %247
  %.7556 = phi i64 [ 0, %229 ], [ %249, %247 ]
  %231 = load ptr, ptr %35, align 8, !tbaa !9
  %232 = getelementptr inbounds i64, ptr %231, i64 %.7556
  %233 = load i64, ptr %232, align 8, !tbaa !12
  %234 = sitofp i64 %233 to double
  %235 = load ptr, ptr %29, align 8, !tbaa !9
  %236 = getelementptr inbounds double, ptr %235, i64 %.7556
  %237 = load double, ptr %236, align 8, !tbaa !10
  %238 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %234, double noundef %237)
  br i1 %238, label %247, label %239

239:                                              ; preds = %230
  %240 = load ptr, ptr %40, align 8, !tbaa !9
  %241 = getelementptr inbounds i64, ptr %240, i64 %.7556
  %242 = load i64, ptr %241, align 8, !tbaa !12
  %243 = load ptr, ptr %42, align 8, !tbaa !9
  %244 = getelementptr inbounds i64, ptr %243, i64 %.7556
  %245 = load i64, ptr %244, align 8, !tbaa !12
  %246 = icmp ne i64 %242, %245
  br label %247

247:                                              ; preds = %239, %230
  %248 = phi i1 [ true, %230 ], [ %246, %239 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %248, ptr noundef nonnull @.str.19, i32 noundef 13699, ptr noundef nonnull @.str.95)
  %249 = add nuw nsw i64 %.7556, 1
  %exitcond596.not = icmp eq i64 %249, %.0588
  br i1 %exitcond596.not, label %250, label %230, !llvm.loop !23

250:                                              ; preds = %247
  call void @_ZN11alglib_impl15tagsortmiddleriEPNS_9ae_vectorES1_llPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef nonnull %22, i64 noundef 0, i64 noundef %.0588, ptr noundef %1)
  br label %251

251:                                              ; preds = %250, %267
  %.8557 = phi i64 [ 0, %250 ], [ %269, %267 ]
  %252 = load ptr, ptr %36, align 8, !tbaa !9
  %253 = getelementptr inbounds double, ptr %252, i64 %.8557
  %254 = load double, ptr %253, align 8, !tbaa !10
  %255 = load ptr, ptr %29, align 8, !tbaa !9
  %256 = getelementptr inbounds double, ptr %255, i64 %.8557
  %257 = load double, ptr %256, align 8, !tbaa !10
  %258 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %254, double noundef %257)
  br i1 %258, label %267, label %259

259:                                              ; preds = %251
  %260 = load ptr, ptr %41, align 8, !tbaa !9
  %261 = getelementptr inbounds i64, ptr %260, i64 %.8557
  %262 = load i64, ptr %261, align 8, !tbaa !12
  %263 = load ptr, ptr %42, align 8, !tbaa !9
  %264 = getelementptr inbounds i64, ptr %263, i64 %.8557
  %265 = load i64, ptr %264, align 8, !tbaa !12
  %266 = icmp ne i64 %262, %265
  br label %267

267:                                              ; preds = %259, %251
  %268 = phi i1 [ true, %251 ], [ %266, %259 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %268, ptr noundef nonnull @.str.19, i32 noundef 13704, ptr noundef nonnull @.str.96)
  %269 = add nuw nsw i64 %.8557, 1
  %exitcond597.not = icmp eq i64 %269, %.0588
  br i1 %exitcond597.not, label %.loopexit, label %251, !llvm.loop !24

.loopexit:                                        ; preds = %267, %._crit_edge
  %.0510.lcssa641 = phi i8 [ %121, %._crit_edge ], [ %.0510.lcssa642, %267 ]
  call void @_ZL22testtsortunit_unset1diPN11alglib_impl9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %23, ptr noundef %1)
  call void @_ZL22testtsortunit_unset1diPN11alglib_impl9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %24, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %5, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %6, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %13, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %14, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %15, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %18, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %19, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %20, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %21, i64 noundef %.0588, ptr noundef %1)
  br label %270

270:                                              ; preds = %.loopexit, %270
  %.9558 = phi i64 [ 0, %.loopexit ], [ %323, %270 ]
  %271 = sub nsw i64 %.0588, %.9558
  %272 = sdiv i64 %271, 2
  %273 = sitofp i64 %272 to double
  %274 = load ptr, ptr %28, align 8, !tbaa !9
  %275 = getelementptr inbounds double, ptr %274, i64 %.9558
  store double %273, ptr %275, align 8, !tbaa !10
  %276 = load ptr, ptr %28, align 8, !tbaa !9
  %277 = getelementptr inbounds double, ptr %276, i64 %.9558
  %278 = load double, ptr %277, align 8, !tbaa !10
  %279 = load ptr, ptr %29, align 8, !tbaa !9
  %280 = getelementptr inbounds double, ptr %279, i64 %.9558
  store double %278, ptr %280, align 8, !tbaa !10
  %281 = load ptr, ptr %28, align 8, !tbaa !9
  %282 = getelementptr inbounds double, ptr %281, i64 %.9558
  %283 = load double, ptr %282, align 8, !tbaa !10
  %284 = load ptr, ptr %30, align 8, !tbaa !9
  %285 = getelementptr inbounds double, ptr %284, i64 %.9558
  store double %283, ptr %285, align 8, !tbaa !10
  %286 = load ptr, ptr %28, align 8, !tbaa !9
  %287 = getelementptr inbounds double, ptr %286, i64 %.9558
  %288 = load double, ptr %287, align 8, !tbaa !10
  %289 = load ptr, ptr %31, align 8, !tbaa !9
  %290 = getelementptr inbounds double, ptr %289, i64 %.9558
  store double %288, ptr %290, align 8, !tbaa !10
  %291 = load ptr, ptr %28, align 8, !tbaa !9
  %292 = getelementptr inbounds double, ptr %291, i64 %.9558
  %293 = load double, ptr %292, align 8, !tbaa !10
  %294 = load ptr, ptr %32, align 8, !tbaa !9
  %295 = getelementptr inbounds double, ptr %294, i64 %.9558
  store double %293, ptr %295, align 8, !tbaa !10
  %296 = load ptr, ptr %28, align 8, !tbaa !9
  %297 = getelementptr inbounds double, ptr %296, i64 %.9558
  %298 = load double, ptr %297, align 8, !tbaa !10
  %299 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %298, ptr noundef %1)
  %300 = load ptr, ptr %33, align 8, !tbaa !9
  %301 = getelementptr inbounds i64, ptr %300, i64 %.9558
  store i64 %299, ptr %301, align 8, !tbaa !12
  %302 = load ptr, ptr %28, align 8, !tbaa !9
  %303 = getelementptr inbounds double, ptr %302, i64 %.9558
  %304 = load double, ptr %303, align 8, !tbaa !10
  %305 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %304, ptr noundef %1)
  %306 = load ptr, ptr %34, align 8, !tbaa !9
  %307 = getelementptr inbounds i64, ptr %306, i64 %.9558
  store i64 %305, ptr %307, align 8, !tbaa !12
  %308 = load ptr, ptr %28, align 8, !tbaa !9
  %309 = getelementptr inbounds double, ptr %308, i64 %.9558
  %310 = load double, ptr %309, align 8, !tbaa !10
  %311 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %310, ptr noundef %1)
  %312 = load ptr, ptr %35, align 8, !tbaa !9
  %313 = getelementptr inbounds i64, ptr %312, i64 %.9558
  store i64 %311, ptr %313, align 8, !tbaa !12
  %314 = uitofp nneg i64 %.9558 to double
  %315 = load ptr, ptr %37, align 8, !tbaa !9
  %316 = getelementptr inbounds double, ptr %315, i64 %.9558
  store double %314, ptr %316, align 8, !tbaa !10
  %317 = load ptr, ptr %38, align 8, !tbaa !9
  %318 = getelementptr inbounds double, ptr %317, i64 %.9558
  store double %314, ptr %318, align 8, !tbaa !10
  %319 = load ptr, ptr %39, align 8, !tbaa !9
  %320 = getelementptr inbounds i64, ptr %319, i64 %.9558
  store i64 %.9558, ptr %320, align 8, !tbaa !12
  %321 = load ptr, ptr %40, align 8, !tbaa !9
  %322 = getelementptr inbounds i64, ptr %321, i64 %.9558
  store i64 %.9558, ptr %322, align 8, !tbaa !12
  %323 = add nuw nsw i64 %.9558, 1
  %exitcond598.not = icmp eq i64 %323, %.0588
  br i1 %exitcond598.not, label %324, label %270, !llvm.loop !25

324:                                              ; preds = %270
  call void @_ZN11alglib_impl7tagsortEPNS_9ae_vectorElS1_S1_PNS_8ae_stateE(ptr noundef nonnull %6, i64 noundef %.0588, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef %1)
  call void @_ZL29testtsortunit_testsortresultsPKN11alglib_impl9ae_vectorES2_S2_S2_lPbPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull %5, i64 noundef %.0588, ptr noundef nonnull %4, ptr noundef %1)
  call void @_ZN11alglib_impl12tagsortfastiEPNS_9ae_vectorES1_S1_S1_lPNS_8ae_stateE(ptr noundef nonnull %7, ptr noundef nonnull %20, ptr noundef nonnull %25, ptr noundef nonnull %27, i64 noundef %.0588, ptr noundef %1)
  %.pre626 = load i8, ptr %4, align 1, !tbaa !5, !range !17
  br label %325

325:                                              ; preds = %324, %336
  %326 = phi i8 [ %.pre626, %324 ], [ %338, %336 ]
  %.10559 = phi i64 [ 0, %324 ], [ %339, %336 ]
  %327 = trunc nuw i8 %326 to i1
  br i1 %327, label %336, label %328

328:                                              ; preds = %325
  %329 = load ptr, ptr %30, align 8, !tbaa !9
  %330 = getelementptr inbounds double, ptr %329, i64 %.10559
  %331 = load double, ptr %330, align 8, !tbaa !10
  %332 = load ptr, ptr %29, align 8, !tbaa !9
  %333 = getelementptr inbounds double, ptr %332, i64 %.10559
  %334 = load double, ptr %333, align 8, !tbaa !10
  %335 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %331, double noundef %334)
  br label %336

336:                                              ; preds = %328, %325
  %337 = phi i1 [ true, %325 ], [ %335, %328 ]
  %338 = zext i1 %337 to i8
  store i8 %338, ptr %4, align 1, !tbaa !5
  %339 = add nuw nsw i64 %.10559, 1
  %exitcond599.not = icmp eq i64 %339, %.0588
  br i1 %exitcond599.not, label %340, label %325, !llvm.loop !26

340:                                              ; preds = %336
  call void @_ZN11alglib_impl12tagsortfastrEPNS_9ae_vectorES1_S1_S1_lPNS_8ae_stateE(ptr noundef nonnull %8, ptr noundef nonnull %18, ptr noundef nonnull %25, ptr noundef nonnull %26, i64 noundef %.0588, ptr noundef %1)
  %.pre627 = load i8, ptr %4, align 1, !tbaa !5, !range !17
  br label %341

341:                                              ; preds = %340, %352
  %342 = phi i8 [ %.pre627, %340 ], [ %354, %352 ]
  %.11560 = phi i64 [ 0, %340 ], [ %355, %352 ]
  %343 = trunc nuw i8 %342 to i1
  br i1 %343, label %352, label %344

344:                                              ; preds = %341
  %345 = load ptr, ptr %31, align 8, !tbaa !9
  %346 = getelementptr inbounds double, ptr %345, i64 %.11560
  %347 = load double, ptr %346, align 8, !tbaa !10
  %348 = load ptr, ptr %29, align 8, !tbaa !9
  %349 = getelementptr inbounds double, ptr %348, i64 %.11560
  %350 = load double, ptr %349, align 8, !tbaa !10
  %351 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %347, double noundef %350)
  br label %352

352:                                              ; preds = %344, %341
  %353 = phi i1 [ true, %341 ], [ %351, %344 ]
  %354 = zext i1 %353 to i8
  store i8 %354, ptr %4, align 1, !tbaa !5
  %355 = add nuw nsw i64 %.11560, 1
  %exitcond600.not = icmp eq i64 %355, %.0588
  br i1 %exitcond600.not, label %356, label %341, !llvm.loop !27

356:                                              ; preds = %352
  call void @_ZN11alglib_impl11tagsortfastEPNS_9ae_vectorES1_lPNS_8ae_stateE(ptr noundef nonnull %9, ptr noundef nonnull %25, i64 noundef %.0588, ptr noundef %1)
  %.pre628 = load i8, ptr %4, align 1, !tbaa !5, !range !17
  br label %357

357:                                              ; preds = %356, %368
  %358 = phi i8 [ %.pre628, %356 ], [ %370, %368 ]
  %.12561 = phi i64 [ 0, %356 ], [ %371, %368 ]
  %359 = trunc nuw i8 %358 to i1
  br i1 %359, label %368, label %360

360:                                              ; preds = %357
  %361 = load ptr, ptr %32, align 8, !tbaa !9
  %362 = getelementptr inbounds double, ptr %361, i64 %.12561
  %363 = load double, ptr %362, align 8, !tbaa !10
  %364 = load ptr, ptr %29, align 8, !tbaa !9
  %365 = getelementptr inbounds double, ptr %364, i64 %.12561
  %366 = load double, ptr %365, align 8, !tbaa !10
  %367 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %363, double noundef %366)
  br label %368

368:                                              ; preds = %360, %357
  %369 = phi i1 [ true, %357 ], [ %367, %360 ]
  %370 = zext i1 %369 to i8
  store i8 %370, ptr %4, align 1, !tbaa !5
  %371 = add nuw nsw i64 %.12561, 1
  %exitcond601.not = icmp eq i64 %371, %.0588
  br i1 %exitcond601.not, label %372, label %357, !llvm.loop !28

372:                                              ; preds = %368
  call void @_ZN11alglib_impl15tagsortmiddleirEPNS_9ae_vectorES1_llPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef nonnull %19, i64 noundef 0, i64 noundef %.0588, ptr noundef %1)
  %.pre629 = load i8, ptr %4, align 1, !tbaa !5, !range !17
  br label %373

373:                                              ; preds = %372, %385
  %374 = phi i8 [ %.pre629, %372 ], [ %387, %385 ]
  %.13562 = phi i64 [ 0, %372 ], [ %388, %385 ]
  %375 = trunc nuw i8 %374 to i1
  br i1 %375, label %385, label %376

376:                                              ; preds = %373
  %377 = load ptr, ptr %33, align 8, !tbaa !9
  %378 = getelementptr inbounds i64, ptr %377, i64 %.13562
  %379 = load i64, ptr %378, align 8, !tbaa !12
  %380 = sitofp i64 %379 to double
  %381 = load ptr, ptr %29, align 8, !tbaa !9
  %382 = getelementptr inbounds double, ptr %381, i64 %.13562
  %383 = load double, ptr %382, align 8, !tbaa !10
  %384 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %380, double noundef %383)
  br label %385

385:                                              ; preds = %376, %373
  %386 = phi i1 [ true, %373 ], [ %384, %376 ]
  %387 = zext i1 %386 to i8
  store i8 %387, ptr %4, align 1, !tbaa !5
  %388 = add nuw nsw i64 %.13562, 1
  %exitcond602.not = icmp eq i64 %388, %.0588
  br i1 %exitcond602.not, label %389, label %373, !llvm.loop !29

389:                                              ; preds = %385
  call void @_ZN11alglib_impl11sortmiddleiEPNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef nonnull %14, i64 noundef 0, i64 noundef %.0588, ptr noundef %1)
  %.pre630 = load i8, ptr %4, align 1, !tbaa !5, !range !17
  br label %390

390:                                              ; preds = %389, %402
  %391 = phi i8 [ %.pre630, %389 ], [ %404, %402 ]
  %.14563 = phi i64 [ 0, %389 ], [ %405, %402 ]
  %392 = trunc nuw i8 %391 to i1
  br i1 %392, label %402, label %393

393:                                              ; preds = %390
  %394 = load ptr, ptr %34, align 8, !tbaa !9
  %395 = getelementptr inbounds i64, ptr %394, i64 %.14563
  %396 = load i64, ptr %395, align 8, !tbaa !12
  %397 = sitofp i64 %396 to double
  %398 = load ptr, ptr %29, align 8, !tbaa !9
  %399 = getelementptr inbounds double, ptr %398, i64 %.14563
  %400 = load double, ptr %399, align 8, !tbaa !10
  %401 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %397, double noundef %400)
  br label %402

402:                                              ; preds = %393, %390
  %403 = phi i1 [ true, %390 ], [ %401, %393 ]
  %404 = zext i1 %403 to i8
  store i8 %404, ptr %4, align 1, !tbaa !5
  %405 = add nuw nsw i64 %.14563, 1
  %exitcond603.not = icmp eq i64 %405, %.0588
  br i1 %exitcond603.not, label %406, label %390, !llvm.loop !30

406:                                              ; preds = %402
  call void @_ZN11alglib_impl15tagsortmiddleiiEPNS_9ae_vectorES1_llPNS_8ae_stateE(ptr noundef nonnull %15, ptr noundef nonnull %21, i64 noundef 0, i64 noundef %.0588, ptr noundef %1)
  %.pre631 = load i8, ptr %4, align 1, !tbaa !5, !range !17
  br label %407

407:                                              ; preds = %406, %419
  %408 = phi i8 [ %.pre631, %406 ], [ %421, %419 ]
  %.15564 = phi i64 [ 0, %406 ], [ %422, %419 ]
  %409 = trunc nuw i8 %408 to i1
  br i1 %409, label %419, label %410

410:                                              ; preds = %407
  %411 = load ptr, ptr %35, align 8, !tbaa !9
  %412 = getelementptr inbounds i64, ptr %411, i64 %.15564
  %413 = load i64, ptr %412, align 8, !tbaa !12
  %414 = sitofp i64 %413 to double
  %415 = load ptr, ptr %29, align 8, !tbaa !9
  %416 = getelementptr inbounds double, ptr %415, i64 %.15564
  %417 = load double, ptr %416, align 8, !tbaa !10
  %418 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %414, double noundef %417)
  br label %419

419:                                              ; preds = %410, %407
  %420 = phi i1 [ true, %407 ], [ %418, %410 ]
  %421 = zext i1 %420 to i8
  store i8 %421, ptr %4, align 1, !tbaa !5
  %422 = add nuw nsw i64 %.15564, 1
  %exitcond604.not = icmp eq i64 %422, %.0588
  br i1 %exitcond604.not, label %423, label %407, !llvm.loop !31

423:                                              ; preds = %419
  call void @_ZL22testtsortunit_unset1diPN11alglib_impl9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %23, ptr noundef %1)
  call void @_ZL22testtsortunit_unset1diPN11alglib_impl9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %24, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %5, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %6, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %13, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %18, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %19, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %20, i64 noundef %.0588, ptr noundef %1)
  br label %424

424:                                              ; preds = %423, %424
  %.16565 = phi i64 [ 0, %423 ], [ %460, %424 ]
  %425 = load ptr, ptr %28, align 8, !tbaa !9
  %426 = getelementptr inbounds double, ptr %425, i64 %.16565
  store double 0.000000e+00, ptr %426, align 8, !tbaa !10
  %427 = load ptr, ptr %28, align 8, !tbaa !9
  %428 = getelementptr inbounds double, ptr %427, i64 %.16565
  %429 = load double, ptr %428, align 8, !tbaa !10
  %430 = load ptr, ptr %29, align 8, !tbaa !9
  %431 = getelementptr inbounds double, ptr %430, i64 %.16565
  store double %429, ptr %431, align 8, !tbaa !10
  %432 = load ptr, ptr %28, align 8, !tbaa !9
  %433 = getelementptr inbounds double, ptr %432, i64 %.16565
  %434 = load double, ptr %433, align 8, !tbaa !10
  %435 = load ptr, ptr %30, align 8, !tbaa !9
  %436 = getelementptr inbounds double, ptr %435, i64 %.16565
  store double %434, ptr %436, align 8, !tbaa !10
  %437 = load ptr, ptr %28, align 8, !tbaa !9
  %438 = getelementptr inbounds double, ptr %437, i64 %.16565
  %439 = load double, ptr %438, align 8, !tbaa !10
  %440 = load ptr, ptr %31, align 8, !tbaa !9
  %441 = getelementptr inbounds double, ptr %440, i64 %.16565
  store double %439, ptr %441, align 8, !tbaa !10
  %442 = load ptr, ptr %28, align 8, !tbaa !9
  %443 = getelementptr inbounds double, ptr %442, i64 %.16565
  %444 = load double, ptr %443, align 8, !tbaa !10
  %445 = load ptr, ptr %32, align 8, !tbaa !9
  %446 = getelementptr inbounds double, ptr %445, i64 %.16565
  store double %444, ptr %446, align 8, !tbaa !10
  %447 = load ptr, ptr %28, align 8, !tbaa !9
  %448 = getelementptr inbounds double, ptr %447, i64 %.16565
  %449 = load double, ptr %448, align 8, !tbaa !10
  %450 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %449, ptr noundef %1)
  %451 = load ptr, ptr %33, align 8, !tbaa !9
  %452 = getelementptr inbounds i64, ptr %451, i64 %.16565
  store i64 %450, ptr %452, align 8, !tbaa !12
  %453 = uitofp nneg i64 %.16565 to double
  %454 = load ptr, ptr %37, align 8, !tbaa !9
  %455 = getelementptr inbounds double, ptr %454, i64 %.16565
  store double %453, ptr %455, align 8, !tbaa !10
  %456 = load ptr, ptr %38, align 8, !tbaa !9
  %457 = getelementptr inbounds double, ptr %456, i64 %.16565
  store double %453, ptr %457, align 8, !tbaa !10
  %458 = load ptr, ptr %39, align 8, !tbaa !9
  %459 = getelementptr inbounds i64, ptr %458, i64 %.16565
  store i64 %.16565, ptr %459, align 8, !tbaa !12
  %460 = add nuw nsw i64 %.16565, 1
  %exitcond605.not = icmp eq i64 %460, %.0588
  br i1 %exitcond605.not, label %461, label %424, !llvm.loop !32

461:                                              ; preds = %424
  call void @_ZN11alglib_impl7tagsortEPNS_9ae_vectorElS1_S1_PNS_8ae_stateE(ptr noundef nonnull %6, i64 noundef %.0588, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef %1)
  call void @_ZL29testtsortunit_testsortresultsPKN11alglib_impl9ae_vectorES2_S2_S2_lPbPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull %5, i64 noundef %.0588, ptr noundef nonnull %4, ptr noundef %1)
  call void @_ZN11alglib_impl12tagsortfastiEPNS_9ae_vectorES1_S1_S1_lPNS_8ae_stateE(ptr noundef nonnull %7, ptr noundef nonnull %20, ptr noundef nonnull %25, ptr noundef nonnull %27, i64 noundef %.0588, ptr noundef %1)
  %.pre632 = load i8, ptr %4, align 1, !tbaa !5, !range !17
  br label %462

462:                                              ; preds = %461, %473
  %463 = phi i8 [ %.pre632, %461 ], [ %475, %473 ]
  %.17566 = phi i64 [ 0, %461 ], [ %476, %473 ]
  %464 = trunc nuw i8 %463 to i1
  br i1 %464, label %473, label %465

465:                                              ; preds = %462
  %466 = load ptr, ptr %30, align 8, !tbaa !9
  %467 = getelementptr inbounds double, ptr %466, i64 %.17566
  %468 = load double, ptr %467, align 8, !tbaa !10
  %469 = load ptr, ptr %29, align 8, !tbaa !9
  %470 = getelementptr inbounds double, ptr %469, i64 %.17566
  %471 = load double, ptr %470, align 8, !tbaa !10
  %472 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %468, double noundef %471)
  br label %473

473:                                              ; preds = %465, %462
  %474 = phi i1 [ true, %462 ], [ %472, %465 ]
  %475 = zext i1 %474 to i8
  store i8 %475, ptr %4, align 1, !tbaa !5
  %476 = add nuw nsw i64 %.17566, 1
  %exitcond606.not = icmp eq i64 %476, %.0588
  br i1 %exitcond606.not, label %477, label %462, !llvm.loop !33

477:                                              ; preds = %473
  call void @_ZN11alglib_impl12tagsortfastrEPNS_9ae_vectorES1_S1_S1_lPNS_8ae_stateE(ptr noundef nonnull %8, ptr noundef nonnull %18, ptr noundef nonnull %25, ptr noundef nonnull %26, i64 noundef %.0588, ptr noundef %1)
  %.pre633 = load i8, ptr %4, align 1, !tbaa !5, !range !17
  br label %478

478:                                              ; preds = %477, %489
  %479 = phi i8 [ %.pre633, %477 ], [ %491, %489 ]
  %.18567 = phi i64 [ 0, %477 ], [ %492, %489 ]
  %480 = trunc nuw i8 %479 to i1
  br i1 %480, label %489, label %481

481:                                              ; preds = %478
  %482 = load ptr, ptr %31, align 8, !tbaa !9
  %483 = getelementptr inbounds double, ptr %482, i64 %.18567
  %484 = load double, ptr %483, align 8, !tbaa !10
  %485 = load ptr, ptr %29, align 8, !tbaa !9
  %486 = getelementptr inbounds double, ptr %485, i64 %.18567
  %487 = load double, ptr %486, align 8, !tbaa !10
  %488 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %484, double noundef %487)
  br label %489

489:                                              ; preds = %481, %478
  %490 = phi i1 [ true, %478 ], [ %488, %481 ]
  %491 = zext i1 %490 to i8
  store i8 %491, ptr %4, align 1, !tbaa !5
  %492 = add nuw nsw i64 %.18567, 1
  %exitcond607.not = icmp eq i64 %492, %.0588
  br i1 %exitcond607.not, label %493, label %478, !llvm.loop !34

493:                                              ; preds = %489
  call void @_ZN11alglib_impl11tagsortfastEPNS_9ae_vectorES1_lPNS_8ae_stateE(ptr noundef nonnull %9, ptr noundef nonnull %25, i64 noundef %.0588, ptr noundef %1)
  %.pre634 = load i8, ptr %4, align 1, !tbaa !5, !range !17
  br label %494

494:                                              ; preds = %493, %505
  %495 = phi i8 [ %.pre634, %493 ], [ %507, %505 ]
  %.19568 = phi i64 [ 0, %493 ], [ %508, %505 ]
  %496 = trunc nuw i8 %495 to i1
  br i1 %496, label %505, label %497

497:                                              ; preds = %494
  %498 = load ptr, ptr %32, align 8, !tbaa !9
  %499 = getelementptr inbounds double, ptr %498, i64 %.19568
  %500 = load double, ptr %499, align 8, !tbaa !10
  %501 = load ptr, ptr %29, align 8, !tbaa !9
  %502 = getelementptr inbounds double, ptr %501, i64 %.19568
  %503 = load double, ptr %502, align 8, !tbaa !10
  %504 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %500, double noundef %503)
  br label %505

505:                                              ; preds = %497, %494
  %506 = phi i1 [ true, %494 ], [ %504, %497 ]
  %507 = zext i1 %506 to i8
  store i8 %507, ptr %4, align 1, !tbaa !5
  %508 = add nuw nsw i64 %.19568, 1
  %exitcond608.not = icmp eq i64 %508, %.0588
  br i1 %exitcond608.not, label %509, label %494, !llvm.loop !35

509:                                              ; preds = %505
  call void @_ZN11alglib_impl15tagsortmiddleirEPNS_9ae_vectorES1_llPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef nonnull %19, i64 noundef 0, i64 noundef %.0588, ptr noundef %1)
  %.pre635 = load i8, ptr %4, align 1, !tbaa !5, !range !17
  br label %510

510:                                              ; preds = %509, %522
  %511 = phi i8 [ %.pre635, %509 ], [ %524, %522 ]
  %.20569 = phi i64 [ 0, %509 ], [ %525, %522 ]
  %512 = trunc nuw i8 %511 to i1
  br i1 %512, label %522, label %513

513:                                              ; preds = %510
  %514 = load ptr, ptr %33, align 8, !tbaa !9
  %515 = getelementptr inbounds i64, ptr %514, i64 %.20569
  %516 = load i64, ptr %515, align 8, !tbaa !12
  %517 = sitofp i64 %516 to double
  %518 = load ptr, ptr %29, align 8, !tbaa !9
  %519 = getelementptr inbounds double, ptr %518, i64 %.20569
  %520 = load double, ptr %519, align 8, !tbaa !10
  %521 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %517, double noundef %520)
  br label %522

522:                                              ; preds = %513, %510
  %523 = phi i1 [ true, %510 ], [ %521, %513 ]
  %524 = zext i1 %523 to i8
  store i8 %524, ptr %4, align 1, !tbaa !5
  %525 = add nuw nsw i64 %.20569, 1
  %exitcond609.not = icmp eq i64 %525, %.0588
  br i1 %exitcond609.not, label %526, label %510, !llvm.loop !36

526:                                              ; preds = %522
  call void @_ZL22testtsortunit_unset1diPN11alglib_impl9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %23, ptr noundef %1)
  call void @_ZL22testtsortunit_unset1diPN11alglib_impl9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %24, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %5, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %6, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %13, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %18, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %19, i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %20, i64 noundef %.0588, ptr noundef %1)
  br label %527

527:                                              ; preds = %526, %527
  %.21570 = phi i64 [ 0, %526 ], [ %565, %527 ]
  %528 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 2, ptr noundef %1)
  %529 = sitofp i64 %528 to double
  %530 = load ptr, ptr %28, align 8, !tbaa !9
  %531 = getelementptr inbounds double, ptr %530, i64 %.21570
  store double %529, ptr %531, align 8, !tbaa !10
  %532 = load ptr, ptr %28, align 8, !tbaa !9
  %533 = getelementptr inbounds double, ptr %532, i64 %.21570
  %534 = load double, ptr %533, align 8, !tbaa !10
  %535 = load ptr, ptr %29, align 8, !tbaa !9
  %536 = getelementptr inbounds double, ptr %535, i64 %.21570
  store double %534, ptr %536, align 8, !tbaa !10
  %537 = load ptr, ptr %28, align 8, !tbaa !9
  %538 = getelementptr inbounds double, ptr %537, i64 %.21570
  %539 = load double, ptr %538, align 8, !tbaa !10
  %540 = load ptr, ptr %30, align 8, !tbaa !9
  %541 = getelementptr inbounds double, ptr %540, i64 %.21570
  store double %539, ptr %541, align 8, !tbaa !10
  %542 = load ptr, ptr %28, align 8, !tbaa !9
  %543 = getelementptr inbounds double, ptr %542, i64 %.21570
  %544 = load double, ptr %543, align 8, !tbaa !10
  %545 = load ptr, ptr %31, align 8, !tbaa !9
  %546 = getelementptr inbounds double, ptr %545, i64 %.21570
  store double %544, ptr %546, align 8, !tbaa !10
  %547 = load ptr, ptr %28, align 8, !tbaa !9
  %548 = getelementptr inbounds double, ptr %547, i64 %.21570
  %549 = load double, ptr %548, align 8, !tbaa !10
  %550 = load ptr, ptr %32, align 8, !tbaa !9
  %551 = getelementptr inbounds double, ptr %550, i64 %.21570
  store double %549, ptr %551, align 8, !tbaa !10
  %552 = load ptr, ptr %28, align 8, !tbaa !9
  %553 = getelementptr inbounds double, ptr %552, i64 %.21570
  %554 = load double, ptr %553, align 8, !tbaa !10
  %555 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %554, ptr noundef %1)
  %556 = load ptr, ptr %33, align 8, !tbaa !9
  %557 = getelementptr inbounds i64, ptr %556, i64 %.21570
  store i64 %555, ptr %557, align 8, !tbaa !12
  %558 = uitofp nneg i64 %.21570 to double
  %559 = load ptr, ptr %37, align 8, !tbaa !9
  %560 = getelementptr inbounds double, ptr %559, i64 %.21570
  store double %558, ptr %560, align 8, !tbaa !10
  %561 = load ptr, ptr %38, align 8, !tbaa !9
  %562 = getelementptr inbounds double, ptr %561, i64 %.21570
  store double %558, ptr %562, align 8, !tbaa !10
  %563 = load ptr, ptr %39, align 8, !tbaa !9
  %564 = getelementptr inbounds i64, ptr %563, i64 %.21570
  store i64 %.21570, ptr %564, align 8, !tbaa !12
  %565 = add nuw nsw i64 %.21570, 1
  %exitcond610.not = icmp eq i64 %565, %.0588
  br i1 %exitcond610.not, label %566, label %527, !llvm.loop !37

566:                                              ; preds = %527
  call void @_ZN11alglib_impl7tagsortEPNS_9ae_vectorElS1_S1_PNS_8ae_stateE(ptr noundef nonnull %6, i64 noundef %.0588, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef %1)
  call void @_ZL29testtsortunit_testsortresultsPKN11alglib_impl9ae_vectorES2_S2_S2_lPbPNS_8ae_stateE(ptr noundef nonnull %6, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull %5, i64 noundef %.0588, ptr noundef nonnull %4, ptr noundef %1)
  call void @_ZN11alglib_impl12tagsortfastiEPNS_9ae_vectorES1_S1_S1_lPNS_8ae_stateE(ptr noundef nonnull %7, ptr noundef nonnull %20, ptr noundef nonnull %25, ptr noundef nonnull %27, i64 noundef %.0588, ptr noundef %1)
  %.pre636 = load i8, ptr %4, align 1, !tbaa !5, !range !17
  br label %567

567:                                              ; preds = %566, %578
  %568 = phi i8 [ %.pre636, %566 ], [ %580, %578 ]
  %.22571 = phi i64 [ 0, %566 ], [ %581, %578 ]
  %569 = trunc nuw i8 %568 to i1
  br i1 %569, label %578, label %570

570:                                              ; preds = %567
  %571 = load ptr, ptr %30, align 8, !tbaa !9
  %572 = getelementptr inbounds double, ptr %571, i64 %.22571
  %573 = load double, ptr %572, align 8, !tbaa !10
  %574 = load ptr, ptr %29, align 8, !tbaa !9
  %575 = getelementptr inbounds double, ptr %574, i64 %.22571
  %576 = load double, ptr %575, align 8, !tbaa !10
  %577 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %573, double noundef %576)
  br label %578

578:                                              ; preds = %570, %567
  %579 = phi i1 [ true, %567 ], [ %577, %570 ]
  %580 = zext i1 %579 to i8
  store i8 %580, ptr %4, align 1, !tbaa !5
  %581 = add nuw nsw i64 %.22571, 1
  %exitcond611.not = icmp eq i64 %581, %.0588
  br i1 %exitcond611.not, label %582, label %567, !llvm.loop !38

582:                                              ; preds = %578
  call void @_ZN11alglib_impl12tagsortfastrEPNS_9ae_vectorES1_S1_S1_lPNS_8ae_stateE(ptr noundef nonnull %8, ptr noundef nonnull %18, ptr noundef nonnull %25, ptr noundef nonnull %26, i64 noundef %.0588, ptr noundef %1)
  %.pre637 = load i8, ptr %4, align 1, !tbaa !5, !range !17
  br label %583

583:                                              ; preds = %582, %594
  %584 = phi i8 [ %.pre637, %582 ], [ %596, %594 ]
  %.23572 = phi i64 [ 0, %582 ], [ %597, %594 ]
  %585 = trunc nuw i8 %584 to i1
  br i1 %585, label %594, label %586

586:                                              ; preds = %583
  %587 = load ptr, ptr %31, align 8, !tbaa !9
  %588 = getelementptr inbounds double, ptr %587, i64 %.23572
  %589 = load double, ptr %588, align 8, !tbaa !10
  %590 = load ptr, ptr %29, align 8, !tbaa !9
  %591 = getelementptr inbounds double, ptr %590, i64 %.23572
  %592 = load double, ptr %591, align 8, !tbaa !10
  %593 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %589, double noundef %592)
  br label %594

594:                                              ; preds = %586, %583
  %595 = phi i1 [ true, %583 ], [ %593, %586 ]
  %596 = zext i1 %595 to i8
  store i8 %596, ptr %4, align 1, !tbaa !5
  %597 = add nuw nsw i64 %.23572, 1
  %exitcond612.not = icmp eq i64 %597, %.0588
  br i1 %exitcond612.not, label %598, label %583, !llvm.loop !39

598:                                              ; preds = %594
  call void @_ZN11alglib_impl11tagsortfastEPNS_9ae_vectorES1_lPNS_8ae_stateE(ptr noundef nonnull %9, ptr noundef nonnull %25, i64 noundef %.0588, ptr noundef %1)
  %.pre638 = load i8, ptr %4, align 1, !tbaa !5, !range !17
  br label %599

599:                                              ; preds = %598, %610
  %600 = phi i8 [ %.pre638, %598 ], [ %612, %610 ]
  %.24573 = phi i64 [ 0, %598 ], [ %613, %610 ]
  %601 = trunc nuw i8 %600 to i1
  br i1 %601, label %610, label %602

602:                                              ; preds = %599
  %603 = load ptr, ptr %32, align 8, !tbaa !9
  %604 = getelementptr inbounds double, ptr %603, i64 %.24573
  %605 = load double, ptr %604, align 8, !tbaa !10
  %606 = load ptr, ptr %29, align 8, !tbaa !9
  %607 = getelementptr inbounds double, ptr %606, i64 %.24573
  %608 = load double, ptr %607, align 8, !tbaa !10
  %609 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %605, double noundef %608)
  br label %610

610:                                              ; preds = %602, %599
  %611 = phi i1 [ true, %599 ], [ %609, %602 ]
  %612 = zext i1 %611 to i8
  store i8 %612, ptr %4, align 1, !tbaa !5
  %613 = add nuw nsw i64 %.24573, 1
  %exitcond613.not = icmp eq i64 %613, %.0588
  br i1 %exitcond613.not, label %614, label %599, !llvm.loop !40

614:                                              ; preds = %610
  call void @_ZN11alglib_impl15tagsortmiddleirEPNS_9ae_vectorES1_llPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef nonnull %19, i64 noundef 0, i64 noundef %.0588, ptr noundef %1)
  %.pre639 = load i8, ptr %4, align 1, !tbaa !5, !range !17
  br label %615

615:                                              ; preds = %614, %627
  %616 = phi i8 [ %.pre639, %614 ], [ %629, %627 ]
  %.25574 = phi i64 [ 0, %614 ], [ %630, %627 ]
  %617 = trunc nuw i8 %616 to i1
  br i1 %617, label %627, label %618

618:                                              ; preds = %615
  %619 = load ptr, ptr %33, align 8, !tbaa !9
  %620 = getelementptr inbounds i64, ptr %619, i64 %.25574
  %621 = load i64, ptr %620, align 8, !tbaa !12
  %622 = sitofp i64 %621 to double
  %623 = load ptr, ptr %29, align 8, !tbaa !9
  %624 = getelementptr inbounds double, ptr %623, i64 %.25574
  %625 = load double, ptr %624, align 8, !tbaa !10
  %626 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %622, double noundef %625)
  br label %627

627:                                              ; preds = %618, %615
  %628 = phi i1 [ true, %615 ], [ %626, %618 ]
  %629 = zext i1 %628 to i8
  store i8 %629, ptr %4, align 1, !tbaa !5
  %630 = add nuw nsw i64 %.25574, 1
  %exitcond614.not = icmp eq i64 %630, %.0588
  br i1 %exitcond614.not, label %631, label %615, !llvm.loop !41

631:                                              ; preds = %627
  %632 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef %.0588, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %10, i64 noundef %46, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %46, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %46, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %16, i64 noundef %46, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %18, i64 noundef %46, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %19, i64 noundef %46, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %21, i64 noundef %46, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %22, i64 noundef %46, ptr noundef %1)
  br label %633

633:                                              ; preds = %631, %633
  %.26575 = phi i64 [ 0, %631 ], [ %662, %633 ]
  %634 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 100000000, ptr noundef %1)
  %635 = load ptr, ptr %43, align 8, !tbaa !9
  %636 = getelementptr inbounds i64, ptr %635, i64 %.26575
  store i64 %634, ptr %636, align 8, !tbaa !12
  %637 = load ptr, ptr %43, align 8, !tbaa !9
  %638 = getelementptr inbounds i64, ptr %637, i64 %.26575
  %639 = load i64, ptr %638, align 8, !tbaa !12
  %640 = load ptr, ptr %44, align 8, !tbaa !9
  %641 = getelementptr inbounds i64, ptr %640, i64 %.26575
  store i64 %639, ptr %641, align 8, !tbaa !12
  %642 = load ptr, ptr %43, align 8, !tbaa !9
  %643 = getelementptr inbounds i64, ptr %642, i64 %.26575
  %644 = load i64, ptr %643, align 8, !tbaa !12
  %645 = load ptr, ptr %45, align 8, !tbaa !9
  %646 = getelementptr inbounds i64, ptr %645, i64 %.26575
  store i64 %644, ptr %646, align 8, !tbaa !12
  %647 = load ptr, ptr %43, align 8, !tbaa !9
  %648 = getelementptr inbounds i64, ptr %647, i64 %.26575
  %649 = load i64, ptr %648, align 8, !tbaa !12
  %650 = sitofp i64 %649 to double
  %651 = load ptr, ptr %36, align 8, !tbaa !9
  %652 = getelementptr inbounds double, ptr %651, i64 %.26575
  store double %650, ptr %652, align 8, !tbaa !10
  %653 = uitofp nneg i64 %.26575 to double
  %654 = load ptr, ptr %37, align 8, !tbaa !9
  %655 = getelementptr inbounds double, ptr %654, i64 %.26575
  store double %653, ptr %655, align 8, !tbaa !10
  %656 = load ptr, ptr %38, align 8, !tbaa !9
  %657 = getelementptr inbounds double, ptr %656, i64 %.26575
  store double %653, ptr %657, align 8, !tbaa !10
  %658 = load ptr, ptr %40, align 8, !tbaa !9
  %659 = getelementptr inbounds i64, ptr %658, i64 %.26575
  store i64 %.26575, ptr %659, align 8, !tbaa !12
  %660 = load ptr, ptr %41, align 8, !tbaa !9
  %661 = getelementptr inbounds i64, ptr %660, i64 %.26575
  store i64 %.26575, ptr %661, align 8, !tbaa !12
  %662 = add nuw nsw i64 %.26575, 1
  %.not.not540 = icmp ult i64 %662, %46
  br i1 %.not.not540, label %633, label %.preheader.preheader, !llvm.loop !42

.preheader.preheader:                             ; preds = %633
  br i1 %47, label %.unr-lcssa, label %.preheader

.preheader:                                       ; preds = %.preheader.preheader, %.preheader
  %.27576 = phi i64 [ %682, %.preheader ], [ 0, %.preheader.preheader ]
  %niter = phi i64 [ %niter.next.1, %.preheader ], [ 0, %.preheader.preheader ]
  %663 = load ptr, ptr %43, align 8, !tbaa !9
  %664 = add nsw i64 %.27576, %632
  %665 = getelementptr inbounds i64, ptr %663, i64 %664
  %666 = load i64, ptr %665, align 8, !tbaa !12
  %667 = getelementptr inbounds i64, ptr %663, i64 %.27576
  store i64 %666, ptr %667, align 8, !tbaa !12
  %668 = load ptr, ptr %37, align 8, !tbaa !9
  %669 = getelementptr inbounds double, ptr %668, i64 %664
  %670 = load double, ptr %669, align 8, !tbaa !10
  %671 = getelementptr inbounds double, ptr %668, i64 %.27576
  store double %670, ptr %671, align 8, !tbaa !10
  %672 = or disjoint i64 %.27576, 1
  %673 = load ptr, ptr %43, align 8, !tbaa !9
  %674 = add nsw i64 %672, %632
  %675 = getelementptr inbounds i64, ptr %673, i64 %674
  %676 = load i64, ptr %675, align 8, !tbaa !12
  %677 = getelementptr inbounds i64, ptr %673, i64 %672
  store i64 %676, ptr %677, align 8, !tbaa !12
  %678 = load ptr, ptr %37, align 8, !tbaa !9
  %679 = getelementptr inbounds double, ptr %678, i64 %674
  %680 = load double, ptr %679, align 8, !tbaa !10
  %681 = getelementptr inbounds double, ptr %678, i64 %672
  store double %680, ptr %681, align 8, !tbaa !10
  %682 = add nuw nsw i64 %.27576, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %.unr-lcssa, label %.preheader, !llvm.loop !43

.unr-lcssa:                                       ; preds = %.preheader, %.preheader.preheader
  %.27576.unr = phi i64 [ 0, %.preheader.preheader ], [ %682, %.preheader ]
  br i1 %lcmp.mod.not, label %692, label %.preheader.epil

.preheader.epil:                                  ; preds = %.unr-lcssa
  %683 = load ptr, ptr %43, align 8, !tbaa !9
  %684 = add nsw i64 %.27576.unr, %632
  %685 = getelementptr inbounds i64, ptr %683, i64 %684
  %686 = load i64, ptr %685, align 8, !tbaa !12
  %687 = getelementptr inbounds i64, ptr %683, i64 %.27576.unr
  store i64 %686, ptr %687, align 8, !tbaa !12
  %688 = load ptr, ptr %37, align 8, !tbaa !9
  %689 = getelementptr inbounds double, ptr %688, i64 %684
  %690 = load double, ptr %689, align 8, !tbaa !10
  %691 = getelementptr inbounds double, ptr %688, i64 %.27576.unr
  store double %690, ptr %691, align 8, !tbaa !10
  br label %692

692:                                              ; preds = %.unr-lcssa, %.preheader.epil
  call void @_ZN11alglib_impl15tagsortmiddleirEPNS_9ae_vectorES1_llPNS_8ae_stateE(ptr noundef nonnull %10, ptr noundef nonnull %18, i64 noundef 0, i64 noundef %.0588, ptr noundef %1)
  br i1 %.not.not515548, label %.lr.ph581, label %._crit_edge582

.lr.ph581:                                        ; preds = %692
  %693 = load ptr, ptr %43, align 8
  br i1 %48, label %._crit_edge582.loopexit.unr-lcssa, label %.lr.ph581.new

.lr.ph581.new:                                    ; preds = %.lr.ph581, %.critedge
  %.1579 = phi i8 [ %708, %.critedge ], [ %.0510.lcssa641, %.lr.ph581 ]
  %.28578 = phi i64 [ %709, %.critedge ], [ 1, %.lr.ph581 ]
  %niter650 = phi i64 [ %niter650.next.1, %.critedge ], [ 0, %.lr.ph581 ]
  %694 = trunc nuw i8 %.1579 to i1
  br i1 %694, label %695, label %.critedge

695:                                              ; preds = %.lr.ph581.new
  %696 = getelementptr inbounds i64, ptr %693, i64 %.28578
  %697 = load i64, ptr %696, align 8, !tbaa !12
  %698 = getelementptr i8, ptr %696, i64 -8
  %699 = load i64, ptr %698, align 8, !tbaa !12
  %700 = icmp ne i64 %697, %699
  br i1 %700, label %701, label %.critedge

701:                                              ; preds = %695
  %702 = getelementptr inbounds i64, ptr %693, i64 %.28578
  %703 = getelementptr inbounds i8, ptr %702, i64 8
  %704 = load i64, ptr %703, align 8, !tbaa !12
  %705 = load i64, ptr %702, align 8, !tbaa !12
  %706 = icmp ne i64 %704, %705
  br label %.critedge

.critedge:                                        ; preds = %.lr.ph581.new, %701, %695
  %707 = phi i1 [ false, %695 ], [ %706, %701 ], [ false, %.lr.ph581.new ]
  %708 = zext i1 %707 to i8
  %709 = add nuw nsw i64 %.28578, 2
  %niter650.next.1 = add i64 %niter650, 2
  %niter650.ncmp.1 = icmp eq i64 %niter650.next.1, %unroll_iter649
  br i1 %niter650.ncmp.1, label %._crit_edge582.loopexit.unr-lcssa, label %.lr.ph581.new, !llvm.loop !44

._crit_edge582.loopexit.unr-lcssa:                ; preds = %.critedge, %.lr.ph581
  %.lcssa645.ph = phi i8 [ poison, %.lr.ph581 ], [ %708, %.critedge ]
  %.1579.unr = phi i8 [ %.0510.lcssa641, %.lr.ph581 ], [ %708, %.critedge ]
  %.28578.unr = phi i64 [ 1, %.lr.ph581 ], [ %709, %.critedge ]
  br i1 %lcmp.mod647.not, label %._crit_edge582, label %.epil.preheader

.epil.preheader:                                  ; preds = %._crit_edge582.loopexit.unr-lcssa
  %710 = trunc nuw i8 %.1579.unr to i1
  br i1 %710, label %711, label %._crit_edge582.loopexit.epilog-lcssa

711:                                              ; preds = %.epil.preheader
  %712 = getelementptr inbounds i64, ptr %693, i64 %.28578.unr
  %713 = load i64, ptr %712, align 8, !tbaa !12
  %714 = getelementptr i8, ptr %712, i64 -8
  %715 = load i64, ptr %714, align 8, !tbaa !12
  %716 = icmp ne i64 %713, %715
  br label %._crit_edge582.loopexit.epilog-lcssa

._crit_edge582.loopexit.epilog-lcssa:             ; preds = %711, %.epil.preheader
  %717 = phi i1 [ false, %.epil.preheader ], [ %716, %711 ]
  %718 = zext i1 %717 to i8
  br label %._crit_edge582

._crit_edge582:                                   ; preds = %._crit_edge582.loopexit.epilog-lcssa, %._crit_edge582.loopexit.unr-lcssa, %692
  %.1.lcssa = phi i8 [ %.0510.lcssa641, %692 ], [ %.lcssa645.ph, %._crit_edge582.loopexit.unr-lcssa ], [ %718, %._crit_edge582.loopexit.epilog-lcssa ]
  call void @_ZN11alglib_impl15tagsortmiddleirEPNS_9ae_vectorES1_llPNS_8ae_stateE(ptr noundef nonnull %11, ptr noundef nonnull %19, i64 noundef %632, i64 noundef %.0588, ptr noundef %1)
  %719 = trunc nuw i8 %.1.lcssa to i1
  br label %720

720:                                              ; preds = %._crit_edge582, %737
  %.29584 = phi i64 [ 0, %._crit_edge582 ], [ %739, %737 ]
  %721 = load ptr, ptr %44, align 8, !tbaa !9
  %722 = add nsw i64 %.29584, %632
  %723 = getelementptr inbounds i64, ptr %721, i64 %722
  %724 = load i64, ptr %723, align 8, !tbaa !12
  %725 = load ptr, ptr %43, align 8, !tbaa !9
  %726 = getelementptr inbounds i64, ptr %725, i64 %.29584
  %727 = load i64, ptr %726, align 8, !tbaa !12
  %728 = icmp ne i64 %724, %727
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %728, ptr noundef nonnull @.str.19, i32 noundef 13912, ptr noundef nonnull @.str.97)
  br i1 %719, label %729, label %737

729:                                              ; preds = %720
  %730 = load ptr, ptr %38, align 8, !tbaa !9
  %731 = getelementptr inbounds double, ptr %730, i64 %722
  %732 = load double, ptr %731, align 8, !tbaa !10
  %733 = load ptr, ptr %37, align 8, !tbaa !9
  %734 = getelementptr inbounds double, ptr %733, i64 %.29584
  %735 = load double, ptr %734, align 8, !tbaa !10
  %736 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %732, double noundef %735)
  br label %737

737:                                              ; preds = %729, %720
  %738 = phi i1 [ false, %720 ], [ %736, %729 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %738, ptr noundef nonnull @.str.19, i32 noundef 13913, ptr noundef nonnull @.str.98)
  %739 = add nuw nsw i64 %.29584, 1
  %exitcond617.not = icmp eq i64 %739, %.0588
  br i1 %exitcond617.not, label %740, label %720, !llvm.loop !45

740:                                              ; preds = %737
  call void @_ZN11alglib_impl15tagsortmiddleiiEPNS_9ae_vectorES1_llPNS_8ae_stateE(ptr noundef nonnull %12, ptr noundef nonnull %21, i64 noundef %632, i64 noundef %.0588, ptr noundef %1)
  br label %741

741:                                              ; preds = %740, %759
  %.30585 = phi i64 [ 0, %740 ], [ %761, %759 ]
  %742 = load ptr, ptr %45, align 8, !tbaa !9
  %743 = add nsw i64 %.30585, %632
  %744 = getelementptr inbounds i64, ptr %742, i64 %743
  %745 = load i64, ptr %744, align 8, !tbaa !12
  %746 = load ptr, ptr %43, align 8, !tbaa !9
  %747 = getelementptr inbounds i64, ptr %746, i64 %.30585
  %748 = load i64, ptr %747, align 8, !tbaa !12
  %749 = icmp ne i64 %745, %748
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %749, ptr noundef nonnull @.str.19, i32 noundef 13918, ptr noundef nonnull @.str.99)
  br i1 %719, label %750, label %759

750:                                              ; preds = %741
  %751 = load ptr, ptr %40, align 8, !tbaa !9
  %752 = getelementptr inbounds i64, ptr %751, i64 %743
  %753 = load i64, ptr %752, align 8, !tbaa !12
  %754 = sitofp i64 %753 to double
  %755 = load ptr, ptr %37, align 8, !tbaa !9
  %756 = getelementptr inbounds double, ptr %755, i64 %.30585
  %757 = load double, ptr %756, align 8, !tbaa !10
  %758 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %754, double noundef %757)
  br label %759

759:                                              ; preds = %750, %741
  %760 = phi i1 [ false, %741 ], [ %758, %750 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %760, ptr noundef nonnull @.str.19, i32 noundef 13919, ptr noundef nonnull @.str.100)
  %761 = add nuw nsw i64 %.30585, 1
  %exitcond618.not = icmp eq i64 %761, %.0588
  br i1 %exitcond618.not, label %762, label %741, !llvm.loop !46

762:                                              ; preds = %759
  call void @_ZN11alglib_impl15tagsortmiddleriEPNS_9ae_vectorES1_llPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef nonnull %22, i64 noundef %632, i64 noundef %.0588, ptr noundef %1)
  br label %763

763:                                              ; preds = %762, %782
  %.31586 = phi i64 [ 0, %762 ], [ %784, %782 ]
  %764 = load ptr, ptr %36, align 8, !tbaa !9
  %765 = add nsw i64 %.31586, %632
  %766 = getelementptr inbounds double, ptr %764, i64 %765
  %767 = load double, ptr %766, align 8, !tbaa !10
  %768 = load ptr, ptr %43, align 8, !tbaa !9
  %769 = getelementptr inbounds i64, ptr %768, i64 %.31586
  %770 = load i64, ptr %769, align 8, !tbaa !12
  %771 = sitofp i64 %770 to double
  %772 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %767, double noundef %771)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %772, ptr noundef nonnull @.str.19, i32 noundef 13924, ptr noundef nonnull @.str.101)
  br i1 %719, label %773, label %782

773:                                              ; preds = %763
  %774 = load ptr, ptr %41, align 8, !tbaa !9
  %775 = getelementptr inbounds i64, ptr %774, i64 %765
  %776 = load i64, ptr %775, align 8, !tbaa !12
  %777 = sitofp i64 %776 to double
  %778 = load ptr, ptr %37, align 8, !tbaa !9
  %779 = getelementptr inbounds double, ptr %778, i64 %.31586
  %780 = load double, ptr %779, align 8, !tbaa !10
  %781 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %777, double noundef %780)
  br label %782

782:                                              ; preds = %773, %763
  %783 = phi i1 [ false, %763 ], [ %781, %773 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %783, ptr noundef nonnull @.str.19, i32 noundef 13925, ptr noundef nonnull @.str.102)
  %784 = add nuw nsw i64 %.31586, 1
  %exitcond619.not = icmp eq i64 %784, %.0588
  br i1 %exitcond619.not, label %785, label %763, !llvm.loop !47

785:                                              ; preds = %782
  %786 = add nuw nsw i64 %.0513587, 1
  %exitcond620.not = icmp eq i64 %786, 11
  br i1 %exitcond620.not, label %787, label %49, !llvm.loop !48

787:                                              ; preds = %785
  %788 = add nuw nsw i64 %.0588, 1
  %exitcond621.not = icmp eq i64 %788, 101
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond621.not, label %789, label %.preheader546, !llvm.loop !49

789:                                              ; preds = %787
  br i1 %0, label %796, label %790

790:                                              ; preds = %789
  %791 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.103)
  %792 = load i8, ptr %4, align 1, !tbaa !5, !range !17, !noundef !50
  %793 = trunc nuw i8 %792 to i1
  %.str.15..str.16 = select i1 %793, ptr @.str.15, ptr @.str.16
  %794 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.15..str.16)
  %795 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.17)
  br label %796

796:                                              ; preds = %790, %789
  %797 = load i8, ptr %4, align 1, !tbaa !5, !range !17, !noundef !50
  %798 = trunc nuw i8 %797 to i1
  %799 = xor i1 %798, true
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1)
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %11) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %10) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %9) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %8) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %7) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %6) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %5) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #5
  ret i1 %799
}

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

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

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

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

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

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

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

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

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

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

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

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

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


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