; LLVM IR from parallella/pal :: examples/base (sort_task)

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

@__const.main.fin = external hidden unnamed_addr constant [30 x float], align 16
@__const.main.uin = external hidden unnamed_addr constant [31 x i32], align 16
@.str = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [22 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @main() #0 {
  %1 = alloca i32, align 4
  %2 = alloca i32, align 4
  %3 = alloca [30 x float], align 16
  %4 = alloca [30 x float], align 16
  %5 = alloca float, align 4
  %6 = alloca i32, align 4
  %7 = alloca [31 x i32], align 16
  %8 = alloca [31 x i32], align 16
  %9 = alloca float, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  store i32 0, ptr %1, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %2) #4
  store i32 30, ptr %2, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 120, ptr %3) #4
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %3, ptr align 16 @__const.main.fin, i64 120, i1 false)
  call void @llvm.lifetime.start.p0(i64 120, ptr %4) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #4
  store float 0.000000e+00, ptr %5, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #4
  store i32 31, ptr %6, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 124, ptr %7) #4
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %7, ptr align 16 @__const.main.uin, i64 124, i1 false)
  call void @llvm.lifetime.start.p0(i64 124, ptr %8) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #4
  store i32 1, ptr %10, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #4
  %12 = call i32 (ptr, ...) @printf(ptr noundef @.str)
  %13 = getelementptr inbounds [30 x float], ptr %3, i64 0, i64 0
  %14 = getelementptr inbounds [30 x float], ptr %4, i64 0, i64 0
  %15 = load i32, ptr %2, align 4, !tbaa !5
  call void @p_sort_f32(ptr noundef %13, ptr noundef %14, i32 noundef %15)
  %16 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  store i32 1, ptr %10, align 4, !tbaa !5
  %17 = getelementptr inbounds [30 x float], ptr %4, i64 0, i64 0
  %18 = load float, ptr %17, align 16, !tbaa !9
  store float %18, ptr %9, align 4, !tbaa !9
  store i32 0, ptr %11, align 4, !tbaa !5
  br label %19

19:                                               ; preds = %43, %0
  %20 = load i32, ptr %11, align 4, !tbaa !5
  %21 = load i32, ptr %2, align 4, !tbaa !5
  %22 = icmp slt i32 %20, %21
  br i1 %22, label %23, label %46

23:                                               ; preds = %19
  %24 = load i32, ptr %11, align 4, !tbaa !5
  %25 = load i32, ptr %11, align 4, !tbaa !5
  %26 = sext i32 %25 to i64
  %27 = getelementptr inbounds [30 x float], ptr %4, i64 0, i64 %26
  %28 = load float, ptr %27, align 4, !tbaa !9
  %29 = fpext float %28 to double
  %30 = call i32 (ptr, ...) @printf(ptr noundef @.str.2, i32 noundef %24, double noundef %29)
  %31 = load float, ptr %5, align 4, !tbaa !9
  %32 = load i32, ptr %11, align 4, !tbaa !5
  %33 = sext i32 %32 to i64
  %34 = getelementptr inbounds [30 x float], ptr %4, i64 0, i64 %33
  %35 = load float, ptr %34, align 4, !tbaa !9
  %36 = fcmp ogt float %31, %35
  br i1 %36, label %37, label %38

37:                                               ; preds = %23
  store i32 0, ptr %10, align 4, !tbaa !5
  br label %38

38:                                               ; preds = %37, %23
  %39 = load i32, ptr %11, align 4, !tbaa !5
  %40 = sext i32 %39 to i64
  %41 = getelementptr inbounds [30 x float], ptr %4, i64 0, i64 %40
  %42 = load float, ptr %41, align 4, !tbaa !9
  store float %42, ptr %5, align 4, !tbaa !9
  br label %43

43:                                               ; preds = %38
  %44 = load i32, ptr %11, align 4, !tbaa !5
  %45 = add nsw i32 %44, 1
  store i32 %45, ptr %11, align 4, !tbaa !5
  br label %19, !llvm.loop !11

46:                                               ; preds = %19
  %47 = load i32, ptr %10, align 4, !tbaa !5
  %48 = icmp ne i32 %47, 0
  %49 = zext i1 %48 to i64
  %50 = select i1 %48, ptr @.str.4, ptr @.str.5
  %51 = call i32 (ptr, ...) @printf(ptr noundef @.str.3, ptr noundef %50)
  %52 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  %53 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  %54 = getelementptr inbounds [31 x i32], ptr %7, i64 0, i64 0
  %55 = getelementptr inbounds [31 x i32], ptr %8, i64 0, i64 0
  %56 = load i32, ptr %6, align 4, !tbaa !5
  call void @p_sort_u32(ptr noundef %54, ptr noundef %55, i32 noundef %56)
  %57 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  store i32 1, ptr %10, align 4, !tbaa !5
  %58 = getelementptr inbounds [31 x i32], ptr %8, i64 0, i64 0
  %59 = load i32, ptr %58, align 16, !tbaa !5
  %60 = uitofp i32 %59 to float
  store float %60, ptr %9, align 4, !tbaa !9
  store i32 0, ptr %11, align 4, !tbaa !5
  br label %61

61:                                               ; preds = %86, %46
  %62 = load i32, ptr %11, align 4, !tbaa !5
  %63 = load i32, ptr %6, align 4, !tbaa !5
  %64 = icmp slt i32 %62, %63
  br i1 %64, label %65, label %89

65:                                               ; preds = %61
  %66 = load i32, ptr %11, align 4, !tbaa !5
  %67 = load i32, ptr %11, align 4, !tbaa !5
  %68 = sext i32 %67 to i64
  %69 = getelementptr inbounds [31 x i32], ptr %8, i64 0, i64 %68
  %70 = load i32, ptr %69, align 4, !tbaa !5
  %71 = call i32 (ptr, ...) @printf(ptr noundef @.str.8, i32 noundef %66, i32 noundef %70)
  %72 = load float, ptr %9, align 4, !tbaa !9
  %73 = load i32, ptr %11, align 4, !tbaa !5
  %74 = sext i32 %73 to i64
  %75 = getelementptr inbounds [31 x i32], ptr %8, i64 0, i64 %74
  %76 = load i32, ptr %75, align 4, !tbaa !5
  %77 = uitofp i32 %76 to float
  %78 = fcmp ogt float %72, %77
  br i1 %78, label %79, label %80

79:                                               ; preds = %65
  store i32 0, ptr %10, align 4, !tbaa !5
  br label %80

80:                                               ; preds = %79, %65
  %81 = load i32, ptr %11, align 4, !tbaa !5
  %82 = sext i32 %81 to i64
  %83 = getelementptr inbounds [31 x i32], ptr %8, i64 0, i64 %82
  %84 = load i32, ptr %83, align 4, !tbaa !5
  %85 = uitofp i32 %84 to float
  store float %85, ptr %9, align 4, !tbaa !9
  br label %86

86:                                               ; preds = %80
  %87 = load i32, ptr %11, align 4, !tbaa !5
  %88 = add nsw i32 %87, 1
  store i32 %88, ptr %11, align 4, !tbaa !5
  br label %61, !llvm.loop !13

89:                                               ; preds = %61
  %90 = load i32, ptr %10, align 4, !tbaa !5
  %91 = icmp ne i32 %90, 0
  %92 = zext i1 %91 to i64
  %93 = select i1 %91, ptr @.str.4, ptr @.str.5
  %94 = call i32 (ptr, ...) @printf(ptr noundef @.str.3, ptr noundef %93)
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #4
  call void @llvm.lifetime.end.p0(i64 124, ptr %8) #4
  call void @llvm.lifetime.end.p0(i64 124, ptr %7) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #4
  call void @llvm.lifetime.end.p0(i64 120, ptr %4) #4
  call void @llvm.lifetime.end.p0(i64 120, ptr %3) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %2) #4
  ret i32 0
}

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2

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

declare void @p_sort_f32(ptr noundef, ptr noundef, i32 noundef) #3

declare void @p_sort_u32(ptr noundef, ptr noundef, i32 noundef) #3

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #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 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 = !{!"float", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}


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

@__const.main.fin = external hidden unnamed_addr constant [30 x float], align 16
@__const.main.uin = external hidden unnamed_addr constant [31 x i32], align 16
@.str = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [22 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @main() local_unnamed_addr #0 {
  %1 = alloca [30 x float], align 16
  %2 = alloca [30 x float], align 16
  %3 = alloca [31 x i32], align 16
  %4 = alloca [31 x i32], align 16
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %1) #5
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(120) %1, ptr noundef nonnull align 16 dereferenceable(120) @__const.main.fin, i64 120, i1 false)
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %2) #5
  call void @llvm.lifetime.start.p0(i64 124, ptr nonnull %3) #5
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(124) %3, ptr noundef nonnull align 16 dereferenceable(124) @__const.main.uin, i64 124, i1 false)
  call void @llvm.lifetime.start.p0(i64 124, ptr nonnull %4) #5
  %5 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str)
  call void @p_sort_f32(ptr noundef nonnull %1, ptr noundef nonnull %2, i32 noundef 30) #5
  %6 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %7 = load float, ptr %2, align 16, !tbaa !5
  %8 = fpext float %7 to double
  %9 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef 0, double noundef %8)
  %10 = load float, ptr %2, align 16, !tbaa !5
  %11 = fcmp uge float %10, 0.000000e+00
  %12 = getelementptr inbounds i8, ptr %2, i64 4
  %13 = load float, ptr %12, align 4, !tbaa !5
  %14 = fpext float %13 to double
  %15 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef 1, double noundef %14)
  %16 = getelementptr inbounds i8, ptr %2, i64 8
  %17 = load float, ptr %16, align 8, !tbaa !5
  %18 = fpext float %17 to double
  %19 = getelementptr inbounds i8, ptr %2, i64 12
  %20 = getelementptr inbounds i8, ptr %2, i64 16
  %21 = getelementptr inbounds i8, ptr %2, i64 20
  %22 = getelementptr inbounds i8, ptr %2, i64 24
  %23 = getelementptr inbounds i8, ptr %2, i64 28
  %24 = getelementptr inbounds i8, ptr %2, i64 32
  %25 = getelementptr inbounds i8, ptr %2, i64 36
  %26 = getelementptr inbounds i8, ptr %2, i64 40
  %27 = getelementptr inbounds i8, ptr %2, i64 44
  %28 = getelementptr inbounds i8, ptr %2, i64 48
  %29 = getelementptr inbounds i8, ptr %2, i64 52
  %30 = getelementptr inbounds i8, ptr %2, i64 56
  %31 = getelementptr inbounds i8, ptr %2, i64 60
  %32 = getelementptr inbounds i8, ptr %2, i64 64
  %33 = getelementptr inbounds i8, ptr %2, i64 68
  %34 = getelementptr inbounds i8, ptr %2, i64 72
  %35 = getelementptr inbounds i8, ptr %2, i64 76
  %36 = getelementptr inbounds i8, ptr %2, i64 80
  %37 = getelementptr inbounds i8, ptr %2, i64 84
  %38 = getelementptr inbounds i8, ptr %2, i64 88
  %39 = getelementptr inbounds i8, ptr %2, i64 92
  %40 = getelementptr inbounds i8, ptr %2, i64 96
  %41 = getelementptr inbounds i8, ptr %2, i64 100
  %42 = getelementptr inbounds i8, ptr %2, i64 104
  %43 = getelementptr inbounds i8, ptr %2, i64 108
  %44 = getelementptr inbounds i8, ptr %2, i64 112
  %45 = getelementptr inbounds i8, ptr %2, i64 116
  %46 = load float, ptr %12, align 4, !tbaa !5
  %47 = fcmp ule float %10, %46
  %48 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef 2, double noundef %18)
  %49 = load float, ptr %16, align 8, !tbaa !5
  %50 = load float, ptr %19, align 4, !tbaa !5
  %51 = fpext float %50 to double
  %52 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef 3, double noundef %51)
  %53 = load float, ptr %19, align 4, !tbaa !5
  %54 = load float, ptr %20, align 16, !tbaa !5
  %55 = fpext float %54 to double
  %56 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef 4, double noundef %55)
  %57 = load float, ptr %20, align 16, !tbaa !5
  %58 = load float, ptr %21, align 4, !tbaa !5
  %59 = fpext float %58 to double
  %60 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef 5, double noundef %59)
  %61 = load float, ptr %22, align 8, !tbaa !5
  %62 = fpext float %61 to double
  %63 = load float, ptr %21, align 4, !tbaa !5
  %64 = insertelement <4 x float> poison, float %46, i64 0
  %65 = insertelement <4 x float> %64, float %49, i64 1
  %66 = insertelement <4 x float> %65, float %53, i64 2
  %67 = insertelement <4 x float> %66, float %57, i64 3
  %68 = insertelement <4 x float> poison, float %49, i64 0
  %69 = insertelement <4 x float> %68, float %53, i64 1
  %70 = insertelement <4 x float> %69, float %57, i64 2
  %71 = insertelement <4 x float> %70, float %63, i64 3
  %72 = fcmp ule <4 x float> %67, %71
  %73 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef 6, double noundef %62)
  %74 = load float, ptr %22, align 8, !tbaa !5
  %75 = load float, ptr %23, align 4, !tbaa !5
  %76 = fpext float %75 to double
  %77 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef 7, double noundef %76)
  %78 = load float, ptr %23, align 4, !tbaa !5
  %79 = load float, ptr %24, align 16, !tbaa !5
  %80 = fpext float %79 to double
  %81 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef 8, double noundef %80)
  %82 = load float, ptr %24, align 16, !tbaa !5
  %83 = load float, ptr %25, align 4, !tbaa !5
  %84 = fpext float %83 to double
  %85 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef 9, double noundef %84)
  %86 = load float, ptr %25, align 4, !tbaa !5
  %87 = load float, ptr %26, align 8, !tbaa !5
  %88 = fpext float %87 to double
  %89 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef 10, double noundef %88)
  %90 = load float, ptr %26, align 8, !tbaa !5
  %91 = load float, ptr %27, align 4, !tbaa !5
  %92 = fpext float %91 to double
  %93 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef 11, double noundef %92)
  %94 = load float, ptr %27, align 4, !tbaa !5
  %95 = load float, ptr %28, align 16, !tbaa !5
  %96 = fpext float %95 to double
  %97 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef 12, double noundef %96)
  %98 = load float, ptr %28, align 16, !tbaa !5
  %99 = load float, ptr %29, align 4, !tbaa !5
  %100 = fpext float %99 to double
  %101 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef 13, double noundef %100)
  %102 = load float, ptr %30, align 8, !tbaa !5
  %103 = fpext float %102 to double
  %104 = load float, ptr %29, align 4, !tbaa !5
  %105 = insertelement <8 x float> poison, float %63, i64 0
  %106 = insertelement <8 x float> %105, float %74, i64 1
  %107 = insertelement <8 x float> %106, float %78, i64 2
  %108 = insertelement <8 x float> %107, float %82, i64 3
  %109 = insertelement <8 x float> %108, float %86, i64 4
  %110 = insertelement <8 x float> %109, float %90, i64 5
  %111 = insertelement <8 x float> %110, float %94, i64 6
  %112 = insertelement <8 x float> %111, float %98, i64 7
  %113 = insertelement <8 x float> poison, float %74, i64 0
  %114 = insertelement <8 x float> %113, float %78, i64 1
  %115 = insertelement <8 x float> %114, float %82, i64 2
  %116 = insertelement <8 x float> %115, float %86, i64 3
  %117 = insertelement <8 x float> %116, float %90, i64 4
  %118 = insertelement <8 x float> %117, float %94, i64 5
  %119 = insertelement <8 x float> %118, float %98, i64 6
  %120 = insertelement <8 x float> %119, float %104, i64 7
  %121 = fcmp ule <8 x float> %112, %120
  %122 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef 14, double noundef %103)
  %123 = load float, ptr %30, align 8, !tbaa !5
  %124 = load float, ptr %31, align 4, !tbaa !5
  %125 = fpext float %124 to double
  %126 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef 15, double noundef %125)
  %127 = load float, ptr %31, align 4, !tbaa !5
  %128 = load float, ptr %32, align 16, !tbaa !5
  %129 = fpext float %128 to double
  %130 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef 16, double noundef %129)
  %131 = load float, ptr %32, align 16, !tbaa !5
  %132 = load float, ptr %33, align 4, !tbaa !5
  %133 = fpext float %132 to double
  %134 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef 17, double noundef %133)
  %135 = load float, ptr %33, align 4, !tbaa !5
  %136 = load float, ptr %34, align 8, !tbaa !5
  %137 = fpext float %136 to double
  %138 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef 18, double noundef %137)
  %139 = load float, ptr %34, align 8, !tbaa !5
  %140 = load float, ptr %35, align 4, !tbaa !5
  %141 = fpext float %140 to double
  %142 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef 19, double noundef %141)
  %143 = load float, ptr %35, align 4, !tbaa !5
  %144 = load float, ptr %36, align 16, !tbaa !5
  %145 = fpext float %144 to double
  %146 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef 20, double noundef %145)
  %147 = load float, ptr %36, align 16, !tbaa !5
  %148 = load float, ptr %37, align 4, !tbaa !5
  %149 = fpext float %148 to double
  %150 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef 21, double noundef %149)
  %151 = load float, ptr %37, align 4, !tbaa !5
  %152 = load float, ptr %38, align 8, !tbaa !5
  %153 = fpext float %152 to double
  %154 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef 22, double noundef %153)
  %155 = load float, ptr %38, align 8, !tbaa !5
  %156 = load float, ptr %39, align 4, !tbaa !5
  %157 = fpext float %156 to double
  %158 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef 23, double noundef %157)
  %159 = load float, ptr %39, align 4, !tbaa !5
  %160 = load float, ptr %40, align 16, !tbaa !5
  %161 = fpext float %160 to double
  %162 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef 24, double noundef %161)
  %163 = load float, ptr %40, align 16, !tbaa !5
  %164 = load float, ptr %41, align 4, !tbaa !5
  %165 = fpext float %164 to double
  %166 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef 25, double noundef %165)
  %167 = load float, ptr %41, align 4, !tbaa !5
  %168 = load float, ptr %42, align 8, !tbaa !5
  %169 = fpext float %168 to double
  %170 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef 26, double noundef %169)
  %171 = load float, ptr %42, align 8, !tbaa !5
  %172 = load float, ptr %43, align 4, !tbaa !5
  %173 = fpext float %172 to double
  %174 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef 27, double noundef %173)
  %175 = load float, ptr %43, align 4, !tbaa !5
  %176 = load float, ptr %44, align 16, !tbaa !5
  %177 = fpext float %176 to double
  %178 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef 28, double noundef %177)
  %179 = load float, ptr %44, align 16, !tbaa !5
  %180 = load float, ptr %45, align 4, !tbaa !5
  %181 = fpext float %180 to double
  %182 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef 29, double noundef %181)
  %183 = load float, ptr %45, align 4, !tbaa !5
  %184 = insertelement <16 x float> poison, float %104, i64 0
  %185 = insertelement <16 x float> %184, float %123, i64 1
  %186 = insertelement <16 x float> %185, float %127, i64 2
  %187 = insertelement <16 x float> %186, float %131, i64 3
  %188 = insertelement <16 x float> %187, float %135, i64 4
  %189 = insertelement <16 x float> %188, float %139, i64 5
  %190 = insertelement <16 x float> %189, float %143, i64 6
  %191 = insertelement <16 x float> %190, float %147, i64 7
  %192 = insertelement <16 x float> %191, float %151, i64 8
  %193 = insertelement <16 x float> %192, float %155, i64 9
  %194 = insertelement <16 x float> %193, float %159, i64 10
  %195 = insertelement <16 x float> %194, float %163, i64 11
  %196 = insertelement <16 x float> %195, float %167, i64 12
  %197 = insertelement <16 x float> %196, float %171, i64 13
  %198 = insertelement <16 x float> %197, float %175, i64 14
  %199 = insertelement <16 x float> %198, float %179, i64 15
  %200 = insertelement <16 x float> poison, float %123, i64 0
  %201 = insertelement <16 x float> %200, float %127, i64 1
  %202 = insertelement <16 x float> %201, float %131, i64 2
  %203 = insertelement <16 x float> %202, float %135, i64 3
  %204 = insertelement <16 x float> %203, float %139, i64 4
  %205 = insertelement <16 x float> %204, float %143, i64 5
  %206 = insertelement <16 x float> %205, float %147, i64 6
  %207 = insertelement <16 x float> %206, float %151, i64 7
  %208 = insertelement <16 x float> %207, float %155, i64 8
  %209 = insertelement <16 x float> %208, float %159, i64 9
  %210 = insertelement <16 x float> %209, float %163, i64 10
  %211 = insertelement <16 x float> %210, float %167, i64 11
  %212 = insertelement <16 x float> %211, float %171, i64 12
  %213 = insertelement <16 x float> %212, float %175, i64 13
  %214 = insertelement <16 x float> %213, float %179, i64 14
  %215 = insertelement <16 x float> %214, float %183, i64 15
  %216 = fcmp ule <16 x float> %199, %215
  %217 = freeze <16 x i1> %216
  %218 = bitcast <16 x i1> %217 to i16
  %219 = icmp eq i16 %218, -1
  %220 = freeze <8 x i1> %121
  %221 = bitcast <8 x i1> %220 to i8
  %222 = icmp eq i8 %221, -1
  %op.rdx = and i1 %219, %222
  %223 = freeze <4 x i1> %72
  %224 = bitcast <4 x i1> %223 to i4
  %225 = icmp eq i4 %224, -1
  %op.rdx61 = and i1 %op.rdx, %225
  %.fr = freeze i1 %47
  %op.rdx62 = and i1 %op.rdx61, %.fr
  %op.rdx63 = select i1 %op.rdx62, i1 %11, i1 false
  %226 = select i1 %op.rdx63, ptr @.str.4, ptr @.str.5
  %227 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3, ptr noundef nonnull %226)
  %228 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.6)
  %229 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.7)
  call void @p_sort_u32(ptr noundef nonnull %3, ptr noundef nonnull %4, i32 noundef 31) #5
  %230 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %.021.in.pre = load i32, ptr %4, align 16, !tbaa !9
  %.021 = uitofp i32 %.021.in.pre to float
  %231 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef 0, i32 noundef %.021.in.pre)
  %232 = load i32, ptr %4, align 16, !tbaa !9
  %233 = uitofp i32 %232 to float
  %234 = fcmp ule float %.021, %233
  %.021.1 = uitofp i32 %232 to float
  %235 = getelementptr inbounds i8, ptr %4, i64 4
  %236 = load i32, ptr %235, align 4, !tbaa !9
  %237 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef 1, i32 noundef %236)
  %238 = load i32, ptr %235, align 4, !tbaa !9
  %239 = uitofp i32 %238 to float
  %240 = fcmp ule float %.021.1, %239
  %narrow = and i1 %240, %234
  %.021.2 = uitofp i32 %238 to float
  %241 = getelementptr inbounds i8, ptr %4, i64 8
  %242 = load i32, ptr %241, align 8, !tbaa !9
  %243 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef 2, i32 noundef %242)
  %244 = load i32, ptr %241, align 8, !tbaa !9
  %245 = uitofp i32 %244 to float
  %246 = fcmp ule float %.021.2, %245
  %.021.3 = uitofp i32 %244 to float
  %247 = getelementptr inbounds i8, ptr %4, i64 12
  %248 = load i32, ptr %247, align 4, !tbaa !9
  %249 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef 3, i32 noundef %248)
  %250 = load i32, ptr %247, align 4, !tbaa !9
  %251 = uitofp i32 %250 to float
  %252 = fcmp ule float %.021.3, %251
  %.021.4 = uitofp i32 %250 to float
  %253 = getelementptr inbounds i8, ptr %4, i64 16
  %254 = load i32, ptr %253, align 16, !tbaa !9
  %255 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef 4, i32 noundef %254)
  %256 = load i32, ptr %253, align 16, !tbaa !9
  %257 = uitofp i32 %256 to float
  %258 = fcmp ule float %.021.4, %257
  %.021.5 = uitofp i32 %256 to float
  %259 = getelementptr inbounds i8, ptr %4, i64 20
  %260 = load i32, ptr %259, align 4, !tbaa !9
  %261 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef 5, i32 noundef %260)
  %262 = load i32, ptr %259, align 4, !tbaa !9
  %263 = uitofp i32 %262 to float
  %264 = fcmp ule float %.021.5, %263
  %.021.6 = uitofp i32 %262 to float
  %265 = getelementptr inbounds i8, ptr %4, i64 24
  %266 = load i32, ptr %265, align 8, !tbaa !9
  %267 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef 6, i32 noundef %266)
  %268 = load i32, ptr %265, align 8, !tbaa !9
  %269 = uitofp i32 %268 to float
  %270 = fcmp ule float %.021.6, %269
  %.021.7 = uitofp i32 %268 to float
  %271 = getelementptr inbounds i8, ptr %4, i64 28
  %272 = load i32, ptr %271, align 4, !tbaa !9
  %273 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef 7, i32 noundef %272)
  %274 = load i32, ptr %271, align 4, !tbaa !9
  %275 = uitofp i32 %274 to float
  %276 = fcmp ule float %.021.7, %275
  %.021.8 = uitofp i32 %274 to float
  %277 = getelementptr inbounds i8, ptr %4, i64 32
  %278 = load i32, ptr %277, align 16, !tbaa !9
  %279 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef 8, i32 noundef %278)
  %280 = load i32, ptr %277, align 16, !tbaa !9
  %281 = uitofp i32 %280 to float
  %282 = fcmp ule float %.021.8, %281
  %.021.9 = uitofp i32 %280 to float
  %283 = getelementptr inbounds i8, ptr %4, i64 36
  %284 = load i32, ptr %283, align 4, !tbaa !9
  %285 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef 9, i32 noundef %284)
  %286 = load i32, ptr %283, align 4, !tbaa !9
  %287 = uitofp i32 %286 to float
  %288 = fcmp ule float %.021.9, %287
  %.021.10 = uitofp i32 %286 to float
  %289 = getelementptr inbounds i8, ptr %4, i64 40
  %290 = load i32, ptr %289, align 8, !tbaa !9
  %291 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef 10, i32 noundef %290)
  %292 = load i32, ptr %289, align 8, !tbaa !9
  %293 = uitofp i32 %292 to float
  %294 = fcmp ule float %.021.10, %293
  %.021.11 = uitofp i32 %292 to float
  %295 = getelementptr inbounds i8, ptr %4, i64 44
  %296 = load i32, ptr %295, align 4, !tbaa !9
  %297 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef 11, i32 noundef %296)
  %298 = load i32, ptr %295, align 4, !tbaa !9
  %299 = uitofp i32 %298 to float
  %300 = fcmp ule float %.021.11, %299
  %.021.12 = uitofp i32 %298 to float
  %301 = getelementptr inbounds i8, ptr %4, i64 48
  %302 = load i32, ptr %301, align 16, !tbaa !9
  %303 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef 12, i32 noundef %302)
  %304 = load i32, ptr %301, align 16, !tbaa !9
  %305 = uitofp i32 %304 to float
  %306 = fcmp ule float %.021.12, %305
  %.021.13 = uitofp i32 %304 to float
  %307 = getelementptr inbounds i8, ptr %4, i64 52
  %308 = load i32, ptr %307, align 4, !tbaa !9
  %309 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef 13, i32 noundef %308)
  %310 = load i32, ptr %307, align 4, !tbaa !9
  %311 = uitofp i32 %310 to float
  %312 = fcmp ule float %.021.13, %311
  %.021.14 = uitofp i32 %310 to float
  %313 = getelementptr inbounds i8, ptr %4, i64 56
  %314 = load i32, ptr %313, align 8, !tbaa !9
  %315 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef 14, i32 noundef %314)
  %316 = load i32, ptr %313, align 8, !tbaa !9
  %317 = uitofp i32 %316 to float
  %318 = fcmp ule float %.021.14, %317
  %.021.15 = uitofp i32 %316 to float
  %319 = getelementptr inbounds i8, ptr %4, i64 60
  %320 = load i32, ptr %319, align 4, !tbaa !9
  %321 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef 15, i32 noundef %320)
  %322 = load i32, ptr %319, align 4, !tbaa !9
  %323 = uitofp i32 %322 to float
  %324 = fcmp ule float %.021.15, %323
  %.021.16 = uitofp i32 %322 to float
  %325 = getelementptr inbounds i8, ptr %4, i64 64
  %326 = load i32, ptr %325, align 16, !tbaa !9
  %327 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef 16, i32 noundef %326)
  %328 = load i32, ptr %325, align 16, !tbaa !9
  %329 = uitofp i32 %328 to float
  %330 = fcmp ule float %.021.16, %329
  %.021.17 = uitofp i32 %328 to float
  %331 = getelementptr inbounds i8, ptr %4, i64 68
  %332 = load i32, ptr %331, align 4, !tbaa !9
  %333 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef 17, i32 noundef %332)
  %334 = load i32, ptr %331, align 4, !tbaa !9
  %335 = uitofp i32 %334 to float
  %336 = fcmp ule float %.021.17, %335
  %.021.18 = uitofp i32 %334 to float
  %337 = getelementptr inbounds i8, ptr %4, i64 72
  %338 = load i32, ptr %337, align 8, !tbaa !9
  %339 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef 18, i32 noundef %338)
  %340 = load i32, ptr %337, align 8, !tbaa !9
  %341 = uitofp i32 %340 to float
  %342 = fcmp ule float %.021.18, %341
  %.021.19 = uitofp i32 %340 to float
  %343 = getelementptr inbounds i8, ptr %4, i64 76
  %344 = load i32, ptr %343, align 4, !tbaa !9
  %345 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef 19, i32 noundef %344)
  %346 = load i32, ptr %343, align 4, !tbaa !9
  %347 = uitofp i32 %346 to float
  %348 = fcmp ule float %.021.19, %347
  %.021.20 = uitofp i32 %346 to float
  %349 = getelementptr inbounds i8, ptr %4, i64 80
  %350 = load i32, ptr %349, align 16, !tbaa !9
  %351 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef 20, i32 noundef %350)
  %352 = load i32, ptr %349, align 16, !tbaa !9
  %353 = uitofp i32 %352 to float
  %354 = fcmp ule float %.021.20, %353
  %.021.21 = uitofp i32 %352 to float
  %355 = getelementptr inbounds i8, ptr %4, i64 84
  %356 = load i32, ptr %355, align 4, !tbaa !9
  %357 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef 21, i32 noundef %356)
  %358 = load i32, ptr %355, align 4, !tbaa !9
  %359 = uitofp i32 %358 to float
  %360 = fcmp ule float %.021.21, %359
  %.021.22 = uitofp i32 %358 to float
  %361 = getelementptr inbounds i8, ptr %4, i64 88
  %362 = load i32, ptr %361, align 8, !tbaa !9
  %363 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef 22, i32 noundef %362)
  %364 = load i32, ptr %361, align 8, !tbaa !9
  %365 = uitofp i32 %364 to float
  %366 = fcmp ule float %.021.22, %365
  %.021.23 = uitofp i32 %364 to float
  %367 = getelementptr inbounds i8, ptr %4, i64 92
  %368 = load i32, ptr %367, align 4, !tbaa !9
  %369 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef 23, i32 noundef %368)
  %370 = load i32, ptr %367, align 4, !tbaa !9
  %371 = uitofp i32 %370 to float
  %372 = fcmp ule float %.021.23, %371
  %.021.24 = uitofp i32 %370 to float
  %373 = getelementptr inbounds i8, ptr %4, i64 96
  %374 = load i32, ptr %373, align 16, !tbaa !9
  %375 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef 24, i32 noundef %374)
  %376 = load i32, ptr %373, align 16, !tbaa !9
  %377 = uitofp i32 %376 to float
  %378 = fcmp ule float %.021.24, %377
  %.021.25 = uitofp i32 %376 to float
  %379 = getelementptr inbounds i8, ptr %4, i64 100
  %380 = load i32, ptr %379, align 4, !tbaa !9
  %381 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef 25, i32 noundef %380)
  %382 = load i32, ptr %379, align 4, !tbaa !9
  %383 = uitofp i32 %382 to float
  %384 = fcmp ule float %.021.25, %383
  %.021.26 = uitofp i32 %382 to float
  %385 = getelementptr inbounds i8, ptr %4, i64 104
  %386 = load i32, ptr %385, align 8, !tbaa !9
  %387 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef 26, i32 noundef %386)
  %388 = load i32, ptr %385, align 8, !tbaa !9
  %389 = uitofp i32 %388 to float
  %390 = fcmp ule float %.021.26, %389
  %.021.27 = uitofp i32 %388 to float
  %391 = getelementptr inbounds i8, ptr %4, i64 108
  %392 = load i32, ptr %391, align 4, !tbaa !9
  %393 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef 27, i32 noundef %392)
  %394 = load i32, ptr %391, align 4, !tbaa !9
  %395 = uitofp i32 %394 to float
  %396 = fcmp ule float %.021.27, %395
  %.021.28 = uitofp i32 %394 to float
  %397 = getelementptr inbounds i8, ptr %4, i64 112
  %398 = load i32, ptr %397, align 16, !tbaa !9
  %399 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef 28, i32 noundef %398)
  %400 = load i32, ptr %397, align 16, !tbaa !9
  %401 = uitofp i32 %400 to float
  %402 = fcmp ule float %.021.28, %401
  %.021.29 = uitofp i32 %400 to float
  %403 = getelementptr inbounds i8, ptr %4, i64 116
  %404 = load i32, ptr %403, align 4, !tbaa !9
  %405 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef 29, i32 noundef %404)
  %406 = load i32, ptr %403, align 4, !tbaa !9
  %407 = uitofp i32 %406 to float
  %408 = fcmp ule float %.021.29, %407
  %.021.30 = uitofp i32 %406 to float
  %409 = getelementptr inbounds i8, ptr %4, i64 120
  %410 = load i32, ptr %409, align 8, !tbaa !9
  %411 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef 30, i32 noundef %410)
  %412 = load i32, ptr %409, align 8, !tbaa !9
  %413 = uitofp i32 %412 to float
  %414 = fcmp ule float %.021.30, %413
  %415 = select i1 %414, i1 %408, i1 false
  %416 = select i1 %415, i1 %402, i1 false
  %417 = select i1 %416, i1 %396, i1 false
  %418 = select i1 %417, i1 %390, i1 false
  %419 = select i1 %418, i1 %384, i1 false
  %420 = select i1 %419, i1 %378, i1 false
  %421 = select i1 %420, i1 %372, i1 false
  %422 = select i1 %421, i1 %366, i1 false
  %423 = select i1 %422, i1 %360, i1 false
  %424 = select i1 %423, i1 %354, i1 false
  %425 = select i1 %424, i1 %348, i1 false
  %426 = select i1 %425, i1 %342, i1 false
  %427 = select i1 %426, i1 %336, i1 false
  %428 = select i1 %427, i1 %330, i1 false
  %429 = select i1 %428, i1 %324, i1 false
  %430 = select i1 %429, i1 %318, i1 false
  %431 = select i1 %430, i1 %312, i1 false
  %432 = select i1 %431, i1 %306, i1 false
  %433 = select i1 %432, i1 %300, i1 false
  %434 = select i1 %433, i1 %294, i1 false
  %435 = select i1 %434, i1 %288, i1 false
  %436 = select i1 %435, i1 %282, i1 false
  %437 = select i1 %436, i1 %276, i1 false
  %438 = select i1 %437, i1 %270, i1 false
  %439 = select i1 %438, i1 %264, i1 false
  %440 = select i1 %439, i1 %258, i1 false
  %441 = select i1 %440, i1 %252, i1 false
  %442 = select i1 %441, i1 %246, i1 false
  %narrow92 = select i1 %442, i1 %narrow, i1 false
  %443 = select i1 %narrow92, ptr @.str.4, ptr @.str.5
  %444 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3, ptr noundef nonnull %443)
  call void @llvm.lifetime.end.p0(i64 124, ptr nonnull %4) #5
  call void @llvm.lifetime.end.p0(i64 124, ptr nonnull %3) #5
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %2) #5
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %1) #5
  ret i32 0
}

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

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

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

declare void @p_sort_f32(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #4

declare void @p_sort_u32(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #4

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #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 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"float", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}


; Effective O3 passes: BDCEPass,EarlyCSEPass,GVNPass,GlobalDCEPass,GlobalOptPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,LCSSAPass,LoopRotatePass,LoopUnrollPass,PostOrderFunctionAttrsPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass