#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 *, char *);
void usage(char *file) {
  printf("\nUsage: [sudo] %s -a <tcp server address> -p <tcp server port> -m "
         "<mode number> [-t <HH:mm:ss> -i <interval in seconds>]\n\n"
         "-h\t\t\t\tshow help information.\n"
         "-t <HH:mm:ss>\t\t\tset the timer start point.(default next "
         "secs(secs%%5==0))\n"
         "-i <interval in seconds>\tset the timer interval.(default 5s)\n"
         "-a <tcp server address>\t\tset the tcp server address.\n"
         "-p <tcp server port>\t\tset the tcp server port.(default 8888)\n"
         "-m <mode number>\t\tset the mode to get time(default 0) :\n"
         "\t\t\t\t\t-m 0 means system time.\n"
         "\t\t\t\t\t-m 1 means pcie time from driver directly.\n"
         "\t\t\t\t\t-m 2 means pcie time from hypercall.\n"
         "\t\t\t\t\t-m 3 means reference time from timer, only in integer "
         "interval.\n"
         "\nExample: sudo %s -t 8:30:0 -i 5.3 -m 2 -a 192.168.1.153 -p 8885\n",
         file, file);
}


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
lea    0xed5(%rip),%rdi
call   1030 <printf@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<usage>:
mov    %rdi,%rdx
lea    0xee6(%rip),%rdi
mov    %rdx,%rsi
jmp    1030 <printf@plt>

LLVM IR (-O0):
@.str = [710 x i8] c"\0AUsage: [sudo] %s -a <tcp server address> -p <tcp server port> -m <mode number> [-t <HH:mm:ss> -i <interval in seconds>]\0A\0A-h\09\09\09\09show help information.\0A-t <HH:mm:ss>\09\09\09set the timer start point.(default next secs(secs%%5==0))\0A-i <interval in seconds>\09set the timer interval.(default 5s)\0A-a <tcp server address>\09\09set the tcp server address.\0A-p <tcp server port>\09\09set the tcp server port.(default 8888)\0A-m <mode number>\09\09set the mode to get time(default 0) :\0A\09\09\09\09\09-m 0 means system time.\0A\09\09\09\09\09-m 1 means pcie time from driver directly.\0A\09\09\09\09\09-m 2 means pcie time from hypercall.\0A\09\09\09\09\09-m 3 means reference time from timer, only in integer interval.\0A\0AExample: sudo %s -t 8:30:0 -i 5.3 -m 2 -a 192.168.1.153 -p 8885\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 = call i32 @printf(i8* getelementptr inbounds ([710 x i8], [710 x i8]* @.str, i64 0, i64 0), i8* %3, i8* %4)
ret void
}

LLVM IR (-O2):
@.str = [710 x i8] c"\0AUsage: [sudo] %s -a <tcp server address> -p <tcp server port> -m <mode number> [-t <HH:mm:ss> -i <interval in seconds>]\0A\0A-h\09\09\09\09show help information.\0A-t <HH:mm:ss>\09\09\09set the timer start point.(default next secs(secs%%5==0))\0A-i <interval in seconds>\09set the timer interval.(default 5s)\0A-a <tcp server address>\09\09set the tcp server address.\0A-p <tcp server port>\09\09set the tcp server port.(default 8888)\0A-m <mode number>\09\09set the mode to get time(default 0) :\0A\09\09\09\09\09-m 0 means system time.\0A\09\09\09\09\09-m 1 means pcie time from driver directly.\0A\09\09\09\09\09-m 2 means pcie time from hypercall.\0A\09\09\09\09\09-m 3 means reference time from timer, only in integer interval.\0A\0AExample: sudo %s -t 8:30:0 -i 5.3 -m 2 -a 192.168.1.153 -p 8885\0A\00"
define void @usage(i8* %0) {
%2 = tail call i32 @printf(i8* getelementptr inbounds ([710 x i8], [710 x i8]* @.str, i64 0, i64 0), i8* %0, i8* %0)
ret void
}