#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*/ sprintf(char *, char *, char *);
int strlen(char *);
void format_replace_urls(char *text, char *result) {
  char str[32];
  int i, end, k, length = strlen(text);
  int url_found, ctr = 0;
  for (i = 0; i < length; i++) {
    url_found = 0;
    if ((text[i] == 'h') && (i < length - 5)) {
      if (text[i + 1] == 't') {
        if (text[i + 2] == 't') {
          if (text[i + 3] == 'p') {
            url_found = 1;
          }
        }
      }
    }
    if (url_found != 0) {
      end = i;
      while (end < length) {
        if ((text[end] == ' ') || (text[end] == ',') || (text[end] == 10) ||
            (text[end] == 13)) {
          break;
        }
        end++;
      }
      if ((end < length) && (end > 0)) {
        if (text[end - 1] == '.')
          end--;
      }
      sprintf(str, "%s", "<a href = \"");
      for (k = 0; k < strlen(str); k++) {
        result[ctr++] = str[k];
      }
      for (k = i; k < end; k++) {
        result[ctr++] = text[k];
      }
      result[ctr++] = '"';
      result[ctr++] = '>';
      for (k = i; k < end; k++) {
        result[ctr++] = text[k];
      }
      result[ctr++] = '<';
      result[ctr++] = '/';
      result[ctr++] = 'a';
      result[ctr++] = '>';
      i = end - 1;
    } else {
      result[ctr++] = text[i];
    }
  }
  result[ctr] = 0;
}


x86 assembly (clang, -O0):
<format_replace_urls>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x8(%rbp),%rdi
call   1030 <strlen@plt>
mov    %eax,-0x40(%rbp)
movl   $0x0,-0x48(%rbp)
movl   $0x0,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    -0x40(%rbp),%eax
jge    1452 <format_replace_urls+0x332>
movl   $0x0,-0x44(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x68,%eax
jne    11e7 <format_replace_urls+0xc7>
mov    -0x34(%rbp),%eax
mov    -0x40(%rbp),%ecx
sub    $0x5,%ecx
cmp    %ecx,%eax
jge    11e7 <format_replace_urls+0xc7>
mov    -0x8(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x74,%eax
jne    11e2 <format_replace_urls+0xc2>
mov    -0x8(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x74,%eax
jne    11dd <format_replace_urls+0xbd>
mov    -0x8(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x70,%eax
jne    11d8 <format_replace_urls+0xb8>
movl   $0x1,-0x44(%rbp)
jmp    11dd <format_replace_urls+0xbd>
jmp    11e2 <format_replace_urls+0xc2>
jmp    11e7 <format_replace_urls+0xc7>
cmpl   $0x0,-0x44(%rbp)
je     141f <format_replace_urls+0x2ff>
mov    -0x34(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x38(%rbp),%eax
cmp    -0x40(%rbp),%eax
jge    126a <format_replace_urls+0x14a>
mov    -0x8(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x20,%eax
je     1257 <format_replace_urls+0x137>
mov    -0x8(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2c,%eax
je     1257 <format_replace_urls+0x137>
mov    -0x8(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xa,%eax
je     1257 <format_replace_urls+0x137>
mov    -0x8(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xd,%eax
jne    125c <format_replace_urls+0x13c>
jmp    126a <format_replace_urls+0x14a>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    11f7 <format_replace_urls+0xd7>
mov    -0x38(%rbp),%eax
cmp    -0x40(%rbp),%eax
jge    12a8 <format_replace_urls+0x188>
cmpl   $0x0,-0x38(%rbp)
jle    12a8 <format_replace_urls+0x188>
mov    -0x8(%rbp),%rax
mov    -0x38(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2e,%eax
jne    12a3 <format_replace_urls+0x183>
mov    -0x38(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x38(%rbp)
jmp    12a8 <format_replace_urls+0x188>
lea    -0x30(%rbp),%rdi
lea    0xd4d(%rip),%rsi
lea    0xd49(%rip),%rdx
call   1040 <sprintf@plt>
movl   $0x0,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
mov    %eax,-0x4c(%rbp)
lea    -0x30(%rbp),%rdi
call   1030 <strlen@plt>
mov    %eax,%ecx
mov    -0x4c(%rbp),%eax
cmp    %ecx,%eax
jge    130d <format_replace_urls+0x1ed>
movslq -0x3c(%rbp),%rax
mov    -0x30(%rbp,%rax,1),%dl
mov    -0x10(%rbp),%rax
mov    -0x48(%rbp),%ecx
mov    %ecx,%esi
add    $0x1,%esi
mov    %esi,-0x48(%rbp)
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    12c6 <format_replace_urls+0x1a6>
mov    -0x34(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
cmp    -0x38(%rbp),%eax
jge    134d <format_replace_urls+0x22d>
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x10(%rbp),%rax
mov    -0x48(%rbp),%ecx
mov    %ecx,%esi
add    $0x1,%esi
mov    %esi,-0x48(%rbp)
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    1313 <format_replace_urls+0x1f3>
mov    -0x10(%rbp),%rax
mov    -0x48(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x48(%rbp)
movslq %ecx,%rcx
movb   $0x22,(%rax,%rcx,1)
mov    -0x10(%rbp),%rax
mov    -0x48(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x48(%rbp)
movslq %ecx,%rcx
movb   $0x3e,(%rax,%rcx,1)
mov    -0x34(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
cmp    -0x38(%rbp),%eax
jge    13b9 <format_replace_urls+0x299>
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x10(%rbp),%rax
mov    -0x48(%rbp),%ecx
mov    %ecx,%esi
add    $0x1,%esi
mov    %esi,-0x48(%rbp)
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    137f <format_replace_urls+0x25f>
mov    -0x10(%rbp),%rax
mov    -0x48(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x48(%rbp)
movslq %ecx,%rcx
movb   $0x3c,(%rax,%rcx,1)
mov    -0x10(%rbp),%rax
mov    -0x48(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x48(%rbp)
movslq %ecx,%rcx
movb   $0x2f,(%rax,%rcx,1)
mov    -0x10(%rbp),%rax
mov    -0x48(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x48(%rbp)
movslq %ecx,%rcx
movb   $0x61,(%rax,%rcx,1)
mov    -0x10(%rbp),%rax
mov    -0x48(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x48(%rbp)
movslq %ecx,%rcx
movb   $0x3e,(%rax,%rcx,1)
mov    -0x38(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    143f <format_replace_urls+0x31f>
mov    -0x8(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x10(%rbp),%rax
mov    -0x48(%rbp),%ecx
mov    %ecx,%esi
add    $0x1,%esi
mov    %esi,-0x48(%rbp)
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
jmp    1444 <format_replace_urls+0x324>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    114a <format_replace_urls+0x2a>
mov    -0x10(%rbp),%rax
movslq -0x48(%rbp),%rcx
movb   $0x0,(%rax,%rcx,1)
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<format_replace_urls>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x78,%rsp
mov    %rsi,%r14
mov    %rdi,%rbx
call   1030 <strlen@plt>
xor    %ebp,%ebp
test   %eax,%eax
jle    169b <format_replace_urls+0x58b>
mov    %eax,%r15d
lea    -0x5(%r15),%edx
mov    %eax,%r9d
lea    0x1(%rbx),%rax
mov    %rax,0x60(%rsp)
mov    $0x1,%eax
sub    %r15d,%eax
mov    %rax,0x58(%rsp)
lea    0x30(%rbx),%rax
mov    %rax,0x28(%rsp)
lea    0x30(%r14),%rax
mov    %rax,0x20(%rsp)
lea    0x30(%rsp),%rdi
xor    %r12d,%r12d
mov    %rbx,0x10(%rsp)
mov    %r14,0x70(%rsp)
mov    %r15,0x68(%rsp)
mov    %edx,0x1c(%rsp)
mov    %r9,0x8(%rsp)
cs nopw 0x0(%rax,%rax,1)
nop
movslq %r12d,%r13
mov    (%rbx,%r13,1),%al
cmp    $0x68,%al
jne    1240 <format_replace_urls+0x130>
cmp    %edx,%r12d
jge    1240 <format_replace_urls+0x130>
movslq %r12d,%rcx
cmpb   $0x74,0x1(%rcx,%rbx,1)
jne    1240 <format_replace_urls+0x130>
cmpb   $0x74,0x2(%rcx,%rbx,1)
jne    1240 <format_replace_urls+0x130>
cmpb   $0x70,0x3(%rcx,%rbx,1)
jne    1240 <format_replace_urls+0x130>
mov    %r12d,%esi
cmp    %r15d,%r12d
jge    128b <format_replace_urls+0x17b>
mov    0x60(%rsp),%rax
lea    (%rax,%r13,1),%r8
mov    %r12d,%ecx
mov    0x58(%rsp),%rax
mov    %rcx,%r11
lea    (%rax,%rcx,1),%rbx
lea    0x1(%r13),%r10
mov    $0x1,%cl
mov    $0x68,%dl
xor    %eax,%eax
cmp    $0x2c,%dl
ja     1213 <format_replace_urls+0x103>
nopl   0x0(%rax,%rax,1)
movzbl %dl,%edx
movabs $0x100100002400,%rsi
bt     %rdx,%rsi
jb     125c <format_replace_urls+0x14c>
mov    %ebx,%ecx
add    %eax,%ecx
je     1283 <format_replace_urls+0x173>
lea    (%r10,%rax,1),%rcx
cmp    %r9,%rcx
setl   %cl
movzbl (%r8,%rax,1),%edx
add    $0x1,%rax
cmp    $0x2c,%dl
jbe    1200 <format_replace_urls+0xf0>
jmp    1213 <format_replace_urls+0x103>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movslq %ebp,%rcx
mov    %al,(%r14,%rcx,1)
add    $0x1,%ebp
add    $0x1,%r12d
cmp    %r15d,%r12d
jl     1190 <format_replace_urls+0x80>
jmp    1698 <format_replace_urls+0x588>
mov    %r11,%rsi
add    %rax,%rsi
test   %esi,%esi
setg   %dl
test   %dl,%cl
je     1286 <format_replace_urls+0x176>
lea    -0x1(%r12),%ecx
add    %rax,%rcx
mov    %ecx,%eax
mov    0x10(%rsp),%rbx
cmpb   $0x2e,(%rbx,%rax,1)
cmove  %ecx,%esi
jmp    128b <format_replace_urls+0x17b>
mov    %r15d,%esi
mov    0x10(%rsp),%rbx
mov    %rsi,(%rsp)
movabs $0x206665726820613c,%rax
65 66 20
mov    %rax,0x30(%rsp)
movl   $0x22203d,0x38(%rsp)
call   1030 <strlen@plt>
test   %eax,%eax
jle    12f9 <format_replace_urls+0x1e9>
movslq %ebp,%r15
add    %r14,%r15
xor    %r14d,%r14d
lea    0x30(%rsp),%rbx
nopl   (%rax)
movzbl 0x30(%rsp,%r14,1),%eax
mov    %al,(%r15,%r14,1)
add    $0x1,%r14
mov    %rbx,%rdi
call   1030 <strlen@plt>
cltq
cmp    %rax,%r14
jl     12c0 <format_replace_urls+0x1b0>
add    %r14d,%ebp
mov    0x70(%rsp),%r14
mov    0x68(%rsp),%r15
mov    0x8(%rsp),%r9
mov    %rbx,%rdi
mov    0x10(%rsp),%rbx
jmp    1303 <format_replace_urls+0x1f3>
mov    0x8(%rsp),%r9
lea    0x30(%rsp),%rdi
mov    (%rsp),%r10
cmp    %r10d,%r12d
jge    13a9 <format_replace_urls+0x299>
mov    %r10,%rax
movslq %ebp,%r10
movslq %eax,%r11
mov    %r11,%r8
sub    %r13,%r8
cmp    $0x20,%r8
jb     134d <format_replace_urls+0x23d>
lea    (%r14,%r10,1),%rcx
lea    (%rbx,%r11,1),%rdx
cmp    %rdx,%rcx
jae    140d <format_replace_urls+0x2fd>
lea    (%r11,%r10,1),%rcx
sub    %r13,%rcx
add    %r14,%rcx
lea    (%rbx,%r13,1),%rdx
cmp    %rcx,%rdx
jae    140d <format_replace_urls+0x2fd>
mov    %r13,%rdx
mov    %r10,%r9
mov    (%rsp),%r10
mov    %r10d,%edi
sub    %edx,%edi
mov    %rdx,%rbp
not    %rbp
add    %r11,%rbp
and    $0x3,%rdi
je     13bb <format_replace_urls+0x2ab>
lea    (%r14,%r9,1),%rcx
neg    %rdi
xor    %esi,%esi
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movzbl (%rbx,%rdx,1),%eax
mov    %al,(%rcx)
add    $0x1,%rdx
add    $0xffffffffffffffff,%rsi
add    $0x1,%rcx
cmp    %rsi,%rdi
jne    1380 <format_replace_urls+0x270>
sub    %rsi,%r9
lea    -0x1(%r9),%rdi
cmp    $0x3,%rbp
jae    13c5 <format_replace_urls+0x2b5>
jmp    14bc <format_replace_urls+0x3ac>
movslq %ebp,%rdx
movw   $0x3e22,(%r14,%rdx,1)
add    $0x2,%edx
jmp    165c <format_replace_urls+0x54c>
cmp    $0x3,%rbp
jb     14bc <format_replace_urls+0x3ac>
add    $0xffffffffffffffff,%r9
mov    %r9,%rdi
nopl   0x0(%rax)
movzbl (%rbx,%rdx,1),%eax
mov    %al,0x1(%r14,%rdi,1)
movzbl 0x1(%rbx,%rdx,1),%eax
mov    %al,0x2(%r14,%rdi,1)
movzbl 0x2(%rbx,%rdx,1),%eax
mov    %al,0x3(%r14,%rdi,1)
movzbl 0x3(%rbx,%rdx,1),%eax
mov    %al,0x4(%r14,%rdi,1)
add    $0x4,%rdx
add    $0x4,%rdi
cmp    %rdx,%r11
jne    13d0 <format_replace_urls+0x2c0>
lea    0x1(%rdi),%r9
jmp    14bc <format_replace_urls+0x3ac>
mov    %r8,%rdx
and    $0xffffffffffffffe0,%rdx
lea    -0x20(%rdx),%rcx
mov    %rcx,%r9
shr    $0x5,%r9
add    $0x1,%r9
test   %rcx,%rcx
je     15c1 <format_replace_urls+0x4b1>
mov    %r9,%rsi
and    $0xfffffffffffffffe,%rsi
mov    0x28(%rsp),%rax
lea    (%rax,%r13,1),%rcx
mov    0x20(%rsp),%rax
lea    (%rax,%r10,1),%rdi
xor    %ebp,%ebp
nopw   0x0(%rax,%rax,1)
movups -0x30(%rcx,%rbp,1),%xmm0
movups -0x20(%rcx,%rbp,1),%xmm1
movups %xmm0,-0x30(%rdi,%rbp,1)
movups %xmm1,-0x20(%rdi,%rbp,1)
movups -0x10(%rcx,%rbp,1),%xmm0
movups (%rcx,%rbp,1),%xmm1
movups %xmm0,-0x10(%rdi,%rbp,1)
movups %xmm1,(%rdi,%rbp,1)
add    $0x40,%rbp
add    $0xfffffffffffffffe,%rsi
jne    1450 <format_replace_urls+0x340>
test   $0x1,%r9b
je     14a3 <format_replace_urls+0x393>
mov    %rbp,%rcx
add    %r13,%rcx
add    %r10,%rbp
movups (%rbx,%rcx,1),%xmm0
movups 0x10(%rbx,%rcx,1),%xmm1
movups %xmm0,(%r14,%rbp,1)
movups %xmm1,0x10(%r14,%rbp,1)
lea    (%rdx,%r10,1),%r9
cmp    %rdx,%r8
jne    15b9 <format_replace_urls+0x4a9>
lea    (%rdx,%r10,1),%rdi
add    $0xffffffffffffffff,%rdi
mov    (%rsp),%r10
lea    0x2(%r9),%edx
add    $0x2,%edi
movslq %r9d,%rax
movb   $0x22,(%r14,%rax,1)
movslq %edi,%rax
movb   $0x3e,(%r14,%rax,1)
cmp    %r10d,%r12d
jge    15af <format_replace_urls+0x49f>
movslq %edx,%rdx
cmp    $0x20,%r8
jb     15d5 <format_replace_urls+0x4c5>
lea    (%r14,%rdx,1),%rax
lea    (%rbx,%r11,1),%rcx
cmp    %rcx,%rax
jae    150d <format_replace_urls+0x3fd>
lea    (%r11,%rdx,1),%rax
sub    %r13,%rax
add    %r14,%rax
lea    (%rbx,%r13,1),%rcx
cmp    %rax,%rcx
jb     15d5 <format_replace_urls+0x4c5>
mov    %r8,%r9
and    $0xffffffffffffffe0,%r9
lea    -0x20(%r9),%rax
mov    %rax,%r10
shr    $0x5,%r10
add    $0x1,%r10
test   %rax,%rax
je     1687 <format_replace_urls+0x577>
mov    %r10,%rcx
and    $0xfffffffffffffffe,%rcx
mov    0x28(%rsp),%rax
lea    (%rax,%r13,1),%rsi
mov    0x20(%rsp),%rax
lea    (%rax,%rdx,1),%rdi
xor    %ebp,%ebp
nopw   0x0(%rax,%rax,1)
movups -0x30(%rsi,%rbp,1),%xmm0
movups -0x20(%rsi,%rbp,1),%xmm1
movups %xmm0,-0x30(%rdi,%rbp,1)
movups %xmm1,-0x20(%rdi,%rbp,1)
movups -0x10(%rsi,%rbp,1),%xmm0
movups (%rsi,%rbp,1),%xmm1
movups %xmm0,-0x10(%rdi,%rbp,1)
movups %xmm1,(%rdi,%rbp,1)
add    $0x40,%rbp
add    $0xfffffffffffffffe,%rcx
jne    1550 <format_replace_urls+0x440>
test   $0x1,%r10b
je     15a3 <format_replace_urls+0x493>
mov    %rbp,%rax
add    %r13,%rax
add    %rdx,%rbp
movups (%rbx,%rax,1),%xmm0
movups 0x10(%rbx,%rax,1),%xmm1
movups %xmm0,(%r14,%rbp,1)
movups %xmm1,0x10(%r14,%rbp,1)
add    %r9,%rdx
cmp    %r9,%r8
mov    (%rsp),%r10
jne    15d2 <format_replace_urls+0x4c2>
mov    0x8(%rsp),%r9
jmp    1657 <format_replace_urls+0x547>
add    %r13,%rdx
jmp    1353 <format_replace_urls+0x243>
xor    %ebp,%ebp
test   $0x1,%r9b
jne    1486 <format_replace_urls+0x376>
jmp    14a3 <format_replace_urls+0x393>
add    %r9,%r13
mov    %r10d,%esi
sub    %r13d,%esi
mov    %r13,%rcx
not    %rcx
add    %r11,%rcx
and    $0x3,%rsi
je     167a <format_replace_urls+0x56a>
mov    0x8(%rsp),%r9
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movzbl (%rbx,%r13,1),%eax
mov    %al,(%r14,%rdx,1)
add    $0x1,%rdx
add    $0x1,%r13
add    $0xffffffffffffffff,%rsi
jne    1600 <format_replace_urls+0x4f0>
cmp    $0x3,%rcx
jb     1657 <format_replace_urls+0x547>
nopl   (%rax)
movzbl (%rbx,%r13,1),%eax
mov    %al,(%r14,%rdx,1)
movzbl 0x1(%rbx,%r13,1),%eax
mov    %al,0x1(%r14,%rdx,1)
movzbl 0x2(%rbx,%r13,1),%eax
mov    %al,0x2(%r14,%rdx,1)
movzbl 0x3(%rbx,%r13,1),%eax
mov    %al,0x3(%r14,%rdx,1)
add    $0x4,%rdx
add    $0x4,%r13
cmp    %r13,%r11
jne    1620 <format_replace_urls+0x510>
lea    0x30(%rsp),%rdi
movslq %edx,%rbp
movl   $0x3e612f3c,(%r14,%rbp,1)
3e
add    $0x3,%ebp
add    $0xffffffff,%r10d
mov    %r10d,%r12d
mov    0x1c(%rsp),%edx
jmp    1247 <format_replace_urls+0x137>
mov    0x8(%rsp),%r9
cmp    $0x3,%rcx
jae    1620 <format_replace_urls+0x510>
jmp    1657 <format_replace_urls+0x547>
xor    %ebp,%ebp
test   $0x1,%r10b
jne    1586 <format_replace_urls+0x476>
jmp    15a3 <format_replace_urls+0x493>
movslq %ebp,%rbp
movb   $0x0,(%r14,%rbp,1)
add    $0x78,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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