#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*/ EXIT_FAILURE;
int /*<<< orphan*/ exit(int /*<<< orphan*/);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *, ...);
int /*<<< orphan*/ printmsd_Format();
int /*<<< orphan*/ stderr;
void usage(void) {
  fprintf(stderr,
          "\n"
          "The Partitioner tool -- a program to convert an MSD net system in a "
          "set of two (or three) level net systems\n"
          "Copyright (C) 2015 Alessandro Beggiato\n"
          "\n"
          "This program comes with ABSOLUTELY NO WARRANTY.  This is free "
          "software, and you\n"
          "are welcome to redistribute it under certain conditions.  You "
          "should have\n"
          "received a copy of the GNU General Public License along with this "
          "program.  If\n"
          "not, see <http://www.gnu.org/licenses/>.\n"
          "\n"
          "\n"
          "Usage: partition [OPTIONS] NETFILE POLICYFILE\n"
          "\n"
          "Argument NETFILE is a path to the .ll_net input file.\n"
          "Argument POLICYFILE is a path to the .msd policy file.\n"
          "Available options: \n"
          " -m \t produces output for MultiUBIC (default is for Ubic2)\n");
  printmsd_Format();
  fprintf(stderr, "Branch eager v0.1, compiled %s\n", "Mar 15 2022");
  exit(EXIT_FAILURE);
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
mov    0x2ea5(%rip),%rax
mov    (%rax),%edi
lea    0xebc(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    $0x0,%al
call   1040 <printmsd_Format@plt>
mov    0x2e87(%rip),%rax
mov    (%rax),%edi
lea    0x1133(%rip),%rsi
lea    0x114c(%rip),%rdx
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    0x2e61(%rip),%rax
mov    (%rax),%edi
call   1050 <exit@plt>

x86 assembly (clang, -O2):
<usage>:
push   %rbx
mov    0x2ea8(%rip),%rbx
mov    (%rbx),%edi
lea    0xebf(%rip),%rsi
xor    %eax,%eax
call   1030 <fprintf@plt>
xor    %eax,%eax
call   1040 <printmsd_Format@plt>
mov    (%rbx),%edi
lea    0x113d(%rip),%rsi
lea    0x1156(%rip),%rdx
xor    %eax,%eax
call   1030 <fprintf@plt>
mov    0x2e6b(%rip),%rax
mov    (%rax),%edi
call   1050 <exit@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [661 x i8] c"\0AThe Partitioner tool -- a program to convert an MSD net system in a set of two (or three) level net systems\0ACopyright (C) 2015 Alessandro Beggiato\0A\0AThis program comes with ABSOLUTELY NO WARRANTY. This is free software, and you\0Aare welcome to redistribute it under certain conditions. You should have\0Areceived a copy of the GNU General Public License along with this program. If\0Anot, see <http://www.gnu.org/licenses/>.\0A\0A\0AUsage: partition [OPTIONS] NETFILE POLICYFILE\0A\0AArgument NETFILE is a path to the .ll_net input file.\0AArgument POLICYFILE is a path to the .msd policy file.\0AAvailable options: \0A -m \09 produces output for MultiUBIC (default is for Ubic2)\0A\00"
@.str.1 = [32 x i8] c"Branch eager v0.1, compiled %s\0A\00"
@.str.2 = [12 x i8] c"Mar 15 2022\00"
@EXIT_FAILURE = global i32 0
define void @usage() {
%1 = load i32, i32* @stderr
%2 = call i32 (i32, i8*, ...) @fprintf(i32 %1, i8* getelementptr inbounds ([661 x i8], [661 x i8]* @.str, i64 0, i64 0))
%3 = call i32 (...) @printmsd_Format()
%4 = load i32, i32* @stderr
%5 = call i32 (i32, i8*, ...) @fprintf(i32 %4, i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.2, i64 0, i64 0))
%6 = load i32, i32* @EXIT_FAILURE
%7 = call i32 @exit(i32 %6)
unreachable
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [661 x i8] c"\0AThe Partitioner tool -- a program to convert an MSD net system in a set of two (or three) level net systems\0ACopyright (C) 2015 Alessandro Beggiato\0A\0AThis program comes with ABSOLUTELY NO WARRANTY. This is free software, and you\0Aare welcome to redistribute it under certain conditions. You should have\0Areceived a copy of the GNU General Public License along with this program. If\0Anot, see <http://www.gnu.org/licenses/>.\0A\0A\0AUsage: partition [OPTIONS] NETFILE POLICYFILE\0A\0AArgument NETFILE is a path to the .ll_net input file.\0AArgument POLICYFILE is a path to the .msd policy file.\0AAvailable options: \0A -m \09 produces output for MultiUBIC (default is for Ubic2)\0A\00"
@.str.1 = [32 x i8] c"Branch eager v0.1, compiled %s\0A\00"
@.str.2 = [12 x i8] c"Mar 15 2022\00"
@EXIT_FAILURE = global i32 0
define void @usage() {
%1 = load i32, i32* @stderr
%2 = tail call i32 (i32, i8*, ...) @fprintf(i32 %1, i8* getelementptr inbounds ([661 x i8], [661 x i8]* @.str, i64 0, i64 0))
%3 = tail call i32 (...) @printmsd_Format()
%4 = load i32, i32* @stderr
%5 = tail call i32 (i32, i8*, ...) @fprintf(i32 %4, i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.2, i64 0, i64 0))
%6 = load i32, i32* @EXIT_FAILURE
%7 = tail call i32 @exit(i32 %6)
unreachable
}