#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 */
extern int _scan_hrule(const unsigned char *p) {
  const unsigned char *marker = NULL;
  const unsigned char *start = p;
  {
    unsigned char yych;
    static const unsigned char yybm[] = {
        0, 0,  0, 0, 0, 0, 0, 0,  0, 32, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,
        0, 0,  0, 0, 0, 0, 0, 0,  0, 0,  248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0,
        0, 16, 0, 0, 0, 0, 0, 0,  0, 0,  0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,
        0, 0,  0, 0, 0, 0, 0, 0,  0, 0,  0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,
        0, 0,  0, 0, 0, 0, 0, 64, 0, 0,  0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,
        0, 0,  0, 0, 0, 0, 0, 0,  0, 0,  0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,
        0, 0,  0, 0, 0, 0, 0, 0,  0, 0,  0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,
        0, 0,  0, 0, 0, 0, 0, 0,  0, 0,  0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,
        0, 0,  0, 0, 0, 0, 0, 0,  0, 0,  0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,
        0, 0,  0, 0, 0, 0, 0, 0,  0, 0,  0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,
        0, 0,  0, 0, 0, 0, 0, 0,  0, 0,  0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,
        0, 0,  0, 0, 0, 0, 0, 0,  0, 0,  0,   0, 0, 0,
    };
    yych = *p;
    if (yych <= '*') {
      if (yych == '\n')
        goto yy1212;
      if (yych <= ')')
        goto yy1216;
      goto yy1213;
    } else {
      if (yych <= '-') {
        if (yych <= ',')
          goto yy1216;
        goto yy1215;
      } else {
        if (yych == '_')
          goto yy1214;
        goto yy1216;
      }
    }
  yy1212 : { return 0; }
  yy1213:
    yych = *(marker = ++p);
    if (yych == ' ')
      goto yy1238;
    if (yych == '*')
      goto yy1240;
    goto yy1212;
  yy1214:
    yych = *(marker = ++p);
    if (yych == ' ')
      goto yy1228;
    if (yych == '_')
      goto yy1230;
    goto yy1212;
  yy1215:
    yych = *(marker = ++p);
    if (yybm[0 + yych] & 8) {
      goto yy1217;
    }
    if (yych == '-')
      goto yy1220;
    goto yy1212;
  yy1216:
    yych = *++p;
    goto yy1212;
  yy1217:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 8) {
      goto yy1217;
    }
    if (yych == '-')
      goto yy1220;
  yy1219:
    p = marker;
    goto yy1212;
  yy1220:
    ++p;
    yych = *p;
    if (yych == ' ')
      goto yy1220;
    if (yych != '-')
      goto yy1219;
  yy1222:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 16) {
      goto yy1222;
    }
    if (yych <= 0x08)
      goto yy1219;
    if (yych <= '\t')
      goto yy1224;
    if (yych <= '\n')
      goto yy1226;
    goto yy1219;
  yy1224:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 32) {
      goto yy1224;
    }
    if (yych != '\n')
      goto yy1219;
  yy1226:
    ++p;
    { return (p - start); }
  yy1228:
    ++p;
    yych = *p;
    if (yych == ' ')
      goto yy1228;
    if (yych != '_')
      goto yy1219;
  yy1230:
    ++p;
    yych = *p;
    if (yych == ' ')
      goto yy1230;
    if (yych != '_')
      goto yy1219;
  yy1232:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy1232;
    }
    if (yych <= 0x08)
      goto yy1219;
    if (yych <= '\t')
      goto yy1234;
    if (yych <= '\n')
      goto yy1236;
    goto yy1219;
  yy1234:
    ++p;
    yych = *p;
    if (yych <= '\n') {
      if (yych <= 0x08)
        goto yy1219;
      if (yych <= '\t')
        goto yy1234;
    } else {
      if (yych == ' ')
        goto yy1234;
      goto yy1219;
    }
  yy1236:
    ++p;
    { return (p - start); }
  yy1238:
    ++p;
    yych = *p;
    if (yych == ' ')
      goto yy1238;
    if (yych != '*')
      goto yy1219;
  yy1240:
    ++p;
    yych = *p;
    if (yych == ' ')
      goto yy1240;
    if (yych != '*')
      goto yy1219;
  yy1242:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy1242;
    }
    if (yych <= 0x08)
      goto yy1219;
    if (yych <= '\t')
      goto yy1244;
    if (yych <= '\n')
      goto yy1246;
    goto yy1219;
  yy1244:
    ++p;
    yych = *p;
    if (yych <= '\n') {
      if (yych <= 0x08)
        goto yy1219;
      if (yych <= '\t')
        goto yy1244;
    } else {
      if (yych == ' ')
        goto yy1244;
      goto yy1219;
    }
  yy1246:
    ++p;
    { return (p - start); }
  }
}


x86 assembly (clang, -O0):
<_scan_hrule>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
movq   $0x0,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x21(%rbp)
movzbl -0x21(%rbp),%eax
cmp    $0x2a,%eax
jg     1157 <_scan_hrule+0x57>
movzbl -0x21(%rbp),%eax
cmp    $0xa,%eax
jne    1140 <_scan_hrule+0x40>
jmp    1192 <_scan_hrule+0x92>
movzbl -0x21(%rbp),%eax
cmp    $0x29,%eax
jg     1152 <_scan_hrule+0x52>
jmp    1278 <_scan_hrule+0x178>
jmp    119e <_scan_hrule+0x9e>
movzbl -0x21(%rbp),%eax
cmp    $0x2d,%eax
jg     117b <_scan_hrule+0x7b>
movzbl -0x21(%rbp),%eax
cmp    $0x2c,%eax
jg     1176 <_scan_hrule+0x76>
jmp    1278 <_scan_hrule+0x178>
jmp    1222 <_scan_hrule+0x122>
movzbl -0x21(%rbp),%eax
cmp    $0x5f,%eax
jne    118d <_scan_hrule+0x8d>
jmp    11e0 <_scan_hrule+0xe0>
jmp    1278 <_scan_hrule+0x178>
movl   $0x0,-0x4(%rbp)
jmp    1703 <_scan_hrule+0x603>
mov    -0x10(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x10(%rbp)
mov    %rcx,-0x18(%rbp)
mov    0x1(%rax),%al
mov    %al,-0x21(%rbp)
movzbl -0x21(%rbp),%eax
cmp    $0x20,%eax
jne    11c9 <_scan_hrule+0xc9>
jmp    158e <_scan_hrule+0x48e>
movzbl -0x21(%rbp),%eax
cmp    $0x2a,%eax
jne    11db <_scan_hrule+0xdb>
jmp    15cc <_scan_hrule+0x4cc>
jmp    1192 <_scan_hrule+0x92>
mov    -0x10(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x10(%rbp)
mov    %rcx,-0x18(%rbp)
mov    0x1(%rax),%al
mov    %al,-0x21(%rbp)
movzbl -0x21(%rbp),%eax
cmp    $0x20,%eax
jne    120b <_scan_hrule+0x10b>
jmp    1416 <_scan_hrule+0x316>
movzbl -0x21(%rbp),%eax
cmp    $0x5f,%eax
jne    121d <_scan_hrule+0x11d>
jmp    1454 <_scan_hrule+0x354>
jmp    1192 <_scan_hrule+0x92>
mov    -0x10(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x10(%rbp)
mov    %rcx,-0x18(%rbp)
mov    0x1(%rax),%al
mov    %al,-0x21(%rbp)
movzbl -0x21(%rbp),%eax
add    $0x0,%eax
movslq %eax,%rcx
lea    0xdb4(%rip),%rax
movzbl (%rax,%rcx,1),%eax
and    $0x8,%eax
cmp    $0x0,%eax
je     1261 <_scan_hrule+0x161>
jmp    1292 <_scan_hrule+0x192>
movzbl -0x21(%rbp),%eax
cmp    $0x2d,%eax
jne    1273 <_scan_hrule+0x173>
jmp    12f1 <_scan_hrule+0x1f1>
jmp    1192 <_scan_hrule+0x92>
mov    -0x10(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x10(%rbp)
mov    0x1(%rax),%al
mov    %al,-0x21(%rbp)
jmp    1192 <_scan_hrule+0x92>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x21(%rbp)
movzbl -0x21(%rbp),%eax
add    $0x0,%eax
movslq %eax,%rcx
lea    0xd48(%rip),%rax
movzbl (%rax,%rcx,1),%eax
and    $0x8,%eax
cmp    $0x0,%eax
je     12cd <_scan_hrule+0x1cd>
jmp    1292 <_scan_hrule+0x192>
movzbl -0x21(%rbp),%eax
cmp    $0x2d,%eax
jne    12df <_scan_hrule+0x1df>
jmp    12f1 <_scan_hrule+0x1f1>
jmp    12e4 <_scan_hrule+0x1e4>
mov    -0x18(%rbp),%rax
mov    %rax,-0x10(%rbp)
jmp    1192 <_scan_hrule+0x92>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x21(%rbp)
movzbl -0x21(%rbp),%eax
cmp    $0x20,%eax
jne    1318 <_scan_hrule+0x218>
jmp    12f1 <_scan_hrule+0x1f1>
movzbl -0x21(%rbp),%eax
cmp    $0x2d,%eax
je     132a <_scan_hrule+0x22a>
jmp    12e4 <_scan_hrule+0x1e4>
jmp    132f <_scan_hrule+0x22f>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x21(%rbp)
movzbl -0x21(%rbp),%eax
add    $0x0,%eax
movslq %eax,%rcx
lea    0xcab(%rip),%rax
movzbl (%rax,%rcx,1),%eax
and    $0x10,%eax
cmp    $0x0,%eax
je     136a <_scan_hrule+0x26a>
jmp    132f <_scan_hrule+0x22f>
movzbl -0x21(%rbp),%eax
cmp    $0x8,%eax
jg     137c <_scan_hrule+0x27c>
jmp    12e4 <_scan_hrule+0x1e4>
movzbl -0x21(%rbp),%eax
cmp    $0x9,%eax
jg     138e <_scan_hrule+0x28e>
jmp    13a5 <_scan_hrule+0x2a5>
movzbl -0x21(%rbp),%eax
cmp    $0xa,%eax
jg     13a0 <_scan_hrule+0x2a0>
jmp    13f7 <_scan_hrule+0x2f7>
jmp    12e4 <_scan_hrule+0x1e4>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x21(%rbp)
movzbl -0x21(%rbp),%eax
add    $0x0,%eax
movslq %eax,%rcx
lea    0xc35(%rip),%rax
movzbl (%rax,%rcx,1),%eax
and    $0x20,%eax
cmp    $0x0,%eax
je     13e0 <_scan_hrule+0x2e0>
jmp    13a5 <_scan_hrule+0x2a5>
movzbl -0x21(%rbp),%eax
cmp    $0xa,%eax
je     13f2 <_scan_hrule+0x2f2>
jmp    12e4 <_scan_hrule+0x1e4>
jmp    13f7 <_scan_hrule+0x2f7>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%rcx
sub    %rcx,%rax
mov    %eax,-0x4(%rbp)
jmp    1703 <_scan_hrule+0x603>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x21(%rbp)
movzbl -0x21(%rbp),%eax
cmp    $0x20,%eax
jne    143d <_scan_hrule+0x33d>
jmp    1416 <_scan_hrule+0x316>
movzbl -0x21(%rbp),%eax
cmp    $0x5f,%eax
je     144f <_scan_hrule+0x34f>
jmp    12e4 <_scan_hrule+0x1e4>
jmp    1454 <_scan_hrule+0x354>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x21(%rbp)
movzbl -0x21(%rbp),%eax
cmp    $0x20,%eax
jne    147b <_scan_hrule+0x37b>
jmp    1454 <_scan_hrule+0x354>
movzbl -0x21(%rbp),%eax
cmp    $0x5f,%eax
je     148d <_scan_hrule+0x38d>
jmp    12e4 <_scan_hrule+0x1e4>
jmp    1492 <_scan_hrule+0x392>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x21(%rbp)
movzbl -0x21(%rbp),%eax
add    $0x0,%eax
movslq %eax,%rcx
lea    0xb48(%rip),%rax
movzbl (%rax,%rcx,1),%eax
and    $0x40,%eax
cmp    $0x0,%eax
je     14cd <_scan_hrule+0x3cd>
jmp    1492 <_scan_hrule+0x392>
movzbl -0x21(%rbp),%eax
cmp    $0x8,%eax
jg     14df <_scan_hrule+0x3df>
jmp    12e4 <_scan_hrule+0x1e4>
movzbl -0x21(%rbp),%eax
cmp    $0x9,%eax
jg     14f1 <_scan_hrule+0x3f1>
jmp    1508 <_scan_hrule+0x408>
movzbl -0x21(%rbp),%eax
cmp    $0xa,%eax
jg     1503 <_scan_hrule+0x403>
jmp    156f <_scan_hrule+0x46f>
jmp    12e4 <_scan_hrule+0x1e4>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x21(%rbp)
movzbl -0x21(%rbp),%eax
cmp    $0xa,%eax
jg     1553 <_scan_hrule+0x453>
movzbl -0x21(%rbp),%eax
cmp    $0x8,%eax
jg     153c <_scan_hrule+0x43c>
jmp    12e4 <_scan_hrule+0x1e4>
movzbl -0x21(%rbp),%eax
cmp    $0x9,%eax
jg     154e <_scan_hrule+0x44e>
jmp    1508 <_scan_hrule+0x408>
jmp    156a <_scan_hrule+0x46a>
movzbl -0x21(%rbp),%eax
cmp    $0x20,%eax
jne    1565 <_scan_hrule+0x465>
jmp    1508 <_scan_hrule+0x408>
jmp    12e4 <_scan_hrule+0x1e4>
jmp    156f <_scan_hrule+0x46f>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%rcx
sub    %rcx,%rax
mov    %eax,-0x4(%rbp)
jmp    1703 <_scan_hrule+0x603>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x21(%rbp)
movzbl -0x21(%rbp),%eax
cmp    $0x20,%eax
jne    15b5 <_scan_hrule+0x4b5>
jmp    158e <_scan_hrule+0x48e>
movzbl -0x21(%rbp),%eax
cmp    $0x2a,%eax
je     15c7 <_scan_hrule+0x4c7>
jmp    12e4 <_scan_hrule+0x1e4>
jmp    15cc <_scan_hrule+0x4cc>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x21(%rbp)
movzbl -0x21(%rbp),%eax
cmp    $0x20,%eax
jne    15f3 <_scan_hrule+0x4f3>
jmp    15cc <_scan_hrule+0x4cc>
movzbl -0x21(%rbp),%eax
cmp    $0x2a,%eax
je     1605 <_scan_hrule+0x505>
jmp    12e4 <_scan_hrule+0x1e4>
jmp    160a <_scan_hrule+0x50a>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x21(%rbp)
movzbl -0x21(%rbp),%eax
add    $0x0,%eax
movslq %eax,%rcx
lea    0x9d0(%rip),%rax
movzbl (%rax,%rcx,1),%eax
and    $0x80,%eax
cmp    $0x0,%eax
je     1647 <_scan_hrule+0x547>
jmp    160a <_scan_hrule+0x50a>
movzbl -0x21(%rbp),%eax
cmp    $0x8,%eax
jg     1659 <_scan_hrule+0x559>
jmp    12e4 <_scan_hrule+0x1e4>
movzbl -0x21(%rbp),%eax
cmp    $0x9,%eax
jg     166b <_scan_hrule+0x56b>
jmp    1682 <_scan_hrule+0x582>
movzbl -0x21(%rbp),%eax
cmp    $0xa,%eax
jg     167d <_scan_hrule+0x57d>
jmp    16e9 <_scan_hrule+0x5e9>
jmp    12e4 <_scan_hrule+0x1e4>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x21(%rbp)
movzbl -0x21(%rbp),%eax
cmp    $0xa,%eax
jg     16cd <_scan_hrule+0x5cd>
movzbl -0x21(%rbp),%eax
cmp    $0x8,%eax
jg     16b6 <_scan_hrule+0x5b6>
jmp    12e4 <_scan_hrule+0x1e4>
movzbl -0x21(%rbp),%eax
cmp    $0x9,%eax
jg     16c8 <_scan_hrule+0x5c8>
jmp    1682 <_scan_hrule+0x582>
jmp    16e4 <_scan_hrule+0x5e4>
movzbl -0x21(%rbp),%eax
cmp    $0x20,%eax
jne    16df <_scan_hrule+0x5df>
jmp    1682 <_scan_hrule+0x582>
jmp    12e4 <_scan_hrule+0x1e4>
jmp    16e9 <_scan_hrule+0x5e9>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%rcx
sub    %rcx,%rax
mov    %eax,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<_scan_hrule>:
mov    (%rdi),%cl
xor    %eax,%eax
cmp    $0x2a,%cl
ja     1193 <_scan_hrule+0x93>
cmp    $0x2a,%cl
jne    11bc <_scan_hrule+0xbc>
lea    0x1(%rdi),%rcx
mov    0x1(%rdi),%dl
cmp    $0x2a,%dl
je     1150 <_scan_hrule+0x50>
cmp    $0x20,%dl
jne    11bc <_scan_hrule+0xbc>
nopl   0x0(%rax,%rax,1)
movzbl 0x1(%rcx),%edx
add    $0x1,%rcx
cmp    $0x20,%dl
je     1130 <_scan_hrule+0x30>
cmp    $0x2a,%dl
jne    11bc <_scan_hrule+0xbc>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movzbl 0x1(%rcx),%edx
add    $0x1,%rcx
cmp    $0x20,%dl
je     1150 <_scan_hrule+0x50>
cmp    $0x2a,%dl
jne    11bc <_scan_hrule+0xbc>
lea    0xe97(%rip),%rdx
nopl   0x0(%rax)
movzbl 0x1(%rcx),%esi
add    $0x1,%rcx
cmpb   $0x0,(%rsi,%rdx,1)
js     1170 <_scan_hrule+0x70>
lea    -0x1(%rcx),%r8
cmp    $0x9,%sil
jb     11bc <_scan_hrule+0xbc>
je     12d2 <_scan_hrule+0x1d2>
jmp    12be <_scan_hrule+0x1be>
cmp    $0x2d,%cl
ja     123e <_scan_hrule+0x13e>
cmp    $0x2d,%cl
jne    11bc <_scan_hrule+0xbc>
lea    0x1(%rdi),%rcx
movzbl 0x1(%rdi),%edx
lea    0xe50(%rip),%r8
testb  $0x8,(%rdx,%r8,1)
jne    11c0 <_scan_hrule+0xc0>
cmp    $0x2d,%dl
je     11d5 <_scan_hrule+0xd5>
ret
nopl   (%rax)
movzbl 0x1(%rcx),%esi
add    $0x1,%rcx
testb  $0x8,(%rsi,%r8,1)
jne    11c0 <_scan_hrule+0xc0>
cmp    $0x2d,%sil
jne    11bc <_scan_hrule+0xbc>
add    $0xffffffffffffffff,%rcx
nopl   0x0(%rax)
movzbl 0x2(%rcx),%edx
add    $0x1,%rcx
cmp    $0x20,%dl
je     11e0 <_scan_hrule+0xe0>
cmp    $0x2d,%dl
jne    11bc <_scan_hrule+0xbc>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movzbl 0x2(%rcx),%esi
add    $0x1,%rcx
testb  $0x10,(%rsi,%r8,1)
jne    1200 <_scan_hrule+0x100>
cmp    $0x9,%sil
jb     11bc <_scan_hrule+0xbc>
jne    1320 <_scan_hrule+0x220>
nopl   0x0(%rax,%rax,1)
movzbl 0x2(%rcx),%esi
add    $0x1,%rcx
testb  $0x20,(%rsi,%r8,1)
jne    1220 <_scan_hrule+0x120>
cmp    $0xa,%sil
je     132a <_scan_hrule+0x22a>
jmp    11bc <_scan_hrule+0xbc>
cmp    $0x5f,%cl
jne    11bc <_scan_hrule+0xbc>
lea    0x1(%rdi),%rcx
mov    0x1(%rdi),%dl
cmp    $0x5f,%dl
je     1280 <_scan_hrule+0x180>
cmp    $0x20,%dl
jne    11bc <_scan_hrule+0xbc>
nopl   0x0(%rax)
movzbl 0x1(%rcx),%edx
add    $0x1,%rcx
cmp    $0x20,%dl
je     1260 <_scan_hrule+0x160>
cmp    $0x5f,%dl
jne    11bc <_scan_hrule+0xbc>
cs nopw 0x0(%rax,%rax,1)
movzbl 0x1(%rcx),%edx
add    $0x1,%rcx
cmp    $0x20,%dl
je     1280 <_scan_hrule+0x180>
cmp    $0x5f,%dl
jne    11bc <_scan_hrule+0xbc>
lea    0xd63(%rip),%rdx
nopl   (%rax)
movzbl 0x1(%rcx),%esi
add    $0x1,%rcx
testb  $0x40,(%rsi,%rdx,1)
jne    12a0 <_scan_hrule+0x1a0>
lea    -0x1(%rcx),%r8
cmp    $0x9,%sil
jb     11bc <_scan_hrule+0xbc>
je     12f9 <_scan_hrule+0x1f9>
cmp    $0xb,%sil
jb     1315 <_scan_hrule+0x215>
jmp    11bc <_scan_hrule+0xbc>
cmp    $0x20,%dl
jne    11bc <_scan_hrule+0xbc>
mov    %rcx,%r8
add    $0x1,%rcx
movzbl 0x1(%r8),%edx
cmp    $0xa,%dl
ja     12c9 <_scan_hrule+0x1c9>
cmp    $0x9,%dl
jb     11bc <_scan_hrule+0xbc>
je     12d2 <_scan_hrule+0x1d2>
jmp    1315 <_scan_hrule+0x215>
cmp    $0x20,%dl
jne    11bc <_scan_hrule+0xbc>
mov    %rcx,%r8
add    $0x1,%rcx
movzbl 0x1(%r8),%edx
cmp    $0xa,%dl
ja     12f0 <_scan_hrule+0x1f0>
cmp    $0x9,%dl
jb     11bc <_scan_hrule+0xbc>
je     12f9 <_scan_hrule+0x1f9>
sub    %edi,%r8d
add    $0x2,%r8d
mov    %r8d,%eax
ret
cmp    $0xb,%sil
jae    11bc <_scan_hrule+0xbc>
sub    %edi,%ecx
add    $0x2,%ecx
mov    %ecx,%eax
ret

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

LLVM IR (-O2):
@_scan_hrule.yybm = internal unnamed_addr constant <{ [96 x i8], [160 x i8] }> <{ [96 x i8] c"\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\F8\00\00\00\00\00\00\00\00\00\80\00\00\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00@", [160 x i8] zeroinitializer }>
define i32 @_scan_hrule(i8* %0) {
%2 = load i8, i8* %0
%3 = icmp ult i8 %2, 43
br i1 %3, label %4, label %6
4: ; preds = %1
%5 = icmp eq i8 %2, 42
br i1 %5, label %12, label %165
6: ; preds = %1
%7 = icmp ult i8 %2, 46
br i1 %7, label %8, label %10
8: ; preds = %6
%9 = icmp eq i8 %2, 45
br i1 %9, label %18, label %165
10: ; preds = %6
%11 = icmp eq i8 %2, 95
br i1 %11, label %15, label %165
12: ; preds = %4
%13 = getelementptr inbounds i8, i8* %0, i64 1
%14 = load i8, i8* %13
switch i8 %14, label %165 [
i8 32, label %122
i8 42, label %126
]
15: ; preds = %10
%16 = getelementptr inbounds i8, i8* %0, i64 1
%17 = load i8, i8* %16
switch i8 %17, label %165 [
i8 32, label %78
i8 95, label %82
]
18: ; preds = %8
%19 = getelementptr inbounds i8, i8* %0, i64 1
%20 = load i8, i8* %19
%21 = zext i8 %20 to i64
%22 = getelementptr inbounds [256 x i8], [256 x i8]* bitcast (<{ [96 x i8], [160 x i8] }>* @_scan_hrule.yybm to [256 x i8]*), i64 0, i64 %21
%23 = load i8, i8* %22
%24 = and i8 %23, 8
%25 = icmp eq i8 %24, 0
br i1 %25, label %26, label %28
26: ; preds = %18
%27 = icmp eq i8 %20, 45
br i1 %27, label %39, label %165
28: ; preds = %18, %28
%29 = phi i8* [ %30, %28 ], [ %19, %18 ]
%30 = getelementptr inbounds i8, i8* %29, i64 1
%31 = load i8, i8* %30
%32 = zext i8 %31 to i64
%33 = getelementptr inbounds [256 x i8], [256 x i8]* bitcast (<{ [96 x i8], [160 x i8] }>* @_scan_hrule.yybm to [256 x i8]*), i64 0, i64 %32
%34 = load i8, i8* %33
%35 = and i8 %34, 8
%36 = icmp eq i8 %35, 0
br i1 %36, label %37, label %28
37: ; preds = %28
%38 = icmp eq i8 %31, 45
br i1 %38, label %39, label %165
39: ; preds = %26, %37
%40 = phi i8* [ %30, %37 ], [ %19, %26 ]
br label %41
41: ; preds = %39, %41
%42 = phi i8* [ %43, %41 ], [ %40, %39 ]
%43 = getelementptr inbounds i8, i8* %42, i64 1
%44 = load i8, i8* %43
switch i8 %44, label %165 [
i8 32, label %41
i8 45, label %45
]
45: ; preds = %41, %45
%46 = phi i8* [ %47, %45 ], [ %43, %41 ]
%47 = getelementptr inbounds i8, i8* %46, i64 1
%48 = load i8, i8* %47
%49 = zext i8 %48 to i64
%50 = getelementptr inbounds [256 x i8], [256 x i8]* bitcast (<{ [96 x i8], [160 x i8] }>* @_scan_hrule.yybm to [256 x i8]*), i64 0, i64 %49
%51 = load i8, i8* %50
%52 = and i8 %51, 16
%53 = icmp eq i8 %52, 0
br i1 %53, label %54, label %45
54: ; preds = %45
%55 = icmp ult i8 %48, 9
br i1 %55, label %165, label %56
56: ; preds = %54
%57 = icmp eq i8 %48, 9
br i1 %57, label %60, label %58
58: ; preds = %56
%59 = icmp ult i8 %48, 11
br i1 %59, label %71, label %165
60: ; preds = %56, %60
%61 = phi i8* [ %62, %60 ], [ %47, %56 ]
%62 = getelementptr inbounds i8, i8* %61, i64 1
%63 = load i8, i8* %62
%64 = zext i8 %63 to i64
%65 = getelementptr inbounds [256 x i8], [256 x i8]* bitcast (<{ [96 x i8], [160 x i8] }>* @_scan_hrule.yybm to [256 x i8]*), i64 0, i64 %64
%66 = load i8, i8* %65
%67 = and i8 %66, 32
%68 = icmp eq i8 %67, 0
br i1 %68, label %69, label %60
69: ; preds = %60
%70 = icmp eq i8 %63, 10
br i1 %70, label %71, label %165
71: ; preds = %69, %58
%72 = phi i8* [ %61, %69 ], [ %46, %58 ]
%73 = getelementptr inbounds i8, i8* %72, i64 2
%74 = ptrtoint i8* %73 to i64
%75 = ptrtoint i8* %0 to i64
%76 = sub i64 %74, %75
%77 = trunc i64 %76 to i32
br label %165
78: ; preds = %15, %78
%79 = phi i8* [ %80, %78 ], [ %16, %15 ]
%80 = getelementptr inbounds i8, i8* %79, i64 1
%81 = load i8, i8* %80
switch i8 %81, label %165 [
i8 32, label %78
i8 95, label %82
]
82: ; preds = %78, %15
%83 = phi i8* [ %16, %15 ], [ %80, %78 ]
br label %84
84: ; preds = %82, %84
%85 = phi i8* [ %86, %84 ], [ %83, %82 ]
%86 = getelementptr inbounds i8, i8* %85, i64 1
%87 = load i8, i8* %86
switch i8 %87, label %165 [
i8 32, label %84
i8 95, label %88
]
88: ; preds = %84, %88
%89 = phi i8* [ %90, %88 ], [ %86, %84 ]
%90 = getelementptr inbounds i8, i8* %89, i64 1
%91 = load i8, i8* %90
%92 = zext i8 %91 to i64
%93 = getelementptr inbounds [256 x i8], [256 x i8]* bitcast (<{ [96 x i8], [160 x i8] }>* @_scan_hrule.yybm to [256 x i8]*), i64 0, i64 %92
%94 = load i8, i8* %93
%95 = and i8 %94, 64
%96 = icmp eq i8 %95, 0
br i1 %96, label %97, label %88
97: ; preds = %88
%98 = icmp ult i8 %91, 9
br i1 %98, label %165, label %99
99: ; preds = %97
%100 = icmp eq i8 %91, 9
br i1 %100, label %103, label %101
101: ; preds = %99
%102 = icmp ult i8 %91, 11
br i1 %102, label %115, label %165
103: ; preds = %99, %112
%104 = phi i8* [ %105, %112 ], [ %90, %99 ]
%105 = getelementptr inbounds i8, i8* %104, i64 1
%106 = load i8, i8* %105
%107 = icmp ult i8 %106, 11
br i1 %107, label %108, label %113
108: ; preds = %103
%109 = icmp ult i8 %106, 9
br i1 %109, label %165, label %110
110: ; preds = %108
%111 = icmp eq i8 %106, 9
br i1 %111, label %112, label %115
112: ; preds = %110, %113
br label %103
113: ; preds = %103
%114 = icmp eq i8 %106, 32
br i1 %114, label %112, label %165
115: ; preds = %110, %101
%116 = phi i8* [ %89, %101 ], [ %104, %110 ]
%117 = getelementptr inbounds i8, i8* %116, i64 2
%118 = ptrtoint i8* %117 to i64
%119 = ptrtoint i8* %0 to i64
%120 = sub i64 %118, %119
%121 = trunc i64 %120 to i32
br label %165
122: ; preds = %12, %122
%123 = phi i8* [ %124, %122 ], [ %13, %12 ]
%124 = getelementptr inbounds i8, i8* %123, i64 1
%125 = load i8, i8* %124
switch i8 %125, label %165 [
i8 32, label %122
i8 42, label %126
]
126: ; preds = %122, %12
%127 = phi i8* [ %13, %12 ], [ %124, %122 ]
br label %128
128: ; preds = %126, %128
%129 = phi i8* [ %130, %128 ], [ %127, %126 ]
%130 = getelementptr inbounds i8, i8* %129, i64 1
%131 = load i8, i8* %130
switch i8 %131, label %165 [
i8 32, label %128
i8 42, label %132
]
132: ; preds = %128, %132
%133 = phi i8* [ %134, %132 ], [ %130, %128 ]
%134 = getelementptr inbounds i8, i8* %133, i64 1
%135 = load i8, i8* %134
%136 = zext i8 %135 to i64
%137 = getelementptr inbounds [256 x i8], [256 x i8]* bitcast (<{ [96 x i8], [160 x i8] }>* @_scan_hrule.yybm to [256 x i8]*), i64 0, i64 %136
%138 = load i8, i8* %137
%139 = icmp sgt i8 %138, -1
br i1 %139, label %140, label %132
140: ; preds = %132
%141 = icmp ult i8 %135, 9
br i1 %141, label %165, label %142
142: ; preds = %140
%143 = icmp eq i8 %135, 9
br i1 %143, label %146, label %144
144: ; preds = %142
%145 = icmp ult i8 %135, 11
br i1 %145, label %158, label %165
146: ; preds = %142, %155
%147 = phi i8* [ %148, %155 ], [ %134, %142 ]
%148 = getelementptr inbounds i8, i8* %147, i64 1
%149 = load i8, i8* %148
%150 = icmp ult i8 %149, 11
br i1 %150, label %151, label %156
151: ; preds = %146
%152 = icmp ult i8 %149, 9
br i1 %152, label %165, label %153
153: ; preds = %151
%154 = icmp eq i8 %149, 9
br i1 %154, label %155, label %158
155: ; preds = %153, %156
br label %146
156: ; preds = %146
%157 = icmp eq i8 %149, 32
br i1 %157, label %155, label %165
158: ; preds = %153, %144
%159 = phi i8* [ %133, %144 ], [ %147, %153 ]
%160 = getelementptr inbounds i8, i8* %159, i64 2
%161 = ptrtoint i8* %160 to i64
%162 = ptrtoint i8* %0 to i64
%163 = sub i64 %161, %162
%164 = trunc i64 %163 to i32
br label %165
165: ; preds = %78, %84, %108, %113, %41, %122, %128, %151, %156, %37, %54, %58, %69, %97, %101, %140, %144, %8, %10, %15, %12, %4, %26, %158, %115, %71
%166 = phi i32 [ %164, %158 ], [ %77, %71 ], [ %121, %115 ], [ 0, %26 ], [ 0, %4 ], [ 0, %12 ], [ 0, %15 ], [ 0, %10 ], [ 0, %8 ], [ 0, %144 ], [ 0, %140 ], [ 0, %101 ], [ 0, %97 ], [ 0, %69 ], [ 0, %58 ], [ 0, %54 ], [ 0, %37 ], [ 0, %156 ], [ 0, %151 ], [ 0, %128 ], [ 0, %122 ], [ 0, %41 ], [ 0, %113 ], [ 0, %108 ], [ 0, %84 ], [ 0, %78 ]
ret i32 %166
}