#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 parse_bool(char *source) {
  size_t i = 0;
  while (source[i] == ' ' || source[i] == '\t') {
    i++;
  }
  if (source[i] == 't') {
    i++;
    if (source[i] == 'r' && source[i + 1] == 'u' && source[i + 2] == 'e') {
      i += 3;
    }
    while (source[i] == ' ' || source[i] == '\t') {
      i++;
    }
    if (source[i] == '\n' || source[i] == '\0') {
      return 1;
    } else {
      return -1;
    }
  } else if (source[i] == 'T') {
    i++;
    if (source[i] == 'r' && source[i + 1] == 'u' && source[i + 2] == 'e') {
      i += 3;
    } else if (source[i] == 'R' && source[i + 1] == 'U' &&
               source[i + 2] == 'E') {
      i += 3;
    }
    while (source[i] == ' ' || source[i] == '\t') {
      i++;
    }
    if (source[i] == '\n' || source[i] == '\0') {
      return 1;
    } else {
      return -1;
    }
  } else if (source[i] == 'y') {
    i++;
    if (source[i] == 'e' && source[i + 1] == 's') {
      i += 2;
    }
    while (source[i] == ' ' || source[i] == '\t') {
      i++;
    }
    if (source[i] == '\n' || source[i] == '\0') {
      return 1;
    } else {
      return -1;
    }
  } else if (source[i] == 'Y') {
    i++;
    if (source[i] == 'e' && source[i + 1] == 's') {
      i += 2;
    } else if (source[i] == 'E' && source[i + 1] == 'S') {
      i += 2;
    }
    while (source[i] == ' ' || source[i] == '\t') {
      i++;
    }
    if (source[i] == '\n' || source[i] == '\0') {
      return 1;
    } else {
      return -1;
    }
  } else if (source[i] == '1') {
    i++;
    while (source[i] == ' ' || source[i] == '\t') {
      i++;
    }
    if (source[i] == '\n' || source[i] == '\0') {
      return 1;
    } else {
      return -1;
    }
  } else if (source[i] == 'f') {
    i++;
    if (source[i] == 'a' && source[i + 1] == 'l' && source[i + 2] == 's' &&
        source[i + 3] == 'e') {
      i += 4;
    }
    while (source[i] == ' ' || source[i] == '\t') {
      i++;
    }
    if (source[i] == '\n' || source[i] == '\0') {
      return 0;
    } else {
      return -1;
    }
  } else if (source[i] == 'F') {
    i++;
    if (source[i] == 'a' && source[i + 1] == 'l' && source[i + 2] == 's' &&
        source[i + 3] == 'e') {
      i += 4;
    } else if (source[i] == 'A' && source[i + 1] == 'L' &&
               source[i + 2] == 'S' && source[i + 3] == 'E') {
      i += 4;
    }
    while (source[i] == ' ' || source[i] == '\t') {
      i++;
    }
    if (source[i] == '\n' || source[i] == '\0') {
      return 0;
    } else {
      return -1;
    }
  } else if (source[i] == 'n') {
    i++;
    if (source[i] == 'o') {
      i++;
    }
    while (source[i] == ' ' || source[i] == '\t') {
      i++;
    }
    if (source[i] == '\n' || source[i] == '\0') {
      return 0;
    } else {
      return -1;
    }
  } else if (source[i] == 'N') {
    i++;
    if (source[i] == 'o' || source[i] == 'O') {
      i++;
    }
    while (source[i] == ' ' || source[i] == '\t') {
      i++;
    }
    if (source[i] == '\n' || source[i] == '\0') {
      return 0;
    } else {
      return -1;
    }
  } else if (source[i] == '0') {
    i++;
    while (source[i] == ' ' || source[i] == '\t') {
      i++;
    }
    if (source[i] == '\n' || source[i] == '\0') {
      return 0;
    } else {
      return -1;
    }
  } else {
    return -1;
  }
}


x86 assembly (clang, -O0):
<parse_bool>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
movq   $0x0,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x19(%rbp)
je     113f <parse_bool+0x3f>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x9,%eax
sete   %al
mov    %al,-0x19(%rbp)
mov    -0x19(%rbp),%al
test   $0x1,%al
jne    114f <parse_bool+0x4f>
jmp    1160 <parse_bool+0x60>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    1110 <parse_bool+0x10>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x74,%eax
jne    1265 <parse_bool+0x165>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x72,%eax
jne    11ce <parse_bool+0xce>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl 0x1(%rax,%rcx,1),%eax
cmp    $0x75,%eax
jne    11ce <parse_bool+0xce>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl 0x2(%rax,%rcx,1),%eax
cmp    $0x65,%eax
jne    11ce <parse_bool+0xce>
mov    -0x18(%rbp),%rax
add    $0x3,%rax
mov    %rax,-0x18(%rbp)
jmp    11d3 <parse_bool+0xd3>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x1a(%rbp)
je     1202 <parse_bool+0x102>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x9,%eax
sete   %al
mov    %al,-0x1a(%rbp)
mov    -0x1a(%rbp),%al
test   $0x1,%al
jne    1212 <parse_bool+0x112>
jmp    1223 <parse_bool+0x123>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    11d3 <parse_bool+0xd3>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xa,%eax
je     124d <parse_bool+0x14d>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
jne    1259 <parse_bool+0x159>
movl   $0x1,-0x4(%rbp)
jmp    1bb7 <parse_bool+0xab7>
movl   $0xffffffff,-0x4(%rbp)
jmp    1bb7 <parse_bool+0xab7>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x54,%eax
jne    13c1 <parse_bool+0x2c1>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x72,%eax
jne    12d8 <parse_bool+0x1d8>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl 0x1(%rax,%rcx,1),%eax
cmp    $0x75,%eax
jne    12d8 <parse_bool+0x1d8>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl 0x2(%rax,%rcx,1),%eax
cmp    $0x65,%eax
jne    12d8 <parse_bool+0x1d8>
mov    -0x18(%rbp),%rax
add    $0x3,%rax
mov    %rax,-0x18(%rbp)
jmp    132a <parse_bool+0x22a>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x52,%eax
jne    1325 <parse_bool+0x225>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl 0x1(%rax,%rcx,1),%eax
cmp    $0x55,%eax
jne    1325 <parse_bool+0x225>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl 0x2(%rax,%rcx,1),%eax
cmp    $0x45,%eax
jne    1325 <parse_bool+0x225>
mov    -0x18(%rbp),%rax
add    $0x3,%rax
mov    %rax,-0x18(%rbp)
jmp    132a <parse_bool+0x22a>
jmp    132f <parse_bool+0x22f>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x1b(%rbp)
je     135e <parse_bool+0x25e>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x9,%eax
sete   %al
mov    %al,-0x1b(%rbp)
mov    -0x1b(%rbp),%al
test   $0x1,%al
jne    136e <parse_bool+0x26e>
jmp    137f <parse_bool+0x27f>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    132f <parse_bool+0x22f>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xa,%eax
je     13a9 <parse_bool+0x2a9>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
jne    13b5 <parse_bool+0x2b5>
movl   $0x1,-0x4(%rbp)
jmp    1bb7 <parse_bool+0xab7>
movl   $0xffffffff,-0x4(%rbp)
jmp    1bb7 <parse_bool+0xab7>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x79,%eax
jne    14b0 <parse_bool+0x3b0>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x65,%eax
jne    1419 <parse_bool+0x319>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl 0x1(%rax,%rcx,1),%eax
cmp    $0x73,%eax
jne    1419 <parse_bool+0x319>
mov    -0x18(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x18(%rbp)
jmp    141e <parse_bool+0x31e>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x1c(%rbp)
je     144d <parse_bool+0x34d>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x9,%eax
sete   %al
mov    %al,-0x1c(%rbp)
mov    -0x1c(%rbp),%al
test   $0x1,%al
jne    145d <parse_bool+0x35d>
jmp    146e <parse_bool+0x36e>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    141e <parse_bool+0x31e>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xa,%eax
je     1498 <parse_bool+0x398>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
jne    14a4 <parse_bool+0x3a4>
movl   $0x1,-0x4(%rbp)
jmp    1bb7 <parse_bool+0xab7>
movl   $0xffffffff,-0x4(%rbp)
jmp    1bb7 <parse_bool+0xab7>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x59,%eax
jne    15e0 <parse_bool+0x4e0>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x65,%eax
jne    150d <parse_bool+0x40d>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl 0x1(%rax,%rcx,1),%eax
cmp    $0x73,%eax
jne    150d <parse_bool+0x40d>
mov    -0x18(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x18(%rbp)
jmp    1549 <parse_bool+0x449>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x45,%eax
jne    1544 <parse_bool+0x444>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl 0x1(%rax,%rcx,1),%eax
cmp    $0x53,%eax
jne    1544 <parse_bool+0x444>
mov    -0x18(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x18(%rbp)
jmp    1549 <parse_bool+0x449>
jmp    154e <parse_bool+0x44e>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x1d(%rbp)
je     157d <parse_bool+0x47d>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x9,%eax
sete   %al
mov    %al,-0x1d(%rbp)
mov    -0x1d(%rbp),%al
test   $0x1,%al
jne    158d <parse_bool+0x48d>
jmp    159e <parse_bool+0x49e>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    154e <parse_bool+0x44e>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xa,%eax
je     15c8 <parse_bool+0x4c8>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
jne    15d4 <parse_bool+0x4d4>
movl   $0x1,-0x4(%rbp)
jmp    1bb7 <parse_bool+0xab7>
movl   $0xffffffff,-0x4(%rbp)
jmp    1bb7 <parse_bool+0xab7>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x31,%eax
jne    1693 <parse_bool+0x593>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x1e(%rbp)
je     1630 <parse_bool+0x530>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x9,%eax
sete   %al
mov    %al,-0x1e(%rbp)
mov    -0x1e(%rbp),%al
test   $0x1,%al
jne    1640 <parse_bool+0x540>
jmp    1651 <parse_bool+0x551>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    1601 <parse_bool+0x501>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xa,%eax
je     167b <parse_bool+0x57b>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
jne    1687 <parse_bool+0x587>
movl   $0x1,-0x4(%rbp)
jmp    1bb7 <parse_bool+0xab7>
movl   $0xffffffff,-0x4(%rbp)
jmp    1bb7 <parse_bool+0xab7>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x66,%eax
jne    17ae <parse_bool+0x6ae>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x61,%eax
jne    1717 <parse_bool+0x617>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl 0x1(%rax,%rcx,1),%eax
cmp    $0x6c,%eax
jne    1717 <parse_bool+0x617>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl 0x2(%rax,%rcx,1),%eax
cmp    $0x73,%eax
jne    1717 <parse_bool+0x617>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl 0x3(%rax,%rcx,1),%eax
cmp    $0x65,%eax
jne    1717 <parse_bool+0x617>
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
jmp    171c <parse_bool+0x61c>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x1f(%rbp)
je     174b <parse_bool+0x64b>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x9,%eax
sete   %al
mov    %al,-0x1f(%rbp)
mov    -0x1f(%rbp),%al
test   $0x1,%al
jne    175b <parse_bool+0x65b>
jmp    176c <parse_bool+0x66c>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    171c <parse_bool+0x61c>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xa,%eax
je     1796 <parse_bool+0x696>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
jne    17a2 <parse_bool+0x6a2>
movl   $0x0,-0x4(%rbp)
jmp    1bb7 <parse_bool+0xab7>
movl   $0xffffffff,-0x4(%rbp)
jmp    1bb7 <parse_bool+0xab7>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x46,%eax
jne    1936 <parse_bool+0x836>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x61,%eax
jne    1837 <parse_bool+0x737>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl 0x1(%rax,%rcx,1),%eax
cmp    $0x6c,%eax
jne    1837 <parse_bool+0x737>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl 0x2(%rax,%rcx,1),%eax
cmp    $0x73,%eax
jne    1837 <parse_bool+0x737>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl 0x3(%rax,%rcx,1),%eax
cmp    $0x65,%eax
jne    1837 <parse_bool+0x737>
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
jmp    189f <parse_bool+0x79f>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x41,%eax
jne    189a <parse_bool+0x79a>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl 0x1(%rax,%rcx,1),%eax
cmp    $0x4c,%eax
jne    189a <parse_bool+0x79a>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl 0x2(%rax,%rcx,1),%eax
cmp    $0x53,%eax
jne    189a <parse_bool+0x79a>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl 0x3(%rax,%rcx,1),%eax
cmp    $0x45,%eax
jne    189a <parse_bool+0x79a>
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
jmp    189f <parse_bool+0x79f>
jmp    18a4 <parse_bool+0x7a4>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x20(%rbp)
je     18d3 <parse_bool+0x7d3>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x9,%eax
sete   %al
mov    %al,-0x20(%rbp)
mov    -0x20(%rbp),%al
test   $0x1,%al
jne    18e3 <parse_bool+0x7e3>
jmp    18f4 <parse_bool+0x7f4>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    18a4 <parse_bool+0x7a4>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xa,%eax
je     191e <parse_bool+0x81e>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
jne    192a <parse_bool+0x82a>
movl   $0x0,-0x4(%rbp)
jmp    1bb7 <parse_bool+0xab7>
movl   $0xffffffff,-0x4(%rbp)
jmp    1bb7 <parse_bool+0xab7>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6e,%eax
jne    1a0f <parse_bool+0x90f>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6f,%eax
jne    1978 <parse_bool+0x878>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    197d <parse_bool+0x87d>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x21(%rbp)
je     19ac <parse_bool+0x8ac>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x9,%eax
sete   %al
mov    %al,-0x21(%rbp)
mov    -0x21(%rbp),%al
test   $0x1,%al
jne    19bc <parse_bool+0x8bc>
jmp    19cd <parse_bool+0x8cd>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    197d <parse_bool+0x87d>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xa,%eax
je     19f7 <parse_bool+0x8f7>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
jne    1a03 <parse_bool+0x903>
movl   $0x0,-0x4(%rbp)
jmp    1bb7 <parse_bool+0xab7>
movl   $0xffffffff,-0x4(%rbp)
jmp    1bb7 <parse_bool+0xab7>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x4e,%eax
jne    1afd <parse_bool+0x9fd>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6f,%eax
je     1a5a <parse_bool+0x95a>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x4f,%eax
jne    1a66 <parse_bool+0x966>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    1a6b <parse_bool+0x96b>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x22(%rbp)
je     1a9a <parse_bool+0x99a>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x9,%eax
sete   %al
mov    %al,-0x22(%rbp)
mov    -0x22(%rbp),%al
test   $0x1,%al
jne    1aaa <parse_bool+0x9aa>
jmp    1abb <parse_bool+0x9bb>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    1a6b <parse_bool+0x96b>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xa,%eax
je     1ae5 <parse_bool+0x9e5>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
jne    1af1 <parse_bool+0x9f1>
movl   $0x0,-0x4(%rbp)
jmp    1bb7 <parse_bool+0xab7>
movl   $0xffffffff,-0x4(%rbp)
jmp    1bb7 <parse_bool+0xab7>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jne    1bb0 <parse_bool+0xab0>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x23(%rbp)
je     1b4d <parse_bool+0xa4d>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x9,%eax
sete   %al
mov    %al,-0x23(%rbp)
mov    -0x23(%rbp),%al
test   $0x1,%al
jne    1b5d <parse_bool+0xa5d>
jmp    1b6e <parse_bool+0xa6e>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    1b1e <parse_bool+0xa1e>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xa,%eax
je     1b98 <parse_bool+0xa98>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
jne    1ba4 <parse_bool+0xaa4>
movl   $0x0,-0x4(%rbp)
jmp    1bb7 <parse_bool+0xab7>
movl   $0xffffffff,-0x4(%rbp)
jmp    1bb7 <parse_bool+0xab7>
movl   $0xffffffff,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<parse_bool>:
mov    $0x1,%esi
mov    $0x2,%ecx
lea    0xeef(%rip),%rdx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movzbl -0x2(%rdi,%rcx,1),%eax
add    $0xf7,%al
cmp    $0x70,%al
ja     1418 <parse_bool+0x318>
movzbl %al,%eax
movslq (%rdx,%rax,4),%rax
add    %rdx,%rax
jmp    *%rax
add    $0x1,%rsi
add    $0x1,%rcx
jmp    1120 <parse_bool+0x20>
add    %rsi,%rdi
lea    0x1075(%rip),%rax
nop
movzbl (%rdi),%ecx
cmp    $0x20,%rcx
ja     1418 <parse_bool+0x318>
movslq (%rax,%rcx,4),%rcx
add    %rax,%rcx
jmp    *%rcx
add    $0x1,%rdi
jmp    1150 <parse_bool+0x50>
add    %rsi,%rdi
lea    0x12e2(%rip),%rax
cs nopw 0x0(%rax,%rax,1)
movzbl (%rdi),%ecx
cmp    $0x20,%rcx
ja     1418 <parse_bool+0x318>
movslq (%rax,%rcx,4),%rcx
add    %rax,%rcx
jmp    *%rcx
add    $0x1,%rdi
jmp    1180 <parse_bool+0x80>
mov    -0x1(%rdi,%rcx,1),%al
cmp    $0x41,%al
je     134c <parse_bool+0x24c>
cmp    $0x61,%al
jne    1367 <parse_bool+0x267>
cmpb   $0x6c,(%rdi,%rcx,1)
jne    1367 <parse_bool+0x267>
mov    $0x65,%dl
cmpb   $0x73,0x1(%rdi,%rcx,1)
je     135b <parse_bool+0x25b>
jmp    1367 <parse_bool+0x267>
mov    -0x1(%rdi,%rcx,1),%al
or     $0x20,%al
cmp    $0x6f,%al
je     11d9 <parse_bool+0xd9>
mov    %rsi,%rcx
add    %rcx,%rdi
lea    0x1065(%rip),%rax
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movzbl (%rdi),%ecx
cmp    $0x20,%rcx
ja     1418 <parse_bool+0x318>
movslq (%rax,%rcx,4),%rcx
add    %rax,%rcx
jmp    *%rcx
add    $0x1,%rdi
jmp    11f0 <parse_bool+0xf0>
mov    -0x1(%rdi,%rcx,1),%al
cmp    $0x45,%al
je     139f <parse_bool+0x29f>
mov    $0x73,%dl
cmp    $0x65,%al
je     13a1 <parse_bool+0x2a1>
jmp    13ac <parse_bool+0x2ac>
cmpb   $0x6f,-0x1(%rdi,%rcx,1)
cmove  %rcx,%rsi
add    %rdi,%rsi
lea    0x1092(%rip),%rcx
nopw   0x0(%rax,%rax,1)
movzbl (%rsi),%eax
cmp    $0x20,%rax
ja     1418 <parse_bool+0x318>
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
add    $0x1,%rsi
jmp    1240 <parse_bool+0x140>
cmpb   $0x72,-0x1(%rdi,%rcx,1)
jne    1276 <parse_bool+0x176>
cmpb   $0x75,(%rdi,%rcx,1)
jne    1276 <parse_bool+0x176>
lea    0x2(%rcx),%rax
cmpb   $0x65,0x1(%rdi,%rcx,1)
cmove  %rax,%rsi
add    %rsi,%rdi
lea    0x13e8(%rip),%rax
movzbl (%rdi),%ecx
cmp    $0x20,%rcx
ja     1418 <parse_bool+0x318>
movslq (%rax,%rcx,4),%rcx
add    %rax,%rcx
jmp    *%rcx
add    $0x1,%rdi
jmp    1280 <parse_bool+0x180>
cmpb   $0x65,-0x1(%rdi,%rcx,1)
jne    12af <parse_bool+0x1af>
lea    0x1(%rcx),%rax
cmpb   $0x73,(%rdi,%rcx,1)
cmove  %rax,%rsi
add    %rsi,%rdi
lea    0x12a7(%rip),%rax
nopl   0x0(%rax)
movzbl (%rdi),%ecx
cmp    $0x20,%rcx
ja     1418 <parse_bool+0x318>
movslq (%rax,%rcx,4),%rcx
add    %rax,%rcx
jmp    *%rcx
add    $0x1,%rdi
jmp    12c0 <parse_bool+0x1c0>
mov    -0x1(%rdi,%rcx,1),%al
cmp    $0x52,%al
je     13d8 <parse_bool+0x2d8>
cmp    $0x72,%al
jne    13ec <parse_bool+0x2ec>
mov    $0x65,%dl
cmpb   $0x75,(%rdi,%rcx,1)
je     13e0 <parse_bool+0x2e0>
jmp    13ec <parse_bool+0x2ec>
cmpb   $0x61,-0x1(%rdi,%rcx,1)
jne    1322 <parse_bool+0x222>
cmpb   $0x6c,(%rdi,%rcx,1)
jne    1322 <parse_bool+0x222>
cmpb   $0x73,0x1(%rdi,%rcx,1)
jne    1322 <parse_bool+0x222>
lea    0x3(%rcx),%rax
cmpb   $0x65,0x2(%rdi,%rcx,1)
cmove  %rax,%rsi
add    %rsi,%rdi
lea    0x10a8(%rip),%rax
nopl   0x0(%rax)
movzbl (%rdi),%ecx
cmp    $0x20,%rcx
ja     1418 <parse_bool+0x318>
movslq (%rax,%rcx,4),%rcx
add    %rax,%rcx
jmp    *%rcx
add    $0x1,%rdi
jmp    1330 <parse_bool+0x230>
cmpb   $0x4c,(%rdi,%rcx,1)
jne    1367 <parse_bool+0x267>
mov    $0x45,%dl
cmpb   $0x53,0x1(%rdi,%rcx,1)
jne    1367 <parse_bool+0x267>
lea    0x3(%rcx),%rax
cmp    %dl,0x2(%rdi,%rcx,1)
cmove  %rax,%rsi
add    %rsi,%rdi
lea    0xfdf(%rip),%rax
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movzbl (%rdi),%ecx
cmp    $0x20,%rcx
ja     1418 <parse_bool+0x318>
movslq (%rax,%rcx,4),%rcx
add    %rax,%rcx
jmp    *%rcx
add    $0x1,%rdi
jmp    1380 <parse_bool+0x280>
xor    %eax,%eax
ret
mov    $0x53,%dl
lea    0x1(%rcx),%rax
cmp    %dl,(%rdi,%rcx,1)
cmove  %rax,%rsi
add    %rsi,%rdi
lea    0x1126(%rip),%rax
cs nopw 0x0(%rax,%rax,1)
movzbl (%rdi),%ecx
cmp    $0x20,%rcx
ja     1418 <parse_bool+0x318>
movslq (%rax,%rcx,4),%rcx
add    %rax,%rcx
jmp    *%rcx
add    $0x1,%rdi
jmp    13c0 <parse_bool+0x2c0>
mov    $0x45,%dl
cmpb   $0x55,(%rdi,%rcx,1)
jne    13ec <parse_bool+0x2ec>
lea    0x2(%rcx),%rax
cmp    %dl,0x1(%rdi,%rcx,1)
cmove  %rax,%rsi
add    %rsi,%rdi
lea    0x11ee(%rip),%rax
cs nopw 0x0(%rax,%rax,1)
movzbl (%rdi),%ecx
cmp    $0x20,%rcx
ja     1418 <parse_bool+0x318>
movslq (%rax,%rcx,4),%rcx
add    %rax,%rcx
jmp    *%rcx
add    $0x1,%rdi
jmp    1400 <parse_bool+0x300>
mov    $0xffffffff,%eax
ret
mov    $0x1,%eax
ret

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

LLVM IR (-O2):
define i32 @parse_bool(i8* %0) {
br label %2
2: ; preds = %6, %1
%3 = phi i64 [ 0, %1 ], [ %7, %6 ]
%4 = getelementptr inbounds i8, i8* %0, i64 %3
%5 = load i8, i8* %4
switch i8 %5, label %223 [
i8 32, label %6
i8 9, label %6
i8 116, label %8
i8 84, label %33
i8 121, label %63
i8 89, label %83
i8 49, label %104
i8 102, label %110
i8 70, label %140
i8 110, label %180
i8 78, label %193
i8 48, label %207
]
6: ; preds = %2, %2
%7 = add i64 %3, 1
br label %2
8: ; preds = %2
%9 = add i64 %3, 1
%10 = getelementptr inbounds i8, i8* %0, i64 %9
%11 = load i8, i8* %10
%12 = icmp eq i8 %11, 114
br i1 %12, label %13, label %25
13: ; preds = %8
%14 = add i64 %3, 2
%15 = getelementptr inbounds i8, i8* %0, i64 %14
%16 = load i8, i8* %15
%17 = icmp eq i8 %16, 117
br i1 %17, label %18, label %25
18: ; preds = %13
%19 = add i64 %3, 3
%20 = getelementptr inbounds i8, i8* %0, i64 %19
%21 = load i8, i8* %20
%22 = icmp eq i8 %21, 101
%23 = add i64 %3, 4
%24 = select i1 %22, i64 %23, i64 %9
br label %25
25: ; preds = %18, %13, %8
%26 = phi i64 [ %24, %18 ], [ %9, %8 ], [ %9, %13 ]
br label %27
27: ; preds = %25, %31
%28 = phi i64 [ %32, %31 ], [ %26, %25 ]
%29 = getelementptr inbounds i8, i8* %0, i64 %28
%30 = load i8, i8* %29
switch i8 %30, label %223 [
i8 32, label %31
i8 9, label %31
i8 10, label %213
i8 0, label %213
]
31: ; preds = %27, %27
%32 = add i64 %28, 1
br label %27
33: ; preds = %2
%34 = add i64 %3, 1
%35 = getelementptr inbounds i8, i8* %0, i64 %34
%36 = load i8, i8* %35
switch i8 %36, label %55 [
i8 114, label %37
i8 82, label %42
]
37: ; preds = %33
%38 = add i64 %3, 2
%39 = getelementptr inbounds i8, i8* %0, i64 %38
%40 = load i8, i8* %39
%41 = icmp eq i8 %40, 117
br i1 %41, label %47, label %55
42: ; preds = %33
%43 = add i64 %3, 2
%44 = getelementptr inbounds i8, i8* %0, i64 %43
%45 = load i8, i8* %44
%46 = icmp eq i8 %45, 85
br i1 %46, label %47, label %55
47: ; preds = %42, %37
%48 = phi i8 [ 101, %37 ], [ 69, %42 ]
%49 = add i64 %3, 3
%50 = getelementptr inbounds i8, i8* %0, i64 %49
%51 = load i8, i8* %50
%52 = icmp eq i8 %51, %48
%53 = add i64 %3, 4
%54 = select i1 %52, i64 %53, i64 %34
br label %55
55: ; preds = %47, %33, %37, %42
%56 = phi i64 [ %54, %47 ], [ %34, %33 ], [ %34, %37 ], [ %34, %42 ]
br label %57
57: ; preds = %55, %61
%58 = phi i64 [ %62, %61 ], [ %56, %55 ]
%59 = getelementptr inbounds i8, i8* %0, i64 %58
%60 = load i8, i8* %59
switch i8 %60, label %223 [
i8 32, label %61
i8 9, label %61
i8 10, label %214
i8 0, label %214
]
61: ; preds = %57, %57
%62 = add i64 %58, 1
br label %57
63: ; preds = %2
%64 = add i64 %3, 1
%65 = getelementptr inbounds i8, i8* %0, i64 %64
%66 = load i8, i8* %65
%67 = icmp eq i8 %66, 101
br i1 %67, label %68, label %75
68: ; preds = %63
%69 = add i64 %3, 2
%70 = getelementptr inbounds i8, i8* %0, i64 %69
%71 = load i8, i8* %70
%72 = icmp eq i8 %71, 115
%73 = add i64 %3, 3
%74 = select i1 %72, i64 %73, i64 %64
br label %75
75: ; preds = %68, %63
%76 = phi i64 [ %74, %68 ], [ %64, %63 ]
br label %77
77: ; preds = %75, %81
%78 = phi i64 [ %82, %81 ], [ %76, %75 ]
%79 = getelementptr inbounds i8, i8* %0, i64 %78
%80 = load i8, i8* %79
switch i8 %80, label %223 [
i8 32, label %81
i8 9, label %81
i8 10, label %215
i8 0, label %215
]
81: ; preds = %77, %77
%82 = add i64 %78, 1
br label %77
83: ; preds = %2
%84 = add i64 %3, 1
%85 = getelementptr inbounds i8, i8* %0, i64 %84
%86 = load i8, i8* %85
switch i8 %86, label %96 [
i8 101, label %88
i8 69, label %87
]
87: ; preds = %83
br label %88
88: ; preds = %83, %87
%89 = phi i8 [ 83, %87 ], [ 115, %83 ]
%90 = add i64 %3, 2
%91 = getelementptr inbounds i8, i8* %0, i64 %90
%92 = load i8, i8* %91
%93 = icmp eq i8 %92, %89
%94 = add i64 %3, 3
%95 = select i1 %93, i64 %94, i64 %84
br label %96
96: ; preds = %88, %83
%97 = phi i64 [ %95, %88 ], [ %84, %83 ]
br label %98
98: ; preds = %96, %102
%99 = phi i64 [ %103, %102 ], [ %97, %96 ]
%100 = getelementptr inbounds i8, i8* %0, i64 %99
%101 = load i8, i8* %100
switch i8 %101, label %223 [
i8 32, label %102
i8 9, label %102
i8 10, label %216
i8 0, label %216
]
102: ; preds = %98, %98
%103 = add i64 %99, 1
br label %98
104: ; preds = %2, %109
%105 = phi i64 [ %106, %109 ], [ %3, %2 ]
%106 = add i64 %105, 1
%107 = getelementptr inbounds i8, i8* %0, i64 %106
%108 = load i8, i8* %107
switch i8 %108, label %223 [
i8 32, label %109
i8 9, label %109
i8 10, label %217
i8 0, label %217
]
109: ; preds = %104, %104
br label %104
110: ; preds = %2
%111 = add i64 %3, 1
%112 = getelementptr inbounds i8, i8* %0, i64 %111
%113 = load i8, i8* %112
%114 = icmp eq i8 %113, 97
br i1 %114, label %115, label %132
115: ; preds = %110
%116 = add i64 %3, 2
%117 = getelementptr inbounds i8, i8* %0, i64 %116
%118 = load i8, i8* %117
%119 = icmp eq i8 %118, 108
br i1 %119, label %120, label %132
120: ; preds = %115
%121 = add i64 %3, 3
%122 = getelementptr inbounds i8, i8* %0, i64 %121
%123 = load i8, i8* %122
%124 = icmp eq i8 %123, 115
br i1 %124, label %125, label %132
125: ; preds = %120
%126 = add i64 %3, 4
%127 = getelementptr inbounds i8, i8* %0, i64 %126
%128 = load i8, i8* %127
%129 = icmp eq i8 %128, 101
%130 = add i64 %3, 5
%131 = select i1 %129, i64 %130, i64 %111
br label %132
132: ; preds = %125, %120, %115, %110
%133 = phi i64 [ %131, %125 ], [ %111, %110 ], [ %111, %115 ], [ %111, %120 ]
br label %134
134: ; preds = %132, %138
%135 = phi i64 [ %139, %138 ], [ %133, %132 ]
%136 = getelementptr inbounds i8, i8* %0, i64 %135
%137 = load i8, i8* %136
switch i8 %137, label %223 [
i8 32, label %138
i8 9, label %138
i8 10, label %218
i8 0, label %218
]
138: ; preds = %134, %134
%139 = add i64 %135, 1
br label %134
140: ; preds = %2
%141 = add i64 %3, 1
%142 = getelementptr inbounds i8, i8* %0, i64 %141
%143 = load i8, i8* %142
switch i8 %143, label %172 [
i8 97, label %144
i8 65, label %154
]
144: ; preds = %140
%145 = add i64 %3, 2
%146 = getelementptr inbounds i8, i8* %0, i64 %145
%147 = load i8, i8* %146
%148 = icmp eq i8 %147, 108
br i1 %148, label %149, label %172
149: ; preds = %144
%150 = add i64 %3, 3
%151 = getelementptr inbounds i8, i8* %0, i64 %150
%152 = load i8, i8* %151
%153 = icmp eq i8 %152, 115
br i1 %153, label %164, label %172
154: ; preds = %140
%155 = add i64 %3, 2
%156 = getelementptr inbounds i8, i8* %0, i64 %155
%157 = load i8, i8* %156
%158 = icmp eq i8 %157, 76
br i1 %158, label %159, label %172
159: ; preds = %154
%160 = add i64 %3, 3
%161 = getelementptr inbounds i8, i8* %0, i64 %160
%162 = load i8, i8* %161
%163 = icmp eq i8 %162, 83
br i1 %163, label %164, label %172
164: ; preds = %159, %149
%165 = phi i8 [ 101, %149 ], [ 69, %159 ]
%166 = add i64 %3, 4
%167 = getelementptr inbounds i8, i8* %0, i64 %166
%168 = load i8, i8* %167
%169 = icmp eq i8 %168, %165
%170 = add i64 %3, 5
%171 = select i1 %169, i64 %170, i64 %141
br label %172
172: ; preds = %164, %140, %144, %149, %154, %159
%173 = phi i64 [ %171, %164 ], [ %141, %140 ], [ %141, %144 ], [ %141, %149 ], [ %141, %154 ], [ %141, %159 ]
br label %174
174: ; preds = %172, %178
%175 = phi i64 [ %179, %178 ], [ %173, %172 ]
%176 = getelementptr inbounds i8, i8* %0, i64 %175
%177 = load i8, i8* %176
switch i8 %177, label %223 [
i8 32, label %178
i8 9, label %178
i8 10, label %219
i8 0, label %219
]
178: ; preds = %174, %174
%179 = add i64 %175, 1
br label %174
180: ; preds = %2
%181 = add i64 %3, 1
%182 = getelementptr inbounds i8, i8* %0, i64 %181
%183 = load i8, i8* %182
%184 = icmp eq i8 %183, 111
%185 = add i64 %3, 2
%186 = select i1 %184, i64 %185, i64 %181
br label %187
187: ; preds = %191, %180
%188 = phi i64 [ %186, %180 ], [ %192, %191 ]
%189 = getelementptr inbounds i8, i8* %0, i64 %188
%190 = load i8, i8* %189
switch i8 %190, label %223 [
i8 32, label %191
i8 9, label %191
i8 10, label %220
i8 0, label %220
]
191: ; preds = %187, %187
%192 = add i64 %188, 1
br label %187
193: ; preds = %2
%194 = add i64 %3, 1
%195 = getelementptr inbounds i8, i8* %0, i64 %194
%196 = load i8, i8* %195
switch i8 %196, label %199 [
i8 111, label %197
i8 79, label %197
]
197: ; preds = %193, %193
%198 = add i64 %3, 2
br label %199
199: ; preds = %193, %197
%200 = phi i64 [ %194, %193 ], [ %198, %197 ]
br label %201
201: ; preds = %199, %205
%202 = phi i64 [ %206, %205 ], [ %200, %199 ]
%203 = getelementptr inbounds i8, i8* %0, i64 %202
%204 = load i8, i8* %203
switch i8 %204, label %223 [
i8 32, label %205
i8 9, label %205
i8 10, label %221
i8 0, label %221
]
205: ; preds = %201, %201
%206 = add i64 %202, 1
br label %201
207: ; preds = %2, %212
%208 = phi i64 [ %209, %212 ], [ %3, %2 ]
%209 = add i64 %208, 1
%210 = getelementptr inbounds i8, i8* %0, i64 %209
%211 = load i8, i8* %210
switch i8 %211, label %223 [
i8 32, label %212
i8 9, label %212
i8 10, label %222
i8 0, label %222
]
212: ; preds = %207, %207
br label %207
213: ; preds = %27, %27
br label %223
214: ; preds = %57, %57
br label %223
215: ; preds = %77, %77
br label %223
216: ; preds = %98, %98
br label %223
217: ; preds = %104, %104
br label %223
218: ; preds = %134, %134
br label %223
219: ; preds = %174, %174
br label %223
220: ; preds = %187, %187
br label %223
221: ; preds = %201, %201
br label %223
222: ; preds = %207, %207
br label %223
223: ; preds = %2, %207, %201, %187, %174, %134, %104, %98, %77, %57, %27, %222, %221, %220, %219, %218, %217, %216, %215, %214, %213
%224 = phi i32 [ 1, %213 ], [ 1, %214 ], [ 1, %215 ], [ 1, %216 ], [ 1, %217 ], [ 0, %218 ], [ 0, %219 ], [ 0, %220 ], [ 0, %221 ], [ 0, %222 ], [ -1, %27 ], [ -1, %57 ], [ -1, %77 ], [ -1, %98 ], [ -1, %104 ], [ -1, %134 ], [ -1, %174 ], [ -1, %187 ], [ -1, %201 ], [ -1, %207 ], [ -1, %2 ]
ret i32 %224
}