#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 /*<<< orphan*/ error(char *);
int /*<<< orphan*/ isalpha(char);
int /*<<< orphan*/ isdigit(char);
int /*<<< orphan*/ *strchr(char *, char);
int findcol(char **nextp) {
  int c;
  int nc, mod;
  char *p;
  nc = 0;
  mod = 0;
  for (p = *nextp; (c = *p) != '\0'; p++) {
    switch (c) {
    case ' ':
    case '\t':
      continue;
    case '\n':
    case '.':
    case ',':
      *nextp = p;
      return nc;
    case 'L':
    case 'R':
    case 'C':
    case 'N':
    case 'A':
    case 'S':
    case 'l':
    case 'r':
    case 'c':
    case 'n':
    case 'a':
    case 's':
    case '^':
    case '-':
    case '_':
    case '=':
      if (mod && !nc)
        error("Format specification must begin with a key letter");
      nc++;
      continue;
    case 'b':
    case 'i':
    case 'B':
    case 'I':
    case 't':
    case 'T':
    case 'd':
    case 'D':
      mod = 1;
      continue;
    case 'F':
    case 'f':
      mod = 1;
      if (isdigit(*(p + 1)))
        p++;
      else if (isalpha(*(p + 1))) {
        p += 2;
        if (isalpha(*p))
          continue;
        if (*p == ' ' || *p == '\t')
          continue;
        error("One letter font name must be followed by space or tab");
      } else if (*(p + 1) == '(') {
        p++;
        if (isdigit(*(p + 1))) {
          p++;
          while (isdigit(*(p + 1)))
            p++;
        } else if (isalpha(*(p + 1))) {
          p++;
          if (isalpha(*(p + 1)))
            p++;
        }
        while (*(p + 1) == ' ' || *(p + 1) == '\t')
          p++;
        if (*(p + 1) == ')')
          p++;
        else
          error("Syntax error in table specification");
      }
      continue;
    case 'P':
    case 'p':
    case 'V':
    case 'v':
      mod = 1;
      if (*(p + 1) == '-' || *(p + 1) == '+')
        p++;
      if (!isdigit(*(p + 1)))
        error("Syntax error in table specification");
      while (isdigit(*(p + 1)))
        p++;
      continue;
    case 'W':
    case 'w':
      mod = 1;
      p++;
      if (isdigit(*p)) {
        while (isdigit(*(p + 1)))
          p++;
        continue;
      }
      if (*p == '(') {
        p++;
        while (isdigit(*p))
          p++;
        if (*p == '.')
          p++;
        while (isdigit(*p))
          p++;
        if (strchr("icPmnpuv", *p) != NULL)
          p++;
        if (*p == ')')
          continue;
      }
      error("Invalid column width specification");
      p--;
      continue;
    case 'e':
    case 'E':
    case 'z':
    case 'Z':
    case 'u':
    case 'U':
      mod = 1;
      continue;
    case '0':
    case '1':
    case '2':
    case '3':
    case '4':
    case '5':
    case '6':
    case '7':
    case '8':
    case '9':
      while (isdigit(*(p + 1)))
        p++;
      mod = 1;
      continue;
    case '|':
      continue;
    default:
      error("Invalid character in table specification");
      continue;
    }
  }
  *nextp = p;
  return nc;
}


x86 assembly (clang, -O0):
<findcol>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %rdi,-0x10(%rbp)
movl   $0x0,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
mov    %eax,-0x14(%rbp)
cmp    $0x0,%eax
je     160e <findcol+0x4ce>
mov    -0x14(%rbp),%eax
add    $0xfffffff7,%eax
mov    %eax,%ecx
mov    %rcx,-0x30(%rbp)
sub    $0x73,%eax
ja     15f1 <findcol+0x4b1>
mov    -0x30(%rbp),%rax
lea    0xe68(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
jmp    15fd <findcol+0x4bd>
mov    -0x28(%rbp),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x18(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    161f <findcol+0x4df>
cmpl   $0x0,-0x1c(%rbp)
je     11dc <findcol+0x9c>
cmpl   $0x0,-0x18(%rbp)
jne    11dc <findcol+0x9c>
lea    0xff9(%rip),%rdi
call   1060 <error@plt>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    15fd <findcol+0x4bd>
movl   $0x1,-0x1c(%rbp)
jmp    15fd <findcol+0x4bd>
movl   $0x1,-0x1c(%rbp)
mov    -0x28(%rbp),%rax
movsbl 0x1(%rax),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%eax
je     1224 <findcol+0xe4>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    13d9 <findcol+0x299>
mov    -0x28(%rbp),%rax
movsbl 0x1(%rax),%edi
call   1050 <isalpha@plt>
cmp    $0x0,%eax
je     1296 <findcol+0x156>
mov    -0x28(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
movsbl (%rax),%edi
call   1050 <isalpha@plt>
cmp    $0x0,%eax
je     1260 <findcol+0x120>
jmp    15fd <findcol+0x4bd>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x20,%eax
je     1280 <findcol+0x140>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x9,%eax
jne    1285 <findcol+0x145>
jmp    15fd <findcol+0x4bd>
lea    0xf76(%rip),%rdi
call   1060 <error@plt>
jmp    13d4 <findcol+0x294>
mov    -0x28(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x28,%eax
jne    13cf <findcol+0x28f>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
movsbl 0x1(%rax),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%eax
je     1301 <findcol+0x1c1>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
movsbl 0x1(%rax),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%eax
je     12fc <findcol+0x1bc>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    12d5 <findcol+0x195>
jmp    134f <findcol+0x20f>
mov    -0x28(%rbp),%rax
movsbl 0x1(%rax),%edi
call   1050 <isalpha@plt>
cmp    $0x0,%eax
je     134a <findcol+0x20a>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
movsbl 0x1(%rax),%edi
call   1050 <isalpha@plt>
cmp    $0x0,%eax
je     1345 <findcol+0x205>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    134a <findcol+0x20a>
jmp    134f <findcol+0x20f>
jmp    1354 <findcol+0x214>
mov    -0x28(%rbp),%rax
movsbl 0x1(%rax),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x31(%rbp)
je     137b <findcol+0x23b>
mov    -0x28(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x9,%eax
sete   %al
mov    %al,-0x31(%rbp)
mov    -0x31(%rbp),%al
test   $0x1,%al
jne    138b <findcol+0x24b>
jmp    139c <findcol+0x25c>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    1354 <findcol+0x214>
mov    -0x28(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x29,%eax
jne    13be <findcol+0x27e>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    13ca <findcol+0x28a>
lea    0xe73(%rip),%rdi
call   1060 <error@plt>
jmp    13cf <findcol+0x28f>
jmp    13d4 <findcol+0x294>
jmp    13d9 <findcol+0x299>
jmp    15fd <findcol+0x4bd>
movl   $0x1,-0x1c(%rbp)
mov    -0x28(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x2d,%eax
je     1407 <findcol+0x2c7>
mov    -0x28(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x2b,%eax
jne    1413 <findcol+0x2d3>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
movsbl 0x1(%rax),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%eax
jne    1435 <findcol+0x2f5>
lea    0xe08(%rip),%rdi
call   1060 <error@plt>
jmp    143a <findcol+0x2fa>
mov    -0x28(%rbp),%rax
movsbl 0x1(%rax),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%eax
je     1461 <findcol+0x321>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    143a <findcol+0x2fa>
jmp    15fd <findcol+0x4bd>
movl   $0x1,-0x1c(%rbp)
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
movsbl (%rax),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%eax
je     14bf <findcol+0x37f>
jmp    1493 <findcol+0x353>
mov    -0x28(%rbp),%rax
movsbl 0x1(%rax),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%eax
je     14ba <findcol+0x37a>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    1493 <findcol+0x353>
jmp    15fd <findcol+0x4bd>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x28,%eax
jne    158b <findcol+0x44b>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
movsbl (%rax),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%eax
je     1501 <findcol+0x3c1>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    14db <findcol+0x39b>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2e,%eax
jne    151d <findcol+0x3dd>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    1522 <findcol+0x3e2>
mov    -0x28(%rbp),%rax
movsbl (%rax),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%eax
je     1548 <findcol+0x408>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    1522 <findcol+0x3e2>
mov    -0x28(%rbp),%rax
lea    0xd09(%rip),%rdi
movsbl (%rax),%esi
call   1040 <strchr@plt>
cmp    $0x0,%rax
je     1571 <findcol+0x431>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x29,%eax
jne    1586 <findcol+0x446>
jmp    15fd <findcol+0x4bd>
jmp    158b <findcol+0x44b>
lea    0xcd3(%rip),%rdi
call   1060 <error@plt>
mov    -0x28(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x28(%rbp)
jmp    15fd <findcol+0x4bd>
movl   $0x1,-0x1c(%rbp)
jmp    15fd <findcol+0x4bd>
jmp    15b9 <findcol+0x479>
mov    -0x28(%rbp),%rax
movsbl 0x1(%rax),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%eax
je     15e0 <findcol+0x4a0>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    15b9 <findcol+0x479>
movl   $0x1,-0x1c(%rbp)
jmp    15fd <findcol+0x4bd>
jmp    15fd <findcol+0x4bd>
lea    0xc90(%rip),%rdi
call   1060 <error@plt>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    1165 <findcol+0x25>
mov    -0x28(%rbp),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x18(%rbp),%eax
mov    %eax,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<findcol>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
mov    %rdi,%r15
mov    (%rdi),%r14
mov    (%r14),%al
test   %al,%al
je     1175 <findcol+0x35>
xor    %r12d,%r12d
lea    0xe9b(%rip),%r13
lea    0x1064(%rip),%rbx
xor    %ebp,%ebp
mov    %r15,0x8(%rsp)
jmp    11c2 <findcol+0x82>
xor    %ebp,%ebp
mov    %r14,(%r15)
mov    %ebp,%eax
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
lea    0x103e(%rip),%rbx
mov    0x10(%rsp),%ebp
lea    0x10c8(%rip),%rdi
call   1060 <error@plt>
add    $0xffffffffffffffff,%r14
cs nopw 0x0(%rax,%rax,1)
mov    $0x1,%r12d
mov    0x1(%r14),%al
add    $0x1,%r14
test   %al,%al
je     1177 <findcol+0x37>
movsbl %al,%eax
add    $0xfffffff7,%eax
cmp    $0x73,%eax
ja     12bd <findcol+0x17d>
movslq 0x0(%r13,%rax,4),%rax
add    %r13,%rax
jmp    *%rax
test   %r12d,%r12d
je     11ec <findcol+0xac>
test   %ebp,%ebp
jne    11ec <findcol+0xac>
mov    %rbx,%rdi
call   1060 <error@plt>
add    $0x1,%ebp
jmp    11b6 <findcol+0x76>
add    $0xffffffffffffffff,%r14
cs nopw 0x0(%rax,%rax,1)
nop
movsbl 0x2(%r14),%edi
call   1030 <isdigit@plt>
add    $0x1,%r14
test   %eax,%eax
jne    1200 <findcol+0xc0>
jmp    11b0 <findcol+0x70>
mov    0x1(%r14),%al
cmp    $0x2d,%al
je     1220 <findcol+0xe0>
cmp    $0x2b,%al
jne    1228 <findcol+0xe8>
mov    0x2(%r14),%al
add    $0x1,%r14
movsbl %al,%edi
call   1030 <isdigit@plt>
test   %eax,%eax
jne    1240 <findcol+0x100>
lea    0xffd(%rip),%rdi
call   1060 <error@plt>
add    $0xffffffffffffffff,%r14
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movsbl 0x2(%r14),%edi
call   1030 <isdigit@plt>
add    $0x1,%r14
test   %eax,%eax
jne    1250 <findcol+0x110>
jmp    11b0 <findcol+0x70>
lea    0x1(%r14),%r15
movsbl 0x1(%r14),%edi
call   1030 <isdigit@plt>
mov    $0x1,%r12d
test   %eax,%eax
je     12ce <findcol+0x18e>
mov    %r15,%r14
mov    0x8(%rsp),%r15
jmp    11b6 <findcol+0x76>
movsbl 0x1(%r14),%edi
call   1030 <isdigit@plt>
test   %eax,%eax
je     1316 <findcol+0x1d6>
nopw   0x0(%rax,%rax,1)
movsbl 0x2(%r14),%edi
call   1030 <isdigit@plt>
add    $0x1,%r14
mov    $0x1,%r12d
test   %eax,%eax
jne    12a0 <findcol+0x160>
jmp    11b6 <findcol+0x76>
lea    0xfc4(%rip),%rdi
call   1060 <error@plt>
jmp    11b6 <findcol+0x76>
movsbl (%r15),%edi
call   1050 <isalpha@plt>
test   %eax,%eax
je     13ac <findcol+0x26c>
movsbl 0x2(%r14),%edi
add    $0x2,%r14
call   1050 <isalpha@plt>
test   %eax,%eax
jne    13e4 <findcol+0x2a4>
mov    (%r14),%al
cmp    $0x9,%al
mov    0x8(%rsp),%r15
je     11b6 <findcol+0x76>
cmp    $0x20,%al
je     11b6 <findcol+0x76>
lea    0xeee(%rip),%rdi
jmp    12c4 <findcol+0x184>
add    $0x1,%r14
cmpb   $0x28,(%r14)
jne    1196 <findcol+0x56>
mov    %ebp,0x10(%rsp)
nopl   0x0(%rax,%rax,1)
mov    %r14,%rbp
add    $0x1,%r14
movsbl 0x1(%rbp),%edi
call   1030 <isdigit@plt>
test   %eax,%eax
jne    1330 <findcol+0x1f0>
xor    %eax,%eax
cmpb   $0x2e,0x1(%rbp)
sete   %al
mov    %r14,%rbx
add    %rax,%rbx
add    %rax,%rbp
mov    %rbp,%r14
nopl   0x0(%rax)
movsbl (%rbx),%edi
call   1030 <isdigit@plt>
add    $0x1,%rbx
add    $0x1,%r14
test   %eax,%eax
jne    1360 <findcol+0x220>
movsbl (%r14),%esi
lea    0xedd(%rip),%rdi
call   1040 <strchr@plt>
cmp    $0x1,%rax
sbb    $0xffffffffffffffff,%r14
cmpb   $0x29,(%r14)
jne    118b <findcol+0x4b>
mov    $0x1,%r12d
lea    0xe2d(%rip),%rbx
mov    0x10(%rsp),%ebp
jmp    11b6 <findcol+0x76>
cmpb   $0x28,(%r15)
jne    13e4 <findcol+0x2a4>
movsbl 0x2(%r14),%edi
call   1030 <isdigit@plt>
test   %eax,%eax
je     13ee <findcol+0x2ae>
add    $0x1,%r14
mov    %r14,%r15
nopw   0x0(%rax,%rax,1)
movsbl 0x2(%r15),%edi
call   1030 <isdigit@plt>
add    $0x1,%r15
test   %eax,%eax
jne    13d0 <findcol+0x290>
jmp    141c <findcol+0x2dc>
mov    0x8(%rsp),%r15
jmp    11b6 <findcol+0x76>
lea    0x2(%r14),%rax
mov    %rax,0x10(%rsp)
movsbl (%rax),%edi
call   1050 <isalpha@plt>
test   %eax,%eax
je     141c <findcol+0x2dc>
movsbl 0x3(%r14),%edi
add    $0x3,%r14
call   1050 <isalpha@plt>
test   %eax,%eax
cmove  0x10(%rsp),%r14
mov    %r14,%r15
add    $0x1,%r15
mov    %r15,%r14
mov    0x8(%rsp),%r15
jmp    1434 <findcol+0x2f4>
nopw   0x0(%rax,%rax,1)
add    $0x1,%r14
movzbl (%r14),%eax
cmp    $0x9,%al
je     1430 <findcol+0x2f0>
cmp    $0x20,%al
je     1430 <findcol+0x2f0>
cmp    $0x29,%al
je     11b6 <findcol+0x76>
lea    0xde9(%rip),%rdi
call   1060 <error@plt>
add    $0xffffffffffffffff,%r14
jmp    11b6 <findcol+0x76>

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

LLVM IR (-O2):
@.str = [50 x i8] c"Format specification must begin with a key letter\00"
@.str.1 = [54 x i8] c"One letter font name must be followed by space or tab\00"
@.str.2 = [36 x i8] c"Syntax error in table specification\00"
@.str.3 = [9 x i8] c"icPmnpuv\00"
@.str.4 = [35 x i8] c"Invalid column width specification\00"
@.str.5 = [41 x i8] c"Invalid character in table specification\00"
define i32 @findcol(i8** nocapture %0) {
%2 = load i8*, i8** %0
%3 = load i8, i8* %2
%4 = icmp eq i8 %3, 0
br i1 %4, label %153, label %5
5: ; preds = %1, %146
%6 = phi i8 [ %151, %146 ], [ %3, %1 ]
%7 = phi i8* [ %150, %146 ], [ %2, %1 ]
%8 = phi i32 [ %148, %146 ], [ 0, %1 ]
%9 = phi i32 [ %147, %146 ], [ 0, %1 ]
%10 = sext i8 %6 to i32
switch i32 %10, label %144 [
i32 32, label %146
i32 9, label %146
i32 10, label %153
i32 46, label %153
i32 44, label %153
i32 76, label %12
i32 82, label %12
i32 67, label %12
i32 78, label %12
i32 65, label %12
i32 83, label %12
i32 108, label %12
i32 114, label %12
i32 99, label %12
i32 110, label %12
i32 97, label %12
i32 115, label %12
i32 94, label %12
i32 45, label %12
i32 95, label %12
i32 61, label %12
i32 98, label %20
i32 105, label %20
i32 66, label %20
i32 73, label %20
i32 116, label %20
i32 84, label %20
i32 100, label %20
i32 68, label %20
i32 70, label %21
i32 102, label %21
i32 80, label %72
i32 112, label %72
i32 86, label %72
i32 118, label %72
i32 87, label %92
i32 119, label %92
i32 101, label %137
i32 69, label %137
i32 122, label %137
i32 90, label %137
i32 117, label %137
i32 85, label %137
i32 48, label %11
i32 49, label %11
i32 50, label %11
i32 51, label %11
i32 52, label %11
i32 53, label %11
i32 54, label %11
i32 55, label %11
i32 56, label %11
i32 57, label %11
i32 124, label %146
]
11: ; preds = %5, %5, %5, %5, %5, %5, %5, %5, %5, %5
br label %138
12: ; preds = %5, %5, %5, %5, %5, %5, %5, %5, %5, %5, %5, %5, %5, %5, %5, %5
%13 = icmp eq i32 %8, 0
%14 = icmp ne i32 %9, 0
%15 = select i1 %13, i1 true, i1 %14
br i1 %15, label %18, label %16
16: ; preds = %12
%17 = tail call i32 @error(i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str, i64 0, i64 0))
br label %18
18: ; preds = %16, %12
%19 = add nsw i32 %9, 1
br label %146
20: ; preds = %5, %5, %5, %5, %5, %5, %5, %5
br label %146
21: ; preds = %5, %5
%22 = getelementptr inbounds i8, i8* %7, i64 1
%23 = load i8, i8* %22
%24 = tail call i32 @isdigit(i8 signext %23)
%25 = icmp eq i32 %24, 0
br i1 %25, label %26, label %146
26: ; preds = %21
%27 = load i8, i8* %22
%28 = tail call i32 @isalpha(i8 signext %27)
%29 = icmp eq i32 %28, 0
br i1 %29, label %39, label %30
30: ; preds = %26
%31 = getelementptr inbounds i8, i8* %7, i64 2
%32 = load i8, i8* %31
%33 = tail call i32 @isalpha(i8 signext %32)
%34 = icmp eq i32 %33, 0
br i1 %34, label %35, label %146
35: ; preds = %30
%36 = load i8, i8* %31
switch i8 %36, label %37 [
i8 32, label %146
i8 9, label %146
]
37: ; preds = %35
%38 = tail call i32 @error(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.1, i64 0, i64 0))
br label %146
39: ; preds = %26
%40 = load i8, i8* %22
%41 = icmp eq i8 %40, 40
br i1 %41, label %42, label %146
42: ; preds = %39
%43 = getelementptr inbounds i8, i8* %7, i64 2
%44 = load i8, i8* %43
%45 = tail call i32 @isdigit(i8 signext %44)
%46 = icmp eq i32 %45, 0
br i1 %46, label %53, label %47
47: ; preds = %42, %47
%48 = phi i8* [ %49, %47 ], [ %43, %42 ]
%49 = getelementptr inbounds i8, i8* %48, i64 1
%50 = load i8, i8* %49
%51 = tail call i32 @isdigit(i8 signext %50)
%52 = icmp eq i32 %51, 0
br i1 %52, label %63, label %47
53: ; preds = %42
%54 = load i8, i8* %43
%55 = tail call i32 @isalpha(i8 signext %54)
%56 = icmp eq i32 %55, 0
br i1 %56, label %63, label %57
57: ; preds = %53
%58 = getelementptr inbounds i8, i8* %7, i64 3
%59 = load i8, i8* %58
%60 = tail call i32 @isalpha(i8 signext %59)
%61 = icmp eq i32 %60, 0
%62 = select i1 %61, i8* %43, i8* %58
br label %63
63: ; preds = %47, %57, %53
%64 = phi i8* [ %62, %57 ], [ %22, %53 ], [ %48, %47 ]
br label %65
65: ; preds = %69, %63
%66 = phi i8* [ %64, %63 ], [ %67, %69 ]
%67 = getelementptr inbounds i8, i8* %66, i64 1
%68 = load i8, i8* %67
switch i8 %68, label %70 [
i8 32, label %69
i8 9, label %69
i8 41, label %146
]
69: ; preds = %65, %65
br label %65
70: ; preds = %65
%71 = tail call i32 @error(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.2, i64 0, i64 0))
br label %146
72: ; preds = %5, %5, %5, %5
%73 = getelementptr inbounds i8, i8* %7, i64 1
%74 = load i8, i8* %73
switch i8 %74, label %78 [
i8 45, label %75
i8 43, label %75
]
75: ; preds = %72, %72
%76 = getelementptr inbounds i8, i8* %7, i64 2
%77 = load i8, i8* %76
br label %78
78: ; preds = %72, %75
%79 = phi i8 [ %77, %75 ], [ %74, %72 ]
%80 = phi i8* [ %73, %75 ], [ %7, %72 ]
%81 = tail call i32 @isdigit(i8 signext %79)
%82 = icmp eq i32 %81, 0
br i1 %82, label %83, label %85
83: ; preds = %78
%84 = tail call i32 @error(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.2, i64 0, i64 0))
br label %85
85: ; preds = %83, %78
br label %86
86: ; preds = %85, %86
%87 = phi i8* [ %88, %86 ], [ %80, %85 ]
%88 = getelementptr inbounds i8, i8* %87, i64 1
%89 = load i8, i8* %88
%90 = tail call i32 @isdigit(i8 signext %89)
%91 = icmp eq i32 %90, 0
br i1 %91, label %146, label %86
92: ; preds = %5, %5
%93 = getelementptr inbounds i8, i8* %7, i64 1
%94 = load i8, i8* %93
%95 = tail call i32 @isdigit(i8 signext %94)
%96 = icmp eq i32 %95, 0
br i1 %96, label %103, label %97
97: ; preds = %92, %97
%98 = phi i8* [ %99, %97 ], [ %93, %92 ]
%99 = getelementptr inbounds i8, i8* %98, i64 1
%100 = load i8, i8* %99
%101 = tail call i32 @isdigit(i8 signext %100)
%102 = icmp eq i32 %101, 0
br i1 %102, label %146, label %97
103: ; preds = %92
%104 = load i8, i8* %93
%105 = icmp eq i8 %104, 40
br i1 %105, label %106, label %133
106: ; preds = %103
%107 = getelementptr inbounds i8, i8* %7, i64 2
br label %108
108: ; preds = %108, %106
%109 = phi i8* [ %107, %106 ], [ %113, %108 ]
%110 = load i8, i8* %109
%111 = tail call i32 @isdigit(i8 signext %110)
%112 = icmp eq i32 %111, 0
%113 = getelementptr inbounds i8, i8* %109, i64 1
br i1 %112, label %114, label %108
114: ; preds = %108
%115 = load i8, i8* %109
%116 = icmp eq i8 %115, 46
%117 = zext i1 %116 to i64
%118 = getelementptr i8, i8* %109, i64 %117
br label %119
119: ; preds = %119, %114
%120 = phi i8* [ %118, %114 ], [ %124, %119 ]
%121 = load i8, i8* %120
%122 = tail call i32 @isdigit(i8 signext %121)
%123 = icmp eq i32 %122, 0
%124 = getelementptr inbounds i8, i8* %120, i64 1
br i1 %123, label %125, label %119
125: ; preds = %119
%126 = load i8, i8* %120
%127 = tail call i32* @strchr(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.3, i64 0, i64 0), i8 signext %126)
%128 = icmp ne i32* %127, null
%129 = zext i1 %128 to i64
%130 = getelementptr i8, i8* %120, i64 %129
%131 = load i8, i8* %130
%132 = icmp eq i8 %131, 41
br i1 %132, label %146, label %133
133: ; preds = %125, %103
%134 = phi i8* [ %130, %125 ], [ %93, %103 ]
%135 = tail call i32 @error(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.4, i64 0, i64 0))
%136 = getelementptr inbounds i8, i8* %134, i64 -1
br label %146
137: ; preds = %5, %5, %5, %5, %5, %5
br label %146
138: ; preds = %11, %138
%139 = phi i8* [ %140, %138 ], [ %7, %11 ]
%140 = getelementptr inbounds i8, i8* %139, i64 1
%141 = load i8, i8* %140
%142 = tail call i32 @isdigit(i8 signext %141)
%143 = icmp eq i32 %142, 0
br i1 %143, label %146, label %138
144: ; preds = %5
%145 = tail call i32 @error(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.5, i64 0, i64 0))
br label %146
146: ; preds = %138, %97, %86, %65, %21, %35, %35, %5, %125, %39, %70, %37, %30, %5, %5, %144, %137, %133, %20, %18
%147 = phi i32 [ %9, %144 ], [ %9, %137 ], [ %9, %125 ], [ %9, %133 ], [ %9, %30 ], [ %9, %35 ], [ %9, %37 ], [ %9, %70 ], [ %9, %39 ], [ %9, %20 ], [ %19, %18 ], [ %9, %5 ], [ %9, %5 ], [ %9, %5 ], [ %9, %35 ], [ %9, %21 ], [ %9, %65 ], [ %9, %86 ], [ %9, %97 ], [ %9, %138 ]
%148 = phi i32 [ %8, %144 ], [ 1, %137 ], [ 1, %125 ], [ 1, %133 ], [ 1, %30 ], [ 1, %35 ], [ 1, %37 ], [ 1, %70 ], [ 1, %39 ], [ 1, %20 ], [ %8, %18 ], [ %8, %5 ], [ %8, %5 ], [ %8, %5 ], [ 1, %35 ], [ 1, %21 ], [ 1, %65 ], [ 1, %86 ], [ 1, %97 ], [ 1, %138 ]
%149 = phi i8* [ %7, %144 ], [ %7, %137 ], [ %130, %125 ], [ %136, %133 ], [ %31, %30 ], [ %31, %35 ], [ %31, %37 ], [ %66, %70 ], [ %7, %39 ], [ %7, %20 ], [ %7, %18 ], [ %7, %5 ], [ %7, %5 ], [ %7, %5 ], [ %31, %35 ], [ %22, %21 ], [ %67, %65 ], [ %87, %86 ], [ %98, %97 ], [ %139, %138 ]
%150 = getelementptr inbounds i8, i8* %149, i64 1
%151 = load i8, i8* %150
%152 = icmp eq i8 %151, 0
br i1 %152, label %153, label %5
153: ; preds = %5, %5, %5, %146, %1
%154 = phi i32 [ 0, %1 ], [ %147, %146 ], [ %9, %5 ], [ %9, %5 ], [ %9, %5 ]
%155 = phi i8* [ %2, %1 ], [ %150, %146 ], [ %7, %5 ], [ %7, %5 ], [ %7, %5 ]
store i8* %155, i8** %0
ret i32 %154
}