#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 */
bool _isNumber(int state, char *s) {
  switch (state) {
  case 0:
    if (*s == ' ')
      return _isNumber(0, s + 1);
    if (*s == '-' || *s == '+')
      return _isNumber(1, s + 1);
    if (*s >= '0' && *s <= '9')
      return _isNumber(2, s + 1);
    if (*s == '.')
      return _isNumber(6, s + 1);
    return false;
  case 1:
    if (*s >= '0' && *s <= '9')
      return _isNumber(2, s + 1);
    if (*s == '.')
      return _isNumber(6, s + 1);
    return false;
  case 2:
    if (*s >= '0' && *s <= '9')
      return _isNumber(2, s + 1);
    if (*s == '.')
      return _isNumber(3, s + 1);
    if (*s == 'e')
      return _isNumber(4, s + 1);
    if (*s == ' ')
      return _isNumber(9, s + 1);
    if (*s == '\0')
      return true;
    return false;
  case 3:
    if (*s >= '0' && *s <= '9')
      return _isNumber(3, s + 1);
    if (*s == '\0')
      return true;
    if (*s == 'e')
      return _isNumber(4, s + 1);
    if (*s == ' ')
      return _isNumber(9, s + 1);
    return false;
  case 4:
    if (*s >= '0' && *s <= '9')
      return _isNumber(5, s + 1);
    if (*s == '+' || *s == '-')
      return _isNumber(10, s + 1);
    return false;
  case 5:
    if (*s >= '0' && *s <= '9')
      return _isNumber(5, s + 1);
    if (*s == ' ')
      return _isNumber(9, s + 1);
    if (*s == '\0')
      return true;
    return false;
  case 6:
    if (*s >= '0' && *s <= '9')
      return _isNumber(7, s + 1);
    return false;
  case 7:
    if (*s >= '0' && *s <= '9')
      return _isNumber(7, s + 1);
    if (*s == 'e')
      return _isNumber(4, s + 1);
    if (*s == ' ')
      return _isNumber(9, s + 1);
    if (*s == '\0')
      return true;
    return false;
  case 9:
    if (*s == ' ')
      return _isNumber(9, s + 1);
    if (*s == '\0')
      return true;
    return false;
  case 10:
    if (*s >= '0' && *s <= '9')
      return _isNumber(5, s + 1);
    return false;
  default:
    return false;
  }
}


x86 assembly (clang, -O0):
<_isNumber>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x8(%rbp),%eax
mov    %rax,-0x18(%rbp)
sub    $0xa,%rax
ja     16bb <_isNumber+0x5ab>
mov    -0x18(%rbp),%rax
lea    0xec5(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x20,%eax
jne    116b <_isNumber+0x5b>
mov    -0x10(%rbp),%rsi
add    $0x1,%rsi
xor    %edi,%edi
call   1030 <_isNumber@plt>
mov    %eax,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2d,%eax
je     118b <_isNumber+0x7b>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2b,%eax
jne    11a5 <_isNumber+0x95>
mov    -0x10(%rbp),%rsi
add    $0x1,%rsi
mov    $0x1,%edi
call   1030 <_isNumber@plt>
mov    %eax,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x30,%eax
jl     11df <_isNumber+0xcf>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x39,%eax
jg     11df <_isNumber+0xcf>
mov    -0x10(%rbp),%rsi
add    $0x1,%rsi
mov    $0x2,%edi
call   1030 <_isNumber@plt>
mov    %eax,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2e,%eax
jne    1209 <_isNumber+0xf9>
mov    -0x10(%rbp),%rsi
add    $0x1,%rsi
mov    $0x6,%edi
call   1030 <_isNumber@plt>
mov    %eax,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
movl   $0x0,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x30,%eax
jl     124f <_isNumber+0x13f>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x39,%eax
jg     124f <_isNumber+0x13f>
mov    -0x10(%rbp),%rsi
add    $0x1,%rsi
mov    $0x2,%edi
call   1030 <_isNumber@plt>
mov    %eax,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2e,%eax
jne    1279 <_isNumber+0x169>
mov    -0x10(%rbp),%rsi
add    $0x1,%rsi
mov    $0x6,%edi
call   1030 <_isNumber@plt>
mov    %eax,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
movl   $0x0,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x30,%eax
jl     12bf <_isNumber+0x1af>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x39,%eax
jg     12bf <_isNumber+0x1af>
mov    -0x10(%rbp),%rsi
add    $0x1,%rsi
mov    $0x2,%edi
call   1030 <_isNumber@plt>
mov    %eax,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2e,%eax
jne    12e9 <_isNumber+0x1d9>
mov    -0x10(%rbp),%rsi
add    $0x1,%rsi
mov    $0x3,%edi
call   1030 <_isNumber@plt>
mov    %eax,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x65,%eax
jne    1313 <_isNumber+0x203>
mov    -0x10(%rbp),%rsi
add    $0x1,%rsi
mov    $0x4,%edi
call   1030 <_isNumber@plt>
mov    %eax,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x20,%eax
jne    133d <_isNumber+0x22d>
mov    -0x10(%rbp),%rsi
add    $0x1,%rsi
mov    $0x9,%edi
call   1030 <_isNumber@plt>
mov    %eax,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
jne    1359 <_isNumber+0x249>
movl   $0x1,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
movl   $0x0,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x30,%eax
jl     139f <_isNumber+0x28f>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x39,%eax
jg     139f <_isNumber+0x28f>
mov    -0x10(%rbp),%rsi
add    $0x1,%rsi
mov    $0x3,%edi
call   1030 <_isNumber@plt>
mov    %eax,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
jne    13bb <_isNumber+0x2ab>
movl   $0x1,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x65,%eax
jne    13e5 <_isNumber+0x2d5>
mov    -0x10(%rbp),%rsi
add    $0x1,%rsi
mov    $0x4,%edi
call   1030 <_isNumber@plt>
mov    %eax,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x20,%eax
jne    140f <_isNumber+0x2ff>
mov    -0x10(%rbp),%rsi
add    $0x1,%rsi
mov    $0x9,%edi
call   1030 <_isNumber@plt>
mov    %eax,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
movl   $0x0,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x30,%eax
jl     1455 <_isNumber+0x345>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x39,%eax
jg     1455 <_isNumber+0x345>
mov    -0x10(%rbp),%rsi
add    $0x1,%rsi
mov    $0x5,%edi
call   1030 <_isNumber@plt>
mov    %eax,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2b,%eax
je     1475 <_isNumber+0x365>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2d,%eax
jne    148f <_isNumber+0x37f>
mov    -0x10(%rbp),%rsi
add    $0x1,%rsi
mov    $0xa,%edi
call   1030 <_isNumber@plt>
mov    %eax,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
movl   $0x0,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x30,%eax
jl     14d5 <_isNumber+0x3c5>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x39,%eax
jg     14d5 <_isNumber+0x3c5>
mov    -0x10(%rbp),%rsi
add    $0x1,%rsi
mov    $0x5,%edi
call   1030 <_isNumber@plt>
mov    %eax,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x20,%eax
jne    14ff <_isNumber+0x3ef>
mov    -0x10(%rbp),%rsi
add    $0x1,%rsi
mov    $0x9,%edi
call   1030 <_isNumber@plt>
mov    %eax,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
jne    151b <_isNumber+0x40b>
movl   $0x1,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
movl   $0x0,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x30,%eax
jl     1561 <_isNumber+0x451>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x39,%eax
jg     1561 <_isNumber+0x451>
mov    -0x10(%rbp),%rsi
add    $0x1,%rsi
mov    $0x7,%edi
call   1030 <_isNumber@plt>
mov    %eax,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
movl   $0x0,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x30,%eax
jl     15a7 <_isNumber+0x497>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x39,%eax
jg     15a7 <_isNumber+0x497>
mov    -0x10(%rbp),%rsi
add    $0x1,%rsi
mov    $0x7,%edi
call   1030 <_isNumber@plt>
mov    %eax,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x65,%eax
jne    15d1 <_isNumber+0x4c1>
mov    -0x10(%rbp),%rsi
add    $0x1,%rsi
mov    $0x4,%edi
call   1030 <_isNumber@plt>
mov    %eax,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x20,%eax
jne    15fb <_isNumber+0x4eb>
mov    -0x10(%rbp),%rsi
add    $0x1,%rsi
mov    $0x9,%edi
call   1030 <_isNumber@plt>
mov    %eax,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
jne    1617 <_isNumber+0x507>
movl   $0x1,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
movl   $0x0,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x20,%eax
jne    164d <_isNumber+0x53d>
mov    -0x10(%rbp),%rsi
add    $0x1,%rsi
mov    $0x9,%edi
call   1030 <_isNumber@plt>
mov    %eax,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
jne    1669 <_isNumber+0x559>
movl   $0x1,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
movl   $0x0,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x30,%eax
jl     16af <_isNumber+0x59f>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x39,%eax
jg     16af <_isNumber+0x59f>
mov    -0x10(%rbp),%rsi
add    $0x1,%rsi
mov    $0x5,%edi
call   1030 <_isNumber@plt>
mov    %eax,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
movl   $0x0,-0x4(%rbp)
jmp    16c2 <_isNumber+0x5b2>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<_isNumber>:
lea    0xef9(%rip),%rcx
jmp    1124 <_isNumber+0x24>
movzbl (%rsi),%edx
mov    $0x9,%edi
cmp    $0x20,%dl
jne    12df <_isNumber+0x1df>
nopw   0x0(%rax,%rax,1)
add    $0x1,%rsi
xor    %eax,%eax
cmp    $0xa,%edi
ja     12ea <_isNumber+0x1ea>
mov    %edi,%eax
movslq (%rcx,%rax,4),%rdx
add    %rcx,%rdx
xor    %eax,%eax
jmp    *%rdx
movzbl (%rsi),%eax
cmp    $0x2d,%al
je     12a5 <_isNumber+0x1a5>
cmp    $0x2b,%al
je     12a5 <_isNumber+0x1a5>
xor    %edi,%edi
cmp    $0x20,%al
je     1120 <_isNumber+0x20>
lea    -0x30(%rax),%edx
mov    $0x2,%edi
cmp    $0xa,%dl
jb     1120 <_isNumber+0x20>
mov    $0x6,%edi
cmp    $0x2e,%al
je     1120 <_isNumber+0x20>
jmp    12e8 <_isNumber+0x1e8>
movzbl (%rsi),%edx
lea    -0x30(%rdx),%eax
mov    $0x2,%edi
cmp    $0xa,%al
jb     1120 <_isNumber+0x20>
mov    $0x6,%edi
mov    $0x0,%eax
cmp    $0x2e,%dl
je     1120 <_isNumber+0x20>
jmp    12ea <_isNumber+0x1ea>
movzbl (%rsi),%edx
lea    -0x30(%rdx),%eax
mov    $0x2,%edi
cmp    $0xa,%al
jb     1120 <_isNumber+0x20>
cmp    $0x2d,%dl
jle    12c1 <_isNumber+0x1c1>
mov    $0x3,%edi
cmp    $0x2e,%dl
je     1120 <_isNumber+0x20>
cmp    $0x65,%dl
jne    12e8 <_isNumber+0x1e8>
mov    $0x4,%edi
add    $0x1,%rsi
jmp    1124 <_isNumber+0x24>
movzbl (%rsi),%edx
lea    -0x30(%rdx),%eax
mov    $0x3,%edi
cmp    $0xa,%al
jb     1120 <_isNumber+0x20>
cmp    $0x20,%dl
jne    1295 <_isNumber+0x195>
mov    $0x9,%edi
add    $0x1,%rsi
jmp    1124 <_isNumber+0x24>
movzbl (%rsi),%edx
lea    -0x30(%rdx),%eax
mov    $0x5,%edi
cmp    $0xa,%al
jb     1120 <_isNumber+0x20>
mov    $0xa,%edi
cmp    $0x2b,%dl
je     1120 <_isNumber+0x20>
mov    $0x0,%eax
cmp    $0x2d,%dl
je     1120 <_isNumber+0x20>
jmp    12ea <_isNumber+0x1ea>
movzbl (%rsi),%edx
lea    -0x30(%rdx),%eax
mov    $0x5,%edi
cmp    $0xa,%al
jb     1120 <_isNumber+0x20>
mov    $0x9,%edi
cmp    $0x20,%dl
je     1120 <_isNumber+0x20>
jmp    12d4 <_isNumber+0x1d4>
movzbl (%rsi),%edx
add    $0xd0,%dl
mov    $0x7,%edi
jmp    126d <_isNumber+0x16d>
movzbl (%rsi),%edx
add    $0xd0,%dl
mov    $0x5,%edi
mov    $0x0,%eax
cmp    $0xa,%dl
jb     1120 <_isNumber+0x20>
jmp    12ea <_isNumber+0x1ea>
movzbl (%rsi),%edx
lea    -0x30(%rdx),%eax
mov    $0x7,%edi
cmp    $0xa,%al
jb     1120 <_isNumber+0x20>
cmp    $0x20,%dl
je     12b3 <_isNumber+0x1b3>
mov    $0x4,%edi
cmp    $0x65,%dl
je     1120 <_isNumber+0x20>
jmp    12d4 <_isNumber+0x1d4>
mov    $0x1,%edi
add    $0x1,%rsi
jmp    1124 <_isNumber+0x24>
mov    $0x9,%edi
add    $0x1,%rsi
jmp    1124 <_isNumber+0x24>
cmp    $0x20,%dl
jne    12d4 <_isNumber+0x1d4>
mov    $0x9,%edi
add    $0x1,%rsi
jmp    1124 <_isNumber+0x24>
mov    $0x1,%eax
test   %dl,%dl
je     12ea <_isNumber+0x1ea>
jmp    12e8 <_isNumber+0x1e8>
mov    $0x1,%eax
test   %dl,%dl
je     12ea <_isNumber+0x1ea>
xor    %eax,%eax
ret

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

LLVM IR (-O2):
define i32 @_isNumber(i32 %0, i8* %1) {
br label %3
3: ; preds = %8, %2
%4 = phi i32 [ %0, %2 ], [ %9, %8 ]
%5 = phi i8* [ %1, %2 ], [ %10, %8 ]
switch i32 %4, label %62 [
i32 0, label %6
i32 1, label %17
i32 2, label %23
i32 3, label %30
i32 4, label %36
i32 5, label %41
i32 6, label %46
i32 7, label %50
i32 9, label %56
i32 10, label %58
]
6: ; preds = %3
%7 = load i8, i8* %5
switch i8 %7, label %12 [
i8 32, label %8
i8 45, label %11
i8 43, label %11
]
8: ; preds = %58, %56, %54, %50, %46, %45, %41, %40, %40, %36, %34, %30, %27, %23, %21, %17, %15, %12, %6, %11, %28, %29, %35, %55
%9 = phi i32 [ 1, %11 ], [ 4, %28 ], [ 9, %29 ], [ 9, %35 ], [ 9, %55 ], [ 0, %6 ], [ 2, %12 ], [ 6, %15 ], [ 2, %17 ], [ 6, %21 ], [ 2, %23 ], [ 3, %27 ], [ 3, %30 ], [ 4, %34 ], [ 5, %36 ], [ 10, %40 ], [ 10, %40 ], [ 5, %41 ], [ 9, %45 ], [ 7, %46 ], [ 7, %50 ], [ 4, %54 ], [ 9, %56 ], [ 5, %58 ]
%10 = getelementptr inbounds i8, i8* %5, i64 1
br label %3
11: ; preds = %6, %6
br label %8
12: ; preds = %6
%13 = add i8 %7, -48
%14 = icmp ult i8 %13, 10
br i1 %14, label %8, label %15
15: ; preds = %12
%16 = icmp eq i8 %7, 46
br i1 %16, label %8, label %62
17: ; preds = %3
%18 = load i8, i8* %5
%19 = add i8 %18, -48
%20 = icmp ult i8 %19, 10
br i1 %20, label %8, label %21
21: ; preds = %17
%22 = icmp eq i8 %18, 46
br i1 %22, label %8, label %62
23: ; preds = %3
%24 = load i8, i8* %5
%25 = add i8 %24, -48
%26 = icmp ult i8 %25, 10
br i1 %26, label %8, label %27
27: ; preds = %23
switch i8 %24, label %64 [
i8 46, label %8
i8 101, label %28
i8 32, label %29
i8 0, label %62
]
28: ; preds = %27
br label %8
29: ; preds = %27
br label %8
30: ; preds = %3
%31 = load i8, i8* %5
%32 = add i8 %31, -48
%33 = icmp ult i8 %32, 10
br i1 %33, label %8, label %34
34: ; preds = %30
switch i8 %31, label %64 [
i8 0, label %62
i8 101, label %8
i8 32, label %35
]
35: ; preds = %34
br label %8
36: ; preds = %3
%37 = load i8, i8* %5
%38 = add i8 %37, -48
%39 = icmp ult i8 %38, 10
br i1 %39, label %8, label %40
40: ; preds = %36
switch i8 %37, label %62 [
i8 43, label %8
i8 45, label %8
]
41: ; preds = %3
%42 = load i8, i8* %5
%43 = add i8 %42, -48
%44 = icmp ult i8 %43, 10
br i1 %44, label %8, label %45
45: ; preds = %41
switch i8 %42, label %64 [
i8 32, label %8
i8 0, label %62
]
46: ; preds = %3
%47 = load i8, i8* %5
%48 = add i8 %47, -48
%49 = icmp ult i8 %48, 10
br i1 %49, label %8, label %62
50: ; preds = %3
%51 = load i8, i8* %5
%52 = add i8 %51, -48
%53 = icmp ult i8 %52, 10
br i1 %53, label %8, label %54
54: ; preds = %50
switch i8 %51, label %64 [
i8 101, label %8
i8 32, label %55
i8 0, label %62
]
55: ; preds = %54
br label %8
56: ; preds = %3
%57 = load i8, i8* %5
switch i8 %57, label %64 [
i8 32, label %8
i8 0, label %62
]
58: ; preds = %3
%59 = load i8, i8* %5
%60 = add i8 %59, -48
%61 = icmp ult i8 %60, 10
br i1 %61, label %8, label %62
62: ; preds = %15, %21, %27, %34, %40, %45, %46, %54, %56, %58, %3
%63 = phi i32 [ 0, %3 ], [ 0, %58 ], [ 1, %56 ], [ 1, %54 ], [ 0, %46 ], [ 1, %45 ], [ 0, %40 ], [ 1, %34 ], [ 1, %27 ], [ 0, %21 ], [ 0, %15 ]
br label %64
64: ; preds = %56, %54, %45, %34, %27, %62
%65 = phi i32 [ %63, %62 ], [ 0, %27 ], [ 0, %34 ], [ 0, %45 ], [ 0, %54 ], [ 0, %56 ]
ret i32 %65
}