#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 get_next_number(char *in, int *out, int *pos) {
  int i, o, n;
  for (i = 0; in[i] == ' ' || in[i] == 0x09; i++)
    ;
  if (in[i] == 0)
    return 0;
  if (in[i] == '$' ||
      (in[i] == '0' && (in[i + 1] == 'x' || in[i + 1] == 'X'))) {
    if (in[i] == '$')
      i++;
    else
      i += 2;
    o = 0;
    while (1) {
      if (in[i] >= '0' && in[i] <= '9')
        o = (o << 4) + in[i] - '0';
      else if (in[i] >= 'a' && in[i] <= 'f')
        o = (o << 4) + in[i] - 'a' + 0xA;
      else if (in[i] >= 'A' && in[i] <= 'F')
        o = (o << 4) + in[i] - 'A' + 0xA;
      else if (in[i] == ' ' || in[i] == 0x09 || in[i] == 0)
        break;
      else
        return 0;
      i++;
    }
  } else if (in[i] == '%' ||
             (in[i] == '0' && (in[i + 1] == 'b' || in[i + 1] == 'B'))) {
    if (in[i] == '%')
      i++;
    else
      i += 2;
    for (o = 0; in[i] != 0; i++) {
      if (in[i] == '0' || in[i] == '1')
        o = (o << 1) + (in[i] - '0');
      else if (in[i] == ' ' || in[i] == 0x09 || in[i] == 0)
        break;
      else
        return 0;
    }
  } else if ((in[i] >= '0' && in[i] <= '9') || (in[i] >= 'a' && in[i] <= 'f') ||
             (in[i] >= 'A' && in[i] <= 'F')) {
    n = 0;
    for (o = 0; 1; o++) {
      if (in[i + o] >= '0' && in[i + o] <= '9')
        continue;
      if (in[i + o] >= 'a' && in[i + o] <= 'f') {
        n = 1;
        break;
      }
      if (in[i + o] >= 'A' && in[i + o] <= 'F') {
        n = 1;
        break;
      }
      if (in[i + o] == 'h' || in[i + o] == 'H') {
        n = 1;
        break;
      }
      break;
    }
    if (n == 1) {
      o = 0;
      while (1) {
        if (in[i] >= '0' && in[i] <= '9')
          o = (o << 4) + in[i] - '0';
        else if (in[i] >= 'a' && in[i] <= 'f')
          o = (o << 4) + in[i] - 'a' + 0xA;
        else if (in[i] >= 'A' && in[i] <= 'F')
          o = (o << 4) + in[i] - 'A' + 0xA;
        else if (in[i] == 'h' || in[i] == 'H')
          break;
        else if (in[i] == ' ' || in[i] == 0x09 || in[i] == 0)
          break;
        else
          return 0;
        i++;
      }
    } else {
      for (o = 0; in[i] >= '0' && in[i] <= '9'; i++)
        o = (o * 10) + in[i] - '0';
      if (!(in[i] == ' ' || in[i] == 0x09 || in[i] == 0))
        return 0;
    }
  } else
    return 0;
  *out = o;
  if (pos != NULL)
    *pos += i;
  return 1;
}


x86 assembly (clang, -O0):
<get_next_number>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
movl   $0x0,-0x24(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x2d(%rbp)
je     1146 <get_next_number+0x46>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x9,%eax
sete   %al
mov    %al,-0x2d(%rbp)
mov    -0x2d(%rbp),%al
test   $0x1,%al
jne    1156 <get_next_number+0x56>
jmp    1169 <get_next_number+0x69>
jmp    115b <get_next_number+0x5b>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1117 <get_next_number+0x17>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
jne    118a <get_next_number+0x8a>
movl   $0x0,-0x4(%rbp)
jmp    18f2 <get_next_number+0x7f2>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x24,%eax
je     11e8 <get_next_number+0xe8>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jne    1369 <get_next_number+0x269>
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x78,%eax
je     11e8 <get_next_number+0xe8>
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x58,%eax
jne    1369 <get_next_number+0x269>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x24,%eax
jne    120b <get_next_number+0x10b>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1214 <get_next_number+0x114>
mov    -0x24(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x24(%rbp)
movl   $0x0,-0x28(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jl     1264 <get_next_number+0x164>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x39,%eax
jg     1264 <get_next_number+0x164>
mov    -0x28(%rbp),%eax
shl    $0x4,%eax
mov    -0x10(%rbp),%rcx
movslq -0x24(%rbp),%rdx
movsbl (%rcx,%rdx,1),%ecx
add    %ecx,%eax
sub    $0x30,%eax
mov    %eax,-0x28(%rbp)
jmp    1356 <get_next_number+0x256>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x61,%eax
jl     12b0 <get_next_number+0x1b0>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x66,%eax
jg     12b0 <get_next_number+0x1b0>
mov    -0x28(%rbp),%eax
shl    $0x4,%eax
mov    -0x10(%rbp),%rcx
movslq -0x24(%rbp),%rdx
movsbl (%rcx,%rdx,1),%ecx
add    %ecx,%eax
sub    $0x61,%eax
add    $0xa,%eax
mov    %eax,-0x28(%rbp)
jmp    1351 <get_next_number+0x251>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x41,%eax
jl     12fc <get_next_number+0x1fc>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x46,%eax
jg     12fc <get_next_number+0x1fc>
mov    -0x28(%rbp),%eax
shl    $0x4,%eax
mov    -0x10(%rbp),%rcx
movslq -0x24(%rbp),%rdx
movsbl (%rcx,%rdx,1),%ecx
add    %ecx,%eax
sub    $0x41,%eax
add    $0xa,%eax
mov    %eax,-0x28(%rbp)
jmp    134c <get_next_number+0x24c>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x20,%eax
je     133b <get_next_number+0x23b>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x9,%eax
je     133b <get_next_number+0x23b>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
jne    1340 <get_next_number+0x240>
jmp    1364 <get_next_number+0x264>
movl   $0x0,-0x4(%rbp)
jmp    18f2 <get_next_number+0x7f2>
jmp    1351 <get_next_number+0x251>
jmp    1356 <get_next_number+0x256>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    121b <get_next_number+0x11b>
jmp    18cc <get_next_number+0x7cc>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x25,%eax
je     13c7 <get_next_number+0x2c7>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jne    14c0 <get_next_number+0x3c0>
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x62,%eax
je     13c7 <get_next_number+0x2c7>
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x42,%eax
jne    14c0 <get_next_number+0x3c0>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x25,%eax
jne    13ea <get_next_number+0x2ea>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    13f3 <get_next_number+0x2f3>
mov    -0x24(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x24(%rbp)
movl   $0x0,-0x28(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
je     14bb <get_next_number+0x3bb>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
je     1439 <get_next_number+0x339>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x31,%eax
jne    1458 <get_next_number+0x358>
mov    -0x28(%rbp),%eax
shl    $0x1,%eax
mov    -0x10(%rbp),%rcx
movslq -0x24(%rbp),%rdx
movsbl (%rcx,%rdx,1),%ecx
sub    $0x30,%ecx
add    %ecx,%eax
mov    %eax,-0x28(%rbp)
jmp    14a8 <get_next_number+0x3a8>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x20,%eax
je     1497 <get_next_number+0x397>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x9,%eax
je     1497 <get_next_number+0x397>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
jne    149c <get_next_number+0x39c>
jmp    14bb <get_next_number+0x3bb>
movl   $0x0,-0x4(%rbp)
jmp    18f2 <get_next_number+0x7f2>
jmp    14ad <get_next_number+0x3ad>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    13fa <get_next_number+0x2fa>
jmp    18c7 <get_next_number+0x7c7>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jl     14ea <get_next_number+0x3ea>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x39,%eax
jle    153e <get_next_number+0x43e>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x61,%eax
jl     1514 <get_next_number+0x414>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x66,%eax
jle    153e <get_next_number+0x43e>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x41,%eax
jl     18b6 <get_next_number+0x7b6>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x46,%eax
jg     18b6 <get_next_number+0x7b6>
movl   $0x0,-0x2c(%rbp)
movl   $0x0,-0x28(%rbp)
mov    $0x1,%al
test   $0x1,%al
jne    155b <get_next_number+0x45b>
jmp    1667 <get_next_number+0x567>
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    -0x28(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jl     1594 <get_next_number+0x494>
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    -0x28(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x39,%eax
jg     1594 <get_next_number+0x494>
jmp    1659 <get_next_number+0x559>
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    -0x28(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x61,%eax
jl     15d4 <get_next_number+0x4d4>
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    -0x28(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x66,%eax
jg     15d4 <get_next_number+0x4d4>
movl   $0x1,-0x2c(%rbp)
jmp    1667 <get_next_number+0x567>
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    -0x28(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x41,%eax
jl     1614 <get_next_number+0x514>
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    -0x28(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x46,%eax
jg     1614 <get_next_number+0x514>
movl   $0x1,-0x2c(%rbp)
jmp    1667 <get_next_number+0x567>
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    -0x28(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x68,%eax
je     1648 <get_next_number+0x548>
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    -0x28(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x48,%eax
jne    1654 <get_next_number+0x554>
movl   $0x1,-0x2c(%rbp)
jmp    1667 <get_next_number+0x567>
jmp    1667 <get_next_number+0x567>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    154c <get_next_number+0x44c>
cmpl   $0x1,-0x2c(%rbp)
jne    17f5 <get_next_number+0x6f5>
movl   $0x0,-0x28(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jl     16c1 <get_next_number+0x5c1>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x39,%eax
jg     16c1 <get_next_number+0x5c1>
mov    -0x28(%rbp),%eax
shl    $0x4,%eax
mov    -0x10(%rbp),%rcx
movslq -0x24(%rbp),%rdx
movsbl (%rcx,%rdx,1),%ecx
add    %ecx,%eax
sub    $0x30,%eax
mov    %eax,-0x28(%rbp)
jmp    17e2 <get_next_number+0x6e2>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x61,%eax
jl     170d <get_next_number+0x60d>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x66,%eax
jg     170d <get_next_number+0x60d>
mov    -0x28(%rbp),%eax
shl    $0x4,%eax
mov    -0x10(%rbp),%rcx
movslq -0x24(%rbp),%rdx
movsbl (%rcx,%rdx,1),%ecx
add    %ecx,%eax
sub    $0x61,%eax
add    $0xa,%eax
mov    %eax,-0x28(%rbp)
jmp    17dd <get_next_number+0x6dd>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x41,%eax
jl     1759 <get_next_number+0x659>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x46,%eax
jg     1759 <get_next_number+0x659>
mov    -0x28(%rbp),%eax
shl    $0x4,%eax
mov    -0x10(%rbp),%rcx
movslq -0x24(%rbp),%rdx
movsbl (%rcx,%rdx,1),%ecx
add    %ecx,%eax
sub    $0x41,%eax
add    $0xa,%eax
mov    %eax,-0x28(%rbp)
jmp    17d8 <get_next_number+0x6d8>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x68,%eax
je     1783 <get_next_number+0x683>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x48,%eax
jne    1788 <get_next_number+0x688>
jmp    17f0 <get_next_number+0x6f0>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x20,%eax
je     17c7 <get_next_number+0x6c7>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x9,%eax
je     17c7 <get_next_number+0x6c7>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
jne    17cc <get_next_number+0x6cc>
jmp    17f0 <get_next_number+0x6f0>
movl   $0x0,-0x4(%rbp)
jmp    18f2 <get_next_number+0x7f2>
jmp    17dd <get_next_number+0x6dd>
jmp    17e2 <get_next_number+0x6e2>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1678 <get_next_number+0x578>
jmp    18b1 <get_next_number+0x7b1>
movl   $0x0,-0x28(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x30,%ecx
mov    %al,-0x2e(%rbp)
jl     182b <get_next_number+0x72b>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x39,%eax
setle  %al
mov    %al,-0x2e(%rbp)
mov    -0x2e(%rbp),%al
test   $0x1,%al
jne    183b <get_next_number+0x73b>
jmp    1861 <get_next_number+0x761>
imul   $0xa,-0x28(%rbp),%eax
mov    -0x10(%rbp),%rcx
movslq -0x24(%rbp),%rdx
movsbl (%rcx,%rdx,1),%ecx
add    %ecx,%eax
sub    $0x30,%eax
mov    %eax,-0x28(%rbp)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    17fc <get_next_number+0x6fc>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x20,%eax
je     18ac <get_next_number+0x7ac>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x9,%eax
je     18ac <get_next_number+0x7ac>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
je     18ac <get_next_number+0x7ac>
movl   $0x0,-0x4(%rbp)
jmp    18f2 <get_next_number+0x7f2>
jmp    18b1 <get_next_number+0x7b1>
jmp    18c2 <get_next_number+0x7c2>
movl   $0x0,-0x4(%rbp)
jmp    18f2 <get_next_number+0x7f2>
jmp    18c7 <get_next_number+0x7c7>
jmp    18cc <get_next_number+0x7cc>
mov    -0x28(%rbp),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
cmpq   $0x0,-0x20(%rbp)
je     18eb <get_next_number+0x7eb>
mov    -0x24(%rbp),%ecx
mov    -0x20(%rbp),%rax
add    (%rax),%ecx
mov    %ecx,(%rax)
movl   $0x1,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<get_next_number>:
xor    %r10d,%r10d
lea    0xef6(%rip),%r8
nopw   0x0(%rax,%rax,1)
movzbl (%rdi,%r10,1),%ecx
cmp    $0x30,%rcx
ja     112a <get_next_number+0x2a>
movslq (%r8,%rcx,4),%rax
add    %r8,%rax
jmp    *%rax
add    $0x1,%r10
jmp    1110 <get_next_number+0x10>
lea    -0x30(%rcx),%eax
cmp    $0xa,%al
jb     1157 <get_next_number+0x57>
xor    %eax,%eax
add    $0xbf,%cl
cmp    $0x25,%cl
ja     1211 <get_next_number+0x111>
movzbl %cl,%r8d
movabs $0x3f0000003f,%rcx
bt     %r8,%rcx
jae    1211 <get_next_number+0x111>
mov    %r10d,%r8d
lea    (%rdi,%r8,1),%rcx
xchg   %ax,%ax
movzbl (%rcx),%eax
lea    -0x30(%rax),%r9d
add    $0x1,%rcx
cmp    $0xa,%r9b
jb     1160 <get_next_number+0x60>
add    $0xbf,%al
cmp    $0x27,%al
ja     1314 <get_next_number+0x214>
movzbl %al,%eax
movabs $0xbf000000bf,%rcx
bt     %rax,%rcx
jae    1314 <get_next_number+0x214>
xor    %r10d,%r10d
jmp    11ae <get_next_number+0xae>
nopw   0x0(%rax,%rax,1)
shl    $0x4,%r10d
add    %eax,%r10d
add    %r9d,%r10d
add    $0x1,%r8
movsbl (%rdi,%r8,1),%r9d
lea    -0x30(%r9),%ecx
mov    $0xffffffd0,%eax
cmp    $0xa,%cl
jb     11a0 <get_next_number+0xa0>
lea    -0x61(%r9),%ecx
mov    $0xffffffa9,%eax
cmp    $0x6,%cl
jb     11a0 <get_next_number+0xa0>
lea    -0x41(%r9),%ecx
mov    $0xffffffc9,%eax
cmp    $0x6,%cl
jb     11a0 <get_next_number+0xa0>
cmp    $0x20,%r9b
ja     11fb <get_next_number+0xfb>
movzbl %r9b,%eax
movabs $0x100000201,%rcx
bt     %rax,%rcx
jb     12c5 <get_next_number+0x1c5>
cmp    $0x48,%r9b
je     12c5 <get_next_number+0x1c5>
xor    %eax,%eax
cmp    $0x68,%r9b
je     12c5 <get_next_number+0x1c5>
ret
mov    $0x1,%r8d
add    %r10d,%r8d
xor    %r10d,%r10d
jmp    122e <get_next_number+0x12e>
shl    $0x4,%r10d
add    %eax,%r10d
add    %r9d,%r10d
add    $0x1,%r8
movsbl (%rdi,%r8,1),%r9d
lea    -0x30(%r9),%ecx
mov    $0xffffffd0,%eax
cmp    $0xa,%cl
jb     1220 <get_next_number+0x120>
lea    -0x61(%r9),%ecx
mov    $0xffffffa9,%eax
cmp    $0x6,%cl
jb     1220 <get_next_number+0x120>
lea    -0x41(%r9),%ecx
mov    $0xffffffc9,%eax
cmp    $0x6,%cl
jb     1220 <get_next_number+0x120>
xor    %eax,%eax
cmp    $0x20,%r9b
ja     1211 <get_next_number+0x111>
movzbl %r9b,%ecx
movabs $0x100000201,%rdi
bt     %rcx,%rdi
jb     12c5 <get_next_number+0x1c5>
jmp    1211 <get_next_number+0x111>
mov    $0x1,%r8d
add    %r10d,%r8d
xor    %r10d,%r10d
nopw   0x0(%rax,%rax,1)
movzbl (%rdi,%r8,1),%r9d
movzbl %r9b,%eax
lea    -0x30(%rax),%ecx
cmp    $0x2,%cl
jae    12af <get_next_number+0x1af>
lea    (%rax,%r10,2),%r10d
add    $0xffffffd0,%r10d
add    $0x1,%r8
jmp    1290 <get_next_number+0x190>
cmp    $0x20,%r9b
ja     12da <get_next_number+0x1da>
movabs $0x100000201,%rcx
bt     %rax,%rcx
jae    12da <get_next_number+0x1da>
mov    %r10d,(%rsi)
mov    $0x1,%eax
test   %rdx,%rdx
je     1211 <get_next_number+0x111>
add    %r8d,(%rdx)
ret
xor    %eax,%eax
ret
lea    0x1(%r10),%eax
mov    (%rdi,%rax,1),%al
mov    $0x2,%r8d
cmp    $0x61,%al
jg     12ff <get_next_number+0x1ff>
cmp    $0x42,%al
je     1281 <get_next_number+0x181>
cmp    $0x58,%al
je     1218 <get_next_number+0x118>
jmp    1157 <get_next_number+0x57>
cmp    $0x62,%al
je     1281 <get_next_number+0x181>
cmp    $0x78,%al
je     1218 <get_next_number+0x118>
jmp    1157 <get_next_number+0x57>
mov    (%rdi,%r8,1),%r9b
lea    -0x30(%r9),%ecx
xor    %eax,%eax
cmp    $0x9,%cl
ja     1358 <get_next_number+0x258>
xor    %r10d,%r10d
cs nopw 0x0(%rax,%rax,1)
movzbl %r9b,%r9d
lea    (%r10,%r10,4),%ecx
lea    (%r9,%rcx,2),%r10d
add    $0xffffffd0,%r10d
movzbl 0x1(%rdi,%r8,1),%r9d
add    $0x1,%r8
lea    -0x30(%r9),%ecx
cmp    $0xa,%cl
jb     1330 <get_next_number+0x230>
jmp    125f <get_next_number+0x15f>
mov    %r10,%r8
xor    %r10d,%r10d
jmp    125f <get_next_number+0x15f>

LLVM IR (-O0):
define i32 @get_next_number(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
store i32 0, i32* %8
br label %11
11: ; preds = %30, %3
%12 = load i8*, i8** %5
%13 = load i32, i32* %8
%14 = sext i32 %13 to i64
%15 = getelementptr inbounds i8, i8* %12, i64 %14
%16 = load i8, i8* %15
%17 = sext i8 %16 to i32
%18 = icmp eq i32 %17, 32
br i1 %18, label %27, label %19
19: ; preds = %11
%20 = load i8*, i8** %5
%21 = load i32, i32* %8
%22 = sext i32 %21 to i64
%23 = getelementptr inbounds i8, i8* %20, i64 %22
%24 = load i8, i8* %23
%25 = sext i8 %24 to i32
%26 = icmp eq i32 %25, 9
br label %27
27: ; preds = %19, %11
%28 = phi i1 [ true, %11 ], [ %26, %19 ]
br i1 %28, label %29, label %33
29: ; preds = %27
br label %30
30: ; preds = %29
%31 = load i32, i32* %8
%32 = add nsw i32 %31, 1
store i32 %32, i32* %8
br label %11
33: ; preds = %27
%34 = load i8*, i8** %5
%35 = load i32, i32* %8
%36 = sext i32 %35 to i64
%37 = getelementptr inbounds i8, i8* %34, i64 %36
%38 = load i8, i8* %37
%39 = sext i8 %38 to i32
%40 = icmp eq i32 %39, 0
br i1 %40, label %41, label %42
41: ; preds = %33
store i32 0, i32* %4
br label %669
42: ; preds = %33
%43 = load i8*, i8** %5
%44 = load i32, i32* %8
%45 = sext i32 %44 to i64
%46 = getelementptr inbounds i8, i8* %43, i64 %45
%47 = load i8, i8* %46
%48 = sext i8 %47 to i32
%49 = icmp eq i32 %48, 36
br i1 %49, label %76, label %50
50: ; preds = %42
%51 = load i8*, i8** %5
%52 = load i32, i32* %8
%53 = sext i32 %52 to i64
%54 = getelementptr inbounds i8, i8* %51, i64 %53
%55 = load i8, i8* %54
%56 = sext i8 %55 to i32
%57 = icmp eq i32 %56, 48
br i1 %57, label %58, label %206
58: ; preds = %50
%59 = load i8*, i8** %5
%60 = load i32, i32* %8
%61 = add nsw i32 %60, 1
%62 = sext i32 %61 to i64
%63 = getelementptr inbounds i8, i8* %59, i64 %62
%64 = load i8, i8* %63
%65 = sext i8 %64 to i32
%66 = icmp eq i32 %65, 120
br i1 %66, label %76, label %67
67: ; preds = %58
%68 = load i8*, i8** %5
%69 = load i32, i32* %8
%70 = add nsw i32 %69, 1
%71 = sext i32 %70 to i64
%72 = getelementptr inbounds i8, i8* %68, i64 %71
%73 = load i8, i8* %72
%74 = sext i8 %73 to i32
%75 = icmp eq i32 %74, 88
br i1 %75, label %76, label %206
76: ; preds = %67, %58, %42
%77 = load i8*, i8** %5
%78 = load i32, i32* %8
%79 = sext i32 %78 to i64
%80 = getelementptr inbounds i8, i8* %77, i64 %79
%81 = load i8, i8* %80
%82 = sext i8 %81 to i32
%83 = icmp eq i32 %82, 36
br i1 %83, label %84, label %87
84: ; preds = %76
%85 = load i32, i32* %8
%86 = add nsw i32 %85, 1
store i32 %86, i32* %8
br label %90
87: ; preds = %76
%88 = load i32, i32* %8
%89 = add nsw i32 %88, 2
store i32 %89, i32* %8
br label %90
90: ; preds = %87, %84
store i32 0, i32* %9
br label %91
91: ; preds = %90, %202
%92 = load i8*, i8** %5
%93 = load i32, i32* %8
%94 = sext i32 %93 to i64
%95 = getelementptr inbounds i8, i8* %92, i64 %94
%96 = load i8, i8* %95
%97 = sext i8 %96 to i32
%98 = icmp sge i32 %97, 48
br i1 %98, label %99, label %118
99: ; preds = %91
%100 = load i8*, i8** %5
%101 = load i32, i32* %8
%102 = sext i32 %101 to i64
%103 = getelementptr inbounds i8, i8* %100, i64 %102
%104 = load i8, i8* %103
%105 = sext i8 %104 to i32
%106 = icmp sle i32 %105, 57
br i1 %106, label %107, label %118
107: ; preds = %99
%108 = load i32, i32* %9
%109 = shl i32 %108, 4
%110 = load i8*, i8** %5
%111 = load i32, i32* %8
%112 = sext i32 %111 to i64
%113 = getelementptr inbounds i8, i8* %110, i64 %112
%114 = load i8, i8* %113
%115 = sext i8 %114 to i32
%116 = add nsw i32 %109, %115
%117 = sub nsw i32 %116, 48
store i32 %117, i32* %9
br label %202
118: ; preds = %99, %91
%119 = load i8*, i8** %5
%120 = load i32, i32* %8
%121 = sext i32 %120 to i64
%122 = getelementptr inbounds i8, i8* %119, i64 %121
%123 = load i8, i8* %122
%124 = sext i8 %123 to i32
%125 = icmp sge i32 %124, 97
br i1 %125, label %126, label %146
126: ; preds = %118
%127 = load i8*, i8** %5
%128 = load i32, i32* %8
%129 = sext i32 %128 to i64
%130 = getelementptr inbounds i8, i8* %127, i64 %129
%131 = load i8, i8* %130
%132 = sext i8 %131 to i32
%133 = icmp sle i32 %132, 102
br i1 %133, label %134, label %146
134: ; preds = %126
%135 = load i32, i32* %9
%136 = shl i32 %135, 4
%137 = load i8*, i8** %5
%138 = load i32, i32* %8
%139 = sext i32 %138 to i64
%140 = getelementptr inbounds i8, i8* %137, i64 %139
%141 = load i8, i8* %140
%142 = sext i8 %141 to i32
%143 = add nsw i32 %136, %142
%144 = sub nsw i32 %143, 97
%145 = add nsw i32 %144, 10
store i32 %145, i32* %9
br label %201
146: ; preds = %126, %118
%147 = load i8*, i8** %5
%148 = load i32, i32* %8
%149 = sext i32 %148 to i64
%150 = getelementptr inbounds i8, i8* %147, i64 %149
%151 = load i8, i8* %150
%152 = sext i8 %151 to i32
%153 = icmp sge i32 %152, 65
br i1 %153, label %154, label %174
154: ; preds = %146
%155 = load i8*, i8** %5
%156 = load i32, i32* %8
%157 = sext i32 %156 to i64
%158 = getelementptr inbounds i8, i8* %155, i64 %157
%159 = load i8, i8* %158
%160 = sext i8 %159 to i32
%161 = icmp sle i32 %160, 70
br i1 %161, label %162, label %174
162: ; preds = %154
%163 = load i32, i32* %9
%164 = shl i32 %163, 4
%165 = load i8*, i8** %5
%166 = load i32, i32* %8
%167 = sext i32 %166 to i64
%168 = getelementptr inbounds i8, i8* %165, i64 %167
%169 = load i8, i8* %168
%170 = sext i8 %169 to i32
%171 = add nsw i32 %164, %170
%172 = sub nsw i32 %171, 65
%173 = add nsw i32 %172, 10
store i32 %173, i32* %9
br label %200
174: ; preds = %154, %146
%175 = load i8*, i8** %5
%176 = load i32, i32* %8
%177 = sext i32 %176 to i64
%178 = getelementptr inbounds i8, i8* %175, i64 %177
%179 = load i8, i8* %178
%180 = sext i8 %179 to i32
%181 = icmp eq i32 %180, 32
br i1 %181, label %198, label %182
182: ; preds = %174
%183 = load i8*, i8** %5
%184 = load i32, i32* %8
%185 = sext i32 %184 to i64
%186 = getelementptr inbounds i8, i8* %183, i64 %185
%187 = load i8, i8* %186
%188 = sext i8 %187 to i32
%189 = icmp eq i32 %188, 9
br i1 %189, label %198, label %190
190: ; preds = %182
%191 = load i8*, i8** %5
%192 = load i32, i32* %8
%193 = sext i32 %192 to i64
%194 = getelementptr inbounds i8, i8* %191, i64 %193
%195 = load i8, i8* %194
%196 = sext i8 %195 to i32
%197 = icmp eq i32 %196, 0
br i1 %197, label %198, label %199
198: ; preds = %190, %182, %174
br label %205
199: ; preds = %190
store i32 0, i32* %4
br label %669
200: ; preds = %162
br label %201
201: ; preds = %200, %134
br label %202
202: ; preds = %201, %107
%203 = load i32, i32* %8
%204 = add nsw i32 %203, 1
store i32 %204, i32* %8
br label %91
205: ; preds = %198
br label %658
206: ; preds = %67, %50
%207 = load i8*, i8** %5
%208 = load i32, i32* %8
%209 = sext i32 %208 to i64
%210 = getelementptr inbounds i8, i8* %207, i64 %209
%211 = load i8, i8* %210
%212 = sext i8 %211 to i32
%213 = icmp eq i32 %212, 37
br i1 %213, label %240, label %214
214: ; preds = %206
%215 = load i8*, i8** %5
%216 = load i32, i32* %8
%217 = sext i32 %216 to i64
%218 = getelementptr inbounds i8, i8* %215, i64 %217
%219 = load i8, i8* %218
%220 = sext i8 %219 to i32
%221 = icmp eq i32 %220, 48
br i1 %221, label %222, label %321
222: ; preds = %214
%223 = load i8*, i8** %5
%224 = load i32, i32* %8
%225 = add nsw i32 %224, 1
%226 = sext i32 %225 to i64
%227 = getelementptr inbounds i8, i8* %223, i64 %226
%228 = load i8, i8* %227
%229 = sext i8 %228 to i32
%230 = icmp eq i32 %229, 98
br i1 %230, label %240, label %231
231: ; preds = %222
%232 = load i8*, i8** %5
%233 = load i32, i32* %8
%234 = add nsw i32 %233, 1
%235 = sext i32 %234 to i64
%236 = getelementptr inbounds i8, i8* %232, i64 %235
%237 = load i8, i8* %236
%238 = sext i8 %237 to i32
%239 = icmp eq i32 %238, 66
br i1 %239, label %240, label %321
240: ; preds = %231, %222, %206
%241 = load i8*, i8** %5
%242 = load i32, i32* %8
%243 = sext i32 %242 to i64
%244 = getelementptr inbounds i8, i8* %241, i64 %243
%245 = load i8, i8* %244
%246 = sext i8 %245 to i32
%247 = icmp eq i32 %246, 37
br i1 %247, label %248, label %251
248: ; preds = %240
%249 = load i32, i32* %8
%250 = add nsw i32 %249, 1
store i32 %250, i32* %8
br label %254
251: ; preds = %240
%252 = load i32, i32* %8
%253 = add nsw i32 %252, 2
store i32 %253, i32* %8
br label %254
254: ; preds = %251, %248
store i32 0, i32* %9
br label %255
255: ; preds = %317, %254
%256 = load i8*, i8** %5
%257 = load i32, i32* %8
%258 = sext i32 %257 to i64
%259 = getelementptr inbounds i8, i8* %256, i64 %258
%260 = load i8, i8* %259
%261 = sext i8 %260 to i32
%262 = icmp ne i32 %261, 0
br i1 %262, label %263, label %320
263: ; preds = %255
%264 = load i8*, i8** %5
%265 = load i32, i32* %8
%266 = sext i32 %265 to i64
%267 = getelementptr inbounds i8, i8* %264, i64 %266
%268 = load i8, i8* %267
%269 = sext i8 %268 to i32
%270 = icmp eq i32 %269, 48
br i1 %270, label %279, label %271
271: ; preds = %263
%272 = load i8*, i8** %5
%273 = load i32, i32* %8
%274 = sext i32 %273 to i64
%275 = getelementptr inbounds i8, i8* %272, i64 %274
%276 = load i8, i8* %275
%277 = sext i8 %276 to i32
%278 = icmp eq i32 %277, 49
br i1 %278, label %279, label %290
279: ; preds = %271, %263
%280 = load i32, i32* %9
%281 = shl i32 %280, 1
%282 = load i8*, i8** %5
%283 = load i32, i32* %8
%284 = sext i32 %283 to i64
%285 = getelementptr inbounds i8, i8* %282, i64 %284
%286 = load i8, i8* %285
%287 = sext i8 %286 to i32
%288 = sub nsw i32 %287, 48
%289 = add nsw i32 %281, %288
store i32 %289, i32* %9
br label %316
290: ; preds = %271
%291 = load i8*, i8** %5
%292 = load i32, i32* %8
%293 = sext i32 %292 to i64
%294 = getelementptr inbounds i8, i8* %291, i64 %293
%295 = load i8, i8* %294
%296 = sext i8 %295 to i32
%297 = icmp eq i32 %296, 32
br i1 %297, label %314, label %298
298: ; preds = %290
%299 = load i8*, i8** %5
%300 = load i32, i32* %8
%301 = sext i32 %300 to i64
%302 = getelementptr inbounds i8, i8* %299, i64 %301
%303 = load i8, i8* %302
%304 = sext i8 %303 to i32
%305 = icmp eq i32 %304, 9
br i1 %305, label %314, label %306
306: ; preds = %298
%307 = load i8*, i8** %5
%308 = load i32, i32* %8
%309 = sext i32 %308 to i64
%310 = getelementptr inbounds i8, i8* %307, i64 %309
%311 = load i8, i8* %310
%312 = sext i8 %311 to i32
%313 = icmp eq i32 %312, 0
br i1 %313, label %314, label %315
314: ; preds = %306, %298, %290
br label %320
315: ; preds = %306
store i32 0, i32* %4
br label %669
316: ; preds = %279
br label %317
317: ; preds = %316
%318 = load i32, i32* %8
%319 = add nsw i32 %318, 1
store i32 %319, i32* %8
br label %255
320: ; preds = %314, %255
br label %657
321: ; preds = %231, %214
%322 = load i8*, i8** %5
%323 = load i32, i32* %8
%324 = sext i32 %323 to i64
%325 = getelementptr inbounds i8, i8* %322, i64 %324
%326 = load i8, i8* %325
%327 = sext i8 %326 to i32
%328 = icmp sge i32 %327, 48
br i1 %328, label %329, label %337
329: ; preds = %321
%330 = load i8*, i8** %5
%331 = load i32, i32* %8
%332 = sext i32 %331 to i64
%333 = getelementptr inbounds i8, i8* %330, i64 %332
%334 = load i8, i8* %333
%335 = sext i8 %334 to i32
%336 = icmp sle i32 %335, 57
br i1 %336, label %369, label %337
337: ; preds = %329, %321
%338 = load i8*, i8** %5
%339 = load i32, i32* %8
%340 = sext i32 %339 to i64
%341 = getelementptr inbounds i8, i8* %338, i64 %340
%342 = load i8, i8* %341
%343 = sext i8 %342 to i32
%344 = icmp sge i32 %343, 97
br i1 %344, label %345, label %353
345: ; preds = %337
%346 = load i8*, i8** %5
%347 = load i32, i32* %8
%348 = sext i32 %347 to i64
%349 = getelementptr inbounds i8, i8* %346, i64 %348
%350 = load i8, i8* %349
%351 = sext i8 %350 to i32
%352 = icmp sle i32 %351, 102
br i1 %352, label %369, label %353
353: ; preds = %345, %337
%354 = load i8*, i8** %5
%355 = load i32, i32* %8
%356 = sext i32 %355 to i64
%357 = getelementptr inbounds i8, i8* %354, i64 %356
%358 = load i8, i8* %357
%359 = sext i8 %358 to i32
%360 = icmp sge i32 %359, 65
br i1 %360, label %361, label %655
361: ; preds = %353
%362 = load i8*, i8** %5
%363 = load i32, i32* %8
%364 = sext i32 %363 to i64
%365 = getelementptr inbounds i8, i8* %362, i64 %364
%366 = load i8, i8* %365
%367 = sext i8 %366 to i32
%368 = icmp sle i32 %367, 70
br i1 %368, label %369, label %655
369: ; preds = %361, %345, %329
store i32 0, i32* %10
store i32 0, i32* %9
br label %370
370: ; preds = %456, %369
br i1 true, label %371, label %459
371: ; preds = %370
%372 = load i8*, i8** %5
%373 = load i32, i32* %8
%374 = load i32, i32* %9
%375 = add nsw i32 %373, %374
%376 = sext i32 %375 to i64
%377 = getelementptr inbounds i8, i8* %372, i64 %376
%378 = load i8, i8* %377
%379 = sext i8 %378 to i32
%380 = icmp sge i32 %379, 48
br i1 %380, label %381, label %392
381: ; preds = %371
%382 = load i8*, i8** %5
%383 = load i32, i32* %8
%384 = load i32, i32* %9
%385 = add nsw i32 %383, %384
%386 = sext i32 %385 to i64
%387 = getelementptr inbounds i8, i8* %382, i64 %386
%388 = load i8, i8* %387
%389 = sext i8 %388 to i32
%390 = icmp sle i32 %389, 57
br i1 %390, label %391, label %392
391: ; preds = %381
br label %456
392: ; preds = %381, %371
%393 = load i8*, i8** %5
%394 = load i32, i32* %8
%395 = load i32, i32* %9
%396 = add nsw i32 %394, %395
%397 = sext i32 %396 to i64
%398 = getelementptr inbounds i8, i8* %393, i64 %397
%399 = load i8, i8* %398
%400 = sext i8 %399 to i32
%401 = icmp sge i32 %400, 97
br i1 %401, label %402, label %413
402: ; preds = %392
%403 = load i8*, i8** %5
%404 = load i32, i32* %8
%405 = load i32, i32* %9
%406 = add nsw i32 %404, %405
%407 = sext i32 %406 to i64
%408 = getelementptr inbounds i8, i8* %403, i64 %407
%409 = load i8, i8* %408
%410 = sext i8 %409 to i32
%411 = icmp sle i32 %410, 102
br i1 %411, label %412, label %413
412: ; preds = %402
store i32 1, i32* %10
br label %459
413: ; preds = %402, %392
%414 = load i8*, i8** %5
%415 = load i32, i32* %8
%416 = load i32, i32* %9
%417 = add nsw i32 %415, %416
%418 = sext i32 %417 to i64
%419 = getelementptr inbounds i8, i8* %414, i64 %418
%420 = load i8, i8* %419
%421 = sext i8 %420 to i32
%422 = icmp sge i32 %421, 65
br i1 %422, label %423, label %434
423: ; preds = %413
%424 = load i8*, i8** %5
%425 = load i32, i32* %8
%426 = load i32, i32* %9
%427 = add nsw i32 %425, %426
%428 = sext i32 %427 to i64
%429 = getelementptr inbounds i8, i8* %424, i64 %428
%430 = load i8, i8* %429
%431 = sext i8 %430 to i32
%432 = icmp sle i32 %431, 70
br i1 %432, label %433, label %434
433: ; preds = %423
store i32 1, i32* %10
br label %459
434: ; preds = %423, %413
%435 = load i8*, i8** %5
%436 = load i32, i32* %8
%437 = load i32, i32* %9
%438 = add nsw i32 %436, %437
%439 = sext i32 %438 to i64
%440 = getelementptr inbounds i8, i8* %435, i64 %439
%441 = load i8, i8* %440
%442 = sext i8 %441 to i32
%443 = icmp eq i32 %442, 104
br i1 %443, label %454, label %444
444: ; preds = %434
%445 = load i8*, i8** %5
%446 = load i32, i32* %8
%447 = load i32, i32* %9
%448 = add nsw i32 %446, %447
%449 = sext i32 %448 to i64
%450 = getelementptr inbounds i8, i8* %445, i64 %449
%451 = load i8, i8* %450
%452 = sext i8 %451 to i32
%453 = icmp eq i32 %452, 72
br i1 %453, label %454, label %455
454: ; preds = %444, %434
store i32 1, i32* %10
br label %459
455: ; preds = %444
br label %459
456: ; preds = %391
%457 = load i32, i32* %9
%458 = add nsw i32 %457, 1
store i32 %458, i32* %9
br label %370
459: ; preds = %455, %454, %433, %412, %370
%460 = load i32, i32* %10
%461 = icmp eq i32 %460, 1
br i1 %461, label %462, label %595
462: ; preds = %459
store i32 0, i32* %9
br label %463
463: ; preds = %462, %591
%464 = load i8*, i8** %5
%465 = load i32, i32* %8
%466 = sext i32 %465 to i64
%467 = getelementptr inbounds i8, i8* %464, i64 %466
%468 = load i8, i8* %467
%469 = sext i8 %468 to i32
%470 = icmp sge i32 %469, 48
br i1 %470, label %471, label %490
471: ; preds = %463
%472 = load i8*, i8** %5
%473 = load i32, i32* %8
%474 = sext i32 %473 to i64
%475 = getelementptr inbounds i8, i8* %472, i64 %474
%476 = load i8, i8* %475
%477 = sext i8 %476 to i32
%478 = icmp sle i32 %477, 57
br i1 %478, label %479, label %490
479: ; preds = %471
%480 = load i32, i32* %9
%481 = shl i32 %480, 4
%482 = load i8*, i8** %5
%483 = load i32, i32* %8
%484 = sext i32 %483 to i64
%485 = getelementptr inbounds i8, i8* %482, i64 %484
%486 = load i8, i8* %485
%487 = sext i8 %486 to i32
%488 = add nsw i32 %481, %487
%489 = sub nsw i32 %488, 48
store i32 %489, i32* %9
br label %591
490: ; preds = %471, %463
%491 = load i8*, i8** %5
%492 = load i32, i32* %8
%493 = sext i32 %492 to i64
%494 = getelementptr inbounds i8, i8* %491, i64 %493
%495 = load i8, i8* %494
%496 = sext i8 %495 to i32
%497 = icmp sge i32 %496, 97
br i1 %497, label %498, label %518
498: ; preds = %490
%499 = load i8*, i8** %5
%500 = load i32, i32* %8
%501 = sext i32 %500 to i64
%502 = getelementptr inbounds i8, i8* %499, i64 %501
%503 = load i8, i8* %502
%504 = sext i8 %503 to i32
%505 = icmp sle i32 %504, 102
br i1 %505, label %506, label %518
506: ; preds = %498
%507 = load i32, i32* %9
%508 = shl i32 %507, 4
%509 = load i8*, i8** %5
%510 = load i32, i32* %8
%511 = sext i32 %510 to i64
%512 = getelementptr inbounds i8, i8* %509, i64 %511
%513 = load i8, i8* %512
%514 = sext i8 %513 to i32
%515 = add nsw i32 %508, %514
%516 = sub nsw i32 %515, 97
%517 = add nsw i32 %516, 10
store i32 %517, i32* %9
br label %590
518: ; preds = %498, %490
%519 = load i8*, i8** %5
%520 = load i32, i32* %8
%521 = sext i32 %520 to i64
%522 = getelementptr inbounds i8, i8* %519, i64 %521
%523 = load i8, i8* %522
%524 = sext i8 %523 to i32
%525 = icmp sge i32 %524, 65
br i1 %525, label %526, label %546
526: ; preds = %518
%527 = load i8*, i8** %5
%528 = load i32, i32* %8
%529 = sext i32 %528 to i64
%530 = getelementptr inbounds i8, i8* %527, i64 %529
%531 = load i8, i8* %530
%532 = sext i8 %531 to i32
%533 = icmp sle i32 %532, 70
br i1 %533, label %534, label %546
534: ; preds = %526
%535 = load i32, i32* %9
%536 = shl i32 %535, 4
%537 = load i8*, i8** %5
%538 = load i32, i32* %8
%539 = sext i32 %538 to i64
%540 = getelementptr inbounds i8, i8* %537, i64 %539
%541 = load i8, i8* %540
%542 = sext i8 %541 to i32
%543 = add nsw i32 %536, %542
%544 = sub nsw i32 %543, 65
%545 = add nsw i32 %544, 10
store i32 %545, i32* %9
br label %589
546: ; preds = %526, %518
%547 = load i8*, i8** %5
%548 = load i32, i32* %8
%549 = sext i32 %548 to i64
%550 = getelementptr inbounds i8, i8* %547, i64 %549
%551 = load i8, i8* %550
%552 = sext i8 %551 to i32
%553 = icmp eq i32 %552, 104
br i1 %553, label %562, label %554
554: ; preds = %546
%555 = load i8*, i8** %5
%556 = load i32, i32* %8
%557 = sext i32 %556 to i64
%558 = getelementptr inbounds i8, i8* %555, i64 %557
%559 = load i8, i8* %558
%560 = sext i8 %559 to i32
%561 = icmp eq i32 %560, 72
br i1 %561, label %562, label %563
562: ; preds = %554, %546
br label %594
563: ; preds = %554
%564 = load i8*, i8** %5
%565 = load i32, i32* %8
%566 = sext i32 %565 to i64
%567 = getelementptr inbounds i8, i8* %564, i64 %566
%568 = load i8, i8* %567
%569 = sext i8 %568 to i32
%570 = icmp eq i32 %569, 32
br i1 %570, label %587, label %571
571: ; preds = %563
%572 = load i8*, i8** %5
%573 = load i32, i32* %8
%574 = sext i32 %573 to i64
%575 = getelementptr inbounds i8, i8* %572, i64 %574
%576 = load i8, i8* %575
%577 = sext i8 %576 to i32
%578 = icmp eq i32 %577, 9
br i1 %578, label %587, label %579
579: ; preds = %571
%580 = load i8*, i8** %5
%581 = load i32, i32* %8
%582 = sext i32 %581 to i64
%583 = getelementptr inbounds i8, i8* %580, i64 %582
%584 = load i8, i8* %583
%585 = sext i8 %584 to i32
%586 = icmp eq i32 %585, 0
br i1 %586, label %587, label %588
587: ; preds = %579, %571, %563
br label %594
588: ; preds = %579
store i32 0, i32* %4
br label %669
589: ; preds = %534
br label %590
590: ; preds = %589, %506
br label %591
591: ; preds = %590, %479
%592 = load i32, i32* %8
%593 = add nsw i32 %592, 1
store i32 %593, i32* %8
br label %463
594: ; preds = %587, %562
br label %654
595: ; preds = %459
store i32 0, i32* %9
br label %596
596: ; preds = %625, %595
%597 = load i8*, i8** %5
%598 = load i32, i32* %8
%599 = sext i32 %598 to i64
%600 = getelementptr inbounds i8, i8* %597, i64 %599
%601 = load i8, i8* %600
%602 = sext i8 %601 to i32
%603 = icmp sge i32 %602, 48
br i1 %603, label %604, label %612
604: ; preds = %596
%605 = load i8*, i8** %5
%606 = load i32, i32* %8
%607 = sext i32 %606 to i64
%608 = getelementptr inbounds i8, i8* %605, i64 %607
%609 = load i8, i8* %608
%610 = sext i8 %609 to i32
%611 = icmp sle i32 %610, 57
br label %612
612: ; preds = %604, %596
%613 = phi i1 [ false, %596 ], [ %611, %604 ]
br i1 %613, label %614, label %628
614: ; preds = %612
%615 = load i32, i32* %9
%616 = mul nsw i32 %615, 10
%617 = load i8*, i8** %5
%618 = load i32, i32* %8
%619 = sext i32 %618 to i64
%620 = getelementptr inbounds i8, i8* %617, i64 %619
%621 = load i8, i8* %620
%622 = sext i8 %621 to i32
%623 = add nsw i32 %616, %622
%624 = sub nsw i32 %623, 48
store i32 %624, i32* %9
br label %625
625: ; preds = %614
%626 = load i32, i32* %8
%627 = add nsw i32 %626, 1
store i32 %627, i32* %8
br label %596
628: ; preds = %612
%629 = load i8*, i8** %5
%630 = load i32, i32* %8
%631 = sext i32 %630 to i64
%632 = getelementptr inbounds i8, i8* %629, i64 %631
%633 = load i8, i8* %632
%634 = sext i8 %633 to i32
%635 = icmp eq i32 %634, 32
br i1 %635, label %653, label %636
636: ; preds = %628
%637 = load i8*, i8** %5
%638 = load i32, i32* %8
%639 = sext i32 %638 to i64
%640 = getelementptr inbounds i8, i8* %637, i64 %639
%641 = load i8, i8* %640
%642 = sext i8 %641 to i32
%643 = icmp eq i32 %642, 9
br i1 %643, label %653, label %644
644: ; preds = %636
%645 = load i8*, i8** %5
%646 = load i32, i32* %8
%647 = sext i32 %646 to i64
%648 = getelementptr inbounds i8, i8* %645, i64 %647
%649 = load i8, i8* %648
%650 = sext i8 %649 to i32
%651 = icmp eq i32 %650, 0
br i1 %651, label %653, label %652
652: ; preds = %644
store i32 0, i32* %4
br label %669
653: ; preds = %644, %636, %628
br label %654
654: ; preds = %653, %594
br label %656
655: ; preds = %361, %353
store i32 0, i32* %4
br label %669
656: ; preds = %654
br label %657
657: ; preds = %656, %320
br label %658
658: ; preds = %657, %205
%659 = load i32, i32* %9
%660 = load i32*, i32** %6
store i32 %659, i32* %660
%661 = load i32*, i32** %7
%662 = icmp ne i32* %661, null
br i1 %662, label %663, label %668
663: ; preds = %658
%664 = load i32, i32* %8
%665 = load i32*, i32** %7
%666 = load i32, i32* %665
%667 = add nsw i32 %666, %664
store i32 %667, i32* %665
br label %668
668: ; preds = %663, %658
store i32 1, i32* %4
br label %669
669: ; preds = %668, %655, %652, %588, %315, %199, %41
%670 = load i32, i32* %4
ret i32 %670
}

LLVM IR (-O2):
define i32 @get_next_number(i8* nocapture %0, i32* nocapture writeonly %1, i32* %2) {
br label %4
4: ; preds = %8, %3
%5 = phi i64 [ %9, %8 ], [ 0, %3 ]
%6 = getelementptr inbounds i8, i8* %0, i64 %5
%7 = load i8, i8* %6
switch i8 %7, label %55 [
i8 32, label %8
i8 9, label %8
i8 0, label %122
i8 36, label %15
i8 48, label %10
i8 37, label %40
]
8: ; preds = %4, %4
%9 = add nuw i64 %5, 1
br label %4
10: ; preds = %4
%11 = add i64 %5, 1
%12 = and i64 %11, 4294967295
%13 = getelementptr inbounds i8, i8* %0, i64 %12
%14 = load i8, i8* %13
switch i8 %14, label %59 [
i8 120, label %15
i8 88, label %15
i8 98, label %40
i8 66, label %40
]
15: ; preds = %4, %10, %10
%16 = phi i64 [ 2, %10 ], [ 2, %10 ], [ 1, %4 ]
%17 = add i64 %16, %5
%18 = and i64 %17, 4294967295
br label %19
19: ; preds = %34, %15
%20 = phi i64 [ %39, %34 ], [ %18, %15 ]
%21 = phi i32 [ %38, %34 ], [ 0, %15 ]
%22 = getelementptr inbounds i8, i8* %0, i64 %20
%23 = load i8, i8* %22
%24 = sext i8 %23 to i32
%25 = add i8 %23, -48
%26 = icmp ult i8 %25, 10
br i1 %26, label %34, label %27
27: ; preds = %19
%28 = add i8 %23, -97
%29 = icmp ult i8 %28, 6
br i1 %29, label %34, label %30
30: ; preds = %27
%31 = add i8 %23, -65
%32 = icmp ult i8 %31, 6
br i1 %32, label %34, label %33
33: ; preds = %30
switch i8 %23, label %122 [
i8 32, label %114
i8 9, label %114
i8 0, label %114
]
34: ; preds = %30, %27, %19
%35 = phi i32 [ -48, %19 ], [ -87, %27 ], [ -55, %30 ]
%36 = shl i32 %21, 4
%37 = add i32 %36, %35
%38 = add i32 %37, %24
%39 = add nuw i64 %20, 1
br label %19
40: ; preds = %4, %10, %10
%41 = phi i64 [ 2, %10 ], [ 2, %10 ], [ 1, %4 ]
%42 = add i64 %41, %5
%43 = and i64 %42, 4294967295
br label %44
44: ; preds = %49, %40
%45 = phi i64 [ %54, %49 ], [ %43, %40 ]
%46 = phi i32 [ %53, %49 ], [ 0, %40 ]
%47 = getelementptr inbounds i8, i8* %0, i64 %45
%48 = load i8, i8* %47
switch i8 %48, label %122 [
i8 0, label %114
i8 48, label %49
i8 49, label %49
i8 32, label %114
i8 9, label %114
]
49: ; preds = %44, %44
%50 = shl i32 %46, 1
%51 = zext i8 %48 to i32
%52 = add i32 %50, -48
%53 = add i32 %52, %51
%54 = add nuw i64 %45, 1
br label %44
55: ; preds = %4
%56 = add i8 %7, -48
%57 = icmp ult i8 %56, 10
br i1 %57, label %59, label %58
58: ; preds = %55
switch i8 %7, label %122 [
i8 102, label %59
i8 101, label %59
i8 100, label %59
i8 99, label %59
i8 98, label %59
i8 97, label %59
i8 70, label %59
i8 69, label %59
i8 68, label %59
i8 67, label %59
i8 66, label %59
i8 65, label %59
]
59: ; preds = %10, %55, %58, %58, %58, %58, %58, %58, %58, %58, %58, %58, %58, %58
%60 = and i64 %5, 4294967295
br label %61
61: ; preds = %61, %59
%62 = phi i64 [ %68, %61 ], [ 0, %59 ]
%63 = add nuw nsw i64 %62, %60
%64 = getelementptr inbounds i8, i8* %0, i64 %63
%65 = load i8, i8* %64
%66 = add i8 %65, -48
%67 = icmp ult i8 %66, 10
%68 = add nuw i64 %62, 1
br i1 %67, label %61, label %69
69: ; preds = %61
switch i8 %65, label %71 [
i8 102, label %70
i8 101, label %70
i8 100, label %70
i8 99, label %70
i8 98, label %70
i8 97, label %70
i8 70, label %70
i8 69, label %70
i8 68, label %70
i8 67, label %70
i8 66, label %70
i8 65, label %70
i8 104, label %70
i8 72, label %70
]
70: ; preds = %69, %69, %69, %69, %69, %69, %69, %69, %69, %69, %69, %69, %69, %69
br label %76
71: ; preds = %69
%72 = getelementptr inbounds i8, i8* %0, i64 %60
%73 = load i8, i8* %72
%74 = add i8 %73, -48
%75 = icmp ult i8 %74, 10
br i1 %75, label %97, label %110
76: ; preds = %70, %91
%77 = phi i64 [ %96, %91 ], [ %60, %70 ]
%78 = phi i32 [ %95, %91 ], [ 0, %70 ]
%79 = getelementptr inbounds i8, i8* %0, i64 %77
%80 = load i8, i8* %79
%81 = sext i8 %80 to i32
%82 = add i8 %80, -48
%83 = icmp ult i8 %82, 10
br i1 %83, label %91, label %84
84: ; preds = %76
%85 = add i8 %80, -97
%86 = icmp ult i8 %85, 6
br i1 %86, label %91, label %87
87: ; preds = %84
%88 = add i8 %80, -65
%89 = icmp ult i8 %88, 6
br i1 %89, label %91, label %90
90: ; preds = %87
switch i8 %80, label %122 [
i8 104, label %114
i8 72, label %114
i8 32, label %114
i8 9, label %114
i8 0, label %114
]
91: ; preds = %87, %84, %76
%92 = phi i32 [ -48, %76 ], [ -87, %84 ], [ -55, %87 ]
%93 = shl i32 %78, 4
%94 = add i32 %93, %92
%95 = add i32 %94, %81
%96 = add nuw i64 %77, 1
br label %76
97: ; preds = %71, %97
%98 = phi i64 [ %105, %97 ], [ %60, %71 ]
%99 = phi i8 [ %107, %97 ], [ %73, %71 ]
%100 = phi i32 [ %104, %97 ], [ 0, %71 ]
%101 = zext i8 %99 to i32
%102 = mul nsw i32 %100, 10
%103 = add i32 %102, -48
%104 = add i32 %103, %101
%105 = add nuw i64 %98, 1
%106 = getelementptr inbounds i8, i8* %0, i64 %105
%107 = load i8, i8* %106
%108 = add i8 %107, -48
%109 = icmp ult i8 %108, 10
br i1 %109, label %97, label %110
110: ; preds = %97, %71
%111 = phi i64 [ %5, %71 ], [ %105, %97 ]
%112 = phi i32 [ 0, %71 ], [ %104, %97 ]
%113 = phi i8 [ %73, %71 ], [ %107, %97 ]
switch i8 %113, label %122 [
i8 32, label %114
i8 9, label %114
i8 0, label %114
]
114: ; preds = %44, %44, %44, %110, %110, %110, %90, %90, %90, %90, %90, %33, %33, %33
%115 = phi i64 [ %20, %33 ], [ %77, %90 ], [ %111, %110 ], [ %20, %33 ], [ %20, %33 ], [ %77, %90 ], [ %77, %90 ], [ %77, %90 ], [ %77, %90 ], [ %111, %110 ], [ %111, %110 ], [ %45, %44 ], [ %45, %44 ], [ %45, %44 ]
%116 = phi i32 [ %21, %33 ], [ %78, %90 ], [ %112, %110 ], [ %21, %33 ], [ %21, %33 ], [ %78, %90 ], [ %78, %90 ], [ %78, %90 ], [ %78, %90 ], [ %112, %110 ], [ %112, %110 ], [ %46, %44 ], [ %46, %44 ], [ %46, %44 ]
store i32 %116, i32* %1
%117 = icmp eq i32* %2, null
br i1 %117, label %122, label %118
118: ; preds = %114
%119 = trunc i64 %115 to i32
%120 = load i32, i32* %2
%121 = add nsw i32 %120, %119
store i32 %121, i32* %2
br label %122
122: ; preds = %4, %44, %58, %114, %118, %110, %90, %33
%123 = phi i32 [ 0, %33 ], [ 0, %90 ], [ 0, %110 ], [ 1, %118 ], [ 1, %114 ], [ 0, %58 ], [ 0, %44 ], [ 0, %4 ]
ret i32 %123
}