#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 */
struct in_addr {
  void *s_addr;
};
typedef int /*<<< orphan*/ line;

/* Variables and functions */
int /*<<< orphan*/ AF_INET;
int /*<<< orphan*/ convert_range(unsigned int, unsigned int, char *, char *);
int /*<<< orphan*/ exit(int);
int /*<<< orphan*/ *fgets(char *, int, int /*<<< orphan*/);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *, char *, int);
unsigned int htonl(void *);
scalar_t__ inet_pton(int /*<<< orphan*/, char *, struct in_addr *);
void *ntohl(int /*<<< orphan*/);
int /*<<< orphan*/ stderr;
int /*<<< orphan*/ stdin;
int strlen(char *);
int /*<<< orphan*/ strtoul(char *, char **, int);
int /*<<< orphan*/ usage(char *);
main(int argc, char **argv) {
  char line[1024];
  int l, lnum;
  char *lb, *le, *hb, *he, *err;
  struct in_addr src_addr, dst_addr;
  unsigned int sa, da, ta;
  if (argc > 1 && *argv[1] == '-') {
    usage(argv[0]);
    exit(1);
  }
  lnum = 0;
  while (fgets(line, sizeof(line), stdin) != NULL) {
    l = strlen(line);
    if (l && line[l - 1] == '\n')
      line[--l] = '\0';
    lnum++;
    for (lb = line; *lb == ' ' || *lb == '\t' || *lb == ',' || *lb == '"'; lb++)
      ;
    if (!*lb || *lb == '#')
      continue;
    for (le = lb + 1;
         *le != ' ' && *le != '\t' && *le != ',' && *le != '"' && *le; le++)
      ;
    if (!*le)
      continue;
    *(le++) = 0;
    for (hb = le; *hb == ' ' || *hb == '\t' || *hb == ',' || *hb == '"'; hb++)
      ;
    if (!*hb || *hb == '#')
      continue;
    for (he = hb + 1;
         *he != ' ' && *he != '\t' && *he != ',' && *he != '"' && *he; he++)
      ;
    if (!*he)
      continue;
    *(he++) = 0;
    while (*he == '"')
      *(he++) = ' ';
    while (*he == ',' || *he == ' ' || *he == '\t')
      *(he++) = ' ';
    if (*(he - 1) == ' ')
      he--;
    if (inet_pton(AF_INET, lb, &src_addr) <= 0) {
      src_addr.s_addr = ntohl(strtoul(lb, &err, 10));
      if (err && *err) {
        fprintf(
            stderr,
            "Failed to parse source address <%s> at line %d, skipping line\n",
            lb, lnum);
        continue;
      }
    }
    if (inet_pton(AF_INET, hb, &dst_addr) <= 0) {
      dst_addr.s_addr = ntohl(strtoul(hb, &err, 10));
      if (err && *err) {
        fprintf(stderr,
                "Failed to parse destination address <%s> at line %d, skipping "
                "line\n",
                hb, lnum);
        continue;
      }
    }
    sa = htonl(src_addr.s_addr);
    da = htonl(dst_addr.s_addr);
    if (argc > 1) {
      for (l = 1; l < argc; l++) {
        if (inet_pton(AF_INET, argv[l], &dst_addr) <= 0)
          continue;
        ta = htonl(dst_addr.s_addr);
        if ((sa <= ta && ta <= da) || (da <= ta && ta <= sa))
          convert_range(sa, da, he, argv[l]);
      }
    } else {
      convert_range(sa, da, he, NULL);
    }
  }
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x470,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
cmpl   $0x1,-0x8(%rbp)
jle    11ed <main+0x4d>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsbl (%rax),%eax
cmp    $0x2d,%eax
jne    11ed <main+0x4d>
mov    -0x10(%rbp),%rax
mov    (%rax),%rdi
call   1080 <usage@plt>
mov    $0x1,%edi
call   10a0 <exit@plt>
movl   $0x0,-0x418(%rbp)
lea    -0x410(%rbp),%rdi
mov    0x2ddb(%rip),%rax
mov    (%rax),%edx
mov    $0x400,%esi
call   1050 <fgets@plt>
cmp    $0x0,%rax
je     1939 <main+0x799>
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    %eax,-0x414(%rbp)
cmpl   $0x0,-0x414(%rbp)
je     126f <main+0xcf>
mov    -0x414(%rbp),%eax
sub    $0x1,%eax
cltq
movsbl -0x410(%rbp,%rax,1),%eax
ff
cmp    $0xa,%eax
jne    126f <main+0xcf>
mov    -0x414(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x414(%rbp)
cltq
movb   $0x0,-0x410(%rbp,%rax,1)
mov    -0x418(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x418(%rbp)
lea    -0x410(%rbp),%rax
mov    %rax,-0x420(%rbp)
mov    -0x420(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x45d(%rbp)
je     12f3 <main+0x153>
mov    -0x420(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0x9,%ecx
mov    %al,-0x45d(%rbp)
je     12f3 <main+0x153>
mov    -0x420(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0x2c,%ecx
mov    %al,-0x45d(%rbp)
je     12f3 <main+0x153>
mov    -0x420(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x22,%eax
sete   %al
mov    %al,-0x45d(%rbp)
mov    -0x45d(%rbp),%al
test   $0x1,%al
jne    1306 <main+0x166>
jmp    1322 <main+0x182>
jmp    130b <main+0x16b>
mov    -0x420(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x420(%rbp)
jmp    128c <main+0xec>
mov    -0x420(%rbp),%rax
cmpb   $0x0,(%rax)
je     1345 <main+0x1a5>
mov    -0x420(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x23,%eax
jne    134a <main+0x1aa>
jmp    11f7 <main+0x57>
mov    -0x420(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x428(%rbp)
mov    -0x428(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x20,%ecx
mov    %al,-0x45e(%rbp)
je     13de <main+0x23e>
mov    -0x428(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x9,%ecx
mov    %al,-0x45e(%rbp)
je     13de <main+0x23e>
mov    -0x428(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x2c,%ecx
mov    %al,-0x45e(%rbp)
je     13de <main+0x23e>
mov    -0x428(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x22,%ecx
mov    %al,-0x45e(%rbp)
je     13de <main+0x23e>
mov    -0x428(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
setne  %al
mov    %al,-0x45e(%rbp)
mov    -0x45e(%rbp),%al
test   $0x1,%al
jne    13f1 <main+0x251>
jmp    140d <main+0x26d>
jmp    13f6 <main+0x256>
mov    -0x428(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x428(%rbp)
jmp    135c <main+0x1bc>
mov    -0x428(%rbp),%rax
cmpb   $0x0,(%rax)
jne    1422 <main+0x282>
jmp    11f7 <main+0x57>
mov    -0x428(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x428(%rbp)
movb   $0x0,(%rax)
mov    -0x428(%rbp),%rax
mov    %rax,-0x430(%rbp)
mov    -0x430(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x45f(%rbp)
je     14af <main+0x30f>
mov    -0x430(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0x9,%ecx
mov    %al,-0x45f(%rbp)
je     14af <main+0x30f>
mov    -0x430(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0x2c,%ecx
mov    %al,-0x45f(%rbp)
je     14af <main+0x30f>
mov    -0x430(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x22,%eax
sete   %al
mov    %al,-0x45f(%rbp)
mov    -0x45f(%rbp),%al
test   $0x1,%al
jne    14c2 <main+0x322>
jmp    14de <main+0x33e>
jmp    14c7 <main+0x327>
mov    -0x430(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x430(%rbp)
jmp    1448 <main+0x2a8>
mov    -0x430(%rbp),%rax
cmpb   $0x0,(%rax)
je     1501 <main+0x361>
mov    -0x430(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x23,%eax
jne    1506 <main+0x366>
jmp    11f7 <main+0x57>
mov    -0x430(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x438(%rbp)
mov    -0x438(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x20,%ecx
mov    %al,-0x460(%rbp)
je     159a <main+0x3fa>
mov    -0x438(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x9,%ecx
mov    %al,-0x460(%rbp)
je     159a <main+0x3fa>
mov    -0x438(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x2c,%ecx
mov    %al,-0x460(%rbp)
je     159a <main+0x3fa>
mov    -0x438(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x22,%ecx
mov    %al,-0x460(%rbp)
je     159a <main+0x3fa>
mov    -0x438(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
setne  %al
mov    %al,-0x460(%rbp)
mov    -0x460(%rbp),%al
test   $0x1,%al
jne    15ad <main+0x40d>
jmp    15c9 <main+0x429>
jmp    15b2 <main+0x412>
mov    -0x438(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x438(%rbp)
jmp    1518 <main+0x378>
mov    -0x438(%rbp),%rax
cmpb   $0x0,(%rax)
jne    15de <main+0x43e>
jmp    11f7 <main+0x57>
mov    -0x438(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x438(%rbp)
movb   $0x0,(%rax)
mov    -0x438(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x22,%eax
jne    1626 <main+0x486>
mov    -0x438(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x438(%rbp)
movb   $0x20,(%rax)
jmp    15f6 <main+0x456>
jmp    162b <main+0x48b>
mov    -0x438(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0x2c,%ecx
mov    %al,-0x461(%rbp)
je     1677 <main+0x4d7>
mov    -0x438(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x461(%rbp)
je     1677 <main+0x4d7>
mov    -0x438(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x9,%eax
sete   %al
mov    %al,-0x461(%rbp)
mov    -0x461(%rbp),%al
test   $0x1,%al
jne    168a <main+0x4ea>
jmp    16a7 <main+0x507>
mov    -0x438(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x438(%rbp)
movb   $0x20,(%rax)
jmp    162b <main+0x48b>
mov    -0x438(%rbp),%rax
movsbl -0x1(%rax),%eax
cmp    $0x20,%eax
jne    16cd <main+0x52d>
mov    -0x438(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x438(%rbp)
mov    0x2914(%rip),%rax
mov    (%rax),%edi
mov    -0x420(%rbp),%rsi
lea    -0x448(%rbp),%rdx
call   1070 <inet_pton@plt>
cmp    $0x0,%rax
jg     1766 <main+0x5c6>
mov    -0x420(%rbp),%rdi
lea    -0x440(%rbp),%rsi
mov    $0xa,%edx
call   1090 <strtoul@plt>
mov    %eax,%edi
call   10c0 <ntohl@plt>
mov    %rax,-0x448(%rbp)
cmpq   $0x0,-0x440(%rbp)
je     1761 <main+0x5c1>
mov    -0x440(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
je     1761 <main+0x5c1>
mov    0x288f(%rip),%rax
mov    (%rax),%edi
mov    -0x420(%rbp),%rdx
mov    -0x418(%rbp),%ecx
lea    0x8a9(%rip),%rsi
call   1060 <fprintf@plt>
jmp    11f7 <main+0x57>
jmp    1766 <main+0x5c6>
mov    0x287b(%rip),%rax
mov    (%rax),%edi
mov    -0x430(%rbp),%rsi
lea    -0x450(%rbp),%rdx
call   1070 <inet_pton@plt>
cmp    $0x0,%rax
jg     17ff <main+0x65f>
mov    -0x430(%rbp),%rdi
lea    -0x440(%rbp),%rsi
mov    $0xa,%edx
call   1090 <strtoul@plt>
mov    %eax,%edi
call   10c0 <ntohl@plt>
mov    %rax,-0x450(%rbp)
cmpq   $0x0,-0x440(%rbp)
je     17fa <main+0x65a>
mov    -0x440(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
je     17fa <main+0x65a>
mov    0x27f6(%rip),%rax
mov    (%rax),%edi
mov    -0x430(%rbp),%rdx
mov    -0x418(%rbp),%ecx
lea    0x84f(%rip),%rsi
call   1060 <fprintf@plt>
jmp    11f7 <main+0x57>
jmp    17ff <main+0x65f>
mov    -0x448(%rbp),%rdi
call   1040 <htonl@plt>
mov    %eax,-0x454(%rbp)
mov    -0x450(%rbp),%rdi
call   1040 <htonl@plt>
mov    %eax,-0x458(%rbp)
cmpl   $0x1,-0x8(%rbp)
jle    1918 <main+0x778>
movl   $0x1,-0x414(%rbp)
mov    -0x414(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    1913 <main+0x773>
mov    0x279b(%rip),%rax
mov    (%rax),%edi
mov    -0x10(%rbp),%rax
movslq -0x414(%rbp),%rcx
mov    (%rax,%rcx,8),%rsi
lea    -0x450(%rbp),%rdx
call   1070 <inet_pton@plt>
cmp    $0x0,%rax
jg     1879 <main+0x6d9>
jmp    18ff <main+0x75f>
mov    -0x450(%rbp),%rdi
call   1040 <htonl@plt>
mov    %eax,-0x45c(%rbp)
mov    -0x454(%rbp),%eax
cmp    -0x45c(%rbp),%eax
ja     18af <main+0x70f>
mov    -0x45c(%rbp),%eax
cmp    -0x458(%rbp),%eax
jbe    18d3 <main+0x733>
mov    -0x458(%rbp),%eax
cmp    -0x45c(%rbp),%eax
ja     18fa <main+0x75a>
mov    -0x45c(%rbp),%eax
cmp    -0x454(%rbp),%eax
ja     18fa <main+0x75a>
mov    -0x454(%rbp),%edi
mov    -0x458(%rbp),%esi
mov    -0x438(%rbp),%rdx
mov    -0x10(%rbp),%rax
movslq -0x414(%rbp),%rcx
mov    (%rax,%rcx,8),%rcx
call   10b0 <convert_range@plt>
jmp    18ff <main+0x75f>
mov    -0x414(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x414(%rbp)
jmp    1837 <main+0x697>
jmp    1934 <main+0x794>
mov    -0x454(%rbp),%edi
mov    -0x458(%rbp),%esi
mov    -0x438(%rbp),%rdx
xor    %eax,%eax
mov    %eax,%ecx
call   10b0 <convert_range@plt>
jmp    11f7 <main+0x57>
mov    -0x4(%rbp),%eax
add    $0x470,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x448,%rsp
mov    %rsi,0x10(%rsp)
mov    %edi,0xc(%rsp)
cmp    $0x2,%edi
jl     11d1 <main+0x31>
mov    0x10(%rsp),%rax
mov    0x8(%rax),%rax
cmpb   $0x2d,(%rax)
je     154f <main+0x3af>
mov    0x2e08(%rip),%rax
mov    (%rax),%edx
lea    0x40(%rsp),%rbp
mov    %rbp,%rdi
mov    $0x400,%esi
call   1050 <fgets@plt>
test   %rax,%rax
je     153b <main+0x39b>
mov    0xc(%rsp),%eax
mov    %rax,0x38(%rsp)
xor    %r15d,%r15d
movabs $0x100500000200,%r13
movabs $0x100100000200,%r12
jmp    1257 <main+0xb7>
nopw   0x0(%rax,%rax,1)
movabs $0x800000001,%rsi
bt     %rax,%rsi
mov    %rbp,%rsi
jae    12b0 <main+0x110>
mov    0x2da6(%rip),%rax
mov    (%rax),%edx
lea    0x40(%rsp),%rbp
mov    %rbp,%rdi
mov    $0x400,%esi
call   1050 <fgets@plt>
test   %rax,%rax
je     153b <main+0x39b>
mov    %rbp,%rdi
call   1030 <strlen@plt>
test   %eax,%eax
je     1271 <main+0xd1>
cltq
cmpb   $0xa,-0x1(%rax,%rbp,1)
jne    1271 <main+0xd1>
movb   $0x0,0x3f(%rsp,%rax,1)
add    $0x1,%r15d
lea    0x43(%rsp),%rcx
lea    0x42(%rsp),%rdx
nop
movzbl 0x0(%rbp),%eax
cmp    $0x2c,%rax
ja     129e <main+0xfe>
bt     %rax,%r13
jae    1220 <main+0x80>
add    $0x1,%rbp
add    $0x1,%rdx
add    $0x1,%rcx
jmp    1280 <main+0xe0>
mov    %rbp,%rsi
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    %rdx,%r14
mov    %rcx,%rax
movzbl 0x1(%rsi),%edi
add    $0x1,%rsi
add    $0x1,%rdx
add    $0x1,%rcx
cmp    $0x2c,%rdi
ja     12b0 <main+0x110>
bt     %rdi,%r13
jb     12e0 <main+0x140>
test   %rdi,%rdi
jne    12b0 <main+0x110>
jmp    1233 <main+0x93>
nopl   0x0(%rax)
movb   $0x0,(%rsi)
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movzbl (%r14),%ecx
cmp    $0x2c,%rcx
ja     1330 <main+0x190>
bt     %rcx,%r13
jae    1310 <main+0x170>
add    $0x1,%r14
add    $0x1,%rax
jmp    12f0 <main+0x150>
nopw   0x0(%rax,%rax,1)
movabs $0x800000001,%rdx
bt     %rcx,%rdx
jb     1233 <main+0x93>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movzbl (%rax),%ecx
add    $0x1,%rax
cmp    $0x2c,%rcx
ja     1330 <main+0x190>
bt     %rcx,%r13
jb     134d <main+0x1ad>
test   %rcx,%rcx
jne    1330 <main+0x190>
jmp    1233 <main+0x93>
movb   $0x0,-0x1(%rax)
mov    (%rax),%cl
cmp    $0x22,%cl
jne    138b <main+0x1eb>
nopl   0x0(%rax,%rax,1)
movb   $0x20,(%rax)
movzbl 0x1(%rax),%ecx
add    $0x1,%rax
cmp    $0x22,%cl
je     1360 <main+0x1c0>
jmp    138b <main+0x1eb>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movb   $0x20,(%rax)
movzbl 0x1(%rax),%ecx
add    $0x1,%rax
cmp    $0x2c,%cl
ja     1399 <main+0x1f9>
movzbl %cl,%ecx
bt     %rcx,%r12
jb     1380 <main+0x1e0>
cmpb   $0x20,-0x1(%rax)
lea    -0x1(%rax),%rcx
cmovne %rax,%rcx
mov    %rcx,0x28(%rsp)
mov    0x2c37(%rip),%rax
mov    (%rax),%edi
mov    %rbp,%rsi
lea    0x30(%rsp),%rdx
call   1070 <inet_pton@plt>
test   %rax,%rax
jle    1486 <main+0x2e6>
mov    0x2c18(%rip),%rax
mov    (%rax),%edi
mov    %r14,%rsi
lea    0x18(%rsp),%rdx
call   1070 <inet_pton@plt>
test   %rax,%rax
jle    14e6 <main+0x346>
mov    0x30(%rsp),%rdi
call   1040 <htonl@plt>
mov    %eax,%ebp
mov    0x18(%rsp),%rdi
call   1040 <htonl@plt>
mov    %eax,%r14d
cmpl   $0x2,0xc(%rsp)
jl     14d0 <main+0x330>
mov    $0x1,%ebx
jmp    1447 <main+0x2a7>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    0x10(%rsp),%rax
mov    (%rax,%rbx,8),%rcx
mov    %ebp,%edi
mov    %r14d,%esi
mov    0x28(%rsp),%rdx
call   10b0 <convert_range@plt>
add    $0x1,%rbx
cmp    %rbx,0x38(%rsp)
je     1233 <main+0x93>
mov    0x2b9a(%rip),%rax
mov    (%rax),%edi
mov    0x10(%rsp),%rax
mov    (%rax,%rbx,8),%rsi
lea    0x18(%rsp),%rdx
call   1070 <inet_pton@plt>
test   %rax,%rax
jle    1438 <main+0x298>
mov    0x18(%rsp),%rdi
call   1040 <htonl@plt>
cmp    %eax,%ebp
ja     147b <main+0x2db>
cmp    %r14d,%eax
jbe    1420 <main+0x280>
cmp    %eax,%r14d
ja     1438 <main+0x298>
cmp    %ebp,%eax
jbe    1420 <main+0x280>
jmp    1438 <main+0x298>
mov    %rbp,%rdi
lea    0x20(%rsp),%rsi
mov    $0xa,%edx
call   1090 <strtoul@plt>
mov    %eax,%edi
call   10c0 <ntohl@plt>
mov    %rax,0x30(%rsp)
mov    0x20(%rsp),%rax
test   %rax,%rax
je     13c9 <main+0x229>
cmpb   $0x0,(%rax)
je     13c9 <main+0x229>
mov    0x2b0e(%rip),%rax
mov    (%rax),%edi
lea    0xb35(%rip),%rsi
mov    %rbp,%rdx
jmp    152e <main+0x38e>
mov    %ebp,%edi
mov    %r14d,%esi
mov    0x28(%rsp),%rdx
xor    %ecx,%ecx
call   10b0 <convert_range@plt>
jmp    1233 <main+0x93>
mov    %r14,%rdi
lea    0x20(%rsp),%rsi
mov    $0xa,%edx
call   1090 <strtoul@plt>
mov    %eax,%edi
call   10c0 <ntohl@plt>
mov    %rax,0x18(%rsp)
mov    0x20(%rsp),%rax
test   %rax,%rax
je     13e8 <main+0x248>
cmpb   $0x0,(%rax)
je     13e8 <main+0x248>
mov    0x2aae(%rip),%rax
mov    (%rax),%edi
lea    0xb14(%rip),%rsi
mov    %r14,%rdx
mov    %r15d,%ecx
call   1060 <fprintf@plt>
jmp    1233 <main+0x93>
xor    %eax,%eax
add    $0x448,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    0x10(%rsp),%rax
mov    (%rax),%rdi
call   1080 <usage@plt>
mov    $0x1,%edi
call   10a0 <exit@plt>

LLVM IR (-O0):
%struct.in_addr = type { i8* }
@stdin = global i32 0
@AF_INET = global i32 0
@stderr = global i32 0
@.str = [63 x i8] c"Failed to parse source address <%s> at line %d, skipping line\0A\00"
@.str.1 = [68 x i8] c"Failed to parse destination address <%s> at line %d, skipping line\0A\00"
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
%6 = alloca [1024 x i8]
%7 = alloca i32
%8 = alloca i32
%9 = alloca i8*
%10 = alloca i8*
%11 = alloca i8*
%12 = alloca i8*
%13 = alloca i8*
%14 = alloca %struct.in_addr
%15 = alloca %struct.in_addr
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
%19 = load i32, i32* %4
%20 = icmp sgt i32 %19, 1
br i1 %20, label %21, label %34
21: ; preds = %2
%22 = load i8**, i8*** %5
%23 = getelementptr inbounds i8*, i8** %22, i64 1
%24 = load i8*, i8** %23
%25 = load i8, i8* %24
%26 = sext i8 %25 to i32
%27 = icmp eq i32 %26, 45
br i1 %27, label %28, label %34
28: ; preds = %21
%29 = load i8**, i8*** %5
%30 = getelementptr inbounds i8*, i8** %29, i64 0
%31 = load i8*, i8** %30
%32 = call i32 @usage(i8* %31)
%33 = call i32 @exit(i32 1)
unreachable
34: ; preds = %21, %2
store i32 0, i32* %8
br label %35
35: ; preds = %366, %297, %274, %215, %176, %136, %97, %34
%36 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%37 = load i32, i32* @stdin
%38 = call i32* @fgets(i8* %36, i32 1024, i32 %37)
%39 = icmp ne i32* %38, null
br i1 %39, label %40, label %367
40: ; preds = %35
%41 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%42 = call i32 @strlen(i8* %41)
store i32 %42, i32* %7
%43 = load i32, i32* %7
%44 = icmp ne i32 %43, 0
br i1 %44, label %45, label %58
45: ; preds = %40
%46 = load i32, i32* %7
%47 = sub nsw i32 %46, 1
%48 = sext i32 %47 to i64
%49 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 %48
%50 = load i8, i8* %49
%51 = sext i8 %50 to i32
%52 = icmp eq i32 %51, 10
br i1 %52, label %53, label %58
53: ; preds = %45
%54 = load i32, i32* %7
%55 = add nsw i32 %54, -1
store i32 %55, i32* %7
%56 = sext i32 %55 to i64
%57 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 %56
store i8 0, i8* %57
br label %58
58: ; preds = %53, %45, %40
%59 = load i32, i32* %8
%60 = add nsw i32 %59, 1
store i32 %60, i32* %8
%61 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
store i8* %61, i8** %9
br label %62
62: ; preds = %85, %58
%63 = load i8*, i8** %9
%64 = load i8, i8* %63
%65 = sext i8 %64 to i32
%66 = icmp eq i32 %65, 32
br i1 %66, label %82, label %67
67: ; preds = %62
%68 = load i8*, i8** %9
%69 = load i8, i8* %68
%70 = sext i8 %69 to i32
%71 = icmp eq i32 %70, 9
br i1 %71, label %82, label %72
72: ; preds = %67
%73 = load i8*, i8** %9
%74 = load i8, i8* %73
%75 = sext i8 %74 to i32
%76 = icmp eq i32 %75, 44
br i1 %76, label %82, label %77
77: ; preds = %72
%78 = load i8*, i8** %9
%79 = load i8, i8* %78
%80 = sext i8 %79 to i32
%81 = icmp eq i32 %80, 34
br label %82
82: ; preds = %77, %72, %67, %62
%83 = phi i1 [ true, %72 ], [ true, %67 ], [ true, %62 ], [ %81, %77 ]
br i1 %83, label %84, label %88
84: ; preds = %82
br label %85
85: ; preds = %84
%86 = load i8*, i8** %9
%87 = getelementptr inbounds i8, i8* %86, i32 1
store i8* %87, i8** %9
br label %62
88: ; preds = %82
%89 = load i8*, i8** %9
%90 = load i8, i8* %89
%91 = icmp ne i8 %90, 0
br i1 %91, label %92, label %97
92: ; preds = %88
%93 = load i8*, i8** %9
%94 = load i8, i8* %93
%95 = sext i8 %94 to i32
%96 = icmp eq i32 %95, 35
br i1 %96, label %97, label %98
97: ; preds = %92, %88
br label %35
98: ; preds = %92
%99 = load i8*, i8** %9
%100 = getelementptr inbounds i8, i8* %99, i64 1
store i8* %100, i8** %10
br label %101
101: ; preds = %129, %98
%102 = load i8*, i8** %10
%103 = load i8, i8* %102
%104 = sext i8 %103 to i32
%105 = icmp ne i32 %104, 32
br i1 %105, label %106, label %126
106: ; preds = %101
%107 = load i8*, i8** %10
%108 = load i8, i8* %107
%109 = sext i8 %108 to i32
%110 = icmp ne i32 %109, 9
br i1 %110, label %111, label %126
111: ; preds = %106
%112 = load i8*, i8** %10
%113 = load i8, i8* %112
%114 = sext i8 %113 to i32
%115 = icmp ne i32 %114, 44
br i1 %115, label %116, label %126
116: ; preds = %111
%117 = load i8*, i8** %10
%118 = load i8, i8* %117
%119 = sext i8 %118 to i32
%120 = icmp ne i32 %119, 34
br i1 %120, label %121, label %126
121: ; preds = %116
%122 = load i8*, i8** %10
%123 = load i8, i8* %122
%124 = sext i8 %123 to i32
%125 = icmp ne i32 %124, 0
br label %126
126: ; preds = %121, %116, %111, %106, %101
%127 = phi i1 [ false, %116 ], [ false, %111 ], [ false, %106 ], [ false, %101 ], [ %125, %121 ]
br i1 %127, label %128, label %132
128: ; preds = %126
br label %129
129: ; preds = %128
%130 = load i8*, i8** %10
%131 = getelementptr inbounds i8, i8* %130, i32 1
store i8* %131, i8** %10
br label %101
132: ; preds = %126
%133 = load i8*, i8** %10
%134 = load i8, i8* %133
%135 = icmp ne i8 %134, 0
br i1 %135, label %137, label %136
136: ; preds = %132
br label %35
137: ; preds = %132
%138 = load i8*, i8** %10
%139 = getelementptr inbounds i8, i8* %138, i32 1
store i8* %139, i8** %10
store i8 0, i8* %138
%140 = load i8*, i8** %10
store i8* %140, i8** %11
br label %141
141: ; preds = %164, %137
%142 = load i8*, i8** %11
%143 = load i8, i8* %142
%144 = sext i8 %143 to i32
%145 = icmp eq i32 %144, 32
br i1 %145, label %161, label %146
146: ; preds = %141
%147 = load i8*, i8** %11
%148 = load i8, i8* %147
%149 = sext i8 %148 to i32
%150 = icmp eq i32 %149, 9
br i1 %150, label %161, label %151
151: ; preds = %146
%152 = load i8*, i8** %11
%153 = load i8, i8* %152
%154 = sext i8 %153 to i32
%155 = icmp eq i32 %154, 44
br i1 %155, label %161, label %156
156: ; preds = %151
%157 = load i8*, i8** %11
%158 = load i8, i8* %157
%159 = sext i8 %158 to i32
%160 = icmp eq i32 %159, 34
br label %161
161: ; preds = %156, %151, %146, %141
%162 = phi i1 [ true, %151 ], [ true, %146 ], [ true, %141 ], [ %160, %156 ]
br i1 %162, label %163, label %167
163: ; preds = %161
br label %164
164: ; preds = %163
%165 = load i8*, i8** %11
%166 = getelementptr inbounds i8, i8* %165, i32 1
store i8* %166, i8** %11
br label %141
167: ; preds = %161
%168 = load i8*, i8** %11
%169 = load i8, i8* %168
%170 = icmp ne i8 %169, 0
br i1 %170, label %171, label %176
171: ; preds = %167
%172 = load i8*, i8** %11
%173 = load i8, i8* %172
%174 = sext i8 %173 to i32
%175 = icmp eq i32 %174, 35
br i1 %175, label %176, label %177
176: ; preds = %171, %167
br label %35
177: ; preds = %171
%178 = load i8*, i8** %11
%179 = getelementptr inbounds i8, i8* %178, i64 1
store i8* %179, i8** %12
br label %180
180: ; preds = %208, %177
%181 = load i8*, i8** %12
%182 = load i8, i8* %181
%183 = sext i8 %182 to i32
%184 = icmp ne i32 %183, 32
br i1 %184, label %185, label %205
185: ; preds = %180
%186 = load i8*, i8** %12
%187 = load i8, i8* %186
%188 = sext i8 %187 to i32
%189 = icmp ne i32 %188, 9
br i1 %189, label %190, label %205
190: ; preds = %185
%191 = load i8*, i8** %12
%192 = load i8, i8* %191
%193 = sext i8 %192 to i32
%194 = icmp ne i32 %193, 44
br i1 %194, label %195, label %205
195: ; preds = %190
%196 = load i8*, i8** %12
%197 = load i8, i8* %196
%198 = sext i8 %197 to i32
%199 = icmp ne i32 %198, 34
br i1 %199, label %200, label %205
200: ; preds = %195
%201 = load i8*, i8** %12
%202 = load i8, i8* %201
%203 = sext i8 %202 to i32
%204 = icmp ne i32 %203, 0
br label %205
205: ; preds = %200, %195, %190, %185, %180
%206 = phi i1 [ false, %195 ], [ false, %190 ], [ false, %185 ], [ false, %180 ], [ %204, %200 ]
br i1 %206, label %207, label %211
207: ; preds = %205
br label %208
208: ; preds = %207
%209 = load i8*, i8** %12
%210 = getelementptr inbounds i8, i8* %209, i32 1
store i8* %210, i8** %12
br label %180
211: ; preds = %205
%212 = load i8*, i8** %12
%213 = load i8, i8* %212
%214 = icmp ne i8 %213, 0
br i1 %214, label %216, label %215
215: ; preds = %211
br label %35
216: ; preds = %211
%217 = load i8*, i8** %12
%218 = getelementptr inbounds i8, i8* %217, i32 1
store i8* %218, i8** %12
store i8 0, i8* %217
br label %219
219: ; preds = %224, %216
%220 = load i8*, i8** %12
%221 = load i8, i8* %220
%222 = sext i8 %221 to i32
%223 = icmp eq i32 %222, 34
br i1 %223, label %224, label %227
224: ; preds = %219
%225 = load i8*, i8** %12
%226 = getelementptr inbounds i8, i8* %225, i32 1
store i8* %226, i8** %12
store i8 32, i8* %225
br label %219
227: ; preds = %219
br label %228
228: ; preds = %245, %227
%229 = load i8*, i8** %12
%230 = load i8, i8* %229
%231 = sext i8 %230 to i32
%232 = icmp eq i32 %231, 44
br i1 %232, label %243, label %233
233: ; preds = %228
%234 = load i8*, i8** %12
%235 = load i8, i8* %234
%236 = sext i8 %235 to i32
%237 = icmp eq i32 %236, 32
br i1 %237, label %243, label %238
238: ; preds = %233
%239 = load i8*, i8** %12
%240 = load i8, i8* %239
%241 = sext i8 %240 to i32
%242 = icmp eq i32 %241, 9
br label %243
243: ; preds = %238, %233, %228
%244 = phi i1 [ true, %233 ], [ true, %228 ], [ %242, %238 ]
br i1 %244, label %245, label %248
245: ; preds = %243
%246 = load i8*, i8** %12
%247 = getelementptr inbounds i8, i8* %246, i32 1
store i8* %247, i8** %12
store i8 32, i8* %246
br label %228
248: ; preds = %243
%249 = load i8*, i8** %12
%250 = getelementptr inbounds i8, i8* %249, i64 -1
%251 = load i8, i8* %250
%252 = sext i8 %251 to i32
%253 = icmp eq i32 %252, 32
br i1 %253, label %254, label %257
254: ; preds = %248
%255 = load i8*, i8** %12
%256 = getelementptr inbounds i8, i8* %255, i32 -1
store i8* %256, i8** %12
br label %257
257: ; preds = %254, %248
%258 = load i32, i32* @AF_INET
%259 = load i8*, i8** %9
%260 = call i64 @inet_pton(i32 %258, i8* %259, %struct.in_addr* %14)
%261 = icmp sle i64 %260, 0
br i1 %261, label %262, label %280
262: ; preds = %257
%263 = load i8*, i8** %9
%264 = call i32 @strtoul(i8* %263, i8** %13, i32 10)
%265 = call i8* @ntohl(i32 %264)
%266 = getelementptr inbounds %struct.in_addr, %struct.in_addr* %14, i32 0, i32 0
store i8* %265, i8** %266
%267 = load i8*, i8** %13
%268 = icmp ne i8* %267, null
br i1 %268, label %269, label %279
269: ; preds = %262
%270 = load i8*, i8** %13
%271 = load i8, i8* %270
%272 = sext i8 %271 to i32
%273 = icmp ne i32 %272, 0
br i1 %273, label %274, label %279
274: ; preds = %269
%275 = load i32, i32* @stderr
%276 = load i8*, i8** %9
%277 = load i32, i32* %8
%278 = call i32 @fprintf(i32 %275, i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str, i64 0, i64 0), i8* %276, i32 %277)
br label %35
279: ; preds = %269, %262
br label %280
280: ; preds = %279, %257
%281 = load i32, i32* @AF_INET
%282 = load i8*, i8** %11
%283 = call i64 @inet_pton(i32 %281, i8* %282, %struct.in_addr* %15)
%284 = icmp sle i64 %283, 0
br i1 %284, label %285, label %303
285: ; preds = %280
%286 = load i8*, i8** %11
%287 = call i32 @strtoul(i8* %286, i8** %13, i32 10)
%288 = call i8* @ntohl(i32 %287)
%289 = getelementptr inbounds %struct.in_addr, %struct.in_addr* %15, i32 0, i32 0
store i8* %288, i8** %289
%290 = load i8*, i8** %13
%291 = icmp ne i8* %290, null
br i1 %291, label %292, label %302
292: ; preds = %285
%293 = load i8*, i8** %13
%294 = load i8, i8* %293
%295 = sext i8 %294 to i32
%296 = icmp ne i32 %295, 0
br i1 %296, label %297, label %302
297: ; preds = %292
%298 = load i32, i32* @stderr
%299 = load i8*, i8** %11
%300 = load i32, i32* %8
%301 = call i32 @fprintf(i32 %298, i8* getelementptr inbounds ([68 x i8], [68 x i8]* @.str.1, i64 0, i64 0), i8* %299, i32 %300)
br label %35
302: ; preds = %292, %285
br label %303
303: ; preds = %302, %280
%304 = getelementptr inbounds %struct.in_addr, %struct.in_addr* %14, i32 0, i32 0
%305 = load i8*, i8** %304
%306 = call i32 @htonl(i8* %305)
store i32 %306, i32* %16
%307 = getelementptr inbounds %struct.in_addr, %struct.in_addr* %15, i32 0, i32 0
%308 = load i8*, i8** %307
%309 = call i32 @htonl(i8* %308)
store i32 %309, i32* %17
%310 = load i32, i32* %4
%311 = icmp sgt i32 %310, 1
br i1 %311, label %312, label %361
312: ; preds = %303
store i32 1, i32* %7
br label %313
313: ; preds = %357, %312
%314 = load i32, i32* %7
%315 = load i32, i32* %4
%316 = icmp slt i32 %314, %315
br i1 %316, label %317, label %360
317: ; preds = %313
%318 = load i32, i32* @AF_INET
%319 = load i8**, i8*** %5
%320 = load i32, i32* %7
%321 = sext i32 %320 to i64
%322 = getelementptr inbounds i8*, i8** %319, i64 %321
%323 = load i8*, i8** %322
%324 = call i64 @inet_pton(i32 %318, i8* %323, %struct.in_addr* %15)
%325 = icmp sle i64 %324, 0
br i1 %325, label %326, label %327
326: ; preds = %317
br label %357
327: ; preds = %317
%328 = getelementptr inbounds %struct.in_addr, %struct.in_addr* %15, i32 0, i32 0
%329 = load i8*, i8** %328
%330 = call i32 @htonl(i8* %329)
store i32 %330, i32* %18
%331 = load i32, i32* %16
%332 = load i32, i32* %18
%333 = icmp ule i32 %331, %332
br i1 %333, label %334, label %338
334: ; preds = %327
%335 = load i32, i32* %18
%336 = load i32, i32* %17
%337 = icmp ule i32 %335, %336
br i1 %337, label %346, label %338
338: ; preds = %334, %327
%339 = load i32, i32* %17
%340 = load i32, i32* %18
%341 = icmp ule i32 %339, %340
br i1 %341, label %342, label %356
342: ; preds = %338
%343 = load i32, i32* %18
%344 = load i32, i32* %16
%345 = icmp ule i32 %343, %344
br i1 %345, label %346, label %356
346: ; preds = %342, %334
%347 = load i32, i32* %16
%348 = load i32, i32* %17
%349 = load i8*, i8** %12
%350 = load i8**, i8*** %5
%351 = load i32, i32* %7
%352 = sext i32 %351 to i64
%353 = getelementptr inbounds i8*, i8** %350, i64 %352
%354 = load i8*, i8** %353
%355 = call i32 @convert_range(i32 %347, i32 %348, i8* %349, i8* %354)
br label %356
356: ; preds = %346, %342, %338
br label %357
357: ; preds = %356, %326
%358 = load i32, i32* %7
%359 = add nsw i32 %358, 1
store i32 %359, i32* %7
br label %313
360: ; preds = %313
br label %366
361: ; preds = %303
%362 = load i32, i32* %16
%363 = load i32, i32* %17
%364 = load i8*, i8** %12
%365 = call i32 @convert_range(i32 %362, i32 %363, i8* %364, i8* null)
br label %366
366: ; preds = %361, %360
br label %35
367: ; preds = %35
%368 = load i32, i32* %3
ret i32 %368
}

LLVM IR (-O2):
%struct.in_addr = type { i8* }
@stdin = global i32 0
@AF_INET = global i32 0
@stderr = global i32 0
@.str = [63 x i8] c"Failed to parse source address <%s> at line %d, skipping line\0A\00"
@.str.1 = [68 x i8] c"Failed to parse destination address <%s> at line %d, skipping line\0A\00"
define i32 @main(i32 %0, i8** nocapture %1) {
%3 = alloca [1024 x i8]
%4 = alloca i8*
%5 = alloca %struct.in_addr
%6 = alloca %struct.in_addr
%7 = getelementptr inbounds [1024 x i8], [1024 x i8]* %3, i64 0, i64 0
%8 = bitcast i8** %4 to i8*
%9 = bitcast %struct.in_addr* %5 to i8*
%10 = bitcast %struct.in_addr* %6 to i8*
%11 = icmp sgt i32 %0, 1
br i1 %11, label %12, label %21
12: ; preds = %2
%13 = getelementptr inbounds i8*, i8** %1, i64 1
%14 = load i8*, i8** %13
%15 = load i8, i8* %14
%16 = icmp eq i8 %15, 45
br i1 %16, label %17, label %21
17: ; preds = %12
%18 = load i8*, i8** %1
%19 = tail call i32 @usage(i8* %18)
%20 = tail call i32 @exit(i32 1)
unreachable
21: ; preds = %12, %2
%22 = load i32, i32* @stdin
%23 = call i32* @fgets(i8* %7, i32 1024, i32 %22)
%24 = icmp eq i32* %23, null
br i1 %24, label %147, label %25
25: ; preds = %21
%26 = getelementptr inbounds %struct.in_addr, %struct.in_addr* %5, i64 0, i32 0
%27 = getelementptr inbounds %struct.in_addr, %struct.in_addr* %6, i64 0, i32 0
%28 = zext i32 %0 to i64
br label %29
29: ; preds = %25, %47
%30 = phi i32 [ 0, %25 ], [ %41, %47 ]
%31 = call i32 @strlen(i8* %7)
%32 = icmp eq i32 %31, 0
br i1 %32, label %40, label %33
33: ; preds = %29
%34 = add nsw i32 %31, -1
%35 = sext i32 %34 to i64
%36 = getelementptr inbounds [1024 x i8], [1024 x i8]* %3, i64 0, i64 %35
%37 = load i8, i8* %36
%38 = icmp eq i8 %37, 10
br i1 %38, label %39, label %40
39: ; preds = %33
store i8 0, i8* %36
br label %40
40: ; preds = %39, %33, %29
%41 = add nuw nsw i32 %30, 1
br label %42
42: ; preds = %45, %40
%43 = phi i8* [ %7, %40 ], [ %46, %45 ]
%44 = load i8, i8* %43
switch i8 %44, label %51 [
i8 32, label %45
i8 9, label %45
i8 44, label %45
i8 34, label %45
i8 0, label %47
i8 35, label %47
]
45: ; preds = %42, %42, %42, %42
%46 = getelementptr inbounds i8, i8* %43, i64 1
br label %42
47: ; preds = %42, %42, %51, %56, %56, %61, %142, %145, %99, %114
%48 = load i32, i32* @stdin
%49 = call i32* @fgets(i8* %7, i32 1024, i32 %48)
%50 = icmp eq i32* %49, null
br i1 %50, label %147, label %29
51: ; preds = %42, %51
%52 = phi i8* [ %53, %51 ], [ %43, %42 ]
%53 = getelementptr inbounds i8, i8* %52, i64 1
%54 = load i8, i8* %53
switch i8 %54, label %51 [
i8 0, label %47
i8 9, label %55
i8 32, label %55
i8 34, label %55
i8 44, label %55
]
55: ; preds = %51, %51, %51, %51
store i8 0, i8* %53
br label %56
56: ; preds = %60, %55
%57 = phi i8* [ %53, %55 ], [ %58, %60 ]
%58 = getelementptr inbounds i8, i8* %57, i64 1
%59 = load i8, i8* %58
switch i8 %59, label %61 [
i8 32, label %60
i8 9, label %60
i8 44, label %60
i8 34, label %60
i8 0, label %47
i8 35, label %47
]
60: ; preds = %56, %56, %56, %56
br label %56
61: ; preds = %56, %61
%62 = phi i8* [ %63, %61 ], [ %58, %56 ]
%63 = getelementptr inbounds i8, i8* %62, i64 1
%64 = load i8, i8* %63
switch i8 %64, label %61 [
i8 0, label %47
i8 9, label %65
i8 32, label %65
i8 34, label %65
i8 44, label %65
]
65: ; preds = %61, %61, %61, %61
store i8 0, i8* %63
%66 = getelementptr inbounds i8, i8* %62, i64 2
%67 = load i8, i8* %66
%68 = icmp eq i8 %67, 34
br i1 %68, label %69, label %74
69: ; preds = %65, %69
%70 = phi i8* [ %71, %69 ], [ %66, %65 ]
store i8 32, i8* %70
%71 = getelementptr inbounds i8, i8* %70, i64 1
%72 = load i8, i8* %71
%73 = icmp eq i8 %72, 34
br i1 %73, label %69, label %74
74: ; preds = %69, %65
%75 = phi i8 [ %67, %65 ], [ %72, %69 ]
%76 = phi i8* [ %66, %65 ], [ %71, %69 ]
br label %77
77: ; preds = %74, %80
%78 = phi i8 [ %82, %80 ], [ %75, %74 ]
%79 = phi i8* [ %81, %80 ], [ %76, %74 ]
switch i8 %78, label %83 [
i8 44, label %80
i8 32, label %80
i8 9, label %80
]
80: ; preds = %77, %77, %77
%81 = getelementptr inbounds i8, i8* %79, i64 1
store i8 32, i8* %79
%82 = load i8, i8* %81
br label %77
83: ; preds = %77
%84 = getelementptr inbounds i8, i8* %79, i64 -1
%85 = load i8, i8* %84
%86 = icmp eq i8 %85, 32
%87 = select i1 %86, i8* %84, i8* %79
%88 = load i32, i32* @AF_INET
%89 = call i64 @inet_pton(i32 %88, i8* %43, %struct.in_addr* %5)
%90 = icmp slt i64 %89, 1
br i1 %90, label %91, label %102
91: ; preds = %83
%92 = call i32 @strtoul(i8* %43, i8** %4, i32 10)
%93 = call i8* @ntohl(i32 %92)
store i8* %93, i8** %26
%94 = load i8*, i8** %4
%95 = icmp eq i8* %94, null
br i1 %95, label %102, label %96
96: ; preds = %91
%97 = load i8, i8* %94
%98 = icmp eq i8 %97, 0
br i1 %98, label %102, label %99
99: ; preds = %96
%100 = load i32, i32* @stderr
%101 = call i32 @fprintf(i32 %100, i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str, i64 0, i64 0), i8* %43, i32 %41)
br label %47
102: ; preds = %91, %96, %83
%103 = load i32, i32* @AF_INET
%104 = call i64 @inet_pton(i32 %103, i8* %58, %struct.in_addr* %6)
%105 = icmp slt i64 %104, 1
br i1 %105, label %106, label %117
106: ; preds = %102
%107 = call i32 @strtoul(i8* %58, i8** %4, i32 10)
%108 = call i8* @ntohl(i32 %107)
store i8* %108, i8** %27
%109 = load i8*, i8** %4
%110 = icmp eq i8* %109, null
br i1 %110, label %117, label %111
111: ; preds = %106
%112 = load i8, i8* %109
%113 = icmp eq i8 %112, 0
br i1 %113, label %117, label %114
114: ; preds = %111
%115 = load i32, i32* @stderr
%116 = call i32 @fprintf(i32 %115, i8* getelementptr inbounds ([68 x i8], [68 x i8]* @.str.1, i64 0, i64 0), i8* %58, i32 %41)
br label %47
117: ; preds = %106, %111, %102
%118 = load i8*, i8** %26
%119 = call i32 @htonl(i8* %118)
%120 = load i8*, i8** %27
%121 = call i32 @htonl(i8* %120)
br i1 %11, label %122, label %145
122: ; preds = %117, %142
%123 = phi i64 [ %143, %142 ], [ 1, %117 ]
%124 = load i32, i32* @AF_INET
%125 = getelementptr inbounds i8*, i8** %1, i64 %123
%126 = load i8*, i8** %125
%127 = call i64 @inet_pton(i32 %124, i8* %126, %struct.in_addr* %6)
%128 = icmp slt i64 %127, 1
br i1 %128, label %142, label %129
129: ; preds = %122
%130 = load i8*, i8** %27
%131 = call i32 @htonl(i8* %130)
%132 = icmp ugt i32 %119, %131
%133 = icmp ugt i32 %131, %121
%134 = select i1 %132, i1 true, i1 %133
br i1 %134, label %135, label %139
135: ; preds = %129
%136 = icmp ugt i32 %121, %131
%137 = icmp ugt i32 %131, %119
%138 = select i1 %136, i1 true, i1 %137
br i1 %138, label %142, label %139
139: ; preds = %135, %129
%140 = load i8*, i8** %125
%141 = call i32 @convert_range(i32 %119, i32 %121, i8* %87, i8* %140)
br label %142
142: ; preds = %135, %139, %122
%143 = add nuw nsw i64 %123, 1
%144 = icmp eq i64 %143, %28
br i1 %144, label %47, label %122
145: ; preds = %117
%146 = call i32 @convert_range(i32 %119, i32 %121, i8* %87, i8* null)
br label %47
147: ; preds = %47, %21
ret i32 0
}