#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 print_usage(char *name) {
  printf("Usage: %s [Options]\n"
         "Options:\n"
         "  -i, --iface\tinterface name\n"
         "  -l, --list\tdevice multiplexing settings\n"
         "  -c, --check\tcheck multiplexing configuration\n"
         "  -r, --rline\tTransmit multiplexer bus line\n"
         "  -t, --tline\tReceive multiplexer bus line\n"
         "  -a, --mxrate\tSet multiplexing rate (use for SHDSL)\n"
         "  -o, --mxsmap\tSlotmap used for multiplexing (use for E1)\n"
         "  -j, --tfs\tTransmit Frame Start (TFS)\n"
         "  -g, --rfs\tReceive Frame Start (RFS)\n"
         "  -e, --mxen\tEnable(1)/disable(0) multiplexing on interface\n"
         "  -m, --clkm\tSet interface as clock master(1)/slave(0)\n"
         "  -d, --clkab\tSet clock domain: A(0), B(1)\n"
         "  -u, --clkr\tClock master uses local(0) or remote(1) oscillator\n",
         name);
}


x86 assembly (clang, -O0):
<print_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):
<print_usage>:
mov    %rdi,%rsi
lea    0xee6(%rip),%rdi
jmp    1030 <printf@plt>

LLVM IR (-O0):
@.str = [645 x i8] c"Usage: %s [Options]\0AOptions:\0A -i, --iface\09interface name\0A -l, --list\09device multiplexing settings\0A -c, --check\09check multiplexing configuration\0A -r, --rline\09Transmit multiplexer bus line\0A -t, --tline\09Receive multiplexer bus line\0A -a, --mxrate\09Set multiplexing rate (use for SHDSL)\0A -o, --mxsmap\09Slotmap used for multiplexing (use for E1)\0A -j, --tfs\09Transmit Frame Start (TFS)\0A -g, --rfs\09Receive Frame Start (RFS)\0A -e, --mxen\09Enable(1)/disable(0) multiplexing on interface\0A -m, --clkm\09Set interface as clock master(1)/slave(0)\0A -d, --clkab\09Set clock domain: A(0), B(1)\0A -u, --clkr\09Clock master uses local(0) or remote(1) oscillator\0A\00"
define void @print_usage(i8* %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = load i8*, i8** %2
%4 = call i32 @printf(i8* getelementptr inbounds ([645 x i8], [645 x i8]* @.str, i64 0, i64 0), i8* %3)
ret void
}

LLVM IR (-O2):
@.str = [645 x i8] c"Usage: %s [Options]\0AOptions:\0A -i, --iface\09interface name\0A -l, --list\09device multiplexing settings\0A -c, --check\09check multiplexing configuration\0A -r, --rline\09Transmit multiplexer bus line\0A -t, --tline\09Receive multiplexer bus line\0A -a, --mxrate\09Set multiplexing rate (use for SHDSL)\0A -o, --mxsmap\09Slotmap used for multiplexing (use for E1)\0A -j, --tfs\09Transmit Frame Start (TFS)\0A -g, --rfs\09Receive Frame Start (RFS)\0A -e, --mxen\09Enable(1)/disable(0) multiplexing on interface\0A -m, --clkm\09Set interface as clock master(1)/slave(0)\0A -d, --clkab\09Set clock domain: A(0), B(1)\0A -u, --clkr\09Clock master uses local(0) or remote(1) oscillator\0A\00"
define void @print_usage(i8* %0) {
%2 = tail call i32 @printf(i8* getelementptr inbounds ([645 x i8], [645 x i8]* @.str, i64 0, i64 0), i8* %0)
ret void
}