#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] \n"
      "-h\t\tthis text you see right here\n"
      "-u userid\tChange user to userid\n"
      "-g groupid\tChange group to groupid\n"
      "-w\t\tSync file rotation with next 5min (default) interval\n"
      "-t interval\tset the interval to rotate sfcapd files\n"
      "-b host\t\tbind socket to host/IP addr\n"
      "-j mcastgroup\tJoin multicast group <mcastgroup>\n"
      "-p portnum\tlisten on port portnum\n"
      "-l logdir \tset the output directory. (no default) \n"
      "-S subdir\tSub directory format. see nfcapd(1) for format\n"
      "-I Ident\tset the ident string for stat file. (default 'none')\n"
      "-H Add port histogram data to flow file.(default 'no')\n"
      "-n Ident,IP,logdir\tAdd this flow source - multiple streams\n"
      "-P pidfile\tset the PID file\n"
      "-R IP[/port]\tRepeat incoming packets to IP address/port\n"
      "-x process\tlaunch process after a new file becomes available\n"
      "-z\t\tCompress flows in output file.\n"
      "-B bufflen\tSet socket buffer to bufflen bytes\n"
      "-e\t\tExpire data at each cycle.\n"
      "-D\t\tFork to background\n"
      "-E\t\tPrint extended format of sflow data. for debugging purpose only.\n"
      "-4\t\tListen on IPv4 (default).\n"
      "-6\t\tListen on IPv6.\n"
      "-V\t\tPrint version and exit.\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 = [1060 x i8] c"usage %s [options] \0A-h\09\09this text you see right here\0A-u userid\09Change user to userid\0A-g groupid\09Change group to groupid\0A-w\09\09Sync file rotation with next 5min (default) interval\0A-t interval\09set the interval to rotate sfcapd files\0A-b host\09\09bind socket to host/IP addr\0A-j mcastgroup\09Join multicast group <mcastgroup>\0A-p portnum\09listen on port portnum\0A-l logdir \09set the output directory. (no default) \0A-S subdir\09Sub directory format. see nfcapd(1) for format\0A-I Ident\09set the ident string for stat file. (default 'none')\0A-H Add port histogram data to flow file.(default 'no')\0A-n Ident,IP,logdir\09Add this flow source - multiple streams\0A-P pidfile\09set the PID file\0A-R IP[/port]\09Repeat incoming packets to IP address/port\0A-x process\09launch process after a new file becomes available\0A-z\09\09Compress flows in output file.\0A-B bufflen\09Set socket buffer to bufflen bytes\0A-e\09\09Expire data at each cycle.\0A-D\09\09Fork to background\0A-E\09\09Print extended format of sflow data. for debugging purpose only.\0A-4\09\09Listen on IPv4 (default).\0A-6\09\09Listen on IPv6.\0A-V\09\09Print version and exit.\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 ([1060 x i8], [1060 x i8]* @.str, i64 0, i64 0), i8* %3)
ret void
}

LLVM IR (-O2):
@.str = [1060 x i8] c"usage %s [options] \0A-h\09\09this text you see right here\0A-u userid\09Change user to userid\0A-g groupid\09Change group to groupid\0A-w\09\09Sync file rotation with next 5min (default) interval\0A-t interval\09set the interval to rotate sfcapd files\0A-b host\09\09bind socket to host/IP addr\0A-j mcastgroup\09Join multicast group <mcastgroup>\0A-p portnum\09listen on port portnum\0A-l logdir \09set the output directory. (no default) \0A-S subdir\09Sub directory format. see nfcapd(1) for format\0A-I Ident\09set the ident string for stat file. (default 'none')\0A-H Add port histogram data to flow file.(default 'no')\0A-n Ident,IP,logdir\09Add this flow source - multiple streams\0A-P pidfile\09set the PID file\0A-R IP[/port]\09Repeat incoming packets to IP address/port\0A-x process\09launch process after a new file becomes available\0A-z\09\09Compress flows in output file.\0A-B bufflen\09Set socket buffer to bufflen bytes\0A-e\09\09Expire data at each cycle.\0A-D\09\09Fork to background\0A-E\09\09Print extended format of sflow data. for debugging purpose only.\0A-4\09\09Listen on IPv4 (default).\0A-6\09\09Listen on IPv6.\0A-V\09\09Print version and exit.\0A\00"
define void @usage(i8* %0) {
%2 = tail call i32 @printf(i8* getelementptr inbounds ([1060 x i8], [1060 x i8]* @.str, i64 0, i64 0), i8* %0)
ret void
}