#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*/ fprintf(int /*<<< orphan*/, char *);
int /*<<< orphan*/ stderr;
void show_usage(void) {
  fprintf(
      stderr,
      "susetest config <subcommand> [--filename <path>] args ...\n"
      "\n"
      "Subcommands:\n"
      "  create name1=value name2=\"quoted-value\" ...\n"
      "     Create a new config file, optionally setting global attributes\n"
      "  add-group [--group <group-path>] type=name [attr=value] ...\n"
      "     Create a named group (a node, a network), optionally setting node "
      "attributes\n"
      "  clear-attr [--group <group-path>] name\n"
      "     Delete an attributes\n"
      "  set-attr [--group <group-path>] name1=value name2=\"quoted-value\" "
      "...\n"
      "     Explicitly set attributes\n"
      "  get-attr [--group <group-path>] name\n"
      "     Query an attribute. If the attribute is a list attribute,\n"
      "     only the first item will be printed\n"
      "  set-attr-list [--group <group-path>] name value1 value2 value3 ...\n"
      "     Explicitly set a list attribute, overwriting any previous values\n"
      "  append-attr-list [--group <group-path>] name value1 value2 value3 "
      "...\n"
      "     Append values to a list attribute\n"
      "  get-attr-list [--group <group-path>] name\n"
      "     Query a list attribute. Each item is printed on a separate line.\n"
      "  get-children [--group <group-path>] type\n"
      "     Print the name of all child groups of type \"type\"\n"
      "  delete\n"
      "     Delete the config file\n"
      "  help\n"
      "     Display this help message\n"
      "\n"
      "The config file can be specified the the --filename option, or through "
      "the\n"
      "TWOPENCE_CONFIG_PATH environment variable. If neither is given, it will "
      "default\n"
      "to susetest.conf in the current working directory\n"
      "\n"
      "Typical global attributes might be the default user to run commands "
      "as,\n"
      "or a timeout value. Typical node attributes may be the node's hostname\n"
      "or its IP address.\n");
}


x86 assembly (clang, -O0):
<show_usage>:
push   %rbp
mov    %rsp,%rbp
mov    0x2ec5(%rip),%rax
mov    (%rax),%edi
lea    0xedc(%rip),%rsi
call   1030 <fprintf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<show_usage>:
mov    0x2ec9(%rip),%rax
mov    (%rax),%edi
lea    0xee0(%rip),%rsi
jmp    1030 <fprintf@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [1549 x i8] c"susetest config <subcommand> [--filename <path>] args ...\0A\0ASubcommands:\0A create name1=value name2=\22quoted-value\22 ...\0A Create a new config file, optionally setting global attributes\0A add-group [--group <group-path>] type=name [attr=value] ...\0A Create a named group (a node, a network), optionally setting node attributes\0A clear-attr [--group <group-path>] name\0A Delete an attributes\0A set-attr [--group <group-path>] name1=value name2=\22quoted-value\22 ...\0A Explicitly set attributes\0A get-attr [--group <group-path>] name\0A Query an attribute. If the attribute is a list attribute,\0A only the first item will be printed\0A set-attr-list [--group <group-path>] name value1 value2 value3 ...\0A Explicitly set a list attribute, overwriting any previous values\0A append-attr-list [--group <group-path>] name value1 value2 value3 ...\0A Append values to a list attribute\0A get-attr-list [--group <group-path>] name\0A Query a list attribute. Each item is printed on a separate line.\0A get-children [--group <group-path>] type\0A Print the name of all child groups of type \22type\22\0A delete\0A Delete the config file\0A help\0A Display this help message\0A\0AThe config file can be specified the the --filename option, or through the\0ATWOPENCE_CONFIG_PATH environment variable. If neither is given, it will default\0Ato susetest.conf in the current working directory\0A\0ATypical global attributes might be the default user to run commands as,\0Aor a timeout value. Typical node attributes may be the node's hostname\0Aor its IP address.\0A\00"
define void @show_usage() {
%1 = load i32, i32* @stderr
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([1549 x i8], [1549 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [1549 x i8] c"susetest config <subcommand> [--filename <path>] args ...\0A\0ASubcommands:\0A create name1=value name2=\22quoted-value\22 ...\0A Create a new config file, optionally setting global attributes\0A add-group [--group <group-path>] type=name [attr=value] ...\0A Create a named group (a node, a network), optionally setting node attributes\0A clear-attr [--group <group-path>] name\0A Delete an attributes\0A set-attr [--group <group-path>] name1=value name2=\22quoted-value\22 ...\0A Explicitly set attributes\0A get-attr [--group <group-path>] name\0A Query an attribute. If the attribute is a list attribute,\0A only the first item will be printed\0A set-attr-list [--group <group-path>] name value1 value2 value3 ...\0A Explicitly set a list attribute, overwriting any previous values\0A append-attr-list [--group <group-path>] name value1 value2 value3 ...\0A Append values to a list attribute\0A get-attr-list [--group <group-path>] name\0A Query a list attribute. Each item is printed on a separate line.\0A get-children [--group <group-path>] type\0A Print the name of all child groups of type \22type\22\0A delete\0A Delete the config file\0A help\0A Display this help message\0A\0AThe config file can be specified the the --filename option, or through the\0ATWOPENCE_CONFIG_PATH environment variable. If neither is given, it will default\0Ato susetest.conf in the current working directory\0A\0ATypical global attributes might be the default user to run commands as,\0Aor a timeout value. Typical node attributes may be the node's hostname\0Aor its IP address.\0A\00"
define void @show_usage() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([1549 x i8], [1549 x i8]* @.str, i64 0, i64 0))
ret void
}