#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 EOF;
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *);
int getchar();
int /*<<< orphan*/ stderr;
int /*<<< orphan*/ stdin;
int /*<<< orphan*/ ungetc(int, int /*<<< orphan*/);
int main(int argc, char **argv) {
  int c;
  long long braces = 0;
  long long brackets = 0;
  long long parens = 0;
  char indquote = 0;
  char insquote = 0;
  char inlinecomment = 0;
  char incomment = 0;
  char escerr = 0;
  while ((c = getchar()) > EOF) {
    int next;
    switch (c) {
    case '{':
      if (!(incomment & !inlinecomment))
        braces++;
      break;
    case '}':
      if (!(incomment & !inlinecomment))
        braces--;
      break;
    case '[':
      if (!(incomment & !inlinecomment))
        brackets++;
      break;
    case ']':
      if (!(incomment & !inlinecomment))
        brackets--;
      break;
    case '(':
      if (!(incomment & !inlinecomment))
        parens++;
      break;
    case ')':
      if (!(incomment & !inlinecomment))
        parens--;
      break;
    case '\\':
      switch (next) {
      case '0':
      case 'a':
      case 'b':
      case 't':
      case 'n':
      case 'v':
      case 'f':
      case 'r':
      case '\'':
      case '\"':
      case '\\':
      case '\?':
        continue;
      default:
        ungetc(next, stdin);
        escerr = 1;
        break;
      }
      break;
    case '\"':
      if (!(incomment & !inlinecomment))
        indquote = !indquote;
      break;
    case '\'':
      if (!(incomment & !inlinecomment))
        insquote = !insquote;
      break;
    case '/':
      if (inlinecomment)
        break;
      next = getchar();
      if (next == '*')
        incomment = 1;
      else if (next == '/')
        inlinecomment = 1;
      break;
    case '*':
      if (inlinecomment)
        break;
      next = getchar();
      if (next == '/')
        incomment = 0;
      else
        ungetc(next, stdin);
    case '\n':
      if (inlinecomment)
        inlinecomment = 0;
      break;
    default:
      continue;
    }
  }
  if (braces > 0)
    fprintf(stderr, "ERROR: too many braces\n");
  if (brackets > 0)
    fprintf(stderr, "ERROR: too many brackets\n");
  if (parens > 0)
    fprintf(stderr, "ERROR: too many parentheses\n");
  if (indquote)
    fprintf(stderr, "ERROR: unclosed double quote\n");
  if (insquote)
    fprintf(stderr, "ERROR: unclosed single quote\n");
  if (incomment)
    fprintf(stderr, "ERROR: unclosed multiline comment\n");
  if (escerr)
    fprintf(stderr, "ERROR: improperly formatted escape "
                    "character\n");
  return (braces > 0) | (brackets > 0) | (parens > 0) | indquote | insquote |
         incomment | escerr;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movq   $0x0,-0x20(%rbp)
movq   $0x0,-0x28(%rbp)
movq   $0x0,-0x30(%rbp)
movb   $0x0,-0x31(%rbp)
movb   $0x0,-0x32(%rbp)
movb   $0x0,-0x33(%rbp)
movb   $0x0,-0x34(%rbp)
movb   $0x0,-0x35(%rbp)
mov    $0x0,%al
call   1030 <getchar@plt>
mov    %eax,-0x14(%rbp)
mov    0x2e5d(%rip),%rcx
cmp    (%rcx),%eax
jle    1429 <main+0x2f9>
mov    -0x14(%rbp),%eax
add    $0xfffffff6,%eax
mov    %eax,%ecx
mov    %rcx,-0x48(%rbp)
sub    $0x73,%eax
ja     141f <main+0x2ef>
mov    -0x48(%rbp),%rax
lea    0xe55(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movsbl -0x34(%rbp),%eax
cmpb   $0x0,-0x33(%rbp)
setne  %cl
xor    $0xff,%cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
jne    11df <main+0xaf>
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
jmp    1424 <main+0x2f4>
movsbl -0x34(%rbp),%eax
cmpb   $0x0,-0x33(%rbp)
setne  %cl
xor    $0xff,%cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
jne    120f <main+0xdf>
mov    -0x20(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x20(%rbp)
jmp    1424 <main+0x2f4>
movsbl -0x34(%rbp),%eax
cmpb   $0x0,-0x33(%rbp)
setne  %cl
xor    $0xff,%cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
jne    123f <main+0x10f>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    1424 <main+0x2f4>
movsbl -0x34(%rbp),%eax
cmpb   $0x0,-0x33(%rbp)
setne  %cl
xor    $0xff,%cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
jne    126f <main+0x13f>
mov    -0x28(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x28(%rbp)
jmp    1424 <main+0x2f4>
movsbl -0x34(%rbp),%eax
cmpb   $0x0,-0x33(%rbp)
setne  %cl
xor    $0xff,%cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
jne    129f <main+0x16f>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
jmp    1424 <main+0x2f4>
movsbl -0x34(%rbp),%eax
cmpb   $0x0,-0x33(%rbp)
setne  %cl
xor    $0xff,%cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
jne    12cf <main+0x19f>
mov    -0x30(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x30(%rbp)
jmp    1424 <main+0x2f4>
mov    -0x3c(%rbp),%eax
add    $0xffffffde,%eax
mov    %eax,%ecx
mov    %rcx,-0x50(%rbp)
sub    $0x54,%eax
ja     1302 <main+0x1d2>
mov    -0x50(%rbp),%rax
lea    0xedc(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
jmp    1172 <main+0x42>
mov    -0x3c(%rbp),%edi
mov    0x2cdc(%rip),%rax
mov    (%rax),%esi
call   1050 <ungetc@plt>
movb   $0x1,-0x35(%rbp)
jmp    1424 <main+0x2f4>
movsbl -0x34(%rbp),%eax
cmpb   $0x0,-0x33(%rbp)
setne  %cl
xor    $0xff,%cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
jne    134c <main+0x21c>
cmpb   $0x0,-0x31(%rbp)
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%eax
mov    %al,-0x31(%rbp)
jmp    1424 <main+0x2f4>
movsbl -0x34(%rbp),%eax
cmpb   $0x0,-0x33(%rbp)
setne  %cl
xor    $0xff,%cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
jne    1381 <main+0x251>
cmpb   $0x0,-0x32(%rbp)
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%eax
mov    %al,-0x32(%rbp)
jmp    1424 <main+0x2f4>
cmpb   $0x0,-0x33(%rbp)
je     1395 <main+0x265>
jmp    1424 <main+0x2f4>
mov    $0x0,%al
call   1030 <getchar@plt>
mov    %eax,-0x3c(%rbp)
cmpl   $0x2a,-0x3c(%rbp)
jne    13b2 <main+0x282>
movb   $0x1,-0x34(%rbp)
jmp    13c5 <main+0x295>
cmpl   $0x2f,-0x3c(%rbp)
jne    13c0 <main+0x290>
movb   $0x1,-0x33(%rbp)
jmp    13c5 <main+0x295>
jmp    1424 <main+0x2f4>
cmpb   $0x0,-0x33(%rbp)
je     13d9 <main+0x2a9>
jmp    1424 <main+0x2f4>
mov    $0x0,%al
call   1030 <getchar@plt>
mov    %eax,-0x3c(%rbp)
cmpl   $0x2f,-0x3c(%rbp)
jne    13f6 <main+0x2c6>
movb   $0x0,-0x34(%rbp)
jmp    1407 <main+0x2d7>
mov    -0x3c(%rbp),%edi
mov    0x2be8(%rip),%rax
mov    (%rax),%esi
call   1050 <ungetc@plt>
jmp    140c <main+0x2dc>
cmpb   $0x0,-0x33(%rbp)
je     141a <main+0x2ea>
movb   $0x0,-0x33(%rbp)
jmp    1424 <main+0x2f4>
jmp    1172 <main+0x42>
jmp    1172 <main+0x42>
cmpq   $0x0,-0x20(%rbp)
jle    1449 <main+0x319>
mov    0x2b95(%rip),%rax
mov    (%rax),%edi
lea    0xee0(%rip),%rsi
call   1040 <fprintf@plt>
cmpq   $0x0,-0x28(%rbp)
jle    1469 <main+0x339>
mov    0x2b75(%rip),%rax
mov    (%rax),%edi
lea    0xed8(%rip),%rsi
call   1040 <fprintf@plt>
cmpq   $0x0,-0x30(%rbp)
jle    1489 <main+0x359>
mov    0x2b55(%rip),%rax
mov    (%rax),%edi
lea    0xed2(%rip),%rsi
call   1040 <fprintf@plt>
cmpb   $0x0,-0x31(%rbp)
je     14a8 <main+0x378>
mov    0x2b36(%rip),%rax
mov    (%rax),%edi
lea    0xed0(%rip),%rsi
call   1040 <fprintf@plt>
cmpb   $0x0,-0x32(%rbp)
je     14c7 <main+0x397>
mov    0x2b17(%rip),%rax
mov    (%rax),%edi
lea    0xecf(%rip),%rsi
call   1040 <fprintf@plt>
cmpb   $0x0,-0x34(%rbp)
je     14e6 <main+0x3b6>
mov    0x2af8(%rip),%rax
mov    (%rax),%edi
lea    0xece(%rip),%rsi
call   1040 <fprintf@plt>
cmpb   $0x0,-0x35(%rbp)
je     1505 <main+0x3d5>
mov    0x2ad9(%rip),%rax
mov    (%rax),%edi
lea    0xed2(%rip),%rsi
call   1040 <fprintf@plt>
cmpq   $0x0,-0x20(%rbp)
setg   %al
and    $0x1,%al
movzbl %al,%eax
cmpq   $0x0,-0x28(%rbp)
setg   %cl
and    $0x1,%cl
movzbl %cl,%ecx
or     %ecx,%eax
cmpq   $0x0,-0x30(%rbp)
setg   %cl
and    $0x1,%cl
movzbl %cl,%ecx
or     %ecx,%eax
movsbl -0x31(%rbp),%ecx
or     %ecx,%eax
movsbl -0x32(%rbp),%ecx
or     %ecx,%eax
movsbl -0x34(%rbp),%ecx
or     %ecx,%eax
movsbl -0x35(%rbp),%ecx
or     %ecx,%eax
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x28,%rsp
xor    %ebp,%ebp
xor    %eax,%eax
call   1030 <getchar@plt>
mov    0x2e92(%rip),%r15
mov    $0x0,%r14d
mov    $0x0,%ebx
mov    $0x0,%r12d
mov    $0x0,%edx
mov    $0x0,%ecx
mov    $0x0,%r13d
cmp    (%r15),%eax
jle    1499 <main+0x369>
lea    0xe81(%rip),%r14
mov    %rcx,0x8(%rsp)
movl   $0x0,0x10(%rsp)
xor    %r12d,%r12d
xor    %ebp,%ebp
movl   $0x0,0x14(%rsp)
movl   $0x0,0x4(%rsp)
xor    %ecx,%ecx
mov    %rcx,0x20(%rsp)
xor    %ecx,%ecx
mov    %rcx,0x18(%rsp)
xor    %ebx,%ebx
jmp    11f6 <main+0xc6>
xor    %eax,%eax
test   %bpl,%bpl
sete   %al
movzbl %r12b,%ecx
and    %ecx,%eax
mov    0x20(%rsp),%rcx
add    %rax,%rcx
add    $0xffffffffffffffff,%rcx
mov    %rcx,0x20(%rsp)
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    %ebp,%r13d
mov    %r13d,%ebp
xor    %eax,%eax
call   1030 <getchar@plt>
cmp    (%r15),%eax
jle    13a6 <main+0x276>
add    $0xfffffff6,%eax
cmp    $0x73,%eax
ja     11e6 <main+0xb6>
xor    %r13d,%r13d
movslq (%r14,%rax,4),%rax
add    %r14,%rax
jmp    *%rax
test   %bpl,%bpl
sete   %al
test   %al,%r12b
jne    11e0 <main+0xb0>
cmpb   $0x0,0x4(%rsp)
sete   %al
mov    %eax,0x4(%rsp)
jmp    11e0 <main+0xb0>
test   %bpl,%bpl
sete   %al
test   %al,%r12b
jne    11e0 <main+0xb0>
cmpb   $0x0,0x14(%rsp)
sete   %al
mov    %eax,0x14(%rsp)
jmp    11e0 <main+0xb0>
xor    %eax,%eax
test   %bpl,%bpl
sete   %al
movzbl %r12b,%ecx
and    %ecx,%eax
xor    $0x1,%rax
add    %rax,0x20(%rsp)
jmp    11e0 <main+0xb0>
mov    $0x1,%r13b
test   %bpl,%bpl
jne    11e3 <main+0xb3>
xor    %r13d,%r13d
xor    %eax,%eax
call   1030 <getchar@plt>
cmp    $0x2f,%eax
jne    136b <main+0x23b>
mov    $0x2f,%eax
mov    %rax,0x8(%rsp)
xor    %r12d,%r12d
jmp    11e3 <main+0xb3>
mov    $0x1,%r13b
test   %bpl,%bpl
jne    11e3 <main+0xb3>
xor    %r13d,%r13d
xor    %eax,%eax
call   1030 <getchar@plt>
cmp    $0x2a,%eax
je     138c <main+0x25c>
cmp    $0x2f,%eax
jne    1399 <main+0x269>
mov    $0x2f,%eax
mov    %rax,0x8(%rsp)
mov    $0x1,%r13b
jmp    11e3 <main+0xb3>
xor    %eax,%eax
test   %bpl,%bpl
sete   %al
movzbl %r12b,%ecx
and    %ecx,%eax
xor    $0x1,%rax
add    %rax,0x18(%rsp)
jmp    11e0 <main+0xb0>
mov    0x8(%rsp),%rax
add    $0xffffffde,%eax
cmp    $0x54,%eax
ja     12f5 <main+0x1c5>
lea    0xee4(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    0x2cec(%rip),%rax
mov    (%rax),%esi
mov    0x8(%rsp),%rdi
call   1050 <ungetc@plt>
mov    $0x1,%al
mov    %eax,0x10(%rsp)
jmp    11e0 <main+0xb0>
xor    %eax,%eax
test   %bpl,%bpl
sete   %al
movzbl %r12b,%ecx
and    %ecx,%eax
mov    0x18(%rsp),%rcx
add    %rax,%rcx
add    $0xffffffffffffffff,%rcx
mov    %rcx,0x18(%rsp)
jmp    11e0 <main+0xb0>
xor    %eax,%eax
test   %bpl,%bpl
sete   %al
movzbl %r12b,%ecx
and    %ecx,%eax
xor    $0x1,%rax
add    %rax,%rbx
jmp    11e0 <main+0xb0>
xor    %eax,%eax
test   %bpl,%bpl
sete   %al
movzbl %r12b,%ecx
and    %ecx,%eax
add    %rax,%rbx
add    $0xffffffffffffffff,%rbx
jmp    11e0 <main+0xb0>
mov    %eax,%ebp
mov    0x2c74(%rip),%rax
mov    (%rax),%esi
mov    %ebp,%edi
call   1050 <ungetc@plt>
xor    %r13d,%r13d
mov    %ebp,%eax
mov    %rax,0x8(%rsp)
jmp    11e3 <main+0xb3>
mov    %rax,0x8(%rsp)
mov    $0x1,%r12b
jmp    11e3 <main+0xb3>
mov    %rax,0x8(%rsp)
xor    %r13d,%r13d
jmp    11e3 <main+0xb3>
test   %rbx,%rbx
setg   %r14b
jle    13c4 <main+0x294>
mov    0x2c1a(%rip),%rax
mov    (%rax),%edi
lea    0xf65(%rip),%rsi
call   1040 <fprintf@plt>
cmpq   $0x0,0x18(%rsp)
setg   %r13b
mov    0x4(%rsp),%ebx
mov    0x14(%rsp),%r15d
jle    13ee <main+0x2be>
mov    0x2bf0(%rip),%rax
mov    (%rax),%edi
lea    0xf53(%rip),%rsi
call   1040 <fprintf@plt>
cmpq   $0x0,0x20(%rsp)
setg   %bpl
jle    140f <main+0x2df>
mov    0x2bcf(%rip),%rax
mov    (%rax),%edi
lea    0xf4c(%rip),%rsi
call   1040 <fprintf@plt>
test   %bl,%bl
je     1444 <main+0x314>
mov    0x2bb6(%rip),%rax
mov    (%rax),%edi
lea    0xf50(%rip),%rsi
call   1040 <fprintf@plt>
test   %r15b,%r15b
je     144b <main+0x31b>
mov    0x2b9c(%rip),%rax
mov    (%rax),%edi
lea    0xf54(%rip),%rsi
call   1040 <fprintf@plt>
jmp    144e <main+0x31e>
xor    %ebx,%ebx
test   %r15b,%r15b
jne    142d <main+0x2fd>
xor    %r15d,%r15d
test   %r12b,%r12b
mov    %ebx,0x4(%rsp)
je     146e <main+0x33e>
mov    0x2b72(%rip),%rax
mov    (%rax),%edi
lea    0xf48(%rip),%rsi
call   1040 <fprintf@plt>
jmp    1471 <main+0x341>
xor    %r12d,%r12d
mov    0x10(%rsp),%ebx
test   %bl,%bl
je     1490 <main+0x360>
mov    0x2b50(%rip),%rax
mov    (%rax),%edi
lea    0xf49(%rip),%rsi
call   1040 <fprintf@plt>
jmp    1492 <main+0x362>
xor    %ebx,%ebx
mov    0x4(%rsp),%ecx
mov    %r15d,%edx
or     %dl,%r12b
or     %bl,%r12b
or     %cl,%r14b
or     %r13b,%bpl
or     %r14b,%bpl
or     %r12b,%bpl
movzbl %bpl,%eax
add    $0x28,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@EOF = global i32 0
@stdin = global i32 0
@stderr = global i32 0
@.str = [24 x i8] c"ERROR: too many braces\0A\00"
@.str.1 = [26 x i8] c"ERROR: too many brackets\0A\00"
@.str.2 = [29 x i8] c"ERROR: too many parentheses\0A\00"
@.str.3 = [30 x i8] c"ERROR: unclosed double quote\0A\00"
@.str.4 = [30 x i8] c"ERROR: unclosed single quote\0A\00"
@.str.5 = [35 x i8] c"ERROR: unclosed multiline comment\0A\00"
@.str.6 = [46 x i8] c"ERROR: improperly formatted escape character\0A\00"
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
%6 = alloca i32
%7 = alloca i64
%8 = alloca i64
%9 = alloca i64
%10 = alloca i8
%11 = alloca i8
%12 = alloca i8
%13 = alloca i8
%14 = alloca i8
%15 = alloca i32
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
store i64 0, i64* %7
store i64 0, i64* %8
store i64 0, i64* %9
store i8 0, i8* %10
store i8 0, i8* %11
store i8 0, i8* %12
store i8 0, i8* %13
store i8 0, i8* %14
br label %16
16: ; preds = %175, %174, %102, %2
%17 = call i32 (...) @getchar()
store i32 %17, i32* %6
%18 = load i32, i32* @EOF
%19 = icmp sgt i32 %17, %18
br i1 %19, label %20, label %176
20: ; preds = %16
%21 = load i32, i32* %6
switch i32 %21, label %174 [
i32 123, label %22
i32 125, label %35
i32 91, label %48
i32 93, label %61
i32 40, label %74
i32 41, label %87
i32 92, label %100
i32 34, label %108
i32 39, label %124
i32 47, label %140
i32 42, label %155
i32 10, label %169
]
22: ; preds = %20
%23 = load i8, i8* %13
%24 = sext i8 %23 to i32
%25 = load i8, i8* %12
%26 = icmp ne i8 %25, 0
%27 = xor i1 %26, true
%28 = zext i1 %27 to i32
%29 = and i32 %24, %28
%30 = icmp ne i32 %29, 0
br i1 %30, label %34, label %31
31: ; preds = %22
%32 = load i64, i64* %7
%33 = add nsw i64 %32, 1
store i64 %33, i64* %7
br label %34
34: ; preds = %31, %22
br label %175
35: ; preds = %20
%36 = load i8, i8* %13
%37 = sext i8 %36 to i32
%38 = load i8, i8* %12
%39 = icmp ne i8 %38, 0
%40 = xor i1 %39, true
%41 = zext i1 %40 to i32
%42 = and i32 %37, %41
%43 = icmp ne i32 %42, 0
br i1 %43, label %47, label %44
44: ; preds = %35
%45 = load i64, i64* %7
%46 = add nsw i64 %45, -1
store i64 %46, i64* %7
br label %47
47: ; preds = %44, %35
br label %175
48: ; preds = %20
%49 = load i8, i8* %13
%50 = sext i8 %49 to i32
%51 = load i8, i8* %12
%52 = icmp ne i8 %51, 0
%53 = xor i1 %52, true
%54 = zext i1 %53 to i32
%55 = and i32 %50, %54
%56 = icmp ne i32 %55, 0
br i1 %56, label %60, label %57
57: ; preds = %48
%58 = load i64, i64* %8
%59 = add nsw i64 %58, 1
store i64 %59, i64* %8
br label %60
60: ; preds = %57, %48
br label %175
61: ; preds = %20
%62 = load i8, i8* %13
%63 = sext i8 %62 to i32
%64 = load i8, i8* %12
%65 = icmp ne i8 %64, 0
%66 = xor i1 %65, true
%67 = zext i1 %66 to i32
%68 = and i32 %63, %67
%69 = icmp ne i32 %68, 0
br i1 %69, label %73, label %70
70: ; preds = %61
%71 = load i64, i64* %8
%72 = add nsw i64 %71, -1
store i64 %72, i64* %8
br label %73
73: ; preds = %70, %61
br label %175
74: ; preds = %20
%75 = load i8, i8* %13
%76 = sext i8 %75 to i32
%77 = load i8, i8* %12
%78 = icmp ne i8 %77, 0
%79 = xor i1 %78, true
%80 = zext i1 %79 to i32
%81 = and i32 %76, %80
%82 = icmp ne i32 %81, 0
br i1 %82, label %86, label %83
83: ; preds = %74
%84 = load i64, i64* %9
%85 = add nsw i64 %84, 1
store i64 %85, i64* %9
br label %86
86: ; preds = %83, %74
br label %175
87: ; preds = %20
%88 = load i8, i8* %13
%89 = sext i8 %88 to i32
%90 = load i8, i8* %12
%91 = icmp ne i8 %90, 0
%92 = xor i1 %91, true
%93 = zext i1 %92 to i32
%94 = and i32 %89, %93
%95 = icmp ne i32 %94, 0
br i1 %95, label %99, label %96
96: ; preds = %87
%97 = load i64, i64* %9
%98 = add nsw i64 %97, -1
store i64 %98, i64* %9
br label %99
99: ; preds = %96, %87
br label %175
100: ; preds = %20
%101 = load i32, i32* %15
switch i32 %101, label %103 [
i32 48, label %102
i32 97, label %102
i32 98, label %102
i32 116, label %102
i32 110, label %102
i32 118, label %102
i32 102, label %102
i32 114, label %102
i32 39, label %102
i32 34, label %102
i32 92, label %102
i32 63, label %102
]
102: ; preds = %100, %100, %100, %100, %100, %100, %100, %100, %100, %100, %100, %100
br label %16
103: ; preds = %100
%104 = load i32, i32* %15
%105 = load i32, i32* @stdin
%106 = call i32 @ungetc(i32 %104, i32 %105)
store i8 1, i8* %14
br label %107
107: ; preds = %103
br label %175
108: ; preds = %20
%109 = load i8, i8* %13
%110 = sext i8 %109 to i32
%111 = load i8, i8* %12
%112 = icmp ne i8 %111, 0
%113 = xor i1 %112, true
%114 = zext i1 %113 to i32
%115 = and i32 %110, %114
%116 = icmp ne i32 %115, 0
br i1 %116, label %123, label %117
117: ; preds = %108
%118 = load i8, i8* %10
%119 = icmp ne i8 %118, 0
%120 = xor i1 %119, true
%121 = zext i1 %120 to i32
%122 = trunc i32 %121 to i8
store i8 %122, i8* %10
br label %123
123: ; preds = %117, %108
br label %175
124: ; preds = %20
%125 = load i8, i8* %13
%126 = sext i8 %125 to i32
%127 = load i8, i8* %12
%128 = icmp ne i8 %127, 0
%129 = xor i1 %128, true
%130 = zext i1 %129 to i32
%131 = and i32 %126, %130
%132 = icmp ne i32 %131, 0
br i1 %132, label %139, label %133
133: ; preds = %124
%134 = load i8, i8* %11
%135 = icmp ne i8 %134, 0
%136 = xor i1 %135, true
%137 = zext i1 %136 to i32
%138 = trunc i32 %137 to i8
store i8 %138, i8* %11
br label %139
139: ; preds = %133, %124
br label %175
140: ; preds = %20
%141 = load i8, i8* %12
%142 = icmp ne i8 %141, 0
br i1 %142, label %143, label %144
143: ; preds = %140
br label %175
144: ; preds = %140
%145 = call i32 (...) @getchar()
store i32 %145, i32* %15
%146 = load i32, i32* %15
%147 = icmp eq i32 %146, 42
br i1 %147, label %148, label %149
148: ; preds = %144
store i8 1, i8* %13
br label %154
149: ; preds = %144
%150 = load i32, i32* %15
%151 = icmp eq i32 %150, 47
br i1 %151, label %152, label %153
152: ; preds = %149
store i8 1, i8* %12
br label %153
153: ; preds = %152, %149
br label %154
154: ; preds = %153, %148
br label %175
155: ; preds = %20
%156 = load i8, i8* %12
%157 = icmp ne i8 %156, 0
br i1 %157, label %158, label %159
158: ; preds = %155
br label %175
159: ; preds = %155
%160 = call i32 (...) @getchar()
store i32 %160, i32* %15
%161 = load i32, i32* %15
%162 = icmp eq i32 %161, 47
br i1 %162, label %163, label %164
163: ; preds = %159
store i8 0, i8* %13
br label %168
164: ; preds = %159
%165 = load i32, i32* %15
%166 = load i32, i32* @stdin
%167 = call i32 @ungetc(i32 %165, i32 %166)
br label %168
168: ; preds = %164, %163
br label %169
169: ; preds = %20, %168
%170 = load i8, i8* %12
%171 = icmp ne i8 %170, 0
br i1 %171, label %172, label %173
172: ; preds = %169
store i8 0, i8* %12
br label %173
173: ; preds = %172, %169
br label %175
174: ; preds = %20
br label %16
175: ; preds = %173, %158, %154, %143, %139, %123, %107, %99, %86, %73, %60, %47, %34
br label %16
176: ; preds = %16
%177 = load i64, i64* %7
%178 = icmp sgt i64 %177, 0
br i1 %178, label %179, label %182
179: ; preds = %176
%180 = load i32, i32* @stderr
%181 = call i32 @fprintf(i32 %180, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str, i64 0, i64 0))
br label %182
182: ; preds = %179, %176
%183 = load i64, i64* %8
%184 = icmp sgt i64 %183, 0
br i1 %184, label %185, label %188
185: ; preds = %182
%186 = load i32, i32* @stderr
%187 = call i32 @fprintf(i32 %186, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.1, i64 0, i64 0))
br label %188
188: ; preds = %185, %182
%189 = load i64, i64* %9
%190 = icmp sgt i64 %189, 0
br i1 %190, label %191, label %194
191: ; preds = %188
%192 = load i32, i32* @stderr
%193 = call i32 @fprintf(i32 %192, i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.2, i64 0, i64 0))
br label %194
194: ; preds = %191, %188
%195 = load i8, i8* %10
%196 = icmp ne i8 %195, 0
br i1 %196, label %197, label %200
197: ; preds = %194
%198 = load i32, i32* @stderr
%199 = call i32 @fprintf(i32 %198, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.3, i64 0, i64 0))
br label %200
200: ; preds = %197, %194
%201 = load i8, i8* %11
%202 = icmp ne i8 %201, 0
br i1 %202, label %203, label %206
203: ; preds = %200
%204 = load i32, i32* @stderr
%205 = call i32 @fprintf(i32 %204, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.4, i64 0, i64 0))
br label %206
206: ; preds = %203, %200
%207 = load i8, i8* %13
%208 = icmp ne i8 %207, 0
br i1 %208, label %209, label %212
209: ; preds = %206
%210 = load i32, i32* @stderr
%211 = call i32 @fprintf(i32 %210, i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.5, i64 0, i64 0))
br label %212
212: ; preds = %209, %206
%213 = load i8, i8* %14
%214 = icmp ne i8 %213, 0
br i1 %214, label %215, label %218
215: ; preds = %212
%216 = load i32, i32* @stderr
%217 = call i32 @fprintf(i32 %216, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.6, i64 0, i64 0))
br label %218
218: ; preds = %215, %212
%219 = load i64, i64* %7
%220 = icmp sgt i64 %219, 0
%221 = zext i1 %220 to i32
%222 = load i64, i64* %8
%223 = icmp sgt i64 %222, 0
%224 = zext i1 %223 to i32
%225 = or i32 %221, %224
%226 = load i64, i64* %9
%227 = icmp sgt i64 %226, 0
%228 = zext i1 %227 to i32
%229 = or i32 %225, %228
%230 = load i8, i8* %10
%231 = sext i8 %230 to i32
%232 = or i32 %229, %231
%233 = load i8, i8* %11
%234 = sext i8 %233 to i32
%235 = or i32 %232, %234
%236 = load i8, i8* %13
%237 = sext i8 %236 to i32
%238 = or i32 %235, %237
%239 = load i8, i8* %14
%240 = sext i8 %239 to i32
%241 = or i32 %238, %240
ret i32 %241
}

LLVM IR (-O2):
@EOF = global i32 0
@stdin = global i32 0
@stderr = global i32 0
@.str = [24 x i8] c"ERROR: too many braces\0A\00"
@.str.1 = [26 x i8] c"ERROR: too many brackets\0A\00"
@.str.2 = [29 x i8] c"ERROR: too many parentheses\0A\00"
@.str.3 = [30 x i8] c"ERROR: unclosed double quote\0A\00"
@.str.4 = [30 x i8] c"ERROR: unclosed single quote\0A\00"
@.str.5 = [35 x i8] c"ERROR: unclosed multiline comment\0A\00"
@.str.6 = [46 x i8] c"ERROR: improperly formatted escape character\0A\00"
define i32 @main(i32 %0, i8** nocapture readnone %1) {
%3 = tail call i32 (...) @getchar()
%4 = load i32, i32* @EOF
%5 = icmp sgt i32 %3, %4
br i1 %5, label %6, label %156
6: ; preds = %2, %105
%7 = phi i32 [ %115, %105 ], [ %3, %2 ]
%8 = phi i32 [ %114, %105 ], [ undef, %2 ]
%9 = phi i8 [ %113, %105 ], [ 0, %2 ]
%10 = phi i8 [ %112, %105 ], [ 0, %2 ]
%11 = phi i8 [ %111, %105 ], [ 0, %2 ]
%12 = phi i8 [ %110, %105 ], [ 0, %2 ]
%13 = phi i8 [ %109, %105 ], [ 0, %2 ]
%14 = phi i64 [ %108, %105 ], [ 0, %2 ]
%15 = phi i64 [ %107, %105 ], [ 0, %2 ]
%16 = phi i64 [ %106, %105 ], [ 0, %2 ]
switch i32 %7, label %105 [
i32 123, label %17
i32 125, label %24
i32 91, label %31
i32 93, label %38
i32 40, label %45
i32 41, label %52
i32 92, label %59
i32 34, label %63
i32 39, label %72
i32 47, label %81
i32 42, label %86
i32 10, label %95
]
17: ; preds = %6
%18 = zext i8 %10 to i64
%19 = icmp eq i8 %11, 0
%20 = zext i1 %19 to i64
%21 = and i64 %18, %20
%22 = xor i64 %21, 1
%23 = add nsw i64 %22, %16
br label %95
24: ; preds = %6
%25 = zext i8 %10 to i64
%26 = icmp eq i8 %11, 0
%27 = zext i1 %26 to i64
%28 = and i64 %25, %27
%29 = add i64 %16, -1
%30 = add i64 %29, %28
br label %95
31: ; preds = %6
%32 = zext i8 %10 to i64
%33 = icmp eq i8 %11, 0
%34 = zext i1 %33 to i64
%35 = and i64 %32, %34
%36 = xor i64 %35, 1
%37 = add nsw i64 %36, %15
br label %95
38: ; preds = %6
%39 = zext i8 %10 to i64
%40 = icmp eq i8 %11, 0
%41 = zext i1 %40 to i64
%42 = and i64 %39, %41
%43 = add i64 %15, -1
%44 = add i64 %43, %42
br label %95
45: ; preds = %6
%46 = zext i8 %10 to i64
%47 = icmp eq i8 %11, 0
%48 = zext i1 %47 to i64
%49 = and i64 %46, %48
%50 = xor i64 %49, 1
%51 = add nsw i64 %50, %14
br label %95
52: ; preds = %6
%53 = zext i8 %10 to i64
%54 = icmp eq i8 %11, 0
%55 = zext i1 %54 to i64
%56 = and i64 %53, %55
%57 = add i64 %14, -1
%58 = add i64 %57, %56
br label %95
59: ; preds = %6
switch i32 %8, label %60 [
i32 48, label %105
i32 97, label %105
i32 98, label %105
i32 116, label %105
i32 110, label %105
i32 118, label %105
i32 102, label %105
i32 114, label %105
i32 39, label %105
i32 34, label %105
i32 92, label %105
i32 63, label %105
]
60: ; preds = %59
%61 = load i32, i32* @stdin
%62 = tail call i32 @ungetc(i32 %8, i32 %61)
br label %95
63: ; preds = %6
%64 = zext i8 %10 to i32
%65 = icmp eq i8 %11, 0
%66 = zext i1 %65 to i32
%67 = and i32 %64, %66
%68 = icmp eq i32 %67, 0
br i1 %68, label %69, label %95
69: ; preds = %63
%70 = icmp eq i8 %13, 0
%71 = zext i1 %70 to i8
br label %95
72: ; preds = %6
%73 = zext i8 %10 to i32
%74 = icmp eq i8 %11, 0
%75 = zext i1 %74 to i32
%76 = and i32 %73, %75
%77 = icmp eq i32 %76, 0
br i1 %77, label %78, label %95
78: ; preds = %72
%79 = icmp eq i8 %12, 0
%80 = zext i1 %79 to i8
br label %95
81: ; preds = %6
%82 = icmp eq i8 %11, 0
br i1 %82, label %83, label %95
83: ; preds = %81
%84 = tail call i32 (...) @getchar()
switch i32 %84, label %94 [
i32 42, label %95
i32 47, label %85
]
85: ; preds = %83
br label %95
86: ; preds = %6
%87 = icmp eq i8 %11, 0
br i1 %87, label %88, label %95
88: ; preds = %86
%89 = tail call i32 (...) @getchar()
%90 = icmp eq i32 %89, 47
br i1 %90, label %95, label %91
91: ; preds = %88
%92 = load i32, i32* @stdin
%93 = tail call i32 @ungetc(i32 %89, i32 %92)
br label %95
94: ; preds = %83
br label %95
95: ; preds = %52, %45, %38, %31, %24, %17, %6, %91, %88, %83, %94, %86, %85, %81, %72, %78, %63, %69, %60
%96 = phi i64 [ %16, %86 ], [ %16, %81 ], [ %16, %85 ], [ %16, %72 ], [ %16, %78 ], [ %16, %63 ], [ %16, %69 ], [ %16, %60 ], [ %23, %17 ], [ %30, %24 ], [ %16, %31 ], [ %16, %38 ], [ %16, %45 ], [ %16, %52 ], [ %16, %83 ], [ %16, %94 ], [ %16, %88 ], [ %16, %91 ], [ %16, %6 ]
%97 = phi i64 [ %15, %86 ], [ %15, %81 ], [ %15, %85 ], [ %15, %72 ], [ %15, %78 ], [ %15, %63 ], [ %15, %69 ], [ %15, %60 ], [ %15, %17 ], [ %15, %24 ], [ %37, %31 ], [ %44, %38 ], [ %15, %45 ], [ %15, %52 ], [ %15, %83 ], [ %15, %94 ], [ %15, %88 ], [ %15, %91 ], [ %15, %6 ]
%98 = phi i64 [ %14, %86 ], [ %14, %81 ], [ %14, %85 ], [ %14, %72 ], [ %14, %78 ], [ %14, %63 ], [ %14, %69 ], [ %14, %60 ], [ %14, %17 ], [ %14, %24 ], [ %14, %31 ], [ %14, %38 ], [ %51, %45 ], [ %58, %52 ], [ %14, %83 ], [ %14, %94 ], [ %14, %88 ], [ %14, %91 ], [ %14, %6 ]
%99 = phi i8 [ %13, %86 ], [ %13, %81 ], [ %13, %85 ], [ %13, %72 ], [ %13, %78 ], [ %13, %63 ], [ %71, %69 ], [ %13, %60 ], [ %13, %17 ], [ %13, %24 ], [ %13, %31 ], [ %13, %38 ], [ %13, %45 ], [ %13, %52 ], [ %13, %83 ], [ %13, %94 ], [ %13, %88 ], [ %13, %91 ], [ %13, %6 ]
%100 = phi i8 [ %12, %86 ], [ %12, %81 ], [ %12, %85 ], [ %12, %72 ], [ %80, %78 ], [ %12, %63 ], [ %12, %69 ], [ %12, %60 ], [ %12, %17 ], [ %12, %24 ], [ %12, %31 ], [ %12, %38 ], [ %12, %45 ], [ %12, %52 ], [ %12, %83 ], [ %12, %94 ], [ %12, %88 ], [ %12, %91 ], [ %12, %6 ]
%101 = phi i8 [ 1, %86 ], [ 1, %81 ], [ 1, %85 ], [ %11, %72 ], [ %11, %78 ], [ %11, %63 ], [ %11, %69 ], [ %11, %60 ], [ %11, %17 ], [ %11, %24 ], [ %11, %31 ], [ %11, %38 ], [ %11, %45 ], [ %11, %52 ], [ 0, %83 ], [ 0, %94 ], [ 0, %88 ], [ 0, %91 ], [ 0, %6 ]
%102 = phi i8 [ %10, %86 ], [ %10, %81 ], [ %10, %85 ], [ %10, %72 ], [ %10, %78 ], [ %10, %63 ], [ %10, %69 ], [ %10, %60 ], [ %10, %17 ], [ %10, %24 ], [ %10, %31 ], [ %10, %38 ], [ %10, %45 ], [ %10, %52 ], [ 1, %83 ], [ %10, %94 ], [ 0, %88 ], [ %10, %91 ], [ %10, %6 ]
%103 = phi i8 [ %9, %86 ], [ %9, %81 ], [ %9, %85 ], [ %9, %72 ], [ %9, %78 ], [ %9, %63 ], [ %9, %69 ], [ 1, %60 ], [ %9, %17 ], [ %9, %24 ], [ %9, %31 ], [ %9, %38 ], [ %9, %45 ], [ %9, %52 ], [ %9, %83 ], [ %9, %94 ], [ %9, %88 ], [ %9, %91 ], [ %9, %6 ]
%104 = phi i32 [ %8, %86 ], [ %8, %81 ], [ 47, %85 ], [ %8, %72 ], [ %8, %78 ], [ %8, %63 ], [ %8, %69 ], [ %8, %60 ], [ %8, %17 ], [ %8, %24 ], [ %8, %31 ], [ %8, %38 ], [ %8, %45 ], [ %8, %52 ], [ %84, %83 ], [ %84, %94 ], [ 47, %88 ], [ %89, %91 ], [ %8, %6 ]
br label %105
105: ; preds = %6, %59, %59, %59, %59, %59, %59, %59, %59, %59, %59, %59, %59, %95
%106 = phi i64 [ %96, %95 ], [ %16, %59 ], [ %16, %59 ], [ %16, %59 ], [ %16, %59 ], [ %16, %59 ], [ %16, %59 ], [ %16, %59 ], [ %16, %59 ], [ %16, %59 ], [ %16, %59 ], [ %16, %59 ], [ %16, %59 ], [ %16, %6 ]
%107 = phi i64 [ %97, %95 ], [ %15, %59 ], [ %15, %59 ], [ %15, %59 ], [ %15, %59 ], [ %15, %59 ], [ %15, %59 ], [ %15, %59 ], [ %15, %59 ], [ %15, %59 ], [ %15, %59 ], [ %15, %59 ], [ %15, %59 ], [ %15, %6 ]
%108 = phi i64 [ %98, %95 ], [ %14, %59 ], [ %14, %59 ], [ %14, %59 ], [ %14, %59 ], [ %14, %59 ], [ %14, %59 ], [ %14, %59 ], [ %14, %59 ], [ %14, %59 ], [ %14, %59 ], [ %14, %59 ], [ %14, %59 ], [ %14, %6 ]
%109 = phi i8 [ %99, %95 ], [ %13, %59 ], [ %13, %59 ], [ %13, %59 ], [ %13, %59 ], [ %13, %59 ], [ %13, %59 ], [ %13, %59 ], [ %13, %59 ], [ %13, %59 ], [ %13, %59 ], [ %13, %59 ], [ %13, %59 ], [ %13, %6 ]
%110 = phi i8 [ %100, %95 ], [ %12, %59 ], [ %12, %59 ], [ %12, %59 ], [ %12, %59 ], [ %12, %59 ], [ %12, %59 ], [ %12, %59 ], [ %12, %59 ], [ %12, %59 ], [ %12, %59 ], [ %12, %59 ], [ %12, %59 ], [ %12, %6 ]
%111 = phi i8 [ %101, %95 ], [ %11, %59 ], [ %11, %59 ], [ %11, %59 ], [ %11, %59 ], [ %11, %59 ], [ %11, %59 ], [ %11, %59 ], [ %11, %59 ], [ %11, %59 ], [ %11, %59 ], [ %11, %59 ], [ %11, %59 ], [ %11, %6 ]
%112 = phi i8 [ %102, %95 ], [ %10, %59 ], [ %10, %59 ], [ %10, %59 ], [ %10, %59 ], [ %10, %59 ], [ %10, %59 ], [ %10, %59 ], [ %10, %59 ], [ %10, %59 ], [ %10, %59 ], [ %10, %59 ], [ %10, %59 ], [ %10, %6 ]
%113 = phi i8 [ %103, %95 ], [ %9, %59 ], [ %9, %59 ], [ %9, %59 ], [ %9, %59 ], [ %9, %59 ], [ %9, %59 ], [ %9, %59 ], [ %9, %59 ], [ %9, %59 ], [ %9, %59 ], [ %9, %59 ], [ %9, %59 ], [ %9, %6 ]
%114 = phi i32 [ %104, %95 ], [ %8, %59 ], [ %8, %59 ], [ %8, %59 ], [ %8, %59 ], [ %8, %59 ], [ %8, %59 ], [ %8, %59 ], [ %8, %59 ], [ %8, %59 ], [ %8, %59 ], [ %8, %59 ], [ %8, %59 ], [ %8, %6 ]
%115 = tail call i32 (...) @getchar()
%116 = load i32, i32* @EOF
%117 = icmp sgt i32 %115, %116
br i1 %117, label %6, label %118
118: ; preds = %105
%119 = icmp sgt i64 %106, 0
br i1 %119, label %120, label %123
120: ; preds = %118
%121 = load i32, i32* @stderr
%122 = tail call i32 @fprintf(i32 %121, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str, i64 0, i64 0))
br label %123
123: ; preds = %120, %118
%124 = icmp sgt i64 %107, 0
br i1 %124, label %125, label %128
125: ; preds = %123
%126 = load i32, i32* @stderr
%127 = tail call i32 @fprintf(i32 %126, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.1, i64 0, i64 0))
br label %128
128: ; preds = %125, %123
%129 = icmp sgt i64 %108, 0
br i1 %129, label %130, label %133
130: ; preds = %128
%131 = load i32, i32* @stderr
%132 = tail call i32 @fprintf(i32 %131, i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.2, i64 0, i64 0))
br label %133
133: ; preds = %130, %128
%134 = icmp eq i8 %109, 0
br i1 %134, label %138, label %135
135: ; preds = %133
%136 = load i32, i32* @stderr
%137 = tail call i32 @fprintf(i32 %136, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.3, i64 0, i64 0))
br label %138
138: ; preds = %135, %133
%139 = phi i8 [ %109, %135 ], [ 0, %133 ]
%140 = icmp eq i8 %110, 0
br i1 %140, label %144, label %141
141: ; preds = %138
%142 = load i32, i32* @stderr
%143 = tail call i32 @fprintf(i32 %142, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.4, i64 0, i64 0))
br label %144
144: ; preds = %141, %138
%145 = phi i8 [ %110, %141 ], [ 0, %138 ]
%146 = icmp eq i8 %112, 0
br i1 %146, label %150, label %147
147: ; preds = %144
%148 = load i32, i32* @stderr
%149 = tail call i32 @fprintf(i32 %148, i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.5, i64 0, i64 0))
br label %150
150: ; preds = %147, %144
%151 = phi i8 [ %112, %147 ], [ 0, %144 ]
%152 = icmp eq i8 %113, 0
br i1 %152, label %156, label %153
153: ; preds = %150
%154 = load i32, i32* @stderr
%155 = tail call i32 @fprintf(i32 %154, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.6, i64 0, i64 0))
br label %156
156: ; preds = %2, %153, %150
%157 = phi i1 [ %129, %153 ], [ %129, %150 ], [ false, %2 ]
%158 = phi i1 [ %119, %153 ], [ %119, %150 ], [ false, %2 ]
%159 = phi i8 [ %113, %153 ], [ 0, %150 ], [ 0, %2 ]
%160 = phi i8 [ %151, %153 ], [ %151, %150 ], [ 0, %2 ]
%161 = phi i8 [ %145, %153 ], [ %145, %150 ], [ 0, %2 ]
%162 = phi i8 [ %139, %153 ], [ %139, %150 ], [ 0, %2 ]
%163 = phi i1 [ %124, %153 ], [ %124, %150 ], [ false, %2 ]
%164 = or i1 %158, %163
%165 = or i1 %164, %157
%166 = zext i1 %165 to i32
%167 = zext i8 %162 to i32
%168 = or i32 %166, %167
%169 = zext i8 %161 to i32
%170 = or i32 %168, %169
%171 = zext i8 %160 to i32
%172 = or i32 %170, %171
%173 = zext i8 %159 to i32
%174 = or i32 %172, %173
ret i32 %174
}