; LLVM IR from h-ssiqueira/Sort_Algorithms :: src (main)

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

@txtFile = external dso_local global i8, align 1
@displayArray = external dso_local global i8, align 1
@executionTime = external dso_local global i8, align 1
@arraySorted = external dso_local global i8, align 1
@.str.1 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [247 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [334 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [358 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [189 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [120 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [115 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [118 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [180 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [143 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [219 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [97 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [54 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @printError(ptr noundef, i1 noundef zeroext) #0

declare void @clearScreen(...) #1

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

; Function Attrs: nounwind uwtable
declare dso_local signext i16 @menu(ptr noundef, i32 noundef) #0

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

declare void @title(...) #1

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

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

; Function Attrs: nounwind uwtable
declare dso_local void @informationsPreSort(ptr noundef, i32 noundef, ptr noundef, i32 noundef, i16 noundef signext) #0

; Function Attrs: nounwind uwtable
declare dso_local void @informationsPosSort(ptr noundef, i32 noundef, i64 noundef, i64 noundef, i1 noundef zeroext) #0

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

; Function Attrs: nounwind uwtable
define dso_local i32 @main() #0 {
  %1 = alloca i32, align 4
  %2 = alloca i64, align 8
  %3 = alloca i64, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i16, align 2
  %11 = alloca i16, align 2
  %12 = alloca i16, align 2
  store i32 0, ptr %1, align 4
  %13 = call i64 @time(ptr noundef null) #4
  %14 = trunc i64 %13 to i32
  call void @srand(i32 noundef %14) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %2) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #4
  store i32 10, ptr %6, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #4
  store i32 16, ptr %8, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #4
  store i32 32, ptr %9, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 2, ptr %10) #4
  call void @llvm.lifetime.start.p0(i64 2, ptr %11) #4
  call void @llvm.lifetime.start.p0(i64 2, ptr %12) #4
  store i16 2, ptr %12, align 2, !tbaa !9
  %15 = load i32, ptr %6, align 4, !tbaa !5
  call void @createArray(ptr noundef %4, i32 noundef %15)
  call void (...) @clearScreen()
  br label %16

16:                                               ; preds = %757, %0
  br label %17

17:                                               ; preds = %16
  %18 = load ptr, ptr %4, align 8, !tbaa !11
  %19 = load i32, ptr %6, align 4, !tbaa !5
  %20 = load i16, ptr %12, align 2, !tbaa !9
  %21 = load i32, ptr %9, align 4, !tbaa !5
  call void @generateArray(ptr noundef %18, i32 noundef %19, i16 noundef signext %20, i32 noundef %21)
  %22 = call signext i16 @menu(ptr noundef @.str.6, i32 noundef 9)
  store i16 %22, ptr %11, align 2, !tbaa !9
  call void (...) @clearScreen()
  %23 = load i16, ptr %11, align 2, !tbaa !9
  %24 = sext i16 %23 to i32
  %25 = icmp eq i32 %24, 0
  br i1 %25, label %26, label %27

26:                                               ; preds = %17
  br label %758

27:                                               ; preds = %17
  %28 = load i16, ptr %11, align 2, !tbaa !9
  %29 = sext i16 %28 to i32
  switch i32 %29, label %757 [
    i32 1, label %30
    i32 2, label %163
    i32 3, label %299
    i32 4, label %321
    i32 5, label %397
    i32 6, label %439
    i32 7, label %509
    i32 8, label %567
    i32 9, label %623
  ]

30:                                               ; preds = %27
  %31 = call signext i16 @menu(ptr noundef @.str.7, i32 noundef 13)
  store i16 %31, ptr %10, align 2, !tbaa !9
  call void (...) @clearScreen()
  %32 = load i16, ptr %10, align 2, !tbaa !9
  %33 = icmp ne i16 %32, 0
  br i1 %33, label %35, label %34

34:                                               ; preds = %30
  br label %757

35:                                               ; preds = %30
  %36 = load i16, ptr %10, align 2, !tbaa !9
  %37 = sext i16 %36 to i32
  switch i32 %37, label %158 [
    i32 1, label %38
    i32 2, label %47
    i32 3, label %56
    i32 4, label %65
    i32 5, label %74
    i32 6, label %83
    i32 7, label %92
    i32 8, label %101
    i32 9, label %110
    i32 10, label %120
    i32 11, label %130
    i32 12, label %139
    i32 13, label %148
  ]

38:                                               ; preds = %35
  %39 = load ptr, ptr %4, align 8, !tbaa !11
  %40 = load i32, ptr %6, align 4, !tbaa !5
  %41 = load i32, ptr %9, align 4, !tbaa !5
  %42 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %39, i32 noundef %40, ptr noundef @.str.8, i32 noundef %41, i16 noundef signext %42)
  %43 = call i64 @clock() #4
  store i64 %43, ptr %2, align 8, !tbaa !13
  %44 = load ptr, ptr %4, align 8, !tbaa !11
  %45 = load i32, ptr %6, align 4, !tbaa !5
  call void @badSort(ptr noundef %44, i32 noundef %45)
  %46 = call i64 @clock() #4
  store i64 %46, ptr %3, align 8, !tbaa !13
  br label %158

47:                                               ; preds = %35
  %48 = load ptr, ptr %4, align 8, !tbaa !11
  %49 = load i32, ptr %6, align 4, !tbaa !5
  %50 = load i32, ptr %9, align 4, !tbaa !5
  %51 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %48, i32 noundef %49, ptr noundef @.str.9, i32 noundef %50, i16 noundef signext %51)
  %52 = call i64 @clock() #4
  store i64 %52, ptr %2, align 8, !tbaa !13
  %53 = load ptr, ptr %4, align 8, !tbaa !11
  %54 = load i32, ptr %6, align 4, !tbaa !5
  call void @bogoBogoSort(ptr noundef %53, i32 noundef %54)
  %55 = call i64 @clock() #4
  store i64 %55, ptr %3, align 8, !tbaa !13
  br label %158

56:                                               ; preds = %35
  %57 = load ptr, ptr %4, align 8, !tbaa !11
  %58 = load i32, ptr %6, align 4, !tbaa !5
  %59 = load i32, ptr %9, align 4, !tbaa !5
  %60 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %57, i32 noundef %58, ptr noundef @.str.10, i32 noundef %59, i16 noundef signext %60)
  %61 = call i64 @clock() #4
  store i64 %61, ptr %2, align 8, !tbaa !13
  %62 = load ptr, ptr %4, align 8, !tbaa !11
  %63 = load i32, ptr %6, align 4, !tbaa !5
  call void @bogoSort(ptr noundef %62, i32 noundef %63)
  %64 = call i64 @clock() #4
  store i64 %64, ptr %3, align 8, !tbaa !13
  br label %158

65:                                               ; preds = %35
  %66 = load ptr, ptr %4, align 8, !tbaa !11
  %67 = load i32, ptr %6, align 4, !tbaa !5
  %68 = load i32, ptr %9, align 4, !tbaa !5
  %69 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %66, i32 noundef %67, ptr noundef @.str.11, i32 noundef %68, i16 noundef signext %69)
  %70 = call i64 @clock() #4
  store i64 %70, ptr %2, align 8, !tbaa !13
  %71 = load ptr, ptr %4, align 8, !tbaa !11
  %72 = load i32, ptr %6, align 4, !tbaa !5
  call void @bubbleBogoSort(ptr noundef %71, i32 noundef %72)
  %73 = call i64 @clock() #4
  store i64 %73, ptr %3, align 8, !tbaa !13
  br label %158

74:                                               ; preds = %35
  %75 = load ptr, ptr %4, align 8, !tbaa !11
  %76 = load i32, ptr %6, align 4, !tbaa !5
  %77 = load i32, ptr %9, align 4, !tbaa !5
  %78 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %75, i32 noundef %76, ptr noundef @.str.12, i32 noundef %77, i16 noundef signext %78)
  %79 = call i64 @clock() #4
  store i64 %79, ptr %2, align 8, !tbaa !13
  %80 = load ptr, ptr %4, align 8, !tbaa !11
  %81 = load i32, ptr %6, align 4, !tbaa !5
  call void @cocktailBogoSort(ptr noundef %80, i32 noundef %81)
  %82 = call i64 @clock() #4
  store i64 %82, ptr %3, align 8, !tbaa !13
  br label %158

83:                                               ; preds = %35
  %84 = load ptr, ptr %4, align 8, !tbaa !11
  %85 = load i32, ptr %6, align 4, !tbaa !5
  %86 = load i32, ptr %9, align 4, !tbaa !5
  %87 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %84, i32 noundef %85, ptr noundef @.str.13, i32 noundef %86, i16 noundef signext %87)
  %88 = call i64 @clock() #4
  store i64 %88, ptr %2, align 8, !tbaa !13
  %89 = load ptr, ptr %4, align 8, !tbaa !11
  %90 = load i32, ptr %6, align 4, !tbaa !5
  call void @exchangeBogoSort(ptr noundef %89, i32 noundef %90)
  %91 = call i64 @clock() #4
  store i64 %91, ptr %3, align 8, !tbaa !13
  br label %158

92:                                               ; preds = %35
  %93 = load ptr, ptr %4, align 8, !tbaa !11
  %94 = load i32, ptr %6, align 4, !tbaa !5
  %95 = load i32, ptr %9, align 4, !tbaa !5
  %96 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %93, i32 noundef %94, ptr noundef @.str.14, i32 noundef %95, i16 noundef signext %96)
  %97 = call i64 @clock() #4
  store i64 %97, ptr %2, align 8, !tbaa !13
  %98 = load ptr, ptr %4, align 8, !tbaa !11
  %99 = load i32, ptr %6, align 4, !tbaa !5
  call void @lessBogoSort(ptr noundef %98, i32 noundef %99)
  %100 = call i64 @clock() #4
  store i64 %100, ptr %3, align 8, !tbaa !13
  br label %158

101:                                              ; preds = %35
  %102 = load ptr, ptr %4, align 8, !tbaa !11
  %103 = load i32, ptr %6, align 4, !tbaa !5
  %104 = load i32, ptr %9, align 4, !tbaa !5
  %105 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %102, i32 noundef %103, ptr noundef @.str.15, i32 noundef %104, i16 noundef signext %105)
  %106 = call i64 @clock() #4
  store i64 %106, ptr %2, align 8, !tbaa !13
  %107 = load ptr, ptr %4, align 8, !tbaa !11
  %108 = load i32, ptr %6, align 4, !tbaa !5
  call void @pancakeSort(ptr noundef %107, i32 noundef %108)
  %109 = call i64 @clock() #4
  store i64 %109, ptr %3, align 8, !tbaa !13
  br label %158

110:                                              ; preds = %35
  %111 = load ptr, ptr %4, align 8, !tbaa !11
  %112 = load i32, ptr %6, align 4, !tbaa !5
  %113 = load i32, ptr %9, align 4, !tbaa !5
  %114 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %111, i32 noundef %112, ptr noundef @.str.16, i32 noundef %113, i16 noundef signext %114)
  %115 = call i64 @clock() #4
  store i64 %115, ptr %2, align 8, !tbaa !13
  %116 = load ptr, ptr %4, align 8, !tbaa !11
  %117 = load i32, ptr %6, align 4, !tbaa !5
  %118 = sub nsw i32 %117, 1
  call void @sillySort(ptr noundef %116, i32 noundef 0, i32 noundef %118)
  %119 = call i64 @clock() #4
  store i64 %119, ptr %3, align 8, !tbaa !13
  br label %158

120:                                              ; preds = %35
  %121 = load ptr, ptr %4, align 8, !tbaa !11
  %122 = load i32, ptr %6, align 4, !tbaa !5
  %123 = load i32, ptr %9, align 4, !tbaa !5
  %124 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %121, i32 noundef %122, ptr noundef @.str.17, i32 noundef %123, i16 noundef signext %124)
  %125 = call i64 @clock() #4
  store i64 %125, ptr %2, align 8, !tbaa !13
  %126 = load ptr, ptr %4, align 8, !tbaa !11
  %127 = load i32, ptr %6, align 4, !tbaa !5
  %128 = sub nsw i32 %127, 1
  call void @slowSort(ptr noundef %126, i32 noundef 0, i32 noundef %128)
  %129 = call i64 @clock() #4
  store i64 %129, ptr %3, align 8, !tbaa !13
  br label %158

130:                                              ; preds = %35
  %131 = load ptr, ptr %4, align 8, !tbaa !11
  %132 = load i32, ptr %6, align 4, !tbaa !5
  %133 = load i32, ptr %9, align 4, !tbaa !5
  %134 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %131, i32 noundef %132, ptr noundef @.str.18, i32 noundef %133, i16 noundef signext %134)
  %135 = call i64 @clock() #4
  store i64 %135, ptr %2, align 8, !tbaa !13
  %136 = load ptr, ptr %4, align 8, !tbaa !11
  %137 = load i32, ptr %6, align 4, !tbaa !5
  call void @sleepSort(ptr noundef %136, i32 noundef %137)
  %138 = call i64 @clock() #4
  store i64 %138, ptr %3, align 8, !tbaa !13
  br label %158

139:                                              ; preds = %35
  %140 = load ptr, ptr %4, align 8, !tbaa !11
  %141 = load i32, ptr %6, align 4, !tbaa !5
  %142 = load i32, ptr %9, align 4, !tbaa !5
  %143 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %140, i32 noundef %141, ptr noundef @.str.19, i32 noundef %142, i16 noundef signext %143)
  %144 = call i64 @clock() #4
  store i64 %144, ptr %2, align 8, !tbaa !13
  %145 = load ptr, ptr %4, align 8, !tbaa !11
  %146 = load i32, ptr %6, align 4, !tbaa !5
  call void @spaghettiSort(ptr noundef %145, i32 noundef %146)
  %147 = call i64 @clock() #4
  store i64 %147, ptr %3, align 8, !tbaa !13
  br label %158

148:                                              ; preds = %35
  %149 = load ptr, ptr %4, align 8, !tbaa !11
  %150 = load i32, ptr %6, align 4, !tbaa !5
  %151 = load i32, ptr %9, align 4, !tbaa !5
  %152 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %149, i32 noundef %150, ptr noundef @.str.20, i32 noundef %151, i16 noundef signext %152)
  %153 = call i64 @clock() #4
  store i64 %153, ptr %2, align 8, !tbaa !13
  %154 = load ptr, ptr %4, align 8, !tbaa !11
  %155 = load i32, ptr %6, align 4, !tbaa !5
  %156 = sub nsw i32 %155, 1
  call void @stoogeSort(ptr noundef %154, i32 noundef 0, i32 noundef %156)
  %157 = call i64 @clock() #4
  store i64 %157, ptr %3, align 8, !tbaa !13
  br label %158

158:                                              ; preds = %148, %139, %130, %120, %110, %101, %92, %83, %74, %65, %56, %47, %38, %35
  %159 = load ptr, ptr %4, align 8, !tbaa !11
  %160 = load i32, ptr %6, align 4, !tbaa !5
  %161 = load i64, ptr %2, align 8, !tbaa !13
  %162 = load i64, ptr %3, align 8, !tbaa !13
  call void @informationsPosSort(ptr noundef %159, i32 noundef %160, i64 noundef %161, i64 noundef %162, i1 noundef zeroext true)
  br label %757

163:                                              ; preds = %27
  %164 = call signext i16 @menu(ptr noundef @.str.21, i32 noundef 13)
  store i16 %164, ptr %10, align 2, !tbaa !9
  call void (...) @clearScreen()
  %165 = load i16, ptr %10, align 2, !tbaa !9
  %166 = icmp ne i16 %165, 0
  br i1 %166, label %168, label %167

167:                                              ; preds = %163
  br label %757

168:                                              ; preds = %163
  %169 = load i16, ptr %10, align 2, !tbaa !9
  %170 = sext i16 %169 to i32
  switch i32 %170, label %294 [
    i32 1, label %171
    i32 2, label %181
    i32 3, label %190
    i32 4, label %199
    i32 5, label %208
    i32 6, label %218
    i32 7, label %227
    i32 8, label %236
    i32 9, label %246
    i32 10, label %255
    i32 11, label %264
    i32 12, label %274
    i32 13, label %284
  ]

171:                                              ; preds = %168
  %172 = load ptr, ptr %4, align 8, !tbaa !11
  %173 = load i32, ptr %6, align 4, !tbaa !5
  %174 = load i32, ptr %9, align 4, !tbaa !5
  %175 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %172, i32 noundef %173, ptr noundef @.str.22, i32 noundef %174, i16 noundef signext %175)
  %176 = call i64 @clock() #4
  store i64 %176, ptr %2, align 8, !tbaa !13
  %177 = load ptr, ptr %4, align 8, !tbaa !11
  %178 = load i32, ptr %6, align 4, !tbaa !5
  %179 = sub nsw i32 %178, 1
  call void @bubbleSort(ptr noundef %177, i32 noundef %179)
  %180 = call i64 @clock() #4
  store i64 %180, ptr %3, align 8, !tbaa !13
  br label %294

181:                                              ; preds = %168
  %182 = load ptr, ptr %4, align 8, !tbaa !11
  %183 = load i32, ptr %6, align 4, !tbaa !5
  %184 = load i32, ptr %9, align 4, !tbaa !5
  %185 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %182, i32 noundef %183, ptr noundef @.str.23, i32 noundef %184, i16 noundef signext %185)
  %186 = call i64 @clock() #4
  store i64 %186, ptr %2, align 8, !tbaa !13
  %187 = load ptr, ptr %4, align 8, !tbaa !11
  %188 = load i32, ptr %6, align 4, !tbaa !5
  call void @circleSort(ptr noundef %187, i32 noundef %188)
  %189 = call i64 @clock() #4
  store i64 %189, ptr %3, align 8, !tbaa !13
  br label %294

190:                                              ; preds = %168
  %191 = load ptr, ptr %4, align 8, !tbaa !11
  %192 = load i32, ptr %6, align 4, !tbaa !5
  %193 = load i32, ptr %9, align 4, !tbaa !5
  %194 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %191, i32 noundef %192, ptr noundef @.str.24, i32 noundef %193, i16 noundef signext %194)
  %195 = call i64 @clock() #4
  store i64 %195, ptr %2, align 8, !tbaa !13
  %196 = load ptr, ptr %4, align 8, !tbaa !11
  %197 = load i32, ptr %6, align 4, !tbaa !5
  call void @cocktailShakerSort(ptr noundef %196, i32 noundef %197)
  %198 = call i64 @clock() #4
  store i64 %198, ptr %3, align 8, !tbaa !13
  br label %294

199:                                              ; preds = %168
  %200 = load ptr, ptr %4, align 8, !tbaa !11
  %201 = load i32, ptr %6, align 4, !tbaa !5
  %202 = load i32, ptr %9, align 4, !tbaa !5
  %203 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %200, i32 noundef %201, ptr noundef @.str.25, i32 noundef %202, i16 noundef signext %203)
  %204 = call i64 @clock() #4
  store i64 %204, ptr %2, align 8, !tbaa !13
  %205 = load ptr, ptr %4, align 8, !tbaa !11
  %206 = load i32, ptr %6, align 4, !tbaa !5
  call void @combSort(ptr noundef %205, i32 noundef %206)
  %207 = call i64 @clock() #4
  store i64 %207, ptr %3, align 8, !tbaa !13
  br label %294

208:                                              ; preds = %168
  %209 = load ptr, ptr %4, align 8, !tbaa !11
  %210 = load i32, ptr %6, align 4, !tbaa !5
  %211 = load i32, ptr %9, align 4, !tbaa !5
  %212 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %209, i32 noundef %210, ptr noundef @.str.26, i32 noundef %211, i16 noundef signext %212)
  %213 = call i64 @clock() #4
  store i64 %213, ptr %2, align 8, !tbaa !13
  %214 = load ptr, ptr %4, align 8, !tbaa !11
  %215 = load i32, ptr %6, align 4, !tbaa !5
  %216 = sub nsw i32 %215, 1
  call void @dualPivotQuickSort(ptr noundef %214, i32 noundef 0, i32 noundef %216)
  %217 = call i64 @clock() #4
  store i64 %217, ptr %3, align 8, !tbaa !13
  br label %294

218:                                              ; preds = %168
  %219 = load ptr, ptr %4, align 8, !tbaa !11
  %220 = load i32, ptr %6, align 4, !tbaa !5
  %221 = load i32, ptr %9, align 4, !tbaa !5
  %222 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %219, i32 noundef %220, ptr noundef @.str.27, i32 noundef %221, i16 noundef signext %222)
  %223 = call i64 @clock() #4
  store i64 %223, ptr %2, align 8, !tbaa !13
  %224 = load ptr, ptr %4, align 8, !tbaa !11
  %225 = load i32, ptr %6, align 4, !tbaa !5
  call void @gnomeSort(ptr noundef %224, i32 noundef %225)
  %226 = call i64 @clock() #4
  store i64 %226, ptr %3, align 8, !tbaa !13
  br label %294

227:                                              ; preds = %168
  %228 = load ptr, ptr %4, align 8, !tbaa !11
  %229 = load i32, ptr %6, align 4, !tbaa !5
  %230 = load i32, ptr %9, align 4, !tbaa !5
  %231 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %228, i32 noundef %229, ptr noundef @.str.28, i32 noundef %230, i16 noundef signext %231)
  %232 = call i64 @clock() #4
  store i64 %232, ptr %2, align 8, !tbaa !13
  %233 = load ptr, ptr %4, align 8, !tbaa !11
  %234 = load i32, ptr %6, align 4, !tbaa !5
  call void @oddEvenSort(ptr noundef %233, i32 noundef %234)
  %235 = call i64 @clock() #4
  store i64 %235, ptr %3, align 8, !tbaa !13
  br label %294

236:                                              ; preds = %168
  %237 = load ptr, ptr %4, align 8, !tbaa !11
  %238 = load i32, ptr %6, align 4, !tbaa !5
  %239 = load i32, ptr %9, align 4, !tbaa !5
  %240 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %237, i32 noundef %238, ptr noundef @.str.29, i32 noundef %239, i16 noundef signext %240)
  %241 = call i64 @clock() #4
  store i64 %241, ptr %2, align 8, !tbaa !13
  %242 = load ptr, ptr %4, align 8, !tbaa !11
  %243 = load i32, ptr %6, align 4, !tbaa !5
  %244 = sub nsw i32 %243, 1
  call void @bubbleSortOptmized(ptr noundef %242, i32 noundef %244)
  %245 = call i64 @clock() #4
  store i64 %245, ptr %3, align 8, !tbaa !13
  br label %294

246:                                              ; preds = %168
  %247 = load ptr, ptr %4, align 8, !tbaa !11
  %248 = load i32, ptr %6, align 4, !tbaa !5
  %249 = load i32, ptr %9, align 4, !tbaa !5
  %250 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %247, i32 noundef %248, ptr noundef @.str.30, i32 noundef %249, i16 noundef signext %250)
  %251 = call i64 @clock() #4
  store i64 %251, ptr %2, align 8, !tbaa !13
  %252 = load ptr, ptr %4, align 8, !tbaa !11
  %253 = load i32, ptr %6, align 4, !tbaa !5
  call void @optimizedCocktailShakerSort(ptr noundef %252, i32 noundef %253)
  %254 = call i64 @clock() #4
  store i64 %254, ptr %3, align 8, !tbaa !13
  br label %294

255:                                              ; preds = %168
  %256 = load ptr, ptr %4, align 8, !tbaa !11
  %257 = load i32, ptr %6, align 4, !tbaa !5
  %258 = load i32, ptr %9, align 4, !tbaa !5
  %259 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %256, i32 noundef %257, ptr noundef @.str.31, i32 noundef %258, i16 noundef signext %259)
  %260 = call i64 @clock() #4
  store i64 %260, ptr %2, align 8, !tbaa !13
  %261 = load ptr, ptr %4, align 8, !tbaa !11
  %262 = load i32, ptr %6, align 4, !tbaa !5
  call void @optimizedGnomeSort(ptr noundef %261, i32 noundef %262)
  %263 = call i64 @clock() #4
  store i64 %263, ptr %3, align 8, !tbaa !13
  br label %294

264:                                              ; preds = %168
  %265 = load ptr, ptr %4, align 8, !tbaa !11
  %266 = load i32, ptr %6, align 4, !tbaa !5
  %267 = load i32, ptr %9, align 4, !tbaa !5
  %268 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %265, i32 noundef %266, ptr noundef @.str.32, i32 noundef %267, i16 noundef signext %268)
  %269 = call i64 @clock() #4
  store i64 %269, ptr %2, align 8, !tbaa !13
  %270 = load ptr, ptr %4, align 8, !tbaa !11
  %271 = load i32, ptr %6, align 4, !tbaa !5
  %272 = sub nsw i32 %271, 1
  call void @quickSort(ptr noundef %270, i32 noundef 0, i32 noundef %272)
  %273 = call i64 @clock() #4
  store i64 %273, ptr %3, align 8, !tbaa !13
  br label %294

274:                                              ; preds = %168
  %275 = load ptr, ptr %4, align 8, !tbaa !11
  %276 = load i32, ptr %6, align 4, !tbaa !5
  %277 = load i32, ptr %9, align 4, !tbaa !5
  %278 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %275, i32 noundef %276, ptr noundef @.str.33, i32 noundef %277, i16 noundef signext %278)
  %279 = call i64 @clock() #4
  store i64 %279, ptr %2, align 8, !tbaa !13
  %280 = load ptr, ptr %4, align 8, !tbaa !11
  %281 = load i32, ptr %6, align 4, !tbaa !5
  %282 = sub nsw i32 %281, 1
  call void @quickSort3Way(ptr noundef %280, i32 noundef 0, i32 noundef %282)
  %283 = call i64 @clock() #4
  store i64 %283, ptr %3, align 8, !tbaa !13
  br label %294

284:                                              ; preds = %168
  %285 = load ptr, ptr %4, align 8, !tbaa !11
  %286 = load i32, ptr %6, align 4, !tbaa !5
  %287 = load i32, ptr %9, align 4, !tbaa !5
  %288 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %285, i32 noundef %286, ptr noundef @.str.34, i32 noundef %287, i16 noundef signext %288)
  %289 = call i64 @clock() #4
  store i64 %289, ptr %2, align 8, !tbaa !13
  %290 = load ptr, ptr %4, align 8, !tbaa !11
  %291 = load i32, ptr %6, align 4, !tbaa !5
  %292 = sub nsw i32 %291, 1
  call void @stableQuickSort(ptr noundef %290, i32 noundef 0, i32 noundef %292)
  %293 = call i64 @clock() #4
  store i64 %293, ptr %3, align 8, !tbaa !13
  br label %294

294:                                              ; preds = %284, %274, %264, %255, %246, %236, %227, %218, %208, %199, %190, %181, %171, %168
  %295 = load ptr, ptr %4, align 8, !tbaa !11
  %296 = load i32, ptr %6, align 4, !tbaa !5
  %297 = load i64, ptr %2, align 8, !tbaa !13
  %298 = load i64, ptr %3, align 8, !tbaa !13
  call void @informationsPosSort(ptr noundef %295, i32 noundef %296, i64 noundef %297, i64 noundef %298, i1 noundef zeroext true)
  br label %757

299:                                              ; preds = %27
  %300 = call signext i16 @menu(ptr noundef @.str.35, i32 noundef 1)
  store i16 %300, ptr %10, align 2, !tbaa !9
  call void (...) @clearScreen()
  %301 = load i16, ptr %10, align 2, !tbaa !9
  %302 = icmp ne i16 %301, 0
  br i1 %302, label %304, label %303

303:                                              ; preds = %299
  br label %757

304:                                              ; preds = %299
  %305 = load i16, ptr %10, align 2, !tbaa !9
  %306 = sext i16 %305 to i32
  switch i32 %306, label %316 [
    i32 1, label %307
  ]

307:                                              ; preds = %304
  %308 = load ptr, ptr %4, align 8, !tbaa !11
  %309 = load i32, ptr %6, align 4, !tbaa !5
  %310 = load i32, ptr %9, align 4, !tbaa !5
  %311 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %308, i32 noundef %309, ptr noundef @.str.36, i32 noundef %310, i16 noundef signext %311)
  %312 = call i64 @clock() #4
  store i64 %312, ptr %2, align 8, !tbaa !13
  %313 = load ptr, ptr %4, align 8, !tbaa !11
  %314 = load i32, ptr %6, align 4, !tbaa !5
  call void @timSort(ptr noundef %313, i32 noundef %314)
  %315 = call i64 @clock() #4
  store i64 %315, ptr %3, align 8, !tbaa !13
  br label %316

316:                                              ; preds = %307, %304
  %317 = load ptr, ptr %4, align 8, !tbaa !11
  %318 = load i32, ptr %6, align 4, !tbaa !5
  %319 = load i64, ptr %2, align 8, !tbaa !13
  %320 = load i64, ptr %3, align 8, !tbaa !13
  call void @informationsPosSort(ptr noundef %317, i32 noundef %318, i64 noundef %319, i64 noundef %320, i1 noundef zeroext true)
  br label %757

321:                                              ; preds = %27
  %322 = call signext i16 @menu(ptr noundef @.str.37, i32 noundef 7)
  store i16 %322, ptr %10, align 2, !tbaa !9
  call void (...) @clearScreen()
  %323 = load i16, ptr %10, align 2, !tbaa !9
  %324 = icmp ne i16 %323, 0
  br i1 %324, label %326, label %325

325:                                              ; preds = %321
  br label %757

326:                                              ; preds = %321
  %327 = load i16, ptr %10, align 2, !tbaa !9
  %328 = sext i16 %327 to i32
  switch i32 %328, label %392 [
    i32 1, label %329
    i32 2, label %338
    i32 3, label %347
    i32 4, label %356
    i32 5, label %365
    i32 6, label %374
    i32 7, label %383
  ]

329:                                              ; preds = %326
  %330 = load ptr, ptr %4, align 8, !tbaa !11
  %331 = load i32, ptr %6, align 4, !tbaa !5
  %332 = load i32, ptr %9, align 4, !tbaa !5
  %333 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %330, i32 noundef %331, ptr noundef @.str.38, i32 noundef %332, i16 noundef signext %333)
  %334 = call i64 @clock() #4
  store i64 %334, ptr %2, align 8, !tbaa !13
  %335 = load ptr, ptr %4, align 8, !tbaa !11
  %336 = load i32, ptr %6, align 4, !tbaa !5
  call void @AVLTreeSort(ptr noundef %335, i32 noundef %336)
  %337 = call i64 @clock() #4
  store i64 %337, ptr %3, align 8, !tbaa !13
  br label %392

338:                                              ; preds = %326
  %339 = load ptr, ptr %4, align 8, !tbaa !11
  %340 = load i32, ptr %6, align 4, !tbaa !5
  %341 = load i32, ptr %9, align 4, !tbaa !5
  %342 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %339, i32 noundef %340, ptr noundef @.str.39, i32 noundef %341, i16 noundef signext %342)
  %343 = call i64 @clock() #4
  store i64 %343, ptr %2, align 8, !tbaa !13
  %344 = load ptr, ptr %4, align 8, !tbaa !11
  %345 = load i32, ptr %6, align 4, !tbaa !5
  call void @binaryInsertionSort(ptr noundef %344, i32 noundef %345)
  %346 = call i64 @clock() #4
  store i64 %346, ptr %3, align 8, !tbaa !13
  br label %392

347:                                              ; preds = %326
  %348 = load ptr, ptr %4, align 8, !tbaa !11
  %349 = load i32, ptr %6, align 4, !tbaa !5
  %350 = load i32, ptr %9, align 4, !tbaa !5
  %351 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %348, i32 noundef %349, ptr noundef @.str.40, i32 noundef %350, i16 noundef signext %351)
  %352 = call i64 @clock() #4
  store i64 %352, ptr %2, align 8, !tbaa !13
  %353 = load ptr, ptr %4, align 8, !tbaa !11
  %354 = load i32, ptr %6, align 4, !tbaa !5
  call void @cycleSort(ptr noundef %353, i32 noundef %354)
  %355 = call i64 @clock() #4
  store i64 %355, ptr %3, align 8, !tbaa !13
  br label %392

356:                                              ; preds = %326
  %357 = load ptr, ptr %4, align 8, !tbaa !11
  %358 = load i32, ptr %6, align 4, !tbaa !5
  %359 = load i32, ptr %9, align 4, !tbaa !5
  %360 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %357, i32 noundef %358, ptr noundef @.str.41, i32 noundef %359, i16 noundef signext %360)
  %361 = call i64 @clock() #4
  store i64 %361, ptr %2, align 8, !tbaa !13
  %362 = load ptr, ptr %4, align 8, !tbaa !11
  %363 = load i32, ptr %6, align 4, !tbaa !5
  call void @insertionSort(ptr noundef %362, i32 noundef %363)
  %364 = call i64 @clock() #4
  store i64 %364, ptr %3, align 8, !tbaa !13
  br label %392

365:                                              ; preds = %326
  %366 = load ptr, ptr %4, align 8, !tbaa !11
  %367 = load i32, ptr %6, align 4, !tbaa !5
  %368 = load i32, ptr %9, align 4, !tbaa !5
  %369 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %366, i32 noundef %367, ptr noundef @.str.42, i32 noundef %368, i16 noundef signext %369)
  %370 = call i64 @clock() #4
  store i64 %370, ptr %2, align 8, !tbaa !13
  %371 = load ptr, ptr %4, align 8, !tbaa !11
  %372 = load i32, ptr %6, align 4, !tbaa !5
  call void @patienceSort(ptr noundef %371, i32 noundef %372)
  %373 = call i64 @clock() #4
  store i64 %373, ptr %3, align 8, !tbaa !13
  br label %392

374:                                              ; preds = %326
  %375 = load ptr, ptr %4, align 8, !tbaa !11
  %376 = load i32, ptr %6, align 4, !tbaa !5
  %377 = load i32, ptr %9, align 4, !tbaa !5
  %378 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %375, i32 noundef %376, ptr noundef @.str.43, i32 noundef %377, i16 noundef signext %378)
  %379 = call i64 @clock() #4
  store i64 %379, ptr %2, align 8, !tbaa !13
  %380 = load ptr, ptr %4, align 8, !tbaa !11
  %381 = load i32, ptr %6, align 4, !tbaa !5
  call void @shellSort(ptr noundef %380, i32 noundef %381)
  %382 = call i64 @clock() #4
  store i64 %382, ptr %3, align 8, !tbaa !13
  br label %392

383:                                              ; preds = %326
  %384 = load ptr, ptr %4, align 8, !tbaa !11
  %385 = load i32, ptr %6, align 4, !tbaa !5
  %386 = load i32, ptr %9, align 4, !tbaa !5
  %387 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %384, i32 noundef %385, ptr noundef @.str.44, i32 noundef %386, i16 noundef signext %387)
  %388 = call i64 @clock() #4
  store i64 %388, ptr %2, align 8, !tbaa !13
  %389 = load ptr, ptr %4, align 8, !tbaa !11
  %390 = load i32, ptr %6, align 4, !tbaa !5
  call void @treeSort(ptr noundef %389, i32 noundef %390)
  %391 = call i64 @clock() #4
  store i64 %391, ptr %3, align 8, !tbaa !13
  br label %392

392:                                              ; preds = %383, %374, %365, %356, %347, %338, %329, %326
  %393 = load ptr, ptr %4, align 8, !tbaa !11
  %394 = load i32, ptr %6, align 4, !tbaa !5
  %395 = load i64, ptr %2, align 8, !tbaa !13
  %396 = load i64, ptr %3, align 8, !tbaa !13
  call void @informationsPosSort(ptr noundef %393, i32 noundef %394, i64 noundef %395, i64 noundef %396, i1 noundef zeroext true)
  br label %757

397:                                              ; preds = %27
  %398 = call signext i16 @menu(ptr noundef @.str.45, i32 noundef 3)
  store i16 %398, ptr %10, align 2, !tbaa !9
  call void (...) @clearScreen()
  %399 = load i16, ptr %10, align 2, !tbaa !9
  %400 = icmp ne i16 %399, 0
  br i1 %400, label %402, label %401

401:                                              ; preds = %397
  br label %757

402:                                              ; preds = %397
  %403 = load i16, ptr %10, align 2, !tbaa !9
  %404 = sext i16 %403 to i32
  switch i32 %404, label %434 [
    i32 1, label %405
    i32 2, label %414
    i32 3, label %424
  ]

405:                                              ; preds = %402
  %406 = load ptr, ptr %4, align 8, !tbaa !11
  %407 = load i32, ptr %6, align 4, !tbaa !5
  %408 = load i32, ptr %9, align 4, !tbaa !5
  %409 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %406, i32 noundef %407, ptr noundef @.str.46, i32 noundef %408, i16 noundef signext %409)
  %410 = call i64 @clock() #4
  store i64 %410, ptr %2, align 8, !tbaa !13
  %411 = load ptr, ptr %4, align 8, !tbaa !11
  %412 = load i32, ptr %6, align 4, !tbaa !5
  call void @bottomupMergeSort(ptr noundef %411, i32 noundef %412)
  %413 = call i64 @clock() #4
  store i64 %413, ptr %3, align 8, !tbaa !13
  br label %434

414:                                              ; preds = %402
  %415 = load ptr, ptr %4, align 8, !tbaa !11
  %416 = load i32, ptr %6, align 4, !tbaa !5
  %417 = load i32, ptr %9, align 4, !tbaa !5
  %418 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %415, i32 noundef %416, ptr noundef @.str.47, i32 noundef %417, i16 noundef signext %418)
  %419 = call i64 @clock() #4
  store i64 %419, ptr %2, align 8, !tbaa !13
  %420 = load ptr, ptr %4, align 8, !tbaa !11
  %421 = load i32, ptr %6, align 4, !tbaa !5
  %422 = sub nsw i32 %421, 1
  call void @mergeSortInPlace(ptr noundef %420, i32 noundef 0, i32 noundef %422)
  %423 = call i64 @clock() #4
  store i64 %423, ptr %3, align 8, !tbaa !13
  br label %434

424:                                              ; preds = %402
  %425 = load ptr, ptr %4, align 8, !tbaa !11
  %426 = load i32, ptr %6, align 4, !tbaa !5
  %427 = load i32, ptr %9, align 4, !tbaa !5
  %428 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %425, i32 noundef %426, ptr noundef @.str.48, i32 noundef %427, i16 noundef signext %428)
  %429 = call i64 @clock() #4
  store i64 %429, ptr %2, align 8, !tbaa !13
  %430 = load ptr, ptr %4, align 8, !tbaa !11
  %431 = load i32, ptr %6, align 4, !tbaa !5
  %432 = sub nsw i32 %431, 1
  call void @mergeSort(ptr noundef %430, i32 noundef 0, i32 noundef %432)
  %433 = call i64 @clock() #4
  store i64 %433, ptr %3, align 8, !tbaa !13
  br label %434

434:                                              ; preds = %424, %414, %405, %402
  %435 = load ptr, ptr %4, align 8, !tbaa !11
  %436 = load i32, ptr %6, align 4, !tbaa !5
  %437 = load i64, ptr %2, align 8, !tbaa !13
  %438 = load i64, ptr %3, align 8, !tbaa !13
  call void @informationsPosSort(ptr noundef %435, i32 noundef %436, i64 noundef %437, i64 noundef %438, i1 noundef zeroext true)
  br label %757

439:                                              ; preds = %27
  %440 = call signext i16 @menu(ptr noundef @.str.49, i32 noundef 2)
  store i16 %440, ptr %10, align 2, !tbaa !9
  call void (...) @clearScreen()
  %441 = load i16, ptr %10, align 2, !tbaa !9
  %442 = icmp ne i16 %441, 0
  br i1 %442, label %444, label %443

443:                                              ; preds = %439
  br label %757

444:                                              ; preds = %439
  %445 = load i16, ptr %10, align 2, !tbaa !9
  %446 = sext i16 %445 to i32
  switch i32 %446, label %508 [
    i32 1, label %447
    i32 2, label %495
  ]

447:                                              ; preds = %444
  store i32 1, ptr %7, align 4, !tbaa !5
  br label %448

448:                                              ; preds = %452, %447
  %449 = load i32, ptr %7, align 4, !tbaa !5
  %450 = load i32, ptr %6, align 4, !tbaa !5
  %451 = icmp slt i32 %449, %450
  br i1 %451, label %452, label %455

452:                                              ; preds = %448
  %453 = load i32, ptr %7, align 4, !tbaa !5
  %454 = shl i32 %453, 1
  store i32 %454, ptr %7, align 4, !tbaa !5
  br label %448, !llvm.loop !15

455:                                              ; preds = %448
  %456 = load i32, ptr %7, align 4, !tbaa !5
  %457 = load i32, ptr %6, align 4, !tbaa !5
  %458 = icmp ne i32 %456, %457
  br i1 %458, label %459, label %481

459:                                              ; preds = %455
  %460 = load i32, ptr %8, align 4, !tbaa !5
  call void @createArray(ptr noundef %5, i32 noundef %460)
  %461 = load ptr, ptr %5, align 8, !tbaa !11
  %462 = load i32, ptr %8, align 4, !tbaa !5
  %463 = load i16, ptr %12, align 2, !tbaa !9
  %464 = load i32, ptr %9, align 4, !tbaa !5
  call void @generateArray(ptr noundef %461, i32 noundef %462, i16 noundef signext %463, i32 noundef %464)
  %465 = load i32, ptr %6, align 4, !tbaa !5
  %466 = load i32, ptr %8, align 4, !tbaa !5
  %467 = call i32 (ptr, ...) @printf(ptr noundef @.str.50, i32 noundef %465, i32 noundef %466)
  %468 = load ptr, ptr %5, align 8, !tbaa !11
  %469 = load i32, ptr %8, align 4, !tbaa !5
  %470 = load i32, ptr %9, align 4, !tbaa !5
  %471 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %468, i32 noundef %469, ptr noundef @.str.51, i32 noundef %470, i16 noundef signext %471)
  %472 = call i64 @clock() #4
  store i64 %472, ptr %2, align 8, !tbaa !13
  %473 = load ptr, ptr %5, align 8, !tbaa !11
  %474 = load i32, ptr %8, align 4, !tbaa !5
  call void @bitonicSort(ptr noundef %473, i32 noundef 0, i32 noundef %474, i32 noundef 1)
  %475 = call i64 @clock() #4
  store i64 %475, ptr %3, align 8, !tbaa !13
  %476 = load ptr, ptr %5, align 8, !tbaa !11
  %477 = load i32, ptr %8, align 4, !tbaa !5
  %478 = load i64, ptr %2, align 8, !tbaa !13
  %479 = load i64, ptr %3, align 8, !tbaa !13
  call void @informationsPosSort(ptr noundef %476, i32 noundef %477, i64 noundef %478, i64 noundef %479, i1 noundef zeroext true)
  %480 = load ptr, ptr %5, align 8, !tbaa !11
  call void @free(ptr noundef %480) #4
  br label %494

481:                                              ; preds = %455
  %482 = load ptr, ptr %4, align 8, !tbaa !11
  %483 = load i32, ptr %6, align 4, !tbaa !5
  %484 = load i32, ptr %9, align 4, !tbaa !5
  %485 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %482, i32 noundef %483, ptr noundef @.str.51, i32 noundef %484, i16 noundef signext %485)
  %486 = call i64 @clock() #4
  store i64 %486, ptr %2, align 8, !tbaa !13
  %487 = load ptr, ptr %4, align 8, !tbaa !11
  %488 = load i32, ptr %6, align 4, !tbaa !5
  call void @bitonicSort(ptr noundef %487, i32 noundef 0, i32 noundef %488, i32 noundef 1)
  %489 = call i64 @clock() #4
  store i64 %489, ptr %3, align 8, !tbaa !13
  %490 = load ptr, ptr %4, align 8, !tbaa !11
  %491 = load i32, ptr %6, align 4, !tbaa !5
  %492 = load i64, ptr %2, align 8, !tbaa !13
  %493 = load i64, ptr %3, align 8, !tbaa !13
  call void @informationsPosSort(ptr noundef %490, i32 noundef %491, i64 noundef %492, i64 noundef %493, i1 noundef zeroext true)
  br label %494

494:                                              ; preds = %481, %459
  br label %508

495:                                              ; preds = %444
  %496 = load ptr, ptr %4, align 8, !tbaa !11
  %497 = load i32, ptr %6, align 4, !tbaa !5
  %498 = load i32, ptr %9, align 4, !tbaa !5
  %499 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %496, i32 noundef %497, ptr noundef @.str.52, i32 noundef %498, i16 noundef signext %499)
  %500 = call i64 @clock() #4
  store i64 %500, ptr %2, align 8, !tbaa !13
  %501 = load ptr, ptr %4, align 8, !tbaa !11
  %502 = load i32, ptr %6, align 4, !tbaa !5
  call void @pairwiseSort(ptr noundef %501, i32 noundef 0, i32 noundef %502, i32 noundef 1)
  %503 = call i64 @clock() #4
  store i64 %503, ptr %3, align 8, !tbaa !13
  %504 = load ptr, ptr %4, align 8, !tbaa !11
  %505 = load i32, ptr %6, align 4, !tbaa !5
  %506 = load i64, ptr %2, align 8, !tbaa !13
  %507 = load i64, ptr %3, align 8, !tbaa !13
  call void @informationsPosSort(ptr noundef %504, i32 noundef %505, i64 noundef %506, i64 noundef %507, i1 noundef zeroext true)
  br label %508

508:                                              ; preds = %495, %494, %444
  br label %757

509:                                              ; preds = %27
  %510 = call signext i16 @menu(ptr noundef @.str.53, i32 noundef 5)
  store i16 %510, ptr %10, align 2, !tbaa !9
  call void (...) @clearScreen()
  %511 = load i16, ptr %10, align 2, !tbaa !9
  %512 = icmp ne i16 %511, 0
  br i1 %512, label %514, label %513

513:                                              ; preds = %509
  br label %757

514:                                              ; preds = %509
  %515 = load i16, ptr %10, align 2, !tbaa !9
  %516 = sext i16 %515 to i32
  switch i32 %516, label %562 [
    i32 1, label %517
    i32 2, label %526
    i32 3, label %535
    i32 4, label %544
    i32 5, label %553
  ]

517:                                              ; preds = %514
  %518 = load ptr, ptr %4, align 8, !tbaa !11
  %519 = load i32, ptr %6, align 4, !tbaa !5
  %520 = load i32, ptr %9, align 4, !tbaa !5
  %521 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %518, i32 noundef %519, ptr noundef @.str.54, i32 noundef %520, i16 noundef signext %521)
  %522 = call i64 @clock() #4
  store i64 %522, ptr %2, align 8, !tbaa !13
  %523 = load ptr, ptr %4, align 8, !tbaa !11
  %524 = load i32, ptr %6, align 4, !tbaa !5
  call void @bucketSort(ptr noundef %523, i32 noundef %524)
  %525 = call i64 @clock() #4
  store i64 %525, ptr %3, align 8, !tbaa !13
  br label %562

526:                                              ; preds = %514
  %527 = load ptr, ptr %4, align 8, !tbaa !11
  %528 = load i32, ptr %6, align 4, !tbaa !5
  %529 = load i32, ptr %9, align 4, !tbaa !5
  %530 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %527, i32 noundef %528, ptr noundef @.str.55, i32 noundef %529, i16 noundef signext %530)
  %531 = call i64 @clock() #4
  store i64 %531, ptr %2, align 8, !tbaa !13
  %532 = load ptr, ptr %4, align 8, !tbaa !11
  %533 = load i32, ptr %6, align 4, !tbaa !5
  call void @countingSort(ptr noundef %532, i32 noundef %533)
  %534 = call i64 @clock() #4
  store i64 %534, ptr %3, align 8, !tbaa !13
  br label %562

535:                                              ; preds = %514
  %536 = load ptr, ptr %4, align 8, !tbaa !11
  %537 = load i32, ptr %6, align 4, !tbaa !5
  %538 = load i32, ptr %9, align 4, !tbaa !5
  %539 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %536, i32 noundef %537, ptr noundef @.str.56, i32 noundef %538, i16 noundef signext %539)
  %540 = call i64 @clock() #4
  store i64 %540, ptr %2, align 8, !tbaa !13
  %541 = load ptr, ptr %4, align 8, !tbaa !11
  %542 = load i32, ptr %6, align 4, !tbaa !5
  call void @beadSort(ptr noundef %541, i32 noundef %542)
  %543 = call i64 @clock() #4
  store i64 %543, ptr %3, align 8, !tbaa !13
  br label %562

544:                                              ; preds = %514
  %545 = load ptr, ptr %4, align 8, !tbaa !11
  %546 = load i32, ptr %6, align 4, !tbaa !5
  %547 = load i32, ptr %9, align 4, !tbaa !5
  %548 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %545, i32 noundef %546, ptr noundef @.str.57, i32 noundef %547, i16 noundef signext %548)
  %549 = call i64 @clock() #4
  store i64 %549, ptr %2, align 8, !tbaa !13
  %550 = load ptr, ptr %4, align 8, !tbaa !11
  %551 = load i32, ptr %6, align 4, !tbaa !5
  call void @pigeonholeSort(ptr noundef %550, i32 noundef %551)
  %552 = call i64 @clock() #4
  store i64 %552, ptr %3, align 8, !tbaa !13
  br label %562

553:                                              ; preds = %514
  %554 = load ptr, ptr %4, align 8, !tbaa !11
  %555 = load i32, ptr %6, align 4, !tbaa !5
  %556 = load i32, ptr %9, align 4, !tbaa !5
  %557 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %554, i32 noundef %555, ptr noundef @.str.58, i32 noundef %556, i16 noundef signext %557)
  %558 = call i64 @clock() #4
  store i64 %558, ptr %2, align 8, !tbaa !13
  %559 = load ptr, ptr %4, align 8, !tbaa !11
  %560 = load i32, ptr %6, align 4, !tbaa !5
  call void @radixLSDSort(ptr noundef %559, i32 noundef %560, i32 noundef 10)
  %561 = call i64 @clock() #4
  store i64 %561, ptr %3, align 8, !tbaa !13
  br label %562

562:                                              ; preds = %553, %544, %535, %526, %517, %514
  %563 = load ptr, ptr %4, align 8, !tbaa !11
  %564 = load i32, ptr %6, align 4, !tbaa !5
  %565 = load i64, ptr %2, align 8, !tbaa !13
  %566 = load i64, ptr %3, align 8, !tbaa !13
  call void @informationsPosSort(ptr noundef %563, i32 noundef %564, i64 noundef %565, i64 noundef %566, i1 noundef zeroext true)
  br label %757

567:                                              ; preds = %27
  %568 = call signext i16 @menu(ptr noundef @.str.59, i32 noundef 4)
  store i16 %568, ptr %10, align 2, !tbaa !9
  call void (...) @clearScreen()
  %569 = load i16, ptr %10, align 2, !tbaa !9
  %570 = icmp ne i16 %569, 0
  br i1 %570, label %572, label %571

571:                                              ; preds = %567
  br label %757

572:                                              ; preds = %567
  %573 = load i16, ptr %10, align 2, !tbaa !9
  %574 = sext i16 %573 to i32
  switch i32 %574, label %615 [
    i32 1, label %575
    i32 2, label %584
    i32 3, label %593
    i32 4, label %606
  ]

575:                                              ; preds = %572
  %576 = load ptr, ptr %4, align 8, !tbaa !11
  %577 = load i32, ptr %6, align 4, !tbaa !5
  %578 = load i32, ptr %9, align 4, !tbaa !5
  %579 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %576, i32 noundef %577, ptr noundef @.str.60, i32 noundef %578, i16 noundef signext %579)
  %580 = call i64 @clock() #4
  store i64 %580, ptr %2, align 8, !tbaa !13
  %581 = load ptr, ptr %4, align 8, !tbaa !11
  %582 = load i32, ptr %6, align 4, !tbaa !5
  call void @doubleSelectionSort(ptr noundef %581, i32 noundef %582)
  %583 = call i64 @clock() #4
  store i64 %583, ptr %3, align 8, !tbaa !13
  br label %615

584:                                              ; preds = %572
  %585 = load ptr, ptr %4, align 8, !tbaa !11
  %586 = load i32, ptr %6, align 4, !tbaa !5
  %587 = load i32, ptr %9, align 4, !tbaa !5
  %588 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %585, i32 noundef %586, ptr noundef @.str.61, i32 noundef %587, i16 noundef signext %588)
  %589 = call i64 @clock() #4
  store i64 %589, ptr %2, align 8, !tbaa !13
  %590 = load ptr, ptr %4, align 8, !tbaa !11
  %591 = load i32, ptr %6, align 4, !tbaa !5
  call void @maxHeapSort(ptr noundef %590, i32 noundef %591)
  %592 = call i64 @clock() #4
  store i64 %592, ptr %3, align 8, !tbaa !13
  br label %615

593:                                              ; preds = %572
  %594 = load ptr, ptr %4, align 8, !tbaa !11
  %595 = load i32, ptr %6, align 4, !tbaa !5
  %596 = load i32, ptr %9, align 4, !tbaa !5
  %597 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %594, i32 noundef %595, ptr noundef @.str.62, i32 noundef %596, i16 noundef signext %597)
  %598 = call i64 @clock() #4
  store i64 %598, ptr %2, align 8, !tbaa !13
  %599 = load ptr, ptr %4, align 8, !tbaa !11
  %600 = load i32, ptr %6, align 4, !tbaa !5
  call void @minHeapSort(ptr noundef %599, i32 noundef %600)
  %601 = call i64 @clock() #4
  store i64 %601, ptr %3, align 8, !tbaa !13
  %602 = load ptr, ptr %4, align 8, !tbaa !11
  %603 = load i32, ptr %6, align 4, !tbaa !5
  %604 = call zeroext i1 @isSorted(ptr noundef %602, i32 noundef %603, i1 noundef zeroext false)
  %605 = zext i1 %604 to i8
  store i8 %605, ptr @arraySorted, align 1, !tbaa !17
  br label %615

606:                                              ; preds = %572
  %607 = load ptr, ptr %4, align 8, !tbaa !11
  %608 = load i32, ptr %6, align 4, !tbaa !5
  %609 = load i32, ptr %9, align 4, !tbaa !5
  %610 = load i16, ptr %12, align 2, !tbaa !9
  call void @informationsPreSort(ptr noundef %607, i32 noundef %608, ptr noundef @.str.63, i32 noundef %609, i16 noundef signext %610)
  %611 = call i64 @clock() #4
  store i64 %611, ptr %2, align 8, !tbaa !13
  %612 = load ptr, ptr %4, align 8, !tbaa !11
  %613 = load i32, ptr %6, align 4, !tbaa !5
  call void @selectionSort(ptr noundef %612, i32 noundef %613)
  %614 = call i64 @clock() #4
  store i64 %614, ptr %3, align 8, !tbaa !13
  br label %615

615:                                              ; preds = %606, %593, %584, %575, %572
  %616 = load ptr, ptr %4, align 8, !tbaa !11
  %617 = load i32, ptr %6, align 4, !tbaa !5
  %618 = load i64, ptr %2, align 8, !tbaa !13
  %619 = load i64, ptr %3, align 8, !tbaa !13
  %620 = load i16, ptr %10, align 2, !tbaa !9
  %621 = sext i16 %620 to i32
  %622 = icmp ne i32 %621, 3
  call void @informationsPosSort(ptr noundef %616, i32 noundef %617, i64 noundef %618, i64 noundef %619, i1 noundef zeroext %622)
  br label %757

623:                                              ; preds = %27
  br label %624

624:                                              ; preds = %755, %623
  br label %625

625:                                              ; preds = %624
  call void (...) @title()
  br label %626

626:                                              ; preds = %676, %625
  br label %627

627:                                              ; preds = %626
  %628 = load i16, ptr %12, align 2, !tbaa !9
  %629 = sext i16 %628 to i32
  %630 = icmp sgt i32 %629, 1
  br i1 %630, label %631, label %644

631:                                              ; preds = %627
  %632 = load i16, ptr %12, align 2, !tbaa !9
  %633 = sext i16 %632 to i32
  %634 = icmp sgt i32 %633, 2
  br i1 %634, label %635, label %641

635:                                              ; preds = %631
  %636 = load i16, ptr %12, align 2, !tbaa !9
  %637 = sext i16 %636 to i32
  %638 = icmp eq i32 %637, 3
  %639 = zext i1 %638 to i64
  %640 = select i1 %638, ptr @.str.65, ptr @.str.66
  br label %642

641:                                              ; preds = %631
  br label %642

642:                                              ; preds = %641, %635
  %643 = phi ptr [ %640, %635 ], [ @.str.67, %641 ]
  br label %645

644:                                              ; preds = %627
  br label %645

645:                                              ; preds = %644, %642
  %646 = phi ptr [ %643, %642 ], [ @.str.68, %644 ]
  %647 = load i32, ptr %9, align 4, !tbaa !5
  %648 = load i32, ptr %6, align 4, !tbaa !5
  %649 = load i8, ptr @txtFile, align 1, !tbaa !17, !range !19, !noundef !20
  %650 = trunc i8 %649 to i1
  %651 = zext i1 %650 to i64
  %652 = select i1 %650, ptr @.str.69, ptr @.str.70
  %653 = load i8, ptr @displayArray, align 1, !tbaa !17, !range !19, !noundef !20
  %654 = trunc i8 %653 to i1
  %655 = zext i1 %654 to i64
  %656 = select i1 %654, ptr @.str.69, ptr @.str.70
  %657 = load i8, ptr @executionTime, align 1, !tbaa !17, !range !19, !noundef !20
  %658 = trunc i8 %657 to i1
  %659 = zext i1 %658 to i64
  %660 = select i1 %658, ptr @.str.69, ptr @.str.70
  %661 = call i32 (ptr, ...) @printf(ptr noundef @.str.64, ptr noundef %646, i32 noundef %647, i32 noundef %648, ptr noundef %652, ptr noundef %656, ptr noundef %660)
  %662 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef @.str.1, ptr noundef %10)
  %663 = icmp ne i32 %662, 1
  br i1 %663, label %664, label %665

664:                                              ; preds = %645
  call void @printError(ptr noundef @.str.2, i1 noundef zeroext true)
  br label %676

665:                                              ; preds = %645
  %666 = load i16, ptr %10, align 2, !tbaa !9
  %667 = sext i16 %666 to i32
  %668 = icmp slt i32 %667, 0
  br i1 %668, label %673, label %669

669:                                              ; preds = %665
  %670 = load i16, ptr %10, align 2, !tbaa !9
  %671 = sext i16 %670 to i32
  %672 = icmp sgt i32 %671, 6
  br i1 %672, label %673, label %674

673:                                              ; preds = %669, %665
  call void @printError(ptr noundef @.str.3, i1 noundef zeroext false)
  br label %675

674:                                              ; preds = %669
  br label %677

675:                                              ; preds = %673
  br label %676

676:                                              ; preds = %675, %664
  br label %626

677:                                              ; preds = %674
  call void (...) @clearScreen()
  %678 = load i16, ptr %10, align 2, !tbaa !9
  %679 = sext i16 %678 to i32
  %680 = icmp eq i32 %679, 0
  br i1 %680, label %681, label %682

681:                                              ; preds = %677
  br label %756

682:                                              ; preds = %677
  %683 = load i16, ptr %10, align 2, !tbaa !9
  %684 = sext i16 %683 to i32
  switch i32 %684, label %755 [
    i32 1, label %685
    i32 2, label %687
    i32 3, label %706
    i32 4, label %740
    i32 5, label %745
    i32 6, label %750
  ]

685:                                              ; preds = %682
  %686 = call signext i16 @menu(ptr noundef @.str.71, i32 noundef 4)
  store i16 %686, ptr %12, align 2, !tbaa !9
  call void (...) @clearScreen()
  br label %755

687:                                              ; preds = %682
  br label %688

688:                                              ; preds = %695, %687
  br label %689

689:                                              ; preds = %688
  call void (...) @title()
  %690 = call i32 (ptr, ...) @printf(ptr noundef @.str.72)
  %691 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef @.str.73, ptr noundef %9)
  %692 = icmp ne i32 %691, 1
  br i1 %692, label %693, label %694

693:                                              ; preds = %689
  call void @printError(ptr noundef @.str.2, i1 noundef zeroext true)
  br label %695

694:                                              ; preds = %689
  call void (...) @clearScreen()
  br label %696

695:                                              ; preds = %693
  br label %688

696:                                              ; preds = %694
  %697 = load i32, ptr %9, align 4, !tbaa !5
  %698 = icmp slt i32 %697, 3
  br i1 %698, label %699, label %700

699:                                              ; preds = %696
  store i32 3, ptr %9, align 4, !tbaa !5
  br label %705

700:                                              ; preds = %696
  %701 = load i32, ptr %9, align 4, !tbaa !5
  %702 = icmp sgt i32 %701, 2147483647
  br i1 %702, label %703, label %704

703:                                              ; preds = %700
  store i32 2147483647, ptr %9, align 4, !tbaa !5
  br label %704

704:                                              ; preds = %703, %700
  br label %705

705:                                              ; preds = %704, %699
  br label %755

706:                                              ; preds = %682
  br label %707

707:                                              ; preds = %722, %706
  br label %708

708:                                              ; preds = %707
  call void (...) @title()
  %709 = call i32 (ptr, ...) @printf(ptr noundef @.str.74)
  %710 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef @.str.75, ptr noundef %6)
  %711 = icmp ne i32 %710, 1
  br i1 %711, label %712, label %713

712:                                              ; preds = %708
  call void @printError(ptr noundef @.str.2, i1 noundef zeroext true)
  br label %722

713:                                              ; preds = %708
  %714 = load i32, ptr %6, align 4, !tbaa !5
  %715 = icmp slt i32 %714, 2
  br i1 %715, label %719, label %716

716:                                              ; preds = %713
  %717 = load i32, ptr %6, align 4, !tbaa !5
  %718 = icmp sgt i32 %717, 67108864
  br i1 %718, label %719, label %720

719:                                              ; preds = %716, %713
  call void @printError(ptr noundef @.str.76, i1 noundef zeroext false)
  br label %721

720:                                              ; preds = %716
  call void (...) @clearScreen()
  br label %723

721:                                              ; preds = %719
  br label %722

722:                                              ; preds = %721, %712
  br label %707

723:                                              ; preds = %720
  store i32 1, ptr %7, align 4, !tbaa !5
  br label %724

724:                                              ; preds = %728, %723
  %725 = load i32, ptr %7, align 4, !tbaa !5
  %726 = load i32, ptr %6, align 4, !tbaa !5
  %727 = icmp slt i32 %725, %726
  br i1 %727, label %728, label %731

728:                                              ; preds = %724
  %729 = load i32, ptr %7, align 4, !tbaa !5
  %730 = shl i32 %729, 1
  store i32 %730, ptr %7, align 4, !tbaa !5
  br label %724, !llvm.loop !21

731:                                              ; preds = %724
  %732 = load i32, ptr %6, align 4, !tbaa !5
  %733 = load i32, ptr %7, align 4, !tbaa !5
  %734 = icmp eq i32 %732, %733
  br i1 %734, label %735, label %737

735:                                              ; preds = %731
  %736 = load i32, ptr %6, align 4, !tbaa !5
  store i32 %736, ptr %8, align 4, !tbaa !5
  br label %737

737:                                              ; preds = %735, %731
  %738 = load ptr, ptr %4, align 8, !tbaa !11
  call void @free(ptr noundef %738) #4
  %739 = load i32, ptr %6, align 4, !tbaa !5
  call void @createArray(ptr noundef %4, i32 noundef %739)
  br label %755

740:                                              ; preds = %682
  %741 = load i8, ptr @txtFile, align 1, !tbaa !17, !range !19, !noundef !20
  %742 = trunc i8 %741 to i1
  %743 = xor i1 %742, true
  %744 = zext i1 %743 to i8
  store i8 %744, ptr @txtFile, align 1, !tbaa !17
  br label %755

745:                                              ; preds = %682
  %746 = load i8, ptr @displayArray, align 1, !tbaa !17, !range !19, !noundef !20
  %747 = trunc i8 %746 to i1
  %748 = xor i1 %747, true
  %749 = zext i1 %748 to i8
  store i8 %749, ptr @displayArray, align 1, !tbaa !17
  br label %755

750:                                              ; preds = %682
  %751 = load i8, ptr @executionTime, align 1, !tbaa !17, !range !19, !noundef !20
  %752 = trunc i8 %751 to i1
  %753 = xor i1 %752, true
  %754 = zext i1 %753 to i8
  store i8 %754, ptr @executionTime, align 1, !tbaa !17
  br label %755

755:                                              ; preds = %750, %745, %740, %737, %705, %685, %682
  br label %624

756:                                              ; preds = %681
  br label %757

757:                                              ; preds = %756, %615, %571, %562, %513, %508, %443, %434, %401, %392, %325, %316, %303, %294, %167, %158, %34, %27
  br label %16

758:                                              ; preds = %26
  call void (...) @QRCode()
  %759 = load ptr, ptr %4, align 8, !tbaa !11
  call void @free(ptr noundef %759) #4
  call void @llvm.lifetime.end.p0(i64 2, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 2, ptr %11) #4
  call void @llvm.lifetime.end.p0(i64 2, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %2) #4
  ret i32 0
}

; Function Attrs: nounwind
declare void @srand(i32 noundef) #3

; Function Attrs: nounwind
declare i64 @time(ptr noundef) #3

declare void @createArray(ptr noundef, i32 noundef) #1

declare void @generateArray(ptr noundef, i32 noundef, i16 noundef signext, i32 noundef) #1

; Function Attrs: nounwind
declare i64 @clock() #3

declare void @badSort(ptr noundef, i32 noundef) #1

declare void @bogoBogoSort(ptr noundef, i32 noundef) #1

declare void @bogoSort(ptr noundef, i32 noundef) #1

declare void @bubbleBogoSort(ptr noundef, i32 noundef) #1

declare void @cocktailBogoSort(ptr noundef, i32 noundef) #1

declare void @exchangeBogoSort(ptr noundef, i32 noundef) #1

declare void @lessBogoSort(ptr noundef, i32 noundef) #1

declare void @pancakeSort(ptr noundef, i32 noundef) #1

declare void @sillySort(ptr noundef, i32 noundef, i32 noundef) #1

declare void @slowSort(ptr noundef, i32 noundef, i32 noundef) #1

declare void @sleepSort(ptr noundef, i32 noundef) #1

declare void @spaghettiSort(ptr noundef, i32 noundef) #1

declare void @stoogeSort(ptr noundef, i32 noundef, i32 noundef) #1

declare void @bubbleSort(ptr noundef, i32 noundef) #1

declare void @circleSort(ptr noundef, i32 noundef) #1

declare void @cocktailShakerSort(ptr noundef, i32 noundef) #1

declare void @combSort(ptr noundef, i32 noundef) #1

declare void @dualPivotQuickSort(ptr noundef, i32 noundef, i32 noundef) #1

declare void @gnomeSort(ptr noundef, i32 noundef) #1

declare void @oddEvenSort(ptr noundef, i32 noundef) #1

declare void @bubbleSortOptmized(ptr noundef, i32 noundef) #1

declare void @optimizedCocktailShakerSort(ptr noundef, i32 noundef) #1

declare void @optimizedGnomeSort(ptr noundef, i32 noundef) #1

declare void @quickSort(ptr noundef, i32 noundef, i32 noundef) #1

declare void @quickSort3Way(ptr noundef, i32 noundef, i32 noundef) #1

declare void @stableQuickSort(ptr noundef, i32 noundef, i32 noundef) #1

declare void @timSort(ptr noundef, i32 noundef) #1

declare void @AVLTreeSort(ptr noundef, i32 noundef) #1

declare void @binaryInsertionSort(ptr noundef, i32 noundef) #1

declare void @cycleSort(ptr noundef, i32 noundef) #1

declare void @insertionSort(ptr noundef, i32 noundef) #1

declare void @patienceSort(ptr noundef, i32 noundef) #1

declare void @shellSort(ptr noundef, i32 noundef) #1

declare void @treeSort(ptr noundef, i32 noundef) #1

declare void @bottomupMergeSort(ptr noundef, i32 noundef) #1

declare void @mergeSortInPlace(ptr noundef, i32 noundef, i32 noundef) #1

declare void @mergeSort(ptr noundef, i32 noundef, i32 noundef) #1

declare void @bitonicSort(ptr noundef, i32 noundef, i32 noundef, i32 noundef) #1

; Function Attrs: nounwind
declare void @free(ptr noundef) #3

declare void @pairwiseSort(ptr noundef, i32 noundef, i32 noundef, i32 noundef) #1

declare void @bucketSort(ptr noundef, i32 noundef) #1

declare void @countingSort(ptr noundef, i32 noundef) #1

declare void @beadSort(ptr noundef, i32 noundef) #1

declare void @pigeonholeSort(ptr noundef, i32 noundef) #1

declare void @radixLSDSort(ptr noundef, i32 noundef, i32 noundef) #1

declare void @doubleSelectionSort(ptr noundef, i32 noundef) #1

declare void @maxHeapSort(ptr noundef, i32 noundef) #1

declare void @minHeapSort(ptr noundef, i32 noundef) #1

declare void @selectionSort(ptr noundef, i32 noundef) #1

declare void @QRCode(...) #1

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"short", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"any pointer", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"long", !7, i64 0}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = !{!18, !18, i64 0}
!18 = !{!"_Bool", !7, i64 0}
!19 = !{i8 0, i8 2}
!20 = !{}
!21 = distinct !{!21, !16}


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

@txtFile = external dso_local local_unnamed_addr global i8, align 1
@displayArray = external dso_local local_unnamed_addr global i8, align 1
@executionTime = external dso_local local_unnamed_addr global i8, align 1
@arraySorted = external dso_local local_unnamed_addr global i8, align 1
@.str.1 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [247 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [334 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [358 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [189 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [120 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [115 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [118 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [180 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [143 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [219 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [97 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [54 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @printError(ptr noundef, i1 noundef zeroext) local_unnamed_addr #0

declare void @clearScreen(...) local_unnamed_addr #1

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

; Function Attrs: nounwind uwtable
declare dso_local signext i16 @menu(ptr noundef, i32 noundef) local_unnamed_addr #0

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

declare void @title(...) local_unnamed_addr #1

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

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

; Function Attrs: nounwind uwtable
declare dso_local void @informationsPreSort(ptr noundef, i32 noundef, ptr noundef, i32 noundef, i16 noundef signext) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @informationsPosSort(ptr noundef, i32 noundef, i64 noundef, i64 noundef, i1 noundef zeroext) local_unnamed_addr #0

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

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @main() local_unnamed_addr #0 {
  %1 = alloca ptr, align 8
  %2 = alloca ptr, align 8
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca i16, align 2
  %6 = tail call i64 @time(ptr noundef null) #6
  %7 = trunc i64 %6 to i32
  tail call void @srand(i32 noundef %7) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %1) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #6
  store i32 10, ptr %3, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #6
  store i32 32, ptr %4, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %5) #6
  call void @createArray(ptr noundef nonnull %1, i32 noundef 10) #6
  call void (...) @clearScreen() #6
  br label %8

8:                                                ; preds = %.loopexit, %0
  %9 = phi i32 [ 32, %0 ], [ %.pre, %.loopexit ]
  %.0103 = phi i64 [ undef, %0 ], [ %.8111, %.loopexit ]
  %.096 = phi i32 [ 16, %0 ], [ %.4100, %.loopexit ]
  %.092 = phi i64 [ undef, %0 ], [ %.8, %.loopexit ]
  %.0 = phi i16 [ 2, %0 ], [ %.3, %.loopexit ]
  %10 = load ptr, ptr %1, align 8, !tbaa !9
  %11 = load i32, ptr %3, align 4, !tbaa !5
  call void @generateArray(ptr noundef %10, i32 noundef %11, i16 noundef signext %.0, i32 noundef %9) #6
  %12 = call signext i16 @menu(ptr noundef nonnull @.str.6, i32 noundef 9)
  call void (...) @clearScreen() #6
  switch i16 %12, label %.loopexit [
    i16 0, label %501
    i16 1, label %13
    i16 2, label %114
    i16 3, label %218
    i16 4, label %232
    i16 5, label %288
    i16 6, label %318
    i16 7, label %357
    i16 8, label %399
    i16 9, label %.preheader139
  ]

13:                                               ; preds = %8
  %14 = call signext i16 @menu(ptr noundef nonnull @.str.7, i32 noundef 13)
  store i16 %14, ptr %5, align 2, !tbaa !11
  call void (...) @clearScreen() #6
  %15 = load i16, ptr %5, align 2, !tbaa !11
  switch i16 %15, label %111 [
    i16 0, label %.loopexit
    i16 1, label %16
    i16 2, label %23
    i16 3, label %30
    i16 4, label %37
    i16 5, label %44
    i16 6, label %51
    i16 7, label %58
    i16 8, label %65
    i16 9, label %72
    i16 10, label %80
    i16 11, label %88
    i16 12, label %95
    i16 13, label %102
  ]

16:                                               ; preds = %13
  %17 = load ptr, ptr %1, align 8, !tbaa !9
  %18 = load i32, ptr %3, align 4, !tbaa !5
  %19 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %17, i32 noundef %18, ptr noundef nonnull @.str.8, i32 noundef %19, i16 noundef signext %.0)
  %20 = call i64 @clock() #6
  %21 = load ptr, ptr %1, align 8, !tbaa !9
  %22 = load i32, ptr %3, align 4, !tbaa !5
  call void @badSort(ptr noundef %21, i32 noundef %22) #6
  br label %.sink.split

23:                                               ; preds = %13
  %24 = load ptr, ptr %1, align 8, !tbaa !9
  %25 = load i32, ptr %3, align 4, !tbaa !5
  %26 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %24, i32 noundef %25, ptr noundef nonnull @.str.9, i32 noundef %26, i16 noundef signext %.0)
  %27 = call i64 @clock() #6
  %28 = load ptr, ptr %1, align 8, !tbaa !9
  %29 = load i32, ptr %3, align 4, !tbaa !5
  call void @bogoBogoSort(ptr noundef %28, i32 noundef %29) #6
  br label %.sink.split

30:                                               ; preds = %13
  %31 = load ptr, ptr %1, align 8, !tbaa !9
  %32 = load i32, ptr %3, align 4, !tbaa !5
  %33 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %31, i32 noundef %32, ptr noundef nonnull @.str.10, i32 noundef %33, i16 noundef signext %.0)
  %34 = call i64 @clock() #6
  %35 = load ptr, ptr %1, align 8, !tbaa !9
  %36 = load i32, ptr %3, align 4, !tbaa !5
  call void @bogoSort(ptr noundef %35, i32 noundef %36) #6
  br label %.sink.split

37:                                               ; preds = %13
  %38 = load ptr, ptr %1, align 8, !tbaa !9
  %39 = load i32, ptr %3, align 4, !tbaa !5
  %40 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %38, i32 noundef %39, ptr noundef nonnull @.str.11, i32 noundef %40, i16 noundef signext %.0)
  %41 = call i64 @clock() #6
  %42 = load ptr, ptr %1, align 8, !tbaa !9
  %43 = load i32, ptr %3, align 4, !tbaa !5
  call void @bubbleBogoSort(ptr noundef %42, i32 noundef %43) #6
  br label %.sink.split

44:                                               ; preds = %13
  %45 = load ptr, ptr %1, align 8, !tbaa !9
  %46 = load i32, ptr %3, align 4, !tbaa !5
  %47 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %45, i32 noundef %46, ptr noundef nonnull @.str.12, i32 noundef %47, i16 noundef signext %.0)
  %48 = call i64 @clock() #6
  %49 = load ptr, ptr %1, align 8, !tbaa !9
  %50 = load i32, ptr %3, align 4, !tbaa !5
  call void @cocktailBogoSort(ptr noundef %49, i32 noundef %50) #6
  br label %.sink.split

51:                                               ; preds = %13
  %52 = load ptr, ptr %1, align 8, !tbaa !9
  %53 = load i32, ptr %3, align 4, !tbaa !5
  %54 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %52, i32 noundef %53, ptr noundef nonnull @.str.13, i32 noundef %54, i16 noundef signext %.0)
  %55 = call i64 @clock() #6
  %56 = load ptr, ptr %1, align 8, !tbaa !9
  %57 = load i32, ptr %3, align 4, !tbaa !5
  call void @exchangeBogoSort(ptr noundef %56, i32 noundef %57) #6
  br label %.sink.split

58:                                               ; preds = %13
  %59 = load ptr, ptr %1, align 8, !tbaa !9
  %60 = load i32, ptr %3, align 4, !tbaa !5
  %61 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %59, i32 noundef %60, ptr noundef nonnull @.str.14, i32 noundef %61, i16 noundef signext %.0)
  %62 = call i64 @clock() #6
  %63 = load ptr, ptr %1, align 8, !tbaa !9
  %64 = load i32, ptr %3, align 4, !tbaa !5
  call void @lessBogoSort(ptr noundef %63, i32 noundef %64) #6
  br label %.sink.split

65:                                               ; preds = %13
  %66 = load ptr, ptr %1, align 8, !tbaa !9
  %67 = load i32, ptr %3, align 4, !tbaa !5
  %68 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %66, i32 noundef %67, ptr noundef nonnull @.str.15, i32 noundef %68, i16 noundef signext %.0)
  %69 = call i64 @clock() #6
  %70 = load ptr, ptr %1, align 8, !tbaa !9
  %71 = load i32, ptr %3, align 4, !tbaa !5
  call void @pancakeSort(ptr noundef %70, i32 noundef %71) #6
  br label %.sink.split

72:                                               ; preds = %13
  %73 = load ptr, ptr %1, align 8, !tbaa !9
  %74 = load i32, ptr %3, align 4, !tbaa !5
  %75 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %73, i32 noundef %74, ptr noundef nonnull @.str.16, i32 noundef %75, i16 noundef signext %.0)
  %76 = call i64 @clock() #6
  %77 = load ptr, ptr %1, align 8, !tbaa !9
  %78 = load i32, ptr %3, align 4, !tbaa !5
  %79 = add nsw i32 %78, -1
  call void @sillySort(ptr noundef %77, i32 noundef 0, i32 noundef %79) #6
  br label %.sink.split

80:                                               ; preds = %13
  %81 = load ptr, ptr %1, align 8, !tbaa !9
  %82 = load i32, ptr %3, align 4, !tbaa !5
  %83 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %81, i32 noundef %82, ptr noundef nonnull @.str.17, i32 noundef %83, i16 noundef signext %.0)
  %84 = call i64 @clock() #6
  %85 = load ptr, ptr %1, align 8, !tbaa !9
  %86 = load i32, ptr %3, align 4, !tbaa !5
  %87 = add nsw i32 %86, -1
  call void @slowSort(ptr noundef %85, i32 noundef 0, i32 noundef %87) #6
  br label %.sink.split

88:                                               ; preds = %13
  %89 = load ptr, ptr %1, align 8, !tbaa !9
  %90 = load i32, ptr %3, align 4, !tbaa !5
  %91 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %89, i32 noundef %90, ptr noundef nonnull @.str.18, i32 noundef %91, i16 noundef signext %.0)
  %92 = call i64 @clock() #6
  %93 = load ptr, ptr %1, align 8, !tbaa !9
  %94 = load i32, ptr %3, align 4, !tbaa !5
  call void @sleepSort(ptr noundef %93, i32 noundef %94) #6
  br label %.sink.split

95:                                               ; preds = %13
  %96 = load ptr, ptr %1, align 8, !tbaa !9
  %97 = load i32, ptr %3, align 4, !tbaa !5
  %98 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %96, i32 noundef %97, ptr noundef nonnull @.str.19, i32 noundef %98, i16 noundef signext %.0)
  %99 = call i64 @clock() #6
  %100 = load ptr, ptr %1, align 8, !tbaa !9
  %101 = load i32, ptr %3, align 4, !tbaa !5
  call void @spaghettiSort(ptr noundef %100, i32 noundef %101) #6
  br label %.sink.split

102:                                              ; preds = %13
  %103 = load ptr, ptr %1, align 8, !tbaa !9
  %104 = load i32, ptr %3, align 4, !tbaa !5
  %105 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %103, i32 noundef %104, ptr noundef nonnull @.str.20, i32 noundef %105, i16 noundef signext %.0)
  %106 = call i64 @clock() #6
  %107 = load ptr, ptr %1, align 8, !tbaa !9
  %108 = load i32, ptr %3, align 4, !tbaa !5
  %109 = add nsw i32 %108, -1
  call void @stoogeSort(ptr noundef %107, i32 noundef 0, i32 noundef %109) #6
  br label %.sink.split

.sink.split:                                      ; preds = %16, %23, %30, %37, %44, %51, %58, %65, %72, %80, %88, %95, %102
  %.193.ph = phi i64 [ %20, %16 ], [ %27, %23 ], [ %34, %30 ], [ %41, %37 ], [ %48, %44 ], [ %55, %51 ], [ %62, %58 ], [ %69, %65 ], [ %76, %72 ], [ %84, %80 ], [ %92, %88 ], [ %99, %95 ], [ %106, %102 ]
  %110 = call i64 @clock() #6
  br label %111

111:                                              ; preds = %.sink.split, %13
  %.1104 = phi i64 [ %.0103, %13 ], [ %110, %.sink.split ]
  %.193 = phi i64 [ %.092, %13 ], [ %.193.ph, %.sink.split ]
  %112 = load ptr, ptr %1, align 8, !tbaa !9
  %113 = load i32, ptr %3, align 4, !tbaa !5
  call void @informationsPosSort(ptr noundef %112, i32 noundef %113, i64 noundef %.193, i64 noundef %.1104, i1 noundef zeroext true)
  br label %.loopexit

114:                                              ; preds = %8
  %115 = call signext i16 @menu(ptr noundef nonnull @.str.21, i32 noundef 13)
  store i16 %115, ptr %5, align 2, !tbaa !11
  call void (...) @clearScreen() #6
  %116 = load i16, ptr %5, align 2, !tbaa !11
  switch i16 %116, label %215 [
    i16 0, label %.loopexit
    i16 1, label %117
    i16 2, label %125
    i16 3, label %132
    i16 4, label %139
    i16 5, label %146
    i16 6, label %154
    i16 7, label %161
    i16 8, label %168
    i16 9, label %176
    i16 10, label %183
    i16 11, label %190
    i16 12, label %198
    i16 13, label %206
  ]

117:                                              ; preds = %114
  %118 = load ptr, ptr %1, align 8, !tbaa !9
  %119 = load i32, ptr %3, align 4, !tbaa !5
  %120 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %118, i32 noundef %119, ptr noundef nonnull @.str.22, i32 noundef %120, i16 noundef signext %.0)
  %121 = call i64 @clock() #6
  %122 = load ptr, ptr %1, align 8, !tbaa !9
  %123 = load i32, ptr %3, align 4, !tbaa !5
  %124 = add nsw i32 %123, -1
  call void @bubbleSort(ptr noundef %122, i32 noundef %124) #6
  br label %.sink.split143

125:                                              ; preds = %114
  %126 = load ptr, ptr %1, align 8, !tbaa !9
  %127 = load i32, ptr %3, align 4, !tbaa !5
  %128 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %126, i32 noundef %127, ptr noundef nonnull @.str.23, i32 noundef %128, i16 noundef signext %.0)
  %129 = call i64 @clock() #6
  %130 = load ptr, ptr %1, align 8, !tbaa !9
  %131 = load i32, ptr %3, align 4, !tbaa !5
  call void @circleSort(ptr noundef %130, i32 noundef %131) #6
  br label %.sink.split143

132:                                              ; preds = %114
  %133 = load ptr, ptr %1, align 8, !tbaa !9
  %134 = load i32, ptr %3, align 4, !tbaa !5
  %135 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %133, i32 noundef %134, ptr noundef nonnull @.str.24, i32 noundef %135, i16 noundef signext %.0)
  %136 = call i64 @clock() #6
  %137 = load ptr, ptr %1, align 8, !tbaa !9
  %138 = load i32, ptr %3, align 4, !tbaa !5
  call void @cocktailShakerSort(ptr noundef %137, i32 noundef %138) #6
  br label %.sink.split143

139:                                              ; preds = %114
  %140 = load ptr, ptr %1, align 8, !tbaa !9
  %141 = load i32, ptr %3, align 4, !tbaa !5
  %142 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %140, i32 noundef %141, ptr noundef nonnull @.str.25, i32 noundef %142, i16 noundef signext %.0)
  %143 = call i64 @clock() #6
  %144 = load ptr, ptr %1, align 8, !tbaa !9
  %145 = load i32, ptr %3, align 4, !tbaa !5
  call void @combSort(ptr noundef %144, i32 noundef %145) #6
  br label %.sink.split143

146:                                              ; preds = %114
  %147 = load ptr, ptr %1, align 8, !tbaa !9
  %148 = load i32, ptr %3, align 4, !tbaa !5
  %149 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %147, i32 noundef %148, ptr noundef nonnull @.str.26, i32 noundef %149, i16 noundef signext %.0)
  %150 = call i64 @clock() #6
  %151 = load ptr, ptr %1, align 8, !tbaa !9
  %152 = load i32, ptr %3, align 4, !tbaa !5
  %153 = add nsw i32 %152, -1
  call void @dualPivotQuickSort(ptr noundef %151, i32 noundef 0, i32 noundef %153) #6
  br label %.sink.split143

154:                                              ; preds = %114
  %155 = load ptr, ptr %1, align 8, !tbaa !9
  %156 = load i32, ptr %3, align 4, !tbaa !5
  %157 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %155, i32 noundef %156, ptr noundef nonnull @.str.27, i32 noundef %157, i16 noundef signext %.0)
  %158 = call i64 @clock() #6
  %159 = load ptr, ptr %1, align 8, !tbaa !9
  %160 = load i32, ptr %3, align 4, !tbaa !5
  call void @gnomeSort(ptr noundef %159, i32 noundef %160) #6
  br label %.sink.split143

161:                                              ; preds = %114
  %162 = load ptr, ptr %1, align 8, !tbaa !9
  %163 = load i32, ptr %3, align 4, !tbaa !5
  %164 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %162, i32 noundef %163, ptr noundef nonnull @.str.28, i32 noundef %164, i16 noundef signext %.0)
  %165 = call i64 @clock() #6
  %166 = load ptr, ptr %1, align 8, !tbaa !9
  %167 = load i32, ptr %3, align 4, !tbaa !5
  call void @oddEvenSort(ptr noundef %166, i32 noundef %167) #6
  br label %.sink.split143

168:                                              ; preds = %114
  %169 = load ptr, ptr %1, align 8, !tbaa !9
  %170 = load i32, ptr %3, align 4, !tbaa !5
  %171 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %169, i32 noundef %170, ptr noundef nonnull @.str.29, i32 noundef %171, i16 noundef signext %.0)
  %172 = call i64 @clock() #6
  %173 = load ptr, ptr %1, align 8, !tbaa !9
  %174 = load i32, ptr %3, align 4, !tbaa !5
  %175 = add nsw i32 %174, -1
  call void @bubbleSortOptmized(ptr noundef %173, i32 noundef %175) #6
  br label %.sink.split143

176:                                              ; preds = %114
  %177 = load ptr, ptr %1, align 8, !tbaa !9
  %178 = load i32, ptr %3, align 4, !tbaa !5
  %179 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %177, i32 noundef %178, ptr noundef nonnull @.str.30, i32 noundef %179, i16 noundef signext %.0)
  %180 = call i64 @clock() #6
  %181 = load ptr, ptr %1, align 8, !tbaa !9
  %182 = load i32, ptr %3, align 4, !tbaa !5
  call void @optimizedCocktailShakerSort(ptr noundef %181, i32 noundef %182) #6
  br label %.sink.split143

183:                                              ; preds = %114
  %184 = load ptr, ptr %1, align 8, !tbaa !9
  %185 = load i32, ptr %3, align 4, !tbaa !5
  %186 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %184, i32 noundef %185, ptr noundef nonnull @.str.31, i32 noundef %186, i16 noundef signext %.0)
  %187 = call i64 @clock() #6
  %188 = load ptr, ptr %1, align 8, !tbaa !9
  %189 = load i32, ptr %3, align 4, !tbaa !5
  call void @optimizedGnomeSort(ptr noundef %188, i32 noundef %189) #6
  br label %.sink.split143

190:                                              ; preds = %114
  %191 = load ptr, ptr %1, align 8, !tbaa !9
  %192 = load i32, ptr %3, align 4, !tbaa !5
  %193 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %191, i32 noundef %192, ptr noundef nonnull @.str.32, i32 noundef %193, i16 noundef signext %.0)
  %194 = call i64 @clock() #6
  %195 = load ptr, ptr %1, align 8, !tbaa !9
  %196 = load i32, ptr %3, align 4, !tbaa !5
  %197 = add nsw i32 %196, -1
  call void @quickSort(ptr noundef %195, i32 noundef 0, i32 noundef %197) #6
  br label %.sink.split143

198:                                              ; preds = %114
  %199 = load ptr, ptr %1, align 8, !tbaa !9
  %200 = load i32, ptr %3, align 4, !tbaa !5
  %201 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %199, i32 noundef %200, ptr noundef nonnull @.str.33, i32 noundef %201, i16 noundef signext %.0)
  %202 = call i64 @clock() #6
  %203 = load ptr, ptr %1, align 8, !tbaa !9
  %204 = load i32, ptr %3, align 4, !tbaa !5
  %205 = add nsw i32 %204, -1
  call void @quickSort3Way(ptr noundef %203, i32 noundef 0, i32 noundef %205) #6
  br label %.sink.split143

206:                                              ; preds = %114
  %207 = load ptr, ptr %1, align 8, !tbaa !9
  %208 = load i32, ptr %3, align 4, !tbaa !5
  %209 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %207, i32 noundef %208, ptr noundef nonnull @.str.34, i32 noundef %209, i16 noundef signext %.0)
  %210 = call i64 @clock() #6
  %211 = load ptr, ptr %1, align 8, !tbaa !9
  %212 = load i32, ptr %3, align 4, !tbaa !5
  %213 = add nsw i32 %212, -1
  call void @stableQuickSort(ptr noundef %211, i32 noundef 0, i32 noundef %213) #6
  br label %.sink.split143

.sink.split143:                                   ; preds = %117, %125, %132, %139, %146, %154, %161, %168, %176, %183, %190, %198, %206
  %.294.ph = phi i64 [ %121, %117 ], [ %129, %125 ], [ %136, %132 ], [ %143, %139 ], [ %150, %146 ], [ %158, %154 ], [ %165, %161 ], [ %172, %168 ], [ %180, %176 ], [ %187, %183 ], [ %194, %190 ], [ %202, %198 ], [ %210, %206 ]
  %214 = call i64 @clock() #6
  br label %215

215:                                              ; preds = %.sink.split143, %114
  %.2105 = phi i64 [ %.0103, %114 ], [ %214, %.sink.split143 ]
  %.294 = phi i64 [ %.092, %114 ], [ %.294.ph, %.sink.split143 ]
  %216 = load ptr, ptr %1, align 8, !tbaa !9
  %217 = load i32, ptr %3, align 4, !tbaa !5
  call void @informationsPosSort(ptr noundef %216, i32 noundef %217, i64 noundef %.294, i64 noundef %.2105, i1 noundef zeroext true)
  br label %.loopexit

218:                                              ; preds = %8
  %219 = call signext i16 @menu(ptr noundef nonnull @.str.35, i32 noundef 1)
  store i16 %219, ptr %5, align 2, !tbaa !11
  call void (...) @clearScreen() #6
  %220 = load i16, ptr %5, align 2, !tbaa !11
  switch i16 %220, label %229 [
    i16 0, label %.loopexit
    i16 1, label %221
  ]

221:                                              ; preds = %218
  %222 = load ptr, ptr %1, align 8, !tbaa !9
  %223 = load i32, ptr %3, align 4, !tbaa !5
  %224 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %222, i32 noundef %223, ptr noundef nonnull @.str.36, i32 noundef %224, i16 noundef signext %.0)
  %225 = call i64 @clock() #6
  %226 = load ptr, ptr %1, align 8, !tbaa !9
  %227 = load i32, ptr %3, align 4, !tbaa !5
  call void @timSort(ptr noundef %226, i32 noundef %227) #6
  %228 = call i64 @clock() #6
  br label %229

229:                                              ; preds = %218, %221
  %.3106 = phi i64 [ %228, %221 ], [ %.0103, %218 ]
  %.395 = phi i64 [ %225, %221 ], [ %.092, %218 ]
  %230 = load ptr, ptr %1, align 8, !tbaa !9
  %231 = load i32, ptr %3, align 4, !tbaa !5
  call void @informationsPosSort(ptr noundef %230, i32 noundef %231, i64 noundef %.395, i64 noundef %.3106, i1 noundef zeroext true)
  br label %.loopexit

232:                                              ; preds = %8
  %233 = call signext i16 @menu(ptr noundef nonnull @.str.37, i32 noundef 7)
  store i16 %233, ptr %5, align 2, !tbaa !11
  call void (...) @clearScreen() #6
  %234 = load i16, ptr %5, align 2, !tbaa !11
  switch i16 %234, label %285 [
    i16 0, label %.loopexit
    i16 1, label %235
    i16 2, label %242
    i16 3, label %249
    i16 4, label %256
    i16 5, label %263
    i16 6, label %270
    i16 7, label %277
  ]

235:                                              ; preds = %232
  %236 = load ptr, ptr %1, align 8, !tbaa !9
  %237 = load i32, ptr %3, align 4, !tbaa !5
  %238 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %236, i32 noundef %237, ptr noundef nonnull @.str.38, i32 noundef %238, i16 noundef signext %.0)
  %239 = call i64 @clock() #6
  %240 = load ptr, ptr %1, align 8, !tbaa !9
  %241 = load i32, ptr %3, align 4, !tbaa !5
  call void @AVLTreeSort(ptr noundef %240, i32 noundef %241) #6
  br label %.sink.split144

242:                                              ; preds = %232
  %243 = load ptr, ptr %1, align 8, !tbaa !9
  %244 = load i32, ptr %3, align 4, !tbaa !5
  %245 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %243, i32 noundef %244, ptr noundef nonnull @.str.39, i32 noundef %245, i16 noundef signext %.0)
  %246 = call i64 @clock() #6
  %247 = load ptr, ptr %1, align 8, !tbaa !9
  %248 = load i32, ptr %3, align 4, !tbaa !5
  call void @binaryInsertionSort(ptr noundef %247, i32 noundef %248) #6
  br label %.sink.split144

249:                                              ; preds = %232
  %250 = load ptr, ptr %1, align 8, !tbaa !9
  %251 = load i32, ptr %3, align 4, !tbaa !5
  %252 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %250, i32 noundef %251, ptr noundef nonnull @.str.40, i32 noundef %252, i16 noundef signext %.0)
  %253 = call i64 @clock() #6
  %254 = load ptr, ptr %1, align 8, !tbaa !9
  %255 = load i32, ptr %3, align 4, !tbaa !5
  call void @cycleSort(ptr noundef %254, i32 noundef %255) #6
  br label %.sink.split144

256:                                              ; preds = %232
  %257 = load ptr, ptr %1, align 8, !tbaa !9
  %258 = load i32, ptr %3, align 4, !tbaa !5
  %259 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %257, i32 noundef %258, ptr noundef nonnull @.str.41, i32 noundef %259, i16 noundef signext %.0)
  %260 = call i64 @clock() #6
  %261 = load ptr, ptr %1, align 8, !tbaa !9
  %262 = load i32, ptr %3, align 4, !tbaa !5
  call void @insertionSort(ptr noundef %261, i32 noundef %262) #6
  br label %.sink.split144

263:                                              ; preds = %232
  %264 = load ptr, ptr %1, align 8, !tbaa !9
  %265 = load i32, ptr %3, align 4, !tbaa !5
  %266 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %264, i32 noundef %265, ptr noundef nonnull @.str.42, i32 noundef %266, i16 noundef signext %.0)
  %267 = call i64 @clock() #6
  %268 = load ptr, ptr %1, align 8, !tbaa !9
  %269 = load i32, ptr %3, align 4, !tbaa !5
  call void @patienceSort(ptr noundef %268, i32 noundef %269) #6
  br label %.sink.split144

270:                                              ; preds = %232
  %271 = load ptr, ptr %1, align 8, !tbaa !9
  %272 = load i32, ptr %3, align 4, !tbaa !5
  %273 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %271, i32 noundef %272, ptr noundef nonnull @.str.43, i32 noundef %273, i16 noundef signext %.0)
  %274 = call i64 @clock() #6
  %275 = load ptr, ptr %1, align 8, !tbaa !9
  %276 = load i32, ptr %3, align 4, !tbaa !5
  call void @shellSort(ptr noundef %275, i32 noundef %276) #6
  br label %.sink.split144

277:                                              ; preds = %232
  %278 = load ptr, ptr %1, align 8, !tbaa !9
  %279 = load i32, ptr %3, align 4, !tbaa !5
  %280 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %278, i32 noundef %279, ptr noundef nonnull @.str.44, i32 noundef %280, i16 noundef signext %.0)
  %281 = call i64 @clock() #6
  %282 = load ptr, ptr %1, align 8, !tbaa !9
  %283 = load i32, ptr %3, align 4, !tbaa !5
  call void @treeSort(ptr noundef %282, i32 noundef %283) #6
  br label %.sink.split144

.sink.split144:                                   ; preds = %235, %242, %249, %256, %263, %270, %277
  %.4.ph = phi i64 [ %239, %235 ], [ %246, %242 ], [ %253, %249 ], [ %260, %256 ], [ %267, %263 ], [ %274, %270 ], [ %281, %277 ]
  %284 = call i64 @clock() #6
  br label %285

285:                                              ; preds = %.sink.split144, %232
  %.4107 = phi i64 [ %.0103, %232 ], [ %284, %.sink.split144 ]
  %.4 = phi i64 [ %.092, %232 ], [ %.4.ph, %.sink.split144 ]
  %286 = load ptr, ptr %1, align 8, !tbaa !9
  %287 = load i32, ptr %3, align 4, !tbaa !5
  call void @informationsPosSort(ptr noundef %286, i32 noundef %287, i64 noundef %.4, i64 noundef %.4107, i1 noundef zeroext true)
  br label %.loopexit

288:                                              ; preds = %8
  %289 = call signext i16 @menu(ptr noundef nonnull @.str.45, i32 noundef 3)
  store i16 %289, ptr %5, align 2, !tbaa !11
  call void (...) @clearScreen() #6
  %290 = load i16, ptr %5, align 2, !tbaa !11
  switch i16 %290, label %315 [
    i16 0, label %.loopexit
    i16 1, label %291
    i16 2, label %298
    i16 3, label %306
  ]

291:                                              ; preds = %288
  %292 = load ptr, ptr %1, align 8, !tbaa !9
  %293 = load i32, ptr %3, align 4, !tbaa !5
  %294 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %292, i32 noundef %293, ptr noundef nonnull @.str.46, i32 noundef %294, i16 noundef signext %.0)
  %295 = call i64 @clock() #6
  %296 = load ptr, ptr %1, align 8, !tbaa !9
  %297 = load i32, ptr %3, align 4, !tbaa !5
  call void @bottomupMergeSort(ptr noundef %296, i32 noundef %297) #6
  br label %.sink.split145

298:                                              ; preds = %288
  %299 = load ptr, ptr %1, align 8, !tbaa !9
  %300 = load i32, ptr %3, align 4, !tbaa !5
  %301 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %299, i32 noundef %300, ptr noundef nonnull @.str.47, i32 noundef %301, i16 noundef signext %.0)
  %302 = call i64 @clock() #6
  %303 = load ptr, ptr %1, align 8, !tbaa !9
  %304 = load i32, ptr %3, align 4, !tbaa !5
  %305 = add nsw i32 %304, -1
  call void @mergeSortInPlace(ptr noundef %303, i32 noundef 0, i32 noundef %305) #6
  br label %.sink.split145

306:                                              ; preds = %288
  %307 = load ptr, ptr %1, align 8, !tbaa !9
  %308 = load i32, ptr %3, align 4, !tbaa !5
  %309 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %307, i32 noundef %308, ptr noundef nonnull @.str.48, i32 noundef %309, i16 noundef signext %.0)
  %310 = call i64 @clock() #6
  %311 = load ptr, ptr %1, align 8, !tbaa !9
  %312 = load i32, ptr %3, align 4, !tbaa !5
  %313 = add nsw i32 %312, -1
  call void @mergeSort(ptr noundef %311, i32 noundef 0, i32 noundef %313) #6
  br label %.sink.split145

.sink.split145:                                   ; preds = %291, %298, %306
  %.5.ph = phi i64 [ %295, %291 ], [ %302, %298 ], [ %310, %306 ]
  %314 = call i64 @clock() #6
  br label %315

315:                                              ; preds = %.sink.split145, %288
  %.5108 = phi i64 [ %.0103, %288 ], [ %314, %.sink.split145 ]
  %.5 = phi i64 [ %.092, %288 ], [ %.5.ph, %.sink.split145 ]
  %316 = load ptr, ptr %1, align 8, !tbaa !9
  %317 = load i32, ptr %3, align 4, !tbaa !5
  call void @informationsPosSort(ptr noundef %316, i32 noundef %317, i64 noundef %.5, i64 noundef %.5108, i1 noundef zeroext true)
  br label %.loopexit

318:                                              ; preds = %8
  %319 = call signext i16 @menu(ptr noundef nonnull @.str.49, i32 noundef 2)
  store i16 %319, ptr %5, align 2, !tbaa !11
  call void (...) @clearScreen() #6
  %320 = load i16, ptr %5, align 2, !tbaa !11
  switch i16 %320, label %.loopexit [
    i16 2, label %347
    i16 1, label %.preheader138
  ]

.preheader138:                                    ; preds = %318
  %321 = load i32, ptr %3, align 4, !tbaa !5
  br label %322

322:                                              ; preds = %322, %.preheader138
  %.0101 = phi i32 [ %324, %322 ], [ 1, %.preheader138 ]
  %323 = icmp slt i32 %.0101, %321
  %324 = shl i32 %.0101, 1
  br i1 %323, label %322, label %325, !llvm.loop !13

325:                                              ; preds = %322
  %.not131 = icmp eq i32 %.0101, %321
  br i1 %.not131, label %338, label %326

326:                                              ; preds = %325
  call void @createArray(ptr noundef nonnull %2, i32 noundef %.096) #6
  %327 = load ptr, ptr %2, align 8, !tbaa !9
  %328 = load i32, ptr %4, align 4, !tbaa !5
  call void @generateArray(ptr noundef %327, i32 noundef %.096, i16 noundef signext %.0, i32 noundef %328) #6
  %329 = load i32, ptr %3, align 4, !tbaa !5
  %330 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.50, i32 noundef %329, i32 noundef %.096)
  %331 = load ptr, ptr %2, align 8, !tbaa !9
  %332 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %331, i32 noundef %.096, ptr noundef nonnull @.str.51, i32 noundef %332, i16 noundef signext %.0)
  %333 = call i64 @clock() #6
  %334 = load ptr, ptr %2, align 8, !tbaa !9
  call void @bitonicSort(ptr noundef %334, i32 noundef 0, i32 noundef %.096, i32 noundef 1) #6
  %335 = call i64 @clock() #6
  %336 = load ptr, ptr %2, align 8, !tbaa !9
  call void @informationsPosSort(ptr noundef %336, i32 noundef %.096, i64 noundef %333, i64 noundef %335, i1 noundef zeroext true)
  %337 = load ptr, ptr %2, align 8, !tbaa !9
  call void @free(ptr noundef %337) #6
  br label %.loopexit

338:                                              ; preds = %325
  %339 = load ptr, ptr %1, align 8, !tbaa !9
  %340 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %339, i32 noundef %321, ptr noundef nonnull @.str.51, i32 noundef %340, i16 noundef signext %.0)
  %341 = call i64 @clock() #6
  %342 = load ptr, ptr %1, align 8, !tbaa !9
  %343 = load i32, ptr %3, align 4, !tbaa !5
  call void @bitonicSort(ptr noundef %342, i32 noundef 0, i32 noundef %343, i32 noundef 1) #6
  %344 = call i64 @clock() #6
  %345 = load ptr, ptr %1, align 8, !tbaa !9
  %346 = load i32, ptr %3, align 4, !tbaa !5
  call void @informationsPosSort(ptr noundef %345, i32 noundef %346, i64 noundef %341, i64 noundef %344, i1 noundef zeroext true)
  br label %.loopexit

347:                                              ; preds = %318
  %348 = load ptr, ptr %1, align 8, !tbaa !9
  %349 = load i32, ptr %3, align 4, !tbaa !5
  %350 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %348, i32 noundef %349, ptr noundef nonnull @.str.52, i32 noundef %350, i16 noundef signext %.0)
  %351 = call i64 @clock() #6
  %352 = load ptr, ptr %1, align 8, !tbaa !9
  %353 = load i32, ptr %3, align 4, !tbaa !5
  call void @pairwiseSort(ptr noundef %352, i32 noundef 0, i32 noundef %353, i32 noundef 1) #6
  %354 = call i64 @clock() #6
  %355 = load ptr, ptr %1, align 8, !tbaa !9
  %356 = load i32, ptr %3, align 4, !tbaa !5
  call void @informationsPosSort(ptr noundef %355, i32 noundef %356, i64 noundef %351, i64 noundef %354, i1 noundef zeroext true)
  br label %.loopexit

357:                                              ; preds = %8
  %358 = call signext i16 @menu(ptr noundef nonnull @.str.53, i32 noundef 5)
  store i16 %358, ptr %5, align 2, !tbaa !11
  call void (...) @clearScreen() #6
  %359 = load i16, ptr %5, align 2, !tbaa !11
  switch i16 %359, label %396 [
    i16 0, label %.loopexit
    i16 1, label %360
    i16 2, label %367
    i16 3, label %374
    i16 4, label %381
    i16 5, label %388
  ]

360:                                              ; preds = %357
  %361 = load ptr, ptr %1, align 8, !tbaa !9
  %362 = load i32, ptr %3, align 4, !tbaa !5
  %363 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %361, i32 noundef %362, ptr noundef nonnull @.str.54, i32 noundef %363, i16 noundef signext %.0)
  %364 = call i64 @clock() #6
  %365 = load ptr, ptr %1, align 8, !tbaa !9
  %366 = load i32, ptr %3, align 4, !tbaa !5
  call void @bucketSort(ptr noundef %365, i32 noundef %366) #6
  br label %.sink.split146

367:                                              ; preds = %357
  %368 = load ptr, ptr %1, align 8, !tbaa !9
  %369 = load i32, ptr %3, align 4, !tbaa !5
  %370 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %368, i32 noundef %369, ptr noundef nonnull @.str.55, i32 noundef %370, i16 noundef signext %.0)
  %371 = call i64 @clock() #6
  %372 = load ptr, ptr %1, align 8, !tbaa !9
  %373 = load i32, ptr %3, align 4, !tbaa !5
  call void @countingSort(ptr noundef %372, i32 noundef %373) #6
  br label %.sink.split146

374:                                              ; preds = %357
  %375 = load ptr, ptr %1, align 8, !tbaa !9
  %376 = load i32, ptr %3, align 4, !tbaa !5
  %377 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %375, i32 noundef %376, ptr noundef nonnull @.str.56, i32 noundef %377, i16 noundef signext %.0)
  %378 = call i64 @clock() #6
  %379 = load ptr, ptr %1, align 8, !tbaa !9
  %380 = load i32, ptr %3, align 4, !tbaa !5
  call void @beadSort(ptr noundef %379, i32 noundef %380) #6
  br label %.sink.split146

381:                                              ; preds = %357
  %382 = load ptr, ptr %1, align 8, !tbaa !9
  %383 = load i32, ptr %3, align 4, !tbaa !5
  %384 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %382, i32 noundef %383, ptr noundef nonnull @.str.57, i32 noundef %384, i16 noundef signext %.0)
  %385 = call i64 @clock() #6
  %386 = load ptr, ptr %1, align 8, !tbaa !9
  %387 = load i32, ptr %3, align 4, !tbaa !5
  call void @pigeonholeSort(ptr noundef %386, i32 noundef %387) #6
  br label %.sink.split146

388:                                              ; preds = %357
  %389 = load ptr, ptr %1, align 8, !tbaa !9
  %390 = load i32, ptr %3, align 4, !tbaa !5
  %391 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %389, i32 noundef %390, ptr noundef nonnull @.str.58, i32 noundef %391, i16 noundef signext %.0)
  %392 = call i64 @clock() #6
  %393 = load ptr, ptr %1, align 8, !tbaa !9
  %394 = load i32, ptr %3, align 4, !tbaa !5
  call void @radixLSDSort(ptr noundef %393, i32 noundef %394, i32 noundef 10) #6
  br label %.sink.split146

.sink.split146:                                   ; preds = %360, %367, %374, %381, %388
  %.6.ph = phi i64 [ %364, %360 ], [ %371, %367 ], [ %378, %374 ], [ %385, %381 ], [ %392, %388 ]
  %395 = call i64 @clock() #6
  br label %396

396:                                              ; preds = %.sink.split146, %357
  %.6109 = phi i64 [ %.0103, %357 ], [ %395, %.sink.split146 ]
  %.6 = phi i64 [ %.092, %357 ], [ %.6.ph, %.sink.split146 ]
  %397 = load ptr, ptr %1, align 8, !tbaa !9
  %398 = load i32, ptr %3, align 4, !tbaa !5
  call void @informationsPosSort(ptr noundef %397, i32 noundef %398, i64 noundef %.6, i64 noundef %.6109, i1 noundef zeroext true)
  br label %.loopexit

399:                                              ; preds = %8
  %400 = call signext i16 @menu(ptr noundef nonnull @.str.59, i32 noundef 4)
  store i16 %400, ptr %5, align 2, !tbaa !11
  call void (...) @clearScreen() #6
  %401 = load i16, ptr %5, align 2, !tbaa !11
  switch i16 %401, label %438 [
    i16 0, label %.loopexit
    i16 1, label %402
    i16 2, label %410
    i16 3, label %418
    i16 4, label %430
  ]

402:                                              ; preds = %399
  %403 = load ptr, ptr %1, align 8, !tbaa !9
  %404 = load i32, ptr %3, align 4, !tbaa !5
  %405 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %403, i32 noundef %404, ptr noundef nonnull @.str.60, i32 noundef %405, i16 noundef signext %.0)
  %406 = call i64 @clock() #6
  %407 = load ptr, ptr %1, align 8, !tbaa !9
  %408 = load i32, ptr %3, align 4, !tbaa !5
  call void @doubleSelectionSort(ptr noundef %407, i32 noundef %408) #6
  %409 = call i64 @clock() #6
  br label %438

410:                                              ; preds = %399
  %411 = load ptr, ptr %1, align 8, !tbaa !9
  %412 = load i32, ptr %3, align 4, !tbaa !5
  %413 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %411, i32 noundef %412, ptr noundef nonnull @.str.61, i32 noundef %413, i16 noundef signext %.0)
  %414 = call i64 @clock() #6
  %415 = load ptr, ptr %1, align 8, !tbaa !9
  %416 = load i32, ptr %3, align 4, !tbaa !5
  call void @maxHeapSort(ptr noundef %415, i32 noundef %416) #6
  %417 = call i64 @clock() #6
  br label %438

418:                                              ; preds = %399
  %419 = load ptr, ptr %1, align 8, !tbaa !9
  %420 = load i32, ptr %3, align 4, !tbaa !5
  %421 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %419, i32 noundef %420, ptr noundef nonnull @.str.62, i32 noundef %421, i16 noundef signext %.0)
  %422 = call i64 @clock() #6
  %423 = load ptr, ptr %1, align 8, !tbaa !9
  %424 = load i32, ptr %3, align 4, !tbaa !5
  call void @minHeapSort(ptr noundef %423, i32 noundef %424) #6
  %425 = call i64 @clock() #6
  %426 = load ptr, ptr %1, align 8, !tbaa !9
  %427 = load i32, ptr %3, align 4, !tbaa !5
  %428 = call zeroext i1 @isSorted(ptr noundef %426, i32 noundef %427, i1 noundef zeroext false) #6
  %429 = zext i1 %428 to i8
  store i8 %429, ptr @arraySorted, align 1, !tbaa !15
  br label %438

430:                                              ; preds = %399
  %431 = load ptr, ptr %1, align 8, !tbaa !9
  %432 = load i32, ptr %3, align 4, !tbaa !5
  %433 = load i32, ptr %4, align 4, !tbaa !5
  call void @informationsPreSort(ptr noundef %431, i32 noundef %432, ptr noundef nonnull @.str.63, i32 noundef %433, i16 noundef signext %.0)
  %434 = call i64 @clock() #6
  %435 = load ptr, ptr %1, align 8, !tbaa !9
  %436 = load i32, ptr %3, align 4, !tbaa !5
  call void @selectionSort(ptr noundef %435, i32 noundef %436) #6
  %437 = call i64 @clock() #6
  br label %438

438:                                              ; preds = %399, %430, %418, %410, %402
  %.7110 = phi i64 [ %437, %430 ], [ %425, %418 ], [ %417, %410 ], [ %409, %402 ], [ %.0103, %399 ]
  %.7 = phi i64 [ %434, %430 ], [ %422, %418 ], [ %414, %410 ], [ %406, %402 ], [ %.092, %399 ]
  %439 = load ptr, ptr %1, align 8, !tbaa !9
  %440 = load i32, ptr %3, align 4, !tbaa !5
  %441 = load i16, ptr %5, align 2, !tbaa !11
  %442 = icmp ne i16 %441, 3
  call void @informationsPosSort(ptr noundef %439, i32 noundef %440, i64 noundef %.7, i64 noundef %.7110, i1 noundef zeroext %442)
  br label %.loopexit

.preheader139:                                    ; preds = %8, %.preheader139.backedge
  %.197 = phi i32 [ %.197.be, %.preheader139.backedge ], [ %.096, %8 ]
  %.1 = phi i16 [ %.1.be, %.preheader139.backedge ], [ %.0, %8 ]
  call void (...) @title() #6
  %443 = icmp sgt i16 %.1, 1
  %.not = icmp eq i16 %.1, 2
  %444 = icmp eq i16 %.1, 3
  %445 = select i1 %444, ptr @.str.65, ptr @.str.66
  %spec.select142 = select i1 %.not, ptr @.str.67, ptr %445
  %446 = select i1 %443, ptr %spec.select142, ptr @.str.68
  br label %447

447:                                              ; preds = %.backedge, %.preheader139
  %448 = load i32, ptr %4, align 4, !tbaa !5
  %449 = load i32, ptr %3, align 4, !tbaa !5
  %450 = load i8, ptr @txtFile, align 1, !tbaa !15, !range !17, !noundef !18
  %451 = trunc nuw i8 %450 to i1
  %452 = select i1 %451, ptr @.str.69, ptr @.str.70
  %453 = load i8, ptr @displayArray, align 1, !tbaa !15, !range !17, !noundef !18
  %454 = trunc nuw i8 %453 to i1
  %455 = select i1 %454, ptr @.str.69, ptr @.str.70
  %456 = load i8, ptr @executionTime, align 1, !tbaa !15, !range !17, !noundef !18
  %457 = trunc nuw i8 %456 to i1
  %458 = select i1 %457, ptr @.str.69, ptr @.str.70
  %459 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.64, ptr noundef nonnull %446, i32 noundef %448, i32 noundef %449, ptr noundef nonnull %452, ptr noundef nonnull %455, ptr noundef nonnull %458)
  %460 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef nonnull @.str.1, ptr noundef nonnull %5)
  %.not125 = icmp eq i32 %460, 1
  br i1 %.not125, label %462, label %461

461:                                              ; preds = %447
  call void @printError(ptr noundef nonnull @.str.2, i1 noundef zeroext true)
  br label %.backedge

462:                                              ; preds = %447
  %463 = load i16, ptr %5, align 2
  %or.cond = icmp ugt i16 %463, 6
  br i1 %or.cond, label %464, label %465

464:                                              ; preds = %462
  call void @printError(ptr noundef nonnull @.str.3, i1 noundef zeroext false)
  br label %.backedge

.backedge:                                        ; preds = %464, %461
  br label %447

465:                                              ; preds = %462
  call void (...) @clearScreen() #6
  %466 = load i16, ptr %5, align 2, !tbaa !11
  switch i16 %466, label %.preheader139.backedge [
    i16 0, label %.loopexit
    i16 1, label %469
    i16 2, label %.preheader
    i16 3, label %.preheader137
    i16 4, label %492
    i16 5, label %495
    i16 6, label %498
  ]

.preheader:                                       ; preds = %465
  call void (...) @title() #6
  %467 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.72)
  %468 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef nonnull @.str.73, ptr noundef nonnull %4)
  %.not127141 = icmp eq i32 %468, 1
  br i1 %.not127141, label %._crit_edge, label %.lr.ph

469:                                              ; preds = %465
  %470 = call signext i16 @menu(ptr noundef nonnull @.str.71, i32 noundef 4)
  call void (...) @clearScreen() #6
  br label %.preheader139.backedge

.lr.ph:                                           ; preds = %.preheader, %.lr.ph
  call void @printError(ptr noundef nonnull @.str.2, i1 noundef zeroext true)
  call void (...) @title() #6
  %471 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.72)
  %472 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef nonnull @.str.73, ptr noundef nonnull %4)
  %.not127 = icmp eq i32 %472, 1
  br i1 %.not127, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %.lr.ph, %.preheader
  call void (...) @clearScreen() #6
  %473 = load i32, ptr %4, align 4, !tbaa !5
  %474 = icmp slt i32 %473, 3
  br i1 %474, label %475, label %.preheader139.backedge

.preheader139.backedge:                           ; preds = %._crit_edge, %465, %475, %498, %495, %492, %488, %469
  %.197.be = phi i32 [ %.197, %498 ], [ %.197, %495 ], [ %.197, %492 ], [ %spec.select, %488 ], [ %.197, %475 ], [ %.197, %469 ], [ %.197, %465 ], [ %.197, %._crit_edge ]
  %.1.be = phi i16 [ %.1, %498 ], [ %.1, %495 ], [ %.1, %492 ], [ %.1, %488 ], [ %.1, %475 ], [ %470, %469 ], [ %.1, %465 ], [ %.1, %._crit_edge ]
  br label %.preheader139

475:                                              ; preds = %._crit_edge
  store i32 3, ptr %4, align 4, !tbaa !5
  br label %.preheader139.backedge

.preheader137:                                    ; preds = %465, %.preheader137.backedge
  call void (...) @title() #6
  %476 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.74)
  %477 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef nonnull @.str.75, ptr noundef nonnull %3)
  %.not126 = icmp eq i32 %477, 1
  br i1 %.not126, label %479, label %478

478:                                              ; preds = %.preheader137
  call void @printError(ptr noundef nonnull @.str.2, i1 noundef zeroext true)
  br label %.preheader137.backedge

479:                                              ; preds = %.preheader137
  %480 = load i32, ptr %3, align 4
  %481 = add i32 %480, -67108865
  %or.cond4 = icmp ult i32 %481, -67108863
  br i1 %or.cond4, label %482, label %483

482:                                              ; preds = %479
  call void @printError(ptr noundef nonnull @.str.76, i1 noundef zeroext false)
  br label %.preheader137.backedge

.preheader137.backedge:                           ; preds = %482, %478
  br label %.preheader137

483:                                              ; preds = %479
  call void (...) @clearScreen() #6
  %484 = load i32, ptr %3, align 4, !tbaa !5
  br label %485

485:                                              ; preds = %485, %483
  %.1102 = phi i32 [ 1, %483 ], [ %487, %485 ]
  %486 = icmp slt i32 %.1102, %484
  %487 = shl i32 %.1102, 1
  br i1 %486, label %485, label %488, !llvm.loop !19

488:                                              ; preds = %485
  %489 = icmp eq i32 %484, %.1102
  %spec.select = select i1 %489, i32 %484, i32 %.197
  %490 = load ptr, ptr %1, align 8, !tbaa !9
  call void @free(ptr noundef %490) #6
  %491 = load i32, ptr %3, align 4, !tbaa !5
  call void @createArray(ptr noundef nonnull %1, i32 noundef %491) #6
  br label %.preheader139.backedge

492:                                              ; preds = %465
  %493 = load i8, ptr @txtFile, align 1, !tbaa !15, !range !17, !noundef !18
  %494 = xor i8 %493, 1
  store i8 %494, ptr @txtFile, align 1, !tbaa !15
  br label %.preheader139.backedge

495:                                              ; preds = %465
  %496 = load i8, ptr @displayArray, align 1, !tbaa !15, !range !17, !noundef !18
  %497 = xor i8 %496, 1
  store i8 %497, ptr @displayArray, align 1, !tbaa !15
  br label %.preheader139.backedge

498:                                              ; preds = %465
  %499 = load i8, ptr @executionTime, align 1, !tbaa !15, !range !17, !noundef !18
  %500 = xor i8 %499, 1
  store i8 %500, ptr @executionTime, align 1, !tbaa !15
  br label %.preheader139.backedge

.loopexit:                                        ; preds = %465, %399, %357, %318, %288, %232, %218, %114, %13, %8, %347, %338, %326, %438, %396, %315, %285, %229, %215, %111
  %.8111 = phi i64 [ %.7110, %438 ], [ %.0103, %399 ], [ %.6109, %396 ], [ %.0103, %357 ], [ %354, %347 ], [ %335, %326 ], [ %344, %338 ], [ %.5108, %315 ], [ %.0103, %288 ], [ %.4107, %285 ], [ %.0103, %232 ], [ %.3106, %229 ], [ %.0103, %218 ], [ %.2105, %215 ], [ %.0103, %114 ], [ %.1104, %111 ], [ %.0103, %13 ], [ %.0103, %8 ], [ %.0103, %318 ], [ %.0103, %465 ]
  %.4100 = phi i32 [ %.096, %438 ], [ %.096, %399 ], [ %.096, %396 ], [ %.096, %357 ], [ %.096, %347 ], [ %.096, %326 ], [ %.096, %338 ], [ %.096, %315 ], [ %.096, %288 ], [ %.096, %285 ], [ %.096, %232 ], [ %.096, %229 ], [ %.096, %218 ], [ %.096, %215 ], [ %.096, %114 ], [ %.096, %111 ], [ %.096, %13 ], [ %.096, %8 ], [ %.096, %318 ], [ %.197, %465 ]
  %.8 = phi i64 [ %.7, %438 ], [ %.092, %399 ], [ %.6, %396 ], [ %.092, %357 ], [ %351, %347 ], [ %333, %326 ], [ %341, %338 ], [ %.5, %315 ], [ %.092, %288 ], [ %.4, %285 ], [ %.092, %232 ], [ %.395, %229 ], [ %.092, %218 ], [ %.294, %215 ], [ %.092, %114 ], [ %.193, %111 ], [ %.092, %13 ], [ %.092, %8 ], [ %.092, %318 ], [ %.092, %465 ]
  %.3 = phi i16 [ %.0, %438 ], [ %.0, %399 ], [ %.0, %396 ], [ %.0, %357 ], [ %.0, %347 ], [ %.0, %326 ], [ %.0, %338 ], [ %.0, %315 ], [ %.0, %288 ], [ %.0, %285 ], [ %.0, %232 ], [ %.0, %229 ], [ %.0, %218 ], [ %.0, %215 ], [ %.0, %114 ], [ %.0, %111 ], [ %.0, %13 ], [ %.0, %8 ], [ %.0, %318 ], [ %.1, %465 ]
  %.pre = load i32, ptr %4, align 4, !tbaa !5
  br label %8

501:                                              ; preds = %8
  call void (...) @QRCode() #6
  %502 = load ptr, ptr %1, align 8, !tbaa !9
  call void @free(ptr noundef %502) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %1) #6
  ret i32 0
}

; Function Attrs: nounwind
declare void @srand(i32 noundef) local_unnamed_addr #4

; Function Attrs: nounwind
declare i64 @time(ptr noundef) local_unnamed_addr #4

declare void @createArray(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @generateArray(ptr noundef, i32 noundef, i16 noundef signext, i32 noundef) local_unnamed_addr #1

; Function Attrs: nounwind
declare i64 @clock() local_unnamed_addr #4

declare void @badSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @bogoBogoSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @bogoSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @bubbleBogoSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @cocktailBogoSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @exchangeBogoSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @lessBogoSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @pancakeSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @sillySort(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @slowSort(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @sleepSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @spaghettiSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @stoogeSort(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @bubbleSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @circleSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @cocktailShakerSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @combSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @dualPivotQuickSort(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @gnomeSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @oddEvenSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @bubbleSortOptmized(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @optimizedCocktailShakerSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @optimizedGnomeSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @quickSort(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @quickSort3Way(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @stableQuickSort(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @timSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @AVLTreeSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @binaryInsertionSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @cycleSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @insertionSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @patienceSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @shellSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @treeSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @bottomupMergeSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @mergeSortInPlace(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @mergeSort(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @bitonicSort(ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite)
declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #5

declare void @pairwiseSort(ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @bucketSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @countingSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @beadSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @pigeonholeSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @radixLSDSort(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @doubleSelectionSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @maxHeapSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @minHeapSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @selectionSort(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @QRCode(...) local_unnamed_addr #1

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #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 = { 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 #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { 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 #5 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"short", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = !{!16, !16, i64 0}
!16 = !{!"_Bool", !7, i64 0}
!17 = !{i8 0, i8 2}
!18 = !{}
!19 = distinct !{!19, !14}


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