#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 */
char *advance_declaration(char *, char *);
char *find_comment_end(char *, char *);
scalar_t__ isspace(char);
char *html_findtagclosemark(char *tag_start_mark, int len, char **tagname_beg,
                            char **tagname_end) {
  char *p, *end;
  char *tag_name_begin, *tag_name_end;
  int end_tag;
  if (!tag_start_mark || !len)
    return NULL;
  p = tag_start_mark;
  end = tag_start_mark + len;
  end_tag = 0;
  do {
    ++p;
    if (p >= end)
      goto finish;
  } while (0);
  if (*p == '!') {
    char *old_p = p;
    if (p < end + 3 && p[1] == '-' && p[2] == '-') {
      char *comment_end = find_comment_end(p + 3, end);
      if (comment_end)
        p = comment_end;
    } else {
      p = advance_declaration(p, end);
    }
    if (p != old_p && p != old_p + 1)
      goto noname_result;
    else
      goto finish;
  } else if (*p == '/') {
    end_tag = 1;
    do {
      ++p;
      if (p >= end)
        goto finish;
    } while (0);
    if (tagname_beg)
      *tagname_beg = NULL;
    if (tagname_end)
      *tagname_end = NULL;
  }
  tag_name_begin = p;
  while (((*p) > 32 && (*p) < 127 && (*p) != '=' && (*p) != '>' && (*p) != '/'))
    do {
      ++p;
      if (p >= end)
        goto finish;
    } while (0);
  if (p == tag_name_begin)
    goto finish;
  tag_name_end = p;
  do {
    while (isspace(*p)) {
      do {
        ++p;
        if (p >= end)
          goto finish;
      } while (0);
    }
  } while (0);
  if (end_tag && *p != '>')
    goto finish;
  else if (end_tag && *p == '>')
    return p;
  while (1) {
    char *attr_name_begin, *attr_name_end;
    char *attr_value_begin, *attr_value_end;
    do {
      while (isspace(*p)) {
        do {
          ++p;
          if (p >= end)
            goto finish;
        } while (0);
      }
    } while (0);
    if (*p == '/') {
      do {
        ++p;
        if (p >= end)
          goto finish;
      } while (0);
      do {
        while (isspace(*p)) {
          do {
            ++p;
            if (p >= end)
              goto finish;
          } while (0);
        }
      } while (0);
      if (*p != '>')
        goto finish;
    }
    if (*p == '>')
      goto name_result;
    attr_name_begin = p;
    while (
        ((*p) > 32 && (*p) < 127 && (*p) != '=' && (*p) != '>' && (*p) != '/'))
      do {
        ++p;
        if (p >= end)
          goto finish;
      } while (0);
    attr_name_end = p;
    if (attr_name_begin == attr_name_end)
      goto finish;
    do {
      while (isspace(*p)) {
        do {
          ++p;
          if (p >= end)
            goto finish;
        } while (0);
      }
    } while (0);
    if (((*p) > 32 && (*p) < 127 && (*p) != '=' && (*p) != '>' &&
         (*p) != '/') ||
        *p == '/' || *p == '>') {
      attr_value_begin = attr_name_begin;
      attr_value_end = attr_name_end;
    } else if (*p == '=') {
      do {
        ++p;
        if (p >= end)
          goto finish;
      } while (0);
      do {
        while (isspace(*p)) {
          do {
            ++p;
            if (p >= end)
              goto finish;
          } while (0);
        }
      } while (0);
      if (*p == '\"' || *p == '\'') {
        int newline_seen = 0;
        char quote_char = *p;
        do {
          ++p;
          if (p >= end)
            goto finish;
        } while (0);
        attr_value_begin = p;
        while (*p != quote_char) {
          if (!newline_seen && *p == '\n') {
            p = attr_value_begin;
            newline_seen = 1;
            continue;
          } else if (newline_seen && *p == '>')
            break;
          do {
            ++p;
            if (p >= end)
              goto finish;
          } while (0);
        }
        attr_value_end = p;
        if (*p == quote_char)
          do {
            ++p;
            if (p >= end)
              goto finish;
          } while (0);
        else
          goto name_result;
      } else {
        attr_value_begin = p;
        while (!isspace(*p) && *p != '>')
          do {
            ++p;
            if (p >= end)
              goto finish;
          } while (0);
        attr_value_end = p;
        if (attr_value_begin == attr_value_end)
          goto finish;
      }
    } else {
      goto finish;
    }
  }
name_result:
  if (tagname_beg)
    *tagname_beg = tag_name_begin;
  if (tagname_end)
    *tagname_end = tag_name_end;
  return p;
noname_result:
  if (tagname_beg)
    *tagname_beg = NULL;
  if (tagname_end)
    *tagname_end = NULL;
  return (p - 1);
finish:
  return NULL;
}


x86 assembly (clang, -O0):
<html_findtagclosemark>:
push   %rbp
mov    %rsp,%rbp
sub    $0x90,%rsp
mov    %rdi,-0x10(%rbp)
mov    %esi,-0x14(%rbp)
mov    %rdx,-0x20(%rbp)
mov    %rcx,-0x28(%rbp)
cmpq   $0x0,-0x10(%rbp)
je     115f <html_findtagclosemark+0x2f>
cmpl   $0x0,-0x14(%rbp)
jne    116c <html_findtagclosemark+0x3c>
movq   $0x0,-0x8(%rbp)
jmp    1a1d <html_findtagclosemark+0x8ed>
mov    -0x10(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
movl   $0x0,-0x4c(%rbp)
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
cmp    -0x38(%rbp),%rax
jb     11a9 <html_findtagclosemark+0x79>
jmp    1a15 <html_findtagclosemark+0x8e5>
jmp    11ae <html_findtagclosemark+0x7e>
mov    -0x30(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x21,%eax
jne    1268 <html_findtagclosemark+0x138>
mov    -0x30(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x30(%rbp),%rax
mov    -0x38(%rbp),%rcx
add    $0x3,%rcx
cmp    %rcx,%rax
jae    122a <html_findtagclosemark+0xfa>
mov    -0x30(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x2d,%eax
jne    122a <html_findtagclosemark+0xfa>
mov    -0x30(%rbp),%rax
movsbl 0x2(%rax),%eax
cmp    $0x2d,%eax
jne    122a <html_findtagclosemark+0xfa>
mov    -0x30(%rbp),%rdi
add    $0x3,%rdi
mov    -0x38(%rbp),%rsi
call   1030 <find_comment_end@plt>
mov    %rax,-0x60(%rbp)
cmpq   $0x0,-0x60(%rbp)
je     1225 <html_findtagclosemark+0xf5>
mov    -0x60(%rbp),%rax
mov    %rax,-0x30(%rbp)
jmp    123b <html_findtagclosemark+0x10b>
mov    -0x30(%rbp),%rdi
mov    -0x38(%rbp),%rsi
call   1050 <advance_declaration@plt>
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
cmp    -0x58(%rbp),%rax
je     1263 <html_findtagclosemark+0x133>
mov    -0x30(%rbp),%rax
mov    -0x58(%rbp),%rcx
add    $0x1,%rcx
cmp    %rcx,%rax
je     1263 <html_findtagclosemark+0x133>
jmp    19d8 <html_findtagclosemark+0x8a8>
jmp    1a15 <html_findtagclosemark+0x8e5>
mov    -0x30(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2f,%eax
jne    12d4 <html_findtagclosemark+0x1a4>
movl   $0x1,-0x4c(%rbp)
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
cmp    -0x38(%rbp),%rax
jb     129e <html_findtagclosemark+0x16e>
jmp    1a15 <html_findtagclosemark+0x8e5>
jmp    12a3 <html_findtagclosemark+0x173>
cmpq   $0x0,-0x20(%rbp)
je     12b9 <html_findtagclosemark+0x189>
mov    -0x20(%rbp),%rax
movq   $0x0,(%rax)
cmpq   $0x0,-0x28(%rbp)
je     12cf <html_findtagclosemark+0x19f>
mov    -0x28(%rbp),%rax
movq   $0x0,(%rax)
jmp    12d4 <html_findtagclosemark+0x1a4>
jmp    12d9 <html_findtagclosemark+0x1a9>
mov    -0x30(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x30(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x20,%ecx
mov    %al,-0x86(%rbp)
jle    1354 <html_findtagclosemark+0x224>
mov    -0x30(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x7f,%ecx
mov    %al,-0x86(%rbp)
jge    1354 <html_findtagclosemark+0x224>
mov    -0x30(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x3d,%ecx
mov    %al,-0x86(%rbp)
je     1354 <html_findtagclosemark+0x224>
mov    -0x30(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x3e,%ecx
mov    %al,-0x86(%rbp)
je     1354 <html_findtagclosemark+0x224>
mov    -0x30(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2f,%eax
setne  %al
mov    %al,-0x86(%rbp)
mov    -0x86(%rbp),%al
test   $0x1,%al
jne    1367 <html_findtagclosemark+0x237>
jmp    1395 <html_findtagclosemark+0x265>
jmp    136c <html_findtagclosemark+0x23c>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
cmp    -0x38(%rbp),%rax
jb     138b <html_findtagclosemark+0x25b>
jmp    1a15 <html_findtagclosemark+0x8e5>
jmp    1390 <html_findtagclosemark+0x260>
jmp    12e1 <html_findtagclosemark+0x1b1>
mov    -0x30(%rbp),%rax
cmp    -0x40(%rbp),%rax
jne    13a8 <html_findtagclosemark+0x278>
jmp    1a15 <html_findtagclosemark+0x8e5>
mov    -0x30(%rbp),%rax
mov    %rax,-0x48(%rbp)
jmp    13b5 <html_findtagclosemark+0x285>
mov    -0x30(%rbp),%rax
movsbl (%rax),%edi
call   1040 <isspace@plt>
cmp    $0x0,%rax
je     13f9 <html_findtagclosemark+0x2c9>
jmp    13d0 <html_findtagclosemark+0x2a0>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
cmp    -0x38(%rbp),%rax
jb     13ef <html_findtagclosemark+0x2bf>
jmp    1a15 <html_findtagclosemark+0x8e5>
jmp    13f4 <html_findtagclosemark+0x2c4>
jmp    13b5 <html_findtagclosemark+0x285>
jmp    13fe <html_findtagclosemark+0x2ce>
cmpl   $0x0,-0x4c(%rbp)
je     141d <html_findtagclosemark+0x2ed>
mov    -0x30(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3e,%eax
je     141d <html_findtagclosemark+0x2ed>
jmp    1a15 <html_findtagclosemark+0x8e5>
cmpl   $0x0,-0x4c(%rbp)
je     1444 <html_findtagclosemark+0x314>
mov    -0x30(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3e,%eax
jne    1444 <html_findtagclosemark+0x314>
mov    -0x30(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    1a1d <html_findtagclosemark+0x8ed>
jmp    1449 <html_findtagclosemark+0x319>
jmp    144e <html_findtagclosemark+0x31e>
jmp    1453 <html_findtagclosemark+0x323>
jmp    1458 <html_findtagclosemark+0x328>
mov    -0x30(%rbp),%rax
movsbl (%rax),%edi
call   1040 <isspace@plt>
cmp    $0x0,%rax
je     149c <html_findtagclosemark+0x36c>
jmp    1473 <html_findtagclosemark+0x343>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
cmp    -0x38(%rbp),%rax
jb     1492 <html_findtagclosemark+0x362>
jmp    1a15 <html_findtagclosemark+0x8e5>
jmp    1497 <html_findtagclosemark+0x367>
jmp    1458 <html_findtagclosemark+0x328>
jmp    14a1 <html_findtagclosemark+0x371>
mov    -0x30(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2f,%eax
jne    1547 <html_findtagclosemark+0x417>
jmp    14b6 <html_findtagclosemark+0x386>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
cmp    -0x38(%rbp),%rax
jb     14d5 <html_findtagclosemark+0x3a5>
jmp    1a15 <html_findtagclosemark+0x8e5>
jmp    14da <html_findtagclosemark+0x3aa>
jmp    14df <html_findtagclosemark+0x3af>
jmp    14e4 <html_findtagclosemark+0x3b4>
mov    -0x30(%rbp),%rax
movsbl (%rax),%edi
call   1040 <isspace@plt>
cmp    $0x0,%rax
je     1528 <html_findtagclosemark+0x3f8>
jmp    14ff <html_findtagclosemark+0x3cf>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
cmp    -0x38(%rbp),%rax
jb     151e <html_findtagclosemark+0x3ee>
jmp    1a15 <html_findtagclosemark+0x8e5>
jmp    1523 <html_findtagclosemark+0x3f3>
jmp    14e4 <html_findtagclosemark+0x3b4>
jmp    152d <html_findtagclosemark+0x3fd>
mov    -0x30(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3e,%eax
je     1542 <html_findtagclosemark+0x412>
jmp    1a15 <html_findtagclosemark+0x8e5>
jmp    1547 <html_findtagclosemark+0x417>
mov    -0x30(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3e,%eax
jne    155c <html_findtagclosemark+0x42c>
jmp    199f <html_findtagclosemark+0x86f>
mov    -0x30(%rbp),%rax
mov    %rax,-0x68(%rbp)
mov    -0x30(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x20,%ecx
mov    %al,-0x87(%rbp)
jle    15d7 <html_findtagclosemark+0x4a7>
mov    -0x30(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x7f,%ecx
mov    %al,-0x87(%rbp)
jge    15d7 <html_findtagclosemark+0x4a7>
mov    -0x30(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x3d,%ecx
mov    %al,-0x87(%rbp)
je     15d7 <html_findtagclosemark+0x4a7>
mov    -0x30(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x3e,%ecx
mov    %al,-0x87(%rbp)
je     15d7 <html_findtagclosemark+0x4a7>
mov    -0x30(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2f,%eax
setne  %al
mov    %al,-0x87(%rbp)
mov    -0x87(%rbp),%al
test   $0x1,%al
jne    15ea <html_findtagclosemark+0x4ba>
jmp    1618 <html_findtagclosemark+0x4e8>
jmp    15ef <html_findtagclosemark+0x4bf>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
cmp    -0x38(%rbp),%rax
jb     160e <html_findtagclosemark+0x4de>
jmp    1a15 <html_findtagclosemark+0x8e5>
jmp    1613 <html_findtagclosemark+0x4e3>
jmp    1564 <html_findtagclosemark+0x434>
mov    -0x30(%rbp),%rax
mov    %rax,-0x70(%rbp)
mov    -0x68(%rbp),%rax
cmp    -0x70(%rbp),%rax
jne    1633 <html_findtagclosemark+0x503>
jmp    1a15 <html_findtagclosemark+0x8e5>
jmp    1638 <html_findtagclosemark+0x508>
jmp    163d <html_findtagclosemark+0x50d>
mov    -0x30(%rbp),%rax
movsbl (%rax),%edi
call   1040 <isspace@plt>
cmp    $0x0,%rax
je     1681 <html_findtagclosemark+0x551>
jmp    1658 <html_findtagclosemark+0x528>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
cmp    -0x38(%rbp),%rax
jb     1677 <html_findtagclosemark+0x547>
jmp    1a15 <html_findtagclosemark+0x8e5>
jmp    167c <html_findtagclosemark+0x54c>
jmp    163d <html_findtagclosemark+0x50d>
jmp    1686 <html_findtagclosemark+0x556>
mov    -0x30(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x20,%eax
jle    16d6 <html_findtagclosemark+0x5a6>
mov    -0x30(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x7f,%eax
jge    16d6 <html_findtagclosemark+0x5a6>
mov    -0x30(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3d,%eax
je     16d6 <html_findtagclosemark+0x5a6>
mov    -0x30(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3e,%eax
je     16d6 <html_findtagclosemark+0x5a6>
mov    -0x30(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2f,%eax
jne    16f6 <html_findtagclosemark+0x5c6>
mov    -0x30(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2f,%eax
je     16f6 <html_findtagclosemark+0x5c6>
mov    -0x30(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3e,%eax
jne    170b <html_findtagclosemark+0x5db>
mov    -0x68(%rbp),%rax
mov    %rax,-0x78(%rbp)
mov    -0x70(%rbp),%rax
mov    %rax,-0x80(%rbp)
jmp    199a <html_findtagclosemark+0x86a>
mov    -0x30(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3d,%eax
jne    1990 <html_findtagclosemark+0x860>
jmp    1720 <html_findtagclosemark+0x5f0>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
cmp    -0x38(%rbp),%rax
jb     173f <html_findtagclosemark+0x60f>
jmp    1a15 <html_findtagclosemark+0x8e5>
jmp    1744 <html_findtagclosemark+0x614>
jmp    1749 <html_findtagclosemark+0x619>
jmp    174e <html_findtagclosemark+0x61e>
mov    -0x30(%rbp),%rax
movsbl (%rax),%edi
call   1040 <isspace@plt>
cmp    $0x0,%rax
je     1792 <html_findtagclosemark+0x662>
jmp    1769 <html_findtagclosemark+0x639>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
cmp    -0x38(%rbp),%rax
jb     1788 <html_findtagclosemark+0x658>
jmp    1a15 <html_findtagclosemark+0x8e5>
jmp    178d <html_findtagclosemark+0x65d>
jmp    174e <html_findtagclosemark+0x61e>
jmp    1797 <html_findtagclosemark+0x667>
mov    -0x30(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x22,%eax
je     17b7 <html_findtagclosemark+0x687>
mov    -0x30(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x27,%eax
jne    18ee <html_findtagclosemark+0x7be>
movl   $0x0,-0x84(%rbp)
mov    -0x30(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x85(%rbp)
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
cmp    -0x38(%rbp),%rax
jb     17ec <html_findtagclosemark+0x6bc>
jmp    1a15 <html_findtagclosemark+0x8e5>
jmp    17f1 <html_findtagclosemark+0x6c1>
mov    -0x30(%rbp),%rax
mov    %rax,-0x78(%rbp)
mov    -0x30(%rbp),%rax
movsbl (%rax),%eax
movsbl -0x85(%rbp),%ecx
cmp    %ecx,%eax
je     1898 <html_findtagclosemark+0x768>
cmpl   $0x0,-0x84(%rbp)
jne    1843 <html_findtagclosemark+0x713>
mov    -0x30(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xa,%eax
jne    1843 <html_findtagclosemark+0x713>
mov    -0x78(%rbp),%rax
mov    %rax,-0x30(%rbp)
movl   $0x1,-0x84(%rbp)
jmp    17f9 <html_findtagclosemark+0x6c9>
cmpl   $0x0,-0x84(%rbp)
je     1865 <html_findtagclosemark+0x735>
mov    -0x30(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3e,%eax
jne    1865 <html_findtagclosemark+0x735>
jmp    1898 <html_findtagclosemark+0x768>
jmp    186a <html_findtagclosemark+0x73a>
jmp    186f <html_findtagclosemark+0x73f>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
cmp    -0x38(%rbp),%rax
jb     188e <html_findtagclosemark+0x75e>
jmp    1a15 <html_findtagclosemark+0x8e5>
jmp    1893 <html_findtagclosemark+0x763>
jmp    17f9 <html_findtagclosemark+0x6c9>
mov    -0x30(%rbp),%rax
mov    %rax,-0x80(%rbp)
mov    -0x30(%rbp),%rax
movsbl (%rax),%eax
movsbl -0x85(%rbp),%ecx
cmp    %ecx,%eax
jne    18e4 <html_findtagclosemark+0x7b4>
jmp    18bb <html_findtagclosemark+0x78b>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
cmp    -0x38(%rbp),%rax
jb     18da <html_findtagclosemark+0x7aa>
jmp    1a15 <html_findtagclosemark+0x8e5>
jmp    18df <html_findtagclosemark+0x7af>
jmp    18e9 <html_findtagclosemark+0x7b9>
jmp    199f <html_findtagclosemark+0x86f>
jmp    198b <html_findtagclosemark+0x85b>
mov    -0x30(%rbp),%rax
mov    %rax,-0x78(%rbp)
mov    -0x30(%rbp),%rax
movsbl (%rax),%edi
call   1040 <isspace@plt>
mov    %rax,%rcx
xor    %eax,%eax
cmp    $0x0,%rcx
mov    %al,-0x88(%rbp)
jne    192a <html_findtagclosemark+0x7fa>
mov    -0x30(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3e,%eax
setne  %al
mov    %al,-0x88(%rbp)
mov    -0x88(%rbp),%al
test   $0x1,%al
jne    193d <html_findtagclosemark+0x80d>
jmp    196b <html_findtagclosemark+0x83b>
jmp    1942 <html_findtagclosemark+0x812>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
cmp    -0x38(%rbp),%rax
jb     1961 <html_findtagclosemark+0x831>
jmp    1a15 <html_findtagclosemark+0x8e5>
jmp    1966 <html_findtagclosemark+0x836>
jmp    18f6 <html_findtagclosemark+0x7c6>
mov    -0x30(%rbp),%rax
mov    %rax,-0x80(%rbp)
mov    -0x78(%rbp),%rax
cmp    -0x80(%rbp),%rax
jne    1986 <html_findtagclosemark+0x856>
jmp    1a15 <html_findtagclosemark+0x8e5>
jmp    198b <html_findtagclosemark+0x85b>
jmp    1995 <html_findtagclosemark+0x865>
jmp    1a15 <html_findtagclosemark+0x8e5>
jmp    199a <html_findtagclosemark+0x86a>
jmp    144e <html_findtagclosemark+0x31e>
cmpq   $0x0,-0x20(%rbp)
je     19b5 <html_findtagclosemark+0x885>
mov    -0x40(%rbp),%rcx
mov    -0x20(%rbp),%rax
mov    %rcx,(%rax)
cmpq   $0x0,-0x28(%rbp)
je     19cb <html_findtagclosemark+0x89b>
mov    -0x48(%rbp),%rcx
mov    -0x28(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x30(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    1a1d <html_findtagclosemark+0x8ed>
cmpq   $0x0,-0x20(%rbp)
je     19ee <html_findtagclosemark+0x8be>
mov    -0x20(%rbp),%rax
movq   $0x0,(%rax)
cmpq   $0x0,-0x28(%rbp)
je     1a04 <html_findtagclosemark+0x8d4>
mov    -0x28(%rbp),%rax
movq   $0x0,(%rax)
mov    -0x30(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x8(%rbp)
jmp    1a1d <html_findtagclosemark+0x8ed>
movq   $0x0,-0x8(%rbp)
mov    -0x8(%rbp),%rax
add    $0x90,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<html_findtagclosemark>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x28,%rsp
xor    %r15d,%r15d
test   %rdi,%rdi
je     1502 <html_findtagclosemark+0x3d2>
mov    %rdx,0x10(%rsp)
mov    %rcx,0x8(%rsp)
test   %esi,%esi
je     1502 <html_findtagclosemark+0x3d2>
cmp    $0x2,%esi
jl     14ff <html_findtagclosemark+0x3cf>
mov    %rdi,%r13
movslq %esi,%r12
add    %rdi,%r12
lea    0x1(%rdi),%rbp
mov    0x0(%rbp),%al
cmp    $0x2f,%al
je     11ae <html_findtagclosemark+0x7e>
mov    $0x1,%sil
cmp    $0x21,%al
jne    11e1 <html_findtagclosemark+0xb1>
cmpb   $0x2d,0x2(%r13)
jne    1299 <html_findtagclosemark+0x169>
cmpb   $0x2d,0x3(%r13)
jne    1299 <html_findtagclosemark+0x169>
lea    0x4(%r13),%rdi
mov    %r12,%rsi
call   1030 <find_comment_end@plt>
test   %rax,%rax
cmove  %rbp,%rax
jmp    12a4 <html_findtagclosemark+0x174>
cmp    $0x3,%esi
mov    0x10(%rsp),%rax
jb     14ff <html_findtagclosemark+0x3cf>
test   %rax,%rax
je     11c8 <html_findtagclosemark+0x98>
movq   $0x0,(%rax)
add    $0x2,%r13
mov    0x8(%rsp),%rax
test   %rax,%rax
je     11dd <html_findtagclosemark+0xad>
movq   $0x0,(%rax)
xor    %esi,%esi
jmp    11e4 <html_findtagclosemark+0xb4>
mov    %rbp,%r13
lea    0x1(%r13),%rbp
xor    %r15d,%r15d
xor    %ebx,%ebx
movabs $0x6000800000000000,%rdx
nopw   0x0(%rax,%rax,1)
movzbl 0x0(%r13,%rbx,1),%eax
cmp    $0x21,%al
jl     1231 <html_findtagclosemark+0x101>
cmp    $0x3e,%al
ja     1217 <html_findtagclosemark+0xe7>
movzbl %al,%ecx
bt     %rcx,%rdx
jb     1231 <html_findtagclosemark+0x101>
cmp    $0x7f,%al
je     1231 <html_findtagclosemark+0x101>
lea    (%rbx,%r13,1),%rax
add    $0x1,%rax
add    $0x1,%rbx
cmp    %r12,%rax
jb     1200 <html_findtagclosemark+0xd0>
jmp    1502 <html_findtagclosemark+0x3d2>
test   %rbx,%rbx
je     14ff <html_findtagclosemark+0x3cf>
mov    %esi,0x1c(%rsp)
lea    (%rbx,%r13,1),%r14
movsbl %al,%edi
call   1040 <isspace@plt>
mov    %r14,0x20(%rsp)
test   %rax,%rax
je     1282 <html_findtagclosemark+0x152>
add    %rbx,%rbp
xor    %r15d,%r15d
nopw   0x0(%rax,%rax,1)
cmp    %r12,%rbp
jae    1502 <html_findtagclosemark+0x3d2>
movsbl 0x0(%rbp),%edi
call   1040 <isspace@plt>
add    $0x1,%rbp
test   %rax,%rax
jne    1260 <html_findtagclosemark+0x130>
add    $0xffffffffffffffff,%rbp
mov    %rbp,%r14
cmpb   $0x0,0x1c(%rsp)
jne    12fe <html_findtagclosemark+0x1ce>
xor    %r15d,%r15d
cmpb   $0x3e,(%r14)
cmove  %r14,%r15
jmp    1502 <html_findtagclosemark+0x3d2>
mov    %rbp,%rdi
mov    %r12,%rsi
call   1050 <advance_declaration@plt>
xor    %r15d,%r15d
cmp    %rbp,%rax
je     1502 <html_findtagclosemark+0x3d2>
add    $0x2,%r13
cmp    %r13,%rax
je     1502 <html_findtagclosemark+0x3d2>
mov    0x10(%rsp),%rcx
test   %rcx,%rcx
je     12ce <html_findtagclosemark+0x19e>
movq   $0x0,(%rcx)
mov    0x8(%rsp),%rcx
test   %rcx,%rcx
je     12df <html_findtagclosemark+0x1af>
movq   $0x0,(%rcx)
add    $0xffffffffffffffff,%rax
mov    %rax,%r15
jmp    1502 <html_findtagclosemark+0x3d2>
add    $0x1,%r14
mov    $0x0,%r15d
cmp    %r12,%r14
jae    1502 <html_findtagclosemark+0x3d2>
movsbl (%r14),%edi
call   1040 <isspace@plt>
test   %rax,%rax
jne    12eb <html_findtagclosemark+0x1bb>
mov    (%r14),%al
cmp    $0x2f,%al
je     14ab <html_findtagclosemark+0x37b>
cmp    $0x3e,%al
mov    0x8(%rsp),%rcx
je     14d5 <html_findtagclosemark+0x3a5>
cmp    $0x21,%al
jge    132d <html_findtagclosemark+0x1fd>
mov    %r14,%rbx
jmp    1364 <html_findtagclosemark+0x234>
lea    0x1(%r14),%rbx
cmp    $0x3e,%al
ja     1348 <html_findtagclosemark+0x218>
movzbl %al,%ecx
movabs $0x6000800000000000,%rdx
bt     %rcx,%rdx
jb     1360 <html_findtagclosemark+0x230>
cmp    $0x7f,%al
je     1360 <html_findtagclosemark+0x230>
cmp    %r12,%rbx
jae    14ff <html_findtagclosemark+0x3cf>
movzbl (%rbx),%eax
add    $0x1,%rbx
cmp    $0x20,%al
jg     1331 <html_findtagclosemark+0x201>
add    $0xffffffffffffffff,%rbx
cmp    %rbx,%r14
je     14ff <html_findtagclosemark+0x3cf>
movsbl %al,%edi
call   1040 <isspace@plt>
test   %rax,%rax
je     139e <html_findtagclosemark+0x26e>
add    $0x1,%rbx
xchg   %ax,%ax
cmp    %r12,%rbx
jae    14ff <html_findtagclosemark+0x3cf>
movsbl (%rbx),%edi
call   1040 <isspace@plt>
add    $0x1,%rbx
test   %rax,%rax
jne    1380 <html_findtagclosemark+0x250>
add    $0xffffffffffffffff,%rbx
mov    %rbx,%r14
mov    (%rbx),%al
cmp    $0x21,%al
jl     14ff <html_findtagclosemark+0x3cf>
cmp    $0x3d,%al
je     13c2 <html_findtagclosemark+0x292>
mov    $0x0,%r15d
cmp    $0x7f,%al
jne    12fe <html_findtagclosemark+0x1ce>
jmp    1502 <html_findtagclosemark+0x3d2>
lea    0x1(%r14),%rbp
cmp    %r12,%rbp
jae    14ff <html_findtagclosemark+0x3cf>
add    $0x2,%r14
movsbl 0x0(%rbp),%edi
call   1040 <isspace@plt>
test   %rax,%rax
je     13f9 <html_findtagclosemark+0x2c9>
add    $0x1,%rbp
add    $0x1,%r14
mov    $0x0,%r15d
cmp    %r12,%rbp
jb     13d3 <html_findtagclosemark+0x2a3>
jmp    1502 <html_findtagclosemark+0x3d2>
mov    0x0(%rbp),%sil
cmp    $0x22,%sil
je     1409 <html_findtagclosemark+0x2d9>
cmp    $0x27,%sil
jne    145d <html_findtagclosemark+0x32d>
add    $0x1,%rbp
cmp    %r12,%rbp
jae    14ff <html_findtagclosemark+0x3cf>
mov    $0x1,%cl
mov    %ecx,%edx
xor    $0x1,%dl
mov    %rbp,%r14
movzbl (%r14),%ebx
cmp    %sil,%bl
je     12eb <html_findtagclosemark+0x1bb>
cmp    $0xa,%bl
sete   %al
test   %al,%cl
jne    1459 <html_findtagclosemark+0x329>
cmp    $0x3e,%bl
sete   %al
test   %al,%dl
jne    14d0 <html_findtagclosemark+0x3a0>
add    $0x1,%r14
mov    $0x0,%r15d
cmp    %r12,%r14
jb     1420 <html_findtagclosemark+0x2f0>
jmp    1502 <html_findtagclosemark+0x3d2>
xor    %ecx,%ecx
jmp    1418 <html_findtagclosemark+0x2e8>
movsbl %sil,%edi
call   1040 <isspace@plt>
mov    %rbp,%rcx
test   %rax,%rax
jne    1497 <html_findtagclosemark+0x367>
cmpb   $0x3e,-0x1(%r14)
je     1490 <html_findtagclosemark+0x360>
cmp    %r12,%r14
jae    14ff <html_findtagclosemark+0x3cf>
movsbl (%r14),%edi
call   1040 <isspace@plt>
add    $0x1,%r14
test   %rax,%rax
je     146e <html_findtagclosemark+0x33e>
add    $0xffffffffffffffff,%r14
mov    %r14,%rcx
mov    $0x0,%r15d
cmp    %rcx,%rbp
mov    %rcx,%r14
jne    12fe <html_findtagclosemark+0x1ce>
jmp    1502 <html_findtagclosemark+0x3d2>
add    $0x1,%r14
xor    %r15d,%r15d
cmp    %r12,%r14
jae    1502 <html_findtagclosemark+0x3d2>
movsbl (%r14),%edi
call   1040 <isspace@plt>
test   %rax,%rax
je     14f4 <html_findtagclosemark+0x3c4>
add    $0x1,%r14
cmp    %r12,%r14
jb     14b7 <html_findtagclosemark+0x387>
jmp    1502 <html_findtagclosemark+0x3d2>
mov    0x8(%rsp),%rcx
mov    0x10(%rsp),%rax
test   %rax,%rax
je     14e2 <html_findtagclosemark+0x3b2>
mov    %r13,(%rax)
test   %rcx,%rcx
je     14ef <html_findtagclosemark+0x3bf>
mov    0x20(%rsp),%rax
mov    %rax,(%rcx)
mov    %r14,%r15
jmp    1502 <html_findtagclosemark+0x3d2>
cmpb   $0x3e,(%r14)
mov    0x8(%rsp),%rcx
je     14d5 <html_findtagclosemark+0x3a5>
xor    %r15d,%r15d
mov    %r15,%rax
add    $0x28,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define i8* @html_findtagclosemark(i8* %0, i32 %1, i8** writeonly %2, i8** writeonly %3) {
%5 = icmp ne i8* %0, null
%6 = icmp ne i32 %1, 0
%7 = and i1 %5, %6
br i1 %7, label %8, label %204
8: ; preds = %4
%9 = sext i32 %1 to i64
%10 = getelementptr inbounds i8, i8* %0, i64 %9
%11 = getelementptr inbounds i8, i8* %0, i64 1
%12 = icmp sgt i32 %1, 1
br i1 %12, label %13, label %204
13: ; preds = %8
%14 = load i8, i8* %11
switch i8 %14, label %44 [
i8 33, label %15
i8 47, label %35
]
15: ; preds = %13
%16 = getelementptr inbounds i8, i8* %0, i64 2
%17 = load i8, i8* %16
%18 = icmp eq i8 %17, 45
br i1 %18, label %19, label %28
19: ; preds = %15
%20 = getelementptr inbounds i8, i8* %0, i64 3
%21 = load i8, i8* %20
%22 = icmp eq i8 %21, 45
br i1 %22, label %23, label %28
23: ; preds = %19
%24 = getelementptr inbounds i8, i8* %0, i64 4
%25 = tail call i8* @find_comment_end(i8* %24, i8* %10)
%26 = icmp eq i8* %25, null
%27 = select i1 %26, i8* %11, i8* %25
br label %30
28: ; preds = %19, %15
%29 = tail call i8* @advance_declaration(i8* %11, i8* %10)
br label %30
30: ; preds = %28, %23
%31 = phi i8* [ %27, %23 ], [ %29, %28 ]
%32 = icmp ne i8* %31, %11
%33 = icmp ne i8* %31, %16
%34 = and i1 %32, %33
br i1 %34, label %196, label %204
35: ; preds = %13
%36 = getelementptr inbounds i8, i8* %0, i64 2
%37 = icmp ugt i32 %1, 2
br i1 %37, label %38, label %204
38: ; preds = %35
%39 = icmp eq i8** %2, null
br i1 %39, label %41, label %40
40: ; preds = %38
store i8* null, i8** %2
br label %41
41: ; preds = %40, %38
%42 = icmp eq i8** %3, null
br i1 %42, label %44, label %43
43: ; preds = %41
store i8* null, i8** %3
br label %44
44: ; preds = %13, %43, %41
%45 = phi i1 [ false, %43 ], [ false, %41 ], [ true, %13 ]
%46 = phi i8* [ %36, %43 ], [ %36, %41 ], [ %11, %13 ]
br label %47
47: ; preds = %53, %44
%48 = phi i8* [ %46, %44 ], [ %54, %53 ]
%49 = load i8, i8* %48
%50 = freeze i8 %49
%51 = icmp slt i8 %50, 33
br i1 %51, label %56, label %52
52: ; preds = %47
switch i8 %50, label %53 [
i8 127, label %56
i8 62, label %56
i8 61, label %56
i8 47, label %56
]
53: ; preds = %52
%54 = getelementptr inbounds i8, i8* %48, i64 1
%55 = icmp ult i8* %54, %10
br i1 %55, label %47, label %204
56: ; preds = %52, %52, %52, %52, %47
%57 = freeze i8 %49
%58 = icmp eq i8* %48, %46
br i1 %58, label %204, label %59
59: ; preds = %56
%60 = tail call i64 @isspace(i8 signext %57)
%61 = icmp eq i64 %60, 0
br i1 %61, label %70, label %62
62: ; preds = %59, %66
%63 = phi i8* [ %64, %66 ], [ %48, %59 ]
%64 = getelementptr inbounds i8, i8* %63, i64 1
%65 = icmp ult i8* %64, %10
br i1 %65, label %66, label %204
66: ; preds = %62
%67 = load i8, i8* %64
%68 = tail call i64 @isspace(i8 signext %67)
%69 = icmp eq i64 %68, 0
br i1 %69, label %70, label %62
70: ; preds = %66, %59
%71 = phi i8* [ %48, %59 ], [ %64, %66 ]
br i1 %45, label %76, label %72
72: ; preds = %70
%73 = load i8, i8* %71
%74 = icmp eq i8 %73, 62
%75 = select i1 %74, i8* %71, i8* null
br label %204
76: ; preds = %70, %84
%77 = phi i8* [ %85, %84 ], [ %71, %70 ]
%78 = load i8, i8* %77
%79 = tail call i64 @isspace(i8 signext %78)
%80 = icmp eq i64 %79, 0
br i1 %80, label %86, label %81
81: ; preds = %76
%82 = getelementptr inbounds i8, i8* %77, i64 1
%83 = icmp ult i8* %82, %10
br i1 %83, label %84, label %204
84: ; preds = %81, %172, %186, %136
%85 = phi i8* [ %82, %81 ], [ %173, %172 ], [ %187, %186 ], [ %132, %136 ]
br label %76
86: ; preds = %76
%87 = load i8, i8* %77
switch i8 %87, label %88 [
i8 47, label %90
i8 62, label %189
]
88: ; preds = %86
%89 = icmp slt i8 %87, 33
br i1 %89, label %116, label %104
90: ; preds = %86
%91 = getelementptr inbounds i8, i8* %77, i64 1
%92 = icmp ult i8* %91, %10
br i1 %92, label %93, label %204
93: ; preds = %90, %98
%94 = phi i8* [ %99, %98 ], [ %91, %90 ]
%95 = load i8, i8* %94
%96 = tail call i64 @isspace(i8 signext %95)
%97 = icmp eq i64 %96, 0
br i1 %97, label %101, label %98
98: ; preds = %93
%99 = getelementptr inbounds i8, i8* %94, i64 1
%100 = icmp ult i8* %99, %10
br i1 %100, label %93, label %204
101: ; preds = %93
%102 = load i8, i8* %94
%103 = icmp eq i8 %102, 62
br i1 %103, label %189, label %204
104: ; preds = %88, %110
%105 = phi i8 [ %112, %110 ], [ %87, %88 ]
%106 = phi i8* [ %108, %110 ], [ %77, %88 ]
switch i8 %105, label %107 [
i8 127, label %116
i8 62, label %116
i8 61, label %116
i8 47, label %116
]
107: ; preds = %104
%108 = getelementptr inbounds i8, i8* %106, i64 1
%109 = icmp ult i8* %108, %10
br i1 %109, label %110, label %204
110: ; preds = %107
%111 = load i8, i8* %108
%112 = freeze i8 %111
%113 = icmp slt i8 %112, 33
br i1 %113, label %114, label %104
114: ; preds = %110
%115 = freeze i8 %111
br label %116
116: ; preds = %114, %104, %104, %104, %104, %88
%117 = phi i8* [ %77, %88 ], [ %108, %114 ], [ %106, %104 ], [ %106, %104 ], [ %106, %104 ], [ %106, %104 ]
%118 = phi i8 [ %87, %88 ], [ %115, %114 ], [ %105, %104 ], [ %105, %104 ], [ %105, %104 ], [ %105, %104 ]
%119 = icmp eq i8* %77, %117
br i1 %119, label %204, label %120
120: ; preds = %116
%121 = tail call i64 @isspace(i8 signext %118)
%122 = icmp eq i64 %121, 0
br i1 %122, label %131, label %123
123: ; preds = %120, %127
%124 = phi i8* [ %125, %127 ], [ %117, %120 ]
%125 = getelementptr inbounds i8, i8* %124, i64 1
%126 = icmp ult i8* %125, %10
br i1 %126, label %127, label %204
127: ; preds = %123
%128 = load i8, i8* %125
%129 = tail call i64 @isspace(i8 signext %128)
%130 = icmp eq i64 %129, 0
br i1 %130, label %131, label %123
131: ; preds = %127, %120
%132 = phi i8* [ %117, %120 ], [ %125, %127 ]
%133 = load i8, i8* %132
%134 = freeze i8 %133
%135 = icmp slt i8 %134, 33
br i1 %135, label %204, label %136
136: ; preds = %131
switch i8 %134, label %84 [
i8 127, label %204
i8 61, label %137
]
137: ; preds = %136
%138 = getelementptr inbounds i8, i8* %132, i64 1
%139 = icmp ult i8* %138, %10
br i1 %139, label %140, label %204
140: ; preds = %137, %145
%141 = phi i8* [ %146, %145 ], [ %138, %137 ]
%142 = load i8, i8* %141
%143 = tail call i64 @isspace(i8 signext %142)
%144 = icmp eq i64 %143, 0
br i1 %144, label %148, label %145
145: ; preds = %140
%146 = getelementptr inbounds i8, i8* %141, i64 1
%147 = icmp ult i8* %146, %10
br i1 %147, label %140, label %204
148: ; preds = %140
%149 = load i8, i8* %141
switch i8 %149, label %150 [
i8 34, label %153
i8 39, label %153
]
150: ; preds = %148
%151 = tail call i64 @isspace(i8 signext %149)
%152 = icmp eq i64 %151, 0
br i1 %152, label %175, label %186
153: ; preds = %148, %148
%154 = getelementptr inbounds i8, i8* %141, i64 1
%155 = icmp ult i8* %154, %10
br i1 %155, label %156, label %204
156: ; preds = %163, %153
%157 = phi i1 [ true, %153 ], [ false, %163 ]
%158 = xor i1 %157, true
br label %159
159: ; preds = %156, %169
%160 = phi i8* [ %170, %169 ], [ %154, %156 ]
%161 = load i8, i8* %160
%162 = icmp eq i8 %161, %149
br i1 %162, label %172, label %163
163: ; preds = %159
%164 = icmp eq i8 %161, 10
%165 = select i1 %157, i1 %164, i1 false
br i1 %165, label %156, label %166
166: ; preds = %163
%167 = icmp eq i8 %161, 62
%168 = select i1 %158, i1 %167, i1 false
br i1 %168, label %189, label %169
169: ; preds = %166
%170 = getelementptr inbounds i8, i8* %160, i64 1
%171 = icmp ult i8* %170, %10
br i1 %171, label %159, label %204
172: ; preds = %159
%173 = getelementptr inbounds i8, i8* %160, i64 1
%174 = icmp ult i8* %173, %10
br i1 %174, label %84, label %204
175: ; preds = %150, %182
%176 = phi i8* [ %180, %182 ], [ %141, %150 ]
%177 = load i8, i8* %176
%178 = icmp eq i8 %177, 62
br i1 %178, label %186, label %179
179: ; preds = %175
%180 = getelementptr inbounds i8, i8* %176, i64 1
%181 = icmp ult i8* %180, %10
br i1 %181, label %182, label %204
182: ; preds = %179
%183 = load i8, i8* %180
%184 = tail call i64 @isspace(i8 signext %183)
%185 = icmp eq i64 %184, 0
br i1 %185, label %175, label %186
186: ; preds = %175, %182, %150
%187 = phi i8* [ %141, %150 ], [ %176, %175 ], [ %180, %182 ]
%188 = icmp eq i8* %141, %187
br i1 %188, label %204, label %84
189: ; preds = %86, %166, %101
%190 = phi i8* [ %94, %101 ], [ %160, %166 ], [ %77, %86 ]
%191 = icmp eq i8** %2, null
br i1 %191, label %193, label %192
192: ; preds = %189
store i8* %46, i8** %2
br label %193
193: ; preds = %192, %189
%194 = icmp eq i8** %3, null
br i1 %194, label %204, label %195
195: ; preds = %193
store i8* %48, i8** %3
br label %204
196: ; preds = %30
%197 = icmp eq i8** %2, null
br i1 %197, label %199, label %198
198: ; preds = %196
store i8* null, i8** %2
br label %199
199: ; preds = %198, %196
%200 = icmp eq i8** %3, null
br i1 %200, label %202, label %201
201: ; preds = %199
store i8* null, i8** %3
br label %202
202: ; preds = %201, %199
%203 = getelementptr inbounds i8, i8* %31, i64 -1
br label %204
204: ; preds = %53, %62, %172, %136, %153, %186, %137, %116, %131, %81, %107, %123, %145, %179, %169, %98, %72, %101, %90, %30, %8, %35, %56, %193, %195, %4, %202
%205 = phi i8* [ %203, %202 ], [ null, %4 ], [ %190, %195 ], [ %190, %193 ], [ null, %56 ], [ null, %35 ], [ null, %8 ], [ null, %30 ], [ null, %90 ], [ null, %101 ], [ %75, %72 ], [ null, %98 ], [ null, %169 ], [ null, %179 ], [ null, %145 ], [ null, %123 ], [ null, %107 ], [ null, %81 ], [ null, %131 ], [ null, %116 ], [ null, %137 ], [ null, %186 ], [ null, %153 ], [ null, %136 ], [ null, %172 ], [ null, %62 ], [ null, %53 ]
ret i8* %205
}