#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 *);
void usage(void) {
  printf(
      "Usage:\n  ipsec pool "
      "--status|--add|--replace|--del|--resize|--leases|--purge [options]\n  "
      "ipsec pool --showattr|--statusattr|--addattr|--delattr [options]\n  \n  "
      "ipsec pool --status\n    Show a list of installed pools with statistics "
      "plus nameserver info.\n  \n  ipsec pool --statusattr [--hexout]\n    "
      "Show a list of all attributes stored in the database with the values\n  "
      "  converted to the correct format if the type is known by --showattr "
      "or\n    in hex format otherwise.\n      hexout:  Output all values in "
      "hex format\n  \n  ipsec pool --showattr\n    Show a keyword list of the "
      "major attribute types.\n  \n  ipsec pool --add <name> --start <start> "
      "--end <end> [--timeout <timeout>]\n  ipsec pool --replace <name> "
      "--start <start> --end <end> [--timeout <timeout>]\n    Add a new pool "
      "to or replace an existing pool in the database.\n      name:    Name of "
      "the pool, as used in ipsec.conf rightsourceip=%%name\n      start:   "
      "Start address of the pool\n      end:     End address of the pool\n     "
      " timeout: Lease time in hours, 0 for static leases\n  \n  ipsec pool "
      "--add <name> --addresses <file> [--timeout <timeout>]\n  ipsec pool "
      "--replace <name> --addresses <file> [--timeout <timeout>]\n    Add a "
      "new pool to or replace an existing pool in the database.\n      name:   "
      " Name of the pool, as used in ipsec.conf rightsourceip=%%name\n      "
      "file:    File newline separated addresses for the pool are read from.\n "
      "              Optionally each address can be pre-assigned to a "
      "roadwarrior\n               identity, e.g. "
      "10.231.14.2=alice@strongswan.org.\n               If a - (hyphen) is "
      "given instead of a file name, the addresses\n               are read "
      "from STDIN. Reading addresses stops at the end of file\n               "
      "or an empty line. Pools created with this command can not be\n          "
      "     resized.\n      timeout: Lease time in hours, 0 for static "
      "leases\n  \n  ipsec pool --addattr <type> [--pool <name> [--identity "
      "<id>]]\n             --addr|--mask|--server|--subnet|--string|--hex "
      "<value>\n    Add a new attribute to the database. Attributes can be "
      "bundled by using\n    the --pool and --identity options. If a bundle "
      "matches a peer the contained\n    attributes are sent to that peer "
      "instead of the global ones.\n      type:    a keyword from --showattr "
      "or a number from the range 1..32767\n      name:    the name of the "
      "pool this attribute is added to\n      id:      identity of the peer "
      "this attribute is bound to\n      addr:    IPv4 or IPv6 address\n      "
      "mask:    IPv4 or IPv6 netmask (synonym for --addr)\n      server:  IPv4 "
      "or IPv6 address of a server (synonym for --addr)\n      subnet:  IPv4 "
      "subnet[s] given by network/mask[,network/mask,...]\n      string:  "
      "value of a string-type attribute\n      hex:     hex value of any "
      "attribute\n  \n  ipsec pool --del <name>\n    Delete a pool from the "
      "database.\n      name:    Name of the pool to delete\n  \n  ipsec pool "
      "--delattr <type> [--pool <name> [--identity <id>]]\n             "
      "[--addr|--mask|--server|--subnet|--string|--hex <value>]\n    Delete a "
      "specific or all attributes of a given type from the database.\n      "
      "type:    a keyword from --showattr or a number from the range "
      "1..32767\n      name:    the name of the pool this attribute is added "
      "to\n      id:      identity of the peer this attribute is bound to\n    "
      "  addr:    IPv4 or IPv6 address\n      mask:    IPv4 or IPv6 netmask "
      "(synonym for --addr)\n      server:  IPv4 or IPv6 address of a server "
      "(synonym for --addr)\n      subnet:  IPv4 subnet[s] given by "
      "network/mask[,network/mask,...]\n      string:  value of a string-type "
      "attribute\n      hex:     hex value of any attribute\n  \n  ipsec pool "
      "--resize <name> --end <end>\n    Grow or shrink an existing pool.\n     "
      " name:    Name of the pool to resize\n      end:     New end address "
      "for the pool\n  \n  ipsec pool --leases [--filter <filter>] [--utc]\n   "
      " Show lease information using filters:\n      filter:  Filter string "
      "containing comma separated key=value filters,\n               e.g. "
      "id=alice@strongswan.org,addr=1.1.1.1\n                  pool:   name of "
      "the pool\n                  id:     assigned identity of the lease\n    "
      "              addr:   lease IP address\n                  tstamp: UNIX "
      "timestamp when lease was valid, as integer\n                  status: "
      "status of the lease: online|valid|expired\n      utc:    Show times in "
      "UTC instead of local time\n  \n  ipsec pool --purge <name>\n    Delete "
      "lease history of a pool:\n      name:    Name of the pool to purge\n  "
      "\n  ipsec pool --batch <file>\n    Read commands from a file and "
      "execute them atomically.\n      file:    File to read the newline "
      "separated commands from. Commands\n               appear as they are "
      "written on the command line, e.g.\n                  --replace mypool "
      "--start 10.0.0.1 --end 10.0.0.254\n                  --del dns\n        "
      "          --add dns --server 10.1.0.1\n                  --add dns "
      "--server 10.1.1.1\n               If a - (hyphen) is given as a file "
      "name, the commands are read\n               from STDIN. Readin commands "
      "stops at the end of file. Empty\n               lines are ignored. The "
      "file may not contain a --batch command.\n  \n");
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
lea    0xee5(%rip),%rdi
call   1030 <printf@plt>
pop    %rbp
ret

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

LLVM IR (-O0):
@.str = [5072 x i8] c"Usage:\0A ipsec pool --status|--add|--replace|--del|--resize|--leases|--purge [options]\0A ipsec pool --showattr|--statusattr|--addattr|--delattr [options]\0A \0A ipsec pool --status\0A Show a list of installed pools with statistics plus nameserver info.\0A \0A ipsec pool --statusattr [--hexout]\0A Show a list of all attributes stored in the database with the values\0A converted to the correct format if the type is known by --showattr or\0A in hex format otherwise.\0A hexout: Output all values in hex format\0A \0A ipsec pool --showattr\0A Show a keyword list of the major attribute types.\0A \0A ipsec pool --add <name> --start <start> --end <end> [--timeout <timeout>]\0A ipsec pool --replace <name> --start <start> --end <end> [--timeout <timeout>]\0A Add a new pool to or replace an existing pool in the database.\0A name: Name of the pool, as used in ipsec.conf rightsourceip=%%name\0A start: Start address of the pool\0A end: End address of the pool\0A timeout: Lease time in hours, 0 for static leases\0A \0A ipsec pool --add <name> --addresses <file> [--timeout <timeout>]\0A ipsec pool --replace <name> --addresses <file> [--timeout <timeout>]\0A Add a new pool to or replace an existing pool in the database.\0A name: Name of the pool, as used in ipsec.conf rightsourceip=%%name\0A file: File newline separated addresses for the pool are read from.\0A Optionally each address can be pre-assigned to a roadwarrior\0A identity, e.g. 10.231.14.2=alice@strongswan.org.\0A If a - (hyphen) is given instead of a file name, the addresses\0A are read from STDIN. Reading addresses stops at the end of file\0A or an empty line. Pools created with this command can not be\0A resized.\0A timeout: Lease time in hours, 0 for static leases\0A \0A ipsec pool --addattr <type> [--pool <name> [--identity <id>]]\0A --addr|--mask|--server|--subnet|--string|--hex <value>\0A Add a new attribute to the database. Attributes can be bundled by using\0A the --pool and --identity options. If a bundle matches a peer the contained\0A attributes are sent to that peer instead of the global ones.\0A type: a keyword from --showattr or a number from the range 1..32767\0A name: the name of the pool this attribute is added to\0A id: identity of the peer this attribute is bound to\0A addr: IPv4 or IPv6 address\0A mask: IPv4 or IPv6 netmask (synonym for --addr)\0A server: IPv4 or IPv6 address of a server (synonym for --addr)\0A subnet: IPv4 subnet[s] given by network/mask[,network/mask,...]\0A string: value of a string-type attribute\0A hex: hex value of any attribute\0A \0A ipsec pool --del <name>\0A Delete a pool from the database.\0A name: Name of the pool to delete\0A \0A ipsec pool --delattr <type> [--pool <name> [--identity <id>]]\0A [--addr|--mask|--server|--subnet|--string|--hex <value>]\0A Delete a specific or all attributes of a given type from the database.\0A type: a keyword from --showattr or a number from the range 1..32767\0A name: the name of the pool this attribute is added to\0A id: identity of the peer this attribute is bound to\0A addr: IPv4 or IPv6 address\0A mask: IPv4 or IPv6 netmask (synonym for --addr)\0A server: IPv4 or IPv6 address of a server (synonym for --addr)\0A subnet: IPv4 subnet[s] given by network/mask[,network/mask,...]\0A string: value of a string-type attribute\0A hex: hex value of any attribute\0A \0A ipsec pool --resize <name> --end <end>\0A Grow or shrink an existing pool.\0A name: Name of the pool to resize\0A end: New end address for the pool\0A \0A ipsec pool --leases [--filter <filter>] [--utc]\0A Show lease information using filters:\0A filter: Filter string containing comma separated key=value filters,\0A e.g. id=alice@strongswan.org,addr=1.1.1.1\0A pool: name of the pool\0A id: assigned identity of the lease\0A addr: lease IP address\0A tstamp: UNIX timestamp when lease was valid, as integer\0A status: status of the lease: online|valid|expired\0A utc: Show times in UTC instead of local time\0A \0A ipsec pool --purge <name>\0A Delete lease history of a pool:\0A name: Name of the pool to purge\0A \0A ipsec pool --batch <file>\0A Read commands from a file and execute them atomically.\0A file: File to read the newline separated commands from. Commands\0A appear as they are written on the command line, e.g.\0A --replace mypool --start 10.0.0.1 --end 10.0.0.254\0A --del dns\0A --add dns --server 10.1.0.1\0A --add dns --server 10.1.1.1\0A If a - (hyphen) is given as a file name, the commands are read\0A from STDIN. Readin commands stops at the end of file. Empty\0A lines are ignored. The file may not contain a --batch command.\0A \0A\00"
define void @usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([5072 x i8], [5072 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str = [5072 x i8] c"Usage:\0A ipsec pool --status|--add|--replace|--del|--resize|--leases|--purge [options]\0A ipsec pool --showattr|--statusattr|--addattr|--delattr [options]\0A \0A ipsec pool --status\0A Show a list of installed pools with statistics plus nameserver info.\0A \0A ipsec pool --statusattr [--hexout]\0A Show a list of all attributes stored in the database with the values\0A converted to the correct format if the type is known by --showattr or\0A in hex format otherwise.\0A hexout: Output all values in hex format\0A \0A ipsec pool --showattr\0A Show a keyword list of the major attribute types.\0A \0A ipsec pool --add <name> --start <start> --end <end> [--timeout <timeout>]\0A ipsec pool --replace <name> --start <start> --end <end> [--timeout <timeout>]\0A Add a new pool to or replace an existing pool in the database.\0A name: Name of the pool, as used in ipsec.conf rightsourceip=%%name\0A start: Start address of the pool\0A end: End address of the pool\0A timeout: Lease time in hours, 0 for static leases\0A \0A ipsec pool --add <name> --addresses <file> [--timeout <timeout>]\0A ipsec pool --replace <name> --addresses <file> [--timeout <timeout>]\0A Add a new pool to or replace an existing pool in the database.\0A name: Name of the pool, as used in ipsec.conf rightsourceip=%%name\0A file: File newline separated addresses for the pool are read from.\0A Optionally each address can be pre-assigned to a roadwarrior\0A identity, e.g. 10.231.14.2=alice@strongswan.org.\0A If a - (hyphen) is given instead of a file name, the addresses\0A are read from STDIN. Reading addresses stops at the end of file\0A or an empty line. Pools created with this command can not be\0A resized.\0A timeout: Lease time in hours, 0 for static leases\0A \0A ipsec pool --addattr <type> [--pool <name> [--identity <id>]]\0A --addr|--mask|--server|--subnet|--string|--hex <value>\0A Add a new attribute to the database. Attributes can be bundled by using\0A the --pool and --identity options. If a bundle matches a peer the contained\0A attributes are sent to that peer instead of the global ones.\0A type: a keyword from --showattr or a number from the range 1..32767\0A name: the name of the pool this attribute is added to\0A id: identity of the peer this attribute is bound to\0A addr: IPv4 or IPv6 address\0A mask: IPv4 or IPv6 netmask (synonym for --addr)\0A server: IPv4 or IPv6 address of a server (synonym for --addr)\0A subnet: IPv4 subnet[s] given by network/mask[,network/mask,...]\0A string: value of a string-type attribute\0A hex: hex value of any attribute\0A \0A ipsec pool --del <name>\0A Delete a pool from the database.\0A name: Name of the pool to delete\0A \0A ipsec pool --delattr <type> [--pool <name> [--identity <id>]]\0A [--addr|--mask|--server|--subnet|--string|--hex <value>]\0A Delete a specific or all attributes of a given type from the database.\0A type: a keyword from --showattr or a number from the range 1..32767\0A name: the name of the pool this attribute is added to\0A id: identity of the peer this attribute is bound to\0A addr: IPv4 or IPv6 address\0A mask: IPv4 or IPv6 netmask (synonym for --addr)\0A server: IPv4 or IPv6 address of a server (synonym for --addr)\0A subnet: IPv4 subnet[s] given by network/mask[,network/mask,...]\0A string: value of a string-type attribute\0A hex: hex value of any attribute\0A \0A ipsec pool --resize <name> --end <end>\0A Grow or shrink an existing pool.\0A name: Name of the pool to resize\0A end: New end address for the pool\0A \0A ipsec pool --leases [--filter <filter>] [--utc]\0A Show lease information using filters:\0A filter: Filter string containing comma separated key=value filters,\0A e.g. id=alice@strongswan.org,addr=1.1.1.1\0A pool: name of the pool\0A id: assigned identity of the lease\0A addr: lease IP address\0A tstamp: UNIX timestamp when lease was valid, as integer\0A status: status of the lease: online|valid|expired\0A utc: Show times in UTC instead of local time\0A \0A ipsec pool --purge <name>\0A Delete lease history of a pool:\0A name: Name of the pool to purge\0A \0A ipsec pool --batch <file>\0A Read commands from a file and execute them atomically.\0A file: File to read the newline separated commands from. Commands\0A appear as they are written on the command line, e.g.\0A --replace mypool --start 10.0.0.1 --end 10.0.0.254\0A --del dns\0A --add dns --server 10.1.0.1\0A --add dns --server 10.1.1.1\0A If a - (hyphen) is given as a file name, the commands are read\0A from STDIN. Readin commands stops at the end of file. Empty\0A lines are ignored. The file may not contain a --batch command.\0A \0A\00"
define void @usage() {
%1 = tail call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([5072 x i8], [5072 x i8]* @.str, i64 0, i64 0))
ret void
}