#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ append_trans(char *, char *, int);
int /*<<< orphan*/ strcat(char *, char *);
char *strchr(char *, char);
int /*<<< orphan*/ strcpy(char *, char *);
int strlen(char *);
int /*<<< orphan*/ strncmp(char *, char *, int);
int /*<<< orphan*/ strncpy(char *, char *, int);
char *translate_comp(char *, int *);
char *translate_lujvo(char *word) {
  static char result[4096];
  char buf[64];
  char *w, *trans;
  int initial;
  char *yy;
  int ypos = 0;
  int conversion = 0;
  w = word;
  result[0] = 0;
  initial = 1;
  do {
    if (strlen(w) == 5) {
      trans = translate_comp(w, &conversion);
      append_trans(trans, result, initial);
      break;
    } else {
      if (strlen(w) < 5) {
        strcpy(buf, "%");
        strcat(buf, w);
        trans = translate_comp(buf, &conversion);
        if (trans) {
          if (!initial) {
            strcat(result, "-");
          }
          strcat(result, trans);
        } else {
          if (!initial) {
            strcat(result, "-");
          }
          strcat(result, "?");
        }
        break;
      } else {
        yy = strchr(w, 'y');
        if (yy) {
          ypos = yy - w;
        }
        if (yy && ypos == 3) {
          if (!strncmp(w, "sel", 3)) {
            conversion = 2;
          } else if (!strncmp(w, "ter", 3)) {
            conversion = 3;
          } else if (!strncmp(w, "vel", 3)) {
            conversion = 4;
          } else if (!strncmp(w, "xel", 3)) {
            conversion = 5;
          } else {
            buf[0] = '%';
            strncpy(buf + 1, w, 3);
            buf[4] = 0;
            trans = translate_comp(buf, &conversion);
            append_trans(trans, result, initial);
          }
          w += 4;
        } else if (yy && ypos == 4) {
          buf[0] = '%';
          strncpy(buf + 1, w, 4);
          buf[5] = 0;
          trans = translate_comp(buf, &conversion);
          append_trans(trans, result, initial);
          w += 5;
        } else {
          buf[0] = '%';
          if (w[2] == '\'') {
            strncpy(buf + 1, w, 4);
            buf[5] = 0;
            trans = translate_comp(buf, &conversion);
            append_trans(trans, result, initial);
            if (strchr("aeiou", w[1]) && strchr("aeiou", w[3]) && initial &&
                w[4] && (w[4] == 'r' || (w[4] == 'n' && w[5] == 'r'))) {
              w += 5;
            } else {
              w += 4;
            }
          } else {
            if (!strncmp(w, "sel", 3)) {
              conversion = 2;
            } else if (!strncmp(w, "ter", 3)) {
              conversion = 3;
            } else if (!strncmp(w, "vel", 3)) {
              conversion = 4;
            } else if (!strncmp(w, "xel", 3)) {
              conversion = 5;
            } else {
              strncpy(buf + 1, w, 3);
              buf[4] = 0;
              trans = translate_comp(buf, &conversion);
              append_trans(trans, result, initial);
            }
            if (strchr("aeiou", w[1]) && strchr("aeiou", w[2]) && initial &&
                w[3] && (w[3] == 'r' || (w[3] == 'n' && w[4] == 'r'))) {
              w += 4;
            } else {
              w += 3;
            }
          }
        }
      }
    }
    initial = 0;
  } while (*w);
  return result;
}


x86 assembly (clang, -O0):
<translate_lujvo>:
push   %rbp
mov    %rsp,%rbp
sub    $0x80,%rsp
mov    %rdi,-0x8(%rbp)
movl   $0x0,-0x74(%rbp)
movl   $0x0,-0x78(%rbp)
mov    -0x8(%rbp),%rax
mov    %rax,-0x58(%rbp)
movb   $0x0,0x2ec4(%rip)
movl   $0x1,-0x64(%rbp)
mov    -0x58(%rbp),%rdi
call   1070 <strlen@plt>
cmp    $0x5,%eax
jne    11ee <translate_lujvo+0x6e>
mov    -0x58(%rbp),%rdi
lea    -0x78(%rbp),%rsi
call   1030 <translate_comp@plt>
mov    %rax,-0x60(%rbp)
mov    -0x60(%rbp),%rdi
mov    -0x64(%rbp),%edx
lea    0x2e8c(%rip),%rsi
call   1090 <append_trans@plt>
jmp    171a <translate_lujvo+0x59a>
mov    -0x58(%rbp),%rdi
call   1070 <strlen@plt>
cmp    $0x5,%eax
jge    12a0 <translate_lujvo+0x120>
lea    -0x50(%rbp),%rdi
lea    0xdf5(%rip),%rsi
call   1060 <strcpy@plt>
lea    -0x50(%rbp),%rdi
mov    -0x58(%rbp),%rsi
call   10a0 <strcat@plt>
lea    -0x50(%rbp),%rdi
lea    -0x78(%rbp),%rsi
call   1030 <translate_comp@plt>
mov    %rax,-0x60(%rbp)
cmpq   $0x0,-0x60(%rbp)
je     126b <translate_lujvo+0xeb>
cmpl   $0x0,-0x64(%rbp)
jne    1256 <translate_lujvo+0xd6>
lea    0x2e26(%rip),%rdi
lea    0xdb1(%rip),%rsi
call   10a0 <strcat@plt>
mov    -0x60(%rbp),%rsi
lea    0x2e0f(%rip),%rdi
call   10a0 <strcat@plt>
jmp    129b <translate_lujvo+0x11b>
cmpl   $0x0,-0x64(%rbp)
jne    1288 <translate_lujvo+0x108>
lea    0x2df4(%rip),%rdi
lea    0xd7f(%rip),%rsi
call   10a0 <strcat@plt>
lea    0x2de1(%rip),%rdi
lea    0xd6e(%rip),%rsi
call   10a0 <strcat@plt>
jmp    171a <translate_lujvo+0x59a>
mov    -0x58(%rbp),%rdi
mov    $0x79,%esi
call   1080 <strchr@plt>
mov    %rax,-0x70(%rbp)
cmpq   $0x0,-0x70(%rbp)
je     12cb <translate_lujvo+0x14b>
mov    -0x70(%rbp),%rax
mov    -0x58(%rbp),%rcx
sub    %rcx,%rax
mov    %eax,-0x74(%rbp)
cmpq   $0x0,-0x70(%rbp)
je     13ea <translate_lujvo+0x26a>
cmpl   $0x3,-0x74(%rbp)
jne    13ea <translate_lujvo+0x26a>
mov    -0x58(%rbp),%rdi
lea    0xd1b(%rip),%rsi
mov    $0x3,%edx
call   1050 <strncmp@plt>
cmp    $0x0,%eax
jne    130a <translate_lujvo+0x18a>
movl   $0x2,-0x78(%rbp)
jmp    13d9 <translate_lujvo+0x259>
mov    -0x58(%rbp),%rdi
lea    0xcf5(%rip),%rsi
mov    $0x3,%edx
call   1050 <strncmp@plt>
cmp    $0x0,%eax
jne    1334 <translate_lujvo+0x1b4>
movl   $0x3,-0x78(%rbp)
jmp    13d4 <translate_lujvo+0x254>
mov    -0x58(%rbp),%rdi
lea    0xccf(%rip),%rsi
mov    $0x3,%edx
call   1050 <strncmp@plt>
cmp    $0x0,%eax
jne    135e <translate_lujvo+0x1de>
movl   $0x4,-0x78(%rbp)
jmp    13cf <translate_lujvo+0x24f>
mov    -0x58(%rbp),%rdi
lea    0xca9(%rip),%rsi
mov    $0x3,%edx
call   1050 <strncmp@plt>
cmp    $0x0,%eax
jne    1388 <translate_lujvo+0x208>
movl   $0x5,-0x78(%rbp)
jmp    13ca <translate_lujvo+0x24a>
movb   $0x25,-0x50(%rbp)
lea    -0x50(%rbp),%rdi
add    $0x1,%rdi
mov    -0x58(%rbp),%rsi
mov    $0x3,%edx
call   1040 <strncpy@plt>
movb   $0x0,-0x4c(%rbp)
lea    -0x50(%rbp),%rdi
lea    -0x78(%rbp),%rsi
call   1030 <translate_comp@plt>
mov    %rax,-0x60(%rbp)
mov    -0x60(%rbp),%rdi
mov    -0x64(%rbp),%edx
lea    0x2cab(%rip),%rsi
call   1090 <append_trans@plt>
jmp    13cf <translate_lujvo+0x24f>
jmp    13d4 <translate_lujvo+0x254>
jmp    13d9 <translate_lujvo+0x259>
mov    -0x58(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x58(%rbp)
jmp    16fc <translate_lujvo+0x57c>
cmpq   $0x0,-0x70(%rbp)
je     1452 <translate_lujvo+0x2d2>
cmpl   $0x4,-0x74(%rbp)
jne    1452 <translate_lujvo+0x2d2>
movb   $0x25,-0x50(%rbp)
lea    -0x50(%rbp),%rdi
add    $0x1,%rdi
mov    -0x58(%rbp),%rsi
mov    $0x4,%edx
call   1040 <strncpy@plt>
movb   $0x0,-0x4b(%rbp)
lea    -0x50(%rbp),%rdi
lea    -0x78(%rbp),%rsi
call   1030 <translate_comp@plt>
mov    %rax,-0x60(%rbp)
mov    -0x60(%rbp),%rdi
mov    -0x64(%rbp),%edx
lea    0x2c34(%rip),%rsi
call   1090 <append_trans@plt>
mov    -0x58(%rbp),%rax
add    $0x5,%rax
mov    %rax,-0x58(%rbp)
jmp    16f7 <translate_lujvo+0x577>
movb   $0x25,-0x50(%rbp)
mov    -0x58(%rbp),%rax
movsbl 0x2(%rax),%eax
cmp    $0x27,%eax
jne    1551 <translate_lujvo+0x3d1>
lea    -0x50(%rbp),%rdi
add    $0x1,%rdi
mov    -0x58(%rbp),%rsi
mov    $0x4,%edx
call   1040 <strncpy@plt>
movb   $0x0,-0x4b(%rbp)
lea    -0x50(%rbp),%rdi
lea    -0x78(%rbp),%rsi
call   1030 <translate_comp@plt>
mov    %rax,-0x60(%rbp)
mov    -0x60(%rbp),%rdi
mov    -0x64(%rbp),%edx
lea    0x2bd0(%rip),%rsi
call   1090 <append_trans@plt>
mov    -0x58(%rbp),%rax
lea    0xb66(%rip),%rdi
movsbl 0x1(%rax),%esi
call   1080 <strchr@plt>
cmp    $0x0,%rax
je     1540 <translate_lujvo+0x3c0>
mov    -0x58(%rbp),%rax
lea    0xb48(%rip),%rdi
movsbl 0x3(%rax),%esi
call   1080 <strchr@plt>
cmp    $0x0,%rax
je     1540 <translate_lujvo+0x3c0>
cmpl   $0x0,-0x64(%rbp)
je     1540 <translate_lujvo+0x3c0>
mov    -0x58(%rbp),%rax
movsbl 0x4(%rax),%eax
cmp    $0x0,%eax
je     1540 <translate_lujvo+0x3c0>
mov    -0x58(%rbp),%rax
movsbl 0x4(%rax),%eax
cmp    $0x72,%eax
je     152f <translate_lujvo+0x3af>
mov    -0x58(%rbp),%rax
movsbl 0x4(%rax),%eax
cmp    $0x6e,%eax
jne    1540 <translate_lujvo+0x3c0>
mov    -0x58(%rbp),%rax
movsbl 0x5(%rax),%eax
cmp    $0x72,%eax
jne    1540 <translate_lujvo+0x3c0>
mov    -0x58(%rbp),%rax
add    $0x5,%rax
mov    %rax,-0x58(%rbp)
jmp    154c <translate_lujvo+0x3cc>
mov    -0x58(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x58(%rbp)
jmp    16f2 <translate_lujvo+0x572>
mov    -0x58(%rbp),%rdi
lea    0xaaa(%rip),%rsi
mov    $0x3,%edx
call   1050 <strncmp@plt>
cmp    $0x0,%eax
jne    157b <translate_lujvo+0x3fb>
movl   $0x2,-0x78(%rbp)
jmp    1646 <translate_lujvo+0x4c6>
mov    -0x58(%rbp),%rdi
lea    0xa84(%rip),%rsi
mov    $0x3,%edx
call   1050 <strncmp@plt>
cmp    $0x0,%eax
jne    15a5 <translate_lujvo+0x425>
movl   $0x3,-0x78(%rbp)
jmp    1641 <translate_lujvo+0x4c1>
mov    -0x58(%rbp),%rdi
lea    0xa5e(%rip),%rsi
mov    $0x3,%edx
call   1050 <strncmp@plt>
cmp    $0x0,%eax
jne    15cf <translate_lujvo+0x44f>
movl   $0x4,-0x78(%rbp)
jmp    163c <translate_lujvo+0x4bc>
mov    -0x58(%rbp),%rdi
lea    0xa38(%rip),%rsi
mov    $0x3,%edx
call   1050 <strncmp@plt>
cmp    $0x0,%eax
jne    15f9 <translate_lujvo+0x479>
movl   $0x5,-0x78(%rbp)
jmp    1637 <translate_lujvo+0x4b7>
lea    -0x50(%rbp),%rdi
add    $0x1,%rdi
mov    -0x58(%rbp),%rsi
mov    $0x3,%edx
call   1040 <strncpy@plt>
movb   $0x0,-0x4c(%rbp)
lea    -0x50(%rbp),%rdi
lea    -0x78(%rbp),%rsi
call   1030 <translate_comp@plt>
mov    %rax,-0x60(%rbp)
mov    -0x60(%rbp),%rdi
mov    -0x64(%rbp),%edx
lea    0x2a3e(%rip),%rsi
call   1090 <append_trans@plt>
jmp    163c <translate_lujvo+0x4bc>
jmp    1641 <translate_lujvo+0x4c1>
jmp    1646 <translate_lujvo+0x4c6>
mov    -0x58(%rbp),%rax
lea    0x9c5(%rip),%rdi
movsbl 0x1(%rax),%esi
call   1080 <strchr@plt>
cmp    $0x0,%rax
je     16e1 <translate_lujvo+0x561>
mov    -0x58(%rbp),%rax
lea    0x9a7(%rip),%rdi
movsbl 0x2(%rax),%esi
call   1080 <strchr@plt>
cmp    $0x0,%rax
je     16e1 <translate_lujvo+0x561>
cmpl   $0x0,-0x64(%rbp)
je     16e1 <translate_lujvo+0x561>
mov    -0x58(%rbp),%rax
movsbl 0x3(%rax),%eax
cmp    $0x0,%eax
je     16e1 <translate_lujvo+0x561>
mov    -0x58(%rbp),%rax
movsbl 0x3(%rax),%eax
cmp    $0x72,%eax
je     16d0 <translate_lujvo+0x550>
mov    -0x58(%rbp),%rax
movsbl 0x3(%rax),%eax
cmp    $0x6e,%eax
jne    16e1 <translate_lujvo+0x561>
mov    -0x58(%rbp),%rax
movsbl 0x4(%rax),%eax
cmp    $0x72,%eax
jne    16e1 <translate_lujvo+0x561>
mov    -0x58(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x58(%rbp)
jmp    16ed <translate_lujvo+0x56d>
mov    -0x58(%rbp),%rax
add    $0x3,%rax
mov    %rax,-0x58(%rbp)
jmp    16f2 <translate_lujvo+0x572>
jmp    16f7 <translate_lujvo+0x577>
jmp    16fc <translate_lujvo+0x57c>
jmp    1701 <translate_lujvo+0x581>
jmp    1706 <translate_lujvo+0x586>
movl   $0x0,-0x64(%rbp)
mov    -0x58(%rbp),%rax
cmpb   $0x0,(%rax)
jne    11b3 <translate_lujvo+0x33>
lea    0x294f(%rip),%rax
add    $0x80,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<translate_lujvo>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x58,%rsp
mov    %rdi,%rbx
movl   $0x0,0xc(%rsp)
movb   $0x0,0x2ed0(%rip)
xor    %r12d,%r12d
mov    $0x1,%r14d
mov    $0x1,%r13b
lea    0xe53(%rip),%r15
xor    %ebp,%ebp
jmp    11de <translate_lujvo+0x5e>
movl   $0x2,0xc(%rsp)
mov    $0x4,%eax
xor    %r13d,%r13d
cmpb   $0x0,(%rbx,%rax,1)
lea    (%rbx,%rax,1),%rbx
mov    $0x1,%r12b
mov    $0x0,%r14d
je     15e5 <translate_lujvo+0x465>
mov    %rbx,%rdi
call   1070 <strlen@plt>
cmp    $0x5,%eax
je     153c <translate_lujvo+0x3bc>
mov    %rbx,%rdi
call   1070 <strlen@plt>
cmp    $0x4,%eax
jle    1560 <translate_lujvo+0x3e0>
mov    %rbx,%rdi
mov    $0x79,%esi
call   1080 <strchr@plt>
mov    %eax,%ecx
sub    %ebx,%ecx
test   %rax,%rax
cmovne %ecx,%ebp
je     12e0 <translate_lujvo+0x160>
cmp    $0x3,%ebp
jne    12e0 <translate_lujvo+0x160>
mov    %rbx,%rdi
mov    %r15,%rsi
mov    $0x3,%edx
call   1050 <strncmp@plt>
test   %eax,%eax
je     11b7 <translate_lujvo+0x37>
mov    %rbx,%rdi
lea    0xdc2(%rip),%rsi
mov    $0x3,%edx
call   1050 <strncmp@plt>
test   %eax,%eax
je     148d <translate_lujvo+0x30d>
mov    %rbx,%rdi
lea    0xdaa(%rip),%rsi
mov    $0x3,%edx
call   1050 <strncmp@plt>
test   %eax,%eax
je     149a <translate_lujvo+0x31a>
mov    %rbx,%rdi
lea    0xd92(%rip),%rsi
mov    $0x3,%edx
call   1050 <strncmp@plt>
test   %eax,%eax
je     14b1 <translate_lujvo+0x331>
movb   $0x25,0x10(%rsp)
lea    0x11(%rsp),%rdi
mov    %rbx,%rsi
mov    $0x3,%edx
call   1040 <strncpy@plt>
movb   $0x0,0x14(%rsp)
lea    0x10(%rsp),%rdi
lea    0xc(%rsp),%rsi
call   1030 <translate_comp@plt>
mov    %rax,%rdi
lea    0x2da9(%rip),%rsi
mov    %r14d,%edx
call   1090 <append_trans@plt>
jmp    11bf <translate_lujvo+0x3f>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movb   $0x25,0x10(%rsp)
test   %rax,%rax
je     1340 <translate_lujvo+0x1c0>
cmp    $0x4,%ebp
jne    1340 <translate_lujvo+0x1c0>
lea    0x11(%rsp),%rdi
mov    %rbx,%rsi
mov    $0x4,%edx
call   1040 <strncpy@plt>
movb   $0x0,0x15(%rsp)
lea    0x10(%rsp),%rdi
lea    0xc(%rsp),%rsi
call   1030 <translate_comp@plt>
mov    %rax,%rdi
lea    0x2d51(%rip),%rsi
mov    %r14d,%edx
call   1090 <append_trans@plt>
mov    $0x5,%eax
jmp    11c4 <translate_lujvo+0x44>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
cmpb   $0x27,0x2(%rbx)
jne    13eb <translate_lujvo+0x26b>
lea    0x11(%rsp),%rdi
mov    %rbx,%rsi
mov    $0x4,%edx
call   1040 <strncpy@plt>
movb   $0x0,0x15(%rsp)
lea    0x10(%rsp),%rdi
lea    0xc(%rsp),%rsi
call   1030 <translate_comp@plt>
mov    %rax,%rdi
lea    0x2cf6(%rip),%rsi
mov    %r14d,%edx
call   1090 <append_trans@plt>
movsbl 0x1(%rbx),%esi
lea    0xc89(%rip),%rdi
call   1080 <strchr@plt>
test   %rax,%rax
je     11bf <translate_lujvo+0x3f>
movsbl 0x3(%rbx),%esi
lea    0xc70(%rip),%rdi
call   1080 <strchr@plt>
test   %rax,%rax
sete   %al
not    %r13b
or     %al,%r13b
test   $0x1,%r13b
jne    11bf <translate_lujvo+0x3f>
movzbl 0x4(%rbx),%ecx
mov    $0x5,%eax
cmp    $0x72,%cl
je     11c4 <translate_lujvo+0x44>
cmp    $0x6e,%cl
jne    11bf <translate_lujvo+0x3f>
cmpb   $0x72,0x5(%rbx)
jne    11bf <translate_lujvo+0x3f>
jmp    11c4 <translate_lujvo+0x44>
mov    %rbx,%rdi
mov    %r15,%rsi
mov    $0x3,%edx
call   1050 <strncmp@plt>
test   %eax,%eax
je     14a7 <translate_lujvo+0x327>
mov    %rbx,%rdi
lea    0xbfd(%rip),%rsi
mov    $0x3,%edx
call   1050 <strncmp@plt>
test   %eax,%eax
je     14be <translate_lujvo+0x33e>
mov    %rbx,%rdi
lea    0xbe5(%rip),%rsi
mov    $0x3,%edx
call   1050 <strncmp@plt>
test   %eax,%eax
je     14c8 <translate_lujvo+0x348>
mov    %rbx,%rdi
lea    0xbcd(%rip),%rsi
mov    $0x3,%edx
call   1050 <strncmp@plt>
test   %eax,%eax
je     14d2 <translate_lujvo+0x352>
lea    0x11(%rsp),%rdi
mov    %rbx,%rsi
mov    $0x3,%edx
call   1040 <strncpy@plt>
movb   $0x0,0x14(%rsp)
lea    0x10(%rsp),%rdi
lea    0xc(%rsp),%rsi
call   1030 <translate_comp@plt>
mov    %rax,%rdi
lea    0x2bed(%rip),%rsi
mov    %r14d,%edx
call   1090 <append_trans@plt>
jmp    14da <translate_lujvo+0x35a>
movl   $0x3,0xc(%rsp)
jmp    11bf <translate_lujvo+0x3f>
movl   $0x4,0xc(%rsp)
jmp    11bf <translate_lujvo+0x3f>
movl   $0x2,0xc(%rsp)
jmp    14da <translate_lujvo+0x35a>
movl   $0x5,0xc(%rsp)
jmp    11bf <translate_lujvo+0x3f>
movl   $0x3,0xc(%rsp)
jmp    14da <translate_lujvo+0x35a>
movl   $0x4,0xc(%rsp)
jmp    14da <translate_lujvo+0x35a>
movl   $0x5,0xc(%rsp)
movsbl 0x1(%rbx),%esi
lea    0xb31(%rip),%rdi
call   1080 <strchr@plt>
test   %rax,%rax
je     1532 <translate_lujvo+0x3b2>
movsbl 0x2(%rbx),%esi
lea    0xb1c(%rip),%rdi
call   1080 <strchr@plt>
test   %rax,%rax
sete   %al
not    %r13b
or     %al,%r13b
test   $0x1,%r13b
jne    1532 <translate_lujvo+0x3b2>
movzbl 0x3(%rbx),%ecx
mov    $0x4,%eax
cmp    $0x72,%cl
je     11c4 <translate_lujvo+0x44>
cmp    $0x6e,%cl
jne    1532 <translate_lujvo+0x3b2>
cmpb   $0x72,0x4(%rbx)
je     11c4 <translate_lujvo+0x44>
mov    $0x3,%eax
jmp    11c4 <translate_lujvo+0x44>
lea    0xc(%rsp),%rsi
mov    %rbx,%rdi
call   1030 <translate_comp@plt>
lea    0x2b20(%rip),%rsi
mov    %rax,%rdi
mov    %r14d,%edx
call   1090 <append_trans@plt>
jmp    15e5 <translate_lujvo+0x465>
lea    0xa99(%rip),%rsi
lea    0x10(%rsp),%rbp
mov    %rbp,%rdi
call   1060 <strcpy@plt>
mov    %rbp,%rdi
mov    %rbx,%rsi
call   10a0 <strcat@plt>
lea    0xc(%rsp),%rsi
mov    %rbp,%rdi
call   1030 <translate_comp@plt>
test   %rax,%rax
je     15b9 <translate_lujvo+0x439>
mov    %rax,%rbx
test   $0x1,%r12b
je     15ad <translate_lujvo+0x42d>
lea    0x2acf(%rip),%rdi
lea    0xa5a(%rip),%rsi
call   10a0 <strcat@plt>
lea    0x2abc(%rip),%rdi
mov    %rbx,%rsi
jmp    15e0 <translate_lujvo+0x460>
test   $0x1,%r12b
je     15d2 <translate_lujvo+0x452>
lea    0x2aaa(%rip),%rdi
lea    0xa35(%rip),%rsi
call   10a0 <strcat@plt>
lea    0x2a97(%rip),%rdi
lea    0xa24(%rip),%rsi
call   10a0 <strcat@plt>
lea    0x2a84(%rip),%rax
add    $0x58,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
@translate_lujvo.result = internal global [4096 x i8] zeroinitializer
@.str = [2 x i8] c"%\00"
@.str.1 = [2 x i8] c"-\00"
@.str.2 = [2 x i8] c"?\00"
@.str.3 = [4 x i8] c"sel\00"
@.str.4 = [4 x i8] c"ter\00"
@.str.5 = [4 x i8] c"vel\00"
@.str.6 = [4 x i8] c"xel\00"
@.str.7 = [6 x i8] c"aeiou\00"
define i8* @translate_lujvo(i8* %0) {
%2 = alloca [64 x i8]
%3 = alloca i32
%4 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 0
%5 = bitcast i32* %3 to i8*
store i32 0, i32* %3
store i8 0, i8* getelementptr inbounds ([4096 x i8], [4096 x i8]* @translate_lujvo.result, i64 0, i64 0)
%6 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 1
%7 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 4
%8 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 5
br label %9
9: ; preds = %139, %1
%10 = phi i1 [ false, %139 ], [ true, %1 ]
%11 = phi i1 [ true, %139 ], [ false, %1 ]
%12 = phi i32 [ 0, %139 ], [ 1, %1 ]
%13 = phi i8* [ %141, %139 ], [ %0, %1 ]
%14 = phi i32 [ %45, %139 ], [ 0, %1 ]
%15 = call i32 @strlen(i8* %13)
%16 = icmp eq i32 %15, 5
br i1 %16, label %17, label %20
17: ; preds = %9
%18 = call i8* @translate_comp(i8* %13, i32* %3)
%19 = call i32 @append_trans(i8* %18, i8* getelementptr inbounds ([4096 x i8], [4096 x i8]* @translate_lujvo.result, i64 0, i64 0), i32 %12)
br label %144
20: ; preds = %9
%21 = call i32 @strlen(i8* %13)
%22 = icmp slt i32 %21, 5
br i1 %22, label %23, label %38
23: ; preds = %20
%24 = call i32 @strcpy(i8* %4, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%25 = call i32 @strcat(i8* %4, i8* %13)
%26 = call i8* @translate_comp(i8* %4, i32* %3)
%27 = icmp eq i8* %26, null
br i1 %27, label %33, label %28
28: ; preds = %23
br i1 %11, label %29, label %31
29: ; preds = %28
%30 = call i32 @strcat(i8* getelementptr inbounds ([4096 x i8], [4096 x i8]* @translate_lujvo.result, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %31
31: ; preds = %29, %28
%32 = call i32 @strcat(i8* getelementptr inbounds ([4096 x i8], [4096 x i8]* @translate_lujvo.result, i64 0, i64 0), i8* %26)
br label %144
33: ; preds = %23
br i1 %11, label %34, label %36
34: ; preds = %33
%35 = call i32 @strcat(i8* getelementptr inbounds ([4096 x i8], [4096 x i8]* @translate_lujvo.result, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %36
36: ; preds = %34, %33
%37 = call i32 @strcat(i8* getelementptr inbounds ([4096 x i8], [4096 x i8]* @translate_lujvo.result, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
br label %144
38: ; preds = %20
%39 = call i8* @strchr(i8* dereferenceable(1) %13, i8 signext 121)
%40 = icmp ne i8* %39, null
%41 = ptrtoint i8* %39 to i64
%42 = ptrtoint i8* %13 to i64
%43 = sub i64 %41, %42
%44 = trunc i64 %43 to i32
%45 = select i1 %40, i32 %44, i32 %14
%46 = icmp eq i32 %45, 3
%47 = select i1 %40, i1 %46, i1 false
br i1 %47, label %48, label %68
48: ; preds = %38
%49 = call i32 @strncmp(i8* %13, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i32 3)
%50 = icmp eq i32 %49, 0
br i1 %50, label %51, label %52
51: ; preds = %48
store i32 2, i32* %3
br label %139
52: ; preds = %48
%53 = call i32 @strncmp(i8* %13, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.4, i64 0, i64 0), i32 3)
%54 = icmp eq i32 %53, 0
br i1 %54, label %55, label %56
55: ; preds = %52
store i32 3, i32* %3
br label %139
56: ; preds = %52
%57 = call i32 @strncmp(i8* %13, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), i32 3)
%58 = icmp eq i32 %57, 0
br i1 %58, label %59, label %60
59: ; preds = %56
store i32 4, i32* %3
br label %139
60: ; preds = %56
%61 = call i32 @strncmp(i8* %13, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0), i32 3)
%62 = icmp eq i32 %61, 0
br i1 %62, label %63, label %64
63: ; preds = %60
store i32 5, i32* %3
br label %139
64: ; preds = %60
store i8 37, i8* %4
%65 = call i32 @strncpy(i8* %6, i8* %13, i32 3)
store i8 0, i8* %7
%66 = call i8* @translate_comp(i8* %4, i32* %3)
%67 = call i32 @append_trans(i8* %66, i8* getelementptr inbounds ([4096 x i8], [4096 x i8]* @translate_lujvo.result, i64 0, i64 0), i32 %12)
br label %139
68: ; preds = %38
%69 = icmp eq i32 %45, 4
%70 = select i1 %40, i1 %69, i1 false
store i8 37, i8* %4
br i1 %70, label %71, label %75
71: ; preds = %68
%72 = call i32 @strncpy(i8* %6, i8* %13, i32 4)
store i8 0, i8* %8
%73 = call i8* @translate_comp(i8* %4, i32* %3)
%74 = call i32 @append_trans(i8* %73, i8* getelementptr inbounds ([4096 x i8], [4096 x i8]* @translate_lujvo.result, i64 0, i64 0), i32 %12)
br label %139
75: ; preds = %68
%76 = getelementptr inbounds i8, i8* %13, i64 2
%77 = load i8, i8* %76
%78 = icmp eq i8 %77, 39
br i1 %78, label %79, label %101
79: ; preds = %75
%80 = call i32 @strncpy(i8* %6, i8* %13, i32 4)
store i8 0, i8* %8
%81 = call i8* @translate_comp(i8* %4, i32* %3)
%82 = call i32 @append_trans(i8* %81, i8* getelementptr inbounds ([4096 x i8], [4096 x i8]* @translate_lujvo.result, i64 0, i64 0), i32 %12)
%83 = getelementptr inbounds i8, i8* %13, i64 1
%84 = load i8, i8* %83
%85 = call i8* @strchr(i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0), i8 signext %84)
%86 = icmp eq i8* %85, null
br i1 %86, label %100, label %87
87: ; preds = %79
%88 = getelementptr inbounds i8, i8* %13, i64 3
%89 = load i8, i8* %88
%90 = call i8* @strchr(i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0), i8 signext %89)
%91 = icmp ne i8* %90, null
%92 = and i1 %10, %91
br i1 %92, label %93, label %100
93: ; preds = %87
%94 = getelementptr inbounds i8, i8* %13, i64 4
%95 = load i8, i8* %94
switch i8 %95, label %100 [
i8 110, label %96
i8 114, label %139
]
96: ; preds = %93
%97 = getelementptr inbounds i8, i8* %13, i64 5
%98 = load i8, i8* %97
%99 = icmp eq i8 %98, 114
br i1 %99, label %139, label %100
100: ; preds = %93, %96, %87, %79
br label %139
101: ; preds = %75
%102 = call i32 @strncmp(i8* %13, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i32 3)
%103 = icmp eq i32 %102, 0
br i1 %103, label %104, label %105
104: ; preds = %101
store i32 2, i32* %3
br label %121
105: ; preds = %101
%106 = call i32 @strncmp(i8* %13, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.4, i64 0, i64 0), i32 3)
%107 = icmp eq i32 %106, 0
br i1 %107, label %108, label %109
108: ; preds = %105
store i32 3, i32* %3
br label %121
109: ; preds = %105
%110 = call i32 @strncmp(i8* %13, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), i32 3)
%111 = icmp eq i32 %110, 0
br i1 %111, label %112, label %113
112: ; preds = %109
store i32 4, i32* %3
br label %121
113: ; preds = %109
%114 = call i32 @strncmp(i8* %13, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0), i32 3)
%115 = icmp eq i32 %114, 0
br i1 %115, label %116, label %117
116: ; preds = %113
store i32 5, i32* %3
br label %121
117: ; preds = %113
%118 = call i32 @strncpy(i8* %6, i8* %13, i32 3)
store i8 0, i8* %7
%119 = call i8* @translate_comp(i8* %4, i32* %3)
%120 = call i32 @append_trans(i8* %119, i8* getelementptr inbounds ([4096 x i8], [4096 x i8]* @translate_lujvo.result, i64 0, i64 0), i32 %12)
br label %121
121: ; preds = %108, %116, %117, %112, %104
%122 = getelementptr inbounds i8, i8* %13, i64 1
%123 = load i8, i8* %122
%124 = call i8* @strchr(i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0), i8 signext %123)
%125 = icmp eq i8* %124, null
br i1 %125, label %138, label %126
126: ; preds = %121
%127 = load i8, i8* %76
%128 = call i8* @strchr(i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0), i8 signext %127)
%129 = icmp ne i8* %128, null
%130 = and i1 %10, %129
br i1 %130, label %131, label %138
131: ; preds = %126
%132 = getelementptr inbounds i8, i8* %13, i64 3
%133 = load i8, i8* %132
switch i8 %133, label %138 [
i8 110, label %134
i8 114, label %139
]
134: ; preds = %131
%135 = getelementptr inbounds i8, i8* %13, i64 4
%136 = load i8, i8* %135
%137 = icmp eq i8 %136, 114
br i1 %137, label %139, label %138
138: ; preds = %131, %134, %126, %121
br label %139
139: ; preds = %134, %131, %96, %93, %51, %59, %64, %63, %55, %71, %138, %100
%140 = phi i64 [ 5, %71 ], [ 3, %138 ], [ 4, %100 ], [ 4, %55 ], [ 4, %63 ], [ 4, %64 ], [ 4, %59 ], [ 4, %51 ], [ 5, %93 ], [ 5, %96 ], [ 4, %131 ], [ 4, %134 ]
%141 = getelementptr inbounds i8, i8* %13, i64 %140
%142 = load i8, i8* %141
%143 = icmp eq i8 %142, 0
br i1 %143, label %144, label %9
144: ; preds = %139, %31, %36, %17
ret i8* getelementptr inbounds ([4096 x i8], [4096 x i8]* @translate_lujvo.result, i64 0, i64 0)
}