#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*/ fflush(int /*<<< orphan*/);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *);
int /*<<< orphan*/ stderr;
void usage(char *pgm) {
  {
    fprintf(stderr,
            "Options are as follows\n"
            "--mode client or server\n"
            "--smac for src-mac [required only with -proto raw]\n"
            "--dmac for dest-mac [required only with -proto raw]\n"
            "--sip for self ip address [required only with -proto raw]\n"
            "--dip for remote ip address [required with any -proto]\n"
            "--intf for interface name [required only with -proto raw]\n"
            "--proto for udp or tcp or gre, defaults to gre\n"
            "--time for runtime of the sender (client) in seconds\n"
            "--bind for ip address to bind to in case of udp\n"
            "--pps for packets per second (1352 byte gre or 1328 byte ip)\n"
            "--int for interval in msec, ie send pps/int amount of packets per "
            "intveral\n"
            "--win what multiple of --int for incrementing window\n"
            "--port port number to be used (default is 21234)\n"
            "--sport source port number to be used (default is 21234)\n"
            "--nosyn if we want to ride on a previously created tcp connection "
            "(dont send SYN)\n");
    fflush(stderr);
  };
}


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

x86 assembly (clang, -O2):
<usage>:
push   %rbx
mov    0x2eb8(%rip),%rbx
mov    (%rbx),%edi
lea    0xecf(%rip),%rsi
call   1030 <fprintf@plt>
mov    (%rbx),%edi
pop    %rbx
jmp    1040 <fflush@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [847 x i8] c"Options are as follows\0A--mode client or server\0A--smac for src-mac [required only with -proto raw]\0A--dmac for dest-mac [required only with -proto raw]\0A--sip for self ip address [required only with -proto raw]\0A--dip for remote ip address [required with any -proto]\0A--intf for interface name [required only with -proto raw]\0A--proto for udp or tcp or gre, defaults to gre\0A--time for runtime of the sender (client) in seconds\0A--bind for ip address to bind to in case of udp\0A--pps for packets per second (1352 byte gre or 1328 byte ip)\0A--int for interval in msec, ie send pps/int amount of packets per intveral\0A--win what multiple of --int for incrementing window\0A--port port number to be used (default is 21234)\0A--sport source port number to be used (default is 21234)\0A--nosyn if we want to ride on a previously created tcp connection (dont send SYN)\0A\00"
define void @usage(i8* %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = load i32, i32* @stderr
%4 = call i32 @fprintf(i32 %3, i8* getelementptr inbounds ([847 x i8], [847 x i8]* @.str, i64 0, i64 0))
%5 = load i32, i32* @stderr
%6 = call i32 @fflush(i32 %5)
ret void
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [847 x i8] c"Options are as follows\0A--mode client or server\0A--smac for src-mac [required only with -proto raw]\0A--dmac for dest-mac [required only with -proto raw]\0A--sip for self ip address [required only with -proto raw]\0A--dip for remote ip address [required with any -proto]\0A--intf for interface name [required only with -proto raw]\0A--proto for udp or tcp or gre, defaults to gre\0A--time for runtime of the sender (client) in seconds\0A--bind for ip address to bind to in case of udp\0A--pps for packets per second (1352 byte gre or 1328 byte ip)\0A--int for interval in msec, ie send pps/int amount of packets per intveral\0A--win what multiple of --int for incrementing window\0A--port port number to be used (default is 21234)\0A--sport source port number to be used (default is 21234)\0A--nosyn if we want to ride on a previously created tcp connection (dont send SYN)\0A\00"
define void @usage(i8* nocapture readnone %0) {
%2 = load i32, i32* @stderr
%3 = tail call i32 @fprintf(i32 %2, i8* getelementptr inbounds ([847 x i8], [847 x i8]* @.str, i64 0, i64 0))
%4 = load i32, i32* @stderr
%5 = tail call i32 @fflush(i32 %4)
ret void
}