#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 *);
int run_help(int argc, char **argv) {
  printf(
      "\n"
      "?                        Print help\n"
      "! [command [args]]       Invoke an OS command with the 'args' as its "
      "arguments\n"
      "<digit>                  Switch to the VPC<digit>. <digit> range 1 to "
      "9\n"
      "arp                      Shortcut for: \033[1mshow arp\033[0m. Show arp "
      "table\n"
      "clear [arguments]        Clear IPv4/IPv6, arp/neighbor cache, command "
      "history\n"
      "dhcp [-options]          Shortcut for: \033[1mip dhcp\033[0m. Get IPv4 "
      "address via DHCP\n"
      "disconnect               Exit the telnet session (daemon mode)\r\n"
      "echo <text>              Display <text> in output\n"
      "help                     Print help\n"
      "history                  Shortcut for: \033[1mshow history\033[0m. List "
      "the command history\n"
      "ip [arguments]           Configure VPC's IP settings\n"
      "load [filename]          Load the configuration/script from the file "
      "[filename] (startup.vpc is the default filename).\n"
      "ping <host> [-options]   Ping the network <host> with ICMP (default) or "
      "TCP/UDP\n"
      "quit                     Quit program\n"
      "relay [arguments]        Relay packets between two UDP ports\n"
      "rlogin [<ip>] <port>     Telnet to host relative to HOST PC\n"
      "save [filename]          Save the configuration to the file [filename] "
      "(startup.vpc is the default filename).\n"
      "set [arguments]          Set VPC name, peer ports, dump options, echo "
      "on or off\n"
      "show [arguments]         Print the information of VPCs (default). Try "
      "\033[1mshow ?\033[0m\n"
      "sleep <seconds> [text]   Print <text> and pause the running script for "
      "<seconds>\n"
      "trace <host> [-options]  Print the path packets take to network <host>\n"
      "version                  Shortcut for: \033[1mshow version\033[0m\n\n"
      "To get command syntax help, please enter '?' as an argument of the "
      "command.\n");
  return 1;
}


x86 assembly (clang, -O0):
<run_help>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
lea    0xeda(%rip),%rdi
call   1030 <printf@plt>
mov    $0x1,%eax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<run_help>:
push   %rax
lea    0xee8(%rip),%rdi
call   1030 <puts@plt>
mov    $0x1,%eax
pop    %rcx
ret

LLVM IR (-O0):
@.str = [1632 x i8] c"\0A? Print help\0A! [command [args]] Invoke an OS command with the 'args' as its arguments\0A<digit> Switch to the VPC<digit>. <digit> range 1 to 9\0Aarp Shortcut for: \1B[1mshow arp\1B[0m. Show arp table\0Aclear [arguments] Clear IPv4/IPv6, arp/neighbor cache, command history\0Adhcp [-options] Shortcut for: \1B[1mip dhcp\1B[0m. Get IPv4 address via DHCP\0Adisconnect Exit the telnet session (daemon mode)\0D\0Aecho <text> Display <text> in output\0Ahelp Print help\0Ahistory Shortcut for: \1B[1mshow history\1B[0m. List the command history\0Aip [arguments] Configure VPC's IP settings\0Aload [filename] Load the configuration/script from the file [filename] (startup.vpc is the default filename).\0Aping <host> [-options] Ping the network <host> with ICMP (default) or TCP/UDP\0Aquit Quit program\0Arelay [arguments] Relay packets between two UDP ports\0Arlogin [<ip>] <port> Telnet to host relative to HOST PC\0Asave [filename] Save the configuration to the file [filename] (startup.vpc is the default filename).\0Aset [arguments] Set VPC name, peer ports, dump options, echo on or off\0Ashow [arguments] Print the information of VPCs (default). Try \1B[1mshow ?\1B[0m\0Asleep <seconds> [text] Print <text> and pause the running script for <seconds>\0Atrace <host> [-options] Print the path packets take to network <host>\0Aversion Shortcut for: \1B[1mshow version\1B[0m\0A\0ATo get command syntax help, please enter '?' as an argument of the command.\0A\00"
define i32 @run_help(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i8**
store i32 %0, i32* %3
store i8** %1, i8*** %4
%5 = call i32 @printf(i8* getelementptr inbounds ([1632 x i8], [1632 x i8]* @.str, i64 0, i64 0))
ret i32 1
}

LLVM IR (-O2):
@str = [1631 x i8] c"\0A? Print help\0A! [command [args]] Invoke an OS command with the 'args' as its arguments\0A<digit> Switch to the VPC<digit>. <digit> range 1 to 9\0Aarp Shortcut for: \1B[1mshow arp\1B[0m. Show arp table\0Aclear [arguments] Clear IPv4/IPv6, arp/neighbor cache, command history\0Adhcp [-options] Shortcut for: \1B[1mip dhcp\1B[0m. Get IPv4 address via DHCP\0Adisconnect Exit the telnet session (daemon mode)\0D\0Aecho <text> Display <text> in output\0Ahelp Print help\0Ahistory Shortcut for: \1B[1mshow history\1B[0m. List the command history\0Aip [arguments] Configure VPC's IP settings\0Aload [filename] Load the configuration/script from the file [filename] (startup.vpc is the default filename).\0Aping <host> [-options] Ping the network <host> with ICMP (default) or TCP/UDP\0Aquit Quit program\0Arelay [arguments] Relay packets between two UDP ports\0Arlogin [<ip>] <port> Telnet to host relative to HOST PC\0Asave [filename] Save the configuration to the file [filename] (startup.vpc is the default filename).\0Aset [arguments] Set VPC name, peer ports, dump options, echo on or off\0Ashow [arguments] Print the information of VPCs (default). Try \1B[1mshow ?\1B[0m\0Asleep <seconds> [text] Print <text> and pause the running script for <seconds>\0Atrace <host> [-options] Print the path packets take to network <host>\0Aversion Shortcut for: \1B[1mshow version\1B[0m\0A\0ATo get command syntax help, please enter '?' as an argument of the command.\00"
define i32 @run_help(i32 %0, i8** nocapture readnone %1) {
%3 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1631 x i8], [1631 x i8]* @str, i64 0, i64 0))
ret i32 1
}