#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(int);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *);
int /*<<< orphan*/ stderr;
void usage(void) {
  fprintf(
      stderr,
      "usage: numactl [--all | -a] [--interleave= | -i <nodes>] [--preferred= "
      "| -p <node>]\n"
      "               [--physcpubind= | -C <cpus>] [--cpunodebind= | -N "
      "<nodes>]\n"
      "               [--membind= | -m <nodes>] [--localalloc | -l] command "
      "args ...\n"
      "       numactl [--show | -s]\n"
      "       numactl [--hardware | -H]\n"
      "       numactl [--length | -l <length>] [--offset | -o <offset>] "
      "[--shmmode | -M <shmmode>]\n"
      "               [--strict | -t]\n"
      "               [--shmid | -I <id>] --shm | -S <shmkeyfile>\n"
      "               [--shmid | -I <id>] --file | -f <tmpfsfile>\n"
      "               [--huge | -u] [--touch | -T] \n"
      "               memory policy | --dump | -d | --dump-nodes | -D\n"
      "\n"
      "memory policy is --interleave | -i, --preferred | -p, --membind | -m, "
      "--localalloc | -l\n"
      "<nodes> is a comma delimited list of node numbers or A-B ranges or "
      "all.\n"
      "Instead of a number a node can also be:\n"
      "  netdev:DEV the node connected to network device DEV\n"
      "  file:PATH  the node the block device of path is connected to\n"
      "  ip:HOST    the node of the network device host routes through\n"
      "  block:PATH the node of block device path\n"
      "  pci:[seg:]bus:dev[:func] The node of a PCI device\n"
      "<cpus> is a comma delimited list of cpu numbers or A-B ranges or all\n"
      "all ranges can be inverted with !\n"
      "all numbers and ranges can be made cpuset-relative with +\n"
      "the old --cpubind argument is deprecated.\n"
      "use --cpunodebind or --physcpubind instead\n"
      "<length> can have g (GB), m (MB) or k (KB) suffixes\n");
  exit(1);
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
mov    0x2eb5(%rip),%rax
mov    (%rax),%edi
lea    0xecc(%rip),%rsi
call   1030 <fprintf@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<usage>:
push   %rax
mov    0x2eb8(%rip),%rax
mov    (%rax),%edi
lea    0xecf(%rip),%rsi
call   1030 <fprintf@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [1423 x i8] c"usage: numactl [--all | -a] [--interleave= | -i <nodes>] [--preferred= | -p <node>]\0A [--physcpubind= | -C <cpus>] [--cpunodebind= | -N <nodes>]\0A [--membind= | -m <nodes>] [--localalloc | -l] command args ...\0A numactl [--show | -s]\0A numactl [--hardware | -H]\0A numactl [--length | -l <length>] [--offset | -o <offset>] [--shmmode | -M <shmmode>]\0A [--strict | -t]\0A [--shmid | -I <id>] --shm | -S <shmkeyfile>\0A [--shmid | -I <id>] --file | -f <tmpfsfile>\0A [--huge | -u] [--touch | -T] \0A memory policy | --dump | -d | --dump-nodes | -D\0A\0Amemory policy is --interleave | -i, --preferred | -p, --membind | -m, --localalloc | -l\0A<nodes> is a comma delimited list of node numbers or A-B ranges or all.\0AInstead of a number a node can also be:\0A netdev:DEV the node connected to network device DEV\0A file:PATH the node the block device of path is connected to\0A ip:HOST the node of the network device host routes through\0A block:PATH the node of block device path\0A pci:[seg:]bus:dev[:func] The node of a PCI device\0A<cpus> is a comma delimited list of cpu numbers or A-B ranges or all\0Aall ranges can be inverted with !\0Aall numbers and ranges can be made cpuset-relative with +\0Athe old --cpubind argument is deprecated.\0Ause --cpunodebind or --physcpubind instead\0A<length> can have g (GB), m (MB) or k (KB) suffixes\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([1423 x i8], [1423 x i8]* @.str, i64 0, i64 0))
%3 = call i32 @exit(i32 1)
unreachable
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [1423 x i8] c"usage: numactl [--all | -a] [--interleave= | -i <nodes>] [--preferred= | -p <node>]\0A [--physcpubind= | -C <cpus>] [--cpunodebind= | -N <nodes>]\0A [--membind= | -m <nodes>] [--localalloc | -l] command args ...\0A numactl [--show | -s]\0A numactl [--hardware | -H]\0A numactl [--length | -l <length>] [--offset | -o <offset>] [--shmmode | -M <shmmode>]\0A [--strict | -t]\0A [--shmid | -I <id>] --shm | -S <shmkeyfile>\0A [--shmid | -I <id>] --file | -f <tmpfsfile>\0A [--huge | -u] [--touch | -T] \0A memory policy | --dump | -d | --dump-nodes | -D\0A\0Amemory policy is --interleave | -i, --preferred | -p, --membind | -m, --localalloc | -l\0A<nodes> is a comma delimited list of node numbers or A-B ranges or all.\0AInstead of a number a node can also be:\0A netdev:DEV the node connected to network device DEV\0A file:PATH the node the block device of path is connected to\0A ip:HOST the node of the network device host routes through\0A block:PATH the node of block device path\0A pci:[seg:]bus:dev[:func] The node of a PCI device\0A<cpus> is a comma delimited list of cpu numbers or A-B ranges or all\0Aall ranges can be inverted with !\0Aall numbers and ranges can be made cpuset-relative with +\0Athe old --cpubind argument is deprecated.\0Ause --cpunodebind or --physcpubind instead\0A<length> can have g (GB), m (MB) or k (KB) suffixes\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([1423 x i8], [1423 x i8]* @.str, i64 0, i64 0))
%3 = tail call i32 @exit(i32 1)
unreachable
}