#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ printf(char *);
void help(void) {
  printf("Options:\n");
  printf("--cpus=		the number of processors used.\n");
  printf("--umin=		the minimum utilization [0, 1.0] of every "
         "individual task.\n");
  printf("--umax=		the maximum utilization [0, 1.0] of every "
         "individual task.\n");
  printf("--pmin=		the minimum period of every individual task "
         "(by milisecond).\n");
  printf("--pmax=		the maximum period of every individual task "
         "(by milisecond).\n");
  printf(
      "--dist=		the distribution of utilizations of tasks (by uniform, "
      "bimodal, or exponential). if bimodal is chosen, the utilization "
      "separator between light tasks and heavy tasks must be set by --sep.\n");
  printf("--sep=		the utilization separator [0, 1.0] between "
         "light tasks and heavy tasks in a bimodal distribution.\n");
  printf("--prob=		the probability [0, 1.0] of being heavy tasks "
         "in a bimodal distribution.\n");
  printf("--mean=		the mean value [0, 1.0] in an exponetial "
         "distribution.\n");
  printf(
      "--deadline=	the type of relative deadlines (by implicit, "
      "constrained, or arbitrary). (i) if \"implicit\" is chosen, the relative "
      "deadline is equal to the period. (ii) if \"constrained\" is chosen, the "
      "relative deadline is set uniformly between the exec. time and the "
      "period. (iii) if \"arbitrary\" is chosen, the relative deadline is set "
      "uniformly between the exec. time and 4 times the period.\n");
  printf("--period=	the type of periods (by arbitrary or harmonic).\n");
  printf(
      "--time=		the length of benchmarking time (by millisecond).\n");
  printf("--start=	benchmarking starts from this system load [0, 100].\n");
  printf("--end=		benchmarking ends at this system load [0, "
         "100].\n");
  printf("--step=		the distance of every successive sampling "
         "system load to be tested by benchmarking.\n");
  printf("--quantity=	the number of tasksets tested per workload.\n");
  printf("--result=	the file name, in which benchmarking results are "
         "saved.\n");
  printf("--print		print the progress of benchmarking.\n");
}


x86 assembly (clang, -O0):
<help>:
push   %rbp
mov    %rsp,%rbp
lea    0xee5(%rip),%rdi
call   1030 <printf@plt>
lea    0xee3(%rip),%rdi
call   1030 <printf@plt>
lea    0xf00(%rip),%rdi
call   1030 <printf@plt>
lea    0xf39(%rip),%rdi
call   1030 <printf@plt>
lea    0xf72(%rip),%rdi
call   1030 <printf@plt>
lea    0xfad(%rip),%rdi
call   1030 <printf@plt>
lea    0xfe8(%rip),%rdi
call   1030 <printf@plt>
lea    0x10a1(%rip),%rdi
call   1030 <printf@plt>
lea    0x1100(%rip),%rdi
call   1030 <printf@plt>
lea    0x1147(%rip),%rdi
call   1030 <printf@plt>
lea    0x117c(%rip),%rdi
call   1030 <printf@plt>
lea    0x12f6(%rip),%rdi
call   1030 <printf@plt>
lea    0x1325(%rip),%rdi
call   1030 <printf@plt>
lea    0x1355(%rip),%rdi
call   1030 <printf@plt>
lea    0x1387(%rip),%rdi
call   1030 <printf@plt>
lea    0x13b4(%rip),%rdi
call   1030 <printf@plt>
lea    0x1406(%rip),%rdi
call   1030 <printf@plt>
lea    0x1433(%rip),%rdi
call   1030 <printf@plt>
lea    0x146a(%rip),%rdi
call   1030 <printf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<help>:
push   %rax
lea    0xee8(%rip),%rdi
call   1030 <puts@plt>
lea    0xee5(%rip),%rdi
call   1030 <puts@plt>
lea    0xf01(%rip),%rdi
call   1030 <puts@plt>
lea    0xf39(%rip),%rdi
call   1030 <puts@plt>
lea    0xf71(%rip),%rdi
call   1030 <puts@plt>
lea    0xfab(%rip),%rdi
call   1030 <puts@plt>
lea    0xfe5(%rip),%rdi
call   1030 <puts@plt>
lea    0x109d(%rip),%rdi
call   1030 <puts@plt>
lea    0x10fb(%rip),%rdi
call   1030 <puts@plt>
lea    0x1141(%rip),%rdi
call   1030 <puts@plt>
lea    0x1175(%rip),%rdi
call   1030 <puts@plt>
lea    0x12ee(%rip),%rdi
call   1030 <puts@plt>
lea    0x131c(%rip),%rdi
call   1030 <puts@plt>
lea    0x134b(%rip),%rdi
call   1030 <puts@plt>
lea    0x137c(%rip),%rdi
call   1030 <puts@plt>
lea    0x13a8(%rip),%rdi
call   1030 <puts@plt>
lea    0x13f9(%rip),%rdi
call   1030 <puts@plt>
lea    0x1425(%rip),%rdi
call   1030 <puts@plt>
lea    0x145b(%rip),%rdi
pop    %rax
jmp    1030 <puts@plt>

LLVM IR (-O0):
@.str = [10 x i8] c"Options:\0A\00"
@.str.1 = [41 x i8] c"--cpus=\09\09the number of processors used.\0A\00"
@.str.2 = [69 x i8] c"--umin=\09\09the minimum utilization [0, 1.0] of every individual task.\0A\00"
@.str.3 = [69 x i8] c"--umax=\09\09the maximum utilization [0, 1.0] of every individual task.\0A\00"
@.str.4 = [71 x i8] c"--pmin=\09\09the minimum period of every individual task (by milisecond).\0A\00"
@.str.5 = [71 x i8] c"--pmax=\09\09the maximum period of every individual task (by milisecond).\0A\00"
@.str.6 = [197 x i8] c"--dist=\09\09the distribution of utilizations of tasks (by uniform, bimodal, or exponential). if bimodal is chosen, the utilization separator between light tasks and heavy tasks must be set by --sep.\0A\00"
@.str.7 = [107 x i8] c"--sep=\09\09the utilization separator [0, 1.0] between light tasks and heavy tasks in a bimodal distribution.\0A\00"
@.str.8 = [83 x i8] c"--prob=\09\09the probability [0, 1.0] of being heavy tasks in a bimodal distribution.\0A\00"
@.str.9 = [65 x i8] c"--mean=\09\09the mean value [0, 1.0] in an exponetial distribution.\0A\00"
@.str.10 = [390 x i8] c"--deadline=\09the type of relative deadlines (by implicit, constrained, or arbitrary). (i) if \22implicit\22 is chosen, the relative deadline is equal to the period. (ii) if \22constrained\22 is chosen, the relative deadline is set uniformly between the exec. time and the period. (iii) if \22arbitrary\22 is chosen, the relative deadline is set uniformly between the exec. time and 4 times the period.\0A\00"
@.str.11 = [59 x i8] c"--period=\09the type of periods (by arbitrary or harmonic).\0A\00"
@.str.12 = [60 x i8] c"--time=\09\09the length of benchmarking time (by millisecond).\0A\00"
@.str.13 = [62 x i8] c"--start=\09benchmarking starts from this system load [0, 100].\0A\00"
@.str.14 = [57 x i8] c"--end=\09\09benchmarking ends at this system load [0, 100].\0A\00"
@.str.15 = [94 x i8] c"--step=\09\09the distance of every successive sampling system load to be tested by benchmarking.\0A\00"
@.str.16 = [57 x i8] c"--quantity=\09the number of tasksets tested per workload.\0A\00"
@.str.17 = [67 x i8] c"--result=\09the file name, in which benchmarking results are saved.\0A\00"
@.str.18 = [46 x i8] c"--print\09\09print the progress of benchmarking.\0A\00"
define void @help() {
%1 = call i32 @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @printf(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.1, i64 0, i64 0))
%3 = call i32 @printf(i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.2, i64 0, i64 0))
%4 = call i32 @printf(i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.3, i64 0, i64 0))
%5 = call i32 @printf(i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.4, i64 0, i64 0))
%6 = call i32 @printf(i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.5, i64 0, i64 0))
%7 = call i32 @printf(i8* getelementptr inbounds ([197 x i8], [197 x i8]* @.str.6, i64 0, i64 0))
%8 = call i32 @printf(i8* getelementptr inbounds ([107 x i8], [107 x i8]* @.str.7, i64 0, i64 0))
%9 = call i32 @printf(i8* getelementptr inbounds ([83 x i8], [83 x i8]* @.str.8, i64 0, i64 0))
%10 = call i32 @printf(i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.9, i64 0, i64 0))
%11 = call i32 @printf(i8* getelementptr inbounds ([390 x i8], [390 x i8]* @.str.10, i64 0, i64 0))
%12 = call i32 @printf(i8* getelementptr inbounds ([59 x i8], [59 x i8]* @.str.11, i64 0, i64 0))
%13 = call i32 @printf(i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.12, i64 0, i64 0))
%14 = call i32 @printf(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.13, i64 0, i64 0))
%15 = call i32 @printf(i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.14, i64 0, i64 0))
%16 = call i32 @printf(i8* getelementptr inbounds ([94 x i8], [94 x i8]* @.str.15, i64 0, i64 0))
%17 = call i32 @printf(i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.16, i64 0, i64 0))
%18 = call i32 @printf(i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.17, i64 0, i64 0))
%19 = call i32 @printf(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.18, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [9 x i8] c"Options:\00"
@str.19 = [40 x i8] c"--cpus=\09\09the number of processors used.\00"
@str.20 = [68 x i8] c"--umin=\09\09the minimum utilization [0, 1.0] of every individual task.\00"
@str.21 = [68 x i8] c"--umax=\09\09the maximum utilization [0, 1.0] of every individual task.\00"
@str.22 = [70 x i8] c"--pmin=\09\09the minimum period of every individual task (by milisecond).\00"
@str.23 = [70 x i8] c"--pmax=\09\09the maximum period of every individual task (by milisecond).\00"
@str.24 = [196 x i8] c"--dist=\09\09the distribution of utilizations of tasks (by uniform, bimodal, or exponential). if bimodal is chosen, the utilization separator between light tasks and heavy tasks must be set by --sep.\00"
@str.25 = [106 x i8] c"--sep=\09\09the utilization separator [0, 1.0] between light tasks and heavy tasks in a bimodal distribution.\00"
@str.26 = [82 x i8] c"--prob=\09\09the probability [0, 1.0] of being heavy tasks in a bimodal distribution.\00"
@str.27 = [64 x i8] c"--mean=\09\09the mean value [0, 1.0] in an exponetial distribution.\00"
@str.28 = [389 x i8] c"--deadline=\09the type of relative deadlines (by implicit, constrained, or arbitrary). (i) if \22implicit\22 is chosen, the relative deadline is equal to the period. (ii) if \22constrained\22 is chosen, the relative deadline is set uniformly between the exec. time and the period. (iii) if \22arbitrary\22 is chosen, the relative deadline is set uniformly between the exec. time and 4 times the period.\00"
@str.29 = [58 x i8] c"--period=\09the type of periods (by arbitrary or harmonic).\00"
@str.30 = [59 x i8] c"--time=\09\09the length of benchmarking time (by millisecond).\00"
@str.31 = [61 x i8] c"--start=\09benchmarking starts from this system load [0, 100].\00"
@str.32 = [56 x i8] c"--end=\09\09benchmarking ends at this system load [0, 100].\00"
@str.33 = [93 x i8] c"--step=\09\09the distance of every successive sampling system load to be tested by benchmarking.\00"
@str.34 = [56 x i8] c"--quantity=\09the number of tasksets tested per workload.\00"
@str.35 = [66 x i8] c"--result=\09the file name, in which benchmarking results are saved.\00"
@str.36 = [45 x i8] c"--print\09\09print the progress of benchmarking.\00"
define void @help() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([40 x i8], [40 x i8]* @str.19, i64 0, i64 0))
%3 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([68 x i8], [68 x i8]* @str.20, i64 0, i64 0))
%4 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([68 x i8], [68 x i8]* @str.21, i64 0, i64 0))
%5 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([70 x i8], [70 x i8]* @str.22, i64 0, i64 0))
%6 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([70 x i8], [70 x i8]* @str.23, i64 0, i64 0))
%7 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([196 x i8], [196 x i8]* @str.24, i64 0, i64 0))
%8 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([106 x i8], [106 x i8]* @str.25, i64 0, i64 0))
%9 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([82 x i8], [82 x i8]* @str.26, i64 0, i64 0))
%10 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([64 x i8], [64 x i8]* @str.27, i64 0, i64 0))
%11 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([389 x i8], [389 x i8]* @str.28, i64 0, i64 0))
%12 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([58 x i8], [58 x i8]* @str.29, i64 0, i64 0))
%13 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([59 x i8], [59 x i8]* @str.30, i64 0, i64 0))
%14 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([61 x i8], [61 x i8]* @str.31, i64 0, i64 0))
%15 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([56 x i8], [56 x i8]* @str.32, i64 0, i64 0))
%16 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([93 x i8], [93 x i8]* @str.33, i64 0, i64 0))
%17 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([56 x i8], [56 x i8]* @str.34, i64 0, i64 0))
%18 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @str.35, i64 0, i64 0))
%19 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([45 x i8], [45 x i8]* @str.36, i64 0, i64 0))
ret void
}