#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 check_bracket_close(char *, int, char *);
int check_bracket_open(char *, int, char *);
int check_commentary_close(char *, int, char *);
int check_quote_close(char *, int, char);
int /*<<< orphan*/ copy(char *, char *);
int /*<<< orphan*/ printf(char *, int, int, char, char *);
int /*<<< orphan*/ start_vet(char *, int);
void check_error(char vet[]) {
  int i, line = 1, size = 100;
  char error_txt[size];
  char commentary, single_quote, double_quote;
  commentary = single_quote = double_quote = 1;
  for (i = 0; vet[i] != '\0'; ++i) {
    start_vet(error_txt, size);
    if (vet[i] == '\n')
      ++line;
    if (vet[i] == "/**/"[0] && vet[i + 1] == "/**/"[1]) {
      commentary = 2;
      if (check_commentary_close(vet, i, "/**/") == 2)
        copy(error_txt, "UNMATCHED_COMMENTARY");
    } else if (vet[i] == "/**/"[2] && vet[i + 1] == "/**/"[3]) {
      if (commentary == 1)
        copy(error_txt, "UNMATCHED_COMMENTARY");
      commentary = 1;
    } else if (commentary == 1) {
      if (double_quote == 2 && vet[i] == '"')
        double_quote = 1;
      else if (single_quote == 2 && vet[i] == '\'')
        single_quote = 1;
      else if (vet[i] == '"') {
        double_quote = 2;
        if (check_quote_close(vet, i, '"') == 2)
          copy(error_txt, "UNMATCHED_DOUBLE_QUOTE");
      } else if (vet[i] == '\'') {
        single_quote = 2;
        if (check_quote_close(vet, i, '\'') == 2)
          copy(error_txt, "UNMATCHED_SINGLE_QUOTE");
      } else if (single_quote == 1 && double_quote == 1) {
        if (vet[i] == "{}"[0] && check_bracket_close(vet, i, "{}") == 2)
          copy(error_txt, "UNMATCHED_BRACKET");
        else if (vet[i] == "()"[0] && check_bracket_close(vet, i, "()") == 2)
          copy(error_txt, "UNMATCHED_BRACKET");
        else if (vet[i] == "[]"[0] && check_bracket_close(vet, i, "[]") == 2)
          copy(error_txt, "UNMATCHED_BRACKET");
        else if (vet[i] == "<>"[0] && check_bracket_close(vet, i, "<>") == 2)
          copy(error_txt, "UNMATCHED_BRACKET");
        else if (vet[i] == "{}"[1] && check_bracket_open(vet, i, "{}") == 1)
          copy(error_txt, "UNMATCHED_BRACKET");
        else if (vet[i] == "()"[1] && check_bracket_open(vet, i, "()") == 1)
          copy(error_txt, "UNMATCHED_BRACKET");
        else if (vet[i] == "[]"[1] && check_bracket_open(vet, i, "[]") == 1)
          copy(error_txt, "UNMATCHED_BRACKET");
        else if (vet[i] == "<>"[1] && check_bracket_open(vet, i, "<>") == 1)
          copy(error_txt, "UNMATCHED_BRACKET");
      }
    }
    if (error_txt[0] != ' ')
      printf("Line: %d - Character position: %d (%c) - Erro: %s\n", line, i + 1,
             vet[i], error_txt);
  }
}


x86 assembly (clang, -O0):
<check_error>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %rdi,-0x8(%rbp)
movl   $0x1,-0x10(%rbp)
movl   $0x64,-0x14(%rbp)
mov    -0x14(%rbp),%eax
mov    %rsp,%rcx
mov    %rcx,-0x20(%rbp)
mov    %rax,%rdx
add    $0xf,%rdx
and    $0xfffffffffffffff0,%rdx
mov    %rsp,%rcx
sub    %rdx,%rcx
mov    %rcx,-0x38(%rbp)
mov    %rcx,%rsp
mov    %rax,-0x28(%rbp)
movb   $0x1,-0x2b(%rbp)
movb   $0x1,-0x2a(%rbp)
movb   $0x1,-0x29(%rbp)
movl   $0x0,-0xc(%rbp)
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
je     16ce <check_error+0x55e>
mov    -0x38(%rbp),%rdi
mov    -0x14(%rbp),%esi
call   1080 <start_vet@plt>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xa,%eax
jne    1202 <check_error+0x92>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
movsbl 0xdeb(%rip),%ecx
cmp    %ecx,%eax
jne    1272 <check_error+0x102>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
movsbl 0xdcc(%rip),%ecx
cmp    %ecx,%eax
jne    1272 <check_error+0x102>
movb   $0x2,-0x29(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
lea    0xdb1(%rip),%rdx
call   1030 <check_commentary_close@plt>
cmp    $0x2,%eax
jne    126d <check_error+0xfd>
mov    -0x38(%rbp),%rdi
lea    0xd9d(%rip),%rsi
call   1050 <copy@plt>
jmp    1686 <check_error+0x516>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
movsbl 0xd7d(%rip),%ecx
cmp    %ecx,%eax
jne    12d3 <check_error+0x163>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
movsbl 0xd5e(%rip),%ecx
cmp    %ecx,%eax
jne    12d3 <check_error+0x163>
movsbl -0x29(%rbp),%eax
cmp    $0x1,%eax
jne    12ca <check_error+0x15a>
mov    -0x38(%rbp),%rdi
lea    0xd40(%rip),%rsi
call   1050 <copy@plt>
movb   $0x1,-0x29(%rbp)
jmp    1681 <check_error+0x511>
movsbl -0x29(%rbp),%eax
cmp    $0x1,%eax
jne    167c <check_error+0x50c>
movsbl -0x2b(%rbp),%eax
cmp    $0x2,%eax
jne    130b <check_error+0x19b>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x22,%eax
jne    130b <check_error+0x19b>
movb   $0x1,-0x2b(%rbp)
jmp    1677 <check_error+0x507>
movsbl -0x2a(%rbp),%eax
cmp    $0x2,%eax
jne    1336 <check_error+0x1c6>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x27,%eax
jne    1336 <check_error+0x1c6>
movb   $0x1,-0x2a(%rbp)
jmp    1672 <check_error+0x502>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x22,%eax
jne    137e <check_error+0x20e>
movb   $0x2,-0x2b(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    $0x22,%edx
call   1090 <check_quote_close@plt>
cmp    $0x2,%eax
jne    1379 <check_error+0x209>
mov    -0x38(%rbp),%rdi
lea    0xca6(%rip),%rsi
call   1050 <copy@plt>
jmp    166d <check_error+0x4fd>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x27,%eax
jne    13c6 <check_error+0x256>
movb   $0x2,-0x2a(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    $0x27,%edx
call   1090 <check_quote_close@plt>
cmp    $0x2,%eax
jne    13c1 <check_error+0x251>
mov    -0x38(%rbp),%rdi
lea    0xc75(%rip),%rsi
call   1050 <copy@plt>
jmp    1668 <check_error+0x4f8>
movsbl -0x2a(%rbp),%eax
cmp    $0x1,%eax
jne    1663 <check_error+0x4f3>
movsbl -0x2b(%rbp),%eax
cmp    $0x1,%eax
jne    1663 <check_error+0x4f3>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
movsbl 0xc55(%rip),%ecx
cmp    %ecx,%eax
jne    142c <check_error+0x2bc>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
lea    0xc3f(%rip),%rdx
call   1070 <check_bracket_close@plt>
cmp    $0x2,%eax
jne    142c <check_error+0x2bc>
mov    -0x38(%rbp),%rdi
lea    0xc29(%rip),%rsi
call   1050 <copy@plt>
jmp    165e <check_error+0x4ee>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
movsbl 0xc1e(%rip),%ecx
cmp    %ecx,%eax
jne    1478 <check_error+0x308>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
lea    0xc08(%rip),%rdx
call   1070 <check_bracket_close@plt>
cmp    $0x2,%eax
jne    1478 <check_error+0x308>
mov    -0x38(%rbp),%rdi
lea    0xbdd(%rip),%rsi
call   1050 <copy@plt>
jmp    1659 <check_error+0x4e9>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
movsbl 0xbd5(%rip),%ecx
cmp    %ecx,%eax
jne    14c4 <check_error+0x354>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
lea    0xbbf(%rip),%rdx
call   1070 <check_bracket_close@plt>
cmp    $0x2,%eax
jne    14c4 <check_error+0x354>
mov    -0x38(%rbp),%rdi
lea    0xb91(%rip),%rsi
call   1050 <copy@plt>
jmp    1654 <check_error+0x4e4>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
movsbl 0xb8c(%rip),%ecx
cmp    %ecx,%eax
jne    1510 <check_error+0x3a0>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
lea    0xb76(%rip),%rdx
call   1070 <check_bracket_close@plt>
cmp    $0x2,%eax
jne    1510 <check_error+0x3a0>
mov    -0x38(%rbp),%rdi
lea    0xb45(%rip),%rsi
call   1050 <copy@plt>
jmp    164f <check_error+0x4df>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
movsbl 0xb26(%rip),%ecx
cmp    %ecx,%eax
jne    155c <check_error+0x3ec>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
lea    0xb0f(%rip),%rdx
call   1060 <check_bracket_open@plt>
cmp    $0x1,%eax
jne    155c <check_error+0x3ec>
mov    -0x38(%rbp),%rdi
lea    0xaf9(%rip),%rsi
call   1050 <copy@plt>
jmp    164a <check_error+0x4da>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
movsbl 0xaef(%rip),%ecx
cmp    %ecx,%eax
jne    15a8 <check_error+0x438>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
lea    0xad8(%rip),%rdx
call   1060 <check_bracket_open@plt>
cmp    $0x1,%eax
jne    15a8 <check_error+0x438>
mov    -0x38(%rbp),%rdi
lea    0xaad(%rip),%rsi
call   1050 <copy@plt>
jmp    1645 <check_error+0x4d5>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
movsbl 0xaa6(%rip),%ecx
cmp    %ecx,%eax
jne    15f4 <check_error+0x484>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
lea    0xa8f(%rip),%rdx
call   1060 <check_bracket_open@plt>
cmp    $0x1,%eax
jne    15f4 <check_error+0x484>
mov    -0x38(%rbp),%rdi
lea    0xa61(%rip),%rsi
call   1050 <copy@plt>
jmp    1640 <check_error+0x4d0>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
movsbl 0xa5d(%rip),%ecx
cmp    %ecx,%eax
jne    163b <check_error+0x4cb>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
lea    0xa46(%rip),%rdx
call   1060 <check_bracket_open@plt>
cmp    $0x1,%eax
jne    163b <check_error+0x4cb>
mov    -0x38(%rbp),%rdi
lea    0xa15(%rip),%rsi
call   1050 <copy@plt>
jmp    1640 <check_error+0x4d0>
jmp    1645 <check_error+0x4d5>
jmp    164a <check_error+0x4da>
jmp    164f <check_error+0x4df>
jmp    1654 <check_error+0x4e4>
jmp    1659 <check_error+0x4e9>
jmp    165e <check_error+0x4ee>
jmp    1663 <check_error+0x4f3>
jmp    1668 <check_error+0x4f8>
jmp    166d <check_error+0x4fd>
jmp    1672 <check_error+0x502>
jmp    1677 <check_error+0x507>
jmp    167c <check_error+0x50c>
jmp    1681 <check_error+0x511>
jmp    1686 <check_error+0x516>
mov    -0x38(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x20,%eax
je     16bb <check_error+0x54b>
mov    -0x38(%rbp),%r8
mov    -0x10(%rbp),%esi
mov    -0xc(%rbp),%edx
add    $0x1,%edx
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
lea    0x9b4(%rip),%rdi
movsbl (%rax,%rcx,1),%ecx
call   1040 <printf@plt>
jmp    16c0 <check_error+0x550>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    11c3 <check_error+0x53>
mov    -0x20(%rbp),%rax
mov    %rax,%rsp
mov    %rbp,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<check_error>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x78,%rsp
cmpb   $0x0,(%rdi)
je     14c7 <check_error+0x357>
mov    %rdi,%rbx
mov    $0x1,%r14d
movb   $0x1,0xf(%rsp)
xor    %ebp,%ebp
movb   $0x1,0xe(%rsp)
mov    $0x1,%r15b
jmp    11bf <check_error+0x4f>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
cmpb   $0x0,0x1(%rbx,%rbp,1)
lea    0x1(%rbp),%rbp
je     14c7 <check_error+0x357>
lea    0x10(%rsp),%rdi
mov    $0x64,%esi
call   1080 <start_vet@plt>
movzbl (%rbx,%rbp,1),%eax
xor    %r13d,%r13d
cmp    $0xa,%al
sete   %r12b
cmp    $0x2a,%al
je     1210 <check_error+0xa0>
cmp    $0x2f,%al
jne    1240 <check_error+0xd0>
cmpb   $0x2a,0x1(%rbx,%rbp,1)
jne    1240 <check_error+0xd0>
mov    %rbx,%rdi
mov    %ebp,%esi
lea    0xe0a(%rip),%rdx
call   1030 <check_commentary_close@plt>
mov    $0x2,%r15b
lea    0xe00(%rip),%rsi
cmp    $0x2,%eax
je     1227 <check_error+0xb7>
jmp    1270 <check_error+0x100>
nopl   0x0(%rax)
cmpb   $0x2f,0x1(%rbx,%rbp,1)
jne    1240 <check_error+0xd0>
lea    0xde7(%rip),%rsi
cmp    $0x1,%r15b
mov    $0x1,%r15b
jne    1270 <check_error+0x100>
lea    0x10(%rsp),%rdi
call   1050 <copy@plt>
jmp    1270 <check_error+0x100>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
cmp    $0x1,%r15b
jne    1270 <check_error+0x100>
cmpb   $0x2,0xf(%rsp)
jne    125b <check_error+0xeb>
mov    $0x1,%r15b
cmp    $0x22,%al
jne    125b <check_error+0xeb>
movb   $0x1,0xf(%rsp)
jmp    1270 <check_error+0x100>
mov    $0x1,%r15b
cmpb   $0x2,0xe(%rsp)
jne    12a1 <check_error+0x131>
cmp    $0x27,%al
jne    12a1 <check_error+0x131>
movb   $0x1,0xe(%rsp)
xchg   %ax,%ax
mov    %r12b,%r13b
add    %r13d,%r14d
cmpb   $0x20,0x10(%rsp)
je     11b0 <check_error+0x40>
movsbl (%rbx,%rbp,1),%ecx
lea    0x1(%rbp),%edx
lea    0xdd7(%rip),%rdi
mov    %r14d,%esi
lea    0x10(%rsp),%r8
call   1040 <printf@plt>
jmp    11b0 <check_error+0x40>
cmp    $0x27,%al
je     12cc <check_error+0x15c>
cmp    $0x22,%al
jne    12ef <check_error+0x17f>
mov    %rbx,%rdi
mov    %ebp,%esi
mov    $0x22,%edx
call   1090 <check_quote_close@plt>
movb   $0x2,0xf(%rsp)
mov    $0x1,%r15b
lea    0xd53(%rip),%rsi
jmp    1205 <check_error+0x95>
mov    %rbx,%rdi
mov    %ebp,%esi
mov    $0x27,%edx
call   1090 <check_quote_close@plt>
movb   $0x2,0xe(%rsp)
mov    $0x1,%r15b
lea    0xd47(%rip),%rsi
jmp    1205 <check_error+0x95>
cmpb   $0x1,0xe(%rsp)
jne    1270 <check_error+0x100>
cmpb   $0x1,0xf(%rsp)
jne    1270 <check_error+0x100>
cmp    $0x7b,%al
jne    133b <check_error+0x1cb>
mov    %rbx,%rdi
mov    %ebp,%esi
lea    0xd33(%rip),%rdx
call   1070 <check_bracket_close@plt>
mov    $0x1,%r15b
lea    0xd27(%rip),%rsi
movb   $0x1,0xe(%rsp)
movb   $0x1,0xf(%rsp)
cmp    $0x2,%eax
je     1227 <check_error+0xb7>
movzbl (%rbx,%rbp,1),%eax
cmp    $0x28,%al
jne    1371 <check_error+0x201>
mov    %rbx,%rdi
mov    %ebp,%esi
lea    0xd12(%rip),%rdx
call   1070 <check_bracket_close@plt>
mov    $0x1,%r15b
lea    0xcf1(%rip),%rsi
movb   $0x1,0xe(%rsp)
movb   $0x1,0xf(%rsp)
cmp    $0x2,%eax
je     1227 <check_error+0xb7>
movzbl (%rbx,%rbp,1),%eax
cmp    $0x5b,%al
jne    13a7 <check_error+0x237>
mov    %rbx,%rdi
mov    %ebp,%esi
lea    0xcdf(%rip),%rdx
call   1070 <check_bracket_close@plt>
mov    $0x1,%r15b
lea    0xcbb(%rip),%rsi
movb   $0x1,0xe(%rsp)
movb   $0x1,0xf(%rsp)
cmp    $0x2,%eax
je     1227 <check_error+0xb7>
movzbl (%rbx,%rbp,1),%eax
cmp    $0x3c,%al
jne    13dd <check_error+0x26d>
mov    %rbx,%rdi
mov    %ebp,%esi
lea    0xcac(%rip),%rdx
call   1070 <check_bracket_close@plt>
mov    $0x1,%r15b
lea    0xc85(%rip),%rsi
movb   $0x1,0xe(%rsp)
movb   $0x1,0xf(%rsp)
cmp    $0x2,%eax
je     1227 <check_error+0xb7>
movzbl (%rbx,%rbp,1),%eax
cmp    $0x7d,%al
jne    1413 <check_error+0x2a3>
mov    %rbx,%rdi
mov    %ebp,%esi
lea    0xc5b(%rip),%rdx
call   1060 <check_bracket_open@plt>
mov    $0x1,%r15b
lea    0xc4f(%rip),%rsi
movb   $0x1,0xe(%rsp)
movb   $0x1,0xf(%rsp)
cmp    $0x1,%eax
je     1227 <check_error+0xb7>
movzbl (%rbx,%rbp,1),%eax
cmp    $0x29,%al
jne    1449 <check_error+0x2d9>
mov    %rbx,%rdi
mov    %ebp,%esi
lea    0xc3a(%rip),%rdx
call   1060 <check_bracket_open@plt>
mov    $0x1,%r15b
lea    0xc19(%rip),%rsi
movb   $0x1,0xe(%rsp)
movb   $0x1,0xf(%rsp)
cmp    $0x1,%eax
je     1227 <check_error+0xb7>
movzbl (%rbx,%rbp,1),%eax
cmp    $0x5d,%al
jne    147f <check_error+0x30f>
mov    %rbx,%rdi
mov    %ebp,%esi
lea    0xc07(%rip),%rdx
call   1060 <check_bracket_open@plt>
mov    $0x1,%r15b
lea    0xbe3(%rip),%rsi
movb   $0x1,0xe(%rsp)
movb   $0x1,0xf(%rsp)
cmp    $0x1,%eax
je     1227 <check_error+0xb7>
movzbl (%rbx,%rbp,1),%eax
mov    $0x1,%r15b
movb   $0x1,0xe(%rsp)
movb   $0x1,0xf(%rsp)
cmp    $0x3e,%al
jne    1270 <check_error+0x100>
mov    %rbx,%rdi
mov    %ebp,%esi
lea    0xbc3(%rip),%rdx
call   1060 <check_bracket_open@plt>
mov    $0x1,%r15b
lea    0xb9c(%rip),%rsi
movb   $0x1,0xe(%rsp)
movb   $0x1,0xf(%rsp)
cmp    $0x1,%eax
je     1227 <check_error+0xb7>
jmp    1270 <check_error+0x100>
add    $0x78,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
@.str = [5 x i8] c"/**/\00"
@.str.1 = [21 x i8] c"UNMATCHED_COMMENTARY\00"
@.str.2 = [23 x i8] c"UNMATCHED_DOUBLE_QUOTE\00"
@.str.3 = [23 x i8] c"UNMATCHED_SINGLE_QUOTE\00"
@.str.4 = [3 x i8] c"{}\00"
@.str.5 = [18 x i8] c"UNMATCHED_BRACKET\00"
@.str.6 = [3 x i8] c"()\00"
@.str.7 = [3 x i8] c"[]\00"
@.str.8 = [3 x i8] c"<>\00"
@.str.9 = [51 x i8] c"Line: %d - Character position: %d (%c) - Erro: %s\0A\00"
define void @check_error(i8* %0) {
%2 = alloca [100 x i8]
%3 = getelementptr inbounds [100 x i8], [100 x i8]* %2, i64 0, i64 0
%4 = load i8, i8* %0
%5 = icmp eq i8 %4, 0
br i1 %5, label %147, label %6
6: ; preds = %1, %143
%7 = phi i64 [ %138, %143 ], [ 0, %1 ]
%8 = phi i8* [ %144, %143 ], [ %0, %1 ]
%9 = phi i8 [ %135, %143 ], [ 1, %1 ]
%10 = phi i8 [ %134, %143 ], [ 1, %1 ]
%11 = phi i8 [ %133, %143 ], [ 1, %1 ]
%12 = phi i32 [ %17, %143 ], [ 1, %1 ]
%13 = call i32 @start_vet(i8* %3, i32 100)
%14 = load i8, i8* %8
%15 = icmp eq i8 %14, 10
%16 = zext i1 %15 to i32
%17 = add nuw nsw i32 %12, %16
switch i8 %14, label %34 [
i8 47, label %18
i8 42, label %27
]
18: ; preds = %6
%19 = add nuw nsw i64 %7, 1
%20 = getelementptr inbounds i8, i8* %0, i64 %19
%21 = load i8, i8* %20
%22 = icmp eq i8 %21, 42
br i1 %22, label %23, label %34
23: ; preds = %18
%24 = trunc i64 %7 to i32
%25 = call i32 @check_commentary_close(i8* %0, i32 %24, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0))
%26 = icmp eq i32 %25, 2
br i1 %26, label %126, label %132
27: ; preds = %6
%28 = add nuw nsw i64 %7, 1
%29 = getelementptr inbounds i8, i8* %0, i64 %28
%30 = load i8, i8* %29
%31 = icmp eq i8 %30, 47
br i1 %31, label %32, label %34
32: ; preds = %27
%33 = icmp eq i8 %11, 1
br i1 %33, label %126, label %132
34: ; preds = %6, %18, %27
%35 = icmp eq i8 %11, 1
br i1 %35, label %36, label %132
36: ; preds = %34
%37 = icmp eq i8 %9, 2
%38 = icmp eq i8 %14, 34
%39 = select i1 %37, i1 %38, i1 false
br i1 %39, label %132, label %40
40: ; preds = %36
%41 = icmp eq i8 %10, 2
%42 = icmp eq i8 %14, 39
%43 = select i1 %41, i1 %42, i1 false
br i1 %43, label %132, label %44
44: ; preds = %40
switch i8 %14, label %53 [
i8 34, label %45
i8 39, label %49
]
45: ; preds = %44
%46 = trunc i64 %7 to i32
%47 = call i32 @check_quote_close(i8* %0, i32 %46, i8 signext 34)
%48 = icmp eq i32 %47, 2
br i1 %48, label %126, label %132
49: ; preds = %44
%50 = trunc i64 %7 to i32
%51 = call i32 @check_quote_close(i8* %0, i32 %50, i8 signext 39)
%52 = icmp eq i32 %51, 2
br i1 %52, label %126, label %132
53: ; preds = %44
%54 = icmp eq i8 %10, 1
%55 = icmp eq i8 %9, 1
%56 = select i1 %54, i1 %55, i1 false
br i1 %56, label %57, label %132
57: ; preds = %53
%58 = icmp eq i8 %14, 123
br i1 %58, label %59, label %65
59: ; preds = %57
%60 = trunc i64 %7 to i32
%61 = call i32 @check_bracket_close(i8* %0, i32 %60, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0))
%62 = icmp eq i32 %61, 2
br i1 %62, label %126, label %63
63: ; preds = %59
%64 = load i8, i8* %8
br label %65
65: ; preds = %63, %57
%66 = phi i8 [ %64, %63 ], [ %14, %57 ]
%67 = icmp eq i8 %66, 40
br i1 %67, label %68, label %74
68: ; preds = %65
%69 = trunc i64 %7 to i32
%70 = call i32 @check_bracket_close(i8* %0, i32 %69, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i64 0, i64 0))
%71 = icmp eq i32 %70, 2
br i1 %71, label %126, label %72
72: ; preds = %68
%73 = load i8, i8* %8
br label %74
74: ; preds = %72, %65
%75 = phi i8 [ %73, %72 ], [ %66, %65 ]
%76 = icmp eq i8 %75, 91
br i1 %76, label %77, label %83
77: ; preds = %74
%78 = trunc i64 %7 to i32
%79 = call i32 @check_bracket_close(i8* %0, i32 %78, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.7, i64 0, i64 0))
%80 = icmp eq i32 %79, 2
br i1 %80, label %126, label %81
81: ; preds = %77
%82 = load i8, i8* %8
br label %83
83: ; preds = %81, %74
%84 = phi i8 [ %82, %81 ], [ %75, %74 ]
%85 = icmp eq i8 %84, 60
br i1 %85, label %86, label %92
86: ; preds = %83
%87 = trunc i64 %7 to i32
%88 = call i32 @check_bracket_close(i8* %0, i32 %87, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.8, i64 0, i64 0))
%89 = icmp eq i32 %88, 2
br i1 %89, label %126, label %90
90: ; preds = %86
%91 = load i8, i8* %8
br label %92
92: ; preds = %90, %83
%93 = phi i8 [ %91, %90 ], [ %84, %83 ]
%94 = icmp eq i8 %93, 125
br i1 %94, label %95, label %101
95: ; preds = %92
%96 = trunc i64 %7 to i32
%97 = call i32 @check_bracket_open(i8* %0, i32 %96, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0))
%98 = icmp eq i32 %97, 1
br i1 %98, label %126, label %99
99: ; preds = %95
%100 = load i8, i8* %8
br label %101
101: ; preds = %99, %92
%102 = phi i8 [ %100, %99 ], [ %93, %92 ]
%103 = icmp eq i8 %102, 41
br i1 %103, label %104, label %110
104: ; preds = %101
%105 = trunc i64 %7 to i32
%106 = call i32 @check_bracket_open(i8* %0, i32 %105, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i64 0, i64 0))
%107 = icmp eq i32 %106, 1
br i1 %107, label %126, label %108
108: ; preds = %104
%109 = load i8, i8* %8
br label %110
110: ; preds = %108, %101
%111 = phi i8 [ %109, %108 ], [ %102, %101 ]
%112 = icmp eq i8 %111, 93
br i1 %112, label %113, label %119
113: ; preds = %110
%114 = trunc i64 %7 to i32
%115 = call i32 @check_bracket_open(i8* %0, i32 %114, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.7, i64 0, i64 0))
%116 = icmp eq i32 %115, 1
br i1 %116, label %126, label %117
117: ; preds = %113
%118 = load i8, i8* %8
br label %119
119: ; preds = %117, %110
%120 = phi i8 [ %118, %117 ], [ %111, %110 ]
%121 = icmp eq i8 %120, 62
br i1 %121, label %122, label %132
122: ; preds = %119
%123 = trunc i64 %7 to i32
%124 = call i32 @check_bracket_open(i8* %0, i32 %123, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.8, i64 0, i64 0))
%125 = icmp eq i32 %124, 1
br i1 %125, label %126, label %132
126: ; preds = %122, %113, %104, %95, %86, %77, %68, %59, %49, %45, %32, %23
%127 = phi i8* [ getelementptr inbounds ([21 x i8], [21 x i8]* @.str.1, i64 0, i64 0), %23 ], [ getelementptr inbounds ([21 x i8], [21 x i8]* @.str.1, i64 0, i64 0), %32 ], [ getelementptr inbounds ([23 x i8], [23 x i8]* @.str.2, i64 0, i64 0), %45 ], [ getelementptr inbounds ([23 x i8], [23 x i8]* @.str.3, i64 0, i64 0), %49 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.5, i64 0, i64 0), %59 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.5, i64 0, i64 0), %68 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.5, i64 0, i64 0), %77 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.5, i64 0, i64 0), %86 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.5, i64 0, i64 0), %95 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.5, i64 0, i64 0), %104 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.5, i64 0, i64 0), %113 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.5, i64 0, i64 0), %122 ]
%128 = phi i8 [ 2, %23 ], [ 1, %32 ], [ 1, %45 ], [ 1, %49 ], [ 1, %59 ], [ 1, %68 ], [ 1, %77 ], [ 1, %86 ], [ 1, %95 ], [ 1, %104 ], [ 1, %113 ], [ 1, %122 ]
%129 = phi i8 [ %10, %23 ], [ %10, %32 ], [ %10, %45 ], [ 2, %49 ], [ 1, %59 ], [ 1, %68 ], [ 1, %77 ], [ 1, %86 ], [ 1, %95 ], [ 1, %104 ], [ 1, %113 ], [ 1, %122 ]
%130 = phi i8 [ %9, %23 ], [ %9, %32 ], [ 2, %45 ], [ %9, %49 ], [ 1, %59 ], [ 1, %68 ], [ 1, %77 ], [ 1, %86 ], [ 1, %95 ], [ 1, %104 ], [ 1, %113 ], [ 1, %122 ]
%131 = call i32 @copy(i8* %3, i8* %127)
br label %132
132: ; preds = %126, %40, %36, %32, %45, %53, %119, %122, %49, %34, %23
%133 = phi i8 [ 2, %23 ], [ 1, %45 ], [ 1, %49 ], [ 1, %122 ], [ 1, %119 ], [ 1, %53 ], [ %11, %34 ], [ 1, %32 ], [ 1, %36 ], [ 1, %40 ], [ %128, %126 ]
%134 = phi i8 [ %10, %23 ], [ %10, %45 ], [ 2, %49 ], [ 1, %122 ], [ 1, %119 ], [ %10, %53 ], [ %10, %34 ], [ %10, %32 ], [ %10, %36 ], [ 1, %40 ], [ %129, %126 ]
%135 = phi i8 [ %9, %23 ], [ 2, %45 ], [ %9, %49 ], [ 1, %122 ], [ 1, %119 ], [ %9, %53 ], [ %9, %34 ], [ %9, %32 ], [ 1, %36 ], [ %9, %40 ], [ %130, %126 ]
%136 = load i8, i8* %3
%137 = icmp eq i8 %136, 32
%138 = add nuw i64 %7, 1
br i1 %137, label %143, label %139
139: ; preds = %132
%140 = load i8, i8* %8
%141 = trunc i64 %138 to i32
%142 = call i32 @printf(i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.9, i64 0, i64 0), i32 %17, i32 %141, i8 signext %140, i8* %3)
br label %143
143: ; preds = %132, %139
%144 = getelementptr inbounds i8, i8* %0, i64 %138
%145 = load i8, i8* %144
%146 = icmp eq i8 %145, 0
br i1 %146, label %147, label %6
147: ; preds = %143, %1
ret void
}