#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 /*<<< orphan*/ strcmp(char *, char *);
int /*<<< orphan*/ strlen(char *);
int /*<<< orphan*/ strncmp(char *, char *, int /*<<< orphan*/);
int help_ip(int argc, char **argv) {
  if (!strncmp(argv[0], "dhcp", strlen(argv[0])) ||
      (argc == 3 && !strncmp(argv[1], "dhcp", strlen(argv[1])) &&
       (!strcmp(argv[2], "?") || !strncmp(argv[2], "help", strlen(argv[2]))))) {
    esc_prn("\n{Hip dhcp} [{UOPTION}]\n"
            "  Attempt to obtain IPv4 address, mask, gateway and DNS via DHCP\n"
            "  OPTION:\n"
            "    {H-d}         Show DHCP packet decode\n"
            "    {H-r}         Renew DHCP lease\n"
            "    {H-x}         Release DHCP lease\n");
    return 1;
  }
  if (argc == 3 &&
      (!strncmp(argv[1], "dns", strlen(argv[1])) ||
       !strncmp(argv[1], "dns6", strlen(argv[1]))) &&
      (!strcmp(argv[2], "?") || !strncmp(argv[2], "help", strlen(argv[2])))) {
    esc_prn("\n{Hip [dns | dns6]} {Uip}\n"
            "  Set DNS server {Uip}, delete if {Uip} is '0'.\n");
    return 1;
  }
  if (argc == 3 && !strncmp(argv[1], "domain", strlen(argv[1])) &&
      (!strcmp(argv[2], "?") || !strncmp(argv[2], "help", strlen(argv[2])))) {
    esc_prn(
        "\n\{Hip domain} {Uname}\n"
        "  Sets local domain name. \n"
        "  If there's no '.' in the host name: the name is assumed within the "
        "local\n"
        "  domain, it is a short name relative to the local domain. The "
        "resolver\n"
        "  will append the local domain name to the hostname to resolve it.\n");
    return 1;
  }
  esc_prn(
      "\n{Hip} {UARG} ... [{UOPTION}]\n"
      "  Configure the current VPC's IP settings\n"
      "    ARG ...:\n"
      "    {Uaddress} [{Umask}] [{Ugateway}]\n"
      "    {Uaddress} [{Ugateway}] [{Umask}]\n"
      "                   Set the VPC's ip, default gateway ip and network "
      "mask\n"
      "                   Default IPv4 mask is /24, IPv6 is /64. Example:\n"
      "                   {Hip 10.1.1.70/26 10.1.1.65} set the VPC's ip to "
      "10.1.1.70,\n"
      "                   the gateway to 10.1.1.65, the netmask to "
      "255.255.255.192.\n"
      "                   In tap mode, the ip of the tapx is the maximum host "
      "ID\n"
      "                   of the subnet. In the example above the tapx ip "
      "would be \n"
      "                   10.1.1.126\n"
      "                   {Umask} may be written as /26, 26 or "
      "255.255.255.192\n"
      "    {Hauto}           Attempt to obtain IPv6 address, mask and gateway "
      "using SLAAC\n"
      "    {Hdhcp} [{UOPTION}]  Attempt to obtain IPv4 address, mask, gateway, "
      "DNS via DHCP\n"
      "          {H-d}         Show DHCP packet decode\n"
      "          {H-r}         Renew DHCP lease\n"
      "          {H-x}         Release DHCP lease\n"
      "    {Hdns} {Uip}         Set DNS server {Uip}, delete if {Uip} is '0'\n"
      "    {Hdns6} {Uipv6}      Set DNS server {Uipv6}, delete if {Uipv6} is "
      "'0'\n"
      "    {Hdomain} {UNAME}    Set local domain name to {UNAME}\n");
  return 1;
}


x86 assembly (clang, -O0):
<help_ip>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%rdi
call   1040 <strlen@plt>
mov    -0x18(%rbp),%rdi
mov    %eax,%edx
lea    0xe8d(%rip),%rsi
call   1030 <strncmp@plt>
cmp    $0x0,%eax
je     1210 <help_ip+0xd0>
cmpl   $0x3,-0x8(%rbp)
jne    1228 <help_ip+0xe8>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
mov    %rax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
call   1040 <strlen@plt>
mov    -0x20(%rbp),%rdi
mov    %eax,%edx
lea    0xe4f(%rip),%rsi
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    1228 <help_ip+0xe8>
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdi
lea    0xe37(%rip),%rsi
call   1060 <strcmp@plt>
cmp    $0x0,%eax
je     1210 <help_ip+0xd0>
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rax
mov    %rax,-0x28(%rbp)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdi
call   1040 <strlen@plt>
mov    -0x28(%rbp),%rdi
mov    %eax,%edx
lea    0xe05(%rip),%rsi
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    1228 <help_ip+0xe8>
lea    0xdf5(%rip),%rdi
call   1050 <esc_prn@plt>
movl   $0x1,-0x4(%rbp)
jmp    13bd <help_ip+0x27d>
cmpl   $0x3,-0x8(%rbp)
jne    1303 <help_ip+0x1c3>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
mov    %rax,-0x30(%rbp)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
call   1040 <strlen@plt>
mov    -0x30(%rbp),%rdi
mov    %eax,%edx
lea    0xe8a(%rip),%rsi
call   1030 <strncmp@plt>
cmp    $0x0,%eax
je     129a <help_ip+0x15a>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
mov    %rax,-0x38(%rbp)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
call   1040 <strlen@plt>
mov    -0x38(%rbp),%rdi
mov    %eax,%edx
lea    0xe5a(%rip),%rsi
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    1303 <help_ip+0x1c3>
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdi
lea    0xd5c(%rip),%rsi
call   1060 <strcmp@plt>
cmp    $0x0,%eax
je     12eb <help_ip+0x1ab>
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rax
mov    %rax,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdi
call   1040 <strlen@plt>
mov    -0x40(%rbp),%rdi
mov    %eax,%edx
lea    0xd2a(%rip),%rsi
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    1303 <help_ip+0x1c3>
lea    0xdf9(%rip),%rdi
call   1050 <esc_prn@plt>
movl   $0x1,-0x4(%rbp)
jmp    13bd <help_ip+0x27d>
cmpl   $0x3,-0x8(%rbp)
jne    13aa <help_ip+0x26a>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
mov    %rax,-0x48(%rbp)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
call   1040 <strlen@plt>
mov    -0x48(%rbp),%rdi
mov    %eax,%edx
lea    0xe03(%rip),%rsi
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    13aa <help_ip+0x26a>
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdi
lea    0xcb5(%rip),%rsi
call   1060 <strcmp@plt>
cmp    $0x0,%eax
je     1392 <help_ip+0x252>
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rax
mov    %rax,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdi
call   1040 <strlen@plt>
mov    -0x50(%rbp),%rdi
mov    %eax,%edx
lea    0xc83(%rip),%rsi
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    13aa <help_ip+0x26a>
lea    0xda4(%rip),%rdi
call   1050 <esc_prn@plt>
movl   $0x1,-0x4(%rbp)
jmp    13bd <help_ip+0x27d>
lea    0xe94(%rip),%rdi
call   1050 <esc_prn@plt>
movl   $0x1,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<help_ip>:
push   %rbp
push   %r15
push   %r14
push   %rbx
push   %rax
mov    %rsi,%r14
mov    %edi,%ebp
mov    (%rsi),%rbx
mov    %rbx,%rdi
call   1040 <strlen@plt>
lea    0xea2(%rip),%rsi
mov    %rbx,%rdi
mov    %eax,%edx
call   1030 <strncmp@plt>
lea    0xe9d(%rip),%rbx
test   %eax,%eax
je     124a <help_ip+0x10a>
cmp    $0x3,%ebp
jne    1243 <help_ip+0x103>
mov    0x8(%r14),%rbp
mov    %rbp,%rdi
call   1040 <strlen@plt>
lea    0xe6d(%rip),%rsi
mov    %rbp,%rdi
mov    %eax,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     1262 <help_ip+0x122>
mov    0x8(%r14),%rbx
mov    %rbx,%rdi
call   1040 <strlen@plt>
lea    0xf2a(%rip),%rsi
mov    %rbx,%rdi
mov    %eax,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     11e7 <help_ip+0xa7>
mov    0x8(%r14),%rbx
mov    %rbx,%rdi
call   1040 <strlen@plt>
lea    0xf0d(%rip),%rsi
mov    %rbx,%rdi
mov    %eax,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
jne    1222 <help_ip+0xe2>
mov    0x10(%r14),%r15
lea    0xe13(%rip),%rsi
mov    %r15,%rdi
call   1060 <strcmp@plt>
lea    0xeea(%rip),%rbx
test   %eax,%eax
je     124a <help_ip+0x10a>
mov    %r15,%rdi
call   1040 <strlen@plt>
lea    0xdf3(%rip),%rsi
mov    %r15,%rdi
mov    %eax,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     124a <help_ip+0x10a>
mov    0x8(%r14),%rbx
mov    %rbx,%rdi
call   1040 <strlen@plt>
lea    0xf01(%rip),%rsi
mov    %rbx,%rdi
mov    %eax,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     129c <help_ip+0x15c>
lea    0xffb(%rip),%rbx
mov    %rbx,%rdi
call   1050 <esc_prn@plt>
mov    $0x1,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret
mov    0x10(%r14),%rbp
lea    0xd98(%rip),%rsi
mov    %rbp,%rdi
call   1060 <strcmp@plt>
test   %eax,%eax
je     124a <help_ip+0x10a>
mov    %rbp,%rdi
call   1040 <strlen@plt>
lea    0xd7f(%rip),%rsi
mov    %rbp,%rdi
mov    %eax,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
jne    11a5 <help_ip+0x65>
jmp    124a <help_ip+0x10a>
mov    0x10(%r14),%r14
lea    0xd5e(%rip),%rsi
mov    %r14,%rdi
call   1060 <strcmp@plt>
lea    0xe87(%rip),%rbx
test   %eax,%eax
je     124a <help_ip+0x10a>
mov    %r14,%rdi
call   1040 <strlen@plt>
lea    0xd3e(%rip),%rsi
mov    %r14,%rdi
mov    %eax,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
jne    1243 <help_ip+0x103>
jmp    124a <help_ip+0x10a>

LLVM IR (-O0):
@.str = [5 x i8] c"dhcp\00"
@.str.1 = [2 x i8] c"?\00"
@.str.2 = [5 x i8] c"help\00"
@.str.3 = [214 x i8] c"\0A{Hip dhcp} [{UOPTION}]\0A Attempt to obtain IPv4 address, mask, gateway and DNS via DHCP\0A OPTION:\0A {H-d} Show DHCP packet decode\0A {H-r} Renew DHCP lease\0A {H-x} Release DHCP lease\0A\00"
@.str.4 = [4 x i8] c"dns\00"
@.str.5 = [5 x i8] c"dns6\00"
@.str.6 = [75 x i8] c"\0A{Hip [dns | dns6]} {Uip}\0A Set DNS server {Uip}, delete if {Uip} is '0'.\0A\00"
@.str.7 = [7 x i8] c"domain\00"
@.str.8 = [264 x i8] c"\0A{Hip domain} {Uname}\0A Sets local domain name. \0A If there's no '.' in the host name: the name is assumed within the local\0A domain, it is a short name relative to the local domain. The resolver\0A will append the local domain name to the hostname to resolve it.\0A\00"
@.str.9 = [1213 x i8] c"\0A{Hip} {UARG} ... [{UOPTION}]\0A Configure the current VPC's IP settings\0A ARG ...:\0A {Uaddress} [{Umask}] [{Ugateway}]\0A {Uaddress} [{Ugateway}] [{Umask}]\0A Set the VPC's ip, default gateway ip and network mask\0A Default IPv4 mask is /24, IPv6 is /64. Example:\0A {Hip 10.1.1.70/26 10.1.1.65} set the VPC's ip to 10.1.1.70,\0A the gateway to 10.1.1.65, the netmask to 255.255.255.192.\0A In tap mode, the ip of the tapx is the maximum host ID\0A of the subnet. In the example above the tapx ip would be \0A 10.1.1.126\0A {Umask} may be written as /26, 26 or 255.255.255.192\0A {Hauto} Attempt to obtain IPv6 address, mask and gateway using SLAAC\0A {Hdhcp} [{UOPTION}] Attempt to obtain IPv4 address, mask, gateway, DNS via DHCP\0A {H-d} Show DHCP packet decode\0A {H-r} Renew DHCP lease\0A {H-x} Release DHCP lease\0A {Hdns} {Uip} Set DNS server {Uip}, delete if {Uip} is '0'\0A {Hdns6} {Uipv6} Set DNS server {Uipv6}, delete if {Uipv6} is '0'\0A {Hdomain} {UNAME} Set local domain name to {UNAME}\0A\00"
define i32 @help_ip(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
store i32 %0, i32* %4
store i8** %1, i8*** %5
%6 = load i8**, i8*** %5
%7 = getelementptr inbounds i8*, i8** %6, i64 0
%8 = load i8*, i8** %7
%9 = load i8**, i8*** %5
%10 = getelementptr inbounds i8*, i8** %9, i64 0
%11 = load i8*, i8** %10
%12 = call i32 @strlen(i8* %11)
%13 = call i32 @strncmp(i8* %8, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 %12)
%14 = icmp ne i32 %13, 0
br i1 %14, label %15, label %44
15: ; preds = %2
%16 = load i32, i32* %4
%17 = icmp eq i32 %16, 3
br i1 %17, label %18, label %46
18: ; preds = %15
%19 = load i8**, i8*** %5
%20 = getelementptr inbounds i8*, i8** %19, i64 1
%21 = load i8*, i8** %20
%22 = load i8**, i8*** %5
%23 = getelementptr inbounds i8*, i8** %22, i64 1
%24 = load i8*, i8** %23
%25 = call i32 @strlen(i8* %24)
%26 = call i32 @strncmp(i8* %21, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 %25)
%27 = icmp ne i32 %26, 0
br i1 %27, label %46, label %28
28: ; preds = %18
%29 = load i8**, i8*** %5
%30 = getelementptr inbounds i8*, i8** %29, i64 2
%31 = load i8*, i8** %30
%32 = call i32 @strcmp(i8* %31, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%33 = icmp ne i32 %32, 0
br i1 %33, label %34, label %44
34: ; preds = %28
%35 = load i8**, i8*** %5
%36 = getelementptr inbounds i8*, i8** %35, i64 2
%37 = load i8*, i8** %36
%38 = load i8**, i8*** %5
%39 = getelementptr inbounds i8*, i8** %38, i64 2
%40 = load i8*, i8** %39
%41 = call i32 @strlen(i8* %40)
%42 = call i32 @strncmp(i8* %37, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0), i32 %41)
%43 = icmp ne i32 %42, 0
br i1 %43, label %46, label %44
44: ; preds = %34, %28, %2
%45 = call i32 @esc_prn(i8* getelementptr inbounds ([214 x i8], [214 x i8]* @.str.3, i64 0, i64 0))
store i32 1, i32* %3
br label %120
46: ; preds = %34, %18, %15
%47 = load i32, i32* %4
%48 = icmp eq i32 %47, 3
br i1 %48, label %49, label %87
49: ; preds = %46
%50 = load i8**, i8*** %5
%51 = getelementptr inbounds i8*, i8** %50, i64 1
%52 = load i8*, i8** %51
%53 = load i8**, i8*** %5
%54 = getelementptr inbounds i8*, i8** %53, i64 1
%55 = load i8*, i8** %54
%56 = call i32 @strlen(i8* %55)
%57 = call i32 @strncmp(i8* %52, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.4, i64 0, i64 0), i32 %56)
%58 = icmp ne i32 %57, 0
br i1 %58, label %59, label %69
59: ; preds = %49
%60 = load i8**, i8*** %5
%61 = getelementptr inbounds i8*, i8** %60, i64 1
%62 = load i8*, i8** %61
%63 = load i8**, i8*** %5
%64 = getelementptr inbounds i8*, i8** %63, i64 1
%65 = load i8*, i8** %64
%66 = call i32 @strlen(i8* %65)
%67 = call i32 @strncmp(i8* %62, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), i32 %66)
%68 = icmp ne i32 %67, 0
br i1 %68, label %87, label %69
69: ; preds = %59, %49
%70 = load i8**, i8*** %5
%71 = getelementptr inbounds i8*, i8** %70, i64 2
%72 = load i8*, i8** %71
%73 = call i32 @strcmp(i8* %72, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%74 = icmp ne i32 %73, 0
br i1 %74, label %75, label %85
75: ; preds = %69
%76 = load i8**, i8*** %5
%77 = getelementptr inbounds i8*, i8** %76, i64 2
%78 = load i8*, i8** %77
%79 = load i8**, i8*** %5
%80 = getelementptr inbounds i8*, i8** %79, i64 2
%81 = load i8*, i8** %80
%82 = call i32 @strlen(i8* %81)
%83 = call i32 @strncmp(i8* %78, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0), i32 %82)
%84 = icmp ne i32 %83, 0
br i1 %84, label %87, label %85
85: ; preds = %75, %69
%86 = call i32 @esc_prn(i8* getelementptr inbounds ([75 x i8], [75 x i8]* @.str.6, i64 0, i64 0))
store i32 1, i32* %3
br label %120
87: ; preds = %75, %59, %46
%88 = load i32, i32* %4
%89 = icmp eq i32 %88, 3
br i1 %89, label %90, label %118
90: ; preds = %87
%91 = load i8**, i8*** %5
%92 = getelementptr inbounds i8*, i8** %91, i64 1
%93 = load i8*, i8** %92
%94 = load i8**, i8*** %5
%95 = getelementptr inbounds i8*, i8** %94, i64 1
%96 = load i8*, i8** %95
%97 = call i32 @strlen(i8* %96)
%98 = call i32 @strncmp(i8* %93, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.7, i64 0, i64 0), i32 %97)
%99 = icmp ne i32 %98, 0
br i1 %99, label %118, label %100
100: ; preds = %90
%101 = load i8**, i8*** %5
%102 = getelementptr inbounds i8*, i8** %101, i64 2
%103 = load i8*, i8** %102
%104 = call i32 @strcmp(i8* %103, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%105 = icmp ne i32 %104, 0
br i1 %105, label %106, label %116
106: ; preds = %100
%107 = load i8**, i8*** %5
%108 = getelementptr inbounds i8*, i8** %107, i64 2
%109 = load i8*, i8** %108
%110 = load i8**, i8*** %5
%111 = getelementptr inbounds i8*, i8** %110, i64 2
%112 = load i8*, i8** %111
%113 = call i32 @strlen(i8* %112)
%114 = call i32 @strncmp(i8* %109, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0), i32 %113)
%115 = icmp ne i32 %114, 0
br i1 %115, label %118, label %116
116: ; preds = %106, %100
%117 = call i32 @esc_prn(i8* getelementptr inbounds ([264 x i8], [264 x i8]* @.str.8, i64 0, i64 0))
store i32 1, i32* %3
br label %120
118: ; preds = %106, %90, %87
%119 = call i32 @esc_prn(i8* getelementptr inbounds ([1213 x i8], [1213 x i8]* @.str.9, i64 0, i64 0))
store i32 1, i32* %3
br label %120
120: ; preds = %118, %116, %85, %44
%121 = load i32, i32* %3
ret i32 %121
}

LLVM IR (-O2):
@.str = [5 x i8] c"dhcp\00"
@.str.1 = [2 x i8] c"?\00"
@.str.2 = [5 x i8] c"help\00"
@.str.3 = [214 x i8] c"\0A{Hip dhcp} [{UOPTION}]\0A Attempt to obtain IPv4 address, mask, gateway and DNS via DHCP\0A OPTION:\0A {H-d} Show DHCP packet decode\0A {H-r} Renew DHCP lease\0A {H-x} Release DHCP lease\0A\00"
@.str.4 = [4 x i8] c"dns\00"
@.str.5 = [5 x i8] c"dns6\00"
@.str.6 = [75 x i8] c"\0A{Hip [dns | dns6]} {Uip}\0A Set DNS server {Uip}, delete if {Uip} is '0'.\0A\00"
@.str.7 = [7 x i8] c"domain\00"
@.str.8 = [264 x i8] c"\0A{Hip domain} {Uname}\0A Sets local domain name. \0A If there's no '.' in the host name: the name is assumed within the local\0A domain, it is a short name relative to the local domain. The resolver\0A will append the local domain name to the hostname to resolve it.\0A\00"
@.str.9 = [1213 x i8] c"\0A{Hip} {UARG} ... [{UOPTION}]\0A Configure the current VPC's IP settings\0A ARG ...:\0A {Uaddress} [{Umask}] [{Ugateway}]\0A {Uaddress} [{Ugateway}] [{Umask}]\0A Set the VPC's ip, default gateway ip and network mask\0A Default IPv4 mask is /24, IPv6 is /64. Example:\0A {Hip 10.1.1.70/26 10.1.1.65} set the VPC's ip to 10.1.1.70,\0A the gateway to 10.1.1.65, the netmask to 255.255.255.192.\0A In tap mode, the ip of the tapx is the maximum host ID\0A of the subnet. In the example above the tapx ip would be \0A 10.1.1.126\0A {Umask} may be written as /26, 26 or 255.255.255.192\0A {Hauto} Attempt to obtain IPv6 address, mask and gateway using SLAAC\0A {Hdhcp} [{UOPTION}] Attempt to obtain IPv4 address, mask, gateway, DNS via DHCP\0A {H-d} Show DHCP packet decode\0A {H-r} Renew DHCP lease\0A {H-x} Release DHCP lease\0A {Hdns} {Uip} Set DNS server {Uip}, delete if {Uip} is '0'\0A {Hdns6} {Uipv6} Set DNS server {Uipv6}, delete if {Uipv6} is '0'\0A {Hdomain} {UNAME} Set local domain name to {UNAME}\0A\00"
define i32 @help_ip(i32 %0, i8** nocapture %1) {
%3 = load i8*, i8** %1
%4 = tail call i32 @strlen(i8* %3)
%5 = tail call i32 @strncmp(i8* %3, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 %4)
%6 = icmp eq i32 %5, 0
br i1 %6, label %58, label %7
7: ; preds = %2
%8 = icmp eq i32 %0, 3
br i1 %8, label %9, label %57
9: ; preds = %7
%10 = getelementptr inbounds i8*, i8** %1, i64 1
%11 = load i8*, i8** %10
%12 = tail call i32 @strlen(i8* %11)
%13 = tail call i32 @strncmp(i8* %11, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 %12)
%14 = icmp eq i32 %13, 0
br i1 %14, label %15, label %24
15: ; preds = %9
%16 = getelementptr inbounds i8*, i8** %1, i64 2
%17 = load i8*, i8** %16
%18 = tail call i32 @strcmp(i8* dereferenceable(1) %17, i8* dereferenceable(2) getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%19 = icmp eq i32 %18, 0
br i1 %19, label %58, label %20
20: ; preds = %15
%21 = tail call i32 @strlen(i8* %17)
%22 = tail call i32 @strncmp(i8* %17, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0), i32 %21)
%23 = icmp eq i32 %22, 0
br i1 %23, label %58, label %24
24: ; preds = %9, %20
%25 = load i8*, i8** %10
%26 = tail call i32 @strlen(i8* %25)
%27 = tail call i32 @strncmp(i8* %25, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.4, i64 0, i64 0), i32 %26)
%28 = icmp eq i32 %27, 0
br i1 %28, label %34, label %29
29: ; preds = %24
%30 = load i8*, i8** %10
%31 = tail call i32 @strlen(i8* %30)
%32 = tail call i32 @strncmp(i8* %30, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), i32 %31)
%33 = icmp eq i32 %32, 0
br i1 %33, label %34, label %43
34: ; preds = %29, %24
%35 = getelementptr inbounds i8*, i8** %1, i64 2
%36 = load i8*, i8** %35
%37 = tail call i32 @strcmp(i8* dereferenceable(1) %36, i8* dereferenceable(2) getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%38 = icmp eq i32 %37, 0
br i1 %38, label %58, label %39
39: ; preds = %34
%40 = tail call i32 @strlen(i8* %36)
%41 = tail call i32 @strncmp(i8* %36, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0), i32 %40)
%42 = icmp eq i32 %41, 0
br i1 %42, label %58, label %43
43: ; preds = %29, %39
%44 = load i8*, i8** %10
%45 = tail call i32 @strlen(i8* %44)
%46 = tail call i32 @strncmp(i8* %44, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.7, i64 0, i64 0), i32 %45)
%47 = icmp eq i32 %46, 0
br i1 %47, label %48, label %57
48: ; preds = %43
%49 = getelementptr inbounds i8*, i8** %1, i64 2
%50 = load i8*, i8** %49
%51 = tail call i32 @strcmp(i8* dereferenceable(1) %50, i8* dereferenceable(2) getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%52 = icmp eq i32 %51, 0
br i1 %52, label %58, label %53
53: ; preds = %48
%54 = tail call i32 @strlen(i8* %50)
%55 = tail call i32 @strncmp(i8* %50, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0), i32 %54)
%56 = icmp eq i32 %55, 0
br i1 %56, label %58, label %57
57: ; preds = %7, %53, %43
br label %58
58: ; preds = %48, %53, %34, %39, %2, %15, %20, %57
%59 = phi i8* [ getelementptr inbounds ([1213 x i8], [1213 x i8]* @.str.9, i64 0, i64 0), %57 ], [ getelementptr inbounds ([214 x i8], [214 x i8]* @.str.3, i64 0, i64 0), %20 ], [ getelementptr inbounds ([214 x i8], [214 x i8]* @.str.3, i64 0, i64 0), %15 ], [ getelementptr inbounds ([214 x i8], [214 x i8]* @.str.3, i64 0, i64 0), %2 ], [ getelementptr inbounds ([75 x i8], [75 x i8]* @.str.6, i64 0, i64 0), %39 ], [ getelementptr inbounds ([75 x i8], [75 x i8]* @.str.6, i64 0, i64 0), %34 ], [ getelementptr inbounds ([264 x i8], [264 x i8]* @.str.8, i64 0, i64 0), %53 ], [ getelementptr inbounds ([264 x i8], [264 x i8]* @.str.8, i64 0, i64 0), %48 ]
%60 = tail call i32 @esc_prn(i8* %59)
ret i32 1
}