#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 specified, recording will continue "
      "until\n"
      "                           return key is pressed.\n"
      "                -d DEVICE  the number of the input device form which\n"
      "                           events will be recorded. If not specified, \n"
      "                           all available inputs will be used.\n"
      "                -s         Recording will not be stopped if there is \n"
      "                           input on STDIN.\n"
      "                -g         Record in \"gamepad\" mode. A gamepad must "
      "be \n"
      "                           connected to the device. The recording will "
      "only\n"
      "                           be done for the gamepad and other input "
      "devices\n"
      "                           will not be recorded. In addition to the "
      "input\n"
      "                           events, the information about the gamepad "
      "will\n"
      "                           also be stored in the recording. When this\n"
      "                           recording is played back, revent will first\n"
      "                           create a virtual gamepad device based on "
      "the\n"
      "                           stored info and the event will be played "
      "back\n"
      "                           into it. This type of recording should be "
      "more\n"
      "                           portable across different devices.\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 = [2096 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 specified, recording will continue until\0A return key is pressed.\0A -d DEVICE the number of the input device form which\0A events will be recorded. If not specified, \0A all available inputs will be used.\0A -s Recording will not be stopped if there is \0A input on STDIN.\0A -g Record in \22gamepad\22 mode. A gamepad must be \0A connected to the device. The recording will only\0A be done for the gamepad and other input devices\0A will not be recorded. In addition to the input\0A events, the information about the gamepad will\0A also be stored in the recording. When this\0A recording is played back, revent will first\0A create a virtual gamepad device based on the\0A stored info and the event will be played back\0A into it. This type of recording should be more\0A portable across different devices.\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 ([2096 x i8], [2096 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [2095 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 specified, recording will continue until\0A return key is pressed.\0A -d DEVICE the number of the input device form which\0A events will be recorded. If not specified, \0A all available inputs will be used.\0A -s Recording will not be stopped if there is \0A input on STDIN.\0A -g Record in \22gamepad\22 mode. A gamepad must be \0A connected to the device. The recording will only\0A be done for the gamepad and other input devices\0A will not be recorded. In addition to the input\0A events, the information about the gamepad will\0A also be stored in the recording. When this\0A recording is played back, revent will first\0A create a virtual gamepad device based on the\0A stored info and the event will be played back\0A into it. This type of recording should be more\0A portable across different devices.\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 ([2095 x i8], [2095 x i8]* @str, i64 0, i64 0))
ret void
}