#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);
scalar_t__ strchr(char *, char);
scalar_t__ strcmp(char *, char *);
int strcspn(char *, char *);
int strlen(char *);
scalar_t__ strstr(char *, char *);
void acentua(char *palavra) {
  int tamanho, i, pos, vowel = 0;
  tamanho = strlen(palavra);
  if ((!strcmp(palavra, "rodrigues"))) {
    pos = 4;
    for (i = tamanho; i >= pos; i--)
      palavra[i + 1] = palavra[i];
    palavra[pos + 1] = '\'';
  }
  if ((!strcmp(palavra, "alex"))) {
    pos = 2;
    for (i = tamanho; i >= pos; i--)
      palavra[i + 1] = palavra[i];
    palavra[pos + 1] = '\'';
  }
  if ((!strcmp(palavra, "marmitex"))) {
    pos = 6;
    for (i = tamanho; i >= pos; i--)
      palavra[i + 1] = palavra[i];
    palavra[pos + 1] = '\'';
  }
  if ((pos = strcspn(palavra, " ¡¢£")) != tamanho) {
    for (i = tamanho; i >= pos; i--)
      palavra[i + 1] = palavra[i];
    palavra[pos + 1] = '\'';
    return;
  }
  if (tamanho <= 4) {
    char *classe;
    classe = (char *)malloc((tamanho * sizeof(char)) + 1);
    for (i = 0; i < tamanho; i++)
      if (strchr("aeiouÆä ¡¢£", (palavra[i])))
        classe[i] = 'V';
      else if (strchr("bcdfghjklmnpqrstvwxyz", (palavra[i])))
        classe[i] = 'C';
    classe[tamanho] = '\0';
    if ((strstr("V*VC*CV*CVC*CVCC*CCVC*CCV", classe)) &&
        (strcmp(classe, "C"))) {
      pos = strcspn(classe, "V");
      for (i = tamanho; i >= pos; i--)
        palavra[i + 1] = palavra[i];
      palavra[pos + 1] = '\'';
      return;
    }
  }
  if (strstr("ar*er*ir*or*ur*is*us*az*ez*iz*oz*uz*al*el*il*ol*ul*am*im*om*um",
             &palavra[tamanho - 2])) {
    if ((strstr("is*us", &palavra[tamanho - 2])) &&
        (strchr("aeiouÆä ¡¢£", palavra[tamanho - 3])) &&
        (strchr("bcdfghjklmnpqrstvwxyz", palavra[tamanho - 4])) &&
        (palavra[tamanho - 4] != 'q'))
      pos = tamanho - 3;
    else
      pos = tamanho - 2;
    for (i = tamanho; i >= pos; i--)
      palavra[i + 1] = palavra[i];
    palavra[pos + 1] = '\'';
    return;
  }
  if (strchr("u*i*Æ", palavra[tamanho - 1])) {
    if ((strstr("i*u", &palavra[tamanho - 1])) &&
        (strchr("aeiouÆä ¡¢£", palavra[tamanho - 2])) &&
        (palavra[tamanho - 3] != 'q'))
      pos = tamanho - 2;
    else
      pos = tamanho - 1;
    for (i = tamanho; i >= pos; i--)
      palavra[i + 1] = palavra[i];
    palavra[pos + 1] = '\'';
    return;
  }
  for (i = tamanho - 1; i >= 1; i--) {
    if (strchr("aeiouÆä ¡¢£", palavra[i]))
      vowel++;
    if (vowel == 2)
      if (strchr("q*g", palavra[i + 1]))
        vowel--;
      else
        break;
  }
  pos = i;
  if ((strchr("i*u", palavra[pos])) &&
      (strchr("aeiouÆä ¡¢£", palavra[pos - 1])) &&
      (!strchr("q*g", palavra[pos - 2])))
    pos--;
  for (i = tamanho; i >= pos; i--)
    palavra[i + 1] = palavra[i];
  palavra[pos + 1] = '\'';
  return;
}


x86 assembly (clang, -O0):
<acentua>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %rdi,-0x8(%rbp)
movl   $0x0,-0x18(%rbp)
mov    -0x8(%rbp),%rdi
call   1030 <strlen@plt>
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%rdi
lea    0xe76(%rip),%rsi
call   1060 <strcmp@plt>
cmp    $0x0,%rax
jne    11ec <acentua+0x8c>
movl   $0x4,-0x14(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0x14(%rbp),%eax
jl     11db <acentua+0x7b>
mov    -0x8(%rbp),%rax
movslq -0x10(%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    -0x10(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x10(%rbp)
jmp    11a6 <acentua+0x46>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x27,(%rax,%rcx,1)
mov    -0x8(%rbp),%rdi
lea    0xe13(%rip),%rsi
call   1060 <strcmp@plt>
cmp    $0x0,%rax
jne    1259 <acentua+0xf9>
movl   $0x2,-0x14(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0x14(%rbp),%eax
jl     1248 <acentua+0xe8>
mov    -0x8(%rbp),%rax
movslq -0x10(%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    -0x10(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x10(%rbp)
jmp    1213 <acentua+0xb3>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x27,(%rax,%rcx,1)
mov    -0x8(%rbp),%rdi
lea    0xdab(%rip),%rsi
call   1060 <strcmp@plt>
cmp    $0x0,%rax
jne    12c6 <acentua+0x166>
movl   $0x6,-0x14(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0x14(%rbp),%eax
jl     12b5 <acentua+0x155>
mov    -0x8(%rbp),%rax
movslq -0x10(%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    -0x10(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x10(%rbp)
jmp    1280 <acentua+0x120>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x27,(%rax,%rcx,1)
mov    -0x8(%rbp),%rdi
lea    0xd47(%rip),%rsi
call   1050 <strcspn@plt>
mov    %eax,-0x14(%rbp)
cmp    -0xc(%rbp),%eax
je     1333 <acentua+0x1d3>
mov    -0xc(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0x14(%rbp),%eax
jl     131d <acentua+0x1bd>
mov    -0x8(%rbp),%rax
movslq -0x10(%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    -0x10(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x10(%rbp)
jmp    12e8 <acentua+0x188>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x27,(%rax,%rcx,1)
jmp    17fd <acentua+0x69d>
cmpl   $0x4,-0xc(%rbp)
jg     1489 <acentua+0x329>
movslq -0xc(%rbp),%rax
shl    $0x0,%rax
add    $0x1,%rax
mov    %eax,%edi
call   1070 <malloc@plt>
mov    %rax,-0x20(%rbp)
movl   $0x0,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    13e0 <acentua+0x280>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
lea    0xcb5(%rip),%rdi
movsbl (%rax,%rcx,1),%esi
call   1040 <strchr@plt>
cmp    $0x0,%rax
je     139a <acentua+0x23a>
mov    -0x20(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x56,(%rax,%rcx,1)
jmp    13cd <acentua+0x26d>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
lea    0xca0(%rip),%rdi
movsbl (%rax,%rcx,1),%esi
call   1040 <strchr@plt>
cmp    $0x0,%rax
je     13c8 <acentua+0x268>
mov    -0x20(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x43,(%rax,%rcx,1)
jmp    13cd <acentua+0x26d>
jmp    13d2 <acentua+0x272>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    135b <acentua+0x1fb>
mov    -0x20(%rbp),%rax
movslq -0xc(%rbp),%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x20(%rbp),%rsi
lea    0xc6a(%rip),%rdi
call   1080 <strstr@plt>
cmp    $0x0,%rax
je     1484 <acentua+0x324>
mov    -0x20(%rbp),%rdi
lea    0xc6a(%rip),%rsi
call   1060 <strcmp@plt>
cmp    $0x0,%rax
je     1484 <acentua+0x324>
mov    -0x20(%rbp),%rdi
lea    0xc4e(%rip),%rsi
call   1050 <strcspn@plt>
mov    %eax,-0x14(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0x14(%rbp),%eax
jl     146e <acentua+0x30e>
mov    -0x8(%rbp),%rax
movslq -0x10(%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    -0x10(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x10(%rbp)
jmp    1439 <acentua+0x2d9>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x27,(%rax,%rcx,1)
jmp    17fd <acentua+0x69d>
jmp    1489 <acentua+0x329>
mov    -0x8(%rbp),%rsi
mov    -0xc(%rbp),%eax
sub    $0x2,%eax
cltq
add    %rax,%rsi
lea    0xbde(%rip),%rdi
call   1080 <strstr@plt>
cmp    $0x0,%rax
je     15a3 <acentua+0x443>
mov    -0x8(%rbp),%rsi
mov    -0xc(%rbp),%eax
sub    $0x2,%eax
cltq
add    %rax,%rsi
lea    0xbf8(%rip),%rdi
call   1080 <strstr@plt>
cmp    $0x0,%rax
je     1549 <acentua+0x3e9>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
lea    0xb44(%rip),%rdi
movsbl (%rax,%rcx,1),%esi
call   1040 <strchr@plt>
cmp    $0x0,%rax
je     1549 <acentua+0x3e9>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x4,%ecx
movslq %ecx,%rcx
lea    0xb3b(%rip),%rdi
movsbl (%rax,%rcx,1),%esi
call   1040 <strchr@plt>
cmp    $0x0,%rax
je     1549 <acentua+0x3e9>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x4,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x71,%eax
je     1549 <acentua+0x3e9>
mov    -0xc(%rbp),%eax
sub    $0x3,%eax
mov    %eax,-0x14(%rbp)
jmp    1552 <acentua+0x3f2>
mov    -0xc(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x14(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0x14(%rbp),%eax
jl     158d <acentua+0x42d>
mov    -0x8(%rbp),%rax
movslq -0x10(%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    -0x10(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x10(%rbp)
jmp    1558 <acentua+0x3f8>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x27,(%rax,%rcx,1)
jmp    17fd <acentua+0x69d>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
lea    0xb0b(%rip),%rdi
movsbl (%rax,%rcx,1),%esi
call   1040 <strchr@plt>
cmp    $0x0,%rax
je     1698 <acentua+0x538>
mov    -0x8(%rbp),%rsi
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
cltq
add    %rax,%rsi
lea    0xae9(%rip),%rdi
call   1080 <strstr@plt>
cmp    $0x0,%rax
je     163e <acentua+0x4de>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
lea    0xa28(%rip),%rdi
movsbl (%rax,%rcx,1),%esi
call   1040 <strchr@plt>
cmp    $0x0,%rax
je     163e <acentua+0x4de>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x71,%eax
je     163e <acentua+0x4de>
mov    -0xc(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x14(%rbp)
jmp    1647 <acentua+0x4e7>
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0x14(%rbp),%eax
jl     1682 <acentua+0x522>
mov    -0x8(%rbp),%rax
movslq -0x10(%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    -0x10(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x10(%rbp)
jmp    164d <acentua+0x4ed>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x27,(%rax,%rcx,1)
jmp    17fd <acentua+0x69d>
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x10(%rbp)
cmpl   $0x1,-0x10(%rbp)
jl     1732 <acentua+0x5d2>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
lea    0x971(%rip),%rdi
movsbl (%rax,%rcx,1),%esi
call   1040 <strchr@plt>
cmp    $0x0,%rax
je     16d6 <acentua+0x576>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
cmpl   $0x2,-0x18(%rbp)
jne    171f <acentua+0x5bf>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
lea    0x9d9(%rip),%rdi
movsbl (%rax,%rcx,1),%esi
call   1040 <strchr@plt>
cmp    $0x0,%rax
je     1715 <acentua+0x5b5>
mov    -0x18(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
jmp    171a <acentua+0x5ba>
jmp    1732 <acentua+0x5d2>
jmp    171f <acentua+0x5bf>
jmp    1724 <acentua+0x5c4>
mov    -0x10(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x10(%rbp)
jmp    16a1 <acentua+0x541>
mov    -0x10(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
lea    0x982(%rip),%rdi
movsbl (%rax,%rcx,1),%esi
call   1040 <strchr@plt>
cmp    $0x0,%rax
je     17b1 <acentua+0x651>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
lea    0x8bd(%rip),%rdi
movsbl (%rax,%rcx,1),%esi
call   1040 <strchr@plt>
cmp    $0x0,%rax
je     17b1 <acentua+0x651>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
lea    0x938(%rip),%rdi
movsbl (%rax,%rcx,1),%esi
call   1040 <strchr@plt>
cmp    $0x0,%rax
jne    17b1 <acentua+0x651>
mov    -0x14(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x14(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0x14(%rbp),%eax
jl     17ec <acentua+0x68c>
mov    -0x8(%rbp),%rax
movslq -0x10(%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    -0x10(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x10(%rbp)
jmp    17b7 <acentua+0x657>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x27,(%rax,%rcx,1)
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<acentua>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
mov    %rdi,%rbx
call   1030 <strlen@plt>
mov    %eax,%r14d
lea    0xe80(%rip),%rsi
mov    %rbx,%rdi
call   1060 <strcmp@plt>
test   %rax,%rax
jne    11b6 <acentua+0x56>
cmp    $0x4,%r14d
jl     11b2 <acentua+0x52>
mov    %r14d,%eax
add    $0x1,%rax
nopw   0x0(%rax,%rax,1)
movzbl -0x1(%rbx,%rax,1),%ecx
mov    %cl,(%rbx,%rax,1)
add    $0xffffffffffffffff,%rax
cmp    $0x4,%rax
ja     11a0 <acentua+0x40>
movb   $0x27,0x5(%rbx)
lea    0xe4d(%rip),%rsi
mov    %rbx,%rdi
call   1060 <strcmp@plt>
test   %rax,%rax
jne    11f6 <acentua+0x96>
cmp    $0x2,%r14d
jl     11f2 <acentua+0x92>
mov    %r14d,%eax
add    $0x1,%rax
nopw   0x0(%rax,%rax,1)
movzbl -0x1(%rbx,%rax,1),%ecx
mov    %cl,(%rbx,%rax,1)
add    $0xffffffffffffffff,%rax
cmp    $0x2,%rax
ja     11e0 <acentua+0x80>
movb   $0x27,0x3(%rbx)
lea    0xe12(%rip),%rsi
mov    %rbx,%rdi
call   1060 <strcmp@plt>
test   %rax,%rax
jne    1236 <acentua+0xd6>
cmp    $0x6,%r14d
jl     1232 <acentua+0xd2>
mov    %r14d,%eax
add    $0x1,%rax
nopw   0x0(%rax,%rax,1)
movzbl -0x1(%rbx,%rax,1),%ecx
mov    %cl,(%rbx,%rax,1)
add    $0xffffffffffffffff,%rax
cmp    $0x6,%rax
ja     1220 <acentua+0xc0>
movb   $0x27,0x7(%rbx)
lea    0xddb(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcspn@plt>
cmp    %r14d,%eax
jne    12cf <acentua+0x16f>
cmp    $0x4,%r14d
jg     13d6 <acentua+0x276>
movslq %r14d,%rbp
lea    0x1(%r14),%edi
call   1070 <malloc@plt>
mov    %rax,%r15
mov    %r14,0x8(%rsp)
test   %r14d,%r14d
jle    1336 <acentua+0x1d6>
mov    0x8(%rsp),%r13d
xor    %r14d,%r14d
lea    0xda7(%rip),%r12
jmp    12a1 <acentua+0x141>
cs nopw 0x0(%rax,%rax,1)
mov    %cl,(%r15,%r14,1)
add    $0x1,%r14
cmp    %r14,%r13
je     1336 <acentua+0x1d6>
movsbl (%rbx,%r14,1),%esi
mov    %r12,%rdi
call   1040 <strchr@plt>
mov    $0x56,%cl
test   %rax,%rax
jne    1290 <acentua+0x130>
movsbl (%rbx,%r14,1),%esi
lea    0xd88(%rip),%rdi
call   1040 <strchr@plt>
mov    $0x43,%cl
test   %rax,%rax
jne    1290 <acentua+0x130>
jmp    1294 <acentua+0x134>
mov    %eax,%r15d
mov    %r14d,%edx
sub    %eax,%edx
jl     1621 <acentua+0x4c1>
movslq %r14d,%rax
movslq %r15d,%rdi
add    $0x1,%edx
mov    %rax,%rsi
sub    %rdi,%rsi
and    $0x3,%rdx
je     1312 <acentua+0x1b2>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movzbl (%rbx,%rax,1),%ecx
mov    %cl,0x1(%rbx,%rax,1)
add    $0xffffffffffffffff,%rax
add    $0xffffffffffffffff,%rdx
jne    1300 <acentua+0x1a0>
cmp    $0x3,%rsi
jb     1621 <acentua+0x4c1>
add    $0x1,%rax
mov    -0x4(%rbx,%rax,1),%ecx
mov    %ecx,-0x3(%rbx,%rax,1)
add    $0xfffffffffffffffc,%rax
cmp    %rdi,%rax
jg     1320 <acentua+0x1c0>
jmp    1621 <acentua+0x4c1>
movb   $0x0,(%r15,%rbp,1)
lea    0xd1f(%rip),%rdi
mov    %r15,%rsi
call   1080 <strstr@plt>
test   %rax,%rax
mov    0x8(%rsp),%r14
je     13d6 <acentua+0x276>
lea    0xd1c(%rip),%rsi
mov    %r15,%rdi
call   1060 <strcmp@plt>
test   %rax,%rax
je     13d6 <acentua+0x276>
lea    0xd06(%rip),%rsi
mov    %r15,%rdi
call   1050 <strcspn@plt>
mov    %eax,%r15d
cmp    %eax,%r14d
jl     1621 <acentua+0x4c1>
movslq %r15d,%rax
mov    %ebp,%edx
sub    %r15d,%edx
add    $0x1,%edx
mov    %rbp,%rsi
sub    %rax,%rsi
and    $0x3,%rdx
je     13b2 <acentua+0x252>
xchg   %ax,%ax
movzbl (%rbx,%rbp,1),%ecx
mov    %cl,0x1(%rbx,%rbp,1)
add    $0xffffffffffffffff,%rbp
add    $0xffffffffffffffff,%rdx
jne    13a0 <acentua+0x240>
cmp    $0x3,%rsi
jb     1621 <acentua+0x4c1>
add    $0x1,%rbp
mov    -0x4(%rbx,%rbp,1),%ecx
mov    %ecx,-0x3(%rbx,%rbp,1)
add    $0xfffffffffffffffc,%rbp
cmp    %rax,%rbp
jg     13c0 <acentua+0x260>
jmp    1621 <acentua+0x4c1>
lea    -0x2(%r14),%r12d
movslq %r14d,%rbp
lea    -0x2(%rbp),%r13
lea    (%rbx,%rbp,1),%r15
add    $0xfffffffffffffffe,%r15
lea    0xc8d(%rip),%rdi
mov    %r15,%rsi
call   1080 <strstr@plt>
test   %rax,%rax
je     1476 <acentua+0x316>
lea    0xcb8(%rip),%rdi
mov    %r15,%rsi
call   1080 <strstr@plt>
test   %rax,%rax
je     144b <acentua+0x2eb>
movsbl -0x3(%rbx,%rbp,1),%esi
lea    0xc0e(%rip),%rdi
call   1040 <strchr@plt>
test   %rax,%rax
je     144b <acentua+0x2eb>
movsbl -0x4(%rbp,%rbx,1),%esi
lea    0xc16(%rip),%rdi
call   1040 <strchr@plt>
test   %rax,%rax
je     144b <acentua+0x2eb>
lea    -0x3(%rbp),%rax
cmpb   $0x71,-0x4(%rbx,%rbp,1)
mov    %eax,%r15d
jne    1451 <acentua+0x2f1>
mov    %r13,%rax
mov    %r12d,%r15d
add    $0x1,%rbp
cs nopw 0x0(%rax,%rax,1)
nop
movzbl -0x1(%rbx,%rbp,1),%ecx
mov    %cl,(%rbx,%rbp,1)
add    $0xffffffffffffffff,%rbp
cmp    %rax,%rbp
jg     1460 <acentua+0x300>
jmp    1621 <acentua+0x4c1>
lea    -0x1(%rbp),%rax
mov    %rax,0x10(%rsp)
movsbl -0x1(%rbx,%rbp,1),%esi
lea    0xc37(%rip),%rdi
call   1040 <strchr@plt>
test   %rax,%rax
je     14f9 <acentua+0x399>
lea    (%rbx,%rbp,1),%rsi
add    $0xffffffffffffffff,%rsi
lea    0xc25(%rip),%rdi
call   1080 <strstr@plt>
test   %rax,%rax
je     14ca <acentua+0x36a>
movsbl (%r15),%esi
lea    0xb72(%rip),%rdi
call   1040 <strchr@plt>
test   %rax,%rax
je     14ca <acentua+0x36a>
cmpb   $0x71,-0x3(%rbp,%rbx,1)
jne    14d5 <acentua+0x375>
mov    0x10(%rsp),%rax
mov    %rax,%r13
mov    %eax,%r12d
add    $0x1,%rbp
nopl   0x0(%rax)
movzbl -0x1(%rbx,%rbp,1),%eax
mov    %al,(%rbx,%rbp,1)
add    $0xffffffffffffffff,%rbp
cmp    %r13,%rbp
jg     14e0 <acentua+0x380>
mov    %r12d,%r15d
jmp    1621 <acentua+0x4c1>
cmp    $0x2,%r14d
jl     1564 <acentua+0x404>
mov    %r14,0x8(%rsp)
mov    0x10(%rsp),%r15d
add    $0x1,%r15
xor    %r14d,%r14d
lea    0xb14(%rip),%r12
lea    0xbaf(%rip),%r13
jmp    152a <acentua+0x3ca>
add    $0xffffffffffffffff,%r15
cmp    $0x1,%r15
jle    156e <acentua+0x40e>
movsbl -0x1(%rbx,%r15,1),%esi
mov    %r12,%rdi
call   1040 <strchr@plt>
cmp    $0x1,%rax
sbb    $0xffffffff,%r14d
cmp    $0x2,%r14d
jne    1520 <acentua+0x3c0>
movsbl (%rbx,%r15,1),%esi
mov    %r13,%rdi
call   1040 <strchr@plt>
mov    $0x1,%r14d
test   %rax,%rax
jne    1520 <acentua+0x3c0>
add    $0xffffffff,%r15d
jmp    1571 <acentua+0x411>
mov    0x10(%rsp),%rax
mov    %eax,%r15d
jmp    1579 <acentua+0x419>
xor    %r15d,%r15d
movslq %r15d,%rax
mov    0x8(%rsp),%r14
movsbl (%rbx,%rax,1),%esi
lea    0xb45(%rip),%rdi
call   1040 <strchr@plt>
mov    %r14,%r12
test   %rax,%rax
je     15cb <acentua+0x46b>
movslq %r15d,%r14
movsbl -0x1(%rbx,%r14,1),%esi
lea    0xa8a(%rip),%rdi
call   1040 <strchr@plt>
test   %rax,%rax
je     15cb <acentua+0x46b>
lea    -0x1(%r14),%r15
movsbl -0x2(%r14,%rbx,1),%esi
lea    0xb11(%rip),%rdi
call   1040 <strchr@plt>
test   %rax,%rax
cmove  %r15d,%r14d
mov    %r14d,%r15d
sub    %r15d,%r12d
jl     1621 <acentua+0x4c1>
movslq %r15d,%rax
add    $0x1,%r12d
mov    %rbp,%rcx
sub    %rax,%rcx
and    $0x3,%r12
je     1602 <acentua+0x4a2>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movzbl (%rbx,%rbp,1),%edx
mov    %dl,0x1(%rbx,%rbp,1)
add    $0xffffffffffffffff,%rbp
add    $0xffffffffffffffff,%r12
jne    15f0 <acentua+0x490>
cmp    $0x3,%rcx
jb     1621 <acentua+0x4c1>
add    $0x1,%rbp
nopl   0x0(%rax)
mov    -0x4(%rbx,%rbp,1),%ecx
mov    %ecx,-0x3(%rbx,%rbp,1)
add    $0xfffffffffffffffc,%rbp
cmp    %rax,%rbp
jg     1610 <acentua+0x4b0>
movslq %r15d,%rax
movb   $0x27,0x1(%rax,%rbx,1)
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [10 x i8] c"rodrigues\00"
@.str.1 = [5 x i8] c"alex\00"
@.str.2 = [9 x i8] c"marmitex\00"
@.str.3 = [19 x i8] c"\C2\83\C2\88\C2\93\C2\A0\C2\82\C2\A1\C2\A2\C2\A3\C2\85\00"
@.str.4 = [30 x i8] c"aeiou\C3\86\C3\A4\C2\83\C2\88\C2\93\C2\81\C2\A0\C2\82\C2\A1\C2\A2\C2\A3\C2\85\00"
@.str.5 = [24 x i8] c"bc\C2\87dfghjklmnpqrstvwxyz\00"
@.str.6 = [26 x i8] c"V*VC*CV*CVC*CVCC*CCVC*CCV\00"
@.str.7 = [2 x i8] c"C\00"
@.str.8 = [2 x i8] c"V\00"
@.str.9 = [63 x i8] c"ar*er*ir*or*ur*is*us*az*ez*iz*oz*uz*al*el*il*ol*ul*am*im*om*um\00"
@.str.10 = [6 x i8] c"is*us\00"
@.str.11 = [7 x i8] c"u*i*\C3\86\00"
@.str.12 = [4 x i8] c"i*u\00"
@.str.13 = [4 x i8] c"q*g\00"
define void @acentua(i8* %0) {
%2 = alloca i8*
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i8*
store i8* %0, i8** %2
store i32 0, i32* %6
%8 = load i8*, i8** %2
%9 = call i32 @strlen(i8* %8)
store i32 %9, i32* %3
%10 = load i8*, i8** %2
%11 = call i64 @strcmp(i8* %10, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str, i64 0, i64 0))
%12 = icmp ne i64 %11, 0
br i1 %12, label %39, label %13
13: ; preds = %1
store i32 4, i32* %5
%14 = load i32, i32* %3
store i32 %14, i32* %4
br label %15
15: ; preds = %30, %13
%16 = load i32, i32* %4
%17 = load i32, i32* %5
%18 = icmp sge i32 %16, %17
br i1 %18, label %19, label %33
19: ; preds = %15
%20 = load i8*, i8** %2
%21 = load i32, i32* %4
%22 = sext i32 %21 to i64
%23 = getelementptr inbounds i8, i8* %20, i64 %22
%24 = load i8, i8* %23
%25 = load i8*, i8** %2
%26 = load i32, i32* %4
%27 = add nsw i32 %26, 1
%28 = sext i32 %27 to i64
%29 = getelementptr inbounds i8, i8* %25, i64 %28
store i8 %24, i8* %29
br label %30
30: ; preds = %19
%31 = load i32, i32* %4
%32 = add nsw i32 %31, -1
store i32 %32, i32* %4
br label %15
33: ; preds = %15
%34 = load i8*, i8** %2
%35 = load i32, i32* %5
%36 = add nsw i32 %35, 1
%37 = sext i32 %36 to i64
%38 = getelementptr inbounds i8, i8* %34, i64 %37
store i8 39, i8* %38
br label %39
39: ; preds = %33, %1
%40 = load i8*, i8** %2
%41 = call i64 @strcmp(i8* %40, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0))
%42 = icmp ne i64 %41, 0
br i1 %42, label %69, label %43
43: ; preds = %39
store i32 2, i32* %5
%44 = load i32, i32* %3
store i32 %44, i32* %4
br label %45
45: ; preds = %60, %43
%46 = load i32, i32* %4
%47 = load i32, i32* %5
%48 = icmp sge i32 %46, %47
br i1 %48, label %49, label %63
49: ; preds = %45
%50 = load i8*, i8** %2
%51 = load i32, i32* %4
%52 = sext i32 %51 to i64
%53 = getelementptr inbounds i8, i8* %50, i64 %52
%54 = load i8, i8* %53
%55 = load i8*, i8** %2
%56 = load i32, i32* %4
%57 = add nsw i32 %56, 1
%58 = sext i32 %57 to i64
%59 = getelementptr inbounds i8, i8* %55, i64 %58
store i8 %54, i8* %59
br label %60
60: ; preds = %49
%61 = load i32, i32* %4
%62 = add nsw i32 %61, -1
store i32 %62, i32* %4
br label %45
63: ; preds = %45
%64 = load i8*, i8** %2
%65 = load i32, i32* %5
%66 = add nsw i32 %65, 1
%67 = sext i32 %66 to i64
%68 = getelementptr inbounds i8, i8* %64, i64 %67
store i8 39, i8* %68
br label %69
69: ; preds = %63, %39
%70 = load i8*, i8** %2
%71 = call i64 @strcmp(i8* %70, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.2, i64 0, i64 0))
%72 = icmp ne i64 %71, 0
br i1 %72, label %99, label %73
73: ; preds = %69
store i32 6, i32* %5
%74 = load i32, i32* %3
store i32 %74, i32* %4
br label %75
75: ; preds = %90, %73
%76 = load i32, i32* %4
%77 = load i32, i32* %5
%78 = icmp sge i32 %76, %77
br i1 %78, label %79, label %93
79: ; preds = %75
%80 = load i8*, i8** %2
%81 = load i32, i32* %4
%82 = sext i32 %81 to i64
%83 = getelementptr inbounds i8, i8* %80, i64 %82
%84 = load i8, i8* %83
%85 = load i8*, i8** %2
%86 = load i32, i32* %4
%87 = add nsw i32 %86, 1
%88 = sext i32 %87 to i64
%89 = getelementptr inbounds i8, i8* %85, i64 %88
store i8 %84, i8* %89
br label %90
90: ; preds = %79
%91 = load i32, i32* %4
%92 = add nsw i32 %91, -1
store i32 %92, i32* %4
br label %75
93: ; preds = %75
%94 = load i8*, i8** %2
%95 = load i32, i32* %5
%96 = add nsw i32 %95, 1
%97 = sext i32 %96 to i64
%98 = getelementptr inbounds i8, i8* %94, i64 %97
store i8 39, i8* %98
br label %99
99: ; preds = %93, %69
%100 = load i8*, i8** %2
%101 = call i32 @strcspn(i8* %100, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.3, i64 0, i64 0))
store i32 %101, i32* %5
%102 = load i32, i32* %3
%103 = icmp ne i32 %101, %102
br i1 %103, label %104, label %130
104: ; preds = %99
%105 = load i32, i32* %3
store i32 %105, i32* %4
br label %106
106: ; preds = %121, %104
%107 = load i32, i32* %4
%108 = load i32, i32* %5
%109 = icmp sge i32 %107, %108
br i1 %109, label %110, label %124
110: ; preds = %106
%111 = load i8*, i8** %2
%112 = load i32, i32* %4
%113 = sext i32 %112 to i64
%114 = getelementptr inbounds i8, i8* %111, i64 %113
%115 = load i8, i8* %114
%116 = load i8*, i8** %2
%117 = load i32, i32* %4
%118 = add nsw i32 %117, 1
%119 = sext i32 %118 to i64
%120 = getelementptr inbounds i8, i8* %116, i64 %119
store i8 %115, i8* %120
br label %121
121: ; preds = %110
%122 = load i32, i32* %4
%123 = add nsw i32 %122, -1
store i32 %123, i32* %4
br label %106
124: ; preds = %106
%125 = load i8*, i8** %2
%126 = load i32, i32* %5
%127 = add nsw i32 %126, 1
%128 = sext i32 %127 to i64
%129 = getelementptr inbounds i8, i8* %125, i64 %128
store i8 39, i8* %129
br label %453
130: ; preds = %99
%131 = load i32, i32* %3
%132 = icmp sle i32 %131, 4
br i1 %132, label %133, label %217
133: ; preds = %130
%134 = load i32, i32* %3
%135 = sext i32 %134 to i64
%136 = mul i64 %135, 1
%137 = add i64 %136, 1
%138 = trunc i64 %137 to i32
%139 = call i64 @malloc(i32 %138)
%140 = inttoptr i64 %139 to i8*
store i8* %140, i8** %7
store i32 0, i32* %4
br label %141
141: ; preds = %173, %133
%142 = load i32, i32* %4
%143 = load i32, i32* %3
%144 = icmp slt i32 %142, %143
br i1 %144, label %145, label %176
145: ; preds = %141
%146 = load i8*, i8** %2
%147 = load i32, i32* %4
%148 = sext i32 %147 to i64
%149 = getelementptr inbounds i8, i8* %146, i64 %148
%150 = load i8, i8* %149
%151 = call i64 @strchr(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.4, i64 0, i64 0), i8 signext %150)
%152 = icmp ne i64 %151, 0
br i1 %152, label %153, label %158
153: ; preds = %145
%154 = load i8*, i8** %7
%155 = load i32, i32* %4
%156 = sext i32 %155 to i64
%157 = getelementptr inbounds i8, i8* %154, i64 %156
store i8 86, i8* %157
br label %172
158: ; preds = %145
%159 = load i8*, i8** %2
%160 = load i32, i32* %4
%161 = sext i32 %160 to i64
%162 = getelementptr inbounds i8, i8* %159, i64 %161
%163 = load i8, i8* %162
%164 = call i64 @strchr(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.5, i64 0, i64 0), i8 signext %163)
%165 = icmp ne i64 %164, 0
br i1 %165, label %166, label %171
166: ; preds = %158
%167 = load i8*, i8** %7
%168 = load i32, i32* %4
%169 = sext i32 %168 to i64
%170 = getelementptr inbounds i8, i8* %167, i64 %169
store i8 67, i8* %170
br label %171
171: ; preds = %166, %158
br label %172
172: ; preds = %171, %153
br label %173
173: ; preds = %172
%174 = load i32, i32* %4
%175 = add nsw i32 %174, 1
store i32 %175, i32* %4
br label %141
176: ; preds = %141
%177 = load i8*, i8** %7
%178 = load i32, i32* %3
%179 = sext i32 %178 to i64
%180 = getelementptr inbounds i8, i8* %177, i64 %179
store i8 0, i8* %180
%181 = load i8*, i8** %7
%182 = call i64 @strstr(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.6, i64 0, i64 0), i8* %181)
%183 = icmp ne i64 %182, 0
br i1 %183, label %184, label %216
184: ; preds = %176
%185 = load i8*, i8** %7
%186 = call i64 @strcmp(i8* %185, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i64 0, i64 0))
%187 = icmp ne i64 %186, 0
br i1 %187, label %188, label %216
188: ; preds = %184
%189 = load i8*, i8** %7
%190 = call i32 @strcspn(i8* %189, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.8, i64 0, i64 0))
store i32 %190, i32* %5
%191 = load i32, i32* %3
store i32 %191, i32* %4
br label %192
192: ; preds = %207, %188
%193 = load i32, i32* %4
%194 = load i32, i32* %5
%195 = icmp sge i32 %193, %194
br i1 %195, label %196, label %210
196: ; preds = %192
%197 = load i8*, i8** %2
%198 = load i32, i32* %4
%199 = sext i32 %198 to i64
%200 = getelementptr inbounds i8, i8* %197, i64 %199
%201 = load i8, i8* %200
%202 = load i8*, i8** %2
%203 = load i32, i32* %4
%204 = add nsw i32 %203, 1
%205 = sext i32 %204 to i64
%206 = getelementptr inbounds i8, i8* %202, i64 %205
store i8 %201, i8* %206
br label %207
207: ; preds = %196
%208 = load i32, i32* %4
%209 = add nsw i32 %208, -1
store i32 %209, i32* %4
br label %192
210: ; preds = %192
%211 = load i8*, i8** %2
%212 = load i32, i32* %5
%213 = add nsw i32 %212, 1
%214 = sext i32 %213 to i64
%215 = getelementptr inbounds i8, i8* %211, i64 %214
store i8 39, i8* %215
br label %453
216: ; preds = %184, %176
br label %217
217: ; preds = %216, %130
%218 = load i8*, i8** %2
%219 = load i32, i32* %3
%220 = sub nsw i32 %219, 2
%221 = sext i32 %220 to i64
%222 = getelementptr inbounds i8, i8* %218, i64 %221
%223 = call i64 @strstr(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.9, i64 0, i64 0), i8* %222)
%224 = icmp ne i64 %223, 0
br i1 %224, label %225, label %292
225: ; preds = %217
%226 = load i8*, i8** %2
%227 = load i32, i32* %3
%228 = sub nsw i32 %227, 2
%229 = sext i32 %228 to i64
%230 = getelementptr inbounds i8, i8* %226, i64 %229
%231 = call i64 @strstr(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.10, i64 0, i64 0), i8* %230)
%232 = icmp ne i64 %231, 0
br i1 %232, label %233, label %263
233: ; preds = %225
%234 = load i8*, i8** %2
%235 = load i32, i32* %3
%236 = sub nsw i32 %235, 3
%237 = sext i32 %236 to i64
%238 = getelementptr inbounds i8, i8* %234, i64 %237
%239 = load i8, i8* %238
%240 = call i64 @strchr(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.4, i64 0, i64 0), i8 signext %239)
%241 = icmp ne i64 %240, 0
br i1 %241, label %242, label %263
242: ; preds = %233
%243 = load i8*, i8** %2
%244 = load i32, i32* %3
%245 = sub nsw i32 %244, 4
%246 = sext i32 %245 to i64
%247 = getelementptr inbounds i8, i8* %243, i64 %246
%248 = load i8, i8* %247
%249 = call i64 @strchr(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.5, i64 0, i64 0), i8 signext %248)
%250 = icmp ne i64 %249, 0
br i1 %250, label %251, label %263
251: ; preds = %242
%252 = load i8*, i8** %2
%253 = load i32, i32* %3
%254 = sub nsw i32 %253, 4
%255 = sext i32 %254 to i64
%256 = getelementptr inbounds i8, i8* %252, i64 %255
%257 = load i8, i8* %256
%258 = sext i8 %257 to i32
%259 = icmp ne i32 %258, 113
br i1 %259, label %260, label %263
260: ; preds = %251
%261 = load i32, i32* %3
%262 = sub nsw i32 %261, 3
store i32 %262, i32* %5
br label %266
263: ; preds = %251, %242, %233, %225
%264 = load i32, i32* %3
%265 = sub nsw i32 %264, 2
store i32 %265, i32* %5
br label %266
266: ; preds = %263, %260
%267 = load i32, i32* %3
store i32 %267, i32* %4
br label %268
268: ; preds = %283, %266
%269 = load i32, i32* %4
%270 = load i32, i32* %5
%271 = icmp sge i32 %269, %270
br i1 %271, label %272, label %286
272: ; preds = %268
%273 = load i8*, i8** %2
%274 = load i32, i32* %4
%275 = sext i32 %274 to i64
%276 = getelementptr inbounds i8, i8* %273, i64 %275
%277 = load i8, i8* %276
%278 = load i8*, i8** %2
%279 = load i32, i32* %4
%280 = add nsw i32 %279, 1
%281 = sext i32 %280 to i64
%282 = getelementptr inbounds i8, i8* %278, i64 %281
store i8 %277, i8* %282
br label %283
283: ; preds = %272
%284 = load i32, i32* %4
%285 = add nsw i32 %284, -1
store i32 %285, i32* %4
br label %268
286: ; preds = %268
%287 = load i8*, i8** %2
%288 = load i32, i32* %5
%289 = add nsw i32 %288, 1
%290 = sext i32 %289 to i64
%291 = getelementptr inbounds i8, i8* %287, i64 %290
store i8 39, i8* %291
br label %453
292: ; preds = %217
%293 = load i8*, i8** %2
%294 = load i32, i32* %3
%295 = sub nsw i32 %294, 1
%296 = sext i32 %295 to i64
%297 = getelementptr inbounds i8, i8* %293, i64 %296
%298 = load i8, i8* %297
%299 = call i64 @strchr(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.11, i64 0, i64 0), i8 signext %298)
%300 = icmp ne i64 %299, 0
br i1 %300, label %301, label %359
301: ; preds = %292
%302 = load i8*, i8** %2
%303 = load i32, i32* %3
%304 = sub nsw i32 %303, 1
%305 = sext i32 %304 to i64
%306 = getelementptr inbounds i8, i8* %302, i64 %305
%307 = call i64 @strstr(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.12, i64 0, i64 0), i8* %306)
%308 = icmp ne i64 %307, 0
br i1 %308, label %309, label %330
309: ; preds = %301
%310 = load i8*, i8** %2
%311 = load i32, i32* %3
%312 = sub nsw i32 %311, 2
%313 = sext i32 %312 to i64
%314 = getelementptr inbounds i8, i8* %310, i64 %313
%315 = load i8, i8* %314
%316 = call i64 @strchr(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.4, i64 0, i64 0), i8 signext %315)
%317 = icmp ne i64 %316, 0
br i1 %317, label %318, label %330
318: ; preds = %309
%319 = load i8*, i8** %2
%320 = load i32, i32* %3
%321 = sub nsw i32 %320, 3
%322 = sext i32 %321 to i64
%323 = getelementptr inbounds i8, i8* %319, i64 %322
%324 = load i8, i8* %323
%325 = sext i8 %324 to i32
%326 = icmp ne i32 %325, 113
br i1 %326, label %327, label %330
327: ; preds = %318
%328 = load i32, i32* %3
%329 = sub nsw i32 %328, 2
store i32 %329, i32* %5
br label %333
330: ; preds = %318, %309, %301
%331 = load i32, i32* %3
%332 = sub nsw i32 %331, 1
store i32 %332, i32* %5
br label %333
333: ; preds = %330, %327
%334 = load i32, i32* %3
store i32 %334, i32* %4
br label %335
335: ; preds = %350, %333
%336 = load i32, i32* %4
%337 = load i32, i32* %5
%338 = icmp sge i32 %336, %337
br i1 %338, label %339, label %353
339: ; preds = %335
%340 = load i8*, i8** %2
%341 = load i32, i32* %4
%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, 1
%348 = sext i32 %347 to i64
%349 = getelementptr inbounds i8, i8* %345, i64 %348
store i8 %344, i8* %349
br label %350
350: ; preds = %339
%351 = load i32, i32* %4
%352 = add nsw i32 %351, -1
store i32 %352, i32* %4
br label %335
353: ; preds = %335
%354 = load i8*, i8** %2
%355 = load i32, i32* %5
%356 = add nsw i32 %355, 1
%357 = sext i32 %356 to i64
%358 = getelementptr inbounds i8, i8* %354, i64 %357
store i8 39, i8* %358
br label %453
359: ; preds = %292
%360 = load i32, i32* %3
%361 = sub nsw i32 %360, 1
store i32 %361, i32* %4
br label %362
362: ; preds = %394, %359
%363 = load i32, i32* %4
%364 = icmp sge i32 %363, 1
br i1 %364, label %365, label %397
365: ; preds = %362
%366 = load i8*, i8** %2
%367 = load i32, i32* %4
%368 = sext i32 %367 to i64
%369 = getelementptr inbounds i8, i8* %366, i64 %368
%370 = load i8, i8* %369
%371 = call i64 @strchr(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.4, i64 0, i64 0), i8 signext %370)
%372 = icmp ne i64 %371, 0
br i1 %372, label %373, label %376
373: ; preds = %365
%374 = load i32, i32* %6
%375 = add nsw i32 %374, 1
store i32 %375, i32* %6
br label %376
376: ; preds = %373, %365
%377 = load i32, i32* %6
%378 = icmp eq i32 %377, 2
br i1 %378, label %379, label %393
379: ; preds = %376
%380 = load i8*, i8** %2
%381 = load i32, i32* %4
%382 = add nsw i32 %381, 1
%383 = sext i32 %382 to i64
%384 = getelementptr inbounds i8, i8* %380, i64 %383
%385 = load i8, i8* %384
%386 = call i64 @strchr(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.13, i64 0, i64 0), i8 signext %385)
%387 = icmp ne i64 %386, 0
br i1 %387, label %388, label %391
388: ; preds = %379
%389 = load i32, i32* %6
%390 = add nsw i32 %389, -1
store i32 %390, i32* %6
br label %392
391: ; preds = %379
br label %397
392: ; preds = %388
br label %393
393: ; preds = %392, %376
br label %394
394: ; preds = %393
%395 = load i32, i32* %4
%396 = add nsw i32 %395, -1
store i32 %396, i32* %4
br label %362
397: ; preds = %391, %362
%398 = load i32, i32* %4
store i32 %398, i32* %5
%399 = load i8*, i8** %2
%400 = load i32, i32* %5
%401 = sext i32 %400 to i64
%402 = getelementptr inbounds i8, i8* %399, i64 %401
%403 = load i8, i8* %402
%404 = call i64 @strchr(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.12, i64 0, i64 0), i8 signext %403)
%405 = icmp ne i64 %404, 0
br i1 %405, label %406, label %427
406: ; preds = %397
%407 = load i8*, i8** %2
%408 = load i32, i32* %5
%409 = sub nsw i32 %408, 1
%410 = sext i32 %409 to i64
%411 = getelementptr inbounds i8, i8* %407, i64 %410
%412 = load i8, i8* %411
%413 = call i64 @strchr(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.4, i64 0, i64 0), i8 signext %412)
%414 = icmp ne i64 %413, 0
br i1 %414, label %415, label %427
415: ; preds = %406
%416 = load i8*, i8** %2
%417 = load i32, i32* %5
%418 = sub nsw i32 %417, 2
%419 = sext i32 %418 to i64
%420 = getelementptr inbounds i8, i8* %416, i64 %419
%421 = load i8, i8* %420
%422 = call i64 @strchr(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.13, i64 0, i64 0), i8 signext %421)
%423 = icmp ne i64 %422, 0
br i1 %423, label %427, label %424
424: ; preds = %415
%425 = load i32, i32* %5
%426 = add nsw i32 %425, -1
store i32 %426, i32* %5
br label %427
427: ; preds = %424, %415, %406, %397
%428 = load i32, i32* %3
store i32 %428, i32* %4
br label %429
429: ; preds = %444, %427
%430 = load i32, i32* %4
%431 = load i32, i32* %5
%432 = icmp sge i32 %430, %431
br i1 %432, label %433, label %447
433: ; preds = %429
%434 = load i8*, i8** %2
%435 = load i32, i32* %4
%436 = sext i32 %435 to i64
%437 = getelementptr inbounds i8, i8* %434, i64 %436
%438 = load i8, i8* %437
%439 = load i8*, i8** %2
%440 = load i32, i32* %4
%441 = add nsw i32 %440, 1
%442 = sext i32 %441 to i64
%443 = getelementptr inbounds i8, i8* %439, i64 %442
store i8 %438, i8* %443
br label %444
444: ; preds = %433
%445 = load i32, i32* %4
%446 = add nsw i32 %445, -1
store i32 %446, i32* %4
br label %429
447: ; preds = %429
%448 = load i8*, i8** %2
%449 = load i32, i32* %5
%450 = add nsw i32 %449, 1
%451 = sext i32 %450 to i64
%452 = getelementptr inbounds i8, i8* %448, i64 %451
store i8 39, i8* %452
br label %453
453: ; preds = %447, %353, %286, %210, %124
ret void
}

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