#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 *);
int /*<<< orphan*/ stderr;
void usage(char *progname) {
  fprintf(stderr,
          "usage: %s [options]\n"
          " -a val     request a one-shot alarm after 'val' seconds\n"
          " -A val     request a periodic alarm every 'val' seconds\n"
          " -c         query the ptp clock's capabilities\n"
          " -d name    device to open\n"
          " -e val     read 'val' external time stamp events\n"
          " -f val     adjust the ptp clock frequency by 'val' ppb\n"
          " -g         get the ptp clock time\n"
          " -h         prints this message\n"
          " -p val     enable output with a period of 'val' nanoseconds\n"
          " -P val     enable or disable (val=1|0) the system clock PPS\n"
          " -s         set the ptp clock time from the system time\n"
          " -t val     shift the ptp clock time by 'val' seconds\n",
          progname);
}


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 = [614 x i8] c"usage: %s [options]\0A -a val request a one-shot alarm after 'val' seconds\0A -A val request a periodic alarm every 'val' seconds\0A -c query the ptp clock's capabilities\0A -d name device to open\0A -e val read 'val' external time stamp events\0A -f val adjust the ptp clock frequency by 'val' ppb\0A -g get the ptp clock time\0A -h prints this message\0A -p val enable output with a period of 'val' nanoseconds\0A -P val enable or disable (val=1|0) the system clock PPS\0A -s set the ptp clock time from the system time\0A -t val shift the ptp clock time by 'val' seconds\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 ([614 x i8], [614 x i8]* @.str, i64 0, i64 0), i8* %4)
ret void
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [614 x i8] c"usage: %s [options]\0A -a val request a one-shot alarm after 'val' seconds\0A -A val request a periodic alarm every 'val' seconds\0A -c query the ptp clock's capabilities\0A -d name device to open\0A -e val read 'val' external time stamp events\0A -f val adjust the ptp clock frequency by 'val' ppb\0A -g get the ptp clock time\0A -h prints this message\0A -p val enable output with a period of 'val' nanoseconds\0A -P val enable or disable (val=1|0) the system clock PPS\0A -s set the ptp clock time from the system time\0A -t val shift the ptp clock time by 'val' seconds\0A\00"
define void @usage(i8* %0) {
%2 = load i32, i32* @stderr
%3 = tail call i32 @fprintf(i32 %2, i8* getelementptr inbounds ([614 x i8], [614 x i8]* @.str, i64 0, i64 0), i8* %0)
ret void
}