#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 *, char const *);
int /*<<< orphan*/ stderr;
void usage(const char *prg) {
  fprintf(
      stderr,
      "USAGE: %s [-ri] [-t <HH:MM:SS>] [-Y <year>] [-m <month>] [-d <dom>] [-H "
      "<hour>] [-M <min>] [-S <sec>] [<output_file>]\n\n"
      "Write seconds since the UNIX epoch to the file <output_file> (stdout\n"
      "if no output file is specified).  The current system time is used\n"
      "and elements specified via options are used to replace portions of\n"
      "the system time before providing the output.\n"
      "\n"
      " -i            interperet the values in the time file\n"
      " -t <HH:MM:SS> replace the hours, minutes, seconds (seconds optional)\n"
      " -Y <year>     replace the year with <year> (must include century)\n"
      " -m <month>    replace the month with <month> (1-12)\n"
      " -d <dom>      replace the day of month with <dom> (1-31)\n"
      " -H <hour>     replace the hour with <hour> (24 hour time)\n"
      " -M <min>      replace the minute with <min>\n"
      " -S <sec>      replace the second with <sec>\n"
      "\n"
      "example: to use todays date but with time set to 12:15pm\n"
      "  setusertime -t 1215\n"
      "\n"
      "If the environment variable USERTIMEFILE is set and no output file is\n"
      "specified, then the file named in that variable will be used to store\n"
      "the time.\n"
      "\n",
      prg);
  return;
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    0x2ebd(%rip),%rax
mov    (%rax),%edi
mov    -0x8(%rbp),%rdx
lea    0xed0(%rip),%rsi
call   1030 <fprintf@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<usage>:
mov    %rdi,%rdx
mov    0x2ec6(%rip),%rax
mov    (%rax),%edi
lea    0xedd(%rip),%rsi
jmp    1030 <fprintf@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [1051 x i8] c"USAGE: %s [-ri] [-t <HH:MM:SS>] [-Y <year>] [-m <month>] [-d <dom>] [-H <hour>] [-M <min>] [-S <sec>] [<output_file>]\0A\0AWrite seconds since the UNIX epoch to the file <output_file> (stdout\0Aif no output file is specified). The current system time is used\0Aand elements specified via options are used to replace portions of\0Athe system time before providing the output.\0A\0A -i interperet the values in the time file\0A -t <HH:MM:SS> replace the hours, minutes, seconds (seconds optional)\0A -Y <year> replace the year with <year> (must include century)\0A -m <month> replace the month with <month> (1-12)\0A -d <dom> replace the day of month with <dom> (1-31)\0A -H <hour> replace the hour with <hour> (24 hour time)\0A -M <min> replace the minute with <min>\0A -S <sec> replace the second with <sec>\0A\0Aexample: to use todays date but with time set to 12:15pm\0A setusertime -t 1215\0A\0AIf the environment variable USERTIMEFILE is set and no output file is\0Aspecified, then the file named in that variable will be used to store\0Athe time.\0A\0A\00"
define void @usage(i8* %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = load i32, i32* @stderr
%4 = load i8*, i8** %2
%5 = call i32 @fprintf(i32 %3, i8* getelementptr inbounds ([1051 x i8], [1051 x i8]* @.str, i64 0, i64 0), i8* %4)
ret void
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [1051 x i8] c"USAGE: %s [-ri] [-t <HH:MM:SS>] [-Y <year>] [-m <month>] [-d <dom>] [-H <hour>] [-M <min>] [-S <sec>] [<output_file>]\0A\0AWrite seconds since the UNIX epoch to the file <output_file> (stdout\0Aif no output file is specified). The current system time is used\0Aand elements specified via options are used to replace portions of\0Athe system time before providing the output.\0A\0A -i interperet the values in the time file\0A -t <HH:MM:SS> replace the hours, minutes, seconds (seconds optional)\0A -Y <year> replace the year with <year> (must include century)\0A -m <month> replace the month with <month> (1-12)\0A -d <dom> replace the day of month with <dom> (1-31)\0A -H <hour> replace the hour with <hour> (24 hour time)\0A -M <min> replace the minute with <min>\0A -S <sec> replace the second with <sec>\0A\0Aexample: to use todays date but with time set to 12:15pm\0A setusertime -t 1215\0A\0AIf the environment variable USERTIMEFILE is set and no output file is\0Aspecified, then the file named in that variable will be used to store\0Athe time.\0A\0A\00"
define void @usage(i8* %0) {
%2 = load i32, i32* @stderr
%3 = tail call i32 @fprintf(i32 %2, i8* getelementptr inbounds ([1051 x i8], [1051 x i8]* @.str, i64 0, i64 0), i8* %0)
ret void
}