#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*/ fprintf(int /*<<< orphan*/, char *);
int /*<<< orphan*/ stdout;
void help(void) {
  fprintf(stdout, "Usage: nmap-wrapper <host> <mode>\n"
                  "List Modes:\n"
                  "0 : Scan single host\n"
                  "1 : Turn on OS and version detection scanning\n"
                  "2 : Find out if a host/network is protected by a firewall\n"
                  "3 : Scan a host when protected by the firewall\n"
                  "4 : Perform fast scanning\n"
                  "5 : Display the reason a port in a particular state\n"
                  "6 : Only show open (or possibly open) ports\n"
                  "7 : Show all packets sent and received\n"
                  "8 : Detect remote operating system\n"
                  "9 : Detect remote services (server/daemon) version numbers\n"
                  "10: Scan a host using TCP ACK and TCP Syn ping\n"
                  "11: Scan a host using IP protocol ping\n"
                  "12: Scan a host using UDP ping\n"
                  "13: Scan a host for UDP services (UDP Scan)\n"
                  "14: Scan for IP protocol\n"
                  "15: Scan a firewall for packets fragments\n"
                  "16: Scan a firewall for MAC address spoofing\n"
                  "90: Intense scan plus UDP\n"
                  "91: Intense scan, all TCP ports\n"
                  "92: Intense scan, no ping\n"
                  "93: Slow comprehensive scan\n");
  exit(0);
}


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

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

LLVM IR (-O0):
@stdout = global i32 0
@.str = [859 x i8] c"Usage: nmap-wrapper <host> <mode>\0AList Modes:\0A0 : Scan single host\0A1 : Turn on OS and version detection scanning\0A2 : Find out if a host/network is protected by a firewall\0A3 : Scan a host when protected by the firewall\0A4 : Perform fast scanning\0A5 : Display the reason a port in a particular state\0A6 : Only show open (or possibly open) ports\0A7 : Show all packets sent and received\0A8 : Detect remote operating system\0A9 : Detect remote services (server/daemon) version numbers\0A10: Scan a host using TCP ACK and TCP Syn ping\0A11: Scan a host using IP protocol ping\0A12: Scan a host using UDP ping\0A13: Scan a host for UDP services (UDP Scan)\0A14: Scan for IP protocol\0A15: Scan a firewall for packets fragments\0A16: Scan a firewall for MAC address spoofing\0A90: Intense scan plus UDP\0A91: Intense scan, all TCP ports\0A92: Intense scan, no ping\0A93: Slow comprehensive scan\0A\00"
define void @help() {
%1 = load i32, i32* @stdout
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([859 x i8], [859 x i8]* @.str, i64 0, i64 0))
%3 = call i32 @exit(i32 0)
unreachable
}

LLVM IR (-O2):
@stdout = global i32 0
@.str = [859 x i8] c"Usage: nmap-wrapper <host> <mode>\0AList Modes:\0A0 : Scan single host\0A1 : Turn on OS and version detection scanning\0A2 : Find out if a host/network is protected by a firewall\0A3 : Scan a host when protected by the firewall\0A4 : Perform fast scanning\0A5 : Display the reason a port in a particular state\0A6 : Only show open (or possibly open) ports\0A7 : Show all packets sent and received\0A8 : Detect remote operating system\0A9 : Detect remote services (server/daemon) version numbers\0A10: Scan a host using TCP ACK and TCP Syn ping\0A11: Scan a host using IP protocol ping\0A12: Scan a host using UDP ping\0A13: Scan a host for UDP services (UDP Scan)\0A14: Scan for IP protocol\0A15: Scan a firewall for packets fragments\0A16: Scan a firewall for MAC address spoofing\0A90: Intense scan plus UDP\0A91: Intense scan, all TCP ports\0A92: Intense scan, no ping\0A93: Slow comprehensive scan\0A\00"
define void @help() {
%1 = load i32, i32* @stdout
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([859 x i8], [859 x i8]* @.str, i64 0, i64 0))
%3 = tail call i32 @exit(i32 0)
unreachable
}