int compress_javascript_chunk(const unsigned char *src, int srclen,
                              unsigned char *dst) {
  const unsigned char *rpos = src;
  unsigned char *wpos = dst;
  int count;
  int dstlen = 0;
  unsigned char previous_char = '\0';
  unsigned char previous_char2 = '\0';
  unsigned char close_quote_char;
  int break_loop;
  count = srclen;
  while (count) {
    if (*rpos == '\n') {
      if (!((*(rpos + 1) == '-') && (count >= 4))) {
        if (previous_char == ' ') {
          wpos--;
          dstlen--;
          previous_char = previous_char2;
          previous_char2 = '\0';
        }
        if ((previous_char != '\0') && (previous_char != '\n') &&
            (previous_char != ';') && (previous_char != ':') &&
            (previous_char != '{') && (previous_char != '}')) {
          *(wpos++) = '\n';
          dstlen++;
        }
        rpos++;
        count--;
      } else {
        if (!custom_strncmp(rpos, "\n-->", 4)) {
          strncpy_overlapping(rpos, wpos, 4);
          rpos += 4;
          wpos += 4;
          count -= 4;
          dstlen += 4;
        } else {
          if (previous_char == ' ') {
            wpos--;
            dstlen--;
            previous_char = previous_char2;
            previous_char2 = '\0';
          }
          if ((previous_char != '\0') && (previous_char != '\n') &&
              (previous_char != ';') && (previous_char != ':') &&
              (previous_char != '{') && (previous_char != '}')) {
            *(wpos++) = '\n';
            dstlen++;
          }
          rpos++;
          count--;
        }
      }
    } else if ((*rpos == '{') || (*rpos == '}')) {
      if ((previous_char == ' ') || (previous_char == '\n')) {
        wpos--;
        dstlen--;
      }
      dstlen++;
      *(wpos++) = *(rpos++);
      count--;
    } else if (*rpos <= ' ') {
      if ((previous_char != ' ') && (previous_char != '\n')) {
        *(wpos++) = ' ';
        dstlen++;
      }
      rpos++;
      count--;
    } else if (*rpos == '\\') {
      *(wpos++) = *(rpos++);
      count--;
      dstlen++;
      if (count) {
        if (*rpos == ' ')
          *(wpos++) = '\t';
        else
          *(wpos++) = *(rpos++);
        count--;
        dstlen++;
      }
    } else if (*rpos == '/') {
      if (count >= 2) {
        if (*(rpos + 1) == '(') {
          *(wpos++) = *(rpos++);
          *(wpos++) = *(rpos++);
          count -= 2;
          dstlen += 2;
          while ((count) && (*rpos != ')')) {
            *(wpos++) = *(rpos++);
            count--;
            dstlen++;
          }
          *(wpos++) = *(rpos++);
          count--;
          dstlen++;
        } else if (*(rpos + 1) == '*') {
          rpos += 2;
          count -= 2;
          while ((count >= 2) && ((*rpos != '*') || (*(rpos + 1) != '/'))) {
            rpos++;
            count--;
          }
          if (count) {
            rpos++;
            count--;
          }
          if (count) {
            rpos++;
            count--;
          }
        } else if (*(rpos + 1) == '/') {
          int done_proc_comment = 0;
          if (previous_char == ' ') {
            wpos--;
            dstlen--;
            previous_char = previous_char2;
            previous_char2 = '\0';
          }
          if (count >= 11) {
            if (is_str_present_in_ss_comment(rpos, count, "<![CDATA[", 9)) {
              strncpy_overlapping("//<![CDATA[\n", wpos, 12);
              wpos += 12;
              dstlen += 12;
              done_proc_comment = 1;
            }
          }
          if ((done_proc_comment == 0) && (count >= 5)) {
            if (is_str_present_in_ss_comment(rpos, count, "-->", 3)) {
              strncpy_overlapping("//-->", wpos, 5);
              wpos += 5;
              dstlen += 5;
            } else if (is_str_present_in_ss_comment(rpos, count, "]]>", 3)) {
              strncpy_overlapping("//]]>\n", wpos, 6);
              wpos += 6;
              dstlen += 6;
            }
          }
          while (count && (*rpos != '\n')) {
            rpos++;
            count--;
          }
        } else {
          *(wpos++) = *(rpos++);
          dstlen++;
          count--;
        }
      } else {
        *(wpos++) = *(rpos++);
        dstlen++;
        count--;
      }
    } else if ((*rpos == '"') || (*rpos == '\'') || (*rpos == '[')) {
      if (previous_char == ' ') {
        wpos--;
        dstlen--;
      }
      switch (*rpos) {
      case '"':
      case '\'':
        close_quote_char = *rpos;
        break;
      case '[':
        close_quote_char = ']';
        break;
      }
      *(wpos++) = *(rpos++);
      dstlen++;
      count--;
      break_loop = 0;
      while ((count) && (!break_loop)) {
        if (*rpos == '\\') {
          *(wpos++) = *(rpos++);
          dstlen++;
          count--;
          if (count) {
            *(wpos++) = *(rpos++);
            dstlen++;
            count--;
          }
        } else if (*rpos == close_quote_char) {
          *(wpos++) = *(rpos++);
          dstlen++;
          count--;
          break_loop = 1;
        } else {
          *(wpos++) = *(rpos++);
          dstlen++;
          count--;
        }
      }
    } else {
      if (previous_char == ' ') {
        if (javascript_concatenable(&previous_char2) ||
            javascript_concatenable(rpos)) {
          previous_char = previous_char2;
          previous_char2 = '\0';
          wpos--;
          dstlen--;
        }
      }
      *(wpos++) = *(rpos++);
      dstlen++;
      count--;
    }
    if (dstlen)
      previous_char = *(wpos - 1);
    else
      previous_char = '\0';
    if (dstlen >= 2)
      previous_char2 = *(wpos - 2);
    else
      previous_char2 = '\0';
  }
  return (dstlen);
}


x86 assembly (clang, -O0):
<compress_javascript_chunk>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %rdx,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x28(%rbp)
movl   $0x0,-0x30(%rbp)
movb   $0x0,-0x31(%rbp)
movb   $0x0,-0x32(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x2c(%rbp)
cmpl   $0x0,-0x2c(%rbp)
je     1c37 <compress_javascript_chunk+0xaf7>
mov    -0x20(%rbp),%rax
movzbl (%rax),%eax
cmp    $0xa,%eax
jne    1373 <compress_javascript_chunk+0x233>
mov    -0x20(%rbp),%rax
movzbl 0x1(%rax),%eax
cmp    $0x2d,%eax
jne    11ad <compress_javascript_chunk+0x6d>
cmpl   $0x4,-0x2c(%rbp)
jge    125c <compress_javascript_chunk+0x11c>
movzbl -0x31(%rbp),%eax
cmp    $0x20,%eax
jne    11d9 <compress_javascript_chunk+0x99>
mov    -0x28(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x28(%rbp)
mov    -0x30(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x30(%rbp)
mov    -0x32(%rbp),%al
mov    %al,-0x31(%rbp)
movb   $0x0,-0x32(%rbp)
movzbl -0x31(%rbp),%eax
cmp    $0x0,%eax
je     1242 <compress_javascript_chunk+0x102>
movzbl -0x31(%rbp),%eax
cmp    $0xa,%eax
je     1242 <compress_javascript_chunk+0x102>
movzbl -0x31(%rbp),%eax
cmp    $0x3b,%eax
je     1242 <compress_javascript_chunk+0x102>
movzbl -0x31(%rbp),%eax
cmp    $0x3a,%eax
je     1242 <compress_javascript_chunk+0x102>
movzbl -0x31(%rbp),%eax
cmp    $0x7b,%eax
je     1242 <compress_javascript_chunk+0x102>
movzbl -0x31(%rbp),%eax
cmp    $0x7d,%eax
je     1242 <compress_javascript_chunk+0x102>
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
movb   $0xa,(%rax)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
jmp    136e <compress_javascript_chunk+0x22e>
mov    -0x20(%rbp),%rdi
lea    0xd99(%rip),%rsi
mov    $0x4,%edx
mov    $0x0,%al
call   1050 <custom_strncmp@plt>
cmp    $0x0,%eax
jne    12bf <compress_javascript_chunk+0x17f>
mov    -0x20(%rbp),%rdi
mov    -0x28(%rbp),%rsi
mov    $0x4,%edx
mov    $0x0,%al
call   1040 <strncpy_overlapping@plt>
mov    -0x20(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x20(%rbp)
mov    -0x28(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x28(%rbp)
mov    -0x2c(%rbp),%eax
sub    $0x4,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x30(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x30(%rbp)
jmp    1369 <compress_javascript_chunk+0x229>
movzbl -0x31(%rbp),%eax
cmp    $0x20,%eax
jne    12eb <compress_javascript_chunk+0x1ab>
mov    -0x28(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x28(%rbp)
mov    -0x30(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x30(%rbp)
mov    -0x32(%rbp),%al
mov    %al,-0x31(%rbp)
movb   $0x0,-0x32(%rbp)
movzbl -0x31(%rbp),%eax
cmp    $0x0,%eax
je     1354 <compress_javascript_chunk+0x214>
movzbl -0x31(%rbp),%eax
cmp    $0xa,%eax
je     1354 <compress_javascript_chunk+0x214>
movzbl -0x31(%rbp),%eax
cmp    $0x3b,%eax
je     1354 <compress_javascript_chunk+0x214>
movzbl -0x31(%rbp),%eax
cmp    $0x3a,%eax
je     1354 <compress_javascript_chunk+0x214>
movzbl -0x31(%rbp),%eax
cmp    $0x7b,%eax
je     1354 <compress_javascript_chunk+0x214>
movzbl -0x31(%rbp),%eax
cmp    $0x7d,%eax
je     1354 <compress_javascript_chunk+0x214>
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
movb   $0xa,(%rax)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
jmp    136e <compress_javascript_chunk+0x22e>
jmp    1bf8 <compress_javascript_chunk+0xab8>
mov    -0x20(%rbp),%rax
movzbl (%rax),%eax
cmp    $0x7b,%eax
je     1393 <compress_javascript_chunk+0x253>
mov    -0x20(%rbp),%rax
movzbl (%rax),%eax
cmp    $0x7d,%eax
jne    13fb <compress_javascript_chunk+0x2bb>
movzbl -0x31(%rbp),%eax
cmp    $0x20,%eax
je     13ad <compress_javascript_chunk+0x26d>
movzbl -0x31(%rbp),%eax
cmp    $0xa,%eax
jne    13c2 <compress_javascript_chunk+0x282>
mov    -0x28(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x28(%rbp)
mov    -0x30(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x30(%rbp)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
jmp    1bf3 <compress_javascript_chunk+0xab3>
mov    -0x20(%rbp),%rax
movzbl (%rax),%eax
cmp    $0x20,%eax
jg     145a <compress_javascript_chunk+0x31a>
movzbl -0x31(%rbp),%eax
cmp    $0x20,%eax
je     1440 <compress_javascript_chunk+0x300>
movzbl -0x31(%rbp),%eax
cmp    $0xa,%eax
je     1440 <compress_javascript_chunk+0x300>
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
movb   $0x20,(%rax)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
jmp    1bee <compress_javascript_chunk+0xaae>
mov    -0x20(%rbp),%rax
movzbl (%rax),%eax
cmp    $0x5c,%eax
jne    1508 <compress_javascript_chunk+0x3c8>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
cmpl   $0x0,-0x2c(%rbp)
je     1503 <compress_javascript_chunk+0x3c3>
mov    -0x20(%rbp),%rax
movzbl (%rax),%eax
cmp    $0x20,%eax
jne    14cf <compress_javascript_chunk+0x38f>
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
movb   $0x9,(%rax)
jmp    14f1 <compress_javascript_chunk+0x3b1>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    1be9 <compress_javascript_chunk+0xaa9>
mov    -0x20(%rbp),%rax
movzbl (%rax),%eax
cmp    $0x2f,%eax
jne    1931 <compress_javascript_chunk+0x7f1>
cmpl   $0x2,-0x2c(%rbp)
jl     18f8 <compress_javascript_chunk+0x7b8>
mov    -0x20(%rbp),%rax
movzbl 0x1(%rax),%eax
cmp    $0x28,%eax
jne    162a <compress_javascript_chunk+0x4ea>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x2c(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x30(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x30(%rbp)
xor    %eax,%eax
cmpl   $0x0,-0x2c(%rbp)
mov    %al,-0x3d(%rbp)
je     15a8 <compress_javascript_chunk+0x468>
mov    -0x20(%rbp),%rax
movzbl (%rax),%eax
cmp    $0x29,%eax
setne  %al
mov    %al,-0x3d(%rbp)
mov    -0x3d(%rbp),%al
test   $0x1,%al
jne    15b8 <compress_javascript_chunk+0x478>
jmp    15f1 <compress_javascript_chunk+0x4b1>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    1589 <compress_javascript_chunk+0x449>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    18f3 <compress_javascript_chunk+0x7b3>
mov    -0x20(%rbp),%rax
movzbl 0x1(%rax),%eax
cmp    $0x2a,%eax
jne    16f8 <compress_javascript_chunk+0x5b8>
mov    -0x20(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x20(%rbp)
mov    -0x2c(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x2c(%rbp)
xor    %eax,%eax
cmpl   $0x2,-0x2c(%rbp)
mov    %al,-0x3e(%rbp)
jl     168b <compress_javascript_chunk+0x54b>
mov    -0x20(%rbp),%rax
movzbl (%rax),%ecx
mov    $0x1,%al
cmp    $0x2a,%ecx
mov    %al,-0x3f(%rbp)
jne    1685 <compress_javascript_chunk+0x545>
mov    -0x20(%rbp),%rax
movzbl 0x1(%rax),%eax
cmp    $0x2f,%eax
setne  %al
mov    %al,-0x3f(%rbp)
mov    -0x3f(%rbp),%al
mov    %al,-0x3e(%rbp)
mov    -0x3e(%rbp),%al
test   $0x1,%al
jne    169b <compress_javascript_chunk+0x55b>
jmp    16b5 <compress_javascript_chunk+0x575>
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
jmp    1650 <compress_javascript_chunk+0x510>
cmpl   $0x0,-0x2c(%rbp)
je     16d4 <compress_javascript_chunk+0x594>
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
cmpl   $0x0,-0x2c(%rbp)
je     16f3 <compress_javascript_chunk+0x5b3>
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
jmp    18ee <compress_javascript_chunk+0x7ae>
mov    -0x20(%rbp),%rax
movzbl 0x1(%rax),%eax
cmp    $0x2f,%eax
jne    18b5 <compress_javascript_chunk+0x775>
movl   $0x0,-0x3c(%rbp)
movzbl -0x31(%rbp),%eax
cmp    $0x20,%eax
jne    173c <compress_javascript_chunk+0x5fc>
mov    -0x28(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x28(%rbp)
mov    -0x30(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x30(%rbp)
mov    -0x32(%rbp),%al
mov    %al,-0x31(%rbp)
movb   $0x0,-0x32(%rbp)
cmpl   $0xb,-0x2c(%rbp)
jl     17a1 <compress_javascript_chunk+0x661>
mov    -0x20(%rbp),%rdi
mov    -0x2c(%rbp),%esi
lea    0x8b1(%rip),%rdx
mov    $0x9,%ecx
mov    $0x0,%al
call   1060 <is_str_present_in_ss_comment@plt>
cmp    $0x0,%eax
je     179c <compress_javascript_chunk+0x65c>
mov    -0x28(%rbp),%rsi
lea    0x89b(%rip),%rdi
mov    $0xc,%edx
mov    $0x0,%al
call   1040 <strncpy_overlapping@plt>
mov    -0x28(%rbp),%rax
add    $0xc,%rax
mov    %rax,-0x28(%rbp)
mov    -0x30(%rbp),%eax
add    $0xc,%eax
mov    %eax,-0x30(%rbp)
movl   $0x1,-0x3c(%rbp)
jmp    17a1 <compress_javascript_chunk+0x661>
cmpl   $0x0,-0x3c(%rbp)
jne    1862 <compress_javascript_chunk+0x722>
cmpl   $0x5,-0x2c(%rbp)
jl     1862 <compress_javascript_chunk+0x722>
mov    -0x20(%rbp),%rdi
mov    -0x2c(%rbp),%esi
lea    0x83e(%rip),%rdx
mov    $0x3,%ecx
mov    $0x0,%al
call   1060 <is_str_present_in_ss_comment@plt>
cmp    $0x0,%eax
je     1809 <compress_javascript_chunk+0x6c9>
mov    -0x28(%rbp),%rsi
lea    0x839(%rip),%rdi
mov    $0x5,%edx
mov    $0x0,%al
call   1040 <strncpy_overlapping@plt>
mov    -0x28(%rbp),%rax
add    $0x5,%rax
mov    %rax,-0x28(%rbp)
mov    -0x30(%rbp),%eax
add    $0x5,%eax
mov    %eax,-0x30(%rbp)
jmp    185d <compress_javascript_chunk+0x71d>
mov    -0x20(%rbp),%rdi
mov    -0x2c(%rbp),%esi
lea    0x80b(%rip),%rdx
mov    $0x3,%ecx
mov    $0x0,%al
call   1060 <is_str_present_in_ss_comment@plt>
cmp    $0x0,%eax
je     1858 <compress_javascript_chunk+0x718>
mov    -0x28(%rbp),%rsi
lea    0x7ef(%rip),%rdi
mov    $0x6,%edx
mov    $0x0,%al
call   1040 <strncpy_overlapping@plt>
mov    -0x28(%rbp),%rax
add    $0x6,%rax
mov    %rax,-0x28(%rbp)
mov    -0x30(%rbp),%eax
add    $0x6,%eax
mov    %eax,-0x30(%rbp)
jmp    185d <compress_javascript_chunk+0x71d>
jmp    1862 <compress_javascript_chunk+0x722>
jmp    1867 <compress_javascript_chunk+0x727>
xor    %eax,%eax
cmpl   $0x0,-0x2c(%rbp)
mov    %al,-0x40(%rbp)
je     1886 <compress_javascript_chunk+0x746>
mov    -0x20(%rbp),%rax
movzbl (%rax),%eax
cmp    $0xa,%eax
setne  %al
mov    %al,-0x40(%rbp)
mov    -0x40(%rbp),%al
test   $0x1,%al
jne    1896 <compress_javascript_chunk+0x756>
jmp    18b0 <compress_javascript_chunk+0x770>
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
jmp    1867 <compress_javascript_chunk+0x727>
jmp    18e9 <compress_javascript_chunk+0x7a9>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
jmp    18ee <compress_javascript_chunk+0x7ae>
jmp    18f3 <compress_javascript_chunk+0x7b3>
jmp    192c <compress_javascript_chunk+0x7ec>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
jmp    1be4 <compress_javascript_chunk+0xaa4>
mov    -0x20(%rbp),%rax
movzbl (%rax),%eax
cmp    $0x22,%eax
je     1961 <compress_javascript_chunk+0x821>
mov    -0x20(%rbp),%rax
movzbl (%rax),%eax
cmp    $0x27,%eax
je     1961 <compress_javascript_chunk+0x821>
mov    -0x20(%rbp),%rax
movzbl (%rax),%eax
cmp    $0x5b,%eax
jne    1b52 <compress_javascript_chunk+0xa12>
movzbl -0x31(%rbp),%eax
cmp    $0x20,%eax
jne    1983 <compress_javascript_chunk+0x843>
mov    -0x28(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x28(%rbp)
mov    -0x30(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x30(%rbp)
mov    -0x20(%rbp),%rax
movzbl (%rax),%eax
mov    %eax,-0x44(%rbp)
sub    $0x22,%eax
je     19bd <compress_javascript_chunk+0x87d>
jmp    199b <compress_javascript_chunk+0x85b>
mov    -0x44(%rbp),%eax
sub    $0x27,%eax
je     19bd <compress_javascript_chunk+0x87d>
jmp    19ac <compress_javascript_chunk+0x86c>
mov    -0x44(%rbp),%eax
sub    $0x5b,%eax
je     19cb <compress_javascript_chunk+0x88b>
jmp    19cf <compress_javascript_chunk+0x88f>
mov    -0x20(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x33(%rbp)
jmp    19cf <compress_javascript_chunk+0x88f>
movb   $0x5d,-0x33(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
movl   $0x0,-0x38(%rbp)
xor    %eax,%eax
cmpl   $0x0,-0x2c(%rbp)
mov    %al,-0x45(%rbp)
je     1a25 <compress_javascript_chunk+0x8e5>
cmpl   $0x0,-0x38(%rbp)
setne  %al
xor    $0xff,%al
mov    %al,-0x45(%rbp)
mov    -0x45(%rbp),%al
test   $0x1,%al
jne    1a35 <compress_javascript_chunk+0x8f5>
jmp    1b4d <compress_javascript_chunk+0xa0d>
mov    -0x20(%rbp),%rax
movzbl (%rax),%eax
cmp    $0x5c,%eax
jne    1abc <compress_javascript_chunk+0x97c>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
cmpl   $0x0,-0x2c(%rbp)
je     1ab7 <compress_javascript_chunk+0x977>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
jmp    1b48 <compress_javascript_chunk+0xa08>
mov    -0x20(%rbp),%rax
movzbl (%rax),%eax
movzbl -0x33(%rbp),%ecx
cmp    %ecx,%eax
jne    1b0f <compress_javascript_chunk+0x9cf>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
movl   $0x1,-0x38(%rbp)
jmp    1b43 <compress_javascript_chunk+0xa03>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
jmp    1b48 <compress_javascript_chunk+0xa08>
jmp    1a0a <compress_javascript_chunk+0x8ca>
jmp    1bdf <compress_javascript_chunk+0xa9f>
movzbl -0x31(%rbp),%eax
cmp    $0x20,%eax
jne    1bab <compress_javascript_chunk+0xa6b>
lea    -0x32(%rbp),%rdi
mov    $0x0,%al
call   1030 <javascript_concatenable@plt>
cmp    $0x0,%eax
jne    1b87 <compress_javascript_chunk+0xa47>
mov    -0x20(%rbp),%rdi
mov    $0x0,%al
call   1030 <javascript_concatenable@plt>
cmp    $0x0,%eax
je     1ba6 <compress_javascript_chunk+0xa66>
mov    -0x32(%rbp),%al
mov    %al,-0x31(%rbp)
movb   $0x0,-0x32(%rbp)
mov    -0x28(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x28(%rbp)
mov    -0x30(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x30(%rbp)
jmp    1bab <compress_javascript_chunk+0xa6b>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
jmp    1be4 <compress_javascript_chunk+0xaa4>
jmp    1be9 <compress_javascript_chunk+0xaa9>
jmp    1bee <compress_javascript_chunk+0xaae>
jmp    1bf3 <compress_javascript_chunk+0xab3>
jmp    1bf8 <compress_javascript_chunk+0xab8>
cmpl   $0x0,-0x30(%rbp)
je     1c11 <compress_javascript_chunk+0xad1>
mov    -0x28(%rbp),%rax
mov    -0x1(%rax),%al
mov    %al,-0x31(%rbp)
jmp    1c15 <compress_javascript_chunk+0xad5>
movb   $0x0,-0x31(%rbp)
cmpl   $0x2,-0x30(%rbp)
jl     1c2e <compress_javascript_chunk+0xaee>
mov    -0x28(%rbp),%rax
mov    -0x2(%rax),%al
mov    %al,-0x32(%rbp)
jmp    1c32 <compress_javascript_chunk+0xaf2>
movb   $0x0,-0x32(%rbp)
jmp    1178 <compress_javascript_chunk+0x38>
mov    -0x30(%rbp),%eax
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<compress_javascript_chunk>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
movb   $0x0,0x6(%rsp)
test   %esi,%esi
je     16db <compress_javascript_chunk+0x59b>
mov    %rdx,%rbx
mov    %esi,%ebp
mov    %rdi,%r15
xor    %r14d,%r14d
xor    %r13d,%r13d
xor    %eax,%eax
jmp    1181 <compress_javascript_chunk+0x41>
nopw   0x0(%rax,%rax,1)
xor    %r14d,%r14d
xor    %eax,%eax
mov    %al,0x6(%rsp)
test   %ebp,%ebp
je     16de <compress_javascript_chunk+0x59e>
mov    %r15,%r12
mov    (%r15),%cl
cmp    $0x7d,%cl
je     1230 <compress_javascript_chunk+0xf0>
cmp    $0x7b,%cl
je     1230 <compress_javascript_chunk+0xf0>
cmp    $0xa,%cl
jne    1260 <compress_javascript_chunk+0x120>
lea    0x1(%r12),%r15
cmpb   $0x2d,0x1(%r12)
jne    128b <compress_javascript_chunk+0x14b>
cmp    $0x3,%ebp
jle    128b <compress_javascript_chunk+0x14b>
mov    %r12,%rdi
lea    0xe3a(%rip),%rsi
mov    $0x4,%edx
xor    %eax,%eax
call   1050 <custom_strncmp@plt>
test   %eax,%eax
je     134e <compress_javascript_chunk+0x20e>
cmp    $0x20,%r14b
jne    11f2 <compress_javascript_chunk+0xb2>
add    $0xffffffffffffffff,%rbx
add    $0xffffffff,%r13d
mov    0x6(%rsp),%r14b
movb   $0x0,0x6(%rsp)
cmp    $0x3b,%r14b
ja     1210 <compress_javascript_chunk+0xd0>
movzbl %r14b,%eax
movabs $0xc00000000000401,%rcx
bt     %rax,%rcx
jb     1302 <compress_javascript_chunk+0x1c2>
cmp    $0x7b,%r14b
je     1302 <compress_javascript_chunk+0x1c2>
cmp    $0x7d,%r14b
je     1302 <compress_javascript_chunk+0x1c2>
jmp    1374 <compress_javascript_chunk+0x234>
nopl   0x0(%rax)
cmp    $0x20,%r14b
je     123c <compress_javascript_chunk+0xfc>
cmp    $0xa,%r14b
jne    1244 <compress_javascript_chunk+0x104>
add    $0xffffffffffffffff,%rbx
add    $0xffffffff,%r13d
add    $0x1,%r13d
add    $0x1,%r12
mov    %cl,(%rbx)
add    $0x1,%rbx
jmp    1280 <compress_javascript_chunk+0x140>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
cmp    $0x20,%cl
ja     12a4 <compress_javascript_chunk+0x164>
cmp    $0xa,%r14b
je     127c <compress_javascript_chunk+0x13c>
cmp    $0x20,%r14b
je     127c <compress_javascript_chunk+0x13c>
movb   $0x20,(%rbx)
add    $0x1,%rbx
add    $0x1,%r13d
add    $0x1,%r12
add    $0xffffffff,%ebp
mov    %r12,%r15
jmp    1520 <compress_javascript_chunk+0x3e0>
cmp    $0x20,%r14b
jne    12e0 <compress_javascript_chunk+0x1a0>
add    $0xffffffffffffffff,%rbx
add    $0xffffffff,%r13d
movb   $0x0,0x6(%rsp)
cmp    $0x3b,%al
jbe    12e7 <compress_javascript_chunk+0x1a7>
jmp    12fa <compress_javascript_chunk+0x1ba>
cmp    $0x2e,%cl
jle    130a <compress_javascript_chunk+0x1ca>
cmp    $0x2f,%cl
je     137c <compress_javascript_chunk+0x23c>
cmp    $0x5b,%cl
je     1318 <compress_javascript_chunk+0x1d8>
cmp    $0x5c,%cl
jne    13f7 <compress_javascript_chunk+0x2b7>
lea    0x1(%r12),%r15
movb   $0x5c,(%rbx)
cmp    $0x1,%ebp
jne    14ca <compress_javascript_chunk+0x38a>
add    $0x1,%rbx
add    $0x1,%r13d
xor    %ebp,%ebp
jmp    1520 <compress_javascript_chunk+0x3e0>
mov    %r14d,%eax
cmp    $0x3b,%al
ja     12fa <compress_javascript_chunk+0x1ba>
movzbl %al,%ecx
movabs $0xc00000000000401,%rdx
bt     %rcx,%rdx
jb     1302 <compress_javascript_chunk+0x1c2>
cmp    $0x7b,%al
je     1302 <compress_javascript_chunk+0x1c2>
cmp    $0x7d,%al
jne    1374 <compress_javascript_chunk+0x234>
add    $0xffffffff,%ebp
jmp    1520 <compress_javascript_chunk+0x3e0>
cmp    $0x22,%cl
je     1318 <compress_javascript_chunk+0x1d8>
cmp    $0x27,%cl
jne    13f7 <compress_javascript_chunk+0x2b7>
xor    %edx,%edx
cmp    $0x20,%r14b
sete   %dl
sub    %rdx,%rbx
neg    %edx
mov    %ecx,%eax
cmp    $0x22,%cl
je     1441 <compress_javascript_chunk+0x301>
cmp    $0x5b,%cl
je     143f <compress_javascript_chunk+0x2ff>
mov    0x7(%rsp),%al
cmp    $0x27,%cl
jne    1441 <compress_javascript_chunk+0x301>
mov    %ecx,%eax
jmp    1441 <compress_javascript_chunk+0x301>
mov    %r12,%rdi
mov    %rbx,%rsi
mov    $0x4,%edx
xor    %eax,%eax
call   1040 <strncpy_overlapping@plt>
add    $0x4,%r12
add    $0x4,%rbx
add    $0xfffffffc,%ebp
add    $0x4,%r13d
jmp    1283 <compress_javascript_chunk+0x143>
movb   $0xa,(%rbx)
jmp    14bd <compress_javascript_chunk+0x37d>
lea    0x1(%r12),%r15
cmp    $0x2,%ebp
jl     14ba <compress_javascript_chunk+0x37a>
mov    (%r15),%al
cmp    $0x2f,%al
je     153f <compress_javascript_chunk+0x3ff>
cmp    $0x2a,%al
je     159a <compress_javascript_chunk+0x45a>
cmp    $0x28,%al
jne    14ba <compress_javascript_chunk+0x37a>
movb   $0x2f,(%rbx)
mov    0x1(%r12),%al
add    $0x2,%r12
mov    %al,0x1(%rbx)
add    $0x2,%rbx
lea    0x2(%r13),%r8d
xor    %eax,%eax
mov    %ebp,%edx
add    $0xfffffffe,%edx
je     1656 <compress_javascript_chunk+0x516>
add    %r13d,%ebp
mov    %edx,%edi
xor    %esi,%esi
movzbl (%r12,%rsi,1),%ecx
cmp    $0x29,%cl
je     164b <compress_javascript_chunk+0x50b>
mov    %cl,(%rbx,%rsi,1)
add    $0xffffffff,%edx
add    $0x1,%rsi
cmp    %esi,%edi
jne    13d0 <compress_javascript_chunk+0x290>
add    %rsi,%rbx
add    %rsi,%r12
jmp    1659 <compress_javascript_chunk+0x519>
cmp    $0x20,%r14b
jne    1428 <compress_javascript_chunk+0x2e8>
lea    0x6(%rsp),%rdi
xor    %eax,%eax
call   1030 <javascript_concatenable@plt>
test   %eax,%eax
jne    141b <compress_javascript_chunk+0x2db>
mov    %r12,%rdi
xor    %eax,%eax
call   1030 <javascript_concatenable@plt>
test   %eax,%eax
je     1428 <compress_javascript_chunk+0x2e8>
movb   $0x0,0x6(%rsp)
add    $0xffffffffffffffff,%rbx
add    $0xffffffff,%r13d
mov    (%r12),%al
add    $0x1,%r12
mov    %al,(%rbx)
add    $0x1,%rbx
add    $0x1,%r13d
jmp    1280 <compress_javascript_chunk+0x140>
mov    $0x5d,%al
add    $0x1,%r12
mov    %cl,(%rbx)
add    $0x1,%rbx
add    %edx,%r13d
add    $0x1,%r13d
add    $0xffffffff,%ebp
jne    1486 <compress_javascript_chunk+0x346>
jmp    150f <compress_javascript_chunk+0x3cf>
nopl   0x0(%rax)
add    $0x1,%r12
lea    0x1(%rbx),%rdx
cmp    %al,%cl
je     14f2 <compress_javascript_chunk+0x3b2>
mov    %cl,(%rbx)
mov    $0xffffffff,%ecx
mov    $0x1,%esi
mov    %rdx,%rbx
add    %esi,%r13d
add    %ecx,%ebp
je     14b5 <compress_javascript_chunk+0x375>
movzbl (%r12),%ecx
cmp    $0x5c,%cl
jne    1460 <compress_javascript_chunk+0x320>
movb   $0x5c,(%rbx)
cmp    $0x1,%ebp
je     1503 <compress_javascript_chunk+0x3c3>
movzbl 0x1(%r12),%ecx
add    $0x2,%r12
mov    %cl,0x1(%rbx)
add    $0x2,%rbx
mov    $0xfffffffe,%ecx
mov    $0x2,%esi
jmp    147f <compress_javascript_chunk+0x33f>
mov    %r12,%r15
jmp    1514 <compress_javascript_chunk+0x3d4>
movb   $0x2f,(%rbx)
add    $0x1,%rbx
add    $0x1,%r13d
add    $0xffffffff,%ebp
jmp    1520 <compress_javascript_chunk+0x3e0>
movzbl 0x1(%r12),%eax
add    $0x2,%r12
cmp    $0x20,%al
mov    $0x9,%ecx
cmove  %ecx,%eax
cmovne %r12,%r15
mov    %al,0x1(%rbx)
add    $0x2,%rbx
add    $0xfffffffe,%ebp
add    $0x2,%r13d
jmp    1520 <compress_javascript_chunk+0x3e0>
mov    %al,(%rbx)
add    $0x1,%r13d
add    $0xffffffff,%ebp
mov    %r12,%r15
mov    %rdx,%rbx
jmp    1514 <compress_javascript_chunk+0x3d4>
add    $0x1,%r12
add    $0x1,%rbx
add    $0x1,%r13d
mov    %r12,%r15
xor    %ebp,%ebp
mov    %al,0x7(%rsp)
nopl   0x0(%rax,%rax,1)
test   %r13d,%r13d
je     1170 <compress_javascript_chunk+0x30>
mov    -0x1(%rbx),%r14b
cmp    $0x2,%r13d
jl     1173 <compress_javascript_chunk+0x33>
mov    -0x2(%rbx),%al
jmp    1175 <compress_javascript_chunk+0x35>
cmp    $0x20,%r14b
jne    1552 <compress_javascript_chunk+0x412>
add    $0xffffffffffffffff,%rbx
add    $0xffffffff,%r13d
movb   $0x0,0x6(%rsp)
cmp    $0xb,%ebp
jb     15e4 <compress_javascript_chunk+0x4a4>
mov    %r12,%rdi
mov    %ebp,%esi
lea    0xa9e(%rip),%rdx
mov    $0x9,%ecx
xor    %eax,%eax
call   1060 <is_str_present_in_ss_comment@plt>
test   %eax,%eax
je     15ed <compress_javascript_chunk+0x4ad>
lea    0xa91(%rip),%rdi
mov    %rbx,%rsi
mov    $0xc,%edx
xor    %eax,%eax
call   1040 <strncpy_overlapping@plt>
add    $0xc,%rbx
add    $0xc,%r13d
jmp    16b5 <compress_javascript_chunk+0x575>
lea    -0x2(%rbp),%ecx
cmp    $0x2,%ecx
jb     1633 <compress_javascript_chunk+0x4f3>
add    $0xfffffffc,%ebp
lea    (%r12,%rbp,1),%rax
add    $0x3,%rax
add    $0x4,%r12
mov    %r12,%r15
jmp    15d1 <compress_javascript_chunk+0x491>
nopw   0x0(%rax,%rax,1)
lea    -0x1(%rbp),%ecx
add    $0x1,%ebp
add    $0x1,%r15
cmp    $0x1,%ebp
mov    %ecx,%ebp
jbe    162c <compress_javascript_chunk+0x4ec>
cmpb   $0x2a,-0x2(%r15)
jne    15c0 <compress_javascript_chunk+0x480>
cmpb   $0x2f,-0x1(%r15)
jne    15c0 <compress_javascript_chunk+0x480>
jmp    1520 <compress_javascript_chunk+0x3e0>
cmp    $0x5,%ebp
jb     16b5 <compress_javascript_chunk+0x575>
mov    %r12,%rdi
mov    %ebp,%esi
lea    0xa08(%rip),%rdx
mov    $0x3,%ecx
xor    %eax,%eax
call   1060 <is_str_present_in_ss_comment@plt>
test   %eax,%eax
je     167b <compress_javascript_chunk+0x53b>
lea    0xa0c(%rip),%rdi
mov    %rbx,%rsi
mov    $0x5,%edx
xor    %eax,%eax
call   1040 <strncpy_overlapping@plt>
add    $0x5,%rbx
add    $0x5,%r13d
jmp    16b5 <compress_javascript_chunk+0x575>
mov    $0x1,%ecx
jmp    163a <compress_javascript_chunk+0x4fa>
add    $0x2,%r12
mov    %r12,%rax
cmp    $0x1,%ecx
sbb    $0xffffffffffffffff,%rax
xor    %ebp,%ebp
mov    %rax,%r15
jmp    1520 <compress_javascript_chunk+0x3e0>
add    %esi,%r8d
add    %rsi,%rbx
add    %rsi,%r12
mov    %edx,%eax
mov    %r8d,%ebp
mov    (%r12),%cl
add    $0x1,%r12
mov    %cl,(%rbx)
add    $0x1,%rbx
add    $0xffffffff,%eax
mov    %ebp,%r13d
add    $0x1,%r13d
mov    %r12,%r15
mov    %eax,%ebp
jmp    1520 <compress_javascript_chunk+0x3e0>
mov    %r12,%rdi
mov    %ebp,%esi
lea    0x99b(%rip),%rdx
mov    $0x3,%ecx
xor    %eax,%eax
call   1060 <is_str_present_in_ss_comment@plt>
test   %eax,%eax
je     16b5 <compress_javascript_chunk+0x575>
lea    0x988(%rip),%rdi
mov    %rbx,%rsi
mov    $0x6,%edx
xor    %eax,%eax
call   1040 <strncpy_overlapping@plt>
add    $0x6,%rbx
add    $0x6,%r13d
lea    -0x1(%rbp),%eax
add    %rax,%r15
nopl   0x0(%rax,%rax,1)
cmpb   $0xa,(%r12)
je     1283 <compress_javascript_chunk+0x143>
add    $0x1,%r12
add    $0xffffffff,%ebp
jne    16c0 <compress_javascript_chunk+0x580>
xor    %ebp,%ebp
jmp    1520 <compress_javascript_chunk+0x3e0>
xor    %r13d,%r13d
mov    %r13d,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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