#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 *, char const *, char const *, char const *,
                          char const *, char const *, char const *);
void usage(const char *name) {
  printf(
      "\n"
      "Usage: %s [switches] <timestamp> <program with arguments>\n"
      "\n"
      "This will run the specified 'program' with the given 'arguments'.\n"
      "The program will be tricked into seeing the given 'timestamp' as its "
      "starting date and time.\n"
      "The clock will continue to run from this timestamp. Please see the "
      "manpage (man faketime)\n"
      "for advanced options, such as stopping the wall clock and make it run "
      "faster or slower.\n"
      "\n"
      "The optional switches are:\n"
      "  -m                  : Use the multi-threaded version of libfaketime\n"
      "  -f                  : Use the advanced timestamp specification format "
      "(see manpage)\n"
      "  --exclude-monotonic : Prevent monotonic clock from drifting (not the "
      "raw monotonic one)\n"
      "  --date-prog PROG    : Use specified GNU-compatible implementation of "
      "'date' program\n"
      "\n"
      "Examples:\n"
      "%s 'last friday 5 pm' /bin/date\n"
      "%s '2008-12-24 08:15:42' /bin/date\n"
      "%s -f '+2,5y x10,0' /bin/bash -c 'date; while true; do echo $SECONDS ; "
      "sleep 1 ; done'\n"
      "%s -f '+2,5y x0,50' /bin/bash -c 'date; while true; do echo $SECONDS ; "
      "sleep 1 ; done'\n"
      "%s -f '+2,5y i2,0' /bin/bash -c 'date; while true; do date; sleep 1 ; "
      "done'\n"
      "In this single case all spawned processes will use the same global "
      "clock\n"
      "without restarting it at the start of each process.\n\n"
      "(Please note that it depends on your locale settings whether . or , has "
      "to be used for fractions)\n"
      "\n",
      name, name, name, name, name, name);
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    -0x8(%rbp),%rsi
mov    -0x8(%rbp),%rdx
mov    -0x8(%rbp),%rcx
mov    -0x8(%rbp),%r8
mov    -0x8(%rbp),%r9
mov    -0x8(%rbp),%rax
lea    0xec5(%rip),%rdi
mov    %rax,(%rsp)
call   1030 <printf@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<usage>:
push   %rax
mov    %rdi,%rcx
mov    %rdi,(%rsp)
lea    0xee1(%rip),%rdi
mov    %rcx,%rsi
mov    %rcx,%rdx
mov    %rcx,%r8
mov    %rcx,%r9
call   1030 <printf@plt>
pop    %rax
ret

LLVM IR (-O0):
@.str = [1311 x i8] c"\0AUsage: %s [switches] <timestamp> <program with arguments>\0A\0AThis will run the specified 'program' with the given 'arguments'.\0AThe program will be tricked into seeing the given 'timestamp' as its starting date and time.\0AThe clock will continue to run from this timestamp. Please see the manpage (man faketime)\0Afor advanced options, such as stopping the wall clock and make it run faster or slower.\0A\0AThe optional switches are:\0A -m : Use the multi-threaded version of libfaketime\0A -f : Use the advanced timestamp specification format (see manpage)\0A --exclude-monotonic : Prevent monotonic clock from drifting (not the raw monotonic one)\0A --date-prog PROG : Use specified GNU-compatible implementation of 'date' program\0A\0AExamples:\0A%s 'last friday 5 pm' /bin/date\0A%s '2008-12-24 08:15:42' /bin/date\0A%s -f '+2,5y x10,0' /bin/bash -c 'date; while true; do echo $SECONDS ; sleep 1 ; done'\0A%s -f '+2,5y x0,50' /bin/bash -c 'date; while true; do echo $SECONDS ; sleep 1 ; done'\0A%s -f '+2,5y i2,0' /bin/bash -c 'date; while true; do date; sleep 1 ; done'\0AIn this single case all spawned processes will use the same global clock\0Awithout restarting it at the start of each process.\0A\0A(Please note that it depends on your locale settings whether . or , has to be used for fractions)\0A\0A\00"
define void @usage(i8* %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = load i8*, i8** %2
%4 = load i8*, i8** %2
%5 = load i8*, i8** %2
%6 = load i8*, i8** %2
%7 = load i8*, i8** %2
%8 = load i8*, i8** %2
%9 = call i32 @printf(i8* getelementptr inbounds ([1311 x i8], [1311 x i8]* @.str, i64 0, i64 0), i8* %3, i8* %4, i8* %5, i8* %6, i8* %7, i8* %8)
ret void
}

LLVM IR (-O2):
@.str = [1311 x i8] c"\0AUsage: %s [switches] <timestamp> <program with arguments>\0A\0AThis will run the specified 'program' with the given 'arguments'.\0AThe program will be tricked into seeing the given 'timestamp' as its starting date and time.\0AThe clock will continue to run from this timestamp. Please see the manpage (man faketime)\0Afor advanced options, such as stopping the wall clock and make it run faster or slower.\0A\0AThe optional switches are:\0A -m : Use the multi-threaded version of libfaketime\0A -f : Use the advanced timestamp specification format (see manpage)\0A --exclude-monotonic : Prevent monotonic clock from drifting (not the raw monotonic one)\0A --date-prog PROG : Use specified GNU-compatible implementation of 'date' program\0A\0AExamples:\0A%s 'last friday 5 pm' /bin/date\0A%s '2008-12-24 08:15:42' /bin/date\0A%s -f '+2,5y x10,0' /bin/bash -c 'date; while true; do echo $SECONDS ; sleep 1 ; done'\0A%s -f '+2,5y x0,50' /bin/bash -c 'date; while true; do echo $SECONDS ; sleep 1 ; done'\0A%s -f '+2,5y i2,0' /bin/bash -c 'date; while true; do date; sleep 1 ; done'\0AIn this single case all spawned processes will use the same global clock\0Awithout restarting it at the start of each process.\0A\0A(Please note that it depends on your locale settings whether . or , has to be used for fractions)\0A\0A\00"
define void @usage(i8* %0) {
%2 = tail call i32 @printf(i8* getelementptr inbounds ([1311 x i8], [1311 x i8]* @.str, i64 0, i64 0), i8* %0, i8* %0, i8* %0, i8* %0, i8* %0, i8* %0)
ret void
}