#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*/ memmove(unsigned char *, unsigned char *,
                           int /*<<< orphan*/);
int /*<<< orphan*/ mvsize(unsigned char *, int);
int /*<<< orphan*/ write_text(unsigned char *, char *);
void utf_replace_plain(unsigned char *s) {
  while (*s) {
    if (s[0] == 0xe2 && s[1] == 0x80) {
      if (s[2] == 0x93) {
        write_text(s, "-");
        memmove(s + 1, s + 3, mvsize(s, 3));
      } else if (s[2] == 0x94) {
        memmove(s + 4, s + 3, mvsize(s, 3));
        write_text(s, " -- ");
      } else if (s[2] == 0xa6) {
        write_text(s, "...");
      }
    } else if (s[0] == 0xe2 && s[1] == 0x88 && s[2] == 0x92) {
      write_text(s, "-");
      memmove(s + 1, s + 3, mvsize(s, 3));
    } else if (s[0] == 0xe2 && s[1] == 0x89 && s[2] == 0xa4) {
      write_text(s, "<=");
      memmove(s + 2, s + 3, mvsize(s, 3));
    } else if (s[0] == 0xce && s[1] == 0x93) {
      memmove(s + 5, s + 2, mvsize(s, 2));
      write_text(s, "Gamma");
    } else if (s[0] == 0xce && s[1] == 0xb2) {
      memmove(s + 4, s + 2, mvsize(s, 2));
      write_text(s, "beta");
    } else if (s[0] == 0xce && s[1] == 0xbb) {
      memmove(s + 6, s + 2, mvsize(s, 2));
      write_text(s, "lambda");
    } else if (s[0] == 0xce && s[1] == 0xbc) {
      write_text(s, "mu");
    } else if (s[0] == 0xcf && s[1] == 0x80) {
      write_text(s, "pi");
    } else if (s[0] == 0xcf && s[1] == 0x81) {
      memmove(s + 3, s + 2, mvsize(s, 2));
      write_text(s, "rho");
    } else if (s[0] == 0xcf && s[1] == 0x83) {
      memmove(s + 5, s + 2, mvsize(s, 2));
      write_text(s, "sigma");
    } else if (s[0] == 0xcf && s[1] == 0x89) {
      memmove(s + 5, s + 2, mvsize(s, 2));
      write_text(s, "omega");
    } else if (s[0] == 0xc2 && s[1] == 0xb0) {
      memmove(s + 7, s + 2, mvsize(s, 2));
      write_text(s, "degrees");
    }
    s++;
  }
}


x86 assembly (clang, -O0):
<utf_replace_plain>:
push   %rbp
mov    %rsp,%rbp
sub    $0xc0,%rsp
mov    %rdi,-0x8(%rbp)
mov    -0x8(%rbp),%rax
cmpb   $0x0,(%rax)
je     174b <utf_replace_plain+0x61b>
mov    -0x8(%rbp),%rax
movzbl (%rax),%eax
cmp    $0xe2,%eax
jne    125d <utf_replace_plain+0x12d>
mov    -0x8(%rbp),%rax
movzbl 0x1(%rax),%eax
cmp    $0x80,%eax
jne    125d <utf_replace_plain+0x12d>
mov    -0x8(%rbp),%rax
movzbl 0x2(%rax),%eax
cmp    $0x93,%eax
jne    11ce <utf_replace_plain+0x9e>
mov    -0x8(%rbp),%rdi
lea    0xe71(%rip),%rsi
call   1030 <write_text@plt>
mov    -0x8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
add    $0x3,%rax
mov    %rax,-0x10(%rbp)
mov    -0x8(%rbp),%rdi
mov    $0x3,%esi
call   1050 <mvsize@plt>
mov    -0x18(%rbp),%rdi
mov    -0x10(%rbp),%rsi
mov    %eax,%edx
call   1040 <memmove@plt>
jmp    1258 <utf_replace_plain+0x128>
mov    -0x8(%rbp),%rax
movzbl 0x2(%rax),%eax
cmp    $0x94,%eax
jne    122b <utf_replace_plain+0xfb>
mov    -0x8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x28(%rbp)
mov    -0x8(%rbp),%rax
add    $0x3,%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
mov    $0x3,%esi
call   1050 <mvsize@plt>
mov    -0x28(%rbp),%rdi
mov    -0x20(%rbp),%rsi
mov    %eax,%edx
call   1040 <memmove@plt>
mov    -0x8(%rbp),%rdi
lea    0xde1(%rip),%rsi
call   1030 <write_text@plt>
jmp    1253 <utf_replace_plain+0x123>
mov    -0x8(%rbp),%rax
movzbl 0x2(%rax),%eax
cmp    $0xa6,%eax
jne    124e <utf_replace_plain+0x11e>
mov    -0x8(%rbp),%rdi
lea    0xdbe(%rip),%rsi
call   1030 <write_text@plt>
jmp    1253 <utf_replace_plain+0x123>
jmp    1258 <utf_replace_plain+0x128>
jmp    173a <utf_replace_plain+0x60a>
mov    -0x8(%rbp),%rax
movzbl (%rax),%eax
cmp    $0xe2,%eax
jne    12df <utf_replace_plain+0x1af>
mov    -0x8(%rbp),%rax
movzbl 0x1(%rax),%eax
cmp    $0x88,%eax
jne    12df <utf_replace_plain+0x1af>
mov    -0x8(%rbp),%rax
movzbl 0x2(%rax),%eax
cmp    $0x92,%eax
jne    12df <utf_replace_plain+0x1af>
mov    -0x8(%rbp),%rdi
lea    0xd60(%rip),%rsi
call   1030 <write_text@plt>
mov    -0x8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
mov    -0x8(%rbp),%rax
add    $0x3,%rax
mov    %rax,-0x30(%rbp)
mov    -0x8(%rbp),%rdi
mov    $0x3,%esi
call   1050 <mvsize@plt>
mov    -0x38(%rbp),%rdi
mov    -0x30(%rbp),%rsi
mov    %eax,%edx
call   1040 <memmove@plt>
jmp    1735 <utf_replace_plain+0x605>
mov    -0x8(%rbp),%rax
movzbl (%rax),%eax
cmp    $0xe2,%eax
jne    1361 <utf_replace_plain+0x231>
mov    -0x8(%rbp),%rax
movzbl 0x1(%rax),%eax
cmp    $0x89,%eax
jne    1361 <utf_replace_plain+0x231>
mov    -0x8(%rbp),%rax
movzbl 0x2(%rax),%eax
cmp    $0xa4,%eax
jne    1361 <utf_replace_plain+0x231>
mov    -0x8(%rbp),%rdi
lea    0xce9(%rip),%rsi
call   1030 <write_text@plt>
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x48(%rbp)
mov    -0x8(%rbp),%rax
add    $0x3,%rax
mov    %rax,-0x40(%rbp)
mov    -0x8(%rbp),%rdi
mov    $0x3,%esi
call   1050 <mvsize@plt>
mov    -0x48(%rbp),%rdi
mov    -0x40(%rbp),%rsi
mov    %eax,%edx
call   1040 <memmove@plt>
jmp    1730 <utf_replace_plain+0x600>
mov    -0x8(%rbp),%rax
movzbl (%rax),%eax
cmp    $0xce,%eax
jne    13d0 <utf_replace_plain+0x2a0>
mov    -0x8(%rbp),%rax
movzbl 0x1(%rax),%eax
cmp    $0x93,%eax
jne    13d0 <utf_replace_plain+0x2a0>
mov    -0x8(%rbp),%rax
add    $0x5,%rax
mov    %rax,-0x58(%rbp)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x50(%rbp)
mov    -0x8(%rbp),%rdi
mov    $0x2,%esi
call   1050 <mvsize@plt>
mov    -0x58(%rbp),%rdi
mov    -0x50(%rbp),%rsi
mov    %eax,%edx
call   1040 <memmove@plt>
mov    -0x8(%rbp),%rdi
lea    0xc48(%rip),%rsi
call   1030 <write_text@plt>
jmp    172b <utf_replace_plain+0x5fb>
mov    -0x8(%rbp),%rax
movzbl (%rax),%eax
cmp    $0xce,%eax
jne    143f <utf_replace_plain+0x30f>
mov    -0x8(%rbp),%rax
movzbl 0x1(%rax),%eax
cmp    $0xb2,%eax
jne    143f <utf_replace_plain+0x30f>
mov    -0x8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x68(%rbp)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x60(%rbp)
mov    -0x8(%rbp),%rdi
mov    $0x2,%esi
call   1050 <mvsize@plt>
mov    -0x68(%rbp),%rdi
mov    -0x60(%rbp),%rsi
mov    %eax,%edx
call   1040 <memmove@plt>
mov    -0x8(%rbp),%rdi
lea    0xbdf(%rip),%rsi
call   1030 <write_text@plt>
jmp    1726 <utf_replace_plain+0x5f6>
mov    -0x8(%rbp),%rax
movzbl (%rax),%eax
cmp    $0xce,%eax
jne    14ae <utf_replace_plain+0x37e>
mov    -0x8(%rbp),%rax
movzbl 0x1(%rax),%eax
cmp    $0xbb,%eax
jne    14ae <utf_replace_plain+0x37e>
mov    -0x8(%rbp),%rax
add    $0x6,%rax
mov    %rax,-0x78(%rbp)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x70(%rbp)
mov    -0x8(%rbp),%rdi
mov    $0x2,%esi
call   1050 <mvsize@plt>
mov    -0x78(%rbp),%rdi
mov    -0x70(%rbp),%rsi
mov    %eax,%edx
call   1040 <memmove@plt>
mov    -0x8(%rbp),%rdi
lea    0xb75(%rip),%rsi
call   1030 <write_text@plt>
jmp    1721 <utf_replace_plain+0x5f1>
mov    -0x8(%rbp),%rax
movzbl (%rax),%eax
cmp    $0xce,%eax
jne    14e8 <utf_replace_plain+0x3b8>
mov    -0x8(%rbp),%rax
movzbl 0x1(%rax),%eax
cmp    $0xbc,%eax
jne    14e8 <utf_replace_plain+0x3b8>
mov    -0x8(%rbp),%rdi
lea    0xb42(%rip),%rsi
call   1030 <write_text@plt>
jmp    171c <utf_replace_plain+0x5ec>
mov    -0x8(%rbp),%rax
movzbl (%rax),%eax
cmp    $0xcf,%eax
jne    1522 <utf_replace_plain+0x3f2>
mov    -0x8(%rbp),%rax
movzbl 0x1(%rax),%eax
cmp    $0x80,%eax
jne    1522 <utf_replace_plain+0x3f2>
mov    -0x8(%rbp),%rdi
lea    0xb0b(%rip),%rsi
call   1030 <write_text@plt>
jmp    1717 <utf_replace_plain+0x5e7>
mov    -0x8(%rbp),%rax
movzbl (%rax),%eax
cmp    $0xcf,%eax
jne    1597 <utf_replace_plain+0x467>
mov    -0x8(%rbp),%rax
movzbl 0x1(%rax),%eax
cmp    $0x81,%eax
jne    1597 <utf_replace_plain+0x467>
mov    -0x8(%rbp),%rax
add    $0x3,%rax
mov    %rax,-0x88(%rbp)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x80(%rbp)
mov    -0x8(%rbp),%rdi
mov    $0x2,%esi
call   1050 <mvsize@plt>
mov    -0x88(%rbp),%rdi
mov    -0x80(%rbp),%rsi
mov    %eax,%edx
call   1040 <memmove@plt>
mov    -0x8(%rbp),%rdi
lea    0xa99(%rip),%rsi
call   1030 <write_text@plt>
jmp    1712 <utf_replace_plain+0x5e2>
mov    -0x8(%rbp),%rax
movzbl (%rax),%eax
cmp    $0xcf,%eax
jne    1612 <utf_replace_plain+0x4e2>
mov    -0x8(%rbp),%rax
movzbl 0x1(%rax),%eax
cmp    $0x83,%eax
jne    1612 <utf_replace_plain+0x4e2>
mov    -0x8(%rbp),%rax
add    $0x5,%rax
mov    %rax,-0x98(%rbp)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x90(%rbp)
mov    -0x8(%rbp),%rdi
mov    $0x2,%esi
call   1050 <mvsize@plt>
mov    -0x98(%rbp),%rdi
mov    -0x90(%rbp),%rsi
mov    %eax,%edx
call   1040 <memmove@plt>
mov    -0x8(%rbp),%rdi
lea    0xa22(%rip),%rsi
call   1030 <write_text@plt>
jmp    170d <utf_replace_plain+0x5dd>
mov    -0x8(%rbp),%rax
movzbl (%rax),%eax
cmp    $0xcf,%eax
jne    168d <utf_replace_plain+0x55d>
mov    -0x8(%rbp),%rax
movzbl 0x1(%rax),%eax
cmp    $0x89,%eax
jne    168d <utf_replace_plain+0x55d>
mov    -0x8(%rbp),%rax
add    $0x5,%rax
mov    %rax,-0xa8(%rbp)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0xa0(%rbp)
mov    -0x8(%rbp),%rdi
mov    $0x2,%esi
call   1050 <mvsize@plt>
mov    -0xa8(%rbp),%rdi
mov    -0xa0(%rbp),%rsi
mov    %eax,%edx
call   1040 <memmove@plt>
mov    -0x8(%rbp),%rdi
lea    0x9ad(%rip),%rsi
call   1030 <write_text@plt>
jmp    1708 <utf_replace_plain+0x5d8>
mov    -0x8(%rbp),%rax
movzbl (%rax),%eax
cmp    $0xc2,%eax
jne    1703 <utf_replace_plain+0x5d3>
mov    -0x8(%rbp),%rax
movzbl 0x1(%rax),%eax
cmp    $0xb0,%eax
jne    1703 <utf_replace_plain+0x5d3>
mov    -0x8(%rbp),%rax
add    $0x7,%rax
mov    %rax,-0xb8(%rbp)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0xb0(%rbp)
mov    -0x8(%rbp),%rdi
mov    $0x2,%esi
call   1050 <mvsize@plt>
mov    -0xb8(%rbp),%rdi
mov    -0xb0(%rbp),%rsi
mov    %eax,%edx
call   1040 <memmove@plt>
mov    -0x8(%rbp),%rdi
lea    0x938(%rip),%rsi
call   1030 <write_text@plt>
jmp    1708 <utf_replace_plain+0x5d8>
jmp    170d <utf_replace_plain+0x5dd>
jmp    1712 <utf_replace_plain+0x5e2>
jmp    1717 <utf_replace_plain+0x5e7>
jmp    171c <utf_replace_plain+0x5ec>
jmp    1721 <utf_replace_plain+0x5f1>
jmp    1726 <utf_replace_plain+0x5f6>
jmp    172b <utf_replace_plain+0x5fb>
jmp    1730 <utf_replace_plain+0x600>
jmp    1735 <utf_replace_plain+0x605>
jmp    173a <utf_replace_plain+0x60a>
mov    -0x8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x8(%rbp)
jmp    113f <utf_replace_plain+0xf>
add    $0xc0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<utf_replace_plain>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %rdi,%rbx
lea    0xebb(%rip),%r13
lea    0xf96(%rip),%r12
lea    0xf31(%rip),%r14
jmp    1199 <utf_replace_plain+0x69>
lea    0x5(%rbx),%rbp
lea    0x2(%rbx),%r15
mov    %rbx,%rdi
mov    $0x2,%esi
call   1050 <mvsize@plt>
mov    %rbp,%rdi
mov    %r15,%rsi
mov    %eax,%edx
call   1040 <memmove@plt>
mov    %rbx,%rdi
lea    0xf5b(%rip),%rsi
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
call   1030 <write_text@plt>
add    $0x1,%rbx
movzbl (%rbx),%eax
lea    0x3e(%rax),%ecx
cmp    $0x20,%cl
ja     12c1 <utf_replace_plain+0x191>
movzbl %cl,%eax
movslq 0x0(%r13,%rax,4),%rax
add    %r13,%rax
jmp    *%rax
cmpb   $0xb0,0x1(%rbx)
jne    1195 <utf_replace_plain+0x65>
lea    0x7(%rbx),%rbp
lea    0x2(%rbx),%r15
mov    %rbx,%rdi
mov    $0x2,%esi
call   1050 <mvsize@plt>
mov    %rbp,%rdi
mov    %r15,%rsi
mov    %eax,%edx
call   1040 <memmove@plt>
mov    %rbx,%rdi
mov    %r12,%rsi
jmp    1190 <utf_replace_plain+0x60>
movzbl 0x1(%rbx),%eax
cmp    $0xba,%al
jg     12ce <utf_replace_plain+0x19e>
cmp    $0x93,%al
je     1347 <utf_replace_plain+0x217>
cmp    $0xb2,%al
jne    1195 <utf_replace_plain+0x65>
lea    0x4(%rbx),%rbp
lea    0x2(%rbx),%r15
mov    %rbx,%rdi
mov    $0x2,%esi
call   1050 <mvsize@plt>
mov    %rbp,%rdi
mov    %r15,%rsi
mov    %eax,%edx
call   1040 <memmove@plt>
mov    %rbx,%rdi
lea    0xe97(%rip),%rsi
jmp    1190 <utf_replace_plain+0x60>
movzbl 0x1(%rbx),%eax
add    $0x80,%al
cmp    $0x9,%al
ja     1195 <utf_replace_plain+0x65>
movzbl %al,%eax
movslq (%r14,%rax,4),%rax
add    %r14,%rax
jmp    *%rax
mov    %rbx,%rdi
lea    0xe7d(%rip),%rsi
jmp    1190 <utf_replace_plain+0x60>
movzbl 0x1(%rbx),%eax
cmp    $0x89,%al
je     12ed <utf_replace_plain+0x1bd>
lea    0x1(%rbx),%r15
cmp    $0x88,%al
je     1307 <utf_replace_plain+0x1d7>
cmp    $0x80,%al
jne    1195 <utf_replace_plain+0x65>
movzbl 0x2(%rbx),%eax
cmp    $0xa6,%al
je     140b <utf_replace_plain+0x2db>
cmp    $0x94,%al
je     141a <utf_replace_plain+0x2ea>
cmp    $0x93,%al
jne    1195 <utf_replace_plain+0x65>
mov    %rbx,%rdi
lea    0xe0f(%rip),%rsi
call   1030 <write_text@plt>
mov    %r12,%rbp
lea    0x3(%rbx),%r12
mov    %rbx,%rdi
mov    $0x3,%esi
call   1050 <mvsize@plt>
mov    %r15,%rdi
mov    %r12,%rsi
mov    %rbp,%r12
jmp    1337 <utf_replace_plain+0x207>
test   %al,%al
jne    1195 <utf_replace_plain+0x65>
jmp    144b <utf_replace_plain+0x31b>
cmp    $0xbb,%al
je     13da <utf_replace_plain+0x2aa>
cmp    $0xbc,%al
jne    1195 <utf_replace_plain+0x65>
mov    %rbx,%rdi
lea    0xde4(%rip),%rsi
jmp    1190 <utf_replace_plain+0x60>
cmpb   $0xa4,0x2(%rbx)
jne    1195 <utf_replace_plain+0x65>
lea    0x2(%rbx),%r15
mov    %rbx,%rdi
lea    0xdb2(%rip),%rsi
jmp    131b <utf_replace_plain+0x1eb>
cmpb   $0x92,0x2(%rbx)
jne    1195 <utf_replace_plain+0x65>
mov    %rbx,%rdi
lea    0xd91(%rip),%rsi
call   1030 <write_text@plt>
lea    0x3(%rbx),%rbp
mov    %rbx,%rdi
mov    $0x3,%esi
call   1050 <mvsize@plt>
mov    %r15,%rdi
mov    %rbp,%rsi
mov    %eax,%edx
call   1040 <memmove@plt>
add    $0x1,%rbx
jmp    1199 <utf_replace_plain+0x69>
lea    0x5(%rbx),%rbp
lea    0x2(%rbx),%r15
mov    %rbx,%rdi
mov    $0x2,%esi
call   1050 <mvsize@plt>
mov    %rbp,%rdi
mov    %r15,%rsi
mov    %eax,%edx
call   1040 <memmove@plt>
mov    %rbx,%rdi
lea    0xd47(%rip),%rsi
jmp    1190 <utf_replace_plain+0x60>
lea    0x3(%rbx),%rbp
lea    0x2(%rbx),%r15
mov    %rbx,%rdi
mov    $0x2,%esi
call   1050 <mvsize@plt>
mov    %rbp,%rdi
mov    %r15,%rsi
mov    %eax,%edx
call   1040 <memmove@plt>
mov    %rbx,%rdi
lea    0xd2e(%rip),%rsi
jmp    1190 <utf_replace_plain+0x60>
lea    0x5(%rbx),%rbp
lea    0x2(%rbx),%r15
mov    %rbx,%rdi
mov    $0x2,%esi
call   1050 <mvsize@plt>
mov    %rbp,%rdi
mov    %r15,%rsi
mov    %eax,%edx
call   1040 <memmove@plt>
mov    %rbx,%rdi
lea    0xd01(%rip),%rsi
jmp    1190 <utf_replace_plain+0x60>
lea    0x6(%rbx),%rbp
lea    0x2(%rbx),%r15
mov    %rbx,%rdi
mov    $0x2,%esi
call   1050 <mvsize@plt>
mov    %rbp,%rdi
mov    %r15,%rsi
mov    %eax,%edx
call   1040 <memmove@plt>
mov    %rbx,%rdi
lea    0xcbf(%rip),%rsi
jmp    1190 <utf_replace_plain+0x60>
mov    %rbx,%rdi
lea    0xc9e(%rip),%rsi
jmp    1190 <utf_replace_plain+0x60>
lea    0x4(%rbx),%rbp
lea    0x3(%rbx),%r15
mov    %rbx,%rdi
mov    $0x3,%esi
call   1050 <mvsize@plt>
mov    %rbp,%rdi
mov    %r15,%rsi
mov    %eax,%edx
call   1040 <memmove@plt>
mov    %rbx,%rdi
lea    0xc68(%rip),%rsi
jmp    1190 <utf_replace_plain+0x60>
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
@.str = [2 x i8] c"-\00"
@.str.1 = [5 x i8] c" -- \00"
@.str.2 = [4 x i8] c"...\00"
@.str.3 = [3 x i8] c"<=\00"
@.str.4 = [6 x i8] c"Gamma\00"
@.str.5 = [5 x i8] c"beta\00"
@.str.6 = [7 x i8] c"lambda\00"
@.str.7 = [3 x i8] c"mu\00"
@.str.8 = [3 x i8] c"pi\00"
@.str.9 = [4 x i8] c"rho\00"
@.str.10 = [6 x i8] c"sigma\00"
@.str.11 = [6 x i8] c"omega\00"
@.str.12 = [8 x i8] c"degrees\00"
define void @utf_replace_plain(i8* %0) {
br label %2
2: ; preds = %98, %1
%3 = phi i8* [ %0, %1 ], [ %99, %98 ]
%4 = load i8, i8* %3
switch i8 %4, label %98 [
i8 0, label %100
i8 -30, label %5
i8 -50, label %42
i8 -49, label %65
i8 -62, label %88
]
5: ; preds = %2
%6 = getelementptr inbounds i8, i8* %3, i64 1
%7 = load i8, i8* %6
switch i8 %7, label %98 [
i8 -128, label %8
i8 -120, label %24
i8 -119, label %33
]
8: ; preds = %5
%9 = getelementptr inbounds i8, i8* %3, i64 2
%10 = load i8, i8* %9
switch i8 %10, label %98 [
i8 -109, label %11
i8 -108, label %16
i8 -90, label %22
]
11: ; preds = %8
%12 = tail call i32 @write_text(i8* %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%13 = getelementptr inbounds i8, i8* %3, i64 3
%14 = tail call i32 @mvsize(i8* %3, i32 3)
%15 = tail call i32 @memmove(i8* %6, i8* %13, i32 %14)
br label %98
16: ; preds = %8
%17 = getelementptr inbounds i8, i8* %3, i64 4
%18 = getelementptr inbounds i8, i8* %3, i64 3
%19 = tail call i32 @mvsize(i8* %3, i32 3)
%20 = tail call i32 @memmove(i8* %17, i8* %18, i32 %19)
%21 = tail call i32 @write_text(i8* %3, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0))
br label %98
22: ; preds = %8
%23 = tail call i32 @write_text(i8* %3, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0))
br label %98
24: ; preds = %5
%25 = getelementptr inbounds i8, i8* %3, i64 2
%26 = load i8, i8* %25
%27 = icmp eq i8 %26, -110
br i1 %27, label %28, label %98
28: ; preds = %24
%29 = tail call i32 @write_text(i8* %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%30 = getelementptr inbounds i8, i8* %3, i64 3
%31 = tail call i32 @mvsize(i8* %3, i32 3)
%32 = tail call i32 @memmove(i8* %6, i8* %30, i32 %31)
br label %98
33: ; preds = %5
%34 = getelementptr inbounds i8, i8* %3, i64 2
%35 = load i8, i8* %34
%36 = icmp eq i8 %35, -92
br i1 %36, label %37, label %98
37: ; preds = %33
%38 = tail call i32 @write_text(i8* %3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0))
%39 = getelementptr inbounds i8, i8* %3, i64 3
%40 = tail call i32 @mvsize(i8* %3, i32 3)
%41 = tail call i32 @memmove(i8* %34, i8* %39, i32 %40)
br label %98
42: ; preds = %2
%43 = getelementptr inbounds i8, i8* %3, i64 1
%44 = load i8, i8* %43
switch i8 %44, label %98 [
i8 -109, label %45
i8 -78, label %51
i8 -69, label %57
i8 -68, label %63
]
45: ; preds = %42
%46 = getelementptr inbounds i8, i8* %3, i64 5
%47 = getelementptr inbounds i8, i8* %3, i64 2
%48 = tail call i32 @mvsize(i8* %3, i32 2)
%49 = tail call i32 @memmove(i8* %46, i8* %47, i32 %48)
%50 = tail call i32 @write_text(i8* %3, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.4, i64 0, i64 0))
br label %98
51: ; preds = %42
%52 = getelementptr inbounds i8, i8* %3, i64 4
%53 = getelementptr inbounds i8, i8* %3, i64 2
%54 = tail call i32 @mvsize(i8* %3, i32 2)
%55 = tail call i32 @memmove(i8* %52, i8* %53, i32 %54)
%56 = tail call i32 @write_text(i8* %3, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0))
br label %98
57: ; preds = %42
%58 = getelementptr inbounds i8, i8* %3, i64 6
%59 = getelementptr inbounds i8, i8* %3, i64 2
%60 = tail call i32 @mvsize(i8* %3, i32 2)
%61 = tail call i32 @memmove(i8* %58, i8* %59, i32 %60)
%62 = tail call i32 @write_text(i8* %3, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.6, i64 0, i64 0))
br label %98
63: ; preds = %42
%64 = tail call i32 @write_text(i8* %3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.7, i64 0, i64 0))
br label %98
65: ; preds = %2
%66 = getelementptr inbounds i8, i8* %3, i64 1
%67 = load i8, i8* %66
switch i8 %67, label %98 [
i8 -128, label %68
i8 -127, label %70
i8 -125, label %76
i8 -119, label %82
]
68: ; preds = %65
%69 = tail call i32 @write_text(i8* %3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.8, i64 0, i64 0))
br label %98
70: ; preds = %65
%71 = getelementptr inbounds i8, i8* %3, i64 3
%72 = getelementptr inbounds i8, i8* %3, i64 2
%73 = tail call i32 @mvsize(i8* %3, i32 2)
%74 = tail call i32 @memmove(i8* %71, i8* %72, i32 %73)
%75 = tail call i32 @write_text(i8* %3, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.9, i64 0, i64 0))
br label %98
76: ; preds = %65
%77 = getelementptr inbounds i8, i8* %3, i64 5
%78 = getelementptr inbounds i8, i8* %3, i64 2
%79 = tail call i32 @mvsize(i8* %3, i32 2)
%80 = tail call i32 @memmove(i8* %77, i8* %78, i32 %79)
%81 = tail call i32 @write_text(i8* %3, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.10, i64 0, i64 0))
br label %98
82: ; preds = %65
%83 = getelementptr inbounds i8, i8* %3, i64 5
%84 = getelementptr inbounds i8, i8* %3, i64 2
%85 = tail call i32 @mvsize(i8* %3, i32 2)
%86 = tail call i32 @memmove(i8* %83, i8* %84, i32 %85)
%87 = tail call i32 @write_text(i8* %3, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.11, i64 0, i64 0))
br label %98
88: ; preds = %2
%89 = getelementptr inbounds i8, i8* %3, i64 1
%90 = load i8, i8* %89
%91 = icmp eq i8 %90, -80
br i1 %91, label %92, label %98
92: ; preds = %88
%93 = getelementptr inbounds i8, i8* %3, i64 7
%94 = getelementptr inbounds i8, i8* %3, i64 2
%95 = tail call i32 @mvsize(i8* %3, i32 2)
%96 = tail call i32 @memmove(i8* %93, i8* %94, i32 %95)
%97 = tail call i32 @write_text(i8* %3, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.12, i64 0, i64 0))
br label %98
98: ; preds = %65, %42, %5, %24, %2, %33, %8, %28, %45, %57, %68, %76, %88, %92, %82, %70, %63, %51, %37, %11, %22, %16
%99 = getelementptr inbounds i8, i8* %3, i64 1
br label %2
100: ; preds = %2
ret void
}