#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 *);
void usage(char *name) {
  printf("usage %s [options] [\"filter\"]\n"
         "-h\t\tthis text you see right here\n"
         "-V\t\tPrint version and exit.\n"
         "-H <Host/ip>\tTarget IP address default: 127.0.0.1\n"
         "-j <mcast>\tSend packets to multicast group\n"
         "-4\t\tForce IPv4 protocol.\n"
         "-6\t\tForce IPv6 protocol.\n"
         "-L <log>\tLog to syslog facility <log>\n"
         "-p <port>\tTarget port default 9995\n"
         "-d <usec>\tDelay in usec between packets. default 10\n"
         "-c <cnt>\tPacket count. default send all packets\n"
         "-b <bsize>\tSend buffer size.\n"
         "-r <input>\tread from file. default: stdin\n"
         "-f <filter>\tfilter syntaxfile\n"
         "-t <time>\ttime window for sending packets\n"
         "\t\tyyyy/MM/dd.hh:mm:ss[-yyyy/MM/dd.hh:mm:ss]\n",
         name);
}


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

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

LLVM IR (-O0):
@.str = [595 x i8] c"usage %s [options] [\22filter\22]\0A-h\09\09this text you see right here\0A-V\09\09Print version and exit.\0A-H <Host/ip>\09Target IP address default: 127.0.0.1\0A-j <mcast>\09Send packets to multicast group\0A-4\09\09Force IPv4 protocol.\0A-6\09\09Force IPv6 protocol.\0A-L <log>\09Log to syslog facility <log>\0A-p <port>\09Target port default 9995\0A-d <usec>\09Delay in usec between packets. default 10\0A-c <cnt>\09Packet count. default send all packets\0A-b <bsize>\09Send buffer size.\0A-r <input>\09read from file. default: stdin\0A-f <filter>\09filter syntaxfile\0A-t <time>\09time window for sending packets\0A\09\09yyyy/MM/dd.hh:mm:ss[-yyyy/MM/dd.hh:mm:ss]\0A\00"
define void @usage(i8* %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = load i8*, i8** %2
%4 = call i32 @printf(i8* getelementptr inbounds ([595 x i8], [595 x i8]* @.str, i64 0, i64 0), i8* %3)
ret void
}

LLVM IR (-O2):
@.str = [595 x i8] c"usage %s [options] [\22filter\22]\0A-h\09\09this text you see right here\0A-V\09\09Print version and exit.\0A-H <Host/ip>\09Target IP address default: 127.0.0.1\0A-j <mcast>\09Send packets to multicast group\0A-4\09\09Force IPv4 protocol.\0A-6\09\09Force IPv6 protocol.\0A-L <log>\09Log to syslog facility <log>\0A-p <port>\09Target port default 9995\0A-d <usec>\09Delay in usec between packets. default 10\0A-c <cnt>\09Packet count. default send all packets\0A-b <bsize>\09Send buffer size.\0A-r <input>\09read from file. default: stdin\0A-f <filter>\09filter syntaxfile\0A-t <time>\09time window for sending packets\0A\09\09yyyy/MM/dd.hh:mm:ss[-yyyy/MM/dd.hh:mm:ss]\0A\00"
define void @usage(i8* %0) {
%2 = tail call i32 @printf(i8* getelementptr inbounds ([595 x i8], [595 x i8]* @.str, i64 0, i64 0), i8* %0)
ret void
}