#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*/ print_version();
int /*<<< orphan*/ printf(char *);
void print_usage(void) {
  printf("Usage: pisound-btn [options]\n"
         "Options:\n"
         "\t--help                   Display the usage information.\n"
         "\t--version                Show the version information.\n"
         "\t--gpio <n>               The pin GPIO number to use for the "
         "button. Default is 17.\n"
         "\t--active-high            Configure the pin for active high "
         "triggering.\n"
         "\t--active-low             Reverse the sense of the active state.\n"
         "\t                         If none of --active-high or --active-low "
         "is specified, this GPIO setting is left as is.\n"
         "\t--conf <path>            Specify the path to configuration file to "
         "use. Default is /etc/pisound.conf.\n"
         "\t--click-count-limit <n>  Set the click count limit to n. Use 0 for "
         "no limit. Default is 8.\n"
         "\t--no-defaults            Do not use the default values for click "
         "and hold. Only configuration options will be used.\n"
         "\t--debug <n>              Enable debugging at level n (higher value "
         "= more logging)\n"
         "\t-n <n>                   Short for --click-count-limit.\n"
         "\t-q                       Short for --debug 0 (turns off all but "
         "errors)\n"
         "\n");
  print_version();
}


x86 assembly (clang, -O0):
<print_usage>:
push   %rbp
mov    %rsp,%rbp
lea    0xed5(%rip),%rdi
call   1040 <printf@plt>
mov    $0x0,%al
call   1030 <print_version@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<print_usage>:
push   %rax
lea    0xed8(%rip),%rdi
call   1030 <puts@plt>
xor    %eax,%eax
pop    %rcx
jmp    1040 <print_version@plt>

LLVM IR (-O0):
@.str = [1014 x i8] c"Usage: pisound-btn [options]\0AOptions:\0A\09--help Display the usage information.\0A\09--version Show the version information.\0A\09--gpio <n> The pin GPIO number to use for the button. Default is 17.\0A\09--active-high Configure the pin for active high triggering.\0A\09--active-low Reverse the sense of the active state.\0A\09 If none of --active-high or --active-low is specified, this GPIO setting is left as is.\0A\09--conf <path> Specify the path to configuration file to use. Default is /etc/pisound.conf.\0A\09--click-count-limit <n> Set the click count limit to n. Use 0 for no limit. Default is 8.\0A\09--no-defaults Do not use the default values for click and hold. Only configuration options will be used.\0A\09--debug <n> Enable debugging at level n (higher value = more logging)\0A\09-n <n> Short for --click-count-limit.\0A\09-q Short for --debug 0 (turns off all but errors)\0A\0A\00"
define void @print_usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([1014 x i8], [1014 x i8]* @.str, i64 0, i64 0))
%2 = call i32 (...) @print_version()
ret void
}

LLVM IR (-O2):
@str = [1013 x i8] c"Usage: pisound-btn [options]\0AOptions:\0A\09--help Display the usage information.\0A\09--version Show the version information.\0A\09--gpio <n> The pin GPIO number to use for the button. Default is 17.\0A\09--active-high Configure the pin for active high triggering.\0A\09--active-low Reverse the sense of the active state.\0A\09 If none of --active-high or --active-low is specified, this GPIO setting is left as is.\0A\09--conf <path> Specify the path to configuration file to use. Default is /etc/pisound.conf.\0A\09--click-count-limit <n> Set the click count limit to n. Use 0 for no limit. Default is 8.\0A\09--no-defaults Do not use the default values for click and hold. Only configuration options will be used.\0A\09--debug <n> Enable debugging at level n (higher value = more logging)\0A\09-n <n> Short for --click-count-limit.\0A\09-q Short for --debug 0 (turns off all but errors)\0A\00"
define void @print_usage() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1013 x i8], [1013 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 (...) @print_version()
ret void
}