#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 show_help(void) {
  printf("FIRESTARTER - A Processor Stress Test Utility, Version %i.%i\n", 1,
         2);
  printf("Copyright (C) %i TU Dresden, Center for Information Services and "
         "High Performance Computing\n",
         2014);
  printf("This program comes with ABSOLUTELY NO WARRANTY; for details run "
         "`FIRESTARTER -w'.\n");
  printf("This is free software, and you are welcome to redistribute it\nunder "
         "certain conditions; run `FIRESTARTER -c' for details.\n");
  printf(
      "\nUsage: FIRESTARTER [Options]\n"
      "\nOptions:\n\n"
      " -h         | --help             display usage information\n"
      " -v         | --version          display version information\n"
      " -c         | --copyright        display copyright information\n"
      " -w         | --warranty         display warranty information\n"
      " -q         | --quiet            disable output to stdout\n"
      " -t TIMEOUT | --timeout=TIMEOUT  set timeout (seconds) after which "
      "FIRESTARTER\n"
      "                                 terminates itself, default: no "
      "timeout\n"
      " -l LOAD    | --load=LOAD        set the percentage of high load to "
      "LOAD (%%),\n"
      "                                 default 100, valid values: 0 <= LOAD "
      "<= 100,\n"
      "                                 threads will be idle in the remaining "
      "time,\n"
      "                                 frequency of load changes is "
      "determined by -p\n"
      " -p PERIOD  | --period=PERIOD    set the interval length to PERIOD "
      "(ms),\n"
      "                                 default: 100, each interval contains a "
      "high\n"
      "                                 load and an idle phase, the percentage "
      "of \n"
      "                                 high load is defined by -l\n"
      "\nExamples:\n\n"
      "./FIRESTARTER                    - starts FIRESTARTER without timeout\n"
      "./FIRESTARTER -t 300             - starts a 5 minute run of "
      "FIRESTARTER\n"
      "./FIRESTARTER -l 50 -t 600       - starts a 10 minute run of "
      "FIRESTARTER with\n"
      "                                   50%% high load and 50%% idle time\n"
      "./FIRESTARTER -l 75 -p 2000      - starts FIRESTARTER with an interval "
      "length\n"
      "                                   of 2 seconds, 1.5s high load and "
      "0.5s idle\n"
      "\n");
}


x86 assembly (clang, -O0):
<show_help>:
push   %rbp
mov    %rsp,%rbp
lea    0xee5(%rip),%rdi
mov    $0x1,%esi
mov    $0x2,%edx
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xf0b(%rip),%rdi
mov    $0x7de,%esi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xf55(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xf9a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x1007(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<show_help>:
push   %rax
lea    0xed8(%rip),%rdi
mov    $0x1,%esi
mov    $0x2,%edx
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xefe(%rip),%rdi
mov    $0x7de,%esi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0x1559(%rip),%rdi
call   1030 <puts@plt>
lea    0x159f(%rip),%rdi
call   1030 <puts@plt>
lea    0xf30(%rip),%rdi
xor    %eax,%eax
pop    %rcx
jmp    1040 <printf@plt>

LLVM IR (-O0):
@.str = [62 x i8] c"FIRESTARTER - A Processor Stress Test Utility, Version %i.%i\0A\00"
@.str.1 = [93 x i8] c"Copyright (C) %i TU Dresden, Center for Information Services and High Performance Computing\0A\00"
@.str.2 = [83 x i8] c"This program comes with ABSOLUTELY NO WARRANTY; for details run `FIRESTARTER -w'.\0A\00"
@.str.3 = [123 x i8] c"This is free software, and you are welcome to redistribute it\0Aunder certain conditions; run `FIRESTARTER -c' for details.\0A\00"
@.str.4 = [1553 x i8] c"\0AUsage: FIRESTARTER [Options]\0A\0AOptions:\0A\0A -h | --help display usage information\0A -v | --version display version information\0A -c | --copyright display copyright information\0A -w | --warranty display warranty information\0A -q | --quiet disable output to stdout\0A -t TIMEOUT | --timeout=TIMEOUT set timeout (seconds) after which FIRESTARTER\0A terminates itself, default: no timeout\0A -l LOAD | --load=LOAD set the percentage of high load to LOAD (%%),\0A default 100, valid values: 0 <= LOAD <= 100,\0A threads will be idle in the remaining time,\0A frequency of load changes is determined by -p\0A -p PERIOD | --period=PERIOD set the interval length to PERIOD (ms),\0A default: 100, each interval contains a high\0A load and an idle phase, the percentage of \0A high load is defined by -l\0A\0AExamples:\0A\0A./FIRESTARTER - starts FIRESTARTER without timeout\0A./FIRESTARTER -t 300 - starts a 5 minute run of FIRESTARTER\0A./FIRESTARTER -l 50 -t 600 - starts a 10 minute run of FIRESTARTER with\0A 50%% high load and 50%% idle time\0A./FIRESTARTER -l 75 -p 2000 - starts FIRESTARTER with an interval length\0A of 2 seconds, 1.5s high load and 0.5s idle\0A\0A\00"
define void @show_help() {
%1 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str, i64 0, i64 0), i32 1, i32 2)
%2 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([93 x i8], [93 x i8]* @.str.1, i64 0, i64 0), i32 2014)
%3 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([83 x i8], [83 x i8]* @.str.2, i64 0, i64 0))
%4 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([123 x i8], [123 x i8]* @.str.3, i64 0, i64 0))
%5 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([1553 x i8], [1553 x i8]* @.str.4, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str = [62 x i8] c"FIRESTARTER - A Processor Stress Test Utility, Version %i.%i\0A\00"
@.str.1 = [93 x i8] c"Copyright (C) %i TU Dresden, Center for Information Services and High Performance Computing\0A\00"
@.str.4 = [1553 x i8] c"\0AUsage: FIRESTARTER [Options]\0A\0AOptions:\0A\0A -h | --help display usage information\0A -v | --version display version information\0A -c | --copyright display copyright information\0A -w | --warranty display warranty information\0A -q | --quiet disable output to stdout\0A -t TIMEOUT | --timeout=TIMEOUT set timeout (seconds) after which FIRESTARTER\0A terminates itself, default: no timeout\0A -l LOAD | --load=LOAD set the percentage of high load to LOAD (%%),\0A default 100, valid values: 0 <= LOAD <= 100,\0A threads will be idle in the remaining time,\0A frequency of load changes is determined by -p\0A -p PERIOD | --period=PERIOD set the interval length to PERIOD (ms),\0A default: 100, each interval contains a high\0A load and an idle phase, the percentage of \0A high load is defined by -l\0A\0AExamples:\0A\0A./FIRESTARTER - starts FIRESTARTER without timeout\0A./FIRESTARTER -t 300 - starts a 5 minute run of FIRESTARTER\0A./FIRESTARTER -l 50 -t 600 - starts a 10 minute run of FIRESTARTER with\0A 50%% high load and 50%% idle time\0A./FIRESTARTER -l 75 -p 2000 - starts FIRESTARTER with an interval length\0A of 2 seconds, 1.5s high load and 0.5s idle\0A\0A\00"
@str = [82 x i8] c"This program comes with ABSOLUTELY NO WARRANTY; for details run `FIRESTARTER -w'.\00"
@str.5 = [122 x i8] c"This is free software, and you are welcome to redistribute it\0Aunder certain conditions; run `FIRESTARTER -c' for details.\00"
define void @show_help() {
%1 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([62 x i8], [62 x i8]* @.str, i64 0, i64 0), i32 1, i32 2)
%2 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([93 x i8], [93 x i8]* @.str.1, i64 0, i64 0), i32 2014)
%3 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([82 x i8], [82 x i8]* @str, i64 0, i64 0))
%4 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([122 x i8], [122 x i8]* @str.5, i64 0, i64 0))
%5 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([1553 x i8], [1553 x i8]* @.str.4, i64 0, i64 0))
ret void
}