#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 */
scalar_t__ malloc(int);
int /*<<< orphan*/ printf(char *, int);
int /*<<< orphan*/ scanf(char *, ...);
int main() {
  char *str = (char *)malloc(sizeof(char) * 2000);
  char *strCopy = (char *)malloc(sizeof(char) * 2000);
  char nextChar = '1';
  int fa = 0, fb = 0, fc = 0;
  int i = 0, count = 0, t = 1, y = 0, j = 0, len = 0, x = 0, start, end, m = 0;
  scanf("%d", &t);
  while (m++ < t) {
    fa = 0, fb = 0, fc = 0;
    count = 0, i = 0, j = 0, len = 0, start = 0, end = 0;
    scanf("%s", str);
    while (str[i] != '\0') {
      if ((str[i] >= 97 && str[i] <= 122) &&
          !(str[i - 1] >= 97 && str[i - 1] <= 122)) {
        x = start, j = 0, len = 0;
        strCopy[j++] = str[start];
        for (x = start + 1; x <= end; x++) {
          if (str[x - 1] != str[x]) {
            strCopy[j++] = str[x];
            len++;
          }
        }
        strCopy[j] = '\0';
        for (y = 0; y <= (len - 2); y++) {
          if (strCopy[y] == '1' && strCopy[y + 1] == '0' &&
              strCopy[y + 2] == '1') {
            count++;
          }
        }
      } else {
        if (i > 0 && (str[i - 1] >= 97 && str[i - 1] <= 122)) {
          start = i;
          end = i;
        } else {
          end++;
        }
      }
      i++;
    }
    if (!(str[i - 1] >= 97 && str[i - 1] <= 122)) {
      x = start, j = 0, len = 0;
      strCopy[j++] = str[start];
      for (x = start + 1; x <= end; x++) {
        if (str[x - 1] != str[x]) {
          strCopy[j++] = str[x];
          len++;
        }
      }
      strCopy[j] = '\0';
      for (y = 0; y <= (len - 2); y++) {
        if (strCopy[y] == '1' && strCopy[y + 1] == '0' &&
            strCopy[y + 2] == '1') {
          count++;
        }
      }
    }
    printf("%d\n", count);
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
movl   $0x0,-0x4(%rbp)
mov    $0x7d0,%edi
call   1040 <malloc@plt>
mov    %rax,-0x10(%rbp)
mov    $0x7d0,%edi
call   1040 <malloc@plt>
mov    %rax,-0x18(%rbp)
movb   $0x31,-0x19(%rbp)
movl   $0x0,-0x20(%rbp)
movl   $0x0,-0x24(%rbp)
movl   $0x0,-0x28(%rbp)
movl   $0x0,-0x2c(%rbp)
movl   $0x0,-0x30(%rbp)
movl   $0x1,-0x34(%rbp)
movl   $0x0,-0x38(%rbp)
movl   $0x0,-0x3c(%rbp)
movl   $0x0,-0x40(%rbp)
movl   $0x0,-0x44(%rbp)
movl   $0x0,-0x50(%rbp)
lea    0xe4d(%rip),%rdi
lea    -0x34(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
mov    -0x50(%rbp),%eax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0x50(%rbp)
cmp    -0x34(%rbp),%eax
jge    15b9 <main+0x489>
movl   $0x0,-0x20(%rbp)
movl   $0x0,-0x24(%rbp)
movl   $0x0,-0x28(%rbp)
movl   $0x0,-0x30(%rbp)
movl   $0x0,-0x2c(%rbp)
movl   $0x0,-0x3c(%rbp)
movl   $0x0,-0x40(%rbp)
movl   $0x0,-0x48(%rbp)
movl   $0x0,-0x4c(%rbp)
mov    -0x10(%rbp),%rsi
lea    0xde7(%rip),%rdi
mov    $0x0,%al
call   1050 <scanf@plt>
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
je     1439 <main+0x309>
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x61,%eax
jl     13ce <main+0x29e>
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x7a,%eax
jg     13ce <main+0x29e>
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x61,%eax
jl     1296 <main+0x166>
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x7a,%eax
jle    13ce <main+0x29e>
mov    -0x48(%rbp),%eax
mov    %eax,-0x44(%rbp)
movl   $0x0,-0x3c(%rbp)
movl   $0x0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x48(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x18(%rbp),%rax
mov    -0x3c(%rbp),%ecx
mov    %ecx,%esi
add    $0x1,%esi
mov    %esi,-0x3c(%rbp)
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    -0x4c(%rbp),%eax
jg     1340 <main+0x210>
mov    -0x10(%rbp),%rax
mov    -0x44(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
mov    -0x10(%rbp),%rcx
movslq -0x44(%rbp),%rdx
movsbl (%rcx,%rdx,1),%ecx
cmp    %ecx,%eax
je     132d <main+0x1fd>
mov    -0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x18(%rbp),%rax
mov    -0x3c(%rbp),%ecx
mov    %ecx,%esi
add    $0x1,%esi
mov    %esi,-0x3c(%rbp)
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x40(%rbp)
jmp    1332 <main+0x202>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    12d3 <main+0x1a3>
mov    -0x18(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movb   $0x0,(%rax,%rcx,1)
movl   $0x0,-0x38(%rbp)
mov    -0x38(%rbp),%eax
mov    -0x40(%rbp),%ecx
sub    $0x2,%ecx
cmp    %ecx,%eax
jg     13c9 <main+0x299>
mov    -0x18(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x31,%eax
jne    13b6 <main+0x286>
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jne    13b6 <main+0x286>
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x31,%eax
jne    13b6 <main+0x286>
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    13bb <main+0x28b>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    1353 <main+0x223>
jmp    142b <main+0x2fb>
cmpl   $0x0,-0x2c(%rbp)
jle    141d <main+0x2ed>
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x61,%eax
jl     141d <main+0x2ed>
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x7a,%eax
jg     141d <main+0x2ed>
mov    -0x2c(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x4c(%rbp)
jmp    1426 <main+0x2f6>
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    142b <main+0x2fb>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1223 <main+0xf3>
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x61,%eax
jl     146d <main+0x33d>
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x7a,%eax
jle    15a5 <main+0x475>
mov    -0x48(%rbp),%eax
mov    %eax,-0x44(%rbp)
movl   $0x0,-0x3c(%rbp)
movl   $0x0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x48(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x18(%rbp),%rax
mov    -0x3c(%rbp),%ecx
mov    %ecx,%esi
add    $0x1,%esi
mov    %esi,-0x3c(%rbp)
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    -0x4c(%rbp),%eax
jg     1517 <main+0x3e7>
mov    -0x10(%rbp),%rax
mov    -0x44(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
mov    -0x10(%rbp),%rcx
movslq -0x44(%rbp),%rdx
movsbl (%rcx,%rdx,1),%ecx
cmp    %ecx,%eax
je     1504 <main+0x3d4>
mov    -0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x18(%rbp),%rax
mov    -0x3c(%rbp),%ecx
mov    %ecx,%esi
add    $0x1,%esi
mov    %esi,-0x3c(%rbp)
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x40(%rbp)
jmp    1509 <main+0x3d9>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    14aa <main+0x37a>
mov    -0x18(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movb   $0x0,(%rax,%rcx,1)
movl   $0x0,-0x38(%rbp)
mov    -0x38(%rbp),%eax
mov    -0x40(%rbp),%ecx
sub    $0x2,%ecx
cmp    %ecx,%eax
jg     15a0 <main+0x470>
mov    -0x18(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x31,%eax
jne    158d <main+0x45d>
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jne    158d <main+0x45d>
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x31,%eax
jne    158d <main+0x45d>
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    1592 <main+0x462>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    152a <main+0x3fa>
jmp    15a5 <main+0x475>
mov    -0x30(%rbp),%esi
lea    0xa57(%rip),%rdi
call   1030 <printf@plt>
jmp    11be <main+0x8e>
xor    %eax,%eax
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    $0x7d0,%edi
call   1040 <malloc@plt>
mov    %rax,%r15
mov    $0x7d0,%edi
call   1040 <malloc@plt>
mov    %rax,%r14
movl   $0x1,0x4(%rsp)
lea    0xe9c(%rip),%rdi
lea    0x4(%rsp),%rsi
xor    %eax,%eax
call   1050 <scanf@plt>
cmpl   $0x0,0x4(%rsp)
jle    150c <main+0x3dc>
mov    $0x1,%r13d
lea    0xe7e(%rip),%r12
jmp    11af <main+0x7f>
nopw   0x0(%rax,%rax,1)
movb   $0x0,0x1(%r14)
mov    %r12,%rdi
call   1030 <printf@plt>
lea    0x1(%r13),%eax
cmp    0x4(%rsp),%r13d
mov    %eax,%r13d
jge    150c <main+0x3dc>
lea    0xe4d(%rip),%rdi
mov    %r15,%rsi
xor    %eax,%eax
call   1050 <scanf@plt>
mov    (%r15),%al
xor    %ebp,%ebp
test   %al,%al
je     13a0 <main+0x270>
xor    %r9d,%r9d
xor    %r8d,%r8d
xor    %esi,%esi
jmp    11f6 <main+0xc6>
nopw   0x0(%rax,%rax,1)
add    $0x1,%r9d
add    $0x1,%rbp
mov    %ebp,%eax
mov    (%r15,%rax,1),%al
test   %al,%al
je     13a8 <main+0x278>
add    $0x9f,%al
cmp    $0x19,%al
ja     1207 <main+0xd7>
mov    -0x1(%rbp,%r15,1),%al
add    $0x9f,%al
cmp    $0x1a,%al
jae    1230 <main+0x100>
test   %rbp,%rbp
je     11e0 <main+0xb0>
lea    -0x1(%rbp),%eax
mov    (%r15,%rax,1),%al
add    $0x9f,%al
cmp    $0x1a,%al
jae    11e0 <main+0xb0>
mov    %ebp,%r8d
mov    %ebp,%r9d
jmp    11e4 <main+0xb4>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movslq %r8d,%rdx
mov    (%r15,%rdx,1),%al
mov    %al,(%r14)
cmp    %r9d,%edx
jge    12d6 <main+0x1a6>
movslq %r9d,%rax
mov    %rax,%r10
sub    %rdx,%r10
mov    %rdx,%rcx
not    %rcx
add    %rax,%rcx
jne    12e0 <main+0x1b0>
mov    $0x1,%eax
xor    %r11d,%r11d
test   $0x1,%r10b
je     1282 <main+0x152>
mov    0x1(%r15,%rdx,1),%cl
cmp    %cl,(%r15,%rdx,1)
je     1282 <main+0x152>
movslq %eax,%rdx
add    $0x1,%eax
mov    %cl,(%r14,%rdx,1)
add    $0x1,%r11d
cltq
movb   $0x0,(%r14,%rax,1)
cmp    $0x2,%r11d
jl     11e4 <main+0xb4>
add    $0xffffffff,%r11d
cmp    $0x1,%r11d
jne    1345 <main+0x215>
xor    %ebx,%ebx
test   $0x1,%r11b
je     11e4 <main+0xb4>
cmpb   $0x31,(%r14,%rbx,1)
jne    11e4 <main+0xb4>
cmpb   $0x30,0x1(%rbx,%r14,1)
jne    11e4 <main+0xb4>
xor    %eax,%eax
cmpb   $0x31,0x2(%rbx,%r14,1)
sete   %al
add    %eax,%esi
jmp    11e4 <main+0xb4>
movb   $0x0,0x1(%r14)
jmp    11e4 <main+0xb4>
mov    %r10,%rbx
and    $0xfffffffffffffffe,%rbx
mov    $0x1,%eax
xor    %r11d,%r11d
jmp    130e <main+0x1de>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x2,%rdx
add    $0xfffffffffffffffe,%rbx
je     1263 <main+0x133>
movzbl 0x1(%r15,%rdx,1),%ecx
cmp    %cl,(%r15,%rdx,1)
je     1328 <main+0x1f8>
movslq %eax,%rdi
add    $0x1,%eax
mov    %cl,(%r14,%rdi,1)
add    $0x1,%r11d
movzbl 0x2(%r15,%rdx,1),%ecx
cmp    %cl,0x1(%r15,%rdx,1)
je     1300 <main+0x1d0>
movslq %eax,%rdi
add    $0x1,%eax
mov    %cl,(%r14,%rdi,1)
add    $0x1,%r11d
jmp    1300 <main+0x1d0>
mov    %r11d,%eax
and    $0xfffffffe,%eax
xor    %ebx,%ebx
jmp    1359 <main+0x229>
nop
cmp    %rbx,%rax
je     12a3 <main+0x173>
mov    %rbx,%rdx
cmpb   $0x31,(%r14,%rbx,1)
jne    1378 <main+0x248>
cmpb   $0x30,0x1(%r14,%rdx,1)
jne    1378 <main+0x248>
xor    %ecx,%ecx
cmpb   $0x31,0x2(%r14,%rdx,1)
sete   %cl
add    %ecx,%esi
lea    0x2(%rdx),%rbx
cmpb   $0x31,0x1(%r14,%rdx,1)
jne    1350 <main+0x220>
cmpb   $0x30,0x2(%r14,%rdx,1)
jne    1350 <main+0x220>
xor    %ecx,%ecx
cmpb   $0x31,0x3(%r14,%rdx,1)
sete   %cl
add    %ecx,%esi
jmp    1350 <main+0x220>
nopl   0x0(%rax,%rax,1)
xor    %esi,%esi
xor    %r8d,%r8d
xor    %r9d,%r9d
add    $0xffffffff,%ebp
movslq %ebp,%rax
mov    (%r15,%rax,1),%al
add    $0x9f,%al
cmp    $0x1a,%al
jb     1195 <main+0x65>
movslq %r8d,%rcx
mov    (%r15,%rcx,1),%al
mov    %al,(%r14)
cmp    %r9d,%ecx
jge    1190 <main+0x60>
movslq %r9d,%rax
mov    %rax,%r8
sub    %rcx,%r8
mov    %rcx,%rdx
not    %rdx
add    %rax,%rdx
jne    1458 <main+0x328>
mov    $0x1,%edx
xor    %eax,%eax
test   $0x1,%r8b
je     1408 <main+0x2d8>
mov    0x1(%r15,%rcx,1),%bl
cmp    %bl,(%r15,%rcx,1)
je     1408 <main+0x2d8>
movslq %edx,%rcx
add    $0x1,%edx
mov    %bl,(%r14,%rcx,1)
add    $0x1,%eax
movslq %edx,%rcx
movb   $0x0,(%r14,%rcx,1)
cmp    $0x2,%eax
jl     1195 <main+0x65>
add    $0xffffffff,%eax
cmp    $0x1,%eax
jne    14b3 <main+0x383>
xor    %edx,%edx
test   $0x1,%al
je     1195 <main+0x65>
cmpb   $0x31,(%r14,%rdx,1)
jne    1195 <main+0x65>
cmpb   $0x30,0x1(%rdx,%r14,1)
jne    1195 <main+0x65>
xor    %eax,%eax
cmpb   $0x31,0x2(%rdx,%r14,1)
sete   %al
add    %eax,%esi
jmp    1195 <main+0x65>
mov    %r8,%rdi
and    $0xfffffffffffffffe,%rdi
mov    $0x1,%edx
xor    %eax,%eax
jmp    147e <main+0x34e>
nopl   0x0(%rax,%rax,1)
add    $0x2,%rcx
add    $0xfffffffffffffffe,%rdi
je     13ea <main+0x2ba>
movzbl 0x1(%r15,%rcx,1),%ebx
cmp    %bl,(%r15,%rcx,1)
je     1497 <main+0x367>
movslq %edx,%rbp
add    $0x1,%edx
mov    %bl,(%r14,%rbp,1)
add    $0x1,%eax
movzbl 0x2(%r15,%rcx,1),%ebx
cmp    %bl,0x1(%r15,%rcx,1)
je     1470 <main+0x340>
movslq %edx,%rbp
add    $0x1,%edx
mov    %bl,(%r14,%rbp,1)
add    $0x1,%eax
jmp    1470 <main+0x340>
mov    %eax,%ecx
and    $0xfffffffe,%ecx
xor    %edx,%edx
jmp    14c9 <main+0x399>
nopl   0x0(%rax)
cmp    %rdx,%rcx
je     1427 <main+0x2f7>
mov    %rdx,%rdi
cmpb   $0x31,(%r14,%rdx,1)
jne    14e8 <main+0x3b8>
cmpb   $0x30,0x1(%r14,%rdi,1)
jne    14e8 <main+0x3b8>
xor    %edx,%edx
cmpb   $0x31,0x2(%r14,%rdi,1)
sete   %dl
add    %edx,%esi
lea    0x2(%rdi),%rdx
cmpb   $0x31,0x1(%r14,%rdi,1)
jne    14c0 <main+0x390>
cmpb   $0x30,0x2(%r14,%rdi,1)
jne    14c0 <main+0x390>
xor    %ebp,%ebp
cmpb   $0x31,0x3(%r14,%rdi,1)
sete   %bpl
add    %ebp,%esi
jmp    14c0 <main+0x390>
xor    %eax,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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