#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*/ strcpy(char *, char *);
scalar_t__ strncmp(char *, char *, int);
void decodertfhtml(char *buf, unsigned int *len) {
  char *c = buf, *max = buf + *len, *d = buf;
  int ignore_tag = -1;
  while (c < max && strncmp(c, "{\\*\\htmltag", 11) != 0)
    c++;
  while (c < max) {
    if (*c == '{')
      c++;
    else if (*c == '}')
      c++;
    else if (strncmp(c, "\\*\\htmltag", 10) == 0) {
      c += 10;
      int tag = 0;
      while (*c >= '0' && *c <= '9') {
        tag = tag * 10 + *c - '0';
        c++;
      }
      if (*c == ' ')
        c++;
      if (tag == ignore_tag) {
        while (c < max && *c != '}')
          c++;
        if (*c == '}')
          c++;
      }
      ignore_tag = -1;
    } else if (strncmp(c, "\\*\\mhtmltag", 11) == 0) {
      c += 11;
      int tag = 0;
      while (*c >= '0' && *c <= '9') {
        tag = tag * 10 + *c - '0';
        c++;
      }
      if (*c == ' ')
        c++;
      ignore_tag = tag;
    } else if (strncmp(c, "\\par", 4) == 0) {
      strcpy(d, "\r\n");
      d += 2;
      c += 4;
      if (*c == ' ')
        c++;
    } else if (strncmp(c, "\\tab", 4) == 0) {
      strcpy(d, "   ");
      d += 3;
      c += 4;
      if (*c == ' ')
        c++;
    } else if (strncmp(c, "\\li", 3) == 0) {
      c += 3;
      while (*c >= '0' && *c <= '9')
        c++;
      if (*c == ' ')
        c++;
    } else if (strncmp(c, "\\fi-", 4) == 0) {
      c += 4;
      while (*c >= '0' && *c <= '9')
        c++;
      if (*c == ' ')
        c++;
    } else if (strncmp(c, "\\'", 2) == 0) {
      unsigned int hi = c[2], lo = c[3];
      if (hi >= '0' && hi <= '9')
        hi -= '0';
      else if (hi >= 'A' && hi <= 'Z')
        hi -= 'A';
      else if (hi >= 'a' && hi <= 'z')
        hi -= 'a';
      if (lo >= '0' && lo <= '9')
        lo -= '0';
      else if (lo >= 'A' && lo <= 'Z')
        lo -= 'A';
      else if (lo >= 'a' && lo <= 'z')
        lo -= 'a';
      *((unsigned char *)d) = (unsigned char)(hi * 16 + lo);
      c += 4;
      d++;
    } else if (strncmp(c, "\\pntext", 7) == 0) {
      c += 7;
      while (c < max && *c != '}')
        c++;
    } else if (strncmp(c, "\\htmlrtf", 8) == 0) {
      c++;
      while (c < max && strncmp(c, "\\htmlrtf0", 9) != 0)
        c++;
      if (c < max)
        c += 9;
      if (*c == ' ')
        c++;
    } else if (*c == '\r' || *c == '\n')
      c++;
    else if (strncmp(c, "\\{", 2) == 0) {
      *d = '{';
      d++;
      c += 2;
    } else if (strncmp(c, "\\}", 2) == 0) {
      *d = '}';
      d++;
      c += 2;
    } else {
      *d = *c;
      c++;
      d++;
    }
  }
  *d = 0;
  d++;
  *len = d - buf;
}


x86 assembly (clang, -O0):
<decodertfhtml>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x8(%rbp),%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
mov    (%rcx),%ecx
add    %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rax
mov    %rax,-0x28(%rbp)
movl   $0xffffffff,-0x2c(%rbp)
mov    -0x18(%rbp),%rcx
xor    %eax,%eax
cmp    -0x20(%rbp),%rcx
mov    %al,-0x3d(%rbp)
jae    118a <decodertfhtml+0x6a>
mov    -0x18(%rbp),%rdi
lea    0xe8a(%rip),%rsi
mov    $0xb,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
setne  %al
mov    %al,-0x3d(%rbp)
mov    -0x3d(%rbp),%al
test   $0x1,%al
jne    119a <decodertfhtml+0x7a>
jmp    11ab <decodertfhtml+0x8b>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    1158 <decodertfhtml+0x38>
jmp    11b0 <decodertfhtml+0x90>
mov    -0x18(%rbp),%rax
cmp    -0x20(%rbp),%rax
jae    1956 <decodertfhtml+0x836>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x7b,%eax
jne    11df <decodertfhtml+0xbf>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    1951 <decodertfhtml+0x831>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x7d,%eax
jne    1200 <decodertfhtml+0xe0>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    194c <decodertfhtml+0x82c>
mov    -0x18(%rbp),%rdi
lea    0xdf6(%rip),%rsi
mov    $0xa,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    1329 <decodertfhtml+0x209>
mov    -0x18(%rbp),%rax
add    $0xa,%rax
mov    %rax,-0x18(%rbp)
movl   $0x0,-0x30(%rbp)
mov    -0x18(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x30,%ecx
mov    %al,-0x3e(%rbp)
jl     1257 <decodertfhtml+0x137>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x39,%eax
setle  %al
mov    %al,-0x3e(%rbp)
mov    -0x3e(%rbp),%al
test   $0x1,%al
jne    1267 <decodertfhtml+0x147>
jmp    128b <decodertfhtml+0x16b>
imul   $0xa,-0x30(%rbp),%eax
mov    -0x18(%rbp),%rcx
movsbl (%rcx),%ecx
add    %ecx,%eax
sub    $0x30,%eax
mov    %eax,-0x30(%rbp)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    1232 <decodertfhtml+0x112>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x20,%eax
jne    12a7 <decodertfhtml+0x187>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x2c(%rbp),%eax
jne    131d <decodertfhtml+0x1fd>
jmp    12b8 <decodertfhtml+0x198>
mov    -0x18(%rbp),%rcx
xor    %eax,%eax
cmp    -0x20(%rbp),%rcx
mov    %al,-0x3f(%rbp)
jae    12db <decodertfhtml+0x1bb>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x7d,%eax
setne  %al
mov    %al,-0x3f(%rbp)
mov    -0x3f(%rbp),%al
test   $0x1,%al
jne    12eb <decodertfhtml+0x1cb>
jmp    12fc <decodertfhtml+0x1dc>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    12b8 <decodertfhtml+0x198>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x7d,%eax
jne    1318 <decodertfhtml+0x1f8>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    131d <decodertfhtml+0x1fd>
movl   $0xffffffff,-0x2c(%rbp)
jmp    1947 <decodertfhtml+0x827>
mov    -0x18(%rbp),%rdi
lea    0xcd8(%rip),%rsi
mov    $0xb,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    13db <decodertfhtml+0x2bb>
mov    -0x18(%rbp),%rax
add    $0xb,%rax
mov    %rax,-0x18(%rbp)
movl   $0x0,-0x34(%rbp)
mov    -0x18(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x30,%ecx
mov    %al,-0x40(%rbp)
jl     1380 <decodertfhtml+0x260>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x39,%eax
setle  %al
mov    %al,-0x40(%rbp)
mov    -0x40(%rbp),%al
test   $0x1,%al
jne    1390 <decodertfhtml+0x270>
jmp    13b4 <decodertfhtml+0x294>
imul   $0xa,-0x34(%rbp),%eax
mov    -0x18(%rbp),%rcx
movsbl (%rcx),%ecx
add    %ecx,%eax
sub    $0x30,%eax
mov    %eax,-0x34(%rbp)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    135b <decodertfhtml+0x23b>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x20,%eax
jne    13d0 <decodertfhtml+0x2b0>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
mov    -0x34(%rbp),%eax
mov    %eax,-0x2c(%rbp)
jmp    1942 <decodertfhtml+0x822>
mov    -0x18(%rbp),%rdi
lea    0xc32(%rip),%rsi
mov    $0x4,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    1443 <decodertfhtml+0x323>
mov    -0x28(%rbp),%rdi
lea    0xc18(%rip),%rsi
call   1040 <strcpy@plt>
mov    -0x28(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x28(%rbp)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x20,%eax
jne    143e <decodertfhtml+0x31e>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    193d <decodertfhtml+0x81d>
mov    -0x18(%rbp),%rdi
lea    0xbd2(%rip),%rsi
mov    $0x4,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    14ab <decodertfhtml+0x38b>
mov    -0x28(%rbp),%rdi
lea    0xbb8(%rip),%rsi
call   1040 <strcpy@plt>
mov    -0x28(%rbp),%rax
add    $0x3,%rax
mov    %rax,-0x28(%rbp)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x20,%eax
jne    14a6 <decodertfhtml+0x386>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    1938 <decodertfhtml+0x818>
mov    -0x18(%rbp),%rdi
lea    0xb73(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    153d <decodertfhtml+0x41d>
mov    -0x18(%rbp),%rax
add    $0x3,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x30,%ecx
mov    %al,-0x41(%rbp)
jl     14fb <decodertfhtml+0x3db>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x39,%eax
setle  %al
mov    %al,-0x41(%rbp)
mov    -0x41(%rbp),%al
test   $0x1,%al
jne    150b <decodertfhtml+0x3eb>
jmp    151c <decodertfhtml+0x3fc>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    14d6 <decodertfhtml+0x3b6>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x20,%eax
jne    1538 <decodertfhtml+0x418>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    1933 <decodertfhtml+0x813>
mov    -0x18(%rbp),%rdi
lea    0xae5(%rip),%rsi
mov    $0x4,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    15cf <decodertfhtml+0x4af>
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x30,%ecx
mov    %al,-0x42(%rbp)
jl     158d <decodertfhtml+0x46d>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x39,%eax
setle  %al
mov    %al,-0x42(%rbp)
mov    -0x42(%rbp),%al
test   $0x1,%al
jne    159d <decodertfhtml+0x47d>
jmp    15ae <decodertfhtml+0x48e>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    1568 <decodertfhtml+0x448>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x20,%eax
jne    15ca <decodertfhtml+0x4aa>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    192e <decodertfhtml+0x80e>
mov    -0x18(%rbp),%rdi
lea    0xa58(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    1708 <decodertfhtml+0x5e8>
mov    -0x18(%rbp),%rax
movsbl 0x2(%rax),%eax
mov    %eax,-0x38(%rbp)
mov    -0x18(%rbp),%rax
movsbl 0x3(%rax),%eax
mov    %eax,-0x3c(%rbp)
cmpl   $0x30,-0x38(%rbp)
jb     1626 <decodertfhtml+0x506>
cmpl   $0x39,-0x38(%rbp)
ja     1626 <decodertfhtml+0x506>
mov    -0x38(%rbp),%eax
sub    $0x30,%eax
mov    %eax,-0x38(%rbp)
jmp    166f <decodertfhtml+0x54f>
cmpl   $0x41,-0x38(%rbp)
jb     1648 <decodertfhtml+0x528>
cmpl   $0x5a,-0x38(%rbp)
ja     1648 <decodertfhtml+0x528>
mov    -0x38(%rbp),%eax
sub    $0x41,%eax
mov    %eax,-0x38(%rbp)
jmp    166a <decodertfhtml+0x54a>
cmpl   $0x61,-0x38(%rbp)
jb     1665 <decodertfhtml+0x545>
cmpl   $0x7a,-0x38(%rbp)
ja     1665 <decodertfhtml+0x545>
mov    -0x38(%rbp),%eax
sub    $0x61,%eax
mov    %eax,-0x38(%rbp)
jmp    166a <decodertfhtml+0x54a>
jmp    166f <decodertfhtml+0x54f>
cmpl   $0x30,-0x3c(%rbp)
jb     1691 <decodertfhtml+0x571>
cmpl   $0x39,-0x3c(%rbp)
ja     1691 <decodertfhtml+0x571>
mov    -0x3c(%rbp),%eax
sub    $0x30,%eax
mov    %eax,-0x3c(%rbp)
jmp    16da <decodertfhtml+0x5ba>
cmpl   $0x41,-0x3c(%rbp)
jb     16b3 <decodertfhtml+0x593>
cmpl   $0x5a,-0x3c(%rbp)
ja     16b3 <decodertfhtml+0x593>
mov    -0x3c(%rbp),%eax
sub    $0x41,%eax
mov    %eax,-0x3c(%rbp)
jmp    16d5 <decodertfhtml+0x5b5>
cmpl   $0x61,-0x3c(%rbp)
jb     16d0 <decodertfhtml+0x5b0>
cmpl   $0x7a,-0x3c(%rbp)
ja     16d0 <decodertfhtml+0x5b0>
mov    -0x3c(%rbp),%eax
sub    $0x61,%eax
mov    %eax,-0x3c(%rbp)
jmp    16d5 <decodertfhtml+0x5b5>
jmp    16da <decodertfhtml+0x5ba>
mov    -0x38(%rbp),%eax
shl    $0x4,%eax
add    -0x3c(%rbp),%eax
mov    %al,%cl
mov    -0x28(%rbp),%rax
mov    %cl,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    1929 <decodertfhtml+0x809>
mov    -0x18(%rbp),%rdi
lea    0x922(%rip),%rsi
mov    $0x7,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    177c <decodertfhtml+0x65c>
mov    -0x18(%rbp),%rax
add    $0x7,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rcx
xor    %eax,%eax
cmp    -0x20(%rbp),%rcx
mov    %al,-0x43(%rbp)
jae    1756 <decodertfhtml+0x636>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x7d,%eax
setne  %al
mov    %al,-0x43(%rbp)
mov    -0x43(%rbp),%al
test   $0x1,%al
jne    1766 <decodertfhtml+0x646>
jmp    1777 <decodertfhtml+0x657>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    1733 <decodertfhtml+0x613>
jmp    1924 <decodertfhtml+0x804>
mov    -0x18(%rbp),%rdi
lea    0x8b6(%rip),%rsi
mov    $0x8,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    1835 <decodertfhtml+0x715>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rcx
xor    %eax,%eax
cmp    -0x20(%rbp),%rcx
mov    %al,-0x44(%rbp)
jae    17d9 <decodertfhtml+0x6b9>
mov    -0x18(%rbp),%rdi
lea    0x881(%rip),%rsi
mov    $0x9,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
setne  %al
mov    %al,-0x44(%rbp)
mov    -0x44(%rbp),%al
test   $0x1,%al
jne    17e9 <decodertfhtml+0x6c9>
jmp    17fa <decodertfhtml+0x6da>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    17a7 <decodertfhtml+0x687>
mov    -0x18(%rbp),%rax
cmp    -0x20(%rbp),%rax
jae    1814 <decodertfhtml+0x6f4>
mov    -0x18(%rbp),%rax
add    $0x9,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x20,%eax
jne    1830 <decodertfhtml+0x710>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    191f <decodertfhtml+0x7ff>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xd,%eax
je     1855 <decodertfhtml+0x735>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xa,%eax
jne    1866 <decodertfhtml+0x746>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    191a <decodertfhtml+0x7fa>
mov    -0x18(%rbp),%rdi
lea    0x7df(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    18a9 <decodertfhtml+0x789>
mov    -0x28(%rbp),%rax
movb   $0x7b,(%rax)
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
mov    -0x18(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x18(%rbp)
jmp    1915 <decodertfhtml+0x7f5>
mov    -0x18(%rbp),%rdi
lea    0x79f(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    18ec <decodertfhtml+0x7cc>
mov    -0x28(%rbp),%rax
movb   $0x7d,(%rax)
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
mov    -0x18(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x18(%rbp)
jmp    1910 <decodertfhtml+0x7f0>
mov    -0x18(%rbp),%rax
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %cl,(%rax)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    1915 <decodertfhtml+0x7f5>
jmp    191a <decodertfhtml+0x7fa>
jmp    191f <decodertfhtml+0x7ff>
jmp    1924 <decodertfhtml+0x804>
jmp    1929 <decodertfhtml+0x809>
jmp    192e <decodertfhtml+0x80e>
jmp    1933 <decodertfhtml+0x813>
jmp    1938 <decodertfhtml+0x818>
jmp    193d <decodertfhtml+0x81d>
jmp    1942 <decodertfhtml+0x822>
jmp    1947 <decodertfhtml+0x827>
jmp    194c <decodertfhtml+0x82c>
jmp    1951 <decodertfhtml+0x831>
jmp    11b0 <decodertfhtml+0x90>
mov    -0x28(%rbp),%rax
movb   $0x0,(%rax)
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
mov    -0x8(%rbp),%rcx
sub    %rcx,%rax
mov    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<decodertfhtml>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
mov    %rsi,%r13
mov    %rdi,%r15
mov    (%rsi),%eax
lea    (%rdi,%rax,1),%r14
mov    %rdi,%rbx
test   %rax,%rax
je     116e <decodertfhtml+0x4e>
lea    0xeb7(%rip),%rbp
mov    %r15,%rbx
nopl   0x0(%rax)
mov    %rbx,%rdi
mov    %rbp,%rsi
mov    $0xb,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     116e <decodertfhtml+0x4e>
add    $0x1,%rbx
cmp    %r14,%rbx
jb     1150 <decodertfhtml+0x30>
mov    %r15,%rax
mov    %r15,0x8(%rsp)
cmp    %r14,%rbx
jae    1558 <decodertfhtml+0x438>
mov    $0xffffffff,%r12d
lea    0xe75(%rip),%rbp
mov    0x8(%rsp),%r15
jmp    11b3 <decodertfhtml+0x93>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
add    $0x1,%rbx
mov    %r12d,%eax
mov    %eax,%r12d
cmp    %r14,%rbx
jae    1558 <decodertfhtml+0x438>
mov    (%rbx),%al
cmp    $0x7d,%al
je     11a0 <decodertfhtml+0x80>
cmp    $0x7b,%al
je     11a0 <decodertfhtml+0x80>
mov    %rbx,%rdi
mov    %rbp,%rsi
mov    $0xa,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     1318 <decodertfhtml+0x1f8>
mov    %rbx,%rdi
lea    0xe2c(%rip),%rsi
mov    $0xb,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     1393 <decodertfhtml+0x273>
mov    %rbx,%rdi
lea    0xe1b(%rip),%rsi
mov    $0x4,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     13dc <decodertfhtml+0x2bc>
mov    %rbx,%rdi
lea    0xe06(%rip),%rsi
mov    $0x4,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     13f1 <decodertfhtml+0x2d1>
mov    %rbx,%rdi
lea    0xdf2(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     1419 <decodertfhtml+0x2f9>
mov    %rbx,%rdi
lea    0xdd9(%rip),%rsi
mov    $0x4,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     1432 <decodertfhtml+0x312>
mov    %rbx,%rdi
lea    0xdc1(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     145f <decodertfhtml+0x33f>
mov    %rbx,%rdi
lea    0xda7(%rip),%rsi
mov    $0x7,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     14b5 <decodertfhtml+0x395>
mov    %rbx,%rdi
lea    0xd92(%rip),%rsi
mov    $0x8,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     14e7 <decodertfhtml+0x3c7>
mov    (%rbx),%al
cmp    $0xd,%al
je     11a0 <decodertfhtml+0x80>
cmp    $0xa,%al
je     11a0 <decodertfhtml+0x80>
mov    %rbx,%rdi
lea    0xd76(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     1541 <decodertfhtml+0x421>
mov    %rbx,%rdi
lea    0xd5c(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     1547 <decodertfhtml+0x427>
mov    (%rbx),%al
mov    %al,(%r15)
add    $0x1,%rbx
jmp    14ac <decodertfhtml+0x38c>
mov    0xa(%rbx),%al
add    $0xa,%rbx
lea    -0x30(%rax),%edx
xor    %ecx,%ecx
cmp    $0x9,%dl
ja     134c <decodertfhtml+0x22c>
xor    %ecx,%ecx
nopl   0x0(%rax,%rax,1)
movzbl %al,%eax
lea    (%rcx,%rcx,4),%ecx
lea    (%rax,%rcx,2),%ecx
add    $0xffffffd0,%ecx
movzbl 0x1(%rbx),%eax
add    $0x1,%rbx
lea    -0x30(%rax),%edx
cmp    $0xa,%dl
jb     1330 <decodertfhtml+0x210>
mov    %rbx,%rdx
xor    %ebx,%ebx
cmp    $0x20,%al
sete   %bl
add    %rdx,%rbx
mov    $0xffffffff,%eax
cmp    %r12d,%ecx
jne    11a7 <decodertfhtml+0x87>
nopw   0x0(%rax,%rax,1)
cmp    %r14,%rbx
jae    1383 <decodertfhtml+0x263>
cmpb   $0x7d,(%rbx)
je     1383 <decodertfhtml+0x263>
add    $0x1,%rbx
cmp    %r14,%rbx
jb     1375 <decodertfhtml+0x255>
xor    %ecx,%ecx
cmpb   $0x7d,(%rbx)
sete   %cl
add    %rcx,%rbx
jmp    11a7 <decodertfhtml+0x87>
mov    0xb(%rbx),%cl
add    $0xb,%rbx
lea    -0x30(%rcx),%edx
xor    %eax,%eax
cmp    $0x9,%dl
ja     13cc <decodertfhtml+0x2ac>
xor    %eax,%eax
cs nopw 0x0(%rax,%rax,1)
movzbl %cl,%ecx
lea    (%rax,%rax,4),%eax
lea    (%rcx,%rax,2),%eax
add    $0xffffffd0,%eax
movzbl 0x1(%rbx),%ecx
add    $0x1,%rbx
lea    -0x30(%rcx),%edx
cmp    $0xa,%dl
jb     13b0 <decodertfhtml+0x290>
xor    %edx,%edx
cmp    $0x20,%cl
sete   %dl
add    %rdx,%rbx
jmp    11a7 <decodertfhtml+0x87>
mov    %r15,%rdi
lea    0xc37(%rip),%rsi
call   1040 <strcpy@plt>
add    $0x2,%r15
jmp    1404 <decodertfhtml+0x2e4>
mov    %r15,%rdi
lea    0xc2a(%rip),%rsi
call   1040 <strcpy@plt>
add    $0x3,%r15
cmpb   $0x20,0x4(%rbx)
lea    0x5(%rbx),%rax
lea    0x4(%rbx),%rbx
cmove  %rax,%rbx
jmp    11a4 <decodertfhtml+0x84>
add    $0x2,%rbx
nopl   (%rax)
movzbl 0x1(%rbx),%eax
add    $0x1,%rbx
lea    -0x30(%rax),%ecx
cmp    $0xa,%cl
jb     1420 <decodertfhtml+0x300>
jmp    1450 <decodertfhtml+0x330>
add    $0x3,%rbx
cs nopw 0x0(%rax,%rax,1)
movzbl 0x1(%rbx),%eax
add    $0x1,%rbx
lea    -0x30(%rax),%ecx
cmp    $0xa,%cl
jb     1440 <decodertfhtml+0x320>
xor    %ecx,%ecx
cmp    $0x20,%al
sete   %cl
add    %rcx,%rbx
jmp    11a4 <decodertfhtml+0x84>
mov    0x2(%rbx),%cl
lea    -0x30(%rcx),%eax
cmp    $0xa,%al
jb     147e <decodertfhtml+0x35e>
lea    -0x41(%rcx),%eax
cmp    $0x1a,%al
jb     147e <decodertfhtml+0x35e>
lea    -0x61(%rcx),%eax
cmp    $0x1a,%al
movzbl %cl,%ecx
movzbl %al,%eax
cmovae %ecx,%eax
mov    0x3(%rbx),%cl
lea    -0x30(%rcx),%edx
cmp    $0xa,%dl
jb     14a0 <decodertfhtml+0x380>
lea    -0x41(%rcx),%edx
cmp    $0x1a,%dl
jb     14a0 <decodertfhtml+0x380>
lea    -0x61(%rcx),%edx
cmp    $0x1a,%dl
movzbl %cl,%ecx
movzbl %dl,%edx
cmovae %ecx,%edx
shl    $0x4,%al
add    %dl,%al
mov    %al,(%r15)
add    $0x4,%rbx
add    $0x1,%r15
jmp    11a4 <decodertfhtml+0x84>
add    $0x7,%rbx
cmp    %r14,%rbx
jae    11a4 <decodertfhtml+0x84>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
cmpb   $0x7d,(%rbx)
je     11a4 <decodertfhtml+0x84>
add    $0x1,%rbx
cmp    %r14,%rbx
jb     14d0 <decodertfhtml+0x3b0>
jmp    11a4 <decodertfhtml+0x84>
mov    %r13,0x10(%rsp)
add    $0xa,%rbx
mov    %rbx,%r13
lea    -0x9(%rbx),%rbp
cmp    %r14,%rbp
jae    1519 <decodertfhtml+0x3f9>
mov    %rbp,%rdi
lea    0xb40(%rip),%rsi
mov    $0x9,%edx
call   1030 <strncmp@plt>
lea    0x1(%r13),%rbx
test   %rax,%rax
jne    14f0 <decodertfhtml+0x3d0>
cmp    %r14,%rbp
cmovae %rbp,%r13
xor    %ebx,%ebx
cmpb   $0x20,0x0(%r13)
sete   %bl
add    %r13,%rbx
mov    %r12d,%eax
mov    0x10(%rsp),%r13
lea    0xac5(%rip),%rbp
jmp    11a7 <decodertfhtml+0x87>
movb   $0x7b,(%r15)
jmp    154b <decodertfhtml+0x42b>
movb   $0x7d,(%r15)
add    $0x1,%r15
add    $0x2,%rbx
jmp    11a4 <decodertfhtml+0x84>
movb   $0x0,(%r15)
sub    0x8(%rsp),%r15d
add    $0x1,%r15d
mov    %r15d,0x0(%r13)
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
@.str = [12 x i8] c"{\\*\\htmltag\00"
@.str.1 = [11 x i8] c"\\*\\htmltag\00"
@.str.2 = [12 x i8] c"\\*\\mhtmltag\00"
@.str.3 = [5 x i8] c"\\par\00"
@.str.4 = [3 x i8] c"\0D\0A\00"
@.str.5 = [5 x i8] c"\\tab\00"
@.str.6 = [4 x i8] c" \00"
@.str.7 = [4 x i8] c"\\li\00"
@.str.8 = [5 x i8] c"\\fi-\00"
@.str.9 = [3 x i8] c"\\'\00"
@.str.10 = [8 x i8] c"\\pntext\00"
@.str.11 = [9 x i8] c"\\htmlrtf\00"
@.str.12 = [10 x i8] c"\\htmlrtf0\00"
@.str.13 = [3 x i8] c"\\{\00"
@.str.14 = [3 x i8] c"\\}\00"
define void @decodertfhtml(i8* %0, i32* nocapture %1) {
%3 = load i32, i32* %1
%4 = zext i32 %3 to i64
%5 = getelementptr inbounds i8, i8* %0, i64 %4
%6 = icmp eq i32 %3, 0
br i1 %6, label %14, label %7
7: ; preds = %2, %11
%8 = phi i8* [ %12, %11 ], [ %0, %2 ]
%9 = tail call i64 @strncmp(i8* %8, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0), i32 11)
%10 = icmp eq i64 %9, 0
br i1 %10, label %14, label %11
11: ; preds = %7
%12 = getelementptr inbounds i8, i8* %8, i64 1
%13 = icmp ult i8* %12, %5
br i1 %13, label %7, label %14
14: ; preds = %7, %11, %2
%15 = phi i8* [ %0, %2 ], [ %12, %11 ], [ %8, %7 ]
%16 = icmp ult i8* %15, %5
br i1 %16, label %17, label %237
17: ; preds = %14, %232
%18 = phi i32 [ %235, %232 ], [ -1, %14 ]
%19 = phi i8* [ %234, %232 ], [ %0, %14 ]
%20 = phi i8* [ %233, %232 ], [ %15, %14 ]
%21 = load i8, i8* %20
switch i8 %21, label %26 [
i8 123, label %22
i8 125, label %24
]
22: ; preds = %17
%23 = getelementptr inbounds i8, i8* %20, i64 1
br label %232
24: ; preds = %17
%25 = getelementptr inbounds i8, i8* %20, i64 1
br label %232
26: ; preds = %17
%27 = tail call i64 @strncmp(i8* %20, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.1, i64 0, i64 0), i32 10)
%28 = icmp eq i64 %27, 0
br i1 %28, label %29, label %69
29: ; preds = %26
%30 = getelementptr inbounds i8, i8* %20, i64 10
%31 = load i8, i8* %30
%32 = add i8 %31, -48
%33 = icmp ult i8 %32, 10
br i1 %33, label %34, label %46
34: ; preds = %29, %34
%35 = phi i8 [ %43, %34 ], [ %31, %29 ]
%36 = phi i32 [ %41, %34 ], [ 0, %29 ]
%37 = phi i8* [ %42, %34 ], [ %30, %29 ]
%38 = zext i8 %35 to i32
%39 = mul nsw i32 %36, 10
%40 = add i32 %39, -48
%41 = add i32 %40, %38
%42 = getelementptr inbounds i8, i8* %37, i64 1
%43 = load i8, i8* %42
%44 = add i8 %43, -48
%45 = icmp ult i8 %44, 10
br i1 %45, label %34, label %46
46: ; preds = %34, %29
%47 = phi i8* [ %30, %29 ], [ %42, %34 ]
%48 = phi i32 [ 0, %29 ], [ %41, %34 ]
%49 = phi i8 [ %31, %29 ], [ %43, %34 ]
%50 = icmp eq i8 %49, 32
%51 = zext i1 %50 to i64
%52 = getelementptr i8, i8* %47, i64 %51
%53 = icmp eq i32 %48, %18
br i1 %53, label %54, label %232
54: ; preds = %46
%55 = icmp ult i8* %52, %5
br i1 %55, label %56, label %63
56: ; preds = %54, %60
%57 = phi i8* [ %61, %60 ], [ %52, %54 ]
%58 = load i8, i8* %57
%59 = icmp eq i8 %58, 125
br i1 %59, label %63, label %60
60: ; preds = %56
%61 = getelementptr inbounds i8, i8* %57, i64 1
%62 = icmp ult i8* %61, %5
br i1 %62, label %56, label %63
63: ; preds = %56, %60, %54
%64 = phi i8* [ %52, %54 ], [ %61, %60 ], [ %57, %56 ]
%65 = load i8, i8* %64
%66 = icmp eq i8 %65, 125
%67 = zext i1 %66 to i64
%68 = getelementptr i8, i8* %64, i64 %67
br label %232
69: ; preds = %26
%70 = tail call i64 @strncmp(i8* %20, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.2, i64 0, i64 0), i32 11)
%71 = icmp eq i64 %70, 0
br i1 %71, label %72, label %96
72: ; preds = %69
%73 = getelementptr inbounds i8, i8* %20, i64 11
%74 = load i8, i8* %73
%75 = add i8 %74, -48
%76 = icmp ult i8 %75, 10
br i1 %76, label %77, label %89
77: ; preds = %72, %77
%78 = phi i8 [ %86, %77 ], [ %74, %72 ]
%79 = phi i32 [ %84, %77 ], [ 0, %72 ]
%80 = phi i8* [ %85, %77 ], [ %73, %72 ]
%81 = zext i8 %78 to i32
%82 = mul nsw i32 %79, 10
%83 = add i32 %82, -48
%84 = add i32 %83, %81
%85 = getelementptr inbounds i8, i8* %80, i64 1
%86 = load i8, i8* %85
%87 = add i8 %86, -48
%88 = icmp ult i8 %87, 10
br i1 %88, label %77, label %89
89: ; preds = %77, %72
%90 = phi i8* [ %73, %72 ], [ %85, %77 ]
%91 = phi i32 [ 0, %72 ], [ %84, %77 ]
%92 = phi i8 [ %74, %72 ], [ %86, %77 ]
%93 = icmp eq i8 %92, 32
%94 = zext i1 %93 to i64
%95 = getelementptr i8, i8* %90, i64 %94
br label %232
96: ; preds = %69
%97 = tail call i64 @strncmp(i8* %20, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i32 4)
%98 = icmp eq i64 %97, 0
br i1 %98, label %99, label %107
99: ; preds = %96
%100 = tail call i32 @strcpy(i8* %19, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0))
%101 = getelementptr inbounds i8, i8* %19, i64 2
%102 = getelementptr inbounds i8, i8* %20, i64 4
%103 = load i8, i8* %102
%104 = icmp eq i8 %103, 32
%105 = getelementptr inbounds i8, i8* %20, i64 5
%106 = select i1 %104, i8* %105, i8* %102
br label %232
107: ; preds = %96
%108 = tail call i64 @strncmp(i8* %20, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), i32 4)
%109 = icmp eq i64 %108, 0
br i1 %109, label %110, label %118
110: ; preds = %107
%111 = tail call i32 @strcpy(i8* %19, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0))
%112 = getelementptr inbounds i8, i8* %19, i64 3
%113 = getelementptr inbounds i8, i8* %20, i64 4
%114 = load i8, i8* %113
%115 = icmp eq i8 %114, 32
%116 = getelementptr inbounds i8, i8* %20, i64 5
%117 = select i1 %115, i8* %116, i8* %113
br label %232
118: ; preds = %107
%119 = tail call i64 @strncmp(i8* %20, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.7, i64 0, i64 0), i32 3)
%120 = icmp eq i64 %119, 0
br i1 %120, label %121, label %133
121: ; preds = %118
%122 = getelementptr inbounds i8, i8* %20, i64 3
br label %123
123: ; preds = %123, %121
%124 = phi i8* [ %122, %121 ], [ %128, %123 ]
%125 = load i8, i8* %124
%126 = add i8 %125, -48
%127 = icmp ult i8 %126, 10
%128 = getelementptr inbounds i8, i8* %124, i64 1
br i1 %127, label %123, label %129
129: ; preds = %123
%130 = icmp eq i8 %125, 32
%131 = zext i1 %130 to i64
%132 = getelementptr i8, i8* %124, i64 %131
br label %232
133: ; preds = %118
%134 = tail call i64 @strncmp(i8* %20, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0), i32 4)
%135 = icmp eq i64 %134, 0
br i1 %135, label %136, label %148
136: ; preds = %133
%137 = getelementptr inbounds i8, i8* %20, i64 4
br label %138
138: ; preds = %138, %136
%139 = phi i8* [ %137, %136 ], [ %143, %138 ]
%140 = load i8, i8* %139
%141 = add i8 %140, -48
%142 = icmp ult i8 %141, 10
%143 = getelementptr inbounds i8, i8* %139, i64 1
br i1 %142, label %138, label %144
144: ; preds = %138
%145 = icmp eq i8 %140, 32
%146 = zext i1 %145 to i64
%147 = getelementptr i8, i8* %139, i64 %146
br label %232
148: ; preds = %133
%149 = tail call i64 @strncmp(i8* %20, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), i32 2)
%150 = icmp eq i64 %149, 0
br i1 %150, label %151, label %182
151: ; preds = %148
%152 = getelementptr inbounds i8, i8* %20, i64 2
%153 = load i8, i8* %152
%154 = getelementptr inbounds i8, i8* %20, i64 3
%155 = load i8, i8* %154
%156 = add i8 %153, -48
%157 = icmp ult i8 %156, 10
br i1 %157, label %165, label %158
158: ; preds = %151
%159 = add i8 %153, -65
%160 = icmp ult i8 %159, 26
br i1 %160, label %165, label %161
161: ; preds = %158
%162 = add i8 %153, -97
%163 = icmp ult i8 %162, 26
%164 = select i1 %163, i8 %162, i8 %153
br label %165
165: ; preds = %158, %151, %161
%166 = phi i8 [ %164, %161 ], [ %156, %151 ], [ %159, %158 ]
%167 = add i8 %155, -48
%168 = icmp ult i8 %167, 10
br i1 %168, label %176, label %169
169: ; preds = %165
%170 = add i8 %155, -65
%171 = icmp ult i8 %170, 26
br i1 %171, label %176, label %172
172: ; preds = %169
%173 = add i8 %155, -97
%174 = icmp ult i8 %173, 26
%175 = select i1 %174, i8 %173, i8 %155
br label %176
176: ; preds = %169, %165, %172
%177 = phi i8 [ %175, %172 ], [ %167, %165 ], [ %170, %169 ]
%178 = shl i8 %166, 4
%179 = add i8 %177, %178
store i8 %179, i8* %19
%180 = getelementptr inbounds i8, i8* %20, i64 4
%181 = getelementptr inbounds i8, i8* %19, i64 1
br label %232
182: ; preds = %148
%183 = tail call i64 @strncmp(i8* %20, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.10, i64 0, i64 0), i32 7)
%184 = icmp eq i64 %183, 0
br i1 %184, label %185, label %195
185: ; preds = %182
%186 = getelementptr inbounds i8, i8* %20, i64 7
%187 = icmp ult i8* %186, %5
br i1 %187, label %188, label %232
188: ; preds = %185, %192
%189 = phi i8* [ %193, %192 ], [ %186, %185 ]
%190 = load i8, i8* %189
%191 = icmp eq i8 %190, 125
br i1 %191, label %232, label %192
192: ; preds = %188
%193 = getelementptr inbounds i8, i8* %189, i64 1
%194 = icmp ult i8* %193, %5
br i1 %194, label %188, label %232
195: ; preds = %182
%196 = tail call i64 @strncmp(i8* %20, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.11, i64 0, i64 0), i32 8)
%197 = icmp eq i64 %196, 0
br i1 %197, label %198, label %212
198: ; preds = %195, %202
%199 = phi i8* [ %200, %202 ], [ %20, %195 ]
%200 = getelementptr inbounds i8, i8* %199, i64 1
%201 = icmp ult i8* %200, %5
br i1 %201, label %202, label %205
202: ; preds = %198
%203 = tail call i64 @strncmp(i8* %200, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.12, i64 0, i64 0), i32 9)
%204 = icmp eq i64 %203, 0
br i1 %204, label %205, label %198
205: ; preds = %198, %202
%206 = getelementptr inbounds i8, i8* %199, i64 10
%207 = select i1 %201, i8* %206, i8* %200
%208 = load i8, i8* %207
%209 = icmp eq i8 %208, 32
%210 = zext i1 %209 to i64
%211 = getelementptr i8, i8* %207, i64 %210
br label %232
212: ; preds = %195
%213 = load i8, i8* %20
switch i8 %213, label %216 [
i8 13, label %214
i8 10, label %214
]
214: ; preds = %212, %212
%215 = getelementptr inbounds i8, i8* %20, i64 1
br label %232
216: ; preds = %212
%217 = tail call i64 @strncmp(i8* %20, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.13, i64 0, i64 0), i32 2)
%218 = icmp eq i64 %217, 0
br i1 %218, label %219, label %222
219: ; preds = %216
store i8 123, i8* %19
%220 = getelementptr inbounds i8, i8* %19, i64 1
%221 = getelementptr inbounds i8, i8* %20, i64 2
br label %232
222: ; preds = %216
%223 = tail call i64 @strncmp(i8* %20, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.14, i64 0, i64 0), i32 2)
%224 = icmp eq i64 %223, 0
br i1 %224, label %225, label %228
225: ; preds = %222
store i8 125, i8* %19
%226 = getelementptr inbounds i8, i8* %19, i64 1
%227 = getelementptr inbounds i8, i8* %20, i64 2
br label %232
228: ; preds = %222
%229 = load i8, i8* %20
store i8 %229, i8* %19
%230 = getelementptr inbounds i8, i8* %20, i64 1
%231 = getelementptr inbounds i8, i8* %19, i64 1
br label %232
232: ; preds = %188, %192, %185, %205, %144, %129, %110, %99, %63, %46, %24, %89, %214, %225, %228, %219, %176, %22
%233 = phi i8* [ %23, %22 ], [ %25, %24 ], [ %95, %89 ], [ %180, %176 ], [ %215, %214 ], [ %221, %219 ], [ %227, %225 ], [ %230, %228 ], [ %52, %46 ], [ %68, %63 ], [ %106, %99 ], [ %117, %110 ], [ %132, %129 ], [ %147, %144 ], [ %211, %205 ], [ %186, %185 ], [ %189, %188 ], [ %193, %192 ]
%234 = phi i8* [ %19, %22 ], [ %19, %24 ], [ %19, %89 ], [ %181, %176 ], [ %19, %214 ], [ %220, %219 ], [ %226, %225 ], [ %231, %228 ], [ %19, %46 ], [ %19, %63 ], [ %101, %99 ], [ %112, %110 ], [ %19, %129 ], [ %19, %144 ], [ %19, %205 ], [ %19, %185 ], [ %19, %192 ], [ %19, %188 ]
%235 = phi i32 [ %18, %22 ], [ %18, %24 ], [ %91, %89 ], [ %18, %176 ], [ %18, %214 ], [ %18, %219 ], [ %18, %225 ], [ %18, %228 ], [ -1, %46 ], [ -1, %63 ], [ %18, %99 ], [ %18, %110 ], [ %18, %129 ], [ %18, %144 ], [ %18, %205 ], [ %18, %185 ], [ %18, %192 ], [ %18, %188 ]
%236 = icmp ult i8* %233, %5
br i1 %236, label %17, label %237
237: ; preds = %232, %14
%238 = phi i8* [ %0, %14 ], [ %234, %232 ]
store i8 0, i8* %238
%239 = getelementptr inbounds i8, i8* %238, i64 1
%240 = ptrtoint i8* %239 to i64
%241 = ptrtoint i8* %0 to i64
%242 = sub i64 %240, %241
%243 = trunc i64 %242 to i32
store i32 %243, i32* %1
ret void
}