#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 display_help() {
  printf("Throttler "
         "0.1"
         "\n"
         "Author: Marius Graefe\n"
         "Usage:\n"
         "\tthrottler [{OPTIONS}] interface action\n\n"
         "Options:\n"
         "\t-u | --max-upload limit\n"
         "\t\tSpecify upload limit\n"
         "\t-d | --max-down limit\n"
         "\t\tSpecify download limit\n"
         "\t-t | --max-total limit\n"
         "\t\tSpecify limit of up- and download combined\n"
         "\t-h | --help\n"
         "\t\tDisplay this help message\n"
         "\t-v | --version\n"
         "\t\tDisplay version information\n"
         "Limits are measured in bytes and may be specified with the following "
         "suffixes:\n"
         "\tk or K for Kilobytes, m or M for Megabytes, g or G for Gigabytes, "
         "t or T for Terabytes.\n"
         "\tIf no suffix is specified pure bytes are assumed.\n"
         "\tExample: throttler eth0 -u 10G -d 10G -t 15G 'echo Throttle'\n"
         "If called without any limits it simply outputs the number of bytes "
         "received and transmitted on the specified interface\n");
}


x86 assembly (clang, -O0):
<display_help>:
push   %rbp
mov    %rsp,%rbp
lea    0xee5(%rip),%rdi
call   1030 <printf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<display_help>:
lea    0xee9(%rip),%rdi
jmp    1030 <puts@plt>

LLVM IR (-O0):
@.str = [746 x i8] c"Throttler 0.1\0AAuthor: Marius Graefe\0AUsage:\0A\09throttler [{OPTIONS}] interface action\0A\0AOptions:\0A\09-u | --max-upload limit\0A\09\09Specify upload limit\0A\09-d | --max-down limit\0A\09\09Specify download limit\0A\09-t | --max-total limit\0A\09\09Specify limit of up- and download combined\0A\09-h | --help\0A\09\09Display this help message\0A\09-v | --version\0A\09\09Display version information\0ALimits are measured in bytes and may be specified with the following suffixes:\0A\09k or K for Kilobytes, m or M for Megabytes, g or G for Gigabytes, t or T for Terabytes.\0A\09If no suffix is specified pure bytes are assumed.\0A\09Example: throttler eth0 -u 10G -d 10G -t 15G 'echo Throttle'\0AIf called without any limits it simply outputs the number of bytes received and transmitted on the specified interface\0A\00"
define void @display_help() {
%1 = call i32 @printf(i8* getelementptr inbounds ([746 x i8], [746 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [745 x i8] c"Throttler 0.1\0AAuthor: Marius Graefe\0AUsage:\0A\09throttler [{OPTIONS}] interface action\0A\0AOptions:\0A\09-u | --max-upload limit\0A\09\09Specify upload limit\0A\09-d | --max-down limit\0A\09\09Specify download limit\0A\09-t | --max-total limit\0A\09\09Specify limit of up- and download combined\0A\09-h | --help\0A\09\09Display this help message\0A\09-v | --version\0A\09\09Display version information\0ALimits are measured in bytes and may be specified with the following suffixes:\0A\09k or K for Kilobytes, m or M for Megabytes, g or G for Gigabytes, t or T for Terabytes.\0A\09If no suffix is specified pure bytes are assumed.\0A\09Example: throttler eth0 -u 10G -d 10G -t 15G 'echo Throttle'\0AIf called without any limits it simply outputs the number of bytes received and transmitted on the specified interface\00"
define void @display_help() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([745 x i8], [745 x i8]* @str, i64 0, i64 0))
ret void
}