#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 /*<<< orphan*/);
int /*<<< orphan*/ printf(char *);
void print_usage() {
  printf(
      "Usage: ipscan [OPTION]...\n"
      "Search for IP addresses or CIDR blocks in STDIN and print out matched "
      "lines.\n"
      "\nLoading IP lists:\n"
      "  -i, --ip-list FILE\t\tload newline-separated list of IP addresses "
      "(CIDR notation supported)\n"
      "  -I, --ip-search IP\t\tadd the IP to the list of IP addresses searched "
      "for (CIDR notation is supported)\n"
      "\nSearch options:\n"
      "  -v, --invert-match\t\tinstead of printing lines that match the IP "
      "list, print ones that don't\n"
      "  -p, --match-position IDX\tinstead of checking against the first IP on "
      "the line, check against the IDXth\n"
      "\t\t\t\tSupports negative IDX, counting from right instead from left.\n"
      "\t\t\t\t(-1 = last IP, 1 = first IP, 0 = any position; default: 0)\n"
      "\nOutput control:\n"
      "  --dump-ips\t\t\tinstead of running the search dump the computed CIDR "
      "blocks to STDOUT\n"
      "  --verbose\t\t\tprint additional messages to STDERR (default)\n"
      "  --quiet\t\t\tdon't print messages to STDERR\n"
      "\nMiscellaneous:\n"
      "  -V, --version\t\t\tprint version information and exit\n"
      "  -h, --help\t\t\tprint this message and exit\n"
      "\nExamples:\n"
      "# Find all communication where neither source nor destination are in a "
      "private range:\n"
      "> cat /var/syslog/* | ipscan -v -I 10.0.0.0/8 -I 192.168.0.0/16 -I "
      "172.16.0.0/12 -p 0\n"
      "# Find all communication originating from China:\n"
      "> cat /var/syslog/* | ipscan -i chinese_ranges.txt -p 0\n\n"
      "# Simplify a list of IP ranges:\n"
      "> ipscan -I 10.0.0.0/24 -I 10.0.1.0/24 --dump-ips\n"
      "\t# outputs: 10.0.0.0/23\n");
  exit(0);
}


x86 assembly (clang, -O0):
<print_usage>:
push   %rbp
mov    %rsp,%rbp
lea    0xed5(%rip),%rdi
call   1030 <printf@plt>
xor    %edi,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<print_usage>:
push   %rax
lea    0xed8(%rip),%rdi
call   1030 <puts@plt>
xor    %edi,%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@.str = [1375 x i8] c"Usage: ipscan [OPTION]...\0ASearch for IP addresses or CIDR blocks in STDIN and print out matched lines.\0A\0ALoading IP lists:\0A -i, --ip-list FILE\09\09load newline-separated list of IP addresses (CIDR notation supported)\0A -I, --ip-search IP\09\09add the IP to the list of IP addresses searched for (CIDR notation is supported)\0A\0ASearch options:\0A -v, --invert-match\09\09instead of printing lines that match the IP list, print ones that don't\0A -p, --match-position IDX\09instead of checking against the first IP on the line, check against the IDXth\0A\09\09\09\09Supports negative IDX, counting from right instead from left.\0A\09\09\09\09(-1 = last IP, 1 = first IP, 0 = any position; default: 0)\0A\0AOutput control:\0A --dump-ips\09\09\09instead of running the search dump the computed CIDR blocks to STDOUT\0A --verbose\09\09\09print additional messages to STDERR (default)\0A --quiet\09\09\09don't print messages to STDERR\0A\0AMiscellaneous:\0A -V, --version\09\09\09print version information and exit\0A -h, --help\09\09\09print this message and exit\0A\0AExamples:\0A# Find all communication where neither source nor destination are in a private range:\0A> cat /var/syslog/* | ipscan -v -I 10.0.0.0/8 -I 192.168.0.0/16 -I 172.16.0.0/12 -p 0\0A# Find all communication originating from China:\0A> cat /var/syslog/* | ipscan -i chinese_ranges.txt -p 0\0A\0A# Simplify a list of IP ranges:\0A> ipscan -I 10.0.0.0/24 -I 10.0.1.0/24 --dump-ips\0A\09# outputs: 10.0.0.0/23\0A\00"
define void @print_usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([1375 x i8], [1375 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @exit(i32 0)
unreachable
}

LLVM IR (-O2):
@str = [1374 x i8] c"Usage: ipscan [OPTION]...\0ASearch for IP addresses or CIDR blocks in STDIN and print out matched lines.\0A\0ALoading IP lists:\0A -i, --ip-list FILE\09\09load newline-separated list of IP addresses (CIDR notation supported)\0A -I, --ip-search IP\09\09add the IP to the list of IP addresses searched for (CIDR notation is supported)\0A\0ASearch options:\0A -v, --invert-match\09\09instead of printing lines that match the IP list, print ones that don't\0A -p, --match-position IDX\09instead of checking against the first IP on the line, check against the IDXth\0A\09\09\09\09Supports negative IDX, counting from right instead from left.\0A\09\09\09\09(-1 = last IP, 1 = first IP, 0 = any position; default: 0)\0A\0AOutput control:\0A --dump-ips\09\09\09instead of running the search dump the computed CIDR blocks to STDOUT\0A --verbose\09\09\09print additional messages to STDERR (default)\0A --quiet\09\09\09don't print messages to STDERR\0A\0AMiscellaneous:\0A -V, --version\09\09\09print version information and exit\0A -h, --help\09\09\09print this message and exit\0A\0AExamples:\0A# Find all communication where neither source nor destination are in a private range:\0A> cat /var/syslog/* | ipscan -v -I 10.0.0.0/8 -I 192.168.0.0/16 -I 172.16.0.0/12 -p 0\0A# Find all communication originating from China:\0A> cat /var/syslog/* | ipscan -i chinese_ranges.txt -p 0\0A\0A# Simplify a list of IP ranges:\0A> ipscan -I 10.0.0.0/24 -I 10.0.1.0/24 --dump-ips\0A\09# outputs: 10.0.0.0/23\00"
define void @print_usage() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1374 x i8], [1374 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @exit(i32 0)
unreachable
}