Advertisement
UnrealOG

Try to guess the original assignment and language 😎

Jul 19th, 2023
296
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
LLVM 72.38 KB | Software | 0 0
  1. target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
  2. target triple = "x86_64-pc-linux-gnu"
  3.  
  4. %struct.processStruct = type { i32, i32, i32, i32, i32, i32 }
  5. %struct.readyQueue = type { %struct.processStruct*, %struct.processStruct*, i32, i32, i32, i32, i32, i32, [4 x i32] }
  6.  
  7. @.str = private unnamed_addr constant [12 x i8] c"processes: \00", align 1
  8. @.str.1 = private unnamed_addr constant [3 x i8] c"%d\00", align 1
  9. @.str.2 = private unnamed_addr constant [3 x i8] c" (\00", align 1
  10. @.str.3 = private unnamed_addr constant [5 x i8] c" ms)\00", align 1
  11. @.str.4 = private unnamed_addr constant [2 x i8] c" \00", align 1
  12. @.str.5 = private unnamed_addr constant [44 x i8] c"Enter the number of processes to schedule: \00", align 1
  13. @.str.6 = private unnamed_addr constant [7 x i8] c"%s%d%s\00", align 1
  14. @.str.7 = private unnamed_addr constant [31 x i8] c"Enter the CPU time of process \00", align 1
  15. @.str.8 = private unnamed_addr constant [3 x i8] c": \00", align 1
  16. @.str.9 = private unnamed_addr constant [29 x i8] c"Enter the period of process \00", align 1
  17. @.str.10 = private unnamed_addr constant [6 x i8] c"%s%s\0A\00", align 1
  18. @.str.11 = private unnamed_addr constant [4 x i8] c"0: \00", align 1
  19. @.str.12 = private unnamed_addr constant [10 x i8] c"%d%s%d%s\0A\00", align 1
  20. @.str.13 = private unnamed_addr constant [11 x i8] c": process \00", align 1
  21. @.str.14 = private unnamed_addr constant [6 x i8] c" ends\00", align 1
  22. @.str.15 = private unnamed_addr constant [14 x i8] c"%d%s%d%s%d%s\0A\00", align 1
  23. @.str.16 = private unnamed_addr constant [19 x i8] c" missed deadline (\00", align 1
  24. @.str.17 = private unnamed_addr constant [10 x i8] c" ms left)\00", align 1
  25. @.str.18 = private unnamed_addr constant [8 x i8] c"%d%s%s\0A\00", align 1
  26. @.str.19 = private unnamed_addr constant [12 x i8] c" preempted!\00", align 1
  27. @.str.20 = private unnamed_addr constant [8 x i8] c" starts\00", align 1
  28. @.str.21 = private unnamed_addr constant [6 x i8] c"%d%s\0A\00", align 1
  29. @.str.22 = private unnamed_addr constant [19 x i8] c": Max Time reached\00", align 1
  30. @.str.23 = private unnamed_addr constant [6 x i8] c"%s%d\0A\00", align 1
  31. @.str.24 = private unnamed_addr constant [27 x i8] c"Sum of all waiting times: \00", align 1
  32. @.str.25 = private unnamed_addr constant [30 x i8] c"Number of processes created: \00", align 1
  33. @.str.26 = private unnamed_addr constant [9 x i8] c"%s%.2lf\0A\00", align 1
  34. @.str.27 = private unnamed_addr constant [23 x i8] c"Average Waiting Time: \00", align 1
  35.  
  36. ; Function Attrs: noinline nounwind optnone uwtable
  37. define dso_local i32 @lcm(i32 noundef %0, i32 noundef %1) #0 {
  38.   %3 = alloca i32, align 4
  39.   %4 = alloca i32, align 4
  40.   %5 = alloca i32, align 4
  41.   %6 = alloca i32, align 4
  42.   store i32 %0, i32* %4, align 4
  43.   store i32 %1, i32* %5, align 4
  44.   %7 = load i32, i32* %4, align 4
  45.   %8 = icmp eq i32 %7, 0
  46.   br i1 %8, label %9, label %11
  47.  
  48. 9:                                                ; preds = %2
  49.   %10 = load i32, i32* %5, align 4
  50.   store i32 %10, i32* %3, align 4
  51.   br label %41
  52.  
  53. 11:                                               ; preds = %2
  54.   %12 = load i32, i32* %5, align 4
  55.   %13 = icmp eq i32 %12, 0
  56.   br i1 %13, label %14, label %16
  57.  
  58. 14:                                               ; preds = %11
  59.   %15 = load i32, i32* %4, align 4
  60.   store i32 %15, i32* %3, align 4
  61.   br label %41
  62.  
  63. 16:                                               ; preds = %11
  64.   %17 = load i32, i32* %4, align 4
  65.   %18 = load i32, i32* %5, align 4
  66.   %19 = icmp sgt i32 %17, %18
  67.   br i1 %19, label %20, label %22
  68.  
  69. 20:                                               ; preds = %16
  70.   %21 = load i32, i32* %4, align 4
  71.   br label %24
  72.  
  73. 22:                                               ; preds = %16
  74.   %23 = load i32, i32* %5, align 4
  75.   br label %24
  76.  
  77. 24:                                               ; preds = %22, %20
  78.   %25 = phi i32 [ %21, %20 ], [ %23, %22 ]
  79.   store i32 %25, i32* %6, align 4
  80.   br label %26
  81.  
  82. 26:                                               ; preds = %24, %38
  83.   %27 = load i32, i32* %6, align 4
  84.   %28 = load i32, i32* %4, align 4
  85.   %29 = srem i32 %27, %28
  86.   %30 = icmp eq i32 %29, 0
  87.   br i1 %30, label %31, label %38
  88.  
  89. 31:                                               ; preds = %26
  90.   %32 = load i32, i32* %6, align 4
  91.   %33 = load i32, i32* %5, align 4
  92.   %34 = srem i32 %32, %33
  93.   %35 = icmp eq i32 %34, 0
  94.   br i1 %35, label %36, label %38
  95.  
  96. 36:                                               ; preds = %31
  97.   %37 = load i32, i32* %6, align 4
  98.   store i32 %37, i32* %3, align 4
  99.   br label %41
  100.  
  101. 38:                                               ; preds = %31, %26
  102.   %39 = load i32, i32* %6, align 4
  103.   %40 = add nsw i32 %39, 1
  104.   store i32 %40, i32* %6, align 4
  105.   br label %26
  106.  
  107. 41:                                               ; preds = %36, %14, %9
  108.   %42 = load i32, i32* %3, align 4
  109.   ret i32 %42
  110. }
  111.  
  112. ; Function Attrs: noinline nounwind optnone uwtable
  113. define dso_local i32 @reduce(i32 (i32, i32)* noundef %0, i32* noundef %1, i32 noundef %2) #0 {
  114.   %4 = alloca i32, align 4
  115.   %5 = alloca i32 (i32, i32)*, align 8
  116.   %6 = alloca i32*, align 8
  117.   %7 = alloca i32, align 4
  118.   %8 = alloca i32, align 4
  119.   %9 = alloca i32, align 4
  120.   store i32 (i32, i32)* %0, i32 (i32, i32)** %5, align 8
  121.   store i32* %1, i32** %6, align 8
  122.   store i32 %2, i32* %7, align 4
  123.   %10 = load i32, i32* %7, align 4
  124.   %11 = icmp sle i32 %10, 0
  125.   br i1 %11, label %12, label %13
  126.  
  127. 12:                                               ; preds = %3
  128.   store i32 0, i32* %4, align 4
  129.   br label %42
  130.  
  131. 13:                                               ; preds = %3
  132.   %14 = load i32, i32* %7, align 4
  133.   %15 = icmp eq i32 %14, 1
  134.   br i1 %15, label %16, label %20
  135.  
  136. 16:                                               ; preds = %13
  137.   %17 = load i32*, i32** %6, align 8
  138.   %18 = getelementptr inbounds i32, i32* %17, i64 0
  139.   %19 = load i32, i32* %18, align 4
  140.   store i32 %19, i32* %4, align 4
  141.   br label %42
  142.  
  143. 20:                                               ; preds = %13
  144.   %21 = load i32*, i32** %6, align 8
  145.   %22 = getelementptr inbounds i32, i32* %21, i64 0
  146.   %23 = load i32, i32* %22, align 4
  147.   store i32 %23, i32* %8, align 4
  148.   store i32 1, i32* %9, align 4
  149.   br label %24
  150.  
  151. 24:                                               ; preds = %37, %20
  152.   %25 = load i32, i32* %9, align 4
  153.   %26 = load i32, i32* %7, align 4
  154.   %27 = icmp slt i32 %25, %26
  155.   br i1 %27, label %28, label %40
  156.  
  157. 28:                                               ; preds = %24
  158.   %29 = load i32 (i32, i32)*, i32 (i32, i32)** %5, align 8
  159.   %30 = load i32, i32* %8, align 4
  160.   %31 = load i32*, i32** %6, align 8
  161.   %32 = load i32, i32* %9, align 4
  162.   %33 = sext i32 %32 to i64
  163.   %34 = getelementptr inbounds i32, i32* %31, i64 %33
  164.   %35 = load i32, i32* %34, align 4
  165.   %36 = call i32 %29(i32 noundef %30, i32 noundef %35)
  166.   store i32 %36, i32* %8, align 4
  167.   br label %37
  168.  
  169. 37:                                               ; preds = %28
  170.   %38 = load i32, i32* %9, align 4
  171.   %39 = add nsw i32 %38, 1
  172.   store i32 %39, i32* %9, align 4
  173.   br label %24, !llvm.loop !6
  174.  
  175. 40:                                               ; preds = %24
  176.   %41 = load i32, i32* %8, align 4
  177.   store i32 %41, i32* %4, align 4
  178.   br label %42
  179.  
  180. 42:                                               ; preds = %40, %16, %12
  181.   %43 = load i32, i32* %4, align 4
  182.   ret i32 %43
  183. }
  184.  
  185. ; Function Attrs: noinline nounwind optnone uwtable
  186. define dso_local i32 @comparePid(i8* noundef %0, i8* noundef %1) #0 {
  187.   %3 = alloca i32, align 4
  188.   %4 = alloca i8*, align 8
  189.   %5 = alloca i8*, align 8
  190.   %6 = alloca %struct.processStruct, align 4
  191.   %7 = alloca %struct.processStruct, align 4
  192.   store i8* %0, i8** %4, align 8
  193.   store i8* %1, i8** %5, align 8
  194.   %8 = load i8*, i8** %4, align 8
  195.   %9 = bitcast i8* %8 to %struct.processStruct*
  196.   %10 = bitcast %struct.processStruct* %6 to i8*
  197.   %11 = bitcast %struct.processStruct* %9 to i8*
  198.   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %10, i8* align 4 %11, i64 24, i1 false)
  199.   %12 = load i8*, i8** %5, align 8
  200.   %13 = bitcast i8* %12 to %struct.processStruct*
  201.   %14 = bitcast %struct.processStruct* %7 to i8*
  202.   %15 = bitcast %struct.processStruct* %13 to i8*
  203.   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %14, i8* align 4 %15, i64 24, i1 false)
  204.   %16 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %6, i32 0, i32 4
  205.   %17 = load i32, i32* %16, align 4
  206.   %18 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %7, i32 0, i32 4
  207.   %19 = load i32, i32* %18, align 4
  208.   %20 = icmp sgt i32 %17, %19
  209.   br i1 %20, label %21, label %22
  210.  
  211. 21:                                               ; preds = %2
  212.   store i32 1, i32* %3, align 4
  213.   br label %45
  214.  
  215. 22:                                               ; preds = %2
  216.   %23 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %6, i32 0, i32 4
  217.   %24 = load i32, i32* %23, align 4
  218.   %25 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %7, i32 0, i32 4
  219.   %26 = load i32, i32* %25, align 4
  220.   %27 = icmp eq i32 %24, %26
  221.   br i1 %27, label %28, label %44
  222.  
  223. 28:                                               ; preds = %22
  224.   %29 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %6, i32 0, i32 2
  225.   %30 = load i32, i32* %29, align 4
  226.   %31 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %7, i32 0, i32 2
  227.   %32 = load i32, i32* %31, align 4
  228.   %33 = icmp slt i32 %30, %32
  229.   br i1 %33, label %34, label %35
  230.  
  231. 34:                                               ; preds = %28
  232.   store i32 -1, i32* %3, align 4
  233.   br label %45
  234.  
  235. 35:                                               ; preds = %28
  236.   %36 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %6, i32 0, i32 2
  237.   %37 = load i32, i32* %36, align 4
  238.   %38 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %7, i32 0, i32 2
  239.   %39 = load i32, i32* %38, align 4
  240.   %40 = icmp sgt i32 %37, %39
  241.   br i1 %40, label %41, label %42
  242.  
  243. 41:                                               ; preds = %35
  244.   store i32 1, i32* %3, align 4
  245.   br label %45
  246.  
  247. 42:                                               ; preds = %35
  248.   br label %43
  249.  
  250. 43:                                               ; preds = %42
  251.   store i32 0, i32* %3, align 4
  252.   br label %45
  253.  
  254. 44:                                               ; preds = %22
  255.   store i32 -1, i32* %3, align 4
  256.   br label %45
  257.  
  258. 45:                                               ; preds = %44, %43, %41, %34, %21
  259.   %46 = load i32, i32* %3, align 4
  260.   ret i32 %46
  261. }
  262.  
  263. ; Function Attrs: argmemonly nofree nounwind willreturn
  264. declare void @llvm.memcpy.p0i8.p0i8.i64(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i64, i1 immarg) #1
  265.  
  266. ; Function Attrs: noinline nounwind optnone uwtable
  267. define dso_local void @addProcess(%struct.readyQueue* noalias sret(%struct.readyQueue) align 8 %0, %struct.readyQueue* noundef byval(%struct.readyQueue) align 8 %1, i32 noundef %2) #0 {
  268.   %4 = alloca i32, align 4
  269.   store i32 %2, i32* %4, align 4
  270.   %5 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 4
  271.   %6 = load i32, i32* %5, align 8
  272.   %7 = add nsw i32 %6, 1
  273.   store i32 %7, i32* %5, align 8
  274.   %8 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 0
  275.   %9 = load %struct.processStruct*, %struct.processStruct** %8, align 8
  276.   %10 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 4
  277.   %11 = load i32, i32* %10, align 8
  278.   %12 = sub nsw i32 %11, 1
  279.   %13 = sext i32 %12 to i64
  280.   %14 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %9, i64 %13
  281.   %15 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 1
  282.   %16 = load %struct.processStruct*, %struct.processStruct** %15, align 8
  283.   %17 = load i32, i32* %4, align 4
  284.   %18 = sext i32 %17 to i64
  285.   %19 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %16, i64 %18
  286.   %20 = bitcast %struct.processStruct* %14 to i8*
  287.   %21 = bitcast %struct.processStruct* %19 to i8*
  288.   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %20, i8* align 4 %21, i64 24, i1 false)
  289.   %22 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 6
  290.   %23 = load i32, i32* %22, align 8
  291.   %24 = add nsw i32 %23, 1
  292.   store i32 %24, i32* %22, align 8
  293.   %25 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 5
  294.   %26 = load i32, i32* %25, align 4
  295.   %27 = add nsw i32 %26, 1
  296.   store i32 %27, i32* %25, align 4
  297.   %28 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 5
  298.   %29 = load i32, i32* %28, align 4
  299.   %30 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 3
  300.   %31 = load i32, i32* %30, align 4
  301.   %32 = icmp sge i32 %29, %31
  302.   br i1 %32, label %33, label %35
  303.  
  304. 33:                                               ; preds = %3
  305.   %34 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 5
  306.   store i32 0, i32* %34, align 4
  307.   br label %35
  308.  
  309. 35:                                               ; preds = %33, %3
  310.   %36 = bitcast %struct.readyQueue* %0 to i8*
  311.   %37 = bitcast %struct.readyQueue* %1 to i8*
  312.   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %36, i8* align 8 %37, i64 56, i1 false)
  313.   ret void
  314. }
  315.  
  316. ; Function Attrs: noinline nounwind optnone uwtable
  317. define dso_local void @scheduleNearestDeadline(%struct.readyQueue* noalias sret(%struct.readyQueue) align 8 %0, %struct.readyQueue* noundef byval(%struct.readyQueue) align 8 %1) #0 {
  318.   %3 = alloca i32, align 4
  319.   %4 = alloca i32, align 4
  320.   %5 = alloca i32, align 4
  321.   %6 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 2
  322.   store i32 0, i32* %6, align 8
  323.   %7 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 0
  324.   %8 = load %struct.processStruct*, %struct.processStruct** %7, align 8
  325.   %9 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 2
  326.   %10 = load i32, i32* %9, align 8
  327.   %11 = sext i32 %10 to i64
  328.   %12 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %8, i64 %11
  329.   %13 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %12, i32 0, i32 3
  330.   %14 = load i32, i32* %13, align 4
  331.   store i32 %14, i32* %3, align 4
  332.   store i32 -1, i32* %4, align 4
  333.   store i32 0, i32* %5, align 4
  334.   br label %15
  335.  
  336. 15:                                               ; preds = %40, %2
  337.   %16 = load i32, i32* %5, align 4
  338.   %17 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 4
  339.   %18 = load i32, i32* %17, align 8
  340.   %19 = icmp slt i32 %16, %18
  341.   br i1 %19, label %20, label %43
  342.  
  343. 20:                                               ; preds = %15
  344.   %21 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 0
  345.   %22 = load %struct.processStruct*, %struct.processStruct** %21, align 8
  346.   %23 = load i32, i32* %5, align 4
  347.   %24 = sext i32 %23 to i64
  348.   %25 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %22, i64 %24
  349.   %26 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %25, i32 0, i32 3
  350.   %27 = load i32, i32* %26, align 4
  351.   %28 = load i32, i32* %3, align 4
  352.   %29 = icmp slt i32 %27, %28
  353.   br i1 %29, label %30, label %39
  354.  
  355. 30:                                               ; preds = %20
  356.   %31 = load i32, i32* %5, align 4
  357.   store i32 %31, i32* %4, align 4
  358.   %32 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 0
  359.   %33 = load %struct.processStruct*, %struct.processStruct** %32, align 8
  360.   %34 = load i32, i32* %5, align 4
  361.   %35 = sext i32 %34 to i64
  362.   %36 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %33, i64 %35
  363.   %37 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %36, i32 0, i32 3
  364.   %38 = load i32, i32* %37, align 4
  365.   store i32 %38, i32* %3, align 4
  366.   br label %39
  367.  
  368. 39:                                               ; preds = %30, %20
  369.   br label %40
  370.  
  371. 40:                                               ; preds = %39
  372.   %41 = load i32, i32* %5, align 4
  373.   %42 = add nsw i32 %41, 1
  374.   store i32 %42, i32* %5, align 4
  375.   br label %15, !llvm.loop !8
  376.  
  377. 43:                                               ; preds = %15
  378.   %44 = load i32, i32* %4, align 4
  379.   %45 = icmp eq i32 %44, -1
  380.   br i1 %45, label %46, label %49
  381.  
  382. 46:                                               ; preds = %43
  383.   %47 = bitcast %struct.readyQueue* %0 to i8*
  384.   %48 = bitcast %struct.readyQueue* %1 to i8*
  385.   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %47, i8* align 8 %48, i64 56, i1 false)
  386.   br label %54
  387.  
  388. 49:                                               ; preds = %43
  389.   %50 = load i32, i32* %4, align 4
  390.   %51 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 2
  391.   store i32 %50, i32* %51, align 8
  392.   %52 = bitcast %struct.readyQueue* %0 to i8*
  393.   %53 = bitcast %struct.readyQueue* %1 to i8*
  394.   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %52, i8* align 8 %53, i64 56, i1 false)
  395.   br label %54
  396.  
  397. 54:                                               ; preds = %49, %46
  398.   ret void
  399. }
  400.  
  401. ; Function Attrs: noinline nounwind optnone uwtable
  402. define dso_local void @preempt(%struct.readyQueue* noalias sret(%struct.readyQueue) align 8 %0, %struct.readyQueue* noundef byval(%struct.readyQueue) align 8 %1) #0 {
  403.   %3 = alloca i32, align 4
  404.   %4 = alloca i32, align 4
  405.   %5 = alloca i32, align 4
  406.   %6 = alloca i32, align 4
  407.   %7 = alloca i32, align 4
  408.   store i32 0, i32* %3, align 4
  409.   store i32 0, i32* %4, align 4
  410.   br label %8
  411.  
  412. 8:                                                ; preds = %24, %2
  413.   %9 = load i32, i32* %4, align 4
  414.   %10 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 4
  415.   %11 = load i32, i32* %10, align 8
  416.   %12 = icmp slt i32 %9, %11
  417.   br i1 %12, label %13, label %27
  418.  
  419. 13:                                               ; preds = %8
  420.   %14 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 0
  421.   %15 = load %struct.processStruct*, %struct.processStruct** %14, align 8
  422.   %16 = load i32, i32* %4, align 4
  423.   %17 = sext i32 %16 to i64
  424.   %18 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %15, i64 %17
  425.   %19 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %18, i32 0, i32 5
  426.   %20 = load i32, i32* %19, align 4
  427.   %21 = icmp eq i32 %20, 1
  428.   br i1 %21, label %22, label %23
  429.  
  430. 22:                                               ; preds = %13
  431.   store i32 1, i32* %3, align 4
  432.   br label %23
  433.  
  434. 23:                                               ; preds = %22, %13
  435.   br label %24
  436.  
  437. 24:                                               ; preds = %23
  438.   %25 = load i32, i32* %4, align 4
  439.   %26 = add nsw i32 %25, 1
  440.   store i32 %26, i32* %4, align 4
  441.   br label %8, !llvm.loop !9
  442.  
  443. 27:                                               ; preds = %8
  444.   %28 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 0
  445.   %29 = load %struct.processStruct*, %struct.processStruct** %28, align 8
  446.   %30 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 2
  447.   %31 = load i32, i32* %30, align 8
  448.   %32 = sext i32 %31 to i64
  449.   %33 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %29, i64 %32
  450.   %34 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %33, i32 0, i32 3
  451.   %35 = load i32, i32* %34, align 4
  452.   store i32 %35, i32* %5, align 4
  453.   store i32 -1, i32* %6, align 4
  454.   store i32 0, i32* %7, align 4
  455.   br label %36
  456.  
  457. 36:                                               ; preds = %61, %27
  458.   %37 = load i32, i32* %7, align 4
  459.   %38 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 4
  460.   %39 = load i32, i32* %38, align 8
  461.   %40 = icmp slt i32 %37, %39
  462.   br i1 %40, label %41, label %64
  463.  
  464. 41:                                               ; preds = %36
  465.   %42 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 0
  466.   %43 = load %struct.processStruct*, %struct.processStruct** %42, align 8
  467.   %44 = load i32, i32* %7, align 4
  468.   %45 = sext i32 %44 to i64
  469.   %46 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %43, i64 %45
  470.   %47 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %46, i32 0, i32 3
  471.   %48 = load i32, i32* %47, align 4
  472.   %49 = load i32, i32* %5, align 4
  473.   %50 = icmp slt i32 %48, %49
  474.   br i1 %50, label %51, label %60
  475.  
  476. 51:                                               ; preds = %41
  477.   %52 = load i32, i32* %7, align 4
  478.   store i32 %52, i32* %6, align 4
  479.   %53 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 0
  480.   %54 = load %struct.processStruct*, %struct.processStruct** %53, align 8
  481.   %55 = load i32, i32* %7, align 4
  482.   %56 = sext i32 %55 to i64
  483.   %57 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %54, i64 %56
  484.   %58 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %57, i32 0, i32 3
  485.   %59 = load i32, i32* %58, align 4
  486.   store i32 %59, i32* %5, align 4
  487.   br label %60
  488.  
  489. 60:                                               ; preds = %51, %41
  490.   br label %61
  491.  
  492. 61:                                               ; preds = %60
  493.   %62 = load i32, i32* %7, align 4
  494.   %63 = add nsw i32 %62, 1
  495.   store i32 %63, i32* %7, align 4
  496.   br label %36, !llvm.loop !10
  497.  
  498. 64:                                               ; preds = %36
  499.   %65 = load i32, i32* %6, align 4
  500.   %66 = icmp eq i32 %65, -1
  501.   br i1 %66, label %67, label %74
  502.  
  503. 67:                                               ; preds = %64
  504.   %68 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 8
  505.   %69 = getelementptr inbounds [4 x i32], [4 x i32]* %68, i64 0, i64 0
  506.   store i32 -1, i32* %69, align 8
  507.   %70 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 8
  508.   %71 = getelementptr inbounds [4 x i32], [4 x i32]* %70, i64 0, i64 1
  509.   store i32 -1, i32* %71, align 4
  510.   %72 = bitcast %struct.readyQueue* %0 to i8*
  511.   %73 = bitcast %struct.readyQueue* %1 to i8*
  512.   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %72, i8* align 8 %73, i64 56, i1 false)
  513.   br label %110
  514.  
  515. 74:                                               ; preds = %64
  516.   %75 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 0
  517.   %76 = load %struct.processStruct*, %struct.processStruct** %75, align 8
  518.   %77 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 2
  519.   %78 = load i32, i32* %77, align 8
  520.   %79 = sext i32 %78 to i64
  521.   %80 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %76, i64 %79
  522.   %81 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %80, i32 0, i32 4
  523.   %82 = load i32, i32* %81, align 4
  524.   %83 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 8
  525.   %84 = getelementptr inbounds [4 x i32], [4 x i32]* %83, i64 0, i64 0
  526.   store i32 %82, i32* %84, align 8
  527.   %85 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 0
  528.   %86 = load %struct.processStruct*, %struct.processStruct** %85, align 8
  529.   %87 = load i32, i32* %6, align 4
  530.   %88 = sext i32 %87 to i64
  531.   %89 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %86, i64 %88
  532.   %90 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %89, i32 0, i32 4
  533.   %91 = load i32, i32* %90, align 4
  534.   %92 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 8
  535.   %93 = getelementptr inbounds [4 x i32], [4 x i32]* %92, i64 0, i64 1
  536.   store i32 %91, i32* %93, align 4
  537.   %94 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 8
  538.   %95 = getelementptr inbounds [4 x i32], [4 x i32]* %94, i64 0, i64 2
  539.   store i32 1, i32* %95, align 8
  540.   %96 = load i32, i32* %3, align 4
  541.   %97 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 8
  542.   %98 = getelementptr inbounds [4 x i32], [4 x i32]* %97, i64 0, i64 3
  543.   store i32 %96, i32* %98, align 4
  544.   %99 = load i32, i32* %6, align 4
  545.   %100 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 2
  546.   store i32 %99, i32* %100, align 8
  547.   %101 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 0
  548.   %102 = load %struct.processStruct*, %struct.processStruct** %101, align 8
  549.   %103 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 2
  550.   %104 = load i32, i32* %103, align 8
  551.   %105 = sext i32 %104 to i64
  552.   %106 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %102, i64 %105
  553.   %107 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %106, i32 0, i32 5
  554.   store i32 0, i32* %107, align 4
  555.   %108 = bitcast %struct.readyQueue* %0 to i8*
  556.   %109 = bitcast %struct.readyQueue* %1 to i8*
  557.   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %108, i8* align 8 %109, i64 56, i1 false)
  558.   br label %110
  559.  
  560. 110:                                              ; preds = %74, %67
  561.   ret void
  562. }
  563.  
  564. ; Function Attrs: noinline nounwind optnone uwtable
  565. define dso_local void @removeProcess(%struct.readyQueue* noalias sret(%struct.readyQueue) align 8 %0, %struct.readyQueue* noundef byval(%struct.readyQueue) align 8 %1, i32 noundef %2) #0 {
  566.   %4 = alloca i32, align 4
  567.   %5 = alloca %struct.processStruct*, align 8
  568.   %6 = alloca i32, align 4
  569.   %7 = alloca i32, align 4
  570.   store i32 %2, i32* %4, align 4
  571.   %8 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 4
  572.   %9 = load i32, i32* %8, align 8
  573.   %10 = sub nsw i32 %9, 1
  574.   %11 = sext i32 %10 to i64
  575.   %12 = mul i64 %11, 24
  576.   %13 = call noalias i8* @malloc(i64 noundef %12) #7
  577.   %14 = bitcast i8* %13 to %struct.processStruct*
  578.   store %struct.processStruct* %14, %struct.processStruct** %5, align 8
  579.   store i32 0, i32* %6, align 4
  580.   br label %15
  581.  
  582. 15:                                               ; preds = %31, %3
  583.   %16 = load i32, i32* %6, align 4
  584.   %17 = load i32, i32* %4, align 4
  585.   %18 = icmp slt i32 %16, %17
  586.   br i1 %18, label %19, label %34
  587.  
  588. 19:                                               ; preds = %15
  589.   %20 = load %struct.processStruct*, %struct.processStruct** %5, align 8
  590.   %21 = load i32, i32* %6, align 4
  591.   %22 = sext i32 %21 to i64
  592.   %23 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %20, i64 %22
  593.   %24 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 0
  594.   %25 = load %struct.processStruct*, %struct.processStruct** %24, align 8
  595.   %26 = load i32, i32* %6, align 4
  596.   %27 = sext i32 %26 to i64
  597.   %28 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %25, i64 %27
  598.   %29 = bitcast %struct.processStruct* %23 to i8*
  599.   %30 = bitcast %struct.processStruct* %28 to i8*
  600.   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %29, i8* align 4 %30, i64 24, i1 false)
  601.   br label %31
  602.  
  603. 31:                                               ; preds = %19
  604.   %32 = load i32, i32* %6, align 4
  605.   %33 = add nsw i32 %32, 1
  606.   store i32 %33, i32* %6, align 4
  607.   br label %15, !llvm.loop !11
  608.  
  609. 34:                                               ; preds = %15
  610.   %35 = load i32, i32* %4, align 4
  611.   %36 = add nsw i32 %35, 1
  612.   store i32 %36, i32* %7, align 4
  613.   br label %37
  614.  
  615. 37:                                               ; preds = %55, %34
  616.   %38 = load i32, i32* %7, align 4
  617.   %39 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 4
  618.   %40 = load i32, i32* %39, align 8
  619.   %41 = icmp slt i32 %38, %40
  620.   br i1 %41, label %42, label %58
  621.  
  622. 42:                                               ; preds = %37
  623.   %43 = load %struct.processStruct*, %struct.processStruct** %5, align 8
  624.   %44 = load i32, i32* %7, align 4
  625.   %45 = sub nsw i32 %44, 1
  626.   %46 = sext i32 %45 to i64
  627.   %47 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %43, i64 %46
  628.   %48 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 0
  629.   %49 = load %struct.processStruct*, %struct.processStruct** %48, align 8
  630.   %50 = load i32, i32* %7, align 4
  631.   %51 = sext i32 %50 to i64
  632.   %52 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %49, i64 %51
  633.   %53 = bitcast %struct.processStruct* %47 to i8*
  634.   %54 = bitcast %struct.processStruct* %52 to i8*
  635.   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %53, i8* align 4 %54, i64 24, i1 false)
  636.   br label %55
  637.  
  638. 55:                                               ; preds = %42
  639.   %56 = load i32, i32* %7, align 4
  640.   %57 = add nsw i32 %56, 1
  641.   store i32 %57, i32* %7, align 4
  642.   br label %37, !llvm.loop !12
  643.  
  644. 58:                                               ; preds = %37
  645.   %59 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 4
  646.   %60 = load i32, i32* %59, align 8
  647.   %61 = add nsw i32 %60, -1
  648.   store i32 %61, i32* %59, align 8
  649.   %62 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 0
  650.   %63 = load %struct.processStruct*, %struct.processStruct** %62, align 8
  651.   %64 = bitcast %struct.processStruct* %63 to i8*
  652.   %65 = load %struct.processStruct*, %struct.processStruct** %5, align 8
  653.   %66 = bitcast %struct.processStruct* %65 to i8*
  654.   %67 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 4
  655.   %68 = load i32, i32* %67, align 8
  656.   %69 = sext i32 %68 to i64
  657.   %70 = mul i64 %69, 24
  658.   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %64, i8* align 4 %66, i64 %70, i1 false)
  659.   %71 = load %struct.processStruct*, %struct.processStruct** %5, align 8
  660.   %72 = bitcast %struct.processStruct* %71 to i8*
  661.   call void @free(i8* noundef %72) #7
  662.   %73 = bitcast %struct.readyQueue* %0 to i8*
  663.   %74 = bitcast %struct.readyQueue* %1 to i8*
  664.   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %73, i8* align 8 %74, i64 56, i1 false)
  665.   ret void
  666. }
  667.  
  668. ; Function Attrs: nounwind
  669. declare noalias i8* @malloc(i64 noundef) #2
  670.  
  671. ; Function Attrs: nounwind
  672. declare void @free(i8* noundef) #2
  673.  
  674. ; Function Attrs: noinline nounwind optnone uwtable
  675. define dso_local i8* @buildString(i8* noundef %0, %struct.readyQueue* noundef byval(%struct.readyQueue) align 8 %1) #0 {
  676.   %3 = alloca i8*, align 8
  677.   %4 = alloca [20 x i8], align 16
  678.   %5 = alloca i32, align 4
  679.   store i8* %0, i8** %3, align 8
  680.   %6 = load i8*, i8** %3, align 8
  681.   %7 = call i8* @strcat(i8* noundef %6, i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0)) #7
  682.   store i32 0, i32* %5, align 4
  683.   br label %8
  684.  
  685. 8:                                                ; preds = %52, %2
  686.   %9 = load i32, i32* %5, align 4
  687.   %10 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 4
  688.   %11 = load i32, i32* %10, align 8
  689.   %12 = icmp slt i32 %9, %11
  690.   br i1 %12, label %13, label %55
  691.  
  692. 13:                                               ; preds = %8
  693.   %14 = getelementptr inbounds [20 x i8], [20 x i8]* %4, i64 0, i64 0
  694.   %15 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 0
  695.   %16 = load %struct.processStruct*, %struct.processStruct** %15, align 8
  696.   %17 = load i32, i32* %5, align 4
  697.   %18 = sext i32 %17 to i64
  698.   %19 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %16, i64 %18
  699.   %20 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %19, i32 0, i32 4
  700.   %21 = load i32, i32* %20, align 4
  701.   %22 = call i32 (i8*, i8*, ...) @sprintf(i8* noundef %14, i8* noundef getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32 noundef %21) #7
  702.   %23 = load i8*, i8** %3, align 8
  703.   %24 = getelementptr inbounds [20 x i8], [20 x i8]* %4, i64 0, i64 0
  704.   %25 = call i8* @strcat(i8* noundef %23, i8* noundef %24) #7
  705.   %26 = load i8*, i8** %3, align 8
  706.   %27 = call i8* @strcat(i8* noundef %26, i8* noundef getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0)) #7
  707.   %28 = bitcast [20 x i8]* %4 to i8*
  708.   call void @llvm.memset.p0i8.i64(i8* align 16 %28, i8 0, i64 20, i1 false)
  709.   %29 = getelementptr inbounds [20 x i8], [20 x i8]* %4, i64 0, i64 0
  710.   %30 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 0
  711.   %31 = load %struct.processStruct*, %struct.processStruct** %30, align 8
  712.   %32 = load i32, i32* %5, align 4
  713.   %33 = sext i32 %32 to i64
  714.   %34 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %31, i64 %33
  715.   %35 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %34, i32 0, i32 2
  716.   %36 = load i32, i32* %35, align 4
  717.   %37 = call i32 (i8*, i8*, ...) @sprintf(i8* noundef %29, i8* noundef getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32 noundef %36) #7
  718.   %38 = load i8*, i8** %3, align 8
  719.   %39 = getelementptr inbounds [20 x i8], [20 x i8]* %4, i64 0, i64 0
  720.   %40 = call i8* @strcat(i8* noundef %38, i8* noundef %39) #7
  721.   %41 = load i8*, i8** %3, align 8
  722.   %42 = call i8* @strcat(i8* noundef %41, i8* noundef getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0)) #7
  723.   %43 = load i32, i32* %5, align 4
  724.   %44 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %1, i32 0, i32 4
  725.   %45 = load i32, i32* %44, align 8
  726.   %46 = sub nsw i32 %45, 1
  727.   %47 = icmp ne i32 %43, %46
  728.   br i1 %47, label %48, label %51
  729.  
  730. 48:                                               ; preds = %13
  731.   %49 = load i8*, i8** %3, align 8
  732.   %50 = call i8* @strcat(i8* noundef %49, i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.4, i64 0, i64 0)) #7
  733.   br label %51
  734.  
  735. 51:                                               ; preds = %48, %13
  736.   br label %52
  737.  
  738. 52:                                               ; preds = %51
  739.   %53 = load i32, i32* %5, align 4
  740.   %54 = add nsw i32 %53, 1
  741.   store i32 %54, i32* %5, align 4
  742.   br label %8, !llvm.loop !13
  743.  
  744. 55:                                               ; preds = %8
  745.   %56 = load i8*, i8** %3, align 8
  746.   ret i8* %56
  747. }
  748.  
  749. ; Function Attrs: nounwind
  750. declare i8* @strcat(i8* noundef, i8* noundef) #2
  751.  
  752. ; Function Attrs: nounwind
  753. declare i32 @sprintf(i8* noundef, i8* noundef, ...) #2
  754.  
  755. ; Function Attrs: argmemonly nofree nounwind willreturn writeonly
  756. declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i1 immarg) #3
  757.  
  758. ; Function Attrs: noinline nounwind optnone uwtable
  759. define dso_local i32 @main(i32 noundef %0, i8** noundef %1) #0 {
  760.   %3 = alloca i32, align 4
  761.   %4 = alloca i32, align 4
  762.   %5 = alloca i8**, align 8
  763.   %6 = alloca i32, align 4
  764.   %7 = alloca i8*, align 8
  765.   %8 = alloca i64, align 8
  766.   %9 = alloca i64, align 8
  767.   %10 = alloca i64, align 8
  768.   %11 = alloca i64, align 8
  769.   %12 = alloca %struct.readyQueue, align 8
  770.   %13 = alloca i32, align 4
  771.   %14 = alloca i32, align 4
  772.   %15 = alloca [50000 x i8], align 16
  773.   %16 = alloca i32, align 4
  774.   %17 = alloca i32, align 4
  775.   %18 = alloca %struct.readyQueue, align 8
  776.   %19 = alloca i8*, align 8
  777.   %20 = alloca i64, align 8
  778.   %21 = alloca i32, align 4
  779.   %22 = alloca i64, align 8
  780.   %23 = alloca i32, align 4
  781.   %24 = alloca i32, align 4
  782.   %25 = alloca i32, align 4
  783.   %26 = alloca %struct.readyQueue, align 8
  784.   %27 = alloca i32, align 4
  785.   %28 = alloca %struct.readyQueue, align 8
  786.   %29 = alloca %struct.readyQueue, align 8
  787.   %30 = alloca float, align 4
  788.   store i32 0, i32* %3, align 4
  789.   store i32 %0, i32* %4, align 4
  790.   store i8** %1, i8*** %5, align 8
  791.   %31 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([44 x i8], [44 x i8]* @.str.5, i64 0, i64 0))
  792.   %32 = call i32 (i8*, ...) @__isoc99_scanf(i8* noundef getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* noundef %6)
  793.   %33 = load i32, i32* %6, align 4
  794.   %34 = mul nsw i32 %33, 1000
  795.   %35 = zext i32 %34 to i64
  796.   %36 = call i8* @llvm.stacksave()
  797.   store i8* %36, i8** %7, align 8
  798.   %37 = alloca %struct.processStruct, i64 %35, align 16
  799.   store i64 %35, i64* %8, align 8
  800.   %38 = load i32, i32* %6, align 4
  801.   %39 = zext i32 %38 to i64
  802.   %40 = alloca %struct.processStruct, i64 %39, align 16
  803.   store i64 %39, i64* %9, align 8
  804.   %41 = load i32, i32* %6, align 4
  805.   %42 = zext i32 %41 to i64
  806.   %43 = alloca i32, i64 %42, align 16
  807.   store i64 %42, i64* %10, align 8
  808.   %44 = load i32, i32* %6, align 4
  809.   %45 = zext i32 %44 to i64
  810.   %46 = alloca i32, i64 %45, align 16
  811.   store i64 %45, i64* %11, align 8
  812.   %47 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 0
  813.   store %struct.processStruct* %37, %struct.processStruct** %47, align 8
  814.   %48 = load i32, i32* %6, align 4
  815.   %49 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 4
  816.   store i32 %48, i32* %49, align 8
  817.   store i32 0, i32* %13, align 4
  818.   br label %50
  819.  
  820. 50:                                               ; preds = %129, %2
  821.   %51 = load i32, i32* %13, align 4
  822.   %52 = load i32, i32* %6, align 4
  823.   %53 = icmp slt i32 %51, %52
  824.   br i1 %53, label %54, label %132
  825.  
  826. 54:                                               ; preds = %50
  827.   %55 = load i32, i32* %13, align 4
  828.   %56 = add nsw i32 %55, 1
  829.   %57 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([7 x i8], [7 x i8]* @.str.6, i64 0, i64 0), i8* noundef getelementptr inbounds ([31 x i8], [31 x i8]* @.str.7, i64 0, i64 0), i32 noundef %56, i8* noundef getelementptr inbounds ([3 x i8], [3 x i8]* @.str.8, i64 0, i64 0))
  830.   %58 = load i32, i32* %13, align 4
  831.   %59 = sext i32 %58 to i64
  832.   %60 = getelementptr inbounds i32, i32* %43, i64 %59
  833.   %61 = call i32 (i8*, ...) @__isoc99_scanf(i8* noundef getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* noundef %60)
  834.   %62 = load i32, i32* %13, align 4
  835.   %63 = sext i32 %62 to i64
  836.   %64 = getelementptr inbounds i32, i32* %43, i64 %63
  837.   %65 = load i32, i32* %64, align 4
  838.   %66 = load i32, i32* %13, align 4
  839.   %67 = sext i32 %66 to i64
  840.   %68 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %37, i64 %67
  841.   %69 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %68, i32 0, i32 0
  842.   store i32 %65, i32* %69, align 8
  843.   %70 = load i32, i32* %13, align 4
  844.   %71 = sext i32 %70 to i64
  845.   %72 = getelementptr inbounds i32, i32* %43, i64 %71
  846.   %73 = load i32, i32* %72, align 4
  847.   %74 = load i32, i32* %13, align 4
  848.   %75 = sext i32 %74 to i64
  849.   %76 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %37, i64 %75
  850.   %77 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %76, i32 0, i32 2
  851.   store i32 %73, i32* %77, align 8
  852.   %78 = load i32, i32* %13, align 4
  853.   %79 = add nsw i32 %78, 1
  854.   %80 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([7 x i8], [7 x i8]* @.str.6, i64 0, i64 0), i8* noundef getelementptr inbounds ([29 x i8], [29 x i8]* @.str.9, i64 0, i64 0), i32 noundef %79, i8* noundef getelementptr inbounds ([3 x i8], [3 x i8]* @.str.8, i64 0, i64 0))
  855.   %81 = load i32, i32* %13, align 4
  856.   %82 = sext i32 %81 to i64
  857.   %83 = getelementptr inbounds i32, i32* %46, i64 %82
  858.   %84 = call i32 (i8*, ...) @__isoc99_scanf(i8* noundef getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* noundef %83)
  859.   %85 = load i32, i32* %13, align 4
  860.   %86 = sext i32 %85 to i64
  861.   %87 = getelementptr inbounds i32, i32* %46, i64 %86
  862.   %88 = load i32, i32* %87, align 4
  863.   %89 = load i32, i32* %13, align 4
  864.   %90 = sext i32 %89 to i64
  865.   %91 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %37, i64 %90
  866.   %92 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %91, i32 0, i32 1
  867.   store i32 %88, i32* %92, align 4
  868.   %93 = load i32, i32* %13, align 4
  869.   %94 = sext i32 %93 to i64
  870.   %95 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %37, i64 %94
  871.   %96 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %95, i32 0, i32 5
  872.   store i32 0, i32* %96, align 4
  873.   %97 = load i32, i32* %13, align 4
  874.   %98 = sext i32 %97 to i64
  875.   %99 = getelementptr inbounds i32, i32* %46, i64 %98
  876.   %100 = load i32, i32* %99, align 4
  877.   %101 = load i32, i32* %13, align 4
  878.   %102 = sext i32 %101 to i64
  879.   %103 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %37, i64 %102
  880.   %104 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %103, i32 0, i32 3
  881.   store i32 %100, i32* %104, align 4
  882.   %105 = load i32, i32* %13, align 4
  883.   %106 = add nsw i32 %105, 1
  884.   %107 = load i32, i32* %13, align 4
  885.   %108 = sext i32 %107 to i64
  886.   %109 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %37, i64 %108
  887.   %110 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %109, i32 0, i32 4
  888.   store i32 %106, i32* %110, align 8
  889.   %111 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 0
  890.   %112 = load %struct.processStruct*, %struct.processStruct** %111, align 8
  891.   %113 = load i32, i32* %13, align 4
  892.   %114 = sext i32 %113 to i64
  893.   %115 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %112, i64 %114
  894.   %116 = load i32, i32* %13, align 4
  895.   %117 = sext i32 %116 to i64
  896.   %118 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %37, i64 %117
  897.   %119 = bitcast %struct.processStruct* %115 to i8*
  898.   %120 = bitcast %struct.processStruct* %118 to i8*
  899.   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %119, i8* align 8 %120, i64 24, i1 false)
  900.   %121 = load i32, i32* %13, align 4
  901.   %122 = sext i32 %121 to i64
  902.   %123 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %40, i64 %122
  903.   %124 = load i32, i32* %13, align 4
  904.   %125 = sext i32 %124 to i64
  905.   %126 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %37, i64 %125
  906.   %127 = bitcast %struct.processStruct* %123 to i8*
  907.   %128 = bitcast %struct.processStruct* %126 to i8*
  908.   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %127, i8* align 8 %128, i64 24, i1 false)
  909.   br label %129
  910.  
  911. 129:                                              ; preds = %54
  912.   %130 = load i32, i32* %13, align 4
  913.   %131 = add nsw i32 %130, 1
  914.   store i32 %131, i32* %13, align 4
  915.   br label %50, !llvm.loop !14
  916.  
  917. 132:                                              ; preds = %50
  918.   %133 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 1
  919.   store %struct.processStruct* %40, %struct.processStruct** %133, align 8
  920.   %134 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 5
  921.   store i32 0, i32* %134, align 4
  922.   %135 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 2
  923.   store i32 0, i32* %135, align 8
  924.   %136 = load i32, i32* %6, align 4
  925.   %137 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 6
  926.   store i32 %136, i32* %137, align 8
  927.   %138 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 7
  928.   store i32 0, i32* %138, align 4
  929.   %139 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 8
  930.   %140 = getelementptr inbounds [4 x i32], [4 x i32]* %139, i64 0, i64 0
  931.   store i32 -1, i32* %140, align 8
  932.   %141 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 8
  933.   %142 = getelementptr inbounds [4 x i32], [4 x i32]* %141, i64 0, i64 1
  934.   store i32 -1, i32* %142, align 4
  935.   %143 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 8
  936.   %144 = getelementptr inbounds [4 x i32], [4 x i32]* %143, i64 0, i64 2
  937.   store i32 0, i32* %144, align 8
  938.   %145 = load i32, i32* %6, align 4
  939.   %146 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 3
  940.   store i32 %145, i32* %146, align 4
  941.   %147 = load i32, i32* %6, align 4
  942.   %148 = call i32 @reduce(i32 (i32, i32)* noundef @lcm, i32* noundef %46, i32 noundef %147)
  943.   store i32 %148, i32* %14, align 4
  944.   %149 = bitcast [50000 x i8]* %15 to i8*
  945.   call void @llvm.memset.p0i8.i64(i8* align 16 %149, i8 0, i64 50000, i1 false)
  946.   %150 = getelementptr inbounds [50000 x i8], [50000 x i8]* %15, i64 0, i64 0
  947.   %151 = call i8* @buildString(i8* noundef %150, %struct.readyQueue* noundef byval(%struct.readyQueue) align 8 %12)
  948.   %152 = getelementptr inbounds [50000 x i8], [50000 x i8]* %15, i64 0, i64 0
  949.   %153 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([6 x i8], [6 x i8]* @.str.10, i64 0, i64 0), i8* noundef getelementptr inbounds ([4 x i8], [4 x i8]* @.str.11, i64 0, i64 0), i8* noundef %152)
  950.   store i32 0, i32* %16, align 4
  951.   br label %154
  952.  
  953. 154:                                              ; preds = %461, %132
  954.   %155 = load i32, i32* %16, align 4
  955.   %156 = load i32, i32* %14, align 4
  956.   %157 = icmp slt i32 %155, %156
  957.   br i1 %157, label %158, label %464
  958.  
  959. 158:                                              ; preds = %154
  960.   store i32 0, i32* %17, align 4
  961.   %159 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 0
  962.   %160 = load %struct.processStruct*, %struct.processStruct** %159, align 8
  963.   %161 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 2
  964.   %162 = load i32, i32* %161, align 8
  965.   %163 = sext i32 %162 to i64
  966.   %164 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %160, i64 %163
  967.   %165 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %164, i32 0, i32 2
  968.   %166 = load i32, i32* %165, align 4
  969.   %167 = icmp eq i32 %166, 0
  970.   br i1 %167, label %168, label %185
  971.  
  972. 168:                                              ; preds = %158
  973.   %169 = load i32, i32* %16, align 4
  974.   %170 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 0
  975.   %171 = load %struct.processStruct*, %struct.processStruct** %170, align 8
  976.   %172 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 2
  977.   %173 = load i32, i32* %172, align 8
  978.   %174 = sext i32 %173 to i64
  979.   %175 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %171, i64 %174
  980.   %176 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %175, i32 0, i32 4
  981.   %177 = load i32, i32* %176, align 4
  982.   %178 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([10 x i8], [10 x i8]* @.str.12, i64 0, i64 0), i32 noundef %169, i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i64 0, i64 0), i32 noundef %177, i8* noundef getelementptr inbounds ([6 x i8], [6 x i8]* @.str.14, i64 0, i64 0))
  983.   %179 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 2
  984.   %180 = load i32, i32* %179, align 8
  985.   call void @removeProcess(%struct.readyQueue* sret(%struct.readyQueue) align 8 %18, %struct.readyQueue* noundef byval(%struct.readyQueue) align 8 %12, i32 noundef %180)
  986.   %181 = bitcast %struct.readyQueue* %12 to i8*
  987.   %182 = bitcast %struct.readyQueue* %18 to i8*
  988.   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %181, i8* align 8 %182, i64 56, i1 false)
  989.   store i32 1, i32* %17, align 4
  990.   %183 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 8
  991.   %184 = getelementptr inbounds [4 x i32], [4 x i32]* %183, i64 0, i64 3
  992.   store i32 0, i32* %184, align 4
  993.   br label %185
  994.  
  995. 185:                                              ; preds = %168, %158
  996.   %186 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 4
  997.   %187 = load i32, i32* %186, align 8
  998.   %188 = zext i32 %187 to i64
  999.   %189 = call i8* @llvm.stacksave()
  1000.   store i8* %189, i8** %19, align 8
  1001.   %190 = alloca %struct.processStruct, i64 %188, align 16
  1002.   store i64 %188, i64* %20, align 8
  1003.   store i32 0, i32* %21, align 4
  1004.   %191 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 4
  1005.   %192 = load i32, i32* %191, align 8
  1006.   %193 = zext i32 %192 to i64
  1007.   %194 = alloca i32, i64 %193, align 16
  1008.   store i64 %193, i64* %22, align 8
  1009.   store i32 0, i32* %23, align 4
  1010.   br label %195
  1011.  
  1012. 195:                                              ; preds = %253, %185
  1013.   %196 = load i32, i32* %23, align 4
  1014.   %197 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 4
  1015.   %198 = load i32, i32* %197, align 8
  1016.   %199 = icmp slt i32 %196, %198
  1017.   br i1 %199, label %200, label %256
  1018.  
  1019. 200:                                              ; preds = %195
  1020.   %201 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 0
  1021.   %202 = load %struct.processStruct*, %struct.processStruct** %201, align 8
  1022.   %203 = load i32, i32* %23, align 4
  1023.   %204 = sext i32 %203 to i64
  1024.   %205 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %202, i64 %204
  1025.   %206 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %205, i32 0, i32 3
  1026.   %207 = load i32, i32* %206, align 4
  1027.   %208 = add nsw i32 %207, -1
  1028.   store i32 %208, i32* %206, align 4
  1029.   %209 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 0
  1030.   %210 = load %struct.processStruct*, %struct.processStruct** %209, align 8
  1031.   %211 = load i32, i32* %23, align 4
  1032.   %212 = sext i32 %211 to i64
  1033.   %213 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %210, i64 %212
  1034.   %214 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %213, i32 0, i32 3
  1035.   %215 = load i32, i32* %214, align 4
  1036.   %216 = icmp eq i32 %215, 0
  1037.   br i1 %216, label %226, label %217
  1038.  
  1039. 217:                                              ; preds = %200
  1040.   %218 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 0
  1041.   %219 = load %struct.processStruct*, %struct.processStruct** %218, align 8
  1042.   %220 = load i32, i32* %23, align 4
  1043.   %221 = sext i32 %220 to i64
  1044.   %222 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %219, i64 %221
  1045.   %223 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %222, i32 0, i32 3
  1046.   %224 = load i32, i32* %223, align 4
  1047.   %225 = icmp eq i32 %224, -1
  1048.   br i1 %225, label %226, label %252
  1049.  
  1050. 226:                                              ; preds = %217, %200
  1051.   %227 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 0
  1052.   %228 = load %struct.processStruct*, %struct.processStruct** %227, align 8
  1053.   %229 = load i32, i32* %23, align 4
  1054.   %230 = sext i32 %229 to i64
  1055.   %231 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %228, i64 %230
  1056.   %232 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %231, i32 0, i32 2
  1057.   %233 = load i32, i32* %232, align 4
  1058.   %234 = icmp sgt i32 %233, 0
  1059.   br i1 %234, label %235, label %252
  1060.  
  1061. 235:                                              ; preds = %226
  1062.   %236 = load i32, i32* %23, align 4
  1063.   %237 = load i32, i32* %21, align 4
  1064.   %238 = sext i32 %237 to i64
  1065.   %239 = getelementptr inbounds i32, i32* %194, i64 %238
  1066.   store i32 %236, i32* %239, align 4
  1067.   %240 = load i32, i32* %21, align 4
  1068.   %241 = sext i32 %240 to i64
  1069.   %242 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %190, i64 %241
  1070.   %243 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 0
  1071.   %244 = load %struct.processStruct*, %struct.processStruct** %243, align 8
  1072.   %245 = load i32, i32* %23, align 4
  1073.   %246 = sext i32 %245 to i64
  1074.   %247 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %244, i64 %246
  1075.   %248 = bitcast %struct.processStruct* %242 to i8*
  1076.   %249 = bitcast %struct.processStruct* %247 to i8*
  1077.   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %248, i8* align 4 %249, i64 24, i1 false)
  1078.   %250 = load i32, i32* %21, align 4
  1079.   %251 = add nsw i32 %250, 1
  1080.   store i32 %251, i32* %21, align 4
  1081.   br label %252
  1082.  
  1083. 252:                                              ; preds = %235, %226, %217
  1084.   br label %253
  1085.  
  1086. 253:                                              ; preds = %252
  1087.   %254 = load i32, i32* %23, align 4
  1088.   %255 = add nsw i32 %254, 1
  1089.   store i32 %255, i32* %23, align 4
  1090.   br label %195, !llvm.loop !15
  1091.  
  1092. 256:                                              ; preds = %195
  1093.   store i32 0, i32* %24, align 4
  1094.   store i32 0, i32* %25, align 4
  1095.   br label %257
  1096.  
  1097. 257:                                              ; preds = %393, %256
  1098.   %258 = load i32, i32* %25, align 4
  1099.   %259 = load i32, i32* %6, align 4
  1100.   %260 = icmp slt i32 %258, %259
  1101.   br i1 %260, label %261, label %396
  1102.  
  1103. 261:                                              ; preds = %257
  1104.   %262 = load i32, i32* %16, align 4
  1105.   %263 = icmp ne i32 %262, 0
  1106.   br i1 %263, label %264, label %279
  1107.  
  1108. 264:                                              ; preds = %261
  1109.   %265 = load i32, i32* %16, align 4
  1110.   %266 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 1
  1111.   %267 = load %struct.processStruct*, %struct.processStruct** %266, align 8
  1112.   %268 = load i32, i32* %25, align 4
  1113.   %269 = sext i32 %268 to i64
  1114.   %270 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %267, i64 %269
  1115.   %271 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %270, i32 0, i32 1
  1116.   %272 = load i32, i32* %271, align 4
  1117.   %273 = srem i32 %265, %272
  1118.   %274 = icmp eq i32 %273, 0
  1119.   br i1 %274, label %275, label %279
  1120.  
  1121. 275:                                              ; preds = %264
  1122.   %276 = load i32, i32* %25, align 4
  1123.   call void @addProcess(%struct.readyQueue* sret(%struct.readyQueue) align 8 %26, %struct.readyQueue* noundef byval(%struct.readyQueue) align 8 %12, i32 noundef %276)
  1124.   %277 = bitcast %struct.readyQueue* %12 to i8*
  1125.   %278 = bitcast %struct.readyQueue* %26 to i8*
  1126.   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %277, i8* align 8 %278, i64 56, i1 false)
  1127.   store i32 1, i32* %24, align 4
  1128.   br label %279
  1129.  
  1130. 279:                                              ; preds = %275, %264, %261
  1131.   %280 = load i32, i32* %25, align 4
  1132.   %281 = load i32, i32* %6, align 4
  1133.   %282 = sub nsw i32 %281, 1
  1134.   %283 = icmp eq i32 %280, %282
  1135.   br i1 %283, label %284, label %392
  1136.  
  1137. 284:                                              ; preds = %279
  1138.   %285 = load i32, i32* %24, align 4
  1139.   %286 = icmp eq i32 %285, 1
  1140.   br i1 %286, label %287, label %392
  1141.  
  1142. 287:                                              ; preds = %284
  1143.   %288 = bitcast %struct.processStruct* %190 to i8*
  1144.   %289 = load i32, i32* %21, align 4
  1145.   %290 = sext i32 %289 to i64
  1146.   call void @qsort(i8* noundef %288, i64 noundef %290, i64 noundef 24, i32 (i8*, i8*)* noundef @comparePid)
  1147.   store i32 0, i32* %27, align 4
  1148.   br label %291
  1149.  
  1150. 291:                                              ; preds = %343, %287
  1151.   %292 = load i32, i32* %27, align 4
  1152.   %293 = load i32, i32* %21, align 4
  1153.   %294 = icmp slt i32 %292, %293
  1154.   br i1 %294, label %295, label %346
  1155.  
  1156. 295:                                              ; preds = %291
  1157.   %296 = load i32, i32* %16, align 4
  1158.   %297 = load i32, i32* %27, align 4
  1159.   %298 = sext i32 %297 to i64
  1160.   %299 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %190, i64 %298
  1161.   %300 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %299, i32 0, i32 4
  1162.   %301 = load i32, i32* %300, align 8
  1163.   %302 = load i32, i32* %27, align 4
  1164.   %303 = sext i32 %302 to i64
  1165.   %304 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %190, i64 %303
  1166.   %305 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %304, i32 0, i32 2
  1167.   %306 = load i32, i32* %305, align 8
  1168.   %307 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([14 x i8], [14 x i8]* @.str.15, i64 0, i64 0), i32 noundef %296, i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i64 0, i64 0), i32 noundef %301, i8* noundef getelementptr inbounds ([19 x i8], [19 x i8]* @.str.16, i64 0, i64 0), i32 noundef %306, i8* noundef getelementptr inbounds ([10 x i8], [10 x i8]* @.str.17, i64 0, i64 0))
  1169.   %308 = load i32, i32* %16, align 4
  1170.   %309 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 0
  1171.   %310 = load %struct.processStruct*, %struct.processStruct** %309, align 8
  1172.   %311 = load i32, i32* %27, align 4
  1173.   %312 = sext i32 %311 to i64
  1174.   %313 = getelementptr inbounds i32, i32* %194, i64 %312
  1175.   %314 = load i32, i32* %313, align 4
  1176.   %315 = sext i32 %314 to i64
  1177.   %316 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %310, i64 %315
  1178.   %317 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %316, i32 0, i32 1
  1179.   %318 = load i32, i32* %317, align 4
  1180.   %319 = sdiv i32 %308, %318
  1181.   %320 = add nsw i32 %319, 1
  1182.   %321 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 0
  1183.   %322 = load %struct.processStruct*, %struct.processStruct** %321, align 8
  1184.   %323 = load i32, i32* %27, align 4
  1185.   %324 = sext i32 %323 to i64
  1186.   %325 = getelementptr inbounds i32, i32* %194, i64 %324
  1187.   %326 = load i32, i32* %325, align 4
  1188.   %327 = sext i32 %326 to i64
  1189.   %328 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %322, i64 %327
  1190.   %329 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %328, i32 0, i32 1
  1191.   %330 = load i32, i32* %329, align 4
  1192.   %331 = mul nsw i32 %320, %330
  1193.   %332 = load i32, i32* %16, align 4
  1194.   %333 = sub nsw i32 %331, %332
  1195.   %334 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 0
  1196.   %335 = load %struct.processStruct*, %struct.processStruct** %334, align 8
  1197.   %336 = load i32, i32* %27, align 4
  1198.   %337 = sext i32 %336 to i64
  1199.   %338 = getelementptr inbounds i32, i32* %194, i64 %337
  1200.   %339 = load i32, i32* %338, align 4
  1201.   %340 = sext i32 %339 to i64
  1202.   %341 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %335, i64 %340
  1203.   %342 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %341, i32 0, i32 3
  1204.   store i32 %333, i32* %342, align 4
  1205.   br label %343
  1206.  
  1207. 343:                                              ; preds = %295
  1208.   %344 = load i32, i32* %27, align 4
  1209.   %345 = add nsw i32 %344, 1
  1210.   store i32 %345, i32* %27, align 4
  1211.   br label %291, !llvm.loop !16
  1212.  
  1213. 346:                                              ; preds = %291
  1214.   %347 = getelementptr inbounds [50000 x i8], [50000 x i8]* %15, i64 0, i64 0
  1215.   %348 = getelementptr inbounds [50000 x i8], [50000 x i8]* %15, i64 0, i64 0
  1216.   %349 = call i64 @strlen(i8* noundef %348) #8
  1217.   call void @llvm.memset.p0i8.i64(i8* align 16 %347, i8 0, i64 %349, i1 false)
  1218.   %350 = getelementptr inbounds [50000 x i8], [50000 x i8]* %15, i64 0, i64 0
  1219.   %351 = call i8* @buildString(i8* noundef %350, %struct.readyQueue* noundef byval(%struct.readyQueue) align 8 %12)
  1220.   %352 = load i32, i32* %16, align 4
  1221.   %353 = getelementptr inbounds [50000 x i8], [50000 x i8]* %15, i64 0, i64 0
  1222.   %354 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([8 x i8], [8 x i8]* @.str.18, i64 0, i64 0), i32 noundef %352, i8* noundef getelementptr inbounds ([3 x i8], [3 x i8]* @.str.8, i64 0, i64 0), i8* noundef %353)
  1223.   call void @preempt(%struct.readyQueue* sret(%struct.readyQueue) align 8 %28, %struct.readyQueue* noundef byval(%struct.readyQueue) align 8 %12)
  1224.   %355 = bitcast %struct.readyQueue* %12 to i8*
  1225.   %356 = bitcast %struct.readyQueue* %28 to i8*
  1226.   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %355, i8* align 8 %356, i64 56, i1 false)
  1227.   %357 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 8
  1228.   %358 = getelementptr inbounds [4 x i32], [4 x i32]* %357, i64 0, i64 2
  1229.   %359 = load i32, i32* %358, align 8
  1230.   %360 = icmp eq i32 %359, 1
  1231.   br i1 %360, label %361, label %391
  1232.  
  1233. 361:                                              ; preds = %346
  1234.   %362 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 8
  1235.   %363 = getelementptr inbounds [4 x i32], [4 x i32]* %362, i64 0, i64 0
  1236.   %364 = load i32, i32* %363, align 8
  1237.   %365 = icmp ne i32 %364, -1
  1238.   br i1 %365, label %366, label %391
  1239.  
  1240. 366:                                              ; preds = %361
  1241.   %367 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 8
  1242.   %368 = getelementptr inbounds [4 x i32], [4 x i32]* %367, i64 0, i64 1
  1243.   %369 = load i32, i32* %368, align 4
  1244.   %370 = icmp ne i32 %369, -1
  1245.   br i1 %370, label %371, label %391
  1246.  
  1247. 371:                                              ; preds = %366
  1248.   %372 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 8
  1249.   %373 = getelementptr inbounds [4 x i32], [4 x i32]* %372, i64 0, i64 3
  1250.   %374 = load i32, i32* %373, align 4
  1251.   %375 = icmp eq i32 %374, 1
  1252.   br i1 %375, label %376, label %391
  1253.  
  1254. 376:                                              ; preds = %371
  1255.   %377 = load i32, i32* %17, align 4
  1256.   %378 = icmp eq i32 %377, 0
  1257.   br i1 %378, label %379, label %391
  1258.  
  1259. 379:                                              ; preds = %376
  1260.   %380 = load i32, i32* %16, align 4
  1261.   %381 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 8
  1262.   %382 = getelementptr inbounds [4 x i32], [4 x i32]* %381, i64 0, i64 0
  1263.   %383 = load i32, i32* %382, align 8
  1264.   %384 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([10 x i8], [10 x i8]* @.str.12, i64 0, i64 0), i32 noundef %380, i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i64 0, i64 0), i32 noundef %383, i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.19, i64 0, i64 0))
  1265.   %385 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 8
  1266.   %386 = getelementptr inbounds [4 x i32], [4 x i32]* %385, i64 0, i64 0
  1267.   store i32 -1, i32* %386, align 8
  1268.   %387 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 8
  1269.   %388 = getelementptr inbounds [4 x i32], [4 x i32]* %387, i64 0, i64 1
  1270.   store i32 -1, i32* %388, align 4
  1271.   %389 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 8
  1272.   %390 = getelementptr inbounds [4 x i32], [4 x i32]* %389, i64 0, i64 2
  1273.   store i32 0, i32* %390, align 8
  1274.   br label %391
  1275.  
  1276. 391:                                              ; preds = %379, %376, %371, %366, %361, %346
  1277.   br label %392
  1278.  
  1279. 392:                                              ; preds = %391, %284, %279
  1280.   br label %393
  1281.  
  1282. 393:                                              ; preds = %392
  1283.   %394 = load i32, i32* %25, align 4
  1284.   %395 = add nsw i32 %394, 1
  1285.   store i32 %395, i32* %25, align 4
  1286.   br label %257, !llvm.loop !17
  1287.  
  1288. 396:                                              ; preds = %257
  1289.   call void @scheduleNearestDeadline(%struct.readyQueue* sret(%struct.readyQueue) align 8 %29, %struct.readyQueue* noundef byval(%struct.readyQueue) align 8 %12)
  1290.   %397 = bitcast %struct.readyQueue* %12 to i8*
  1291.   %398 = bitcast %struct.readyQueue* %29 to i8*
  1292.   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %397, i8* align 8 %398, i64 56, i1 false)
  1293.   %399 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 0
  1294.   %400 = load %struct.processStruct*, %struct.processStruct** %399, align 8
  1295.   %401 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 2
  1296.   %402 = load i32, i32* %401, align 8
  1297.   %403 = sext i32 %402 to i64
  1298.   %404 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %400, i64 %403
  1299.   %405 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %404, i32 0, i32 5
  1300.   %406 = load i32, i32* %405, align 4
  1301.   %407 = icmp eq i32 %406, 0
  1302.   br i1 %407, label %415, label %408
  1303.  
  1304. 408:                                              ; preds = %396
  1305.   %409 = load i32, i32* %17, align 4
  1306.   %410 = icmp eq i32 %409, 1
  1307.   br i1 %410, label %411, label %435
  1308.  
  1309. 411:                                              ; preds = %408
  1310.   %412 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 4
  1311.   %413 = load i32, i32* %412, align 8
  1312.   %414 = icmp sgt i32 %413, 0
  1313.   br i1 %414, label %415, label %435
  1314.  
  1315. 415:                                              ; preds = %411, %396
  1316.   %416 = load i32, i32* %16, align 4
  1317.   %417 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 0
  1318.   %418 = load %struct.processStruct*, %struct.processStruct** %417, align 8
  1319.   %419 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 2
  1320.   %420 = load i32, i32* %419, align 8
  1321.   %421 = sext i32 %420 to i64
  1322.   %422 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %418, i64 %421
  1323.   %423 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %422, i32 0, i32 4
  1324.   %424 = load i32, i32* %423, align 4
  1325.   %425 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([10 x i8], [10 x i8]* @.str.12, i64 0, i64 0), i32 noundef %416, i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i64 0, i64 0), i32 noundef %424, i8* noundef getelementptr inbounds ([8 x i8], [8 x i8]* @.str.20, i64 0, i64 0))
  1326.   %426 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 0
  1327.   %427 = load %struct.processStruct*, %struct.processStruct** %426, align 8
  1328.   %428 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 2
  1329.   %429 = load i32, i32* %428, align 8
  1330.   %430 = sext i32 %429 to i64
  1331.   %431 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %427, i64 %430
  1332.   %432 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %431, i32 0, i32 5
  1333.   store i32 1, i32* %432, align 4
  1334.   store i32 0, i32* %17, align 4
  1335.   %433 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 8
  1336.   %434 = getelementptr inbounds [4 x i32], [4 x i32]* %433, i64 0, i64 3
  1337.   store i32 1, i32* %434, align 4
  1338.   br label %435
  1339.  
  1340. 435:                                              ; preds = %415, %411, %408
  1341.   %436 = bitcast %struct.processStruct* %190 to i8*
  1342.   %437 = load i32, i32* %21, align 4
  1343.   %438 = sext i32 %437 to i64
  1344.   %439 = mul i64 %438, 24
  1345.   call void @llvm.memset.p0i8.i64(i8* align 16 %436, i8 0, i64 %439, i1 false)
  1346.   %440 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 0
  1347.   %441 = load %struct.processStruct*, %struct.processStruct** %440, align 8
  1348.   %442 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 2
  1349.   %443 = load i32, i32* %442, align 8
  1350.   %444 = sext i32 %443 to i64
  1351.   %445 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %441, i64 %444
  1352.   %446 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %445, i32 0, i32 2
  1353.   %447 = load i32, i32* %446, align 4
  1354.   %448 = add nsw i32 %447, -1
  1355.   store i32 %448, i32* %446, align 4
  1356.   %449 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 4
  1357.   %450 = load i32, i32* %449, align 8
  1358.   %451 = icmp sgt i32 %450, 0
  1359.   br i1 %451, label %452, label %459
  1360.  
  1361. 452:                                              ; preds = %435
  1362.   %453 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 4
  1363.   %454 = load i32, i32* %453, align 8
  1364.   %455 = sub nsw i32 %454, 1
  1365.   %456 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 7
  1366.   %457 = load i32, i32* %456, align 4
  1367.   %458 = add nsw i32 %457, %455
  1368.   store i32 %458, i32* %456, align 4
  1369.   br label %459
  1370.  
  1371. 459:                                              ; preds = %452, %435
  1372.   %460 = load i8*, i8** %19, align 8
  1373.   call void @llvm.stackrestore(i8* %460)
  1374.   br label %461
  1375.  
  1376. 461:                                              ; preds = %459
  1377.   %462 = load i32, i32* %16, align 4
  1378.   %463 = add nsw i32 %462, 1
  1379.   store i32 %463, i32* %16, align 4
  1380.   br label %154, !llvm.loop !18
  1381.  
  1382. 464:                                              ; preds = %154
  1383.   %465 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 0
  1384.   %466 = load %struct.processStruct*, %struct.processStruct** %465, align 8
  1385.   %467 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 2
  1386.   %468 = load i32, i32* %467, align 8
  1387.   %469 = sext i32 %468 to i64
  1388.   %470 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %466, i64 %469
  1389.   %471 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %470, i32 0, i32 2
  1390.   %472 = load i32, i32* %471, align 4
  1391.   %473 = icmp eq i32 %472, 0
  1392.   br i1 %473, label %474, label %486
  1393.  
  1394. 474:                                              ; preds = %464
  1395.   %475 = load i32, i32* %14, align 4
  1396.   %476 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 0
  1397.   %477 = load %struct.processStruct*, %struct.processStruct** %476, align 8
  1398.   %478 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 2
  1399.   %479 = load i32, i32* %478, align 8
  1400.   %480 = sext i32 %479 to i64
  1401.   %481 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %477, i64 %480
  1402.   %482 = getelementptr inbounds %struct.processStruct, %struct.processStruct* %481, i32 0, i32 4
  1403.   %483 = load i32, i32* %482, align 4
  1404.   %484 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([10 x i8], [10 x i8]* @.str.12, i64 0, i64 0), i32 noundef %475, i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i64 0, i64 0), i32 noundef %483, i8* noundef getelementptr inbounds ([6 x i8], [6 x i8]* @.str.14, i64 0, i64 0))
  1405.   %485 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 2
  1406.   store i32 0, i32* %485, align 8
  1407.   br label %486
  1408.  
  1409. 486:                                              ; preds = %474, %464
  1410.   %487 = load i32, i32* %14, align 4
  1411.   %488 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([6 x i8], [6 x i8]* @.str.21, i64 0, i64 0), i32 noundef %487, i8* noundef getelementptr inbounds ([19 x i8], [19 x i8]* @.str.22, i64 0, i64 0))
  1412.   %489 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 7
  1413.   %490 = load i32, i32* %489, align 4
  1414.   %491 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([6 x i8], [6 x i8]* @.str.23, i64 0, i64 0), i8* noundef getelementptr inbounds ([27 x i8], [27 x i8]* @.str.24, i64 0, i64 0), i32 noundef %490)
  1415.   %492 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 6
  1416.   %493 = load i32, i32* %492, align 8
  1417.   %494 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([6 x i8], [6 x i8]* @.str.23, i64 0, i64 0), i8* noundef getelementptr inbounds ([30 x i8], [30 x i8]* @.str.25, i64 0, i64 0), i32 noundef %493)
  1418.   %495 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 7
  1419.   %496 = load i32, i32* %495, align 4
  1420.   %497 = sitofp i32 %496 to float
  1421.   %498 = getelementptr inbounds %struct.readyQueue, %struct.readyQueue* %12, i32 0, i32 6
  1422.   %499 = load i32, i32* %498, align 8
  1423.   %500 = sitofp i32 %499 to float
  1424.   %501 = fdiv float %497, %500
  1425.   store float %501, float* %30, align 4
  1426.   %502 = load float, float* %30, align 4
  1427.   %503 = fpext float %502 to double
  1428.   %504 = call i32 (i8*, ...) @printf(i8* noundef getelementptr inbounds ([9 x i8], [9 x i8]* @.str.26, i64 0, i64 0), i8* noundef getelementptr inbounds ([23 x i8], [23 x i8]* @.str.27, i64 0, i64 0), double noundef %503)
  1429.   store i32 0, i32* %3, align 4
  1430.   %505 = load i8*, i8** %7, align 8
  1431.   call void @llvm.stackrestore(i8* %505)
  1432.   %506 = load i32, i32* %3, align 4
  1433.   ret i32 %506
  1434. }
  1435.  
  1436. declare i32 @printf(i8* noundef, ...) #4
  1437.  
  1438. declare i32 @__isoc99_scanf(i8* noundef, ...) #4
  1439.  
  1440. ; Function Attrs: nofree nosync nounwind willreturn
  1441. declare i8* @llvm.stacksave() #5
  1442.  
  1443. declare void @qsort(i8* noundef, i64 noundef, i64 noundef, i32 (i8*, i8*)* noundef) #4
  1444.  
  1445. ; Function Attrs: nounwind readonly willreturn
  1446. declare i64 @strlen(i8* noundef) #6
  1447.  
  1448. ; Function Attrs: nofree nosync nounwind willreturn
  1449. declare void @llvm.stackrestore(i8*) #5
  1450.  
  1451. attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
  1452. attributes #1 = { argmemonly nofree nounwind willreturn }
  1453. attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
  1454. attributes #3 = { argmemonly nofree nounwind willreturn writeonly }
  1455. attributes #4 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
  1456. attributes #5 = { nofree nosync nounwind willreturn }
  1457. attributes #6 = { nounwind readonly willreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
  1458. attributes #7 = { nounwind }
  1459. attributes #8 = { nounwind readonly willreturn }
  1460.  
  1461. !llvm.module.flags = !{!0, !1, !2, !3, !4}
  1462. !llvm.ident = !{!5}
  1463.  
  1464. !0 = !{i32 1, !"wchar_size", i32 4}
  1465. !1 = !{i32 7, !"PIC Level", i32 2}
  1466. !2 = !{i32 7, !"PIE Level", i32 2}
  1467. !3 = !{i32 7, !"uwtable", i32 1}
  1468. !4 = !{i32 7, !"frame-pointer", i32 2}
  1469. !5 = !{!"Ubuntu clang version 14.0.0-1ubuntu1"}
  1470. !6 = distinct !{!6, !7}
  1471. !7 = !{!"llvm.loop.mustprogress"}
  1472. !8 = distinct !{!8, !7}
  1473. !9 = distinct !{!9, !7}
  1474. !10 = distinct !{!10, !7}
  1475. !11 = distinct !{!11, !7}
  1476. !12 = distinct !{!12, !7}
  1477. !13 = distinct !{!13, !7}
  1478. !14 = distinct !{!14, !7}
  1479. !15 = distinct !{!15, !7}
  1480. !16 = distinct !{!16, !7}
  1481. !17 = distinct !{!17, !7}
  1482. !18 = distinct !{!18, !7}
  1483.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement