#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*/ esc_prn(char *);
int help_ping(int argc, char **argv) {
  esc_prn(
      "\n{Hping} {UHOST} [{UOPTION} ...]\n"
      "  Ping the network {UHOST}. {UHOST} can be an ip address or name\n"
      "    Options:\n"
      "     {H-1}             ICMP mode, default\n"
      "     {H-2}             UDP mode\n"
      "     {H-3}             TCP mode\n"
      "     {H-c} {Ucount}       Packet count, default 5\n"
      "     {H-D}             Set the Don't Fragment bit\n"
      "     {H-f} {UFLAG}        Tcp header FLAG "
      "|{HC}|{HE}|{HU}|{HA}|{HP}|{HR}|{HS}|{HF}|\n"
      "                               bits |7 6 5 4 3 2 1 0|\n"
      "     {H-i} {Ums}          Wait {Ums} milliseconds between sending each "
      "packet\n"
      "     {H-l} {Usize}        Data size\n"
      "     {H-P} {Uprotocol}    Use IP {Uprotocol} in ping packets\n"
      "                      {H1} - ICMP (default), {H17} - UDP, {H6} - TCP\n"
      "     {H-p} {Uport}        Destination port\n"
      "     {H-s} {Uport}        Source port\n"
      "     {H-T} {Uttl}         Set {Uttl}, default 64\n"
      "     {H-t}             Send packets until interrupted by Ctrl+C\n"
      "     {H-w} {Ums}          Wait {Ums} milliseconds to receive the "
      "response\n\n"
      "  Notes: 1. Using names requires DNS to be set.\n"
      "         2. Use Ctrl+C to stop the command.\n");
  return 1;
}


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

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

LLVM IR (-O0):
@.str = [1061 x i8] c"\0A{Hping} {UHOST} [{UOPTION} ...]\0A Ping the network {UHOST}. {UHOST} can be an ip address or name\0A Options:\0A {H-1} ICMP mode, default\0A {H-2} UDP mode\0A {H-3} TCP mode\0A {H-c} {Ucount} Packet count, default 5\0A {H-D} Set the Don't Fragment bit\0A {H-f} {UFLAG} Tcp header FLAG |{HC}|{HE}|{HU}|{HA}|{HP}|{HR}|{HS}|{HF}|\0A bits |7 6 5 4 3 2 1 0|\0A {H-i} {Ums} Wait {Ums} milliseconds between sending each packet\0A {H-l} {Usize} Data size\0A {H-P} {Uprotocol} Use IP {Uprotocol} in ping packets\0A {H1} - ICMP (default), {H17} - UDP, {H6} - TCP\0A {H-p} {Uport} Destination port\0A {H-s} {Uport} Source port\0A {H-T} {Uttl} Set {Uttl}, default 64\0A {H-t} Send packets until interrupted by Ctrl+C\0A {H-w} {Ums} Wait {Ums} milliseconds to receive the response\0A\0A Notes: 1. Using names requires DNS to be set.\0A 2. Use Ctrl+C to stop the command.\0A\00"
define i32 @help_ping(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i8**
store i32 %0, i32* %3
store i8** %1, i8*** %4
%5 = call i32 @esc_prn(i8* getelementptr inbounds ([1061 x i8], [1061 x i8]* @.str, i64 0, i64 0))
ret i32 1
}

LLVM IR (-O2):
@.str = [1061 x i8] c"\0A{Hping} {UHOST} [{UOPTION} ...]\0A Ping the network {UHOST}. {UHOST} can be an ip address or name\0A Options:\0A {H-1} ICMP mode, default\0A {H-2} UDP mode\0A {H-3} TCP mode\0A {H-c} {Ucount} Packet count, default 5\0A {H-D} Set the Don't Fragment bit\0A {H-f} {UFLAG} Tcp header FLAG |{HC}|{HE}|{HU}|{HA}|{HP}|{HR}|{HS}|{HF}|\0A bits |7 6 5 4 3 2 1 0|\0A {H-i} {Ums} Wait {Ums} milliseconds between sending each packet\0A {H-l} {Usize} Data size\0A {H-P} {Uprotocol} Use IP {Uprotocol} in ping packets\0A {H1} - ICMP (default), {H17} - UDP, {H6} - TCP\0A {H-p} {Uport} Destination port\0A {H-s} {Uport} Source port\0A {H-T} {Uttl} Set {Uttl}, default 64\0A {H-t} Send packets until interrupted by Ctrl+C\0A {H-w} {Ums} Wait {Ums} milliseconds to receive the response\0A\0A Notes: 1. Using names requires DNS to be set.\0A 2. Use Ctrl+C to stop the command.\0A\00"
define i32 @help_ping(i32 %0, i8** nocapture readnone %1) {
%3 = tail call i32 @esc_prn(i8* getelementptr inbounds ([1061 x i8], [1061 x i8]* @.str, i64 0, i64 0))
ret i32 1
}