#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 usage() {
  printf(
      "usage:\n    revent [-h] [-v] COMMAND [OPTIONS] \n"
      "\n"
      "    Options:\n"
      "        -h  print this help message and quit.\n"
      "        -v  enable verbose output.\n"
      "\n"
      "    Commands:\n"
      "        record [-t SECONDS] [-d DEVICE] FILE\n"
      "            Record input event. stops after return on STDIN (or, "
      "optionally, \n"
      "            a fixed delay)\n"
      "\n"
      "                FILE       file into which events will be recorded.\n"
      "                -t SECONDS time, in seconds, for which to record "
      "events.\n"
      "                           if not specifed, recording will continue "
      "until\n"
      "                           return key is pressed.\n"
      "                -d DEVICE  the number of the input device form which\n"
      "                           events will be recoreded. If not specified, "
      "\n"
      "                           all available inputs will be used.\n"
      "\n"
      "        replay FILE\n"
      "            replays previously recorded events from the specified "
      "file.\n"
      "\n"
      "                FILE       file into which events will be recorded.\n"
      "\n"
      "        dump FILE\n"
      "            dumps the contents of the specified event log to STDOUT in\n"
      "            human-readable form.\n"
      "\n"
      "                FILE       event log which will be dumped.\n"
      "\n"
      "        info\n"
      "             shows info about each event char device\n"
      "\n");
}


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

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

LLVM IR (-O0):
@.str = [1190 x i8] c"usage:\0A revent [-h] [-v] COMMAND [OPTIONS] \0A\0A Options:\0A -h print this help message and quit.\0A -v enable verbose output.\0A\0A Commands:\0A record [-t SECONDS] [-d DEVICE] FILE\0A Record input event. stops after return on STDIN (or, optionally, \0A a fixed delay)\0A\0A FILE file into which events will be recorded.\0A -t SECONDS time, in seconds, for which to record events.\0A if not specifed, recording will continue until\0A return key is pressed.\0A -d DEVICE the number of the input device form which\0A events will be recoreded. If not specified, \0A all available inputs will be used.\0A\0A replay FILE\0A replays previously recorded events from the specified file.\0A\0A FILE file into which events will be recorded.\0A\0A dump FILE\0A dumps the contents of the specified event log to STDOUT in\0A human-readable form.\0A\0A FILE event log which will be dumped.\0A\0A info\0A shows info about each event char device\0A\0A\00"
define void @usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([1190 x i8], [1190 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [1189 x i8] c"usage:\0A revent [-h] [-v] COMMAND [OPTIONS] \0A\0A Options:\0A -h print this help message and quit.\0A -v enable verbose output.\0A\0A Commands:\0A record [-t SECONDS] [-d DEVICE] FILE\0A Record input event. stops after return on STDIN (or, optionally, \0A a fixed delay)\0A\0A FILE file into which events will be recorded.\0A -t SECONDS time, in seconds, for which to record events.\0A if not specifed, recording will continue until\0A return key is pressed.\0A -d DEVICE the number of the input device form which\0A events will be recoreded. If not specified, \0A all available inputs will be used.\0A\0A replay FILE\0A replays previously recorded events from the specified file.\0A\0A FILE file into which events will be recorded.\0A\0A dump FILE\0A dumps the contents of the specified event log to STDOUT in\0A human-readable form.\0A\0A FILE event log which will be dumped.\0A\0A info\0A shows info about each event char device\0A\00"
define void @usage() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1189 x i8], [1189 x i8]* @str, i64 0, i64 0))
ret void
}