#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*/ fprintf(int /*<<< orphan*/, char *);
int /*<<< orphan*/ stderr;
void print_usage(void) {
  fprintf(stderr,
          "Usage: gpio-event-mon [options]...\n"
          "Listen to events on GPIO lines, 0->1 1->0\n"
          "  -n <name>  Listen on GPIOs on a named device (must be stated)\n"
          "  -o <n>     Offset of line to monitor (may be repeated)\n"
          "  -d         Set line as open drain\n"
          "  -s         Set line as open source\n"
          "  -r         Listen for rising edges\n"
          "  -f         Listen for falling edges\n"
          "  -w         Report the wall-clock time for events\n"
          "  -b <n>     Debounce the line with period n microseconds\n"
          " [-c <n>]    Do <n> loops (optional, infinite loop if not stated)\n"
          "  -?         This helptext\n"
          "\n"
          "Example:\n"
          "gpio-event-mon -n gpiochip0 -o 4 -r -f -b 10000\n");
}


x86 assembly (clang, -O0):
<print_usage>:
push   %rbp
mov    %rsp,%rbp
mov    0x2ec5(%rip),%rax
mov    (%rax),%edi
lea    0xedc(%rip),%rsi
call   1030 <fprintf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<print_usage>:
mov    0x2ec9(%rip),%rax
mov    (%rax),%edi
lea    0xee0(%rip),%rsi
jmp    1030 <fprintf@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [607 x i8] c"Usage: gpio-event-mon [options]...\0AListen to events on GPIO lines, 0->1 1->0\0A -n <name> Listen on GPIOs on a named device (must be stated)\0A -o <n> Offset of line to monitor (may be repeated)\0A -d Set line as open drain\0A -s Set line as open source\0A -r Listen for rising edges\0A -f Listen for falling edges\0A -w Report the wall-clock time for events\0A -b <n> Debounce the line with period n microseconds\0A [-c <n>] Do <n> loops (optional, infinite loop if not stated)\0A -? This helptext\0A\0AExample:\0Agpio-event-mon -n gpiochip0 -o 4 -r -f -b 10000\0A\00"
define void @print_usage() {
%1 = load i32, i32* @stderr
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([607 x i8], [607 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [607 x i8] c"Usage: gpio-event-mon [options]...\0AListen to events on GPIO lines, 0->1 1->0\0A -n <name> Listen on GPIOs on a named device (must be stated)\0A -o <n> Offset of line to monitor (may be repeated)\0A -d Set line as open drain\0A -s Set line as open source\0A -r Listen for rising edges\0A -f Listen for falling edges\0A -w Report the wall-clock time for events\0A -b <n> Debounce the line with period n microseconds\0A [-c <n>] Do <n> loops (optional, infinite loop if not stated)\0A -? This helptext\0A\0AExample:\0Agpio-event-mon -n gpiochip0 -o 4 -r -f -b 10000\0A\00"
define void @print_usage() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([607 x i8], [607 x i8]* @.str, i64 0, i64 0))
ret void
}