; LLVM IR from rociodellasala/TP3_SO :: Kernel (heap)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.kernelHeapHeader = type { i32, i32, [10 x i32], [50 x %struct.ProcessSlot], i32, [10 x i32], [100 x %struct.ThreadSlot], i32, [100 x %struct.s_mutex], i32, [10 x i32], [500 x %struct.s_pipe], i32, [10 x i32], [1000 x %struct.s_heapPage] }
%struct.ProcessSlot = type { ptr, %struct.Process }
%struct.Process = type { i32, i32, [30 x i32], i32, i32, [50 x i8], [20 x ptr], i32, ptr, ptr, ptr, [10 x ptr], i32, ptr, ptr }
%struct.ThreadSlot = type { ptr, %struct.Thread }
%struct.Thread = type { i32, ptr, ptr, ptr, i32, i32 }
%struct.s_mutex = type { i8, i8, [20 x i8], [10 x i32], [10 x i32] }
%struct.s_pipe = type { i32, i32, i32, i8, i8, i8, i8, i8, [40 x i8], i32, i32 }
%struct.s_heapPage = type { ptr, i32, i32, ptr }

@kernelHeader = external dso_local global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [24 x i8], align 1

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

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

; Function Attrs: nounwind uwtable
define dso_local void @printHeaderInfo() #1 {
  %1 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %1) #3
  call void (...) @nextLine()
  call void (...) @nextLine()
  call void (...) @nextLine()
  call void @print_string(ptr noundef @.str.1)
  call void (...) @nextLine()
  call void (...) @nextLine()
  store i32 0, ptr %1, align 4, !tbaa !5
  br label %2

2:                                                ; preds = %26, %0
  %3 = load i32, ptr %1, align 4, !tbaa !5
  %4 = load ptr, ptr @kernelHeader, align 8, !tbaa !9
  %5 = getelementptr inbounds %struct.kernelHeapHeader, ptr %4, i32 0, i32 1
  %6 = load i32, ptr %5, align 4, !tbaa !11
  %7 = icmp slt i32 %3, %6
  br i1 %7, label %8, label %29

8:                                                ; preds = %2
  call void @print_string(ptr noundef @.str.2)
  %9 = load ptr, ptr @kernelHeader, align 8, !tbaa !9
  %10 = getelementptr inbounds %struct.kernelHeapHeader, ptr %9, i32 0, i32 3
  %11 = load i32, ptr %1, align 4, !tbaa !5
  %12 = sext i32 %11 to i64
  %13 = getelementptr inbounds [50 x %struct.ProcessSlot], ptr %10, i64 0, i64 %12
  %14 = getelementptr inbounds %struct.ProcessSlot, ptr %13, i32 0, i32 1
  %15 = getelementptr inbounds %struct.Process, ptr %14, i32 0, i32 5
  %16 = getelementptr inbounds [50 x i8], ptr %15, i64 0, i64 0
  call void @print_string(ptr noundef %16)
  call void @print_string(ptr noundef @.str.3)
  %17 = load ptr, ptr @kernelHeader, align 8, !tbaa !9
  %18 = getelementptr inbounds %struct.kernelHeapHeader, ptr %17, i32 0, i32 3
  %19 = load i32, ptr %1, align 4, !tbaa !5
  %20 = sext i32 %19 to i64
  %21 = getelementptr inbounds [50 x %struct.ProcessSlot], ptr %18, i64 0, i64 %20
  %22 = getelementptr inbounds %struct.ProcessSlot, ptr %21, i32 0, i32 1
  %23 = getelementptr inbounds %struct.Process, ptr %22, i32 0, i32 0
  %24 = load i32, ptr %23, align 8, !tbaa !13
  %25 = sext i32 %24 to i64
  call void @print_int(i64 noundef %25)
  call void (...) @nextLine()
  br label %26

26:                                               ; preds = %8
  %27 = load i32, ptr %1, align 4, !tbaa !5
  %28 = add nsw i32 %27, 1
  store i32 %28, ptr %1, align 4, !tbaa !5
  br label %2, !llvm.loop !16

29:                                               ; preds = %2
  call void @print_string(ptr noundef @.str.4)
  call void (...) @nextLine()
  store i32 0, ptr %1, align 4, !tbaa !5
  br label %30

30:                                               ; preds = %52, %29
  %31 = load i32, ptr %1, align 4, !tbaa !5
  %32 = icmp slt i32 %31, 10
  br i1 %32, label %33, label %55

33:                                               ; preds = %30
  %34 = load ptr, ptr @kernelHeader, align 8, !tbaa !9
  %35 = getelementptr inbounds %struct.kernelHeapHeader, ptr %34, i32 0, i32 2
  %36 = load i32, ptr %1, align 4, !tbaa !5
  %37 = sext i32 %36 to i64
  %38 = getelementptr inbounds [10 x i32], ptr %35, i64 0, i64 %37
  %39 = load i32, ptr %38, align 4, !tbaa !5
  %40 = icmp ne i32 %39, -1
  br i1 %40, label %41, label %51

41:                                               ; preds = %33
  call void @print_string(ptr noundef @.str.5)
  %42 = load ptr, ptr @kernelHeader, align 8, !tbaa !9
  %43 = getelementptr inbounds %struct.kernelHeapHeader, ptr %42, i32 0, i32 2
  %44 = load i32, ptr %1, align 4, !tbaa !5
  %45 = sext i32 %44 to i64
  %46 = getelementptr inbounds [10 x i32], ptr %43, i64 0, i64 %45
  %47 = load i32, ptr %46, align 4, !tbaa !5
  %48 = sext i32 %47 to i64
  call void @print_int(i64 noundef %48)
  call void @print_string(ptr noundef @.str.6)
  %49 = load i32, ptr %1, align 4, !tbaa !5
  %50 = sext i32 %49 to i64
  call void @print_int(i64 noundef %50)
  call void (...) @nextLine()
  br label %51

51:                                               ; preds = %41, %33
  br label %52

52:                                               ; preds = %51
  %53 = load i32, ptr %1, align 4, !tbaa !5
  %54 = add nsw i32 %53, 1
  store i32 %54, ptr %1, align 4, !tbaa !5
  br label %30, !llvm.loop !18

55:                                               ; preds = %30
  call void (...) @nextLine()
  call void @print_string(ptr noundef @.str.7)
  call void (...) @nextLine()
  call void (...) @nextLine()
  store i32 0, ptr %1, align 4, !tbaa !5
  br label %56

56:                                               ; preds = %79, %55
  %57 = load i32, ptr %1, align 4, !tbaa !5
  %58 = load ptr, ptr @kernelHeader, align 8, !tbaa !9
  %59 = getelementptr inbounds %struct.kernelHeapHeader, ptr %58, i32 0, i32 9
  %60 = load i32, ptr %59, align 4, !tbaa !19
  %61 = icmp slt i32 %57, %60
  br i1 %61, label %62, label %82

62:                                               ; preds = %56
  call void @print_string(ptr noundef @.str.8)
  %63 = load ptr, ptr @kernelHeader, align 8, !tbaa !9
  %64 = getelementptr inbounds %struct.kernelHeapHeader, ptr %63, i32 0, i32 11
  %65 = load i32, ptr %1, align 4, !tbaa !5
  %66 = sext i32 %65 to i64
  %67 = getelementptr inbounds [500 x %struct.s_pipe], ptr %64, i64 0, i64 %66
  %68 = getelementptr inbounds %struct.s_pipe, ptr %67, i32 0, i32 1
  %69 = load i32, ptr %68, align 4, !tbaa !20
  %70 = sext i32 %69 to i64
  call void @print_int(i64 noundef %70)
  call void (...) @nextLine()
  call void @print_string(ptr noundef @.str.9)
  %71 = load ptr, ptr @kernelHeader, align 8, !tbaa !9
  %72 = getelementptr inbounds %struct.kernelHeapHeader, ptr %71, i32 0, i32 11
  %73 = load i32, ptr %1, align 4, !tbaa !5
  %74 = sext i32 %73 to i64
  %75 = getelementptr inbounds [500 x %struct.s_pipe], ptr %72, i64 0, i64 %74
  %76 = getelementptr inbounds %struct.s_pipe, ptr %75, i32 0, i32 2
  %77 = load i32, ptr %76, align 4, !tbaa !22
  %78 = sext i32 %77 to i64
  call void @print_int(i64 noundef %78)
  call void (...) @nextLine()
  br label %79

79:                                               ; preds = %62
  %80 = load i32, ptr %1, align 4, !tbaa !5
  %81 = add nsw i32 %80, 1
  store i32 %81, ptr %1, align 4, !tbaa !5
  br label %56, !llvm.loop !23

82:                                               ; preds = %56
  call void @print_string(ptr noundef @.str.10)
  call void (...) @nextLine()
  store i32 0, ptr %1, align 4, !tbaa !5
  br label %83

83:                                               ; preds = %105, %82
  %84 = load i32, ptr %1, align 4, !tbaa !5
  %85 = icmp slt i32 %84, 10
  br i1 %85, label %86, label %108

86:                                               ; preds = %83
  %87 = load ptr, ptr @kernelHeader, align 8, !tbaa !9
  %88 = getelementptr inbounds %struct.kernelHeapHeader, ptr %87, i32 0, i32 10
  %89 = load i32, ptr %1, align 4, !tbaa !5
  %90 = sext i32 %89 to i64
  %91 = getelementptr inbounds [10 x i32], ptr %88, i64 0, i64 %90
  %92 = load i32, ptr %91, align 4, !tbaa !5
  %93 = icmp ne i32 %92, -1
  br i1 %93, label %94, label %104

94:                                               ; preds = %86
  call void @print_string(ptr noundef @.str.5)
  %95 = load ptr, ptr @kernelHeader, align 8, !tbaa !9
  %96 = getelementptr inbounds %struct.kernelHeapHeader, ptr %95, i32 0, i32 10
  %97 = load i32, ptr %1, align 4, !tbaa !5
  %98 = sext i32 %97 to i64
  %99 = getelementptr inbounds [10 x i32], ptr %96, i64 0, i64 %98
  %100 = load i32, ptr %99, align 4, !tbaa !5
  %101 = sext i32 %100 to i64
  call void @print_int(i64 noundef %101)
  call void @print_string(ptr noundef @.str.6)
  %102 = load i32, ptr %1, align 4, !tbaa !5
  %103 = sext i32 %102 to i64
  call void @print_int(i64 noundef %103)
  call void (...) @nextLine()
  br label %104

104:                                              ; preds = %94, %86
  br label %105

105:                                              ; preds = %104
  %106 = load i32, ptr %1, align 4, !tbaa !5
  %107 = add nsw i32 %106, 1
  store i32 %107, ptr %1, align 4, !tbaa !5
  br label %83, !llvm.loop !24

108:                                              ; preds = %83
  call void (...) @nextLine()
  call void @print_string(ptr noundef @.str.11)
  call void (...) @nextLine()
  call void (...) @nextLine()
  call void @print_string(ptr noundef @.str.12)
  call void (...) @nextLine()
  store i32 0, ptr %1, align 4, !tbaa !5
  br label %109

109:                                              ; preds = %131, %108
  %110 = load i32, ptr %1, align 4, !tbaa !5
  %111 = icmp slt i32 %110, 10
  br i1 %111, label %112, label %134

112:                                              ; preds = %109
  %113 = load ptr, ptr @kernelHeader, align 8, !tbaa !9
  %114 = getelementptr inbounds %struct.kernelHeapHeader, ptr %113, i32 0, i32 13
  %115 = load i32, ptr %1, align 4, !tbaa !5
  %116 = sext i32 %115 to i64
  %117 = getelementptr inbounds [10 x i32], ptr %114, i64 0, i64 %116
  %118 = load i32, ptr %117, align 4, !tbaa !5
  %119 = icmp ne i32 %118, -1
  br i1 %119, label %120, label %130

120:                                              ; preds = %112
  call void @print_string(ptr noundef @.str.5)
  %121 = load ptr, ptr @kernelHeader, align 8, !tbaa !9
  %122 = getelementptr inbounds %struct.kernelHeapHeader, ptr %121, i32 0, i32 13
  %123 = load i32, ptr %1, align 4, !tbaa !5
  %124 = sext i32 %123 to i64
  %125 = getelementptr inbounds [10 x i32], ptr %122, i64 0, i64 %124
  %126 = load i32, ptr %125, align 4, !tbaa !5
  %127 = sext i32 %126 to i64
  call void @print_int(i64 noundef %127)
  call void @print_string(ptr noundef @.str.6)
  %128 = load i32, ptr %1, align 4, !tbaa !5
  %129 = sext i32 %128 to i64
  call void @print_int(i64 noundef %129)
  call void (...) @nextLine()
  br label %130

130:                                              ; preds = %120, %112
  br label %131

131:                                              ; preds = %130
  %132 = load i32, ptr %1, align 4, !tbaa !5
  %133 = add nsw i32 %132, 1
  store i32 %133, ptr %1, align 4, !tbaa !5
  br label %109, !llvm.loop !25

134:                                              ; preds = %109
  call void @llvm.lifetime.end.p0(i64 4, ptr %1) #3
  ret void
}

declare void @nextLine(...) #2

declare void @print_string(ptr noundef) #2

declare void @print_int(i64 noundef) #2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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, !6, i64 4}
!12 = !{!"kernelHeapHeader", !6, i64 0, !6, i64 4, !7, i64 8, !7, i64 48, !6, i64 24848, !7, i64 24852, !7, i64 24896, !6, i64 29696, !7, i64 29700, !6, i64 40100, !7, i64 40104, !7, i64 40144, !6, i64 74144, !7, i64 74148, !7, i64 74192}
!13 = !{!14, !6, i64 8}
!14 = !{!"ProcessSlot", !10, i64 0, !15, i64 8}
!15 = !{!"Process", !6, i64 0, !6, i64 4, !7, i64 8, !6, i64 128, !6, i64 132, !7, i64 136, !7, i64 192, !6, i64 352, !10, i64 360, !10, i64 368, !10, i64 376, !7, i64 384, !6, i64 464, !10, i64 472, !10, i64 480}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = distinct !{!18, !17}
!19 = !{!12, !6, i64 40100}
!20 = !{!21, !6, i64 4}
!21 = !{!"s_pipe", !6, i64 0, !6, i64 4, !6, i64 8, !7, i64 12, !7, i64 13, !7, i64 14, !7, i64 15, !7, i64 16, !7, i64 17, !6, i64 60, !6, i64 64}
!22 = !{!21, !6, i64 8}
!23 = distinct !{!23, !17}
!24 = distinct !{!24, !17}
!25 = distinct !{!25, !17}


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

%struct.ProcessSlot = type { ptr, %struct.Process }
%struct.Process = type { i32, i32, [30 x i32], i32, i32, [50 x i8], [20 x ptr], i32, ptr, ptr, ptr, [10 x ptr], i32, ptr, ptr }
%struct.s_pipe = type { i32, i32, i32, i8, i8, i8, i8, i8, [40 x i8], i32, i32 }

@kernelHeader = external dso_local local_unnamed_addr global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [24 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @printHeaderInfo() local_unnamed_addr #0 {
  tail call void (...) @nextLine() #2
  tail call void (...) @nextLine() #2
  tail call void (...) @nextLine() #2
  tail call void @print_string(ptr noundef nonnull @.str.1) #2
  tail call void (...) @nextLine() #2
  tail call void (...) @nextLine() #2
  %1 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %2 = getelementptr inbounds i8, ptr %1, i64 4
  %3 = load i32, ptr %2, align 4, !tbaa !9
  %4 = icmp sgt i32 %3, 0
  br i1 %4, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %0, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %0 ]
  tail call void @print_string(ptr noundef nonnull @.str.2) #2
  %5 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %6 = getelementptr inbounds i8, ptr %5, i64 48
  %7 = getelementptr inbounds [50 x %struct.ProcessSlot], ptr %6, i64 0, i64 %indvars.iv, i32 1, i32 5
  tail call void @print_string(ptr noundef nonnull %7) #2
  tail call void @print_string(ptr noundef nonnull @.str.3) #2
  %8 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %9 = getelementptr inbounds i8, ptr %8, i64 48
  %10 = getelementptr inbounds [50 x %struct.ProcessSlot], ptr %9, i64 0, i64 %indvars.iv, i32 1
  %11 = load i32, ptr %10, align 8, !tbaa !12
  %12 = sext i32 %11 to i64
  tail call void @print_int(i64 noundef %12) #2
  tail call void (...) @nextLine() #2
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %13 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %14 = getelementptr inbounds i8, ptr %13, i64 4
  %15 = load i32, ptr %14, align 4, !tbaa !9
  %16 = sext i32 %15 to i64
  %17 = icmp slt i64 %indvars.iv.next, %16
  br i1 %17, label %.lr.ph, label %._crit_edge, !llvm.loop !15

._crit_edge:                                      ; preds = %.lr.ph, %0
  tail call void @print_string(ptr noundef nonnull @.str.4) #2
  tail call void (...) @nextLine() #2
  %18 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %19 = getelementptr inbounds i8, ptr %18, i64 8
  %20 = load i32, ptr %19, align 4, !tbaa !17
  %.not24 = icmp eq i32 %20, -1
  br i1 %.not24, label %26, label %21

21:                                               ; preds = %._crit_edge
  tail call void @print_string(ptr noundef nonnull @.str.5) #2
  %22 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %23 = getelementptr inbounds i8, ptr %22, i64 8
  %24 = load i32, ptr %23, align 4, !tbaa !17
  %25 = sext i32 %24 to i64
  tail call void @print_int(i64 noundef %25) #2
  tail call void @print_string(ptr noundef nonnull @.str.6) #2
  tail call void @print_int(i64 noundef 0) #2
  tail call void (...) @nextLine() #2
  %.pre = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  br label %26

26:                                               ; preds = %._crit_edge, %21
  %27 = phi ptr [ %18, %._crit_edge ], [ %.pre, %21 ]
  %28 = getelementptr inbounds i8, ptr %27, i64 12
  %29 = load i32, ptr %28, align 4, !tbaa !17
  %.not24.1 = icmp eq i32 %29, -1
  br i1 %.not24.1, label %35, label %30

30:                                               ; preds = %26
  tail call void @print_string(ptr noundef nonnull @.str.5) #2
  %31 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %32 = getelementptr inbounds i8, ptr %31, i64 12
  %33 = load i32, ptr %32, align 4, !tbaa !17
  %34 = sext i32 %33 to i64
  tail call void @print_int(i64 noundef %34) #2
  tail call void @print_string(ptr noundef nonnull @.str.6) #2
  tail call void @print_int(i64 noundef 1) #2
  tail call void (...) @nextLine() #2
  %.pre46 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  br label %35

35:                                               ; preds = %30, %26
  %36 = phi ptr [ %.pre46, %30 ], [ %27, %26 ]
  %37 = getelementptr inbounds i8, ptr %36, i64 16
  %38 = load i32, ptr %37, align 4, !tbaa !17
  %.not24.2 = icmp eq i32 %38, -1
  br i1 %.not24.2, label %44, label %39

39:                                               ; preds = %35
  tail call void @print_string(ptr noundef nonnull @.str.5) #2
  %40 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %41 = getelementptr inbounds i8, ptr %40, i64 16
  %42 = load i32, ptr %41, align 4, !tbaa !17
  %43 = sext i32 %42 to i64
  tail call void @print_int(i64 noundef %43) #2
  tail call void @print_string(ptr noundef nonnull @.str.6) #2
  tail call void @print_int(i64 noundef 2) #2
  tail call void (...) @nextLine() #2
  %.pre47 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  br label %44

44:                                               ; preds = %39, %35
  %45 = phi ptr [ %.pre47, %39 ], [ %36, %35 ]
  %46 = getelementptr inbounds i8, ptr %45, i64 20
  %47 = load i32, ptr %46, align 4, !tbaa !17
  %.not24.3 = icmp eq i32 %47, -1
  br i1 %.not24.3, label %53, label %48

48:                                               ; preds = %44
  tail call void @print_string(ptr noundef nonnull @.str.5) #2
  %49 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %50 = getelementptr inbounds i8, ptr %49, i64 20
  %51 = load i32, ptr %50, align 4, !tbaa !17
  %52 = sext i32 %51 to i64
  tail call void @print_int(i64 noundef %52) #2
  tail call void @print_string(ptr noundef nonnull @.str.6) #2
  tail call void @print_int(i64 noundef 3) #2
  tail call void (...) @nextLine() #2
  %.pre48 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  br label %53

53:                                               ; preds = %48, %44
  %54 = phi ptr [ %.pre48, %48 ], [ %45, %44 ]
  %55 = getelementptr inbounds i8, ptr %54, i64 24
  %56 = load i32, ptr %55, align 4, !tbaa !17
  %.not24.4 = icmp eq i32 %56, -1
  br i1 %.not24.4, label %62, label %57

57:                                               ; preds = %53
  tail call void @print_string(ptr noundef nonnull @.str.5) #2
  %58 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %59 = getelementptr inbounds i8, ptr %58, i64 24
  %60 = load i32, ptr %59, align 4, !tbaa !17
  %61 = sext i32 %60 to i64
  tail call void @print_int(i64 noundef %61) #2
  tail call void @print_string(ptr noundef nonnull @.str.6) #2
  tail call void @print_int(i64 noundef 4) #2
  tail call void (...) @nextLine() #2
  %.pre49 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  br label %62

62:                                               ; preds = %57, %53
  %63 = phi ptr [ %.pre49, %57 ], [ %54, %53 ]
  %64 = getelementptr inbounds i8, ptr %63, i64 28
  %65 = load i32, ptr %64, align 4, !tbaa !17
  %.not24.5 = icmp eq i32 %65, -1
  br i1 %.not24.5, label %71, label %66

66:                                               ; preds = %62
  tail call void @print_string(ptr noundef nonnull @.str.5) #2
  %67 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %68 = getelementptr inbounds i8, ptr %67, i64 28
  %69 = load i32, ptr %68, align 4, !tbaa !17
  %70 = sext i32 %69 to i64
  tail call void @print_int(i64 noundef %70) #2
  tail call void @print_string(ptr noundef nonnull @.str.6) #2
  tail call void @print_int(i64 noundef 5) #2
  tail call void (...) @nextLine() #2
  %.pre50 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  br label %71

71:                                               ; preds = %66, %62
  %72 = phi ptr [ %.pre50, %66 ], [ %63, %62 ]
  %73 = getelementptr inbounds i8, ptr %72, i64 32
  %74 = load i32, ptr %73, align 4, !tbaa !17
  %.not24.6 = icmp eq i32 %74, -1
  br i1 %.not24.6, label %80, label %75

75:                                               ; preds = %71
  tail call void @print_string(ptr noundef nonnull @.str.5) #2
  %76 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %77 = getelementptr inbounds i8, ptr %76, i64 32
  %78 = load i32, ptr %77, align 4, !tbaa !17
  %79 = sext i32 %78 to i64
  tail call void @print_int(i64 noundef %79) #2
  tail call void @print_string(ptr noundef nonnull @.str.6) #2
  tail call void @print_int(i64 noundef 6) #2
  tail call void (...) @nextLine() #2
  %.pre51 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  br label %80

80:                                               ; preds = %75, %71
  %81 = phi ptr [ %.pre51, %75 ], [ %72, %71 ]
  %82 = getelementptr inbounds i8, ptr %81, i64 36
  %83 = load i32, ptr %82, align 4, !tbaa !17
  %.not24.7 = icmp eq i32 %83, -1
  br i1 %.not24.7, label %89, label %84

84:                                               ; preds = %80
  tail call void @print_string(ptr noundef nonnull @.str.5) #2
  %85 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %86 = getelementptr inbounds i8, ptr %85, i64 36
  %87 = load i32, ptr %86, align 4, !tbaa !17
  %88 = sext i32 %87 to i64
  tail call void @print_int(i64 noundef %88) #2
  tail call void @print_string(ptr noundef nonnull @.str.6) #2
  tail call void @print_int(i64 noundef 7) #2
  tail call void (...) @nextLine() #2
  %.pre52 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  br label %89

89:                                               ; preds = %84, %80
  %90 = phi ptr [ %.pre52, %84 ], [ %81, %80 ]
  %91 = getelementptr inbounds i8, ptr %90, i64 40
  %92 = load i32, ptr %91, align 4, !tbaa !17
  %.not24.8 = icmp eq i32 %92, -1
  br i1 %.not24.8, label %98, label %93

93:                                               ; preds = %89
  tail call void @print_string(ptr noundef nonnull @.str.5) #2
  %94 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %95 = getelementptr inbounds i8, ptr %94, i64 40
  %96 = load i32, ptr %95, align 4, !tbaa !17
  %97 = sext i32 %96 to i64
  tail call void @print_int(i64 noundef %97) #2
  tail call void @print_string(ptr noundef nonnull @.str.6) #2
  tail call void @print_int(i64 noundef 8) #2
  tail call void (...) @nextLine() #2
  %.pre53 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  br label %98

98:                                               ; preds = %93, %89
  %99 = phi ptr [ %.pre53, %93 ], [ %90, %89 ]
  %100 = getelementptr inbounds i8, ptr %99, i64 44
  %101 = load i32, ptr %100, align 4, !tbaa !17
  %.not24.9 = icmp eq i32 %101, -1
  br i1 %.not24.9, label %107, label %102

102:                                              ; preds = %98
  tail call void @print_string(ptr noundef nonnull @.str.5) #2
  %103 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %104 = getelementptr inbounds i8, ptr %103, i64 44
  %105 = load i32, ptr %104, align 4, !tbaa !17
  %106 = sext i32 %105 to i64
  tail call void @print_int(i64 noundef %106) #2
  tail call void @print_string(ptr noundef nonnull @.str.6) #2
  tail call void @print_int(i64 noundef 9) #2
  tail call void (...) @nextLine() #2
  br label %107

107:                                              ; preds = %102, %98
  tail call void (...) @nextLine() #2
  tail call void @print_string(ptr noundef nonnull @.str.7) #2
  tail call void (...) @nextLine() #2
  tail call void (...) @nextLine() #2
  %108 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %109 = getelementptr inbounds i8, ptr %108, i64 40100
  %110 = load i32, ptr %109, align 4, !tbaa !18
  %111 = icmp sgt i32 %110, 0
  br i1 %111, label %.lr.ph29, label %._crit_edge30

.lr.ph29:                                         ; preds = %107, %.lr.ph29
  %indvars.iv37 = phi i64 [ %indvars.iv.next38, %.lr.ph29 ], [ 0, %107 ]
  tail call void @print_string(ptr noundef nonnull @.str.8) #2
  %112 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %113 = getelementptr inbounds i8, ptr %112, i64 40144
  %114 = getelementptr inbounds [500 x %struct.s_pipe], ptr %113, i64 0, i64 %indvars.iv37, i32 1
  %115 = load i32, ptr %114, align 4, !tbaa !19
  %116 = sext i32 %115 to i64
  tail call void @print_int(i64 noundef %116) #2
  tail call void (...) @nextLine() #2
  tail call void @print_string(ptr noundef nonnull @.str.9) #2
  %117 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %118 = getelementptr inbounds i8, ptr %117, i64 40144
  %119 = getelementptr inbounds [500 x %struct.s_pipe], ptr %118, i64 0, i64 %indvars.iv37, i32 2
  %120 = load i32, ptr %119, align 4, !tbaa !21
  %121 = sext i32 %120 to i64
  tail call void @print_int(i64 noundef %121) #2
  tail call void (...) @nextLine() #2
  %indvars.iv.next38 = add nuw nsw i64 %indvars.iv37, 1
  %122 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %123 = getelementptr inbounds i8, ptr %122, i64 40100
  %124 = load i32, ptr %123, align 4, !tbaa !18
  %125 = sext i32 %124 to i64
  %126 = icmp slt i64 %indvars.iv.next38, %125
  br i1 %126, label %.lr.ph29, label %._crit_edge30, !llvm.loop !22

._crit_edge30:                                    ; preds = %.lr.ph29, %107
  tail call void @print_string(ptr noundef nonnull @.str.10) #2
  tail call void (...) @nextLine() #2
  %127 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %128 = getelementptr inbounds i8, ptr %127, i64 40104
  %129 = load i32, ptr %128, align 4, !tbaa !17
  %.not23 = icmp eq i32 %129, -1
  br i1 %.not23, label %135, label %130

130:                                              ; preds = %._crit_edge30
  tail call void @print_string(ptr noundef nonnull @.str.5) #2
  %131 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %132 = getelementptr inbounds i8, ptr %131, i64 40104
  %133 = load i32, ptr %132, align 4, !tbaa !17
  %134 = sext i32 %133 to i64
  tail call void @print_int(i64 noundef %134) #2
  tail call void @print_string(ptr noundef nonnull @.str.6) #2
  tail call void @print_int(i64 noundef 0) #2
  tail call void (...) @nextLine() #2
  %.pre54 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  br label %135

135:                                              ; preds = %._crit_edge30, %130
  %136 = phi ptr [ %127, %._crit_edge30 ], [ %.pre54, %130 ]
  %137 = getelementptr inbounds i8, ptr %136, i64 40108
  %138 = load i32, ptr %137, align 4, !tbaa !17
  %.not23.1 = icmp eq i32 %138, -1
  br i1 %.not23.1, label %144, label %139

139:                                              ; preds = %135
  tail call void @print_string(ptr noundef nonnull @.str.5) #2
  %140 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %141 = getelementptr inbounds i8, ptr %140, i64 40108
  %142 = load i32, ptr %141, align 4, !tbaa !17
  %143 = sext i32 %142 to i64
  tail call void @print_int(i64 noundef %143) #2
  tail call void @print_string(ptr noundef nonnull @.str.6) #2
  tail call void @print_int(i64 noundef 1) #2
  tail call void (...) @nextLine() #2
  %.pre55 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  br label %144

144:                                              ; preds = %139, %135
  %145 = phi ptr [ %.pre55, %139 ], [ %136, %135 ]
  %146 = getelementptr inbounds i8, ptr %145, i64 40112
  %147 = load i32, ptr %146, align 4, !tbaa !17
  %.not23.2 = icmp eq i32 %147, -1
  br i1 %.not23.2, label %153, label %148

148:                                              ; preds = %144
  tail call void @print_string(ptr noundef nonnull @.str.5) #2
  %149 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %150 = getelementptr inbounds i8, ptr %149, i64 40112
  %151 = load i32, ptr %150, align 4, !tbaa !17
  %152 = sext i32 %151 to i64
  tail call void @print_int(i64 noundef %152) #2
  tail call void @print_string(ptr noundef nonnull @.str.6) #2
  tail call void @print_int(i64 noundef 2) #2
  tail call void (...) @nextLine() #2
  %.pre56 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  br label %153

153:                                              ; preds = %148, %144
  %154 = phi ptr [ %.pre56, %148 ], [ %145, %144 ]
  %155 = getelementptr inbounds i8, ptr %154, i64 40116
  %156 = load i32, ptr %155, align 4, !tbaa !17
  %.not23.3 = icmp eq i32 %156, -1
  br i1 %.not23.3, label %162, label %157

157:                                              ; preds = %153
  tail call void @print_string(ptr noundef nonnull @.str.5) #2
  %158 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %159 = getelementptr inbounds i8, ptr %158, i64 40116
  %160 = load i32, ptr %159, align 4, !tbaa !17
  %161 = sext i32 %160 to i64
  tail call void @print_int(i64 noundef %161) #2
  tail call void @print_string(ptr noundef nonnull @.str.6) #2
  tail call void @print_int(i64 noundef 3) #2
  tail call void (...) @nextLine() #2
  %.pre57 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  br label %162

162:                                              ; preds = %157, %153
  %163 = phi ptr [ %.pre57, %157 ], [ %154, %153 ]
  %164 = getelementptr inbounds i8, ptr %163, i64 40120
  %165 = load i32, ptr %164, align 4, !tbaa !17
  %.not23.4 = icmp eq i32 %165, -1
  br i1 %.not23.4, label %171, label %166

166:                                              ; preds = %162
  tail call void @print_string(ptr noundef nonnull @.str.5) #2
  %167 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %168 = getelementptr inbounds i8, ptr %167, i64 40120
  %169 = load i32, ptr %168, align 4, !tbaa !17
  %170 = sext i32 %169 to i64
  tail call void @print_int(i64 noundef %170) #2
  tail call void @print_string(ptr noundef nonnull @.str.6) #2
  tail call void @print_int(i64 noundef 4) #2
  tail call void (...) @nextLine() #2
  %.pre58 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  br label %171

171:                                              ; preds = %166, %162
  %172 = phi ptr [ %.pre58, %166 ], [ %163, %162 ]
  %173 = getelementptr inbounds i8, ptr %172, i64 40124
  %174 = load i32, ptr %173, align 4, !tbaa !17
  %.not23.5 = icmp eq i32 %174, -1
  br i1 %.not23.5, label %180, label %175

175:                                              ; preds = %171
  tail call void @print_string(ptr noundef nonnull @.str.5) #2
  %176 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %177 = getelementptr inbounds i8, ptr %176, i64 40124
  %178 = load i32, ptr %177, align 4, !tbaa !17
  %179 = sext i32 %178 to i64
  tail call void @print_int(i64 noundef %179) #2
  tail call void @print_string(ptr noundef nonnull @.str.6) #2
  tail call void @print_int(i64 noundef 5) #2
  tail call void (...) @nextLine() #2
  %.pre59 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  br label %180

180:                                              ; preds = %175, %171
  %181 = phi ptr [ %.pre59, %175 ], [ %172, %171 ]
  %182 = getelementptr inbounds i8, ptr %181, i64 40128
  %183 = load i32, ptr %182, align 4, !tbaa !17
  %.not23.6 = icmp eq i32 %183, -1
  br i1 %.not23.6, label %189, label %184

184:                                              ; preds = %180
  tail call void @print_string(ptr noundef nonnull @.str.5) #2
  %185 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %186 = getelementptr inbounds i8, ptr %185, i64 40128
  %187 = load i32, ptr %186, align 4, !tbaa !17
  %188 = sext i32 %187 to i64
  tail call void @print_int(i64 noundef %188) #2
  tail call void @print_string(ptr noundef nonnull @.str.6) #2
  tail call void @print_int(i64 noundef 6) #2
  tail call void (...) @nextLine() #2
  %.pre60 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  br label %189

189:                                              ; preds = %184, %180
  %190 = phi ptr [ %.pre60, %184 ], [ %181, %180 ]
  %191 = getelementptr inbounds i8, ptr %190, i64 40132
  %192 = load i32, ptr %191, align 4, !tbaa !17
  %.not23.7 = icmp eq i32 %192, -1
  br i1 %.not23.7, label %198, label %193

193:                                              ; preds = %189
  tail call void @print_string(ptr noundef nonnull @.str.5) #2
  %194 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %195 = getelementptr inbounds i8, ptr %194, i64 40132
  %196 = load i32, ptr %195, align 4, !tbaa !17
  %197 = sext i32 %196 to i64
  tail call void @print_int(i64 noundef %197) #2
  tail call void @print_string(ptr noundef nonnull @.str.6) #2
  tail call void @print_int(i64 noundef 7) #2
  tail call void (...) @nextLine() #2
  %.pre61 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  br label %198

198:                                              ; preds = %193, %189
  %199 = phi ptr [ %.pre61, %193 ], [ %190, %189 ]
  %200 = getelementptr inbounds i8, ptr %199, i64 40136
  %201 = load i32, ptr %200, align 4, !tbaa !17
  %.not23.8 = icmp eq i32 %201, -1
  br i1 %.not23.8, label %207, label %202

202:                                              ; preds = %198
  tail call void @print_string(ptr noundef nonnull @.str.5) #2
  %203 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %204 = getelementptr inbounds i8, ptr %203, i64 40136
  %205 = load i32, ptr %204, align 4, !tbaa !17
  %206 = sext i32 %205 to i64
  tail call void @print_int(i64 noundef %206) #2
  tail call void @print_string(ptr noundef nonnull @.str.6) #2
  tail call void @print_int(i64 noundef 8) #2
  tail call void (...) @nextLine() #2
  %.pre62 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  br label %207

207:                                              ; preds = %202, %198
  %208 = phi ptr [ %.pre62, %202 ], [ %199, %198 ]
  %209 = getelementptr inbounds i8, ptr %208, i64 40140
  %210 = load i32, ptr %209, align 4, !tbaa !17
  %.not23.9 = icmp eq i32 %210, -1
  br i1 %.not23.9, label %216, label %211

211:                                              ; preds = %207
  tail call void @print_string(ptr noundef nonnull @.str.5) #2
  %212 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %213 = getelementptr inbounds i8, ptr %212, i64 40140
  %214 = load i32, ptr %213, align 4, !tbaa !17
  %215 = sext i32 %214 to i64
  tail call void @print_int(i64 noundef %215) #2
  tail call void @print_string(ptr noundef nonnull @.str.6) #2
  tail call void @print_int(i64 noundef 9) #2
  tail call void (...) @nextLine() #2
  br label %216

216:                                              ; preds = %211, %207
  tail call void (...) @nextLine() #2
  tail call void @print_string(ptr noundef nonnull @.str.11) #2
  tail call void (...) @nextLine() #2
  tail call void (...) @nextLine() #2
  tail call void @print_string(ptr noundef nonnull @.str.12) #2
  tail call void (...) @nextLine() #2
  %217 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %218 = getelementptr inbounds i8, ptr %217, i64 74148
  %219 = load i32, ptr %218, align 4, !tbaa !17
  %.not = icmp eq i32 %219, -1
  br i1 %.not, label %225, label %220

220:                                              ; preds = %216
  tail call void @print_string(ptr noundef nonnull @.str.5) #2
  %221 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %222 = getelementptr inbounds i8, ptr %221, i64 74148
  %223 = load i32, ptr %222, align 4, !tbaa !17
  %224 = sext i32 %223 to i64
  tail call void @print_int(i64 noundef %224) #2
  tail call void @print_string(ptr noundef nonnull @.str.6) #2
  tail call void @print_int(i64 noundef 0) #2
  tail call void (...) @nextLine() #2
  %.pre63 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  br label %225

225:                                              ; preds = %216, %220
  %226 = phi ptr [ %217, %216 ], [ %.pre63, %220 ]
  %227 = getelementptr inbounds i8, ptr %226, i64 74152
  %228 = load i32, ptr %227, align 4, !tbaa !17
  %.not.1 = icmp eq i32 %228, -1
  br i1 %.not.1, label %234, label %229

229:                                              ; preds = %225
  tail call void @print_string(ptr noundef nonnull @.str.5) #2
  %230 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %231 = getelementptr inbounds i8, ptr %230, i64 74152
  %232 = load i32, ptr %231, align 4, !tbaa !17
  %233 = sext i32 %232 to i64
  tail call void @print_int(i64 noundef %233) #2
  tail call void @print_string(ptr noundef nonnull @.str.6) #2
  tail call void @print_int(i64 noundef 1) #2
  tail call void (...) @nextLine() #2
  %.pre64 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  br label %234

234:                                              ; preds = %229, %225
  %235 = phi ptr [ %.pre64, %229 ], [ %226, %225 ]
  %236 = getelementptr inbounds i8, ptr %235, i64 74156
  %237 = load i32, ptr %236, align 4, !tbaa !17
  %.not.2 = icmp eq i32 %237, -1
  br i1 %.not.2, label %243, label %238

238:                                              ; preds = %234
  tail call void @print_string(ptr noundef nonnull @.str.5) #2
  %239 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %240 = getelementptr inbounds i8, ptr %239, i64 74156
  %241 = load i32, ptr %240, align 4, !tbaa !17
  %242 = sext i32 %241 to i64
  tail call void @print_int(i64 noundef %242) #2
  tail call void @print_string(ptr noundef nonnull @.str.6) #2
  tail call void @print_int(i64 noundef 2) #2
  tail call void (...) @nextLine() #2
  %.pre65 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  br label %243

243:                                              ; preds = %238, %234
  %244 = phi ptr [ %.pre65, %238 ], [ %235, %234 ]
  %245 = getelementptr inbounds i8, ptr %244, i64 74160
  %246 = load i32, ptr %245, align 4, !tbaa !17
  %.not.3 = icmp eq i32 %246, -1
  br i1 %.not.3, label %252, label %247

247:                                              ; preds = %243
  tail call void @print_string(ptr noundef nonnull @.str.5) #2
  %248 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %249 = getelementptr inbounds i8, ptr %248, i64 74160
  %250 = load i32, ptr %249, align 4, !tbaa !17
  %251 = sext i32 %250 to i64
  tail call void @print_int(i64 noundef %251) #2
  tail call void @print_string(ptr noundef nonnull @.str.6) #2
  tail call void @print_int(i64 noundef 3) #2
  tail call void (...) @nextLine() #2
  %.pre66 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  br label %252

252:                                              ; preds = %247, %243
  %253 = phi ptr [ %.pre66, %247 ], [ %244, %243 ]
  %254 = getelementptr inbounds i8, ptr %253, i64 74164
  %255 = load i32, ptr %254, align 4, !tbaa !17
  %.not.4 = icmp eq i32 %255, -1
  br i1 %.not.4, label %261, label %256

256:                                              ; preds = %252
  tail call void @print_string(ptr noundef nonnull @.str.5) #2
  %257 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %258 = getelementptr inbounds i8, ptr %257, i64 74164
  %259 = load i32, ptr %258, align 4, !tbaa !17
  %260 = sext i32 %259 to i64
  tail call void @print_int(i64 noundef %260) #2
  tail call void @print_string(ptr noundef nonnull @.str.6) #2
  tail call void @print_int(i64 noundef 4) #2
  tail call void (...) @nextLine() #2
  %.pre67 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  br label %261

261:                                              ; preds = %256, %252
  %262 = phi ptr [ %.pre67, %256 ], [ %253, %252 ]
  %263 = getelementptr inbounds i8, ptr %262, i64 74168
  %264 = load i32, ptr %263, align 4, !tbaa !17
  %.not.5 = icmp eq i32 %264, -1
  br i1 %.not.5, label %270, label %265

265:                                              ; preds = %261
  tail call void @print_string(ptr noundef nonnull @.str.5) #2
  %266 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %267 = getelementptr inbounds i8, ptr %266, i64 74168
  %268 = load i32, ptr %267, align 4, !tbaa !17
  %269 = sext i32 %268 to i64
  tail call void @print_int(i64 noundef %269) #2
  tail call void @print_string(ptr noundef nonnull @.str.6) #2
  tail call void @print_int(i64 noundef 5) #2
  tail call void (...) @nextLine() #2
  %.pre68 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  br label %270

270:                                              ; preds = %265, %261
  %271 = phi ptr [ %.pre68, %265 ], [ %262, %261 ]
  %272 = getelementptr inbounds i8, ptr %271, i64 74172
  %273 = load i32, ptr %272, align 4, !tbaa !17
  %.not.6 = icmp eq i32 %273, -1
  br i1 %.not.6, label %279, label %274

274:                                              ; preds = %270
  tail call void @print_string(ptr noundef nonnull @.str.5) #2
  %275 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %276 = getelementptr inbounds i8, ptr %275, i64 74172
  %277 = load i32, ptr %276, align 4, !tbaa !17
  %278 = sext i32 %277 to i64
  tail call void @print_int(i64 noundef %278) #2
  tail call void @print_string(ptr noundef nonnull @.str.6) #2
  tail call void @print_int(i64 noundef 6) #2
  tail call void (...) @nextLine() #2
  %.pre69 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  br label %279

279:                                              ; preds = %274, %270
  %280 = phi ptr [ %.pre69, %274 ], [ %271, %270 ]
  %281 = getelementptr inbounds i8, ptr %280, i64 74176
  %282 = load i32, ptr %281, align 4, !tbaa !17
  %.not.7 = icmp eq i32 %282, -1
  br i1 %.not.7, label %288, label %283

283:                                              ; preds = %279
  tail call void @print_string(ptr noundef nonnull @.str.5) #2
  %284 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %285 = getelementptr inbounds i8, ptr %284, i64 74176
  %286 = load i32, ptr %285, align 4, !tbaa !17
  %287 = sext i32 %286 to i64
  tail call void @print_int(i64 noundef %287) #2
  tail call void @print_string(ptr noundef nonnull @.str.6) #2
  tail call void @print_int(i64 noundef 7) #2
  tail call void (...) @nextLine() #2
  %.pre70 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  br label %288

288:                                              ; preds = %283, %279
  %289 = phi ptr [ %.pre70, %283 ], [ %280, %279 ]
  %290 = getelementptr inbounds i8, ptr %289, i64 74180
  %291 = load i32, ptr %290, align 4, !tbaa !17
  %.not.8 = icmp eq i32 %291, -1
  br i1 %.not.8, label %297, label %292

292:                                              ; preds = %288
  tail call void @print_string(ptr noundef nonnull @.str.5) #2
  %293 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %294 = getelementptr inbounds i8, ptr %293, i64 74180
  %295 = load i32, ptr %294, align 4, !tbaa !17
  %296 = sext i32 %295 to i64
  tail call void @print_int(i64 noundef %296) #2
  tail call void @print_string(ptr noundef nonnull @.str.6) #2
  tail call void @print_int(i64 noundef 8) #2
  tail call void (...) @nextLine() #2
  %.pre71 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  br label %297

297:                                              ; preds = %292, %288
  %298 = phi ptr [ %.pre71, %292 ], [ %289, %288 ]
  %299 = getelementptr inbounds i8, ptr %298, i64 74184
  %300 = load i32, ptr %299, align 4, !tbaa !17
  %.not.9 = icmp eq i32 %300, -1
  br i1 %.not.9, label %306, label %301

301:                                              ; preds = %297
  tail call void @print_string(ptr noundef nonnull @.str.5) #2
  %302 = load ptr, ptr @kernelHeader, align 8, !tbaa !5
  %303 = getelementptr inbounds i8, ptr %302, i64 74184
  %304 = load i32, ptr %303, align 4, !tbaa !17
  %305 = sext i32 %304 to i64
  tail call void @print_int(i64 noundef %305) #2
  tail call void @print_string(ptr noundef nonnull @.str.6) #2
  tail call void @print_int(i64 noundef 9) #2
  tail call void (...) @nextLine() #2
  br label %306

306:                                              ; preds = %301, %297
  ret void
}

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

declare void @print_string(ptr noundef) local_unnamed_addr #1

declare void @print_int(i64 noundef) 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 = { 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 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !11, i64 4}
!10 = !{!"kernelHeapHeader", !11, i64 0, !11, i64 4, !7, i64 8, !7, i64 48, !11, i64 24848, !7, i64 24852, !7, i64 24896, !11, i64 29696, !7, i64 29700, !11, i64 40100, !7, i64 40104, !7, i64 40144, !11, i64 74144, !7, i64 74148, !7, i64 74192}
!11 = !{!"int", !7, i64 0}
!12 = !{!13, !11, i64 8}
!13 = !{!"ProcessSlot", !6, i64 0, !14, i64 8}
!14 = !{!"Process", !11, i64 0, !11, i64 4, !7, i64 8, !11, i64 128, !11, i64 132, !7, i64 136, !7, i64 192, !11, i64 352, !6, i64 360, !6, i64 368, !6, i64 376, !7, i64 384, !11, i64 464, !6, i64 472, !6, i64 480}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = !{!11, !11, i64 0}
!18 = !{!10, !11, i64 40100}
!19 = !{!20, !11, i64 4}
!20 = !{!"s_pipe", !11, i64 0, !11, i64 4, !11, i64 8, !7, i64 12, !7, i64 13, !7, i64 14, !7, i64 15, !7, i64 16, !7, i64 17, !11, i64 60, !11, i64 64}
!21 = !{!20, !11, i64 8}
!22 = distinct !{!22, !16}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SROAPass,SimplifyCFGPass,TailCallElimPass