#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 */
char another(char);
char other(char, char);
int fill(char *T) {
  int cnt, i, j, k;
  for (i = 0; i < 500001; i++)
    if (T[i] != 'x')
      break;
  for (; i < 500001; i++) {
    cnt = 1;
    if (T[i] == 'x') {
      for (j = i; j < 500001; j++) {
        if (T[j] != 'x') {
          if (T[i - 1] != T[j]) {
            cnt = j - i;
            if (cnt == 1) {
              T[i] = other(T[i - 1], T[j]);
            } else if (cnt == 2) {
              T[i] = T[j];
              T[i + 1] = T[i - 1];
            } else if (cnt == 3) {
              T[i] = other(T[i - 1], T[j]);
              T[i + 1] = T[j];
              T[i + 2] = other(T[i - 1], T[j]);
            } else if (cnt == 5) {
              T[i] = other(T[i - 1], T[j]);
              T[i + 1] = T[i - 1];
              T[i + 2] = T[i];
              T[i + 3] = T[j];
              T[i + 4] = T[i];
            } else if (cnt == 7) {
              T[i] = other(T[i - 1], T[j]);
              T[i + 1] = T[i - 1];
              T[i + 2] = T[i];
              T[i + 3] = T[j];
              T[i + 4] = T[i];
              T[i + 5] = T[j];
              T[i + 6] = T[i];
            } else if (cnt == 9) {
              T[i] = other(T[i - 1], T[j]);
              T[i + 1] = T[i - 1];
              T[i + 2] = T[i];
              T[i + 3] = T[j];
              T[i + 4] = T[i];
              T[i + 5] = T[j];
              T[i + 6] = T[i];
            } else if (cnt % 2 == 0) {
              for (k = 0; k < cnt; k += 2) {
                T[i + k] = T[j];
                T[i + k + 1] = T[i - 1];
              }
            }
          } else {
            cnt = j - i;
            if (cnt == 1) {
              T[i] = another(T[j]);
            } else if (cnt == 2) {
              T[i] = another(T[j]);
              T[i + 1] = other(another(T[j]), T[j]);
            } else if (cnt == 4) {
              T[i] = another(T[j]);
              T[i + 1] = other(another(T[j]), T[j]);
              T[i + 2] = T[j];
              T[i + 3] = T[i + 1];
            } else if (cnt == 6) {
              T[i] = another(T[j]);
              T[i + 1] = other(another(T[j]), T[j]);
              T[i + 2] = T[i];
              T[i + 3] = T[i + 1];
              T[i + 4] = T[j];
              T[i + 5] = T[i + 1];
            } else if (cnt == 8) {
              T[i] = another(T[j]);
              T[i + 1] = other(another(T[j]), T[j]);
              T[i + 2] = T[i];
              T[i + 3] = T[i + 1];
              T[i + 4] = T[j];
              T[i + 5] = T[i + 1];
              T[i + 6] = T[j];
              T[i + 7] = T[i + 1];
            } else if (cnt % 2 == 1) {
              T[i] = another(T[j]);
              for (k = 1; k < cnt; k += 2) {
                T[i + k] = T[j];
                T[i + k + 1] = T[i];
              }
            }
          }
          break;
        }
      }
    }
  }
  for (i = 500001 - 1; i > 0; i--) {
    if (T[i] == 'x') {
      if (T[i + 1] != 'a' && T[i + 1] != 'x' && T[i - 1] != 'a')
        T[i] = 'a';
      else if (T[i + 1] != 'b' && T[i + 1] != 'x' && T[i - 1] != 'b')
        T[i] = 'b';
      else if (T[i + 1] != 'c' && T[i + 1] != 'x' && T[i - 1] != 'c')
        T[i] = 'c';
    }
  }
  return 0;
}


x86 assembly (clang, -O0):
<fill>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %rdi,-0x8(%rbp)
movl   $0x0,-0x10(%rbp)
cmpl   $0x7a121,-0x10(%rbp)
jge    116d <fill+0x4d>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x78,%eax
je     115a <fill+0x3a>
jmp    116d <fill+0x4d>
jmp    115f <fill+0x3f>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1133 <fill+0x13>
jmp    1172 <fill+0x52>
cmpl   $0x7a121,-0x10(%rbp)
jge    1a30 <fill+0x910>
movl   $0x1,-0xc(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x78,%eax
jne    1a1d <fill+0x8fd>
mov    -0x10(%rbp),%eax
mov    %eax,-0x14(%rbp)
cmpl   $0x7a121,-0x14(%rbp)
jge    1a18 <fill+0x8f8>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x78,%eax
je     1a05 <fill+0x8e5>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
mov    -0x8(%rbp),%rcx
movslq -0x14(%rbp),%rdx
movsbl (%rcx,%rdx,1),%ecx
cmp    %ecx,%eax
je     1621 <fill+0x501>
mov    -0x14(%rbp),%eax
sub    -0x10(%rbp),%eax
mov    %eax,-0xc(%rbp)
cmpl   $0x1,-0xc(%rbp)
jne    1231 <fill+0x111>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl %dl,%edi
movsbl (%rax,%rcx,1),%esi
call   1030 <other@plt>
mov    %al,%dl
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
jmp    161c <fill+0x4fc>
cmpl   $0x2,-0xc(%rbp)
jne    1276 <fill+0x156>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
jmp    1617 <fill+0x4f7>
cmpl   $0x3,-0xc(%rbp)
jne    1307 <fill+0x1e7>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl %dl,%edi
movsbl (%rax,%rcx,1),%esi
call   1030 <other@plt>
mov    %al,%dl
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl %dl,%edi
movsbl (%rax,%rcx,1),%esi
call   1030 <other@plt>
mov    %al,%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
jmp    1612 <fill+0x4f2>
cmpl   $0x5,-0xc(%rbp)
jne    13b8 <fill+0x298>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl %dl,%edi
movsbl (%rax,%rcx,1),%esi
call   1030 <other@plt>
mov    %al,%dl
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
jmp    160d <fill+0x4ed>
cmpl   $0x7,-0xc(%rbp)
jne    149f <fill+0x37f>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl %dl,%edi
movsbl (%rax,%rcx,1),%esi
call   1030 <other@plt>
mov    %al,%dl
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x5,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x6,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
jmp    1608 <fill+0x4e8>
cmpl   $0x9,-0xc(%rbp)
jne    1586 <fill+0x466>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl %dl,%edi
movsbl (%rax,%rcx,1),%esi
call   1030 <other@plt>
mov    %al,%dl
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x5,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x6,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
jmp    1603 <fill+0x4e3>
mov    -0xc(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    15fe <fill+0x4de>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    15f9 <fill+0x4d9>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    -0x18(%rbp),%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    -0x18(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x18(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x18(%rbp)
jmp    15a1 <fill+0x481>
jmp    15fe <fill+0x4de>
jmp    1603 <fill+0x4e3>
jmp    1608 <fill+0x4e8>
jmp    160d <fill+0x4ed>
jmp    1612 <fill+0x4f2>
jmp    1617 <fill+0x4f7>
jmp    161c <fill+0x4fc>
jmp    1a00 <fill+0x8e0>
mov    -0x14(%rbp),%eax
sub    -0x10(%rbp),%eax
mov    %eax,-0xc(%rbp)
cmpl   $0x1,-0xc(%rbp)
jne    1657 <fill+0x537>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1040 <another@plt>
mov    %al,%dl
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
jmp    19fb <fill+0x8db>
cmpl   $0x2,-0xc(%rbp)
jne    16bd <fill+0x59d>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1040 <another@plt>
mov    %al,%dl
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1040 <another@plt>
mov    %al,%dl
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl %dl,%edi
movsbl (%rax,%rcx,1),%esi
call   1030 <other@plt>
mov    %al,%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
jmp    19f6 <fill+0x8d6>
cmpl   $0x4,-0xc(%rbp)
jne    175e <fill+0x63e>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1040 <another@plt>
mov    %al,%dl
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1040 <another@plt>
mov    %al,%dl
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl %dl,%edi
movsbl (%rax,%rcx,1),%esi
call   1030 <other@plt>
mov    %al,%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
jmp    19f1 <fill+0x8d1>
cmpl   $0x6,-0xc(%rbp)
jne    183a <fill+0x71a>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1040 <another@plt>
mov    %al,%dl
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1040 <another@plt>
mov    %al,%dl
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl %dl,%edi
movsbl (%rax,%rcx,1),%esi
call   1030 <other@plt>
mov    %al,%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x5,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
jmp    19ec <fill+0x8cc>
cmpl   $0x8,-0xc(%rbp)
jne    1951 <fill+0x831>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1040 <another@plt>
mov    %al,%dl
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1040 <another@plt>
mov    %al,%dl
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl %dl,%edi
movsbl (%rax,%rcx,1),%esi
call   1030 <other@plt>
mov    %al,%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x5,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x6,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x7,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
jmp    19e7 <fill+0x8c7>
mov    -0xc(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
jne    19e2 <fill+0x8c2>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1040 <another@plt>
mov    %al,%dl
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
movl   $0x1,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    19dd <fill+0x8bd>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    -0x18(%rbp),%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    -0x18(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x18(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x18(%rbp)
jmp    198a <fill+0x86a>
jmp    19e2 <fill+0x8c2>
jmp    19e7 <fill+0x8c7>
jmp    19ec <fill+0x8cc>
jmp    19f1 <fill+0x8d1>
jmp    19f6 <fill+0x8d6>
jmp    19fb <fill+0x8db>
jmp    1a00 <fill+0x8e0>
jmp    1a18 <fill+0x8f8>
jmp    1a0a <fill+0x8ea>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    11a1 <fill+0x81>
jmp    1a1d <fill+0x8fd>
jmp    1a22 <fill+0x902>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1172 <fill+0x52>
movl   $0x7a120,-0x10(%rbp)
cmpl   $0x0,-0x10(%rbp)
jle    1b90 <fill+0xa70>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x78,%eax
jne    1b7d <fill+0xa5d>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x61,%eax
je     1ab5 <fill+0x995>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x78,%eax
je     1ab5 <fill+0x995>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x61,%eax
je     1ab5 <fill+0x995>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x61,(%rax,%rcx,1)
jmp    1b78 <fill+0xa58>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x62,%eax
je     1b14 <fill+0x9f4>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x78,%eax
je     1b14 <fill+0x9f4>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x62,%eax
je     1b14 <fill+0x9f4>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x62,(%rax,%rcx,1)
jmp    1b73 <fill+0xa53>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x63,%eax
je     1b6e <fill+0xa4e>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x78,%eax
je     1b6e <fill+0xa4e>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x63,%eax
je     1b6e <fill+0xa4e>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x63,(%rax,%rcx,1)
jmp    1b73 <fill+0xa53>
jmp    1b78 <fill+0xa58>
jmp    1b7d <fill+0xa5d>
jmp    1b82 <fill+0xa62>
mov    -0x10(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x10(%rbp)
jmp    1a37 <fill+0x917>
xor    %eax,%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<fill>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %rdi,%r14
mov    $0x2,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
cmpb   $0x78,-0x2(%r14,%rbx,1)
jne    1169 <fill+0x49>
cmpb   $0x78,-0x1(%r14,%rbx,1)
jne    117a <fill+0x5a>
cmpb   $0x78,(%r14,%rbx,1)
jne    116d <fill+0x4d>
add    $0x3,%rbx
cmp    $0x7a123,%rbx
jne    1140 <fill+0x20>
jmp    1540 <fill+0x420>
add    $0xfffffffffffffffe,%rbx
cmp    $0x7a120,%ebx
jbe    118a <fill+0x6a>
jmp    1540 <fill+0x420>
add    $0xffffffffffffffff,%rbx
cmp    $0x7a120,%ebx
ja     1540 <fill+0x420>
mov    %ebx,%r15d
add    %r14,%rbx
lea    0xe69(%rip),%r13
jmp    1205 <fill+0xe5>
movsbl %cl,%edi
call   1040 <another@plt>
mov    %al,(%r14,%r15,1)
movsbl (%rbx,%rbp,1),%edi
call   1040 <another@plt>
movsbl (%rbx,%rbp,1),%esi
movsbl %al,%edi
call   1030 <other@plt>
mov    %al,0x1(%r14,%r15,1)
mov    (%r14,%r15,1),%cl
mov    %cl,0x2(%r14,%r15,1)
mov    %al,0x3(%r14,%r15,1)
mov    (%rbx,%rbp,1),%cl
mov    %cl,0x4(%r14,%r15,1)
mov    %al,0x5(%r14,%r15,1)
mov    (%rbx,%rbp,1),%cl
mov    %cl,0x6(%r14,%r15,1)
mov    %al,0x7(%r14,%r15,1)
nopw   0x0(%rax,%rax,1)
add    $0x1,%r15
add    $0x1,%rbx
cmp    $0x7a121,%r15
je     1540 <fill+0x420>
cmpb   $0x78,(%r14,%r15,1)
jne    11f0 <fill+0xd0>
mov    $0xfffffffffffffffd,%rdx
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
nop
lea    (%r15,%rbp,1),%rcx
cmp    $0x7a11f,%rcx
ja     11f0 <fill+0xd0>
mov    %rbp,%rax
mov    %rdx,%r12
movzbl 0x1(%rbx,%rbp,1),%ecx
add    $0x1,%rbp
add    $0x1,%rdx
cmp    $0x78,%cl
je     1220 <fill+0x100>
mov    -0x1(%r15,%r14,1),%dl
cmp    %cl,%dl
jne    1277 <fill+0x157>
lea    -0x1(%rbp),%eax
cmp    $0x7,%eax
ja     12ca <fill+0x1aa>
lea    0xdc7(%rip),%rdx
movslq (%rdx,%rax,4),%rax
add    %rdx,%rax
jmp    *%rax
movsbl %cl,%edi
call   1040 <another@plt>
mov    %al,(%r14,%r15,1)
jmp    11f0 <fill+0xd0>
lea    -0x1(%rbp),%esi
cmp    $0x8,%esi
ja     1488 <fill+0x368>
movslq 0x0(%r13,%rsi,4),%rsi
add    %r13,%rsi
jmp    *%rsi
movsbl %dl,%edi
movsbl %cl,%esi
call   1030 <other@plt>
mov    %al,(%r14,%r15,1)
mov    -0x1(%r14,%r15,1),%cl
mov    %cl,0x1(%r14,%r15,1)
mov    %al,0x2(%r14,%r15,1)
mov    (%rbx,%rbp,1),%cl
mov    %cl,0x3(%r14,%r15,1)
mov    %al,0x4(%r14,%r15,1)
mov    (%rbx,%rbp,1),%cl
mov    %cl,0x5(%r14,%r15,1)
mov    %al,0x6(%r14,%r15,1)
jmp    11f0 <fill+0xd0>
mov    %ebp,%eax
shr    $0x1f,%eax
add    %ebp,%eax
and    $0xfffffffe,%eax
mov    %ebp,%edx
sub    %eax,%edx
cmp    $0x1,%edx
jne    11f0 <fill+0xd0>
movsbl %cl,%edi
call   1040 <another@plt>
mov    %al,(%r14,%r15,1)
cmp    $0x2,%ebp
jl     11f0 <fill+0xd0>
mov    (%rbx,%rbp,1),%cl
mov    %cl,0x1(%r15,%r14,1)
mov    %al,0x2(%r15,%r14,1)
cmp    $0x4,%ebp
jb     11f0 <fill+0xd0>
lea    -0x4(%rbp),%rdx
mov    %rdx,%rsi
shr    %rsi
add    $0x1,%rsi
mov    $0x3,%ecx
cmp    $0x2,%rdx
jb     136b <fill+0x24b>
shr    %r12
add    $0x1,%r12
and    $0xfffffffffffffffe,%r12
mov    $0x3,%ecx
cs nopw 0x0(%rax,%rax,1)
nop
movzbl (%r14,%r15,1),%edx
movzbl (%rbx,%rbp,1),%eax
mov    %al,(%rbx,%rcx,1)
mov    %dl,0x1(%rbx,%rcx,1)
movzbl (%r14,%r15,1),%eax
movzbl (%rbx,%rbp,1),%edx
mov    %dl,0x2(%rbx,%rcx,1)
mov    %al,0x3(%rbx,%rcx,1)
add    $0x4,%rcx
add    $0xfffffffffffffffe,%r12
jne    1340 <fill+0x220>
test   $0x1,%sil
je     11f0 <fill+0xd0>
mov    (%r14,%r15,1),%al
mov    (%rbx,%rbp,1),%dl
add    %r15,%rcx
mov    %dl,(%r14,%rcx,1)
mov    %al,0x1(%r14,%rcx,1)
jmp    11f0 <fill+0xd0>
movsbl %cl,%edi
call   1040 <another@plt>
mov    %al,(%r14,%r15,1)
movsbl (%rbx,%rbp,1),%edi
call   1040 <another@plt>
movsbl (%rbx,%rbp,1),%esi
movsbl %al,%edi
call   1030 <other@plt>
mov    %al,0x1(%r14,%r15,1)
jmp    11f0 <fill+0xd0>
movsbl %cl,%edi
call   1040 <another@plt>
mov    %al,(%r14,%r15,1)
movsbl (%rbx,%rbp,1),%edi
call   1040 <another@plt>
movsbl (%rbx,%rbp,1),%esi
movsbl %al,%edi
call   1030 <other@plt>
mov    %al,0x1(%r14,%r15,1)
mov    (%rbx,%rbp,1),%cl
mov    %cl,0x2(%r14,%r15,1)
mov    %al,0x3(%r14,%r15,1)
jmp    11f0 <fill+0xd0>
movsbl %cl,%edi
call   1040 <another@plt>
mov    %al,(%r14,%r15,1)
movsbl (%rbx,%rbp,1),%edi
call   1040 <another@plt>
movsbl (%rbx,%rbp,1),%esi
movsbl %al,%edi
call   1030 <other@plt>
mov    %al,0x1(%r14,%r15,1)
mov    (%r14,%r15,1),%cl
mov    %cl,0x2(%r14,%r15,1)
mov    %al,0x3(%r14,%r15,1)
mov    (%rbx,%rbp,1),%cl
mov    %cl,0x4(%r14,%r15,1)
mov    %al,0x5(%r14,%r15,1)
jmp    11f0 <fill+0xd0>
movsbl %dl,%edi
movsbl %cl,%esi
call   1030 <other@plt>
mov    %al,(%r14,%r15,1)
jmp    11f0 <fill+0xd0>
mov    %cl,(%r14,%r15,1)
mov    %dl,0x1(%r14,%r15,1)
jmp    11f0 <fill+0xd0>
movsbl %dl,%edi
movsbl %cl,%esi
call   1030 <other@plt>
mov    %al,(%r14,%r15,1)
mov    (%rbx,%rbp,1),%al
mov    %al,0x1(%r14,%r15,1)
movsbl -0x1(%r14,%r15,1),%edi
movsbl (%rbx,%rbp,1),%esi
call   1030 <other@plt>
mov    %al,0x2(%r14,%r15,1)
jmp    11f0 <fill+0xd0>
test   $0x1,%bpl
jne    11f0 <fill+0xd0>
test   %ebp,%ebp
jle    11f0 <fill+0xd0>
lea    -0x1(%rbp),%rdx
mov    %rdx,%rsi
shr    %rsi
add    $0x1,%rsi
cmp    $0x2,%rdx
jae    14e2 <fill+0x3c2>
xor    %edx,%edx
jmp    151d <fill+0x3fd>
movsbl %dl,%edi
movsbl %cl,%esi
call   1030 <other@plt>
mov    %al,(%r14,%r15,1)
mov    -0x1(%r14,%r15,1),%cl
mov    %cl,0x1(%r14,%r15,1)
mov    %al,0x2(%r14,%r15,1)
mov    (%rbx,%rbp,1),%cl
mov    %cl,0x3(%r14,%r15,1)
mov    %al,0x4(%r14,%r15,1)
jmp    11f0 <fill+0xd0>
shr    %rax
add    $0x1,%rax
and    $0xfffffffffffffffe,%rax
xor    %edx,%edx
nop
movzbl (%rbx,%rbp,1),%ecx
mov    %cl,(%rbx,%rdx,1)
movzbl -0x1(%r14,%r15,1),%ecx
mov    %cl,0x1(%rbx,%rdx,1)
movzbl (%rbx,%rbp,1),%ecx
mov    %cl,0x2(%rbx,%rdx,1)
movzbl -0x1(%r14,%r15,1),%ecx
mov    %cl,0x3(%rbx,%rdx,1)
add    $0x4,%rdx
add    $0xfffffffffffffffe,%rax
jne    14f0 <fill+0x3d0>
test   $0x1,%sil
je     11f0 <fill+0xd0>
mov    (%rbx,%rbp,1),%al
add    %r15,%rdx
mov    %al,(%r14,%rdx,1)
mov    -0x1(%r14,%r15,1),%al
mov    %al,0x1(%r14,%rdx,1)
jmp    11f0 <fill+0xd0>
mov    $0x7a121,%eax
jmp    1558 <fill+0x438>
mov    $0x63,%cl
mov    %cl,-0x1(%r14,%rax,1)
add    $0xffffffffffffffff,%rax
cmp    $0x1,%rax
jbe    158e <fill+0x46e>
cmpb   $0x78,-0x1(%r14,%rax,1)
jne    154e <fill+0x42e>
movzbl (%r14,%rax,1),%edx
cmp    $0x61,%dl
je     1582 <fill+0x462>
cmp    $0x78,%dl
je     154e <fill+0x42e>
mov    $0x61,%cl
cmpb   $0x61,-0x2(%r14,%rax,1)
jne    1549 <fill+0x429>
mov    $0x62,%cl
cmp    $0x62,%dl
je     1547 <fill+0x427>
jmp    1549 <fill+0x429>
mov    $0x62,%cl
cmpb   $0x62,-0x2(%r14,%rax,1)
je     1547 <fill+0x427>
jmp    1549 <fill+0x429>
xor    %eax,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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