#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 */
unsigned short **__ctype_b_loc();
int isNumber(char const *z, int *realnum) {
  unsigned short const **tmp;
  unsigned short const **tmp___0;
  unsigned short const **tmp___1;
  unsigned short const **tmp___2;
  unsigned short const **tmp___3;
  unsigned short const **tmp___4;
  char __cil_tmp9;
  int __cil_tmp10;
  char __cil_tmp11;
  int __cil_tmp12;
  char __cil_tmp13;
  int __cil_tmp14;
  unsigned short const *__cil_tmp15;
  unsigned short const *__cil_tmp16;
  unsigned short __cil_tmp17;
  int __cil_tmp18;
  char __cil_tmp19;
  int __cil_tmp20;
  unsigned short const *__cil_tmp21;
  unsigned short const *__cil_tmp22;
  unsigned short __cil_tmp23;
  int __cil_tmp24;
  char __cil_tmp25;
  int __cil_tmp26;
  char __cil_tmp27;
  int __cil_tmp28;
  unsigned short const *__cil_tmp29;
  unsigned short const *__cil_tmp30;
  unsigned short __cil_tmp31;
  int __cil_tmp32;
  char __cil_tmp33;
  int __cil_tmp34;
  unsigned short const *__cil_tmp35;
  unsigned short const *__cil_tmp36;
  unsigned short __cil_tmp37;
  int __cil_tmp38;
  char __cil_tmp39;
  int __cil_tmp40;
  char __cil_tmp41;
  int __cil_tmp42;
  char __cil_tmp43;
  int __cil_tmp44;
  char __cil_tmp45;
  int __cil_tmp46;
  char __cil_tmp47;
  int __cil_tmp48;
  unsigned short const *__cil_tmp49;
  unsigned short const *__cil_tmp50;
  unsigned short __cil_tmp51;
  int __cil_tmp52;
  char __cil_tmp53;
  int __cil_tmp54;
  unsigned short const *__cil_tmp55;
  unsigned short const *__cil_tmp56;
  unsigned short __cil_tmp57;
  int __cil_tmp58;
  char __cil_tmp59;
  int __cil_tmp60;
  {
    {
      __cil_tmp9 = *z;
      __cil_tmp10 = (int const)__cil_tmp9;
      if (__cil_tmp10 == 45) {
        z = z + 1;
      } else {
        {
          __cil_tmp11 = *z;
          __cil_tmp12 = (int const)__cil_tmp11;
          if (__cil_tmp12 == 43) {
            z = z + 1;
          } else {
          }
        }
      }
    }
    { tmp = __ctype_b_loc(); }
    {
      __cil_tmp13 = *z;
      __cil_tmp14 = (int)__cil_tmp13;
      __cil_tmp15 = *tmp;
      __cil_tmp16 = __cil_tmp15 + __cil_tmp14;
      __cil_tmp17 = *__cil_tmp16;
      __cil_tmp18 = (int const)__cil_tmp17;
      if (__cil_tmp18 & 2048) {
      } else {
        return (0);
      }
    }
    z = z + 1;
    if (realnum) {
      *realnum = 0;
    } else {
    }
    {
      while (1) {
      while_0_continue:;
        { tmp___0 = __ctype_b_loc(); }
        {
          __cil_tmp19 = *z;
          __cil_tmp20 = (int)__cil_tmp19;
          __cil_tmp21 = *tmp___0;
          __cil_tmp22 = __cil_tmp21 + __cil_tmp20;
          __cil_tmp23 = *__cil_tmp22;
          __cil_tmp24 = (int const)__cil_tmp23;
          if (__cil_tmp24 & 2048) {
          } else {
            goto while_0_break;
          }
        }
        z = z + 1;
      }
    while_0_break:;
    }
    {
      __cil_tmp25 = *z;
      __cil_tmp26 = (int const)__cil_tmp25;
      if (__cil_tmp26 == 46) {
        {
          z = z + 1;
          tmp___1 = __ctype_b_loc();
        }
        {
          __cil_tmp27 = *z;
          __cil_tmp28 = (int)__cil_tmp27;
          __cil_tmp29 = *tmp___1;
          __cil_tmp30 = __cil_tmp29 + __cil_tmp28;
          __cil_tmp31 = *__cil_tmp30;
          __cil_tmp32 = (int const)__cil_tmp31;
          if (__cil_tmp32 & 2048) {
          } else {
            return (0);
          }
        }
        {
          while (1) {
          while_1_continue:;
            { tmp___2 = __ctype_b_loc(); }
            {
              __cil_tmp33 = *z;
              __cil_tmp34 = (int)__cil_tmp33;
              __cil_tmp35 = *tmp___2;
              __cil_tmp36 = __cil_tmp35 + __cil_tmp34;
              __cil_tmp37 = *__cil_tmp36;
              __cil_tmp38 = (int const)__cil_tmp37;
              if (__cil_tmp38 & 2048) {
              } else {
                goto while_1_break;
              }
            }
            z = z + 1;
          }
        while_1_break:;
        }
        if (realnum) {
          *realnum = 1;
        } else {
        }
      } else {
      }
    }
    {
      __cil_tmp39 = *z;
      __cil_tmp40 = (int const)__cil_tmp39;
      if (__cil_tmp40 == 101) {
        goto _L;
      } else {
        {
          __cil_tmp41 = *z;
          __cil_tmp42 = (int const)__cil_tmp41;
          if (__cil_tmp42 == 69) {
          _L:
            z = z + 1;
            {
              __cil_tmp43 = *z;
              __cil_tmp44 = (int const)__cil_tmp43;
              if (__cil_tmp44 == 43) {
                z = z + 1;
              } else {
                {
                  __cil_tmp45 = *z;
                  __cil_tmp46 = (int const)__cil_tmp45;
                  if (__cil_tmp46 == 45) {
                    z = z + 1;
                  } else {
                  }
                }
              }
            }
            { tmp___3 = __ctype_b_loc(); }
            {
              __cil_tmp47 = *z;
              __cil_tmp48 = (int)__cil_tmp47;
              __cil_tmp49 = *tmp___3;
              __cil_tmp50 = __cil_tmp49 + __cil_tmp48;
              __cil_tmp51 = *__cil_tmp50;
              __cil_tmp52 = (int const)__cil_tmp51;
              if (__cil_tmp52 & 2048) {
              } else {
                return (0);
              }
            }
            {
              while (1) {
              while_2_continue:;
                { tmp___4 = __ctype_b_loc(); }
                {
                  __cil_tmp53 = *z;
                  __cil_tmp54 = (int)__cil_tmp53;
                  __cil_tmp55 = *tmp___4;
                  __cil_tmp56 = __cil_tmp55 + __cil_tmp54;
                  __cil_tmp57 = *__cil_tmp56;
                  __cil_tmp58 = (int const)__cil_tmp57;
                  if (__cil_tmp58 & 2048) {
                  } else {
                    goto while_2_break;
                  }
                }
                z = z + 1;
              }
            while_2_break:;
            }
            if (realnum) {
              *realnum = 1;
            } else {
            }
          } else {
          }
        }
      }
    }
    {
      __cil_tmp59 = *z;
      __cil_tmp60 = (int const)__cil_tmp59;
      return (__cil_tmp60 == 0);
    }
  }
}


x86 assembly (clang, -O0):
<isNumber>:
push   %rbp
mov    %rsp,%rbp
sub    $0x150,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x49(%rbp)
movsbl -0x49(%rbp),%eax
mov    %eax,-0x50(%rbp)
cmpl   $0x2d,-0x50(%rbp)
jne    114e <isNumber+0x3e>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    1183 <isNumber+0x73>
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x51(%rbp)
movsbl -0x51(%rbp),%eax
mov    %eax,-0x58(%rbp)
cmpl   $0x2b,-0x58(%rbp)
jne    1179 <isNumber+0x69>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    117e <isNumber+0x6e>
jmp    117e <isNumber+0x6e>
jmp    1183 <isNumber+0x73>
mov    $0x0,%al
call   1030 <__ctype_b_loc@plt>
mov    %rax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x59(%rbp)
movsbl -0x59(%rbp),%eax
mov    %eax,-0x60(%rbp)
mov    -0x20(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x68(%rbp)
mov    -0x68(%rbp),%rax
movslq -0x60(%rbp),%rcx
shl    $0x1,%rcx
add    %rcx,%rax
mov    %rax,-0x70(%rbp)
mov    -0x70(%rbp),%rax
mov    (%rax),%ax
mov    %ax,-0x72(%rbp)
movzwl -0x72(%rbp),%eax
mov    %eax,-0x78(%rbp)
mov    -0x78(%rbp),%eax
and    $0x800,%eax
cmp    $0x0,%eax
je     11e4 <isNumber+0xd4>
jmp    11f0 <isNumber+0xe0>
movl   $0x0,-0x4(%rbp)
jmp    16ae <isNumber+0x59e>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
cmpq   $0x0,-0x18(%rbp)
je     1216 <isNumber+0x106>
mov    -0x18(%rbp),%rax
movl   $0x0,(%rax)
jmp    121b <isNumber+0x10b>
jmp    121b <isNumber+0x10b>
jmp    1220 <isNumber+0x110>
jmp    1225 <isNumber+0x115>
mov    $0x0,%al
call   1030 <__ctype_b_loc@plt>
mov    %rax,-0x28(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x79(%rbp)
movsbl -0x79(%rbp),%eax
mov    %eax,-0x80(%rbp)
mov    -0x28(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x88(%rbp)
mov    -0x88(%rbp),%rax
movslq -0x80(%rbp),%rcx
shl    $0x1,%rcx
add    %rcx,%rax
mov    %rax,-0x90(%rbp)
mov    -0x90(%rbp),%rax
mov    (%rax),%ax
mov    %ax,-0x92(%rbp)
movzwl -0x92(%rbp),%eax
mov    %eax,-0x98(%rbp)
mov    -0x98(%rbp),%eax
and    $0x800,%eax
cmp    $0x0,%eax
je     129e <isNumber+0x18e>
jmp    12a3 <isNumber+0x193>
jmp    12b4 <isNumber+0x1a4>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    1220 <isNumber+0x110>
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x99(%rbp)
movsbl -0x99(%rbp),%eax
mov    %eax,-0xa0(%rbp)
cmpl   $0x2e,-0xa0(%rbp)
jne    1440 <isNumber+0x330>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    $0x0,%al
call   1030 <__ctype_b_loc@plt>
mov    %rax,-0x30(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0xa1(%rbp)
movsbl -0xa1(%rbp),%eax
mov    %eax,-0xa8(%rbp)
mov    -0x30(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0xb0(%rbp)
mov    -0xb0(%rbp),%rax
movslq -0xa8(%rbp),%rcx
shl    $0x1,%rcx
add    %rcx,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ax
mov    %ax,-0xba(%rbp)
movzwl -0xba(%rbp),%eax
mov    %eax,-0xc0(%rbp)
mov    -0xc0(%rbp),%eax
and    $0x800,%eax
cmp    $0x0,%eax
je     136b <isNumber+0x25b>
jmp    1377 <isNumber+0x267>
movl   $0x0,-0x4(%rbp)
jmp    16ae <isNumber+0x59e>
jmp    137c <isNumber+0x26c>
jmp    1381 <isNumber+0x271>
mov    $0x0,%al
call   1030 <__ctype_b_loc@plt>
mov    %rax,-0x38(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0xc1(%rbp)
movsbl -0xc1(%rbp),%eax
mov    %eax,-0xc8(%rbp)
mov    -0x38(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0xd0(%rbp)
mov    -0xd0(%rbp),%rax
movslq -0xc8(%rbp),%rcx
shl    $0x1,%rcx
add    %rcx,%rax
mov    %rax,-0xd8(%rbp)
mov    -0xd8(%rbp),%rax
mov    (%rax),%ax
mov    %ax,-0xda(%rbp)
movzwl -0xda(%rbp),%eax
mov    %eax,-0xe0(%rbp)
mov    -0xe0(%rbp),%eax
and    $0x800,%eax
cmp    $0x0,%eax
je     1406 <isNumber+0x2f6>
jmp    140b <isNumber+0x2fb>
jmp    141c <isNumber+0x30c>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    137c <isNumber+0x26c>
cmpq   $0x0,-0x18(%rbp)
je     1436 <isNumber+0x326>
mov    -0x18(%rbp),%rax
movl   $0x1,(%rax)
jmp    143b <isNumber+0x32b>
jmp    143b <isNumber+0x32b>
jmp    1445 <isNumber+0x335>
jmp    1445 <isNumber+0x335>
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0xe1(%rbp)
movsbl -0xe1(%rbp),%eax
mov    %eax,-0xe8(%rbp)
cmpl   $0x65,-0xe8(%rbp)
jne    1470 <isNumber+0x360>
jmp    149b <isNumber+0x38b>
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0xe9(%rbp)
movsbl -0xe9(%rbp),%eax
mov    %eax,-0xf0(%rbp)
cmpl   $0x45,-0xf0(%rbp)
jne    1679 <isNumber+0x569>
jmp    149b <isNumber+0x38b>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0xf1(%rbp)
movsbl -0xf1(%rbp),%eax
mov    %eax,-0xf8(%rbp)
cmpl   $0x2b,-0xf8(%rbp)
jne    14de <isNumber+0x3ce>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    151f <isNumber+0x40f>
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0xf9(%rbp)
movsbl -0xf9(%rbp),%eax
mov    %eax,-0x100(%rbp)
cmpl   $0x2d,-0x100(%rbp)
jne    1515 <isNumber+0x405>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    151a <isNumber+0x40a>
jmp    151a <isNumber+0x40a>
jmp    151f <isNumber+0x40f>
mov    $0x0,%al
call   1030 <__ctype_b_loc@plt>
mov    %rax,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x101(%rbp)
movsbl -0x101(%rbp),%eax
mov    %eax,-0x108(%rbp)
mov    -0x40(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x110(%rbp)
mov    -0x110(%rbp),%rax
movslq -0x108(%rbp),%rcx
shl    $0x1,%rcx
add    %rcx,%rax
mov    %rax,-0x118(%rbp)
mov    -0x118(%rbp),%rax
mov    (%rax),%ax
mov    %ax,-0x11a(%rbp)
movzwl -0x11a(%rbp),%eax
mov    %eax,-0x120(%rbp)
mov    -0x120(%rbp),%eax
and    $0x800,%eax
cmp    $0x0,%eax
je     15a4 <isNumber+0x494>
jmp    15b0 <isNumber+0x4a0>
movl   $0x0,-0x4(%rbp)
jmp    16ae <isNumber+0x59e>
jmp    15b5 <isNumber+0x4a5>
jmp    15ba <isNumber+0x4aa>
mov    $0x0,%al
call   1030 <__ctype_b_loc@plt>
mov    %rax,-0x48(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x121(%rbp)
movsbl -0x121(%rbp),%eax
mov    %eax,-0x128(%rbp)
mov    -0x48(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x130(%rbp)
mov    -0x130(%rbp),%rax
movslq -0x128(%rbp),%rcx
shl    $0x1,%rcx
add    %rcx,%rax
mov    %rax,-0x138(%rbp)
mov    -0x138(%rbp),%rax
mov    (%rax),%ax
mov    %ax,-0x13a(%rbp)
movzwl -0x13a(%rbp),%eax
mov    %eax,-0x140(%rbp)
mov    -0x140(%rbp),%eax
and    $0x800,%eax
cmp    $0x0,%eax
je     163f <isNumber+0x52f>
jmp    1644 <isNumber+0x534>
jmp    1655 <isNumber+0x545>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    15b5 <isNumber+0x4a5>
cmpq   $0x0,-0x18(%rbp)
je     166f <isNumber+0x55f>
mov    -0x18(%rbp),%rax
movl   $0x1,(%rax)
jmp    1674 <isNumber+0x564>
jmp    1674 <isNumber+0x564>
jmp    167e <isNumber+0x56e>
jmp    167e <isNumber+0x56e>
jmp    1683 <isNumber+0x573>
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x141(%rbp)
movsbl -0x141(%rbp),%eax
mov    %eax,-0x148(%rbp)
cmpl   $0x0,-0x148(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x150,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<isNumber>:
push   %rbp
push   %r14
push   %rbx
mov    %rsi,%r14
mov    %rdi,%rbp
mov    (%rdi),%al
cmp    $0x2b,%al
je     1124 <isNumber+0x14>
cmp    $0x2d,%al
jne    1128 <isNumber+0x18>
add    $0x1,%rbp
xor    %ebx,%ebx
xor    %eax,%eax
call   1030 <__ctype_b_loc@plt>
movsbq 0x0(%rbp),%rcx
mov    (%rax),%rax
testb  $0x8,0x1(%rax,%rcx,2)
je     1230 <isNumber+0x120>
test   %r14,%r14
je     1150 <isNumber+0x40>
movl   $0x0,(%r14)
mov    %rbp,%rbx
add    $0x1,%rbp
xor    %eax,%eax
call   1030 <__ctype_b_loc@plt>
movsbq 0x1(%rbx),%rcx
mov    (%rax),%rax
testb  $0x8,0x1(%rax,%rcx,2)
jne    1150 <isNumber+0x40>
cmp    $0x2e,%cl
jne    11bc <isNumber+0xac>
xor    %ebx,%ebx
xor    %eax,%eax
call   1030 <__ctype_b_loc@plt>
movsbq 0x1(%rbp),%rcx
mov    (%rax),%rax
testb  $0x8,0x1(%rax,%rcx,2)
je     1230 <isNumber+0x120>
xchg   %ax,%ax
mov    %rbp,%rbx
add    $0x1,%rbp
xor    %eax,%eax
call   1030 <__ctype_b_loc@plt>
movsbq 0x1(%rbx),%rcx
mov    (%rax),%rax
testb  $0x8,0x1(%rax,%rcx,2)
jne    1190 <isNumber+0x80>
test   %r14,%r14
je     11bc <isNumber+0xac>
movl   $0x1,(%r14)
mov    0x0(%rbp),%cl
mov    %ecx,%eax
or     $0x20,%al
cmp    $0x65,%al
jne    1229 <isNumber+0x119>
mov    0x1(%rbp),%al
cmp    $0x2d,%al
je     11cf <isNumber+0xbf>
cmp    $0x2b,%al
jne    11d5 <isNumber+0xc5>
add    $0x2,%rbp
jmp    11d9 <isNumber+0xc9>
add    $0x1,%rbp
xor    %ebx,%ebx
xor    %eax,%eax
call   1030 <__ctype_b_loc@plt>
movsbq 0x0(%rbp),%rcx
mov    (%rax),%rax
testb  $0x8,0x1(%rax,%rcx,2)
je     1230 <isNumber+0x120>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
xor    %eax,%eax
call   1030 <__ctype_b_loc@plt>
movsbq 0x0(%rbp),%rcx
mov    (%rax),%rax
add    $0x1,%rbp
testb  $0x8,0x1(%rax,%rcx,2)
jne    1200 <isNumber+0xf0>
test   %r14,%r14
je     1229 <isNumber+0x119>
movl   $0x1,(%r14)
mov    -0x1(%rbp),%cl
xor    %ebx,%ebx
test   %cl,%cl
sete   %bl
mov    %ebx,%eax
pop    %rbx
pop    %r14
pop    %rbp
ret

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

LLVM IR (-O2):
define i32 @isNumber(i8* nocapture %0, i32* writeonly %1) {
%3 = load i8, i8* %0
switch i8 %3, label %8 [
i8 45, label %4
i8 43, label %6
]
4: ; preds = %2
%5 = getelementptr inbounds i8, i8* %0, i64 1
br label %8
6: ; preds = %2
%7 = getelementptr inbounds i8, i8* %0, i64 1
br label %8
8: ; preds = %2, %6, %4
%9 = phi i8* [ %5, %4 ], [ %7, %6 ], [ %0, %2 ]
%10 = tail call i16** (...) @__ctype_b_loc()
%11 = load i8, i8* %9
%12 = load i16*, i16** %10
%13 = sext i8 %11 to i64
%14 = getelementptr inbounds i16, i16* %12, i64 %13
%15 = load i16, i16* %14
%16 = and i16 %15, 2048
%17 = icmp eq i16 %16, 0
br i1 %17, label %97, label %18
18: ; preds = %8
%19 = icmp eq i32* %1, null
br i1 %19, label %21, label %20
20: ; preds = %18
store i32 0, i32* %1
br label %21
21: ; preds = %18, %20
br label %22
22: ; preds = %21, %22
%23 = phi i8* [ %24, %22 ], [ %9, %21 ]
%24 = getelementptr inbounds i8, i8* %23, i64 1
%25 = tail call i16** (...) @__ctype_b_loc()
%26 = load i8, i8* %24
%27 = load i16*, i16** %25
%28 = sext i8 %26 to i64
%29 = getelementptr inbounds i16, i16* %27, i64 %28
%30 = load i16, i16* %29
%31 = and i16 %30, 2048
%32 = icmp eq i16 %31, 0
br i1 %32, label %33, label %22
33: ; preds = %22
%34 = icmp eq i8 %26, 46
br i1 %34, label %35, label %59
35: ; preds = %33
%36 = getelementptr inbounds i8, i8* %23, i64 2
%37 = tail call i16** (...) @__ctype_b_loc()
%38 = load i8, i8* %36
%39 = load i16*, i16** %37
%40 = sext i8 %38 to i64
%41 = getelementptr inbounds i16, i16* %39, i64 %40
%42 = load i16, i16* %41
%43 = and i16 %42, 2048
%44 = icmp eq i16 %43, 0
br i1 %44, label %97, label %45
45: ; preds = %35, %45
%46 = phi i8* [ %55, %45 ], [ %36, %35 ]
%47 = tail call i16** (...) @__ctype_b_loc()
%48 = load i8, i8* %46
%49 = load i16*, i16** %47
%50 = sext i8 %48 to i64
%51 = getelementptr inbounds i16, i16* %49, i64 %50
%52 = load i16, i16* %51
%53 = and i16 %52, 2048
%54 = icmp eq i16 %53, 0
%55 = getelementptr inbounds i8, i8* %46, i64 1
br i1 %54, label %56, label %45
56: ; preds = %45
br i1 %19, label %59, label %57
57: ; preds = %56
store i32 1, i32* %1
%58 = load i8, i8* %46
br label %59
59: ; preds = %33, %57, %56
%60 = phi i8 [ %58, %57 ], [ %48, %56 ], [ %26, %33 ]
%61 = phi i8* [ %46, %57 ], [ %46, %56 ], [ %24, %33 ]
switch i8 %60, label %93 [
i8 101, label %62
i8 69, label %62
]
62: ; preds = %59, %59
%63 = getelementptr inbounds i8, i8* %61, i64 1
%64 = load i8, i8* %63
switch i8 %64, label %69 [
i8 43, label %65
i8 45, label %67
]
65: ; preds = %62
%66 = getelementptr inbounds i8, i8* %61, i64 2
br label %69
67: ; preds = %62
%68 = getelementptr inbounds i8, i8* %61, i64 2
br label %69
69: ; preds = %62, %67, %65
%70 = phi i8* [ %66, %65 ], [ %68, %67 ], [ %63, %62 ]
%71 = tail call i16** (...) @__ctype_b_loc()
%72 = load i8, i8* %70
%73 = load i16*, i16** %71
%74 = sext i8 %72 to i64
%75 = getelementptr inbounds i16, i16* %73, i64 %74
%76 = load i16, i16* %75
%77 = and i16 %76, 2048
%78 = icmp eq i16 %77, 0
br i1 %78, label %97, label %79
79: ; preds = %69, %79
%80 = phi i8* [ %89, %79 ], [ %70, %69 ]
%81 = tail call i16** (...) @__ctype_b_loc()
%82 = load i8, i8* %80
%83 = load i16*, i16** %81
%84 = sext i8 %82 to i64
%85 = getelementptr inbounds i16, i16* %83, i64 %84
%86 = load i16, i16* %85
%87 = and i16 %86, 2048
%88 = icmp eq i16 %87, 0
%89 = getelementptr inbounds i8, i8* %80, i64 1
br i1 %88, label %90, label %79
90: ; preds = %79
br i1 %19, label %93, label %91
91: ; preds = %90
store i32 1, i32* %1
%92 = load i8, i8* %80
br label %93
93: ; preds = %59, %90, %91
%94 = phi i8 [ %92, %91 ], [ %82, %90 ], [ %60, %59 ]
%95 = icmp eq i8 %94, 0
%96 = zext i1 %95 to i32
br label %97
97: ; preds = %69, %35, %8, %93
%98 = phi i32 [ %96, %93 ], [ 0, %8 ], [ 0, %35 ], [ 0, %69 ]
ret i32 %98
}