#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*/ printf(char *, int, char *);
int /*<<< orphan*/ strcpy(char *, char *);
int strlen(char *);
char toupper(char);
int html_decode(char *src, char *dest) {
  int strlength = strlen(src);
  if (strlength < 3) {
    strcpy(dest, src);
    return 0;
  }
  int i = 0;
  int flag = 0;
  int j = 0;
  char tmp1 = 0;
  char tmp2 = 0;
  char tmpA = 0;
  char tmpB = 0;
  char A, B;
  for (i = 0; i < strlength; i++) {
    if (src[i] == '%') {
      flag = 1;
      continue;
    }
    switch (flag) {
    case 0: {
      dest[j] = src[i];
      if (dest[j] == '+')
        dest[j] = ' ';
      j++;
      break;
    }
    case 1:
      flag = 2;
      if (i < (strlength - 12) && src[i] == '5' && src[i + 1] == 'C' &&
          src[i + 2] == '%' && src[i + 3] == '5' && src[i + 4] == 'C' &&
          src[i + 5] == 'r' && src[i + 6] == '%' && src[i + 7] == '5' &&
          src[i + 8] == 'C' && src[i + 9] == '%' && src[i + 10] == '5' &&
          src[i + 11] == 'C' && src[i + 12] == 'n') {
        dest[j] = 10;
        i = i + 12;
        flag = 0;
        j++;
        break;
      }
      if (i < (strlength - 20) && src[i] == '5' && src[i + 1] == 'C' &&
          src[i + 2] == '%' && src[i + 3] == '2' && src[i + 4] == '2' &&
          src[i + 5] == '%' && src[i + 6] == '2' && src[i + 7] == 'C' &&
          src[i + 8] == '%' && src[i + 9] == '5' && src[i + 10] == 'C' &&
          src[i + 11] == '%' && src[i + 12] == '2' && src[i + 13] == '2' &&
          src[i + 14] == '%' && src[i + 15] == '5' && src[i + 16] == 'C' &&
          src[i + 17] == '%' && src[i + 18] == '5' && src[i + 19] == 'C' &&
          src[i + 20] == 'n') {
        dest[j] = 10;
        i = i + 20;
        flag = 0;
        j++;
        break;
      }
      if (i < (strlength - 10) && src[i] == '5' && src[i + 1] == 'C' &&
          src[i + 2] == '%' && src[i + 3] == '5' && src[i + 4] == 'C' &&
          src[i + 5] == '%' && src[i + 6] == '5' && src[i + 7] == 'C' &&
          src[i + 8] == '%' && src[i + 9] == '5' && src[i + 10] == 'C') {
        dest[j] = '\\';
        i = i + 10;
        flag = 0;
        j++;
        break;
      }
      tmpA = src[i];
      break;
    case 2:
      tmpB = src[i];
      tmp1 = toupper(tmpA);
      tmp2 = toupper(tmpB);
      if (((tmp1 >= 48 && tmp1 <= 57) || (tmp1 >= 65 && tmp1 <= 90)) &&
          ((tmp2 >= 48 && tmp2 <= 57) || (tmp2 >= 65 && tmp2 <= 90))) {
        if (tmp1 >= 48 && tmp1 <= 57)
          A = tmp1 - 48;
        else
          A = 10 + tmp1 - 65;
        if (tmp2 >= 48 && tmp2 <= 57)
          B = tmp2 - 48;
        else
          B = 10 + tmp2 - 65;
        dest[j] = A * 16 + B;
      } else {
        dest[j] = '%';
        dest[j + 1] = tmp1;
        dest[j + 2] = tmp2;
        j += 2;
      }
      flag = 0;
      j++;
      break;
    default:
      break;
    }
  }
  dest[j] = 0;
  printf("len = %d, %s\n", j, dest);
  return 1;
}


x86 assembly (clang, -O0):
<html_decode>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    -0x10(%rbp),%rdi
call   1050 <strlen@plt>
mov    %eax,-0x1c(%rbp)
cmpl   $0x3,-0x1c(%rbp)
jge    117f <html_decode+0x3f>
mov    -0x18(%rbp),%rdi
mov    -0x10(%rbp),%rsi
call   1030 <strcpy@plt>
movl   $0x0,-0x4(%rbp)
jmp    1947 <html_decode+0x807>
movl   $0x0,-0x20(%rbp)
movl   $0x0,-0x24(%rbp)
movl   $0x0,-0x28(%rbp)
movb   $0x0,-0x29(%rbp)
movb   $0x0,-0x2a(%rbp)
movb   $0x0,-0x2b(%rbp)
movb   $0x0,-0x2c(%rbp)
movl   $0x0,-0x20(%rbp)
mov    -0x20(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    1921 <html_decode+0x7e1>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x25,%eax
jne    11d8 <html_decode+0x98>
movl   $0x1,-0x24(%rbp)
jmp    1913 <html_decode+0x7d3>
mov    -0x24(%rbp),%eax
mov    %eax,-0x34(%rbp)
test   %eax,%eax
je     120d <html_decode+0xcd>
jmp    11eb <html_decode+0xab>
mov    -0x34(%rbp),%eax
sub    $0x1,%eax
je     1252 <html_decode+0x112>
jmp    11fc <html_decode+0xbc>
mov    -0x34(%rbp),%eax
sub    $0x2,%eax
je     17a0 <html_decode+0x660>
jmp    1909 <html_decode+0x7c9>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x18(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x18(%rbp),%rax
movslq -0x28(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2b,%eax
jne    1244 <html_decode+0x104>
mov    -0x18(%rbp),%rax
movslq -0x28(%rbp),%rcx
movb   $0x20,(%rax,%rcx,1)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    190e <html_decode+0x7ce>
movl   $0x2,-0x24(%rbp)
mov    -0x20(%rbp),%eax
mov    -0x1c(%rbp),%ecx
sub    $0xc,%ecx
cmp    %ecx,%eax
jge    13e1 <html_decode+0x2a1>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x35,%eax
jne    13e1 <html_decode+0x2a1>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x43,%eax
jne    13e1 <html_decode+0x2a1>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x25,%eax
jne    13e1 <html_decode+0x2a1>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x35,%eax
jne    13e1 <html_decode+0x2a1>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x43,%eax
jne    13e1 <html_decode+0x2a1>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x5,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x72,%eax
jne    13e1 <html_decode+0x2a1>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x6,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x25,%eax
jne    13e1 <html_decode+0x2a1>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x7,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x35,%eax
jne    13e1 <html_decode+0x2a1>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x8,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x43,%eax
jne    13e1 <html_decode+0x2a1>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x9,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x25,%eax
jne    13e1 <html_decode+0x2a1>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0xa,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x35,%eax
jne    13e1 <html_decode+0x2a1>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0xb,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x43,%eax
jne    13e1 <html_decode+0x2a1>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0xc,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6e,%eax
jne    13e1 <html_decode+0x2a1>
mov    -0x18(%rbp),%rax
movslq -0x28(%rbp),%rcx
movb   $0xa,(%rax,%rcx,1)
mov    -0x20(%rbp),%eax
add    $0xc,%eax
mov    %eax,-0x20(%rbp)
movl   $0x0,-0x24(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    190e <html_decode+0x7ce>
mov    -0x20(%rbp),%eax
mov    -0x1c(%rbp),%ecx
sub    $0x14,%ecx
cmp    %ecx,%eax
jge    1639 <html_decode+0x4f9>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x35,%eax
jne    1639 <html_decode+0x4f9>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x43,%eax
jne    1639 <html_decode+0x4f9>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x25,%eax
jne    1639 <html_decode+0x4f9>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x32,%eax
jne    1639 <html_decode+0x4f9>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x32,%eax
jne    1639 <html_decode+0x4f9>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x5,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x25,%eax
jne    1639 <html_decode+0x4f9>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x6,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x32,%eax
jne    1639 <html_decode+0x4f9>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x7,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x43,%eax
jne    1639 <html_decode+0x4f9>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x8,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x25,%eax
jne    1639 <html_decode+0x4f9>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x9,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x35,%eax
jne    1639 <html_decode+0x4f9>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0xa,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x43,%eax
jne    1639 <html_decode+0x4f9>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0xb,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x25,%eax
jne    1639 <html_decode+0x4f9>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0xc,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x32,%eax
jne    1639 <html_decode+0x4f9>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0xd,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x32,%eax
jne    1639 <html_decode+0x4f9>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0xe,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x25,%eax
jne    1639 <html_decode+0x4f9>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0xf,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x35,%eax
jne    1639 <html_decode+0x4f9>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x10,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x43,%eax
jne    1639 <html_decode+0x4f9>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x11,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x25,%eax
jne    1639 <html_decode+0x4f9>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x12,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x35,%eax
jne    1639 <html_decode+0x4f9>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x13,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x43,%eax
jne    1639 <html_decode+0x4f9>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x14,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6e,%eax
jne    1639 <html_decode+0x4f9>
mov    -0x18(%rbp),%rax
movslq -0x28(%rbp),%rcx
movb   $0xa,(%rax,%rcx,1)
mov    -0x20(%rbp),%eax
add    $0x14,%eax
mov    %eax,-0x20(%rbp)
movl   $0x0,-0x24(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    190e <html_decode+0x7ce>
mov    -0x20(%rbp),%eax
mov    -0x1c(%rbp),%ecx
sub    $0xa,%ecx
cmp    %ecx,%eax
jge    178d <html_decode+0x64d>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x35,%eax
jne    178d <html_decode+0x64d>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x43,%eax
jne    178d <html_decode+0x64d>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x25,%eax
jne    178d <html_decode+0x64d>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x35,%eax
jne    178d <html_decode+0x64d>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x43,%eax
jne    178d <html_decode+0x64d>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x5,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x25,%eax
jne    178d <html_decode+0x64d>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x6,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x35,%eax
jne    178d <html_decode+0x64d>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x7,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x43,%eax
jne    178d <html_decode+0x64d>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x8,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x25,%eax
jne    178d <html_decode+0x64d>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x9,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x35,%eax
jne    178d <html_decode+0x64d>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0xa,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x43,%eax
jne    178d <html_decode+0x64d>
mov    -0x18(%rbp),%rax
movslq -0x28(%rbp),%rcx
movb   $0x5c,(%rax,%rcx,1)
mov    -0x20(%rbp),%eax
add    $0xa,%eax
mov    %eax,-0x20(%rbp)
movl   $0x0,-0x24(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    190e <html_decode+0x7ce>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
mov    (%rax,%rcx,1),%al
mov    %al,-0x2b(%rbp)
jmp    190e <html_decode+0x7ce>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
mov    (%rax,%rcx,1),%al
mov    %al,-0x2c(%rbp)
movsbl -0x2b(%rbp),%edi
call   1040 <toupper@plt>
mov    %al,-0x29(%rbp)
movsbl -0x2c(%rbp),%edi
call   1040 <toupper@plt>
mov    %al,-0x2a(%rbp)
movsbl -0x29(%rbp),%eax
cmp    $0x30,%eax
jl     17e0 <html_decode+0x6a0>
movsbl -0x29(%rbp),%eax
cmp    $0x39,%eax
jle    17fa <html_decode+0x6ba>
movsbl -0x29(%rbp),%eax
cmp    $0x41,%eax
jl     18b9 <html_decode+0x779>
movsbl -0x29(%rbp),%eax
cmp    $0x5a,%eax
jg     18b9 <html_decode+0x779>
movsbl -0x2a(%rbp),%eax
cmp    $0x30,%eax
jl     1814 <html_decode+0x6d4>
movsbl -0x2a(%rbp),%eax
cmp    $0x39,%eax
jle    182e <html_decode+0x6ee>
movsbl -0x2a(%rbp),%eax
cmp    $0x41,%eax
jl     18b9 <html_decode+0x779>
movsbl -0x2a(%rbp),%eax
cmp    $0x5a,%eax
jg     18b9 <html_decode+0x779>
movsbl -0x29(%rbp),%eax
cmp    $0x30,%eax
jl     1857 <html_decode+0x717>
movsbl -0x29(%rbp),%eax
cmp    $0x39,%eax
jg     1857 <html_decode+0x717>
movsbl -0x29(%rbp),%eax
sub    $0x30,%eax
mov    %al,-0x2d(%rbp)
jmp    1864 <html_decode+0x724>
movsbl -0x29(%rbp),%eax
add    $0xa,%eax
sub    $0x41,%eax
mov    %al,-0x2d(%rbp)
movsbl -0x2a(%rbp),%eax
cmp    $0x30,%eax
jl     188d <html_decode+0x74d>
movsbl -0x2a(%rbp),%eax
cmp    $0x39,%eax
jg     188d <html_decode+0x74d>
movsbl -0x2a(%rbp),%eax
sub    $0x30,%eax
mov    %al,-0x2e(%rbp)
jmp    189a <html_decode+0x75a>
movsbl -0x2a(%rbp),%eax
add    $0xa,%eax
sub    $0x41,%eax
mov    %al,-0x2e(%rbp)
movsbl -0x2d(%rbp),%eax
shl    $0x4,%eax
movsbl -0x2e(%rbp),%ecx
add    %ecx,%eax
mov    %al,%dl
mov    -0x18(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
jmp    18f4 <html_decode+0x7b4>
mov    -0x18(%rbp),%rax
movslq -0x28(%rbp),%rcx
movb   $0x25,(%rax,%rcx,1)
mov    -0x29(%rbp),%dl
mov    -0x18(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x2a(%rbp),%dl
mov    -0x18(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x28(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x28(%rbp)
movl   $0x0,-0x24(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    190e <html_decode+0x7ce>
jmp    190e <html_decode+0x7ce>
jmp    1913 <html_decode+0x7d3>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    11ab <html_decode+0x6b>
mov    -0x18(%rbp),%rax
movslq -0x28(%rbp),%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x28(%rbp),%esi
mov    -0x18(%rbp),%rdx
lea    0x6c5(%rip),%rdi
call   1060 <printf@plt>
movl   $0x1,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<html_decode>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
mov    %rsi,%r15
mov    %rdi,%r12
call   1050 <strlen@plt>
cmp    $0x3,%eax
jge    1170 <html_decode+0x30>
mov    %r15,%rdi
mov    %r12,%rsi
call   1030 <strcpy@plt>
xor    %eax,%eax
jmp    1498 <html_decode+0x358>
lea    -0xc(%rax),%ecx
mov    %ecx,0x8(%rsp)
lea    -0x14(%rax),%ecx
mov    %ecx,0x4(%rsp)
lea    -0xa(%rax),%ecx
mov    %ecx,(%rsp)
xor    %edi,%edi
xor    %r13d,%r13d
xor    %edx,%edx
xor    %ebp,%ebp
mov    %rax,0x10(%rsp)
jmp    11cd <html_decode+0x8d>
cmp    $0x2b,%r14b
movzbl %r14b,%edx
mov    $0x20,%ecx
cmove  %ecx,%edx
movslq %r13d,%rcx
mov    %dl,(%r15,%rcx,1)
add    $0x1,%r13d
xor    %ecx,%ecx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%ebp
mov    %ecx,%edx
cmp    %eax,%ebp
jge    147c <html_decode+0x33c>
movslq %ebp,%rsi
movzbl (%r12,%rsi,1),%r14d
mov    $0x1,%ecx
cmp    $0x25,%r14b
je     11c0 <html_decode+0x80>
cmp    $0x2,%edx
je     11f2 <html_decode+0xb2>
cmp    $0x1,%edx
je     124b <html_decode+0x10b>
test   %edx,%edx
je     1194 <html_decode+0x54>
mov    %edx,%ecx
jmp    11c0 <html_decode+0x80>
mov    %edi,0xc(%rsp)
movsbl %dil,%edi
call   1040 <toupper@plt>
mov    %eax,%ebx
movsbl %r14b,%edi
call   1040 <toupper@plt>
lea    -0x30(%rbx),%ecx
cmp    $0xa,%cl
jb     121a <html_decode+0xda>
lea    -0x41(%rbx),%edx
cmp    $0x19,%dl
ja     1233 <html_decode+0xf3>
lea    -0x30(%rax),%edx
cmp    $0xa,%dl
jb     1437 <html_decode+0x2f7>
lea    -0x41(%rax),%esi
cmp    $0x19,%sil
jbe    1437 <html_decode+0x2f7>
movslq %r13d,%r13
movb   $0x25,(%r15,%r13,1)
mov    %bl,0x1(%r15,%r13,1)
add    $0x2,%r13d
mov    %eax,%ecx
jmp    1459 <html_decode+0x319>
cmp    0x8(%rsp),%ebp
jge    12c8 <html_decode+0x188>
cmp    $0x35,%r14b
jne    12c8 <html_decode+0x188>
cmpb   $0x43,0x1(%rsi,%r12,1)
jne    12c8 <html_decode+0x188>
cmpb   $0x25,0x2(%rsi,%r12,1)
jne    12c8 <html_decode+0x188>
cmpb   $0x35,0x3(%rsi,%r12,1)
jne    12c8 <html_decode+0x188>
cmpb   $0x43,0x4(%rsi,%r12,1)
jne    12c8 <html_decode+0x188>
cmpb   $0x72,0x5(%rsi,%r12,1)
jne    12c8 <html_decode+0x188>
cmpb   $0x25,0x6(%rsi,%r12,1)
jne    12c8 <html_decode+0x188>
cmpb   $0x35,0x7(%rsi,%r12,1)
jne    12c8 <html_decode+0x188>
cmpb   $0x43,0x8(%rsi,%r12,1)
jne    12c8 <html_decode+0x188>
cmpb   $0x25,0x9(%rsi,%r12,1)
jne    12c8 <html_decode+0x188>
cmpb   $0x35,0xa(%rsi,%r12,1)
jne    12c8 <html_decode+0x188>
cmpb   $0x43,0xb(%rsi,%r12,1)
jne    12c8 <html_decode+0x188>
cmpb   $0x6e,0xc(%r12,%rsi,1)
jne    12c8 <html_decode+0x188>
add    $0xc,%rsi
movslq %r13d,%rcx
movb   $0xa,(%r15,%rcx,1)
jmp    1422 <html_decode+0x2e2>
cmp    0x4(%rsp),%ebp
jge    139e <html_decode+0x25e>
mov    $0x2,%ecx
cmp    $0x35,%r14b
jne    142f <html_decode+0x2ef>
cmpb   $0x43,0x1(%rsi,%r12,1)
jne    139e <html_decode+0x25e>
cmpb   $0x25,0x2(%rsi,%r12,1)
jne    139e <html_decode+0x25e>
cmpb   $0x32,0x3(%rsi,%r12,1)
jne    139e <html_decode+0x25e>
cmpb   $0x32,0x4(%rsi,%r12,1)
jne    139e <html_decode+0x25e>
cmpb   $0x25,0x5(%rsi,%r12,1)
jne    139e <html_decode+0x25e>
cmpb   $0x32,0x6(%rsi,%r12,1)
jne    139e <html_decode+0x25e>
cmpb   $0x43,0x7(%rsi,%r12,1)
jne    139e <html_decode+0x25e>
cmpb   $0x25,0x8(%rsi,%r12,1)
jne    139e <html_decode+0x25e>
cmpb   $0x35,0x9(%rsi,%r12,1)
jne    139e <html_decode+0x25e>
cmpb   $0x43,0xa(%rsi,%r12,1)
jne    139e <html_decode+0x25e>
cmpb   $0x25,0xb(%rsi,%r12,1)
jne    139e <html_decode+0x25e>
cmpb   $0x32,0xc(%rsi,%r12,1)
jne    139e <html_decode+0x25e>
cmpb   $0x32,0xd(%rsi,%r12,1)
jne    139e <html_decode+0x25e>
cmpb   $0x25,0xe(%rsi,%r12,1)
jne    139e <html_decode+0x25e>
cmpb   $0x35,0xf(%rsi,%r12,1)
jne    139e <html_decode+0x25e>
cmpb   $0x43,0x10(%rsi,%r12,1)
jne    139e <html_decode+0x25e>
cmpb   $0x25,0x11(%rsi,%r12,1)
jne    139e <html_decode+0x25e>
cmpb   $0x35,0x12(%rsi,%r12,1)
jne    139e <html_decode+0x25e>
cmpb   $0x43,0x13(%rsi,%r12,1)
jne    139e <html_decode+0x25e>
cmpb   $0x6e,0x14(%r12,%rsi,1)
jne    139e <html_decode+0x25e>
add    $0x14,%rsi
jmp    12bb <html_decode+0x17b>
mov    $0x2,%ecx
cmp    (%rsp),%ebp
jge    142f <html_decode+0x2ef>
cmp    $0x35,%r14b
jne    142f <html_decode+0x2ef>
cmpb   $0x43,0x1(%rsi,%r12,1)
jne    1474 <html_decode+0x334>
cmpb   $0x25,0x2(%rsi,%r12,1)
jne    1474 <html_decode+0x334>
cmpb   $0x35,0x3(%rsi,%r12,1)
jne    1474 <html_decode+0x334>
cmpb   $0x43,0x4(%rsi,%r12,1)
jne    1474 <html_decode+0x334>
cmpb   $0x25,0x5(%rsi,%r12,1)
jne    1474 <html_decode+0x334>
cmpb   $0x35,0x6(%rsi,%r12,1)
jne    1474 <html_decode+0x334>
cmpb   $0x43,0x7(%rsi,%r12,1)
jne    1474 <html_decode+0x334>
cmpb   $0x25,0x8(%rsi,%r12,1)
jne    1474 <html_decode+0x334>
cmpb   $0x35,0x9(%rsi,%r12,1)
jne    1474 <html_decode+0x334>
cmpb   $0x43,0xa(%r12,%rsi,1)
jne    1474 <html_decode+0x334>
add    $0xa,%rsi
movslq %r13d,%rcx
movb   $0x5c,(%r15,%rcx,1)
add    $0x1,%r13d
xor    %ecx,%ecx
mov    %esi,%ebp
jmp    11c0 <html_decode+0x80>
mov    %r14d,%edi
jmp    11c0 <html_decode+0x80>
add    $0x9,%bl
cmp    $0xa,%cl
movzbl %cl,%esi
movzbl %bl,%ecx
cmovb  %esi,%ecx
add    $0xc9,%al
cmp    $0xa,%dl
movzbl %dl,%edx
movzbl %al,%eax
cmovb  %edx,%eax
shl    $0x4,%cl
add    %al,%cl
movslq %r13d,%r13
mov    %cl,(%r15,%r13,1)
add    $0x1,%r13d
xor    %ecx,%ecx
mov    0x10(%rsp),%rax
mov    0xc(%rsp),%edi
jmp    11c0 <html_decode+0x80>
mov    $0x35,%dil
jmp    11c0 <html_decode+0x80>
movslq %r13d,%rsi
movb   $0x0,(%r15,%rsi,1)
lea    0xb75(%rip),%rdi
mov    %r15,%rdx
call   1060 <printf@plt>
mov    $0x1,%eax
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [14 x i8] c"len = %d, %s\0A\00"
define i32 @html_decode(i8* %0, i8* %1) {
%3 = alloca i32
%4 = alloca i8*
%5 = alloca i8*
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i8
%11 = alloca i8
%12 = alloca i8
%13 = alloca i8
%14 = alloca i8
%15 = alloca i8
store i8* %0, i8** %4
store i8* %1, i8** %5
%16 = load i8*, i8** %4
%17 = call i32 @strlen(i8* %16)
store i32 %17, i32* %6
%18 = load i32, i32* %6
%19 = icmp slt i32 %18, 3
br i1 %19, label %20, label %24
20: ; preds = %2
%21 = load i8*, i8** %5
%22 = load i8*, i8** %4
%23 = call i32 @strcpy(i8* %21, i8* %22)
store i32 0, i32* %3
br label %641
24: ; preds = %2
store i32 0, i32* %7
store i32 0, i32* %8
store i32 0, i32* %9
store i8 0, i8* %10
store i8 0, i8* %11
store i8 0, i8* %12
store i8 0, i8* %13
store i32 0, i32* %7
br label %25
25: ; preds = %630, %24
%26 = load i32, i32* %7
%27 = load i32, i32* %6
%28 = icmp slt i32 %26, %27
br i1 %28, label %29, label %633
29: ; preds = %25
%30 = load i8*, i8** %4
%31 = load i32, i32* %7
%32 = sext i32 %31 to i64
%33 = getelementptr inbounds i8, i8* %30, i64 %32
%34 = load i8, i8* %33
%35 = sext i8 %34 to i32
%36 = icmp eq i32 %35, 37
br i1 %36, label %37, label %38
37: ; preds = %29
store i32 1, i32* %8
br label %630
38: ; preds = %29
%39 = load i32, i32* %8
switch i32 %39, label %628 [
i32 0, label %40
i32 1, label %65
i32 2, label %515
]
40: ; preds = %38
%41 = load i8*, i8** %4
%42 = load i32, i32* %7
%43 = sext i32 %42 to i64
%44 = getelementptr inbounds i8, i8* %41, i64 %43
%45 = load i8, i8* %44
%46 = load i8*, i8** %5
%47 = load i32, i32* %9
%48 = sext i32 %47 to i64
%49 = getelementptr inbounds i8, i8* %46, i64 %48
store i8 %45, i8* %49
%50 = load i8*, i8** %5
%51 = load i32, i32* %9
%52 = sext i32 %51 to i64
%53 = getelementptr inbounds i8, i8* %50, i64 %52
%54 = load i8, i8* %53
%55 = sext i8 %54 to i32
%56 = icmp eq i32 %55, 43
br i1 %56, label %57, label %62
57: ; preds = %40
%58 = load i8*, i8** %5
%59 = load i32, i32* %9
%60 = sext i32 %59 to i64
%61 = getelementptr inbounds i8, i8* %58, i64 %60
store i8 32, i8* %61
br label %62
62: ; preds = %57, %40
%63 = load i32, i32* %9
%64 = add nsw i32 %63, 1
store i32 %64, i32* %9
br label %629
65: ; preds = %38
store i32 2, i32* %8
%66 = load i32, i32* %7
%67 = load i32, i32* %6
%68 = sub nsw i32 %67, 12
%69 = icmp slt i32 %66, %68
br i1 %69, label %70, label %195
70: ; preds = %65
%71 = load i8*, i8** %4
%72 = load i32, i32* %7
%73 = sext i32 %72 to i64
%74 = getelementptr inbounds i8, i8* %71, i64 %73
%75 = load i8, i8* %74
%76 = sext i8 %75 to i32
%77 = icmp eq i32 %76, 53
br i1 %77, label %78, label %195
78: ; preds = %70
%79 = load i8*, i8** %4
%80 = load i32, i32* %7
%81 = add nsw i32 %80, 1
%82 = sext i32 %81 to i64
%83 = getelementptr inbounds i8, i8* %79, i64 %82
%84 = load i8, i8* %83
%85 = sext i8 %84 to i32
%86 = icmp eq i32 %85, 67
br i1 %86, label %87, label %195
87: ; preds = %78
%88 = load i8*, i8** %4
%89 = load i32, i32* %7
%90 = add nsw i32 %89, 2
%91 = sext i32 %90 to i64
%92 = getelementptr inbounds i8, i8* %88, i64 %91
%93 = load i8, i8* %92
%94 = sext i8 %93 to i32
%95 = icmp eq i32 %94, 37
br i1 %95, label %96, label %195
96: ; preds = %87
%97 = load i8*, i8** %4
%98 = load i32, i32* %7
%99 = add nsw i32 %98, 3
%100 = sext i32 %99 to i64
%101 = getelementptr inbounds i8, i8* %97, i64 %100
%102 = load i8, i8* %101
%103 = sext i8 %102 to i32
%104 = icmp eq i32 %103, 53
br i1 %104, label %105, label %195
105: ; preds = %96
%106 = load i8*, i8** %4
%107 = load i32, i32* %7
%108 = add nsw i32 %107, 4
%109 = sext i32 %108 to i64
%110 = getelementptr inbounds i8, i8* %106, i64 %109
%111 = load i8, i8* %110
%112 = sext i8 %111 to i32
%113 = icmp eq i32 %112, 67
br i1 %113, label %114, label %195
114: ; preds = %105
%115 = load i8*, i8** %4
%116 = load i32, i32* %7
%117 = add nsw i32 %116, 5
%118 = sext i32 %117 to i64
%119 = getelementptr inbounds i8, i8* %115, i64 %118
%120 = load i8, i8* %119
%121 = sext i8 %120 to i32
%122 = icmp eq i32 %121, 114
br i1 %122, label %123, label %195
123: ; preds = %114
%124 = load i8*, i8** %4
%125 = load i32, i32* %7
%126 = add nsw i32 %125, 6
%127 = sext i32 %126 to i64
%128 = getelementptr inbounds i8, i8* %124, i64 %127
%129 = load i8, i8* %128
%130 = sext i8 %129 to i32
%131 = icmp eq i32 %130, 37
br i1 %131, label %132, label %195
132: ; preds = %123
%133 = load i8*, i8** %4
%134 = load i32, i32* %7
%135 = add nsw i32 %134, 7
%136 = sext i32 %135 to i64
%137 = getelementptr inbounds i8, i8* %133, i64 %136
%138 = load i8, i8* %137
%139 = sext i8 %138 to i32
%140 = icmp eq i32 %139, 53
br i1 %140, label %141, label %195
141: ; preds = %132
%142 = load i8*, i8** %4
%143 = load i32, i32* %7
%144 = add nsw i32 %143, 8
%145 = sext i32 %144 to i64
%146 = getelementptr inbounds i8, i8* %142, i64 %145
%147 = load i8, i8* %146
%148 = sext i8 %147 to i32
%149 = icmp eq i32 %148, 67
br i1 %149, label %150, label %195
150: ; preds = %141
%151 = load i8*, i8** %4
%152 = load i32, i32* %7
%153 = add nsw i32 %152, 9
%154 = sext i32 %153 to i64
%155 = getelementptr inbounds i8, i8* %151, i64 %154
%156 = load i8, i8* %155
%157 = sext i8 %156 to i32
%158 = icmp eq i32 %157, 37
br i1 %158, label %159, label %195
159: ; preds = %150
%160 = load i8*, i8** %4
%161 = load i32, i32* %7
%162 = add nsw i32 %161, 10
%163 = sext i32 %162 to i64
%164 = getelementptr inbounds i8, i8* %160, i64 %163
%165 = load i8, i8* %164
%166 = sext i8 %165 to i32
%167 = icmp eq i32 %166, 53
br i1 %167, label %168, label %195
168: ; preds = %159
%169 = load i8*, i8** %4
%170 = load i32, i32* %7
%171 = add nsw i32 %170, 11
%172 = sext i32 %171 to i64
%173 = getelementptr inbounds i8, i8* %169, i64 %172
%174 = load i8, i8* %173
%175 = sext i8 %174 to i32
%176 = icmp eq i32 %175, 67
br i1 %176, label %177, label %195
177: ; preds = %168
%178 = load i8*, i8** %4
%179 = load i32, i32* %7
%180 = add nsw i32 %179, 12
%181 = sext i32 %180 to i64
%182 = getelementptr inbounds i8, i8* %178, i64 %181
%183 = load i8, i8* %182
%184 = sext i8 %183 to i32
%185 = icmp eq i32 %184, 110
br i1 %185, label %186, label %195
186: ; preds = %177
%187 = load i8*, i8** %5
%188 = load i32, i32* %9
%189 = sext i32 %188 to i64
%190 = getelementptr inbounds i8, i8* %187, i64 %189
store i8 10, i8* %190
%191 = load i32, i32* %7
%192 = add nsw i32 %191, 12
store i32 %192, i32* %7
store i32 0, i32* %8
%193 = load i32, i32* %9
%194 = add nsw i32 %193, 1
store i32 %194, i32* %9
br label %629
195: ; preds = %177, %168, %159, %150, %141, %132, %123, %114, %105, %96, %87, %78, %70, %65
%196 = load i32, i32* %7
%197 = load i32, i32* %6
%198 = sub nsw i32 %197, 20
%199 = icmp slt i32 %196, %198
br i1 %199, label %200, label %397
200: ; preds = %195
%201 = load i8*, i8** %4
%202 = load i32, i32* %7
%203 = sext i32 %202 to i64
%204 = getelementptr inbounds i8, i8* %201, i64 %203
%205 = load i8, i8* %204
%206 = sext i8 %205 to i32
%207 = icmp eq i32 %206, 53
br i1 %207, label %208, label %397
208: ; preds = %200
%209 = load i8*, i8** %4
%210 = load i32, i32* %7
%211 = add nsw i32 %210, 1
%212 = sext i32 %211 to i64
%213 = getelementptr inbounds i8, i8* %209, i64 %212
%214 = load i8, i8* %213
%215 = sext i8 %214 to i32
%216 = icmp eq i32 %215, 67
br i1 %216, label %217, label %397
217: ; preds = %208
%218 = load i8*, i8** %4
%219 = load i32, i32* %7
%220 = add nsw i32 %219, 2
%221 = sext i32 %220 to i64
%222 = getelementptr inbounds i8, i8* %218, i64 %221
%223 = load i8, i8* %222
%224 = sext i8 %223 to i32
%225 = icmp eq i32 %224, 37
br i1 %225, label %226, label %397
226: ; preds = %217
%227 = load i8*, i8** %4
%228 = load i32, i32* %7
%229 = add nsw i32 %228, 3
%230 = sext i32 %229 to i64
%231 = getelementptr inbounds i8, i8* %227, i64 %230
%232 = load i8, i8* %231
%233 = sext i8 %232 to i32
%234 = icmp eq i32 %233, 50
br i1 %234, label %235, label %397
235: ; preds = %226
%236 = load i8*, i8** %4
%237 = load i32, i32* %7
%238 = add nsw i32 %237, 4
%239 = sext i32 %238 to i64
%240 = getelementptr inbounds i8, i8* %236, i64 %239
%241 = load i8, i8* %240
%242 = sext i8 %241 to i32
%243 = icmp eq i32 %242, 50
br i1 %243, label %244, label %397
244: ; preds = %235
%245 = load i8*, i8** %4
%246 = load i32, i32* %7
%247 = add nsw i32 %246, 5
%248 = sext i32 %247 to i64
%249 = getelementptr inbounds i8, i8* %245, i64 %248
%250 = load i8, i8* %249
%251 = sext i8 %250 to i32
%252 = icmp eq i32 %251, 37
br i1 %252, label %253, label %397
253: ; preds = %244
%254 = load i8*, i8** %4
%255 = load i32, i32* %7
%256 = add nsw i32 %255, 6
%257 = sext i32 %256 to i64
%258 = getelementptr inbounds i8, i8* %254, i64 %257
%259 = load i8, i8* %258
%260 = sext i8 %259 to i32
%261 = icmp eq i32 %260, 50
br i1 %261, label %262, label %397
262: ; preds = %253
%263 = load i8*, i8** %4
%264 = load i32, i32* %7
%265 = add nsw i32 %264, 7
%266 = sext i32 %265 to i64
%267 = getelementptr inbounds i8, i8* %263, i64 %266
%268 = load i8, i8* %267
%269 = sext i8 %268 to i32
%270 = icmp eq i32 %269, 67
br i1 %270, label %271, label %397
271: ; preds = %262
%272 = load i8*, i8** %4
%273 = load i32, i32* %7
%274 = add nsw i32 %273, 8
%275 = sext i32 %274 to i64
%276 = getelementptr inbounds i8, i8* %272, i64 %275
%277 = load i8, i8* %276
%278 = sext i8 %277 to i32
%279 = icmp eq i32 %278, 37
br i1 %279, label %280, label %397
280: ; preds = %271
%281 = load i8*, i8** %4
%282 = load i32, i32* %7
%283 = add nsw i32 %282, 9
%284 = sext i32 %283 to i64
%285 = getelementptr inbounds i8, i8* %281, i64 %284
%286 = load i8, i8* %285
%287 = sext i8 %286 to i32
%288 = icmp eq i32 %287, 53
br i1 %288, label %289, label %397
289: ; preds = %280
%290 = load i8*, i8** %4
%291 = load i32, i32* %7
%292 = add nsw i32 %291, 10
%293 = sext i32 %292 to i64
%294 = getelementptr inbounds i8, i8* %290, i64 %293
%295 = load i8, i8* %294
%296 = sext i8 %295 to i32
%297 = icmp eq i32 %296, 67
br i1 %297, label %298, label %397
298: ; preds = %289
%299 = load i8*, i8** %4
%300 = load i32, i32* %7
%301 = add nsw i32 %300, 11
%302 = sext i32 %301 to i64
%303 = getelementptr inbounds i8, i8* %299, i64 %302
%304 = load i8, i8* %303
%305 = sext i8 %304 to i32
%306 = icmp eq i32 %305, 37
br i1 %306, label %307, label %397
307: ; preds = %298
%308 = load i8*, i8** %4
%309 = load i32, i32* %7
%310 = add nsw i32 %309, 12
%311 = sext i32 %310 to i64
%312 = getelementptr inbounds i8, i8* %308, i64 %311
%313 = load i8, i8* %312
%314 = sext i8 %313 to i32
%315 = icmp eq i32 %314, 50
br i1 %315, label %316, label %397
316: ; preds = %307
%317 = load i8*, i8** %4
%318 = load i32, i32* %7
%319 = add nsw i32 %318, 13
%320 = sext i32 %319 to i64
%321 = getelementptr inbounds i8, i8* %317, i64 %320
%322 = load i8, i8* %321
%323 = sext i8 %322 to i32
%324 = icmp eq i32 %323, 50
br i1 %324, label %325, label %397
325: ; preds = %316
%326 = load i8*, i8** %4
%327 = load i32, i32* %7
%328 = add nsw i32 %327, 14
%329 = sext i32 %328 to i64
%330 = getelementptr inbounds i8, i8* %326, i64 %329
%331 = load i8, i8* %330
%332 = sext i8 %331 to i32
%333 = icmp eq i32 %332, 37
br i1 %333, label %334, label %397
334: ; preds = %325
%335 = load i8*, i8** %4
%336 = load i32, i32* %7
%337 = add nsw i32 %336, 15
%338 = sext i32 %337 to i64
%339 = getelementptr inbounds i8, i8* %335, i64 %338
%340 = load i8, i8* %339
%341 = sext i8 %340 to i32
%342 = icmp eq i32 %341, 53
br i1 %342, label %343, label %397
343: ; preds = %334
%344 = load i8*, i8** %4
%345 = load i32, i32* %7
%346 = add nsw i32 %345, 16
%347 = sext i32 %346 to i64
%348 = getelementptr inbounds i8, i8* %344, i64 %347
%349 = load i8, i8* %348
%350 = sext i8 %349 to i32
%351 = icmp eq i32 %350, 67
br i1 %351, label %352, label %397
352: ; preds = %343
%353 = load i8*, i8** %4
%354 = load i32, i32* %7
%355 = add nsw i32 %354, 17
%356 = sext i32 %355 to i64
%357 = getelementptr inbounds i8, i8* %353, i64 %356
%358 = load i8, i8* %357
%359 = sext i8 %358 to i32
%360 = icmp eq i32 %359, 37
br i1 %360, label %361, label %397
361: ; preds = %352
%362 = load i8*, i8** %4
%363 = load i32, i32* %7
%364 = add nsw i32 %363, 18
%365 = sext i32 %364 to i64
%366 = getelementptr inbounds i8, i8* %362, i64 %365
%367 = load i8, i8* %366
%368 = sext i8 %367 to i32
%369 = icmp eq i32 %368, 53
br i1 %369, label %370, label %397
370: ; preds = %361
%371 = load i8*, i8** %4
%372 = load i32, i32* %7
%373 = add nsw i32 %372, 19
%374 = sext i32 %373 to i64
%375 = getelementptr inbounds i8, i8* %371, i64 %374
%376 = load i8, i8* %375
%377 = sext i8 %376 to i32
%378 = icmp eq i32 %377, 67
br i1 %378, label %379, label %397
379: ; preds = %370
%380 = load i8*, i8** %4
%381 = load i32, i32* %7
%382 = add nsw i32 %381, 20
%383 = sext i32 %382 to i64
%384 = getelementptr inbounds i8, i8* %380, i64 %383
%385 = load i8, i8* %384
%386 = sext i8 %385 to i32
%387 = icmp eq i32 %386, 110
br i1 %387, label %388, label %397
388: ; preds = %379
%389 = load i8*, i8** %5
%390 = load i32, i32* %9
%391 = sext i32 %390 to i64
%392 = getelementptr inbounds i8, i8* %389, i64 %391
store i8 10, i8* %392
%393 = load i32, i32* %7
%394 = add nsw i32 %393, 20
store i32 %394, i32* %7
store i32 0, i32* %8
%395 = load i32, i32* %9
%396 = add nsw i32 %395, 1
store i32 %396, i32* %9
br label %629
397: ; preds = %379, %370, %361, %352, %343, %334, %325, %316, %307, %298, %289, %280, %271, %262, %253, %244, %235, %226, %217, %208, %200, %195
%398 = load i32, i32* %7
%399 = load i32, i32* %6
%400 = sub nsw i32 %399, 10
%401 = icmp slt i32 %398, %400
br i1 %401, label %402, label %509
402: ; preds = %397
%403 = load i8*, i8** %4
%404 = load i32, i32* %7
%405 = sext i32 %404 to i64
%406 = getelementptr inbounds i8, i8* %403, i64 %405
%407 = load i8, i8* %406
%408 = sext i8 %407 to i32
%409 = icmp eq i32 %408, 53
br i1 %409, label %410, label %509
410: ; preds = %402
%411 = load i8*, i8** %4
%412 = load i32, i32* %7
%413 = add nsw i32 %412, 1
%414 = sext i32 %413 to i64
%415 = getelementptr inbounds i8, i8* %411, i64 %414
%416 = load i8, i8* %415
%417 = sext i8 %416 to i32
%418 = icmp eq i32 %417, 67
br i1 %418, label %419, label %509
419: ; preds = %410
%420 = load i8*, i8** %4
%421 = load i32, i32* %7
%422 = add nsw i32 %421, 2
%423 = sext i32 %422 to i64
%424 = getelementptr inbounds i8, i8* %420, i64 %423
%425 = load i8, i8* %424
%426 = sext i8 %425 to i32
%427 = icmp eq i32 %426, 37
br i1 %427, label %428, label %509
428: ; preds = %419
%429 = load i8*, i8** %4
%430 = load i32, i32* %7
%431 = add nsw i32 %430, 3
%432 = sext i32 %431 to i64
%433 = getelementptr inbounds i8, i8* %429, i64 %432
%434 = load i8, i8* %433
%435 = sext i8 %434 to i32
%436 = icmp eq i32 %435, 53
br i1 %436, label %437, label %509
437: ; preds = %428
%438 = load i8*, i8** %4
%439 = load i32, i32* %7
%440 = add nsw i32 %439, 4
%441 = sext i32 %440 to i64
%442 = getelementptr inbounds i8, i8* %438, i64 %441
%443 = load i8, i8* %442
%444 = sext i8 %443 to i32
%445 = icmp eq i32 %444, 67
br i1 %445, label %446, label %509
446: ; preds = %437
%447 = load i8*, i8** %4
%448 = load i32, i32* %7
%449 = add nsw i32 %448, 5
%450 = sext i32 %449 to i64
%451 = getelementptr inbounds i8, i8* %447, i64 %450
%452 = load i8, i8* %451
%453 = sext i8 %452 to i32
%454 = icmp eq i32 %453, 37
br i1 %454, label %455, label %509
455: ; preds = %446
%456 = load i8*, i8** %4
%457 = load i32, i32* %7
%458 = add nsw i32 %457, 6
%459 = sext i32 %458 to i64
%460 = getelementptr inbounds i8, i8* %456, i64 %459
%461 = load i8, i8* %460
%462 = sext i8 %461 to i32
%463 = icmp eq i32 %462, 53
br i1 %463, label %464, label %509
464: ; preds = %455
%465 = load i8*, i8** %4
%466 = load i32, i32* %7
%467 = add nsw i32 %466, 7
%468 = sext i32 %467 to i64
%469 = getelementptr inbounds i8, i8* %465, i64 %468
%470 = load i8, i8* %469
%471 = sext i8 %470 to i32
%472 = icmp eq i32 %471, 67
br i1 %472, label %473, label %509
473: ; preds = %464
%474 = load i8*, i8** %4
%475 = load i32, i32* %7
%476 = add nsw i32 %475, 8
%477 = sext i32 %476 to i64
%478 = getelementptr inbounds i8, i8* %474, i64 %477
%479 = load i8, i8* %478
%480 = sext i8 %479 to i32
%481 = icmp eq i32 %480, 37
br i1 %481, label %482, label %509
482: ; preds = %473
%483 = load i8*, i8** %4
%484 = load i32, i32* %7
%485 = add nsw i32 %484, 9
%486 = sext i32 %485 to i64
%487 = getelementptr inbounds i8, i8* %483, i64 %486
%488 = load i8, i8* %487
%489 = sext i8 %488 to i32
%490 = icmp eq i32 %489, 53
br i1 %490, label %491, label %509
491: ; preds = %482
%492 = load i8*, i8** %4
%493 = load i32, i32* %7
%494 = add nsw i32 %493, 10
%495 = sext i32 %494 to i64
%496 = getelementptr inbounds i8, i8* %492, i64 %495
%497 = load i8, i8* %496
%498 = sext i8 %497 to i32
%499 = icmp eq i32 %498, 67
br i1 %499, label %500, label %509
500: ; preds = %491
%501 = load i8*, i8** %5
%502 = load i32, i32* %9
%503 = sext i32 %502 to i64
%504 = getelementptr inbounds i8, i8* %501, i64 %503
store i8 92, i8* %504
%505 = load i32, i32* %7
%506 = add nsw i32 %505, 10
store i32 %506, i32* %7
store i32 0, i32* %8
%507 = load i32, i32* %9
%508 = add nsw i32 %507, 1
store i32 %508, i32* %9
br label %629
509: ; preds = %491, %482, %473, %464, %455, %446, %437, %428, %419, %410, %402, %397
%510 = load i8*, i8** %4
%511 = load i32, i32* %7
%512 = sext i32 %511 to i64
%513 = getelementptr inbounds i8, i8* %510, i64 %512
%514 = load i8, i8* %513
store i8 %514, i8* %12
br label %629
515: ; preds = %38
%516 = load i8*, i8** %4
%517 = load i32, i32* %7
%518 = sext i32 %517 to i64
%519 = getelementptr inbounds i8, i8* %516, i64 %518
%520 = load i8, i8* %519
store i8 %520, i8* %13
%521 = load i8, i8* %12
%522 = call signext i8 @toupper(i8 signext %521)
store i8 %522, i8* %10
%523 = load i8, i8* %13
%524 = call signext i8 @toupper(i8 signext %523)
store i8 %524, i8* %11
%525 = load i8, i8* %10
%526 = sext i8 %525 to i32
%527 = icmp sge i32 %526, 48
br i1 %527, label %528, label %532
528: ; preds = %515
%529 = load i8, i8* %10
%530 = sext i8 %529 to i32
%531 = icmp sle i32 %530, 57
br i1 %531, label %540, label %532
532: ; preds = %528, %515
%533 = load i8, i8* %10
%534 = sext i8 %533 to i32
%535 = icmp sge i32 %534, 65
br i1 %535, label %536, label %606
536: ; preds = %532
%537 = load i8, i8* %10
%538 = sext i8 %537 to i32
%539 = icmp sle i32 %538, 90
br i1 %539, label %540, label %606
540: ; preds = %536, %528
%541 = load i8, i8* %11
%542 = sext i8 %541 to i32
%543 = icmp sge i32 %542, 48
br i1 %543, label %544, label %548
544: ; preds = %540
%545 = load i8, i8* %11
%546 = sext i8 %545 to i32
%547 = icmp sle i32 %546, 57
br i1 %547, label %556, label %548
548: ; preds = %544, %540
%549 = load i8, i8* %11
%550 = sext i8 %549 to i32
%551 = icmp sge i32 %550, 65
br i1 %551, label %552, label %606
552: ; preds = %548
%553 = load i8, i8* %11
%554 = sext i8 %553 to i32
%555 = icmp sle i32 %554, 90
br i1 %555, label %556, label %606
556: ; preds = %552, %544
%557 = load i8, i8* %10
%558 = sext i8 %557 to i32
%559 = icmp sge i32 %558, 48
br i1 %559, label %560, label %569
560: ; preds = %556
%561 = load i8, i8* %10
%562 = sext i8 %561 to i32
%563 = icmp sle i32 %562, 57
br i1 %563, label %564, label %569
564: ; preds = %560
%565 = load i8, i8* %10
%566 = sext i8 %565 to i32
%567 = sub nsw i32 %566, 48
%568 = trunc i32 %567 to i8
store i8 %568, i8* %14
br label %575
569: ; preds = %560, %556
%570 = load i8, i8* %10
%571 = sext i8 %570 to i32
%572 = add nsw i32 10, %571
%573 = sub nsw i32 %572, 65
%574 = trunc i32 %573 to i8
store i8 %574, i8* %14
br label %575
575: ; preds = %569, %564
%576 = load i8, i8* %11
%577 = sext i8 %576 to i32
%578 = icmp sge i32 %577, 48
br i1 %578, label %579, label %588
579: ; preds = %575
%580 = load i8, i8* %11
%581 = sext i8 %580 to i32
%582 = icmp sle i32 %581, 57
br i1 %582, label %583, label %588
583: ; preds = %579
%584 = load i8, i8* %11
%585 = sext i8 %584 to i32
%586 = sub nsw i32 %585, 48
%587 = trunc i32 %586 to i8
store i8 %587, i8* %15
br label %594
588: ; preds = %579, %575
%589 = load i8, i8* %11
%590 = sext i8 %589 to i32
%591 = add nsw i32 10, %590
%592 = sub nsw i32 %591, 65
%593 = trunc i32 %592 to i8
store i8 %593, i8* %15
br label %594
594: ; preds = %588, %583
%595 = load i8, i8* %14
%596 = sext i8 %595 to i32
%597 = mul nsw i32 %596, 16
%598 = load i8, i8* %15
%599 = sext i8 %598 to i32
%600 = add nsw i32 %597, %599
%601 = trunc i32 %600 to i8
%602 = load i8*, i8** %5
%603 = load i32, i32* %9
%604 = sext i32 %603 to i64
%605 = getelementptr inbounds i8, i8* %602, i64 %604
store i8 %601, i8* %605
br label %625
606: ; preds = %552, %548, %536, %532
%607 = load i8*, i8** %5
%608 = load i32, i32* %9
%609 = sext i32 %608 to i64
%610 = getelementptr inbounds i8, i8* %607, i64 %609
store i8 37, i8* %610
%611 = load i8, i8* %10
%612 = load i8*, i8** %5
%613 = load i32, i32* %9
%614 = add nsw i32 %613, 1
%615 = sext i32 %614 to i64
%616 = getelementptr inbounds i8, i8* %612, i64 %615
store i8 %611, i8* %616
%617 = load i8, i8* %11
%618 = load i8*, i8** %5
%619 = load i32, i32* %9
%620 = add nsw i32 %619, 2
%621 = sext i32 %620 to i64
%622 = getelementptr inbounds i8, i8* %618, i64 %621
store i8 %617, i8* %622
%623 = load i32, i32* %9
%624 = add nsw i32 %623, 2
store i32 %624, i32* %9
br label %625
625: ; preds = %606, %594
store i32 0, i32* %8
%626 = load i32, i32* %9
%627 = add nsw i32 %626, 1
store i32 %627, i32* %9
br label %629
628: ; preds = %38
br label %629
629: ; preds = %628, %625, %509, %500, %388, %186, %62
br label %630
630: ; preds = %629, %37
%631 = load i32, i32* %7
%632 = add nsw i32 %631, 1
store i32 %632, i32* %7
br label %25
633: ; preds = %25
%634 = load i8*, i8** %5
%635 = load i32, i32* %9
%636 = sext i32 %635 to i64
%637 = getelementptr inbounds i8, i8* %634, i64 %636
store i8 0, i8* %637
%638 = load i32, i32* %9
%639 = load i8*, i8** %5
%640 = call i32 @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str, i64 0, i64 0), i32 %638, i8* %639)
store i32 1, i32* %3
br label %641
641: ; preds = %633, %20
%642 = load i32, i32* %3
ret i32 %642
}

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