#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 */
typedef int uint32_t;

/* Variables and functions */
int topology_parsenet(char *net, uint32_t *fromip, uint32_t *toip) {
  uint32_t ip, i, octet;
  if (net[0] == '*' && net[1] == 0) {
    *fromip = 0;
    *toip = 0xFFFFFFFFU;
    return 0;
  }
  ip = 0;
  for (i = 0; i < 4; i++) {
    if (*net >= '0' && *net <= '9') {
      octet = 0;
      while (*net >= '0' && *net <= '9') {
        octet *= 10;
        octet += (*net) - '0';
        net++;
        if (octet > 255) {
          return -1;
        }
      }
    } else {
      return -1;
    }
    if (i < 3) {
      if (*net != '.') {
        return -1;
      }
      net++;
    }
    ip *= 256;
    ip += octet;
  }
  if (*net == 0) {
    *fromip = ip;
    *toip = ip;
    return 0;
  }
  if (*net == '/') {
    *fromip = ip;
    ip = 0;
    net++;
    for (i = 0; i < 4; i++) {
      if (*net >= '0' && *net <= '9') {
        octet = 0;
        while (*net >= '0' && *net <= '9') {
          octet *= 10;
          octet += (*net) - '0';
          net++;
          if (octet > 255) {
            return -1;
          }
        }
      } else {
        return -1;
      }
      if (i == 0 && *net == 0 && octet <= 32) {
        ip = 0xFFFFFFFF;
        if (octet < 32) {
          ip <<= 32 - octet;
        }
        break;
      }
      if (i < 3) {
        if (*net != '.') {
          return -1;
        }
        net++;
      }
      ip *= 256;
      ip += octet;
    }
    if (*net != 0) {
      return -1;
    }
    *fromip &= ip;
    *toip = *fromip | (ip ^ 0xFFFFFFFFU);
    return 0;
  }
  if (*net == '-') {
    *fromip = ip;
    ip = 0;
    net++;
    for (i = 0; i < 4; i++) {
      if (*net >= '0' && *net <= '9') {
        octet = 0;
        while (*net >= '0' && *net <= '9') {
          octet *= 10;
          octet += *net - '0';
          net++;
          if (octet > 255) {
            return -1;
          }
        }
      } else {
        return -1;
      }
      if (i < 3) {
        if (*net != '.') {
          return -1;
        }
        net++;
      }
      ip *= 256;
      ip += octet;
    }
    if (*net != 0) {
      return -1;
    }
    *toip = ip;
    return 0;
  }
  return -1;
}


x86 assembly (clang, -O0):
<topology_parsenet>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2a,%eax
jne    1151 <topology_parsenet+0x51>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x0,%eax
jne    1151 <topology_parsenet+0x51>
mov    -0x18(%rbp),%rax
movl   $0x0,(%rax)
mov    -0x20(%rbp),%rax
movl   $0xffffffff,(%rax)
movl   $0x0,-0x4(%rbp)
jmp    15da <topology_parsenet+0x4da>
movl   $0x0,-0x24(%rbp)
movl   $0x0,-0x28(%rbp)
cmpl   $0x4,-0x28(%rbp)
jge    1269 <topology_parsenet+0x169>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x30,%eax
jl     120b <topology_parsenet+0x10b>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x39,%eax
jg     120b <topology_parsenet+0x10b>
movl   $0x0,-0x2c(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x30,%ecx
mov    %al,-0x2d(%rbp)
jl     11b5 <topology_parsenet+0xb5>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x39,%eax
setle  %al
mov    %al,-0x2d(%rbp)
mov    -0x2d(%rbp),%al
test   $0x1,%al
jne    11c5 <topology_parsenet+0xc5>
jmp    1206 <topology_parsenet+0x106>
imul   $0xa,-0x2c(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
sub    $0x30,%eax
add    -0x2c(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
cmpl   $0xff,-0x2c(%rbp)
jle    1201 <topology_parsenet+0x101>
movl   $0xffffffff,-0x4(%rbp)
jmp    15da <topology_parsenet+0x4da>
jmp    1190 <topology_parsenet+0x90>
jmp    1217 <topology_parsenet+0x117>
movl   $0xffffffff,-0x4(%rbp)
jmp    15da <topology_parsenet+0x4da>
cmpl   $0x3,-0x28(%rbp)
jge    1249 <topology_parsenet+0x149>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2e,%eax
je     123d <topology_parsenet+0x13d>
movl   $0xffffffff,-0x4(%rbp)
jmp    15da <topology_parsenet+0x4da>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x24(%rbp),%eax
shl    $0x8,%eax
mov    %eax,-0x24(%rbp)
mov    -0x2c(%rbp),%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    115f <topology_parsenet+0x5f>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
jne    1297 <topology_parsenet+0x197>
mov    -0x24(%rbp),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x24(%rbp),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x0,-0x4(%rbp)
jmp    15da <topology_parsenet+0x4da>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2f,%eax
jne    1465 <topology_parsenet+0x365>
mov    -0x24(%rbp),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x0,-0x24(%rbp)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
movl   $0x0,-0x28(%rbp)
cmpl   $0x4,-0x28(%rbp)
jge    141e <topology_parsenet+0x31e>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x30,%eax
jl     1376 <topology_parsenet+0x276>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x39,%eax
jg     1376 <topology_parsenet+0x276>
movl   $0x0,-0x2c(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x30,%ecx
mov    %al,-0x2e(%rbp)
jl     1320 <topology_parsenet+0x220>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x39,%eax
setle  %al
mov    %al,-0x2e(%rbp)
mov    -0x2e(%rbp),%al
test   $0x1,%al
jne    1330 <topology_parsenet+0x230>
jmp    1371 <topology_parsenet+0x271>
imul   $0xa,-0x2c(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
sub    $0x30,%eax
add    -0x2c(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
cmpl   $0xff,-0x2c(%rbp)
jle    136c <topology_parsenet+0x26c>
movl   $0xffffffff,-0x4(%rbp)
jmp    15da <topology_parsenet+0x4da>
jmp    12fb <topology_parsenet+0x1fb>
jmp    1382 <topology_parsenet+0x282>
movl   $0xffffffff,-0x4(%rbp)
jmp    15da <topology_parsenet+0x4da>
cmpl   $0x0,-0x28(%rbp)
jne    13cc <topology_parsenet+0x2cc>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
jne    13cc <topology_parsenet+0x2cc>
cmpl   $0x20,-0x2c(%rbp)
jg     13cc <topology_parsenet+0x2cc>
movl   $0xffffffff,-0x24(%rbp)
cmpl   $0x20,-0x2c(%rbp)
jge    13c7 <topology_parsenet+0x2c7>
mov    $0x20,%ecx
sub    -0x2c(%rbp),%ecx
mov    -0x24(%rbp),%eax
shl    %cl,%eax
mov    %eax,-0x24(%rbp)
jmp    141e <topology_parsenet+0x31e>
cmpl   $0x3,-0x28(%rbp)
jge    13fe <topology_parsenet+0x2fe>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2e,%eax
je     13f2 <topology_parsenet+0x2f2>
movl   $0xffffffff,-0x4(%rbp)
jmp    15da <topology_parsenet+0x4da>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x24(%rbp),%eax
shl    $0x8,%eax
mov    %eax,-0x24(%rbp)
mov    -0x2c(%rbp),%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    12ca <topology_parsenet+0x1ca>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
je     143a <topology_parsenet+0x33a>
movl   $0xffffffff,-0x4(%rbp)
jmp    15da <topology_parsenet+0x4da>
mov    -0x24(%rbp),%ecx
mov    -0x18(%rbp),%rax
and    (%rax),%ecx
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
mov    (%rax),%ecx
mov    -0x24(%rbp),%eax
xor    $0xffffffff,%eax
or     %eax,%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x0,-0x4(%rbp)
jmp    15da <topology_parsenet+0x4da>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2d,%eax
jne    15d3 <topology_parsenet+0x4d3>
mov    -0x24(%rbp),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x0,-0x24(%rbp)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
movl   $0x0,-0x28(%rbp)
cmpl   $0x4,-0x28(%rbp)
jge    15a2 <topology_parsenet+0x4a2>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x30,%eax
jl     1544 <topology_parsenet+0x444>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x39,%eax
jg     1544 <topology_parsenet+0x444>
movl   $0x0,-0x2c(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x30,%ecx
mov    %al,-0x2f(%rbp)
jl     14ee <topology_parsenet+0x3ee>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x39,%eax
setle  %al
mov    %al,-0x2f(%rbp)
mov    -0x2f(%rbp),%al
test   $0x1,%al
jne    14fe <topology_parsenet+0x3fe>
jmp    153f <topology_parsenet+0x43f>
imul   $0xa,-0x2c(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
sub    $0x30,%eax
add    -0x2c(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
cmpl   $0xff,-0x2c(%rbp)
jle    153a <topology_parsenet+0x43a>
movl   $0xffffffff,-0x4(%rbp)
jmp    15da <topology_parsenet+0x4da>
jmp    14c9 <topology_parsenet+0x3c9>
jmp    1550 <topology_parsenet+0x450>
movl   $0xffffffff,-0x4(%rbp)
jmp    15da <topology_parsenet+0x4da>
cmpl   $0x3,-0x28(%rbp)
jge    1582 <topology_parsenet+0x482>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2e,%eax
je     1576 <topology_parsenet+0x476>
movl   $0xffffffff,-0x4(%rbp)
jmp    15da <topology_parsenet+0x4da>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x24(%rbp),%eax
shl    $0x8,%eax
mov    %eax,-0x24(%rbp)
mov    -0x2c(%rbp),%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    1498 <topology_parsenet+0x398>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
je     15be <topology_parsenet+0x4be>
movl   $0xffffffff,-0x4(%rbp)
jmp    15da <topology_parsenet+0x4da>
mov    -0x24(%rbp),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x0,-0x4(%rbp)
jmp    15da <topology_parsenet+0x4da>
movl   $0xffffffff,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<topology_parsenet>:
mov    (%rdi),%cl
cmp    $0x2a,%cl
jne    1117 <topology_parsenet+0x17>
mov    $0xffffffff,%eax
cmpb   $0x0,0x1(%rdi)
je     1268 <topology_parsenet+0x168>
ret
lea    -0x30(%rcx),%r8d
mov    $0xffffffff,%eax
cmp    $0x9,%r8b
ja     1116 <topology_parsenet+0x16>
add    $0x8,%rdi
xor    %r9d,%r9d
nopl   (%rax)
movzbl %cl,%r8d
lea    (%r9,%r9,4),%ecx
lea    (%r8,%rcx,2),%r9d
add    $0xffffffd0,%r9d
cmp    $0xff,%r9d
jg     1116 <topology_parsenet+0x16>
movzbl -0x7(%rdi),%ecx
lea    -0x30(%rcx),%r8d
add    $0x1,%rdi
cmp    $0x9,%r8b
jbe    1130 <topology_parsenet+0x30>
cmp    $0x2e,%cl
jne    1116 <topology_parsenet+0x16>
mov    -0x7(%rdi),%r10b
lea    -0x30(%r10),%ecx
cmp    $0x9,%cl
ja     1116 <topology_parsenet+0x16>
xor    %r8d,%r8d
movzbl %r10b,%r10d
lea    (%r8,%r8,4),%ecx
lea    (%r10,%rcx,2),%r8d
add    $0xffffffd0,%r8d
cmp    $0xff,%r8d
jg     1116 <topology_parsenet+0x16>
movzbl -0x6(%rdi),%r10d
lea    -0x30(%r10),%ecx
add    $0x1,%rdi
cmp    $0xa,%cl
jb     1170 <topology_parsenet+0x70>
cmp    $0x2e,%r10b
jne    1116 <topology_parsenet+0x16>
mov    -0x6(%rdi),%r10b
lea    -0x30(%r10),%ecx
cmp    $0x9,%cl
ja     1116 <topology_parsenet+0x16>
shl    $0x8,%r9d
add    %r9d,%r8d
xor    %r9d,%r9d
movzbl %r10b,%r10d
lea    (%r9,%r9,4),%ecx
lea    (%r10,%rcx,2),%r9d
add    $0xffffffd0,%r9d
cmp    $0xff,%r9d
jg     1116 <topology_parsenet+0x16>
movzbl -0x5(%rdi),%r10d
lea    -0x30(%r10),%ecx
add    $0x1,%rdi
cmp    $0xa,%cl
jb     11c0 <topology_parsenet+0xc0>
cmp    $0x2e,%r10b
jne    1116 <topology_parsenet+0x16>
mov    -0x5(%rdi),%r10b
lea    -0x30(%r10),%ecx
cmp    $0x9,%cl
ja     1116 <topology_parsenet+0x16>
shl    $0x8,%r8d
add    %r8d,%r9d
xor    %r8d,%r8d
movzbl %r10b,%r10d
lea    (%r8,%r8,4),%ecx
lea    (%r10,%rcx,2),%r8d
add    $0xffffffd0,%r8d
cmp    $0xff,%r8d
jg     1116 <topology_parsenet+0x16>
movzbl -0x4(%rdi),%r10d
lea    -0x30(%r10),%ecx
add    $0x1,%rdi
cmp    $0xa,%cl
jb     1214 <topology_parsenet+0x114>
shl    $0x8,%r9d
add    %r9d,%r8d
mov    -0x5(%rdi),%cl
cmp    $0x2f,%cl
je     127a <topology_parsenet+0x17a>
cmp    $0x2d,%cl
je     130c <topology_parsenet+0x20c>
test   %cl,%cl
jne    1116 <topology_parsenet+0x16>
mov    %r8d,(%rsi)
jmp    1274 <topology_parsenet+0x174>
movl   $0x0,(%rsi)
mov    $0xffffffff,%r8d
mov    %r8d,(%rdx)
xor    %eax,%eax
ret
mov    %r8d,(%rsi)
mov    -0x4(%rdi),%r9b
lea    -0x30(%r9),%ecx
cmp    $0x9,%cl
ja     1116 <topology_parsenet+0x16>
add    $0xffffffffffffffff,%rdi
xor    %ecx,%ecx
movzbl %r9b,%r9d
lea    (%rcx,%rcx,4),%ecx
lea    (%r9,%rcx,2),%ecx
add    $0xffffffd0,%ecx
cmp    $0xff,%ecx
jg     1116 <topology_parsenet+0x16>
movzbl -0x2(%rdi),%r9d
lea    -0x30(%r9),%r10d
add    $0x1,%rdi
cmp    $0x9,%r10b
jbe    1294 <topology_parsenet+0x194>
test   %r9b,%r9b
jne    1450 <topology_parsenet+0x350>
cmp    $0x20,%ecx
jg     1450 <topology_parsenet+0x350>
add    $0xfffffffffffffffd,%rdi
mov    $0xffffffff,%r9d
cmp    $0x1f,%ecx
jg     12ed <topology_parsenet+0x1ed>
neg    %cl
mov    $0xffffffff,%r9d
shl    %cl,%r9d
cmpb   $0x0,(%rdi)
jne    1116 <topology_parsenet+0x16>
mov    %r9d,%eax
and    %r8d,%eax
mov    %eax,(%rsi)
not    %r9d
or     %r8d,%r9d
mov    %r9d,%r8d
jmp    1274 <topology_parsenet+0x174>
mov    %r8d,(%rsi)
mov    -0x4(%rdi),%cl
lea    -0x30(%rcx),%esi
cmp    $0x9,%sil
ja     1116 <topology_parsenet+0x16>
xor    %r9d,%r9d
movzbl %cl,%ecx
lea    (%r9,%r9,4),%esi
lea    (%rcx,%rsi,2),%r9d
add    $0xffffffd0,%r9d
cmp    $0xff,%r9d
jg     1116 <topology_parsenet+0x16>
movzbl -0x3(%rdi),%ecx
lea    -0x30(%rcx),%esi
add    $0x1,%rdi
cmp    $0x9,%sil
jbe    1322 <topology_parsenet+0x222>
cmp    $0x2e,%cl
jne    1116 <topology_parsenet+0x16>
mov    -0x3(%rdi),%cl
lea    -0x30(%rcx),%esi
cmp    $0x9,%sil
ja     1116 <topology_parsenet+0x16>
shl    $0x8,%r9d
xor    %r8d,%r8d
movzbl %cl,%ecx
lea    (%r8,%r8,4),%esi
lea    (%rcx,%rsi,2),%r8d
add    $0xffffffd0,%r8d
cmp    $0xff,%r8d
jg     1116 <topology_parsenet+0x16>
movzbl -0x2(%rdi),%ecx
lea    -0x30(%rcx),%esi
add    $0x1,%rdi
cmp    $0xa,%sil
jb     136f <topology_parsenet+0x26f>
cmp    $0x2e,%cl
jne    1116 <topology_parsenet+0x16>
mov    -0x2(%rdi),%cl
lea    -0x30(%rcx),%esi
cmp    $0x9,%sil
ja     1116 <topology_parsenet+0x16>
add    %r9d,%r8d
xor    %r10d,%r10d
movzbl %cl,%ecx
lea    (%r10,%r10,4),%esi
lea    (%rcx,%rsi,2),%r10d
add    $0xffffffd0,%r10d
cmp    $0xff,%r10d
jg     1116 <topology_parsenet+0x16>
movzbl -0x1(%rdi),%ecx
lea    -0x30(%rcx),%esi
add    $0x1,%rdi
cmp    $0xa,%sil
jb     13bb <topology_parsenet+0x2bb>
cmp    $0x2e,%cl
jne    1116 <topology_parsenet+0x16>
mov    -0x1(%rdi),%r9b
lea    -0x30(%r9),%ecx
cmp    $0x9,%cl
ja     1116 <topology_parsenet+0x16>
shl    $0x8,%r8d
add    %r8d,%r10d
xor    %r8d,%r8d
movzbl %r9b,%ecx
lea    (%r8,%r8,4),%esi
lea    (%rcx,%rsi,2),%r8d
add    $0xffffffd0,%r8d
cmp    $0xff,%r8d
jg     1116 <topology_parsenet+0x16>
movzbl (%rdi),%r9d
lea    -0x30(%r9),%ecx
add    $0x1,%rdi
cmp    $0xa,%cl
jb     140c <topology_parsenet+0x30c>
cmpb   $0x0,-0x1(%rdi)
jne    1116 <topology_parsenet+0x16>
shl    $0x8,%r10d
add    %r10d,%r8d
jmp    1274 <topology_parsenet+0x174>
cmp    $0x2e,%r9b
jne    1116 <topology_parsenet+0x16>
mov    -0x2(%rdi),%r10b
lea    -0x30(%r10),%r9d
cmp    $0x9,%r9b
ja     1116 <topology_parsenet+0x16>
xor    %r9d,%r9d
movzbl %r10b,%r10d
lea    (%r9,%r9,4),%r9d
lea    (%r10,%r9,2),%r9d
add    $0xffffffd0,%r9d
cmp    $0xff,%r9d
jg     1116 <topology_parsenet+0x16>
movzbl -0x1(%rdi),%r10d
lea    -0x30(%r10),%r11d
add    $0x1,%rdi
cmp    $0xa,%r11b
jb     146f <topology_parsenet+0x36f>
cmp    $0x2e,%r10b
jne    1116 <topology_parsenet+0x16>
mov    -0x1(%rdi),%r10b
lea    -0x30(%r10),%r11d
cmp    $0x9,%r11b
ja     1116 <topology_parsenet+0x16>
shl    $0x8,%ecx
add    %ecx,%r9d
xor    %r11d,%r11d
movzbl %r10b,%r10d
lea    (%r11,%r11,4),%ecx
lea    (%r10,%rcx,2),%r11d
add    $0xffffffd0,%r11d
cmp    $0xff,%r11d
jg     1116 <topology_parsenet+0x16>
movzbl (%rdi),%r10d
lea    -0x30(%r10),%ecx
add    $0x1,%rdi
cmp    $0xa,%cl
jb     14c4 <topology_parsenet+0x3c4>
cmp    $0x2e,%r10b
jne    1116 <topology_parsenet+0x16>
mov    (%rdi),%r10b
lea    -0x30(%r10),%ecx
cmp    $0x9,%cl
ja     1116 <topology_parsenet+0x16>
shl    $0x8,%r9d
add    %r9d,%r11d
xor    %r9d,%r9d
movzbl %r10b,%r10d
lea    (%r9,%r9,4),%ecx
lea    (%r10,%rcx,2),%r9d
add    $0xffffffd0,%r9d
cmp    $0xff,%r9d
jg     1116 <topology_parsenet+0x16>
movzbl 0x1(%rdi),%r10d
add    $0x1,%rdi
lea    -0x30(%r10),%ecx
cmp    $0xa,%cl
jb     1516 <topology_parsenet+0x416>
shl    $0x8,%r11d
add    %r11d,%r9d
cmpb   $0x0,(%rdi)
jne    1116 <topology_parsenet+0x16>
jmp    12f6 <topology_parsenet+0x1f6>

LLVM IR (-O0):
define i32 @topology_parsenet(i8* %0, i32* %1, i32* %2) {
%4 = alloca i32
%5 = alloca i8*
%6 = alloca i32*
%7 = alloca i32*
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
store i8* %0, i8** %5
store i32* %1, i32** %6
store i32* %2, i32** %7
%11 = load i8*, i8** %5
%12 = getelementptr inbounds i8, i8* %11, i64 0
%13 = load i8, i8* %12
%14 = sext i8 %13 to i32
%15 = icmp eq i32 %14, 42
br i1 %15, label %16, label %25
16: ; preds = %3
%17 = load i8*, i8** %5
%18 = getelementptr inbounds i8, i8* %17, i64 1
%19 = load i8, i8* %18
%20 = sext i8 %19 to i32
%21 = icmp eq i32 %20, 0
br i1 %21, label %22, label %25
22: ; preds = %16
%23 = load i32*, i32** %6
store i32 0, i32* %23
%24 = load i32*, i32** %7
store i32 -1, i32* %24
store i32 0, i32* %4
br label %295
25: ; preds = %16, %3
store i32 0, i32* %8
store i32 0, i32* %9
br label %26
26: ; preds = %87, %25
%27 = load i32, i32* %9
%28 = icmp slt i32 %27, 4
br i1 %28, label %29, label %90
29: ; preds = %26
%30 = load i8*, i8** %5
%31 = load i8, i8* %30
%32 = sext i8 %31 to i32
%33 = icmp sge i32 %32, 48
br i1 %33, label %34, label %68
34: ; preds = %29
%35 = load i8*, i8** %5
%36 = load i8, i8* %35
%37 = sext i8 %36 to i32
%38 = icmp sle i32 %37, 57
br i1 %38, label %39, label %68
39: ; preds = %34
store i32 0, i32* %10
br label %40
40: ; preds = %66, %39
%41 = load i8*, i8** %5
%42 = load i8, i8* %41
%43 = sext i8 %42 to i32
%44 = icmp sge i32 %43, 48
br i1 %44, label %45, label %50
45: ; preds = %40
%46 = load i8*, i8** %5
%47 = load i8, i8* %46
%48 = sext i8 %47 to i32
%49 = icmp sle i32 %48, 57
br label %50
50: ; preds = %45, %40
%51 = phi i1 [ false, %40 ], [ %49, %45 ]
br i1 %51, label %52, label %67
52: ; preds = %50
%53 = load i32, i32* %10
%54 = mul nsw i32 %53, 10
store i32 %54, i32* %10
%55 = load i8*, i8** %5
%56 = load i8, i8* %55
%57 = sext i8 %56 to i32
%58 = sub nsw i32 %57, 48
%59 = load i32, i32* %10
%60 = add nsw i32 %59, %58
store i32 %60, i32* %10
%61 = load i8*, i8** %5
%62 = getelementptr inbounds i8, i8* %61, i32 1
store i8* %62, i8** %5
%63 = load i32, i32* %10
%64 = icmp sgt i32 %63, 255
br i1 %64, label %65, label %66
65: ; preds = %52
store i32 -1, i32* %4
br label %295
66: ; preds = %52
br label %40
67: ; preds = %50
br label %69
68: ; preds = %34, %29
store i32 -1, i32* %4
br label %295
69: ; preds = %67
%70 = load i32, i32* %9
%71 = icmp slt i32 %70, 3
br i1 %71, label %72, label %81
72: ; preds = %69
%73 = load i8*, i8** %5
%74 = load i8, i8* %73
%75 = sext i8 %74 to i32
%76 = icmp ne i32 %75, 46
br i1 %76, label %77, label %78
77: ; preds = %72
store i32 -1, i32* %4
br label %295
78: ; preds = %72
%79 = load i8*, i8** %5
%80 = getelementptr inbounds i8, i8* %79, i32 1
store i8* %80, i8** %5
br label %81
81: ; preds = %78, %69
%82 = load i32, i32* %8
%83 = mul nsw i32 %82, 256
store i32 %83, i32* %8
%84 = load i32, i32* %10
%85 = load i32, i32* %8
%86 = add nsw i32 %85, %84
store i32 %86, i32* %8
br label %87
87: ; preds = %81
%88 = load i32, i32* %9
%89 = add nsw i32 %88, 1
store i32 %89, i32* %9
br label %26
90: ; preds = %26
%91 = load i8*, i8** %5
%92 = load i8, i8* %91
%93 = sext i8 %92 to i32
%94 = icmp eq i32 %93, 0
br i1 %94, label %95, label %100
95: ; preds = %90
%96 = load i32, i32* %8
%97 = load i32*, i32** %6
store i32 %96, i32* %97
%98 = load i32, i32* %8
%99 = load i32*, i32** %7
store i32 %98, i32* %99
store i32 0, i32* %4
br label %295
100: ; preds = %90
%101 = load i8*, i8** %5
%102 = load i8, i8* %101
%103 = sext i8 %102 to i32
%104 = icmp eq i32 %103, 47
br i1 %104, label %105, label %211
105: ; preds = %100
%106 = load i32, i32* %8
%107 = load i32*, i32** %6
store i32 %106, i32* %107
store i32 0, i32* %8
%108 = load i8*, i8** %5
%109 = getelementptr inbounds i8, i8* %108, i32 1
store i8* %109, i8** %5
store i32 0, i32* %9
br label %110
110: ; preds = %191, %105
%111 = load i32, i32* %9
%112 = icmp slt i32 %111, 4
br i1 %112, label %113, label %194
113: ; preds = %110
%114 = load i8*, i8** %5
%115 = load i8, i8* %114
%116 = sext i8 %115 to i32
%117 = icmp sge i32 %116, 48
br i1 %117, label %118, label %152
118: ; preds = %113
%119 = load i8*, i8** %5
%120 = load i8, i8* %119
%121 = sext i8 %120 to i32
%122 = icmp sle i32 %121, 57
br i1 %122, label %123, label %152
123: ; preds = %118
store i32 0, i32* %10
br label %124
124: ; preds = %150, %123
%125 = load i8*, i8** %5
%126 = load i8, i8* %125
%127 = sext i8 %126 to i32
%128 = icmp sge i32 %127, 48
br i1 %128, label %129, label %134
129: ; preds = %124
%130 = load i8*, i8** %5
%131 = load i8, i8* %130
%132 = sext i8 %131 to i32
%133 = icmp sle i32 %132, 57
br label %134
134: ; preds = %129, %124
%135 = phi i1 [ false, %124 ], [ %133, %129 ]
br i1 %135, label %136, label %151
136: ; preds = %134
%137 = load i32, i32* %10
%138 = mul nsw i32 %137, 10
store i32 %138, i32* %10
%139 = load i8*, i8** %5
%140 = load i8, i8* %139
%141 = sext i8 %140 to i32
%142 = sub nsw i32 %141, 48
%143 = load i32, i32* %10
%144 = add nsw i32 %143, %142
store i32 %144, i32* %10
%145 = load i8*, i8** %5
%146 = getelementptr inbounds i8, i8* %145, i32 1
store i8* %146, i8** %5
%147 = load i32, i32* %10
%148 = icmp sgt i32 %147, 255
br i1 %148, label %149, label %150
149: ; preds = %136
store i32 -1, i32* %4
br label %295
150: ; preds = %136
br label %124
151: ; preds = %134
br label %153
152: ; preds = %118, %113
store i32 -1, i32* %4
br label %295
153: ; preds = %151
%154 = load i32, i32* %9
%155 = icmp eq i32 %154, 0
br i1 %155, label %156, label %173
156: ; preds = %153
%157 = load i8*, i8** %5
%158 = load i8, i8* %157
%159 = sext i8 %158 to i32
%160 = icmp eq i32 %159, 0
br i1 %160, label %161, label %173
161: ; preds = %156
%162 = load i32, i32* %10
%163 = icmp sle i32 %162, 32
br i1 %163, label %164, label %173
164: ; preds = %161
store i32 -1, i32* %8
%165 = load i32, i32* %10
%166 = icmp slt i32 %165, 32
br i1 %166, label %167, label %172
167: ; preds = %164
%168 = load i32, i32* %10
%169 = sub nsw i32 32, %168
%170 = load i32, i32* %8
%171 = shl i32 %170, %169
store i32 %171, i32* %8
br label %172
172: ; preds = %167, %164
br label %194
173: ; preds = %161, %156, %153
%174 = load i32, i32* %9
%175 = icmp slt i32 %174, 3
br i1 %175, label %176, label %185
176: ; preds = %173
%177 = load i8*, i8** %5
%178 = load i8, i8* %177
%179 = sext i8 %178 to i32
%180 = icmp ne i32 %179, 46
br i1 %180, label %181, label %182
181: ; preds = %176
store i32 -1, i32* %4
br label %295
182: ; preds = %176
%183 = load i8*, i8** %5
%184 = getelementptr inbounds i8, i8* %183, i32 1
store i8* %184, i8** %5
br label %185
185: ; preds = %182, %173
%186 = load i32, i32* %8
%187 = mul nsw i32 %186, 256
store i32 %187, i32* %8
%188 = load i32, i32* %10
%189 = load i32, i32* %8
%190 = add nsw i32 %189, %188
store i32 %190, i32* %8
br label %191
191: ; preds = %185
%192 = load i32, i32* %9
%193 = add nsw i32 %192, 1
store i32 %193, i32* %9
br label %110
194: ; preds = %172, %110
%195 = load i8*, i8** %5
%196 = load i8, i8* %195
%197 = sext i8 %196 to i32
%198 = icmp ne i32 %197, 0
br i1 %198, label %199, label %200
199: ; preds = %194
store i32 -1, i32* %4
br label %295
200: ; preds = %194
%201 = load i32, i32* %8
%202 = load i32*, i32** %6
%203 = load i32, i32* %202
%204 = and i32 %203, %201
store i32 %204, i32* %202
%205 = load i32*, i32** %6
%206 = load i32, i32* %205
%207 = load i32, i32* %8
%208 = xor i32 %207, -1
%209 = or i32 %206, %208
%210 = load i32*, i32** %7
store i32 %209, i32* %210
store i32 0, i32* %4
br label %295
211: ; preds = %100
%212 = load i8*, i8** %5
%213 = load i8, i8* %212
%214 = sext i8 %213 to i32
%215 = icmp eq i32 %214, 45
br i1 %215, label %216, label %294
216: ; preds = %211
%217 = load i32, i32* %8
%218 = load i32*, i32** %6
store i32 %217, i32* %218
store i32 0, i32* %8
%219 = load i8*, i8** %5
%220 = getelementptr inbounds i8, i8* %219, i32 1
store i8* %220, i8** %5
store i32 0, i32* %9
br label %221
221: ; preds = %282, %216
%222 = load i32, i32* %9
%223 = icmp slt i32 %222, 4
br i1 %223, label %224, label %285
224: ; preds = %221
%225 = load i8*, i8** %5
%226 = load i8, i8* %225
%227 = sext i8 %226 to i32
%228 = icmp sge i32 %227, 48
br i1 %228, label %229, label %263
229: ; preds = %224
%230 = load i8*, i8** %5
%231 = load i8, i8* %230
%232 = sext i8 %231 to i32
%233 = icmp sle i32 %232, 57
br i1 %233, label %234, label %263
234: ; preds = %229
store i32 0, i32* %10
br label %235
235: ; preds = %261, %234
%236 = load i8*, i8** %5
%237 = load i8, i8* %236
%238 = sext i8 %237 to i32
%239 = icmp sge i32 %238, 48
br i1 %239, label %240, label %245
240: ; preds = %235
%241 = load i8*, i8** %5
%242 = load i8, i8* %241
%243 = sext i8 %242 to i32
%244 = icmp sle i32 %243, 57
br label %245
245: ; preds = %240, %235
%246 = phi i1 [ false, %235 ], [ %244, %240 ]
br i1 %246, label %247, label %262
247: ; preds = %245
%248 = load i32, i32* %10
%249 = mul nsw i32 %248, 10
store i32 %249, i32* %10
%250 = load i8*, i8** %5
%251 = load i8, i8* %250
%252 = sext i8 %251 to i32
%253 = sub nsw i32 %252, 48
%254 = load i32, i32* %10
%255 = add nsw i32 %254, %253
store i32 %255, i32* %10
%256 = load i8*, i8** %5
%257 = getelementptr inbounds i8, i8* %256, i32 1
store i8* %257, i8** %5
%258 = load i32, i32* %10
%259 = icmp sgt i32 %258, 255
br i1 %259, label %260, label %261
260: ; preds = %247
store i32 -1, i32* %4
br label %295
261: ; preds = %247
br label %235
262: ; preds = %245
br label %264
263: ; preds = %229, %224
store i32 -1, i32* %4
br label %295
264: ; preds = %262
%265 = load i32, i32* %9
%266 = icmp slt i32 %265, 3
br i1 %266, label %267, label %276
267: ; preds = %264
%268 = load i8*, i8** %5
%269 = load i8, i8* %268
%270 = sext i8 %269 to i32
%271 = icmp ne i32 %270, 46
br i1 %271, label %272, label %273
272: ; preds = %267
store i32 -1, i32* %4
br label %295
273: ; preds = %267
%274 = load i8*, i8** %5
%275 = getelementptr inbounds i8, i8* %274, i32 1
store i8* %275, i8** %5
br label %276
276: ; preds = %273, %264
%277 = load i32, i32* %8
%278 = mul nsw i32 %277, 256
store i32 %278, i32* %8
%279 = load i32, i32* %10
%280 = load i32, i32* %8
%281 = add nsw i32 %280, %279
store i32 %281, i32* %8
br label %282
282: ; preds = %276
%283 = load i32, i32* %9
%284 = add nsw i32 %283, 1
store i32 %284, i32* %9
br label %221
285: ; preds = %221
%286 = load i8*, i8** %5
%287 = load i8, i8* %286
%288 = sext i8 %287 to i32
%289 = icmp ne i32 %288, 0
br i1 %289, label %290, label %291
290: ; preds = %285
store i32 -1, i32* %4
br label %295
291: ; preds = %285
%292 = load i32, i32* %8
%293 = load i32*, i32** %7
store i32 %292, i32* %293
store i32 0, i32* %4
br label %295
294: ; preds = %211
store i32 -1, i32* %4
br label %295
295: ; preds = %294, %291, %290, %272, %263, %260, %200, %199, %181, %152, %149, %95, %77, %68, %65, %22
%296 = load i32, i32* %4
ret i32 %296
}

LLVM IR (-O2):
define i32 @topology_parsenet(i8* nocapture %0, i32* nocapture %1, i32* nocapture writeonly %2) {
%4 = load i8, i8* %0
%5 = icmp eq i8 %4, 42
br i1 %5, label %6, label %11
6: ; preds = %3
%7 = getelementptr inbounds i8, i8* %0, i64 1
%8 = load i8, i8* %7
%9 = icmp eq i8 %8, 0
br i1 %9, label %10, label %301
10: ; preds = %6
store i32 0, i32* %1
br label %299
11: ; preds = %3
%12 = add i8 %4, -48
%13 = icmp ult i8 %12, 10
br i1 %13, label %18, label %301
14: ; preds = %18
%15 = load i8, i8* %26
%16 = add i8 %15, -48
%17 = icmp ult i8 %16, 10
br i1 %17, label %18, label %28
18: ; preds = %11, %14
%19 = phi i32 [ %25, %14 ], [ 0, %11 ]
%20 = phi i8* [ %26, %14 ], [ %0, %11 ]
%21 = phi i8 [ %15, %14 ], [ %4, %11 ]
%22 = zext i8 %21 to i32
%23 = mul nsw i32 %19, 10
%24 = add nsw i32 %22, -48
%25 = add nsw i32 %24, %23
%26 = getelementptr inbounds i8, i8* %20, i64 1
%27 = icmp sgt i32 %25, 255
br i1 %27, label %301, label %14
28: ; preds = %14
%29 = icmp eq i8 %15, 46
br i1 %29, label %30, label %301
30: ; preds = %28
%31 = getelementptr inbounds i8, i8* %20, i64 2
%32 = load i8, i8* %31
%33 = add i8 %32, -48
%34 = icmp ult i8 %33, 10
br i1 %34, label %35, label %301
35: ; preds = %30, %45
%36 = phi i32 [ %42, %45 ], [ 0, %30 ]
%37 = phi i8* [ %43, %45 ], [ %31, %30 ]
%38 = phi i8 [ %46, %45 ], [ %32, %30 ]
%39 = zext i8 %38 to i32
%40 = mul nsw i32 %36, 10
%41 = add nsw i32 %39, -48
%42 = add nsw i32 %41, %40
%43 = getelementptr inbounds i8, i8* %37, i64 1
%44 = icmp sgt i32 %42, 255
br i1 %44, label %301, label %45
45: ; preds = %35
%46 = load i8, i8* %43
%47 = add i8 %46, -48
%48 = icmp ult i8 %47, 10
br i1 %48, label %35, label %49
49: ; preds = %45
%50 = icmp eq i8 %46, 46
br i1 %50, label %51, label %301
51: ; preds = %49
%52 = getelementptr inbounds i8, i8* %37, i64 2
%53 = shl nsw i32 %25, 8
%54 = add nsw i32 %42, %53
%55 = load i8, i8* %52
%56 = add i8 %55, -48
%57 = icmp ult i8 %56, 10
br i1 %57, label %58, label %301
58: ; preds = %51, %68
%59 = phi i32 [ %65, %68 ], [ 0, %51 ]
%60 = phi i8* [ %66, %68 ], [ %52, %51 ]
%61 = phi i8 [ %69, %68 ], [ %55, %51 ]
%62 = zext i8 %61 to i32
%63 = mul nsw i32 %59, 10
%64 = add nsw i32 %62, -48
%65 = add nsw i32 %64, %63
%66 = getelementptr inbounds i8, i8* %60, i64 1
%67 = icmp sgt i32 %65, 255
br i1 %67, label %301, label %68
68: ; preds = %58
%69 = load i8, i8* %66
%70 = add i8 %69, -48
%71 = icmp ult i8 %70, 10
br i1 %71, label %58, label %72
72: ; preds = %68
%73 = icmp eq i8 %69, 46
br i1 %73, label %74, label %301
74: ; preds = %72
%75 = getelementptr inbounds i8, i8* %60, i64 2
%76 = shl nsw i32 %54, 8
%77 = add nsw i32 %65, %76
%78 = load i8, i8* %75
%79 = add i8 %78, -48
%80 = icmp ult i8 %79, 10
br i1 %80, label %81, label %301
81: ; preds = %74, %91
%82 = phi i32 [ %88, %91 ], [ 0, %74 ]
%83 = phi i8* [ %89, %91 ], [ %75, %74 ]
%84 = phi i8 [ %92, %91 ], [ %78, %74 ]
%85 = zext i8 %84 to i32
%86 = mul nsw i32 %82, 10
%87 = add nsw i32 %85, -48
%88 = add nsw i32 %87, %86
%89 = getelementptr inbounds i8, i8* %83, i64 1
%90 = icmp sgt i32 %88, 255
br i1 %90, label %301, label %91
91: ; preds = %81
%92 = load i8, i8* %89
%93 = add i8 %92, -48
%94 = icmp ult i8 %93, 10
br i1 %94, label %81, label %95
95: ; preds = %91
%96 = shl nsw i32 %77, 8
%97 = add nsw i32 %88, %96
%98 = load i8, i8* %89
switch i8 %98, label %301 [
i8 0, label %99
i8 47, label %100
i8 45, label %207
]
99: ; preds = %95
store i32 %97, i32* %1
br label %299
100: ; preds = %95
store i32 %97, i32* %1
%101 = getelementptr inbounds i8, i8* %83, i64 2
%102 = load i8, i8* %101
%103 = add i8 %102, -48
%104 = icmp ult i8 %103, 10
br i1 %104, label %109, label %301
105: ; preds = %109
%106 = load i8, i8* %117
%107 = add i8 %106, -48
%108 = icmp ult i8 %107, 10
br i1 %108, label %109, label %119
109: ; preds = %100, %105
%110 = phi i32 [ %116, %105 ], [ 0, %100 ]
%111 = phi i8* [ %117, %105 ], [ %101, %100 ]
%112 = phi i8 [ %106, %105 ], [ %102, %100 ]
%113 = zext i8 %112 to i32
%114 = mul nsw i32 %110, 10
%115 = add nsw i32 %113, -48
%116 = add nsw i32 %115, %114
%117 = getelementptr inbounds i8, i8* %111, i64 1
%118 = icmp sgt i32 %116, 255
br i1 %118, label %301, label %105
119: ; preds = %105
%120 = icmp eq i8 %106, 0
%121 = icmp slt i32 %116, 33
%122 = select i1 %120, i1 %121, i1 false
br i1 %122, label %123, label %128
123: ; preds = %119
%124 = icmp slt i32 %116, 32
br i1 %124, label %125, label %198
125: ; preds = %123
%126 = sub nsw i32 32, %116
%127 = shl nsw i32 -1, %126
br label %198
128: ; preds = %119
%129 = icmp eq i8 %106, 46
br i1 %129, label %130, label %301
130: ; preds = %128
%131 = getelementptr inbounds i8, i8* %111, i64 2
%132 = load i8, i8* %131
%133 = add i8 %132, -48
%134 = icmp ult i8 %133, 10
br i1 %134, label %135, label %301
135: ; preds = %130, %145
%136 = phi i32 [ %142, %145 ], [ 0, %130 ]
%137 = phi i8* [ %143, %145 ], [ %131, %130 ]
%138 = phi i8 [ %146, %145 ], [ %132, %130 ]
%139 = zext i8 %138 to i32
%140 = mul nsw i32 %136, 10
%141 = add nsw i32 %139, -48
%142 = add nsw i32 %141, %140
%143 = getelementptr inbounds i8, i8* %137, i64 1
%144 = icmp sgt i32 %142, 255
br i1 %144, label %301, label %145
145: ; preds = %135
%146 = load i8, i8* %143
%147 = add i8 %146, -48
%148 = icmp ult i8 %147, 10
br i1 %148, label %135, label %149
149: ; preds = %145
%150 = icmp eq i8 %146, 46
br i1 %150, label %151, label %301
151: ; preds = %149
%152 = getelementptr inbounds i8, i8* %137, i64 2
%153 = shl nsw i32 %116, 8
%154 = add nsw i32 %142, %153
%155 = load i8, i8* %152
%156 = add i8 %155, -48
%157 = icmp ult i8 %156, 10
br i1 %157, label %158, label %301
158: ; preds = %151, %168
%159 = phi i32 [ %165, %168 ], [ 0, %151 ]
%160 = phi i8* [ %166, %168 ], [ %152, %151 ]
%161 = phi i8 [ %169, %168 ], [ %155, %151 ]
%162 = zext i8 %161 to i32
%163 = mul nsw i32 %159, 10
%164 = add nsw i32 %162, -48
%165 = add nsw i32 %164, %163
%166 = getelementptr inbounds i8, i8* %160, i64 1
%167 = icmp sgt i32 %165, 255
br i1 %167, label %301, label %168
168: ; preds = %158
%169 = load i8, i8* %166
%170 = add i8 %169, -48
%171 = icmp ult i8 %170, 10
br i1 %171, label %158, label %172
172: ; preds = %168
%173 = icmp eq i8 %169, 46
br i1 %173, label %174, label %301
174: ; preds = %172
%175 = getelementptr inbounds i8, i8* %160, i64 2
%176 = shl nsw i32 %154, 8
%177 = add nsw i32 %165, %176
%178 = load i8, i8* %175
%179 = add i8 %178, -48
%180 = icmp ult i8 %179, 10
br i1 %180, label %181, label %301
181: ; preds = %174, %191
%182 = phi i32 [ %188, %191 ], [ 0, %174 ]
%183 = phi i8* [ %189, %191 ], [ %175, %174 ]
%184 = phi i8 [ %192, %191 ], [ %178, %174 ]
%185 = zext i8 %184 to i32
%186 = mul nsw i32 %182, 10
%187 = add nsw i32 %185, -48
%188 = add nsw i32 %187, %186
%189 = getelementptr inbounds i8, i8* %183, i64 1
%190 = icmp sgt i32 %188, 255
br i1 %190, label %301, label %191
191: ; preds = %181
%192 = load i8, i8* %189
%193 = add i8 %192, -48
%194 = icmp ult i8 %193, 10
br i1 %194, label %181, label %195
195: ; preds = %191
%196 = shl nsw i32 %177, 8
%197 = add nsw i32 %188, %196
br label %198
198: ; preds = %195, %123, %125
%199 = phi i8* [ %117, %125 ], [ %117, %123 ], [ %189, %195 ]
%200 = phi i32 [ %127, %125 ], [ -1, %123 ], [ %197, %195 ]
%201 = load i8, i8* %199
%202 = icmp eq i8 %201, 0
br i1 %202, label %203, label %301
203: ; preds = %198
%204 = and i32 %200, %97
store i32 %204, i32* %1
%205 = xor i32 %200, -1
%206 = or i32 %97, %205
br label %299
207: ; preds = %95
store i32 %97, i32* %1
%208 = getelementptr inbounds i8, i8* %83, i64 2
%209 = load i8, i8* %208
%210 = add i8 %209, -48
%211 = icmp ult i8 %210, 10
br i1 %211, label %216, label %301
212: ; preds = %216
%213 = load i8, i8* %224
%214 = add i8 %213, -48
%215 = icmp ult i8 %214, 10
br i1 %215, label %216, label %226
216: ; preds = %207, %212
%217 = phi i32 [ %223, %212 ], [ 0, %207 ]
%218 = phi i8* [ %224, %212 ], [ %208, %207 ]
%219 = phi i8 [ %213, %212 ], [ %209, %207 ]
%220 = zext i8 %219 to i32
%221 = mul nsw i32 %217, 10
%222 = add nsw i32 %220, -48
%223 = add nsw i32 %222, %221
%224 = getelementptr inbounds i8, i8* %218, i64 1
%225 = icmp sgt i32 %223, 255
br i1 %225, label %301, label %212
226: ; preds = %212
%227 = shl i32 %223, 8
%228 = icmp eq i8 %213, 46
br i1 %228, label %229, label %301
229: ; preds = %226
%230 = getelementptr inbounds i8, i8* %218, i64 2
%231 = load i8, i8* %230
%232 = add i8 %231, -48
%233 = icmp ult i8 %232, 10
br i1 %233, label %234, label %301
234: ; preds = %229, %244
%235 = phi i32 [ %241, %244 ], [ 0, %229 ]
%236 = phi i8* [ %242, %244 ], [ %230, %229 ]
%237 = phi i8 [ %245, %244 ], [ %231, %229 ]
%238 = zext i8 %237 to i32
%239 = mul nsw i32 %235, 10
%240 = add nsw i32 %238, -48
%241 = add nsw i32 %240, %239
%242 = getelementptr inbounds i8, i8* %236, i64 1
%243 = icmp sgt i32 %241, 255
br i1 %243, label %301, label %244
244: ; preds = %234
%245 = load i8, i8* %242
%246 = add i8 %245, -48
%247 = icmp ult i8 %246, 10
br i1 %247, label %234, label %248
248: ; preds = %244
%249 = icmp eq i8 %245, 46
br i1 %249, label %250, label %301
250: ; preds = %248
%251 = getelementptr inbounds i8, i8* %236, i64 2
%252 = add nsw i32 %241, %227
%253 = load i8, i8* %251
%254 = add i8 %253, -48
%255 = icmp ult i8 %254, 10
br i1 %255, label %256, label %301
256: ; preds = %250, %266
%257 = phi i32 [ %263, %266 ], [ 0, %250 ]
%258 = phi i8* [ %264, %266 ], [ %251, %250 ]
%259 = phi i8 [ %267, %266 ], [ %253, %250 ]
%260 = zext i8 %259 to i32
%261 = mul nsw i32 %257, 10
%262 = add nsw i32 %260, -48
%263 = add nsw i32 %262, %261
%264 = getelementptr inbounds i8, i8* %258, i64 1
%265 = icmp sgt i32 %263, 255
br i1 %265, label %301, label %266
266: ; preds = %256
%267 = load i8, i8* %264
%268 = add i8 %267, -48
%269 = icmp ult i8 %268, 10
br i1 %269, label %256, label %270
270: ; preds = %266
%271 = icmp eq i8 %267, 46
br i1 %271, label %272, label %301
272: ; preds = %270
%273 = getelementptr inbounds i8, i8* %258, i64 2
%274 = shl nsw i32 %252, 8
%275 = add nsw i32 %263, %274
%276 = load i8, i8* %273
%277 = add i8 %276, -48
%278 = icmp ult i8 %277, 10
br i1 %278, label %279, label %301
279: ; preds = %272, %289
%280 = phi i32 [ %286, %289 ], [ 0, %272 ]
%281 = phi i8* [ %287, %289 ], [ %273, %272 ]
%282 = phi i8 [ %290, %289 ], [ %276, %272 ]
%283 = zext i8 %282 to i32
%284 = mul nsw i32 %280, 10
%285 = add nsw i32 %283, -48
%286 = add nsw i32 %285, %284
%287 = getelementptr inbounds i8, i8* %281, i64 1
%288 = icmp sgt i32 %286, 255
br i1 %288, label %301, label %289
289: ; preds = %279
%290 = load i8, i8* %287
%291 = add i8 %290, -48
%292 = icmp ult i8 %291, 10
br i1 %292, label %279, label %293
293: ; preds = %289
%294 = load i8, i8* %287
%295 = icmp eq i8 %294, 0
br i1 %295, label %296, label %301
296: ; preds = %293
%297 = shl nsw i32 %275, 8
%298 = add nsw i32 %286, %297
br label %299
299: ; preds = %10, %99, %203, %296
%300 = phi i32 [ %298, %296 ], [ %206, %203 ], [ %97, %99 ], [ -1, %10 ]
store i32 %300, i32* %2
br label %301
301: ; preds = %18, %35, %58, %81, %216, %234, %256, %279, %109, %135, %158, %181, %299, %6, %28, %11, %30, %49, %51, %72, %74, %226, %207, %229, %248, %250, %270, %272, %128, %100, %130, %149, %151, %172, %174, %95, %293, %198
%302 = phi i32 [ -1, %198 ], [ -1, %293 ], [ -1, %95 ], [ -1, %174 ], [ -1, %172 ], [ -1, %151 ], [ -1, %149 ], [ -1, %130 ], [ -1, %100 ], [ -1, %128 ], [ -1, %272 ], [ -1, %270 ], [ -1, %250 ], [ -1, %248 ], [ -1, %229 ], [ -1, %207 ], [ -1, %226 ], [ -1, %74 ], [ -1, %72 ], [ -1, %51 ], [ -1, %49 ], [ -1, %30 ], [ -1, %11 ], [ -1, %28 ], [ -1, %6 ], [ 0, %299 ], [ -1, %181 ], [ -1, %158 ], [ -1, %135 ], [ -1, %109 ], [ -1, %279 ], [ -1, %256 ], [ -1, %234 ], [ -1, %216 ], [ -1, %81 ], [ -1, %58 ], [ -1, %35 ], [ -1, %18 ]
ret i32 %302
}