cmark

My personal build of CMark ✏️

Commit
9f7d0a674b0a9c741daf359516d80dbf13ec960a
Parent
a32124dd5dfcb6138e422c7d76b236fd2161c275
Author
John MacFarlane <jgm@berkeley.edu>
Date

Disallow unescaped ( in parenthesized link title.

In accord with spec change.

Diffstat

2 files changed, 1340 insertions, 543 deletions

Status File Name N° Changes Insertions Deletions
Modified src/scanners.c 1881 1339 542
Modified src/scanners.re 2 1 1
diff --git a/src/scanners.c b/src/scanners.c
@@ -1,4 +1,4 @@
-/* Generated by re2c 1.0.2 */
+/* Generated by re2c 0.16 */
 #include <stdlib.h>
 #include "chunk.h"
 #include "scanners.h"
@@ -738,8 +738,8 @@ bufsize_t _scan_scheme(const unsigned char *p) {
           goto yy6;
       }
     }
-    yych = *++p;
-    if (yych == ':')
+    ++p;
+    if ((yych = *p) == ':')
       goto yy8;
     goto yy6;
   }
@@ -864,7 +864,8 @@ bufsize_t _scan_autolink_uri(const unsigned char *p) {
       }
     }
   yy47:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 128) {
       goto yy47;
     }
@@ -928,49 +929,56 @@ bufsize_t _scan_autolink_uri(const unsigned char *p) {
     ++p;
     { return (bufsize_t)(p - start); }
   yy52:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy45;
     if (yych <= 0xBF)
       goto yy47;
     goto yy45;
   yy53:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x9F)
       goto yy45;
     if (yych <= 0xBF)
       goto yy52;
     goto yy45;
   yy54:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy45;
     if (yych <= 0xBF)
       goto yy52;
     goto yy45;
   yy55:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy45;
     if (yych <= 0x9F)
       goto yy52;
     goto yy45;
   yy56:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x8F)
       goto yy45;
     if (yych <= 0xBF)
       goto yy54;
     goto yy45;
   yy57:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy45;
     if (yych <= 0xBF)
       goto yy54;
     goto yy45;
   yy58:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy45;
     if (yych <= 0x8F)
@@ -1571,8 +1579,8 @@ bufsize_t _scan_autolink_uri(const unsigned char *p) {
           goto yy45;
       }
     }
-    yych = *++p;
-    if (yych == ':')
+    ++p;
+    if ((yych = *p) == ':')
       goto yy47;
     goto yy45;
   }
@@ -1674,7 +1682,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy92:
-    yych = *++p;
+    ++p;
+    yych = *p;
   yy93:
     if (yybm[0 + yych] & 128) {
       goto yy92;
@@ -1687,7 +1696,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
     p = marker;
     goto yy90;
   yy95:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '@') {
       if (yych <= '/')
         goto yy94;
@@ -1702,7 +1712,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
         goto yy94;
     }
   yy96:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -1731,7 +1742,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
         goto yy94;
       }
     }
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy101;
@@ -1752,7 +1764,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy98:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -1786,7 +1799,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
     ++p;
     { return (bufsize_t)(p - start); }
   yy101:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy103;
@@ -1807,7 +1821,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy102:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -1837,7 +1852,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy103:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy105;
@@ -1858,7 +1874,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy104:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -1888,7 +1905,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy105:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy107;
@@ -1909,7 +1927,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy106:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -1939,7 +1958,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy107:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy109;
@@ -1960,7 +1980,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy108:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -1990,7 +2011,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy109:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy111;
@@ -2011,7 +2033,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy110:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -2041,7 +2064,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy111:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy113;
@@ -2062,7 +2086,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy112:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -2092,7 +2117,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy113:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy115;
@@ -2113,7 +2139,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy114:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -2143,7 +2170,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy115:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy117;
@@ -2164,7 +2192,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy116:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -2194,7 +2223,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy117:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy119;
@@ -2215,7 +2245,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy118:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -2245,7 +2276,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy119:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy121;
@@ -2266,7 +2298,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy120:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -2296,7 +2329,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy121:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy123;
@@ -2317,7 +2351,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy122:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -2347,7 +2382,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy123:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy125;
@@ -2368,7 +2404,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy124:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -2398,7 +2435,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy125:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy127;
@@ -2419,7 +2457,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy126:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -2449,7 +2488,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy127:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy129;
@@ -2470,7 +2510,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy128:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -2500,7 +2541,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy129:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy131;
@@ -2521,7 +2563,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy130:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -2551,7 +2594,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy131:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy133;
@@ -2572,7 +2616,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy132:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -2602,7 +2647,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy133:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy135;
@@ -2623,7 +2669,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy134:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -2653,7 +2700,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy135:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy137;
@@ -2674,7 +2722,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy136:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -2704,7 +2753,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy137:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy139;
@@ -2725,7 +2775,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy138:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -2755,7 +2806,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy139:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy141;
@@ -2776,7 +2828,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy140:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -2806,7 +2859,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy141:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy143;
@@ -2827,7 +2881,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy142:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -2857,7 +2912,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy143:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy145;
@@ -2878,7 +2934,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy144:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -2908,7 +2965,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy145:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy147;
@@ -2929,7 +2987,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy146:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -2959,7 +3018,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy147:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy149;
@@ -2980,7 +3040,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy148:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -3010,7 +3071,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy149:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy151;
@@ -3031,7 +3093,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy150:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -3061,7 +3124,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy151:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy153;
@@ -3082,7 +3146,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy152:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -3112,7 +3177,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy153:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy155;
@@ -3133,7 +3199,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy154:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -3163,7 +3230,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy155:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy157;
@@ -3184,7 +3252,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy156:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -3214,7 +3283,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy157:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy159;
@@ -3235,7 +3305,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy158:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -3265,7 +3336,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy159:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy161;
@@ -3286,7 +3358,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy160:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -3316,7 +3389,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy161:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy163;
@@ -3337,7 +3411,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy162:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -3367,7 +3442,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy163:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy165;
@@ -3388,7 +3464,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy164:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -3418,7 +3495,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy165:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy167;
@@ -3439,7 +3517,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy166:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -3469,7 +3548,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy167:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy169;
@@ -3490,7 +3570,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy168:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -3520,7 +3601,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy169:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy171;
@@ -3541,7 +3623,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy170:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -3571,7 +3654,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy171:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy173;
@@ -3592,7 +3676,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy172:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -3622,7 +3707,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy173:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy175;
@@ -3643,7 +3729,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy174:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -3673,7 +3760,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy175:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy177;
@@ -3694,7 +3782,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy176:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -3724,7 +3813,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy177:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy179;
@@ -3745,7 +3835,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy178:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -3775,7 +3866,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy179:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy181;
@@ -3796,7 +3888,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy180:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -3826,7 +3919,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy181:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy183;
@@ -3847,7 +3941,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy182:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -3877,7 +3972,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy183:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy185;
@@ -3898,7 +3994,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy184:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -3928,7 +4025,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy185:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy187;
@@ -3949,7 +4047,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy186:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -3979,7 +4078,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy187:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy189;
@@ -4000,7 +4100,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy188:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -4030,7 +4131,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy189:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy191;
@@ -4051,7 +4153,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy190:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -4081,7 +4184,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy191:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy193;
@@ -4102,7 +4206,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy192:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -4132,7 +4237,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy193:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy195;
@@ -4153,7 +4259,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy194:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -4183,7 +4290,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy195:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy197;
@@ -4204,7 +4312,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy196:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -4234,7 +4343,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy197:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy199;
@@ -4255,7 +4365,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy198:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -4285,7 +4396,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy199:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy201;
@@ -4306,7 +4418,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy200:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -4336,7 +4449,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy201:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy203;
@@ -4357,7 +4471,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy202:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -4387,7 +4502,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy203:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy205;
@@ -4408,7 +4524,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy204:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -4438,7 +4555,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy205:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy207;
@@ -4459,7 +4577,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy206:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -4489,7 +4608,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy207:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy209;
@@ -4510,7 +4630,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy208:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -4540,7 +4661,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy209:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy211;
@@ -4561,7 +4683,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy210:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -4591,7 +4714,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy211:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy213;
@@ -4612,7 +4736,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy212:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -4642,7 +4767,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy213:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy215;
@@ -4663,7 +4789,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy214:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -4693,7 +4820,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy215:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy217;
@@ -4714,7 +4842,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy216:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -4744,7 +4873,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy217:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '9') {
       if (yych == '-')
         goto yy219;
@@ -4765,7 +4895,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy218:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
@@ -4795,7 +4926,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy219:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '@') {
       if (yych <= '/')
         goto yy94;
@@ -4812,7 +4944,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       goto yy94;
     }
   yy220:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= '-')
@@ -4838,7 +4971,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       }
     }
   yy221:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych == '.')
       goto yy95;
     if (yych == '>')
@@ -4856,37 +4990,519 @@ bufsize_t _scan_html_tag(const unsigned char *p) {
     unsigned char yych;
     static const unsigned char yybm[] = {
         /* table 1 .. 8: 0 */
-        0, 250, 250, 250, 250, 250, 250, 250, 250, 235, 235, 235, 235, 235, 250,
-        250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250,
-        250, 250, 250, 235, 250, 202, 250, 250, 250, 250, 170, 250, 250, 250,
-        250, 250, 246, 254, 250, 254, 254, 254, 254, 254, 254, 254, 254, 254,
-        254, 254, 250, 234, 234, 232, 250, 250, 254, 254, 254, 254, 254, 254,
-        254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
-        254, 254, 254, 254, 254, 254, 250, 250, 122, 250, 254, 234, 254, 254,
-        254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
-        254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 250, 250, 250, 250,
-        250, 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,
+        250,
+        250,
+        250,
+        250,
+        250,
+        250,
+        250,
+        250,
+        235,
+        235,
+        235,
+        235,
+        235,
+        250,
+        250,
+        250,
+        250,
+        250,
+        250,
+        250,
+        250,
+        250,
+        250,
+        250,
+        250,
+        250,
+        250,
+        250,
+        250,
+        250,
+        250,
+        235,
+        250,
+        202,
+        250,
+        250,
+        250,
+        250,
+        170,
+        250,
+        250,
+        250,
+        250,
+        250,
+        246,
+        254,
+        250,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        250,
+        234,
+        234,
+        232,
+        250,
+        250,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        250,
+        250,
+        122,
+        250,
+        254,
+        234,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        250,
+        250,
+        250,
+        250,
+        250,
+        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,
         /* table 9 .. 11: 256 */
-        0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 192, 128, 128, 192, 192, 192, 192, 192, 192, 192, 192, 192,
-        192, 128, 128, 128, 128, 128, 0, 128, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 128, 128, 128, 128, 128, 128, 192, 192, 192,
-        192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
-        192, 192, 192, 192, 192, 192, 192, 192, 192, 128, 128, 128, 128, 128, 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,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        192,
+        128,
+        128,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        128,
+        128,
+        128,
+        128,
+        128,
+        0,
+        128,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        128,
+        128,
+        128,
+        128,
+        128,
+        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 <= '>') {
@@ -4949,34 +5565,33 @@ bufsize_t _scan_html_tag(const unsigned char *p) {
     goto yy225;
   yy229:
     yych = *(marker = ++p);
-    if (yych <= '.') {
-      if (yych <= 0x1F) {
-        if (yych <= 0x08)
-          goto yy225;
-        if (yych <= '\r')
-          goto yy250;
+    if (yybm[0 + yych] & 1) {
+      goto yy247;
+    }
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych == '-')
+          goto yy249;
         goto yy225;
       } else {
-        if (yych <= ' ')
-          goto yy250;
-        if (yych == '-')
-          goto yy250;
+        if (yych <= '/')
+          goto yy251;
+        if (yych <= '9')
+          goto yy249;
         goto yy225;
       }
     } else {
-      if (yych <= '@') {
-        if (yych <= '9')
-          goto yy250;
-        if (yych == '>')
-          goto yy250;
-        goto yy225;
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy252;
+        if (yych <= '@')
+          goto yy225;
+        goto yy249;
       } else {
-        if (yych <= 'Z')
-          goto yy250;
         if (yych <= '`')
           goto yy225;
         if (yych <= 'z')
-          goto yy250;
+          goto yy249;
         goto yy225;
       }
     }
@@ -4988,7 +5603,8 @@ bufsize_t _scan_html_tag(const unsigned char *p) {
     p = marker;
     goto yy225;
   yy232:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[256 + yych] & 32) {
       goto yy232;
     }
@@ -5007,7 +5623,8 @@ bufsize_t _scan_html_tag(const unsigned char *p) {
       goto yy257;
     goto yy231;
   yy235:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[256 + yych] & 64) {
       goto yy235;
     }
@@ -5025,7 +5642,8 @@ bufsize_t _scan_html_tag(const unsigned char *p) {
       goto yy231;
     }
   yy237:
-    yych = *++p;
+    ++p;
+    yych = *p;
   yy238:
     if (yybm[256 + yych] & 128) {
       goto yy237;
@@ -5058,7 +5676,8 @@ bufsize_t _scan_html_tag(const unsigned char *p) {
         goto yy231;
       }
     }
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0xE0) {
       if (yych <= '>') {
         if (yych <= 0x00)
@@ -5090,56 +5709,64 @@ bufsize_t _scan_html_tag(const unsigned char *p) {
       }
     }
   yy240:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy237;
     goto yy231;
   yy241:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x9F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy240;
     goto yy231;
   yy242:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy240;
     goto yy231;
   yy243:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0x9F)
       goto yy240;
     goto yy231;
   yy244:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x8F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy242;
     goto yy231;
   yy245:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy242;
     goto yy231;
   yy246:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0x8F)
       goto yy242;
     goto yy231;
   yy247:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 1) {
       goto yy247;
     }
@@ -5171,8 +5798,8 @@ bufsize_t _scan_html_tag(const unsigned char *p) {
       }
     }
   yy249:
-    yych = *++p;
-  yy250:
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 1) {
       goto yy247;
     }
@@ -5218,7 +5845,8 @@ bufsize_t _scan_html_tag(const unsigned char *p) {
       goto yy231;
     goto yy263;
   yy255:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 2) {
       goto yy255;
     }
@@ -5259,7 +5887,8 @@ bufsize_t _scan_html_tag(const unsigned char *p) {
       goto yy279;
     goto yy231;
   yy258:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x1F) {
       if (yych <= 0x08)
         goto yy231;
@@ -5274,7 +5903,8 @@ bufsize_t _scan_html_tag(const unsigned char *p) {
       goto yy231;
     }
   yy260:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 4) {
       goto yy260;
     }
@@ -5302,7 +5932,8 @@ bufsize_t _scan_html_tag(const unsigned char *p) {
       }
     }
   yy262:
-    yych = *++p;
+    ++p;
+    yych = *p;
   yy263:
     if (yybm[0 + yych] & 8) {
       goto yy262;
@@ -5344,98 +5975,112 @@ bufsize_t _scan_html_tag(const unsigned char *p) {
       goto yy231;
     goto yy263;
   yy265:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy262;
     goto yy231;
   yy266:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x9F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy265;
     goto yy231;
   yy267:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy265;
     goto yy231;
   yy268:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0x9F)
       goto yy265;
     goto yy231;
   yy269:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x8F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy267;
     goto yy231;
   yy270:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy267;
     goto yy231;
   yy271:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0x8F)
       goto yy267;
     goto yy231;
   yy272:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy255;
     goto yy231;
   yy273:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x9F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy272;
     goto yy231;
   yy274:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy272;
     goto yy231;
   yy275:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0x9F)
       goto yy272;
     goto yy231;
   yy276:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x8F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy274;
     goto yy231;
   yy277:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy274;
     goto yy231;
   yy278:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0x8F)
@@ -5449,7 +6094,8 @@ bufsize_t _scan_html_tag(const unsigned char *p) {
       goto yy285;
     goto yy231;
   yy280:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '<') {
       if (yych <= ' ') {
         if (yych <= 0x08)
@@ -5494,7 +6140,8 @@ bufsize_t _scan_html_tag(const unsigned char *p) {
       }
     }
   yy282:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 16) {
       goto yy286;
     }
@@ -5530,7 +6177,8 @@ bufsize_t _scan_html_tag(const unsigned char *p) {
       }
     }
   yy284:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 8) {
       goto yy262;
     }
@@ -5571,7 +6219,8 @@ bufsize_t _scan_html_tag(const unsigned char *p) {
       goto yy299;
     goto yy231;
   yy286:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 16) {
       goto yy286;
     }
@@ -5607,7 +6256,8 @@ bufsize_t _scan_html_tag(const unsigned char *p) {
       }
     }
   yy288:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 32) {
       goto yy288;
     }
@@ -5641,7 +6291,8 @@ bufsize_t _scan_html_tag(const unsigned char *p) {
       }
     }
   yy290:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 64) {
       goto yy290;
     }
@@ -5675,49 +6326,56 @@ bufsize_t _scan_html_tag(const unsigned char *p) {
       }
     }
   yy292:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy286;
     goto yy231;
   yy293:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x9F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy292;
     goto yy231;
   yy294:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy292;
     goto yy231;
   yy295:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0x9F)
       goto yy292;
     goto yy231;
   yy296:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x8F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy294;
     goto yy231;
   yy297:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy294;
     goto yy231;
   yy298:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0x8F)
@@ -5731,7 +6389,8 @@ bufsize_t _scan_html_tag(const unsigned char *p) {
       goto yy315;
     goto yy231;
   yy300:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 1) {
       goto yy247;
     }
@@ -5741,98 +6400,112 @@ bufsize_t _scan_html_tag(const unsigned char *p) {
       goto yy252;
     goto yy231;
   yy301:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy288;
     goto yy231;
   yy302:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x9F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy301;
     goto yy231;
   yy303:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy301;
     goto yy231;
   yy304:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0x9F)
       goto yy301;
     goto yy231;
   yy305:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x8F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy303;
     goto yy231;
   yy306:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy303;
     goto yy231;
   yy307:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0x8F)
       goto yy303;
     goto yy231;
   yy308:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy290;
     goto yy231;
   yy309:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x9F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy308;
     goto yy231;
   yy310:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy308;
     goto yy231;
   yy311:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0x9F)
       goto yy308;
     goto yy231;
   yy312:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x8F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy310;
     goto yy231;
   yy313:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy310;
     goto yy231;
   yy314:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0x8F)
@@ -5843,7 +6516,8 @@ bufsize_t _scan_html_tag(const unsigned char *p) {
     if (yych != '[')
       goto yy231;
   yy316:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 128) {
       goto yy316;
     }
@@ -5875,7 +6549,8 @@ bufsize_t _scan_html_tag(const unsigned char *p) {
         goto yy231;
       }
     }
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 128) {
       goto yy316;
     }
@@ -5909,56 +6584,64 @@ bufsize_t _scan_html_tag(const unsigned char *p) {
       }
     }
   yy319:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy316;
     goto yy231;
   yy320:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x9F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy319;
     goto yy231;
   yy321:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy319;
     goto yy231;
   yy322:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0x9F)
       goto yy319;
     goto yy231;
   yy323:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x8F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy321;
     goto yy231;
   yy324:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0xBF)
       goto yy321;
     goto yy231;
   yy325:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy231;
     if (yych <= 0x8F)
       goto yy321;
     goto yy231;
   yy326:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0xE0) {
       if (yych <= '>') {
         if (yych <= 0x00)
@@ -7678,8 +8361,8 @@ bufsize_t _scan_html_block_start(const unsigned char *p) {
     ++p;
     { return 5; }
   yy490:
-    yych = *++p;
-    if (yych == 'T')
+    ++p;
+    if ((yych = *p) == 'T')
       goto yy438;
     if (yych == 't')
       goto yy438;
@@ -7753,7 +8436,8 @@ bufsize_t _scan_html_block_start_7(const unsigned char *p) {
       goto yy513;
     }
   yy498:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 2) {
       goto yy502;
     }
@@ -7785,7 +8469,8 @@ bufsize_t _scan_html_block_start_7(const unsigned char *p) {
       }
     }
   yy500:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '/') {
       if (yych <= 0x1F) {
         if (yych <= 0x08)
@@ -7818,7 +8503,8 @@ bufsize_t _scan_html_block_start_7(const unsigned char *p) {
       }
     }
   yy502:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 2) {
       goto yy502;
     }
@@ -7853,7 +8539,8 @@ bufsize_t _scan_html_block_start_7(const unsigned char *p) {
     if (yych != '>')
       goto yy497;
   yy505:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 4) {
       goto yy505;
     }
@@ -7867,7 +8554,8 @@ bufsize_t _scan_html_block_start_7(const unsigned char *p) {
       goto yy514;
     goto yy497;
   yy507:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x1F) {
       if (yych <= 0x08)
         goto yy497;
@@ -7882,7 +8570,8 @@ bufsize_t _scan_html_block_start_7(const unsigned char *p) {
       goto yy497;
     }
   yy509:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 8) {
       goto yy509;
     }
@@ -7911,7 +8600,8 @@ bufsize_t _scan_html_block_start_7(const unsigned char *p) {
     }
   yy511:
     yyaccept = 1;
-    yych = *(marker = ++p);
+    marker = ++p;
+    yych = *p;
     if (yybm[0 + yych] & 4) {
       goto yy505;
     }
@@ -7925,10 +8615,11 @@ bufsize_t _scan_html_block_start_7(const unsigned char *p) {
       goto yy514;
   yy513 : { return 7; }
   yy514:
-    ++p;
+    yych = *++p;
     goto yy513;
   yy515:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '<') {
       if (yych <= ' ') {
         if (yych <= 0x08)
@@ -7973,7 +8664,8 @@ bufsize_t _scan_html_block_start_7(const unsigned char *p) {
       }
     }
   yy517:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 32) {
       goto yy519;
     }
@@ -8009,7 +8701,8 @@ bufsize_t _scan_html_block_start_7(const unsigned char *p) {
       }
     }
   yy519:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 32) {
       goto yy519;
     }
@@ -8045,7 +8738,8 @@ bufsize_t _scan_html_block_start_7(const unsigned char *p) {
       }
     }
   yy521:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 64) {
       goto yy521;
     }
@@ -8079,7 +8773,8 @@ bufsize_t _scan_html_block_start_7(const unsigned char *p) {
       }
     }
   yy523:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 128) {
       goto yy523;
     }
@@ -8113,56 +8808,64 @@ bufsize_t _scan_html_block_start_7(const unsigned char *p) {
       }
     }
   yy525:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy497;
     if (yych <= 0xBF)
       goto yy519;
     goto yy497;
   yy526:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x9F)
       goto yy497;
     if (yych <= 0xBF)
       goto yy525;
     goto yy497;
   yy527:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy497;
     if (yych <= 0xBF)
       goto yy525;
     goto yy497;
   yy528:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy497;
     if (yych <= 0x9F)
       goto yy525;
     goto yy497;
   yy529:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x8F)
       goto yy497;
     if (yych <= 0xBF)
       goto yy527;
     goto yy497;
   yy530:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy497;
     if (yych <= 0xBF)
       goto yy527;
     goto yy497;
   yy531:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy497;
     if (yych <= 0x8F)
       goto yy527;
     goto yy497;
   yy532:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 2) {
       goto yy502;
     }
@@ -8172,98 +8875,112 @@ bufsize_t _scan_html_block_start_7(const unsigned char *p) {
       goto yy505;
     goto yy497;
   yy533:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy497;
     if (yych <= 0xBF)
       goto yy521;
     goto yy497;
   yy534:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x9F)
       goto yy497;
     if (yych <= 0xBF)
       goto yy533;
     goto yy497;
   yy535:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy497;
     if (yych <= 0xBF)
       goto yy533;
     goto yy497;
   yy536:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy497;
     if (yych <= 0x9F)
       goto yy533;
     goto yy497;
   yy537:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x8F)
       goto yy497;
     if (yych <= 0xBF)
       goto yy535;
     goto yy497;
   yy538:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy497;
     if (yych <= 0xBF)
       goto yy535;
     goto yy497;
   yy539:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy497;
     if (yych <= 0x8F)
       goto yy535;
     goto yy497;
   yy540:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy497;
     if (yych <= 0xBF)
       goto yy523;
     goto yy497;
   yy541:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x9F)
       goto yy497;
     if (yych <= 0xBF)
       goto yy540;
     goto yy497;
   yy542:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy497;
     if (yych <= 0xBF)
       goto yy540;
     goto yy497;
   yy543:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy497;
     if (yych <= 0x9F)
       goto yy540;
     goto yy497;
   yy544:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x8F)
       goto yy497;
     if (yych <= 0xBF)
       goto yy542;
     goto yy497;
   yy545:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy497;
     if (yych <= 0xBF)
       goto yy542;
     goto yy497;
   yy546:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy497;
     if (yych <= 0x8F)
@@ -8428,7 +9145,8 @@ bufsize_t _scan_html_block_end_1(const unsigned char *p) {
       goto yy567;
     goto yy550;
   yy560:
-    yych = *++p;
+    ++p;
+    yych = *p;
   yy561:
     if (yybm[0 + yych] & 64) {
       goto yy560;
@@ -8468,7 +9186,8 @@ bufsize_t _scan_html_block_end_1(const unsigned char *p) {
       goto yy582;
     }
   yy563:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 128) {
       goto yy563;
     }
@@ -8505,56 +9224,64 @@ bufsize_t _scan_html_block_end_1(const unsigned char *p) {
       }
     }
   yy565:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy562;
     if (yych <= 0xBF)
       goto yy560;
     goto yy562;
   yy566:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x9F)
       goto yy562;
     if (yych <= 0xBF)
       goto yy565;
     goto yy562;
   yy567:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy562;
     if (yych <= 0xBF)
       goto yy565;
     goto yy562;
   yy568:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy562;
     if (yych <= 0x9F)
       goto yy565;
     goto yy562;
   yy569:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x8F)
       goto yy562;
     if (yych <= 0xBF)
       goto yy567;
     goto yy562;
   yy570:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy562;
     if (yych <= 0xBF)
       goto yy567;
     goto yy562;
   yy571:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy562;
     if (yych <= 0x8F)
       goto yy567;
     goto yy562;
   yy572:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 128) {
       goto yy563;
     }
@@ -8613,7 +9340,8 @@ bufsize_t _scan_html_block_end_1(const unsigned char *p) {
       }
     }
   yy573:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 128) {
       goto yy563;
     }
@@ -8661,7 +9389,8 @@ bufsize_t _scan_html_block_end_1(const unsigned char *p) {
       }
     }
   yy574:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 128) {
       goto yy563;
     }
@@ -8721,7 +9450,8 @@ bufsize_t _scan_html_block_end_1(const unsigned char *p) {
       }
     }
   yy575:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 128) {
       goto yy563;
     }
@@ -8769,7 +9499,8 @@ bufsize_t _scan_html_block_end_1(const unsigned char *p) {
       }
     }
   yy576:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 128) {
       goto yy563;
     }
@@ -8817,7 +9548,8 @@ bufsize_t _scan_html_block_end_1(const unsigned char *p) {
       }
     }
   yy577:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 128) {
       goto yy563;
     }
@@ -8865,7 +9597,8 @@ bufsize_t _scan_html_block_end_1(const unsigned char *p) {
       }
     }
   yy578:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 128) {
       goto yy563;
     }
@@ -8903,7 +9636,8 @@ bufsize_t _scan_html_block_end_1(const unsigned char *p) {
       }
     }
   yy579:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 128) {
       goto yy563;
     }
@@ -8951,7 +9685,8 @@ bufsize_t _scan_html_block_end_1(const unsigned char *p) {
       }
     }
   yy580:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 128) {
       goto yy563;
     }
@@ -9000,7 +9735,8 @@ bufsize_t _scan_html_block_end_1(const unsigned char *p) {
     }
   yy581:
     yyaccept = 1;
-    yych = *(marker = ++p);
+    marker = ++p;
+    yych = *p;
     if (yybm[0 + yych] & 64) {
       goto yy560;
     }
@@ -9033,7 +9769,8 @@ bufsize_t _scan_html_block_end_1(const unsigned char *p) {
     }
   yy582 : { return (bufsize_t)(p - start); }
   yy583:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 128) {
       goto yy563;
     }
@@ -9080,7 +9817,8 @@ bufsize_t _scan_html_block_end_1(const unsigned char *p) {
       }
     }
   yy584:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 128) {
       goto yy563;
     }
@@ -9285,7 +10023,8 @@ bufsize_t _scan_html_block_end_2(const unsigned char *p) {
       goto yy604;
     goto yy588;
   yy598:
-    yych = *++p;
+    ++p;
+    yych = *p;
   yy599:
     if (yybm[0 + yych] & 64) {
       goto yy598;
@@ -9325,7 +10064,8 @@ bufsize_t _scan_html_block_end_2(const unsigned char *p) {
       goto yy612;
     }
   yy601:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 64) {
       goto yy598;
     }
@@ -9359,56 +10099,64 @@ bufsize_t _scan_html_block_end_2(const unsigned char *p) {
       }
     }
   yy602:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy600;
     if (yych <= 0xBF)
       goto yy598;
     goto yy600;
   yy603:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x9F)
       goto yy600;
     if (yych <= 0xBF)
       goto yy602;
     goto yy600;
   yy604:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy600;
     if (yych <= 0xBF)
       goto yy602;
     goto yy600;
   yy605:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy600;
     if (yych <= 0x9F)
       goto yy602;
     goto yy600;
   yy606:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x8F)
       goto yy600;
     if (yych <= 0xBF)
       goto yy604;
     goto yy600;
   yy607:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy600;
     if (yych <= 0xBF)
       goto yy604;
     goto yy600;
   yy608:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy600;
     if (yych <= 0x8F)
       goto yy604;
     goto yy600;
   yy609:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 128) {
       goto yy609;
     }
@@ -9447,7 +10195,8 @@ bufsize_t _scan_html_block_end_2(const unsigned char *p) {
     }
   yy611:
     yyaccept = 1;
-    yych = *(marker = ++p);
+    marker = ++p;
+    yych = *p;
     if (yybm[0 + yych] & 64) {
       goto yy598;
     }
@@ -9638,7 +10387,8 @@ bufsize_t _scan_html_block_end_3(const unsigned char *p) {
       goto yy633;
     goto yy616;
   yy626:
-    yych = *++p;
+    ++p;
+    yych = *p;
   yy627:
     if (yybm[0 + yych] & 64) {
       goto yy626;
@@ -9678,7 +10428,8 @@ bufsize_t _scan_html_block_end_3(const unsigned char *p) {
       goto yy639;
     }
   yy629:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 128) {
       goto yy629;
     }
@@ -9715,49 +10466,56 @@ bufsize_t _scan_html_block_end_3(const unsigned char *p) {
       }
     }
   yy631:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy628;
     if (yych <= 0xBF)
       goto yy626;
     goto yy628;
   yy632:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x9F)
       goto yy628;
     if (yych <= 0xBF)
       goto yy631;
     goto yy628;
   yy633:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy628;
     if (yych <= 0xBF)
       goto yy631;
     goto yy628;
   yy634:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy628;
     if (yych <= 0x9F)
       goto yy631;
     goto yy628;
   yy635:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x8F)
       goto yy628;
     if (yych <= 0xBF)
       goto yy633;
     goto yy628;
   yy636:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy628;
     if (yych <= 0xBF)
       goto yy633;
     goto yy628;
   yy637:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy628;
     if (yych <= 0x8F)
@@ -9765,7 +10523,8 @@ bufsize_t _scan_html_block_end_3(const unsigned char *p) {
     goto yy628;
   yy638:
     yyaccept = 1;
-    yych = *(marker = ++p);
+    marker = ++p;
+    yych = *p;
     if (yybm[0 + yych] & 64) {
       goto yy626;
     }
@@ -9885,7 +10644,8 @@ bufsize_t _scan_html_block_end_4(const unsigned char *p) {
     }
   yy645:
     yyaccept = 1;
-    yych = *(marker = ++p);
+    marker = ++p;
+    yych = *p;
     if (yybm[0 + yych] & 128) {
       goto yy655;
     }
@@ -9974,7 +10734,8 @@ bufsize_t _scan_html_block_end_4(const unsigned char *p) {
       goto yy660;
     goto yy643;
   yy655:
-    yych = *++p;
+    ++p;
+    yych = *p;
   yy656:
     if (yybm[0 + yych] & 128) {
       goto yy655;
@@ -10014,49 +10775,56 @@ bufsize_t _scan_html_block_end_4(const unsigned char *p) {
       goto yy647;
     }
   yy658:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy657;
     if (yych <= 0xBF)
       goto yy655;
     goto yy657;
   yy659:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x9F)
       goto yy657;
     if (yych <= 0xBF)
       goto yy658;
     goto yy657;
   yy660:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy657;
     if (yych <= 0xBF)
       goto yy658;
     goto yy657;
   yy661:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy657;
     if (yych <= 0x9F)
       goto yy658;
     goto yy657;
   yy662:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x8F)
       goto yy657;
     if (yych <= 0xBF)
       goto yy660;
     goto yy657;
   yy663:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy657;
     if (yych <= 0xBF)
       goto yy660;
     goto yy657;
   yy664:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy657;
     if (yych <= 0x8F)
@@ -10220,7 +10988,8 @@ bufsize_t _scan_html_block_end_5(const unsigned char *p) {
       goto yy684;
     goto yy668;
   yy678:
-    yych = *++p;
+    ++p;
+    yych = *p;
   yy679:
     if (yybm[0 + yych] & 64) {
       goto yy678;
@@ -10260,7 +11029,8 @@ bufsize_t _scan_html_block_end_5(const unsigned char *p) {
       goto yy692;
     }
   yy681:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 64) {
       goto yy678;
     }
@@ -10294,56 +11064,64 @@ bufsize_t _scan_html_block_end_5(const unsigned char *p) {
       }
     }
   yy682:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy680;
     if (yych <= 0xBF)
       goto yy678;
     goto yy680;
   yy683:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x9F)
       goto yy680;
     if (yych <= 0xBF)
       goto yy682;
     goto yy680;
   yy684:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy680;
     if (yych <= 0xBF)
       goto yy682;
     goto yy680;
   yy685:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy680;
     if (yych <= 0x9F)
       goto yy682;
     goto yy680;
   yy686:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x8F)
       goto yy680;
     if (yych <= 0xBF)
       goto yy684;
     goto yy680;
   yy687:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy680;
     if (yych <= 0xBF)
       goto yy684;
     goto yy680;
   yy688:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy680;
     if (yych <= 0x8F)
       goto yy684;
     goto yy680;
   yy689:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 128) {
       goto yy689;
     }
@@ -10382,7 +11160,8 @@ bufsize_t _scan_html_block_end_5(const unsigned char *p) {
     }
   yy691:
     yyaccept = 1;
-    yych = *(marker = ++p);
+    marker = ++p;
+    yych = *p;
     if (yybm[0 + yych] & 64) {
       goto yy678;
     }
@@ -10430,7 +11209,7 @@ bufsize_t _scan_link_title(const unsigned char *p) {
     static const unsigned char yybm[] = {
         0,   208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
         208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
-        208, 208, 208, 208, 208, 208, 192, 208, 208, 208, 208, 144, 208, 80,
+        208, 208, 208, 208, 208, 208, 192, 208, 208, 208, 208, 144, 80,  80,
         208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
         208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
         208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
@@ -10487,17 +11266,24 @@ bufsize_t _scan_link_title(const unsigned char *p) {
   yy699:
     yyaccept = 0;
     yych = *(marker = ++p);
-    if (yych <= 0x00)
+    if (yych <= '(') {
+      if (yych <= 0x00)
+        goto yy696;
+      if (yych <= '\'')
+        goto yy728;
       goto yy696;
-    if (yych <= 0x7F)
-      goto yy728;
-    if (yych <= 0xC1)
+    } else {
+      if (yych <= 0x7F)
+        goto yy728;
+      if (yych <= 0xC1)
+        goto yy696;
+      if (yych <= 0xF4)
+        goto yy728;
       goto yy696;
-    if (yych <= 0xF4)
-      goto yy728;
-    goto yy696;
+    }
   yy700:
-    yych = *++p;
+    ++p;
+    yych = *p;
   yy701:
     if (yybm[0 + yych] & 16) {
       goto yy700;
@@ -10549,7 +11335,8 @@ bufsize_t _scan_link_title(const unsigned char *p) {
     ++p;
   yy704 : { return (bufsize_t)(p - start); }
   yy705:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 16) {
       goto yy700;
     }
@@ -10582,56 +11369,64 @@ bufsize_t _scan_link_title(const unsigned char *p) {
       }
     }
   yy707:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy702;
     if (yych <= 0xBF)
       goto yy700;
     goto yy702;
   yy708:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x9F)
       goto yy702;
     if (yych <= 0xBF)
       goto yy707;
     goto yy702;
   yy709:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy702;
     if (yych <= 0xBF)
       goto yy707;
     goto yy702;
   yy710:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy702;
     if (yych <= 0x9F)
       goto yy707;
     goto yy702;
   yy711:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x8F)
       goto yy702;
     if (yych <= 0xBF)
       goto yy709;
     goto yy702;
   yy712:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy702;
     if (yych <= 0xBF)
       goto yy709;
     goto yy702;
   yy713:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy702;
     if (yych <= 0x8F)
       goto yy709;
     goto yy702;
   yy714:
-    yych = *++p;
+    ++p;
+    yych = *p;
   yy715:
     if (yybm[0 + yych] & 64) {
       goto yy714;
@@ -10668,7 +11463,8 @@ bufsize_t _scan_link_title(const unsigned char *p) {
     ++p;
   yy717 : { return (bufsize_t)(p - start); }
   yy718:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 64) {
       goto yy714;
     }
@@ -10701,63 +11497,71 @@ bufsize_t _scan_link_title(const unsigned char *p) {
       }
     }
   yy720:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy702;
     if (yych <= 0xBF)
       goto yy714;
     goto yy702;
   yy721:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x9F)
       goto yy702;
     if (yych <= 0xBF)
       goto yy720;
     goto yy702;
   yy722:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy702;
     if (yych <= 0xBF)
       goto yy720;
     goto yy702;
   yy723:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy702;
     if (yych <= 0x9F)
       goto yy720;
     goto yy702;
   yy724:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x8F)
       goto yy702;
     if (yych <= 0xBF)
       goto yy722;
     goto yy702;
   yy725:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy702;
     if (yych <= 0xBF)
       goto yy722;
     goto yy702;
   yy726:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy702;
     if (yych <= 0x8F)
       goto yy722;
     goto yy702;
   yy727:
-    yych = *++p;
+    ++p;
+    yych = *p;
   yy728:
     if (yybm[0 + yych] & 128) {
       goto yy727;
     }
     if (yych <= 0xE0) {
       if (yych <= '\\') {
-        if (yych <= 0x00)
+        if (yych <= '(')
           goto yy702;
         if (yych >= '*')
           goto yy731;
@@ -10787,25 +11591,27 @@ bufsize_t _scan_link_title(const unsigned char *p) {
     ++p;
   yy730 : { return (bufsize_t)(p - start); }
   yy731:
-    yych = *++p;
-    if (yybm[0 + yych] & 128) {
-      goto yy727;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
+    ++p;
+    yych = *p;
+    if (yych <= 0xDF) {
+      if (yych <= '[') {
         if (yych <= 0x00)
           goto yy702;
-        if (yych <= ')')
+        if (yych == ')')
           goto yy742;
-        goto yy731;
+        goto yy727;
       } else {
+        if (yych <= '\\')
+          goto yy731;
+        if (yych <= 0x7F)
+          goto yy727;
         if (yych <= 0xC1)
           goto yy702;
-        if (yych >= 0xE0)
-          goto yy734;
       }
     } else {
       if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy734;
         if (yych == 0xED)
           goto yy736;
         goto yy735;
@@ -10820,49 +11626,56 @@ bufsize_t _scan_link_title(const unsigned char *p) {
       }
     }
   yy733:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy702;
     if (yych <= 0xBF)
       goto yy727;
     goto yy702;
   yy734:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x9F)
       goto yy702;
     if (yych <= 0xBF)
       goto yy733;
     goto yy702;
   yy735:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy702;
     if (yych <= 0xBF)
       goto yy733;
     goto yy702;
   yy736:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy702;
     if (yych <= 0x9F)
       goto yy733;
     goto yy702;
   yy737:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x8F)
       goto yy702;
     if (yych <= 0xBF)
       goto yy735;
     goto yy702;
   yy738:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy702;
     if (yych <= 0xBF)
       goto yy735;
     goto yy702;
   yy739:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy702;
     if (yych <= 0x8F)
@@ -10870,7 +11683,8 @@ bufsize_t _scan_link_title(const unsigned char *p) {
     goto yy702;
   yy740:
     yyaccept = 1;
-    yych = *(marker = ++p);
+    marker = ++p;
+    yych = *p;
     if (yybm[0 + yych] & 16) {
       goto yy700;
     }
@@ -10905,7 +11719,8 @@ bufsize_t _scan_link_title(const unsigned char *p) {
     }
   yy741:
     yyaccept = 2;
-    yych = *(marker = ++p);
+    marker = ++p;
+    yych = *p;
     if (yybm[0 + yych] & 64) {
       goto yy714;
     }
@@ -10940,13 +11755,14 @@ bufsize_t _scan_link_title(const unsigned char *p) {
     }
   yy742:
     yyaccept = 3;
-    yych = *(marker = ++p);
+    marker = ++p;
+    yych = *p;
     if (yybm[0 + yych] & 128) {
       goto yy727;
     }
     if (yych <= 0xE0) {
       if (yych <= '\\') {
-        if (yych <= 0x00)
+        if (yych <= '(')
           goto yy730;
         if (yych <= ')')
           goto yy729;
@@ -11004,7 +11820,8 @@ bufsize_t _scan_spacechars(const unsigned char *p) {
     ++p;
     { return 0; }
   yy747:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 128) {
       goto yy747;
     }
@@ -11057,13 +11874,14 @@ bufsize_t _scan_atx_heading_start(const unsigned char *p) {
       goto yy753;
     }
   yy755:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 128) {
       goto yy755;
     }
   yy757 : { return (bufsize_t)(p - start); }
   yy758:
-    ++p;
+    yych = *++p;
     goto yy757;
   yy759:
     yych = *++p;
@@ -11133,8 +11951,8 @@ bufsize_t _scan_atx_heading_start(const unsigned char *p) {
       if (yych != '#')
         goto yy760;
     }
-    yych = *++p;
-    if (yybm[0 + yych] & 128) {
+    ++p;
+    if (yybm[0 + (yych = *p)] & 128) {
       goto yy755;
     }
     if (yych <= 0x08)
@@ -11212,7 +12030,8 @@ bufsize_t _scan_setext_heading_line(const unsigned char *p) {
       goto yy768;
     }
   yy771:
-    yych = *++p;
+    ++p;
+    yych = *p;
   yy772:
     if (yybm[0 + yych] & 32) {
       goto yy771;
@@ -11230,7 +12049,8 @@ bufsize_t _scan_setext_heading_line(const unsigned char *p) {
     ++p;
     { return 2; }
   yy776:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 32) {
       goto yy771;
     }
@@ -11248,7 +12068,8 @@ bufsize_t _scan_setext_heading_line(const unsigned char *p) {
       goto yy773;
     }
   yy778:
-    yych = *++p;
+    ++p;
+    yych = *p;
   yy779:
     if (yych <= '\f') {
       if (yych <= 0x08)
@@ -11268,7 +12089,8 @@ bufsize_t _scan_setext_heading_line(const unsigned char *p) {
     ++p;
     { return 1; }
   yy782:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 128) {
       goto yy782;
     }
@@ -11361,7 +12183,8 @@ bufsize_t _scan_thematic_break(const unsigned char *p) {
       goto yy787;
     }
   yy791:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 16) {
       goto yy791;
     }
@@ -11371,7 +12194,8 @@ bufsize_t _scan_thematic_break(const unsigned char *p) {
     p = marker;
     goto yy787;
   yy794:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x1F) {
       if (yych == '\t')
         goto yy794;
@@ -11384,7 +12208,8 @@ bufsize_t _scan_thematic_break(const unsigned char *p) {
       goto yy793;
     }
   yy796:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x1F) {
       if (yych == '\t')
         goto yy796;
@@ -11396,7 +12221,8 @@ bufsize_t _scan_thematic_break(const unsigned char *p) {
         goto yy793;
     }
   yy798:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x1F) {
       if (yych == '\t')
         goto yy798;
@@ -11409,7 +12235,8 @@ bufsize_t _scan_thematic_break(const unsigned char *p) {
       goto yy793;
     }
   yy800:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x1F) {
       if (yych == '\t')
         goto yy800;
@@ -11421,7 +12248,8 @@ bufsize_t _scan_thematic_break(const unsigned char *p) {
         goto yy793;
     }
   yy802:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x1F) {
       if (yych == '\t')
         goto yy802;
@@ -11434,7 +12262,8 @@ bufsize_t _scan_thematic_break(const unsigned char *p) {
       goto yy793;
     }
   yy804:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 32) {
       goto yy804;
     }
@@ -11446,7 +12275,8 @@ bufsize_t _scan_thematic_break(const unsigned char *p) {
       goto yy810;
     goto yy793;
   yy806:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 64) {
       goto yy806;
     }
@@ -11458,7 +12288,8 @@ bufsize_t _scan_thematic_break(const unsigned char *p) {
       goto yy812;
     goto yy793;
   yy808:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 128) {
       goto yy808;
     }
@@ -11541,64 +12372,45 @@ bufsize_t _scan_open_code_fence(const unsigned char *p) {
     }
     goto yy823;
   yy825:
-    yych = *++p;
-    if (yybm[0 + yych] & 16) {
-      goto yy825;
+    ++p;
+    yych = *p;
+    marker = p;
+    if (yybm[0 + yych] & 64) {
+      goto yy829;
     }
-    if (yych <= 0xDF) {
-      if (yych <= '\f') {
+    if (yych <= 0xE0) {
+      if (yych <= '`') {
         if (yych <= 0x00)
           goto yy823;
-        if (yych == '\n') {
-          marker = p;
+        if (yych <= '\r')
           goto yy831;
-        }
-        marker = p;
-        goto yy829;
+        goto yy825;
       } else {
-        if (yych <= '\r') {
-          marker = p;
-          goto yy831;
-        }
-        if (yych <= 0x7F) {
-          marker = p;
-          goto yy829;
-        }
         if (yych <= 0xC1)
           goto yy823;
-        marker = p;
-        goto yy833;
+        if (yych <= 0xDF)
+          goto yy833;
+        goto yy834;
       }
     } else {
       if (yych <= 0xEF) {
-        if (yych <= 0xE0) {
-          marker = p;
-          goto yy834;
-        }
-        if (yych == 0xED) {
-          marker = p;
+        if (yych == 0xED)
           goto yy836;
-        }
-        marker = p;
         goto yy835;
       } else {
-        if (yych <= 0xF0) {
-          marker = p;
+        if (yych <= 0xF0)
           goto yy837;
-        }
-        if (yych <= 0xF3) {
-          marker = p;
+        if (yych <= 0xF3)
           goto yy838;
-        }
-        if (yych <= 0xF4) {
-          marker = p;
+        if (yych <= 0xF4)
           goto yy839;
-        }
         goto yy823;
       }
     }
   yy827:
-    yych = *++p;
+    ++p;
+    yych = *p;
+    marker = p;
     if (yybm[0 + yych] & 32) {
       goto yy827;
     }
@@ -11606,56 +12418,38 @@ bufsize_t _scan_open_code_fence(const unsigned char *p) {
       if (yych <= '\f') {
         if (yych <= 0x00)
           goto yy823;
-        if (yych == '\n') {
-          marker = p;
+        if (yych == '\n')
           goto yy842;
-        }
-        marker = p;
         goto yy840;
       } else {
-        if (yych <= '\r') {
-          marker = p;
+        if (yych <= '\r')
           goto yy842;
-        }
-        if (yych <= 0x7F) {
-          marker = p;
+        if (yych <= 0x7F)
           goto yy840;
-        }
         if (yych <= 0xC1)
           goto yy823;
-        marker = p;
         goto yy844;
       }
     } else {
       if (yych <= 0xEF) {
-        if (yych <= 0xE0) {
-          marker = p;
+        if (yych <= 0xE0)
           goto yy845;
-        }
-        if (yych == 0xED) {
-          marker = p;
+        if (yych == 0xED)
           goto yy847;
-        }
-        marker = p;
         goto yy846;
       } else {
-        if (yych <= 0xF0) {
-          marker = p;
+        if (yych <= 0xF0)
           goto yy848;
-        }
-        if (yych <= 0xF3) {
-          marker = p;
+        if (yych <= 0xF3)
           goto yy849;
-        }
-        if (yych <= 0xF4) {
-          marker = p;
+        if (yych <= 0xF4)
           goto yy850;
-        }
         goto yy823;
       }
     }
   yy829:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 64) {
       goto yy829;
     }
@@ -11692,56 +12486,64 @@ bufsize_t _scan_open_code_fence(const unsigned char *p) {
     p = marker;
     { return (bufsize_t)(p - start); }
   yy833:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy823;
     if (yych <= 0xBF)
       goto yy829;
     goto yy823;
   yy834:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x9F)
       goto yy823;
     if (yych <= 0xBF)
       goto yy833;
     goto yy823;
   yy835:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy823;
     if (yych <= 0xBF)
       goto yy833;
     goto yy823;
   yy836:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy823;
     if (yych <= 0x9F)
       goto yy833;
     goto yy823;
   yy837:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x8F)
       goto yy823;
     if (yych <= 0xBF)
       goto yy835;
     goto yy823;
   yy838:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy823;
     if (yych <= 0xBF)
       goto yy835;
     goto yy823;
   yy839:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy823;
     if (yych <= 0x8F)
       goto yy835;
     goto yy823;
   yy840:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 128) {
       goto yy840;
     }
@@ -11778,49 +12580,56 @@ bufsize_t _scan_open_code_fence(const unsigned char *p) {
     p = marker;
     { return (bufsize_t)(p - start); }
   yy844:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy823;
     if (yych <= 0xBF)
       goto yy840;
     goto yy823;
   yy845:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x9F)
       goto yy823;
     if (yych <= 0xBF)
       goto yy844;
     goto yy823;
   yy846:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy823;
     if (yych <= 0xBF)
       goto yy844;
     goto yy823;
   yy847:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy823;
     if (yych <= 0x9F)
       goto yy844;
     goto yy823;
   yy848:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x8F)
       goto yy823;
     if (yych <= 0xBF)
       goto yy846;
     goto yy823;
   yy849:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy823;
     if (yych <= 0xBF)
       goto yy846;
     goto yy823;
   yy850:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= 0x7F)
       goto yy823;
     if (yych <= 0x8F)
@@ -11882,63 +12691,50 @@ bufsize_t _scan_close_code_fence(const unsigned char *p) {
     }
     goto yy858;
   yy860:
-    yych = *++p;
-    if (yybm[0 + yych] & 32) {
-      goto yy860;
+    ++p;
+    yych = *p;
+    marker = p;
+    if (yybm[0 + yych] & 128) {
+      goto yy864;
     }
     if (yych <= '\f') {
       if (yych <= 0x08)
         goto yy858;
-      if (yych <= '\t') {
-        marker = p;
-        goto yy864;
-      }
-      if (yych <= '\n') {
-        marker = p;
+      if (yych <= '\n')
         goto yy866;
-      }
       goto yy858;
     } else {
-      if (yych <= '\r') {
-        marker = p;
+      if (yych <= '\r')
         goto yy866;
-      }
-      if (yych == ' ') {
-        marker = p;
-        goto yy864;
-      }
+      if (yych == '`')
+        goto yy860;
       goto yy858;
     }
   yy862:
-    yych = *++p;
+    ++p;
+    yych = *p;
+    marker = p;
     if (yybm[0 + yych] & 64) {
       goto yy862;
     }
     if (yych <= '\f') {
       if (yych <= 0x08)
         goto yy858;
-      if (yych <= '\t') {
-        marker = p;
+      if (yych <= '\t')
         goto yy868;
-      }
-      if (yych <= '\n') {
-        marker = p;
+      if (yych <= '\n')
         goto yy870;
-      }
       goto yy858;
     } else {
-      if (yych <= '\r') {
-        marker = p;
+      if (yych <= '\r')
         goto yy870;
-      }
-      if (yych == ' ') {
-        marker = p;
+      if (yych == ' ')
         goto yy868;
-      }
       goto yy858;
     }
   yy864:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yybm[0 + yych] & 128) {
       goto yy864;
     }
@@ -11953,7 +12749,8 @@ bufsize_t _scan_close_code_fence(const unsigned char *p) {
     p = marker;
     { return (bufsize_t)(p - start); }
   yy868:
-    yych = *++p;
+    ++p;
+    yych = *p;
     if (yych <= '\f') {
       if (yych <= 0x08)
         goto yy858;
@@ -12849,8 +13646,8 @@ bufsize_t _scan_entity(const unsigned char *p) {
       }
     }
   yy924:
-    yych = *++p;
-    if (yych <= ';') {
+    ++p;
+    if ((yych = *p) <= ';') {
       if (yych <= '/')
         goto yy878;
       if (yych <= '9')
@@ -13034,7 +13831,7 @@ bufsize_t _scan_dangerous_url(const unsigned char *p) {
       goto yy949;
   yy946 : { return (bufsize_t)(p - start); }
   yy947:
-    ++p;
+    yych = *++p;
     goto yy946;
   yy948:
     yych = *++p;
@@ -13180,8 +13977,8 @@ bufsize_t _scan_dangerous_url(const unsigned char *p) {
     ++p;
     { return 0; }
   yy967:
-    yych = *++p;
-    if (yych == 'P')
+    ++p;
+    if ((yych = *p) == 'P')
       goto yy965;
     if (yych == 'p')
       goto yy965;
diff --git a/src/scanners.re b/src/scanners.re
@@ -215,7 +215,7 @@ bufsize_t _scan_link_title(const unsigned char *p)
 /*!re2c
   ["] (escaped_char|[^"\x00])* ["]   { return (bufsize_t)(p - start); }
   ['] (escaped_char|[^'\x00])* ['] { return (bufsize_t)(p - start); }
-  [(] (escaped_char|[^)\x00])* [)]  { return (bufsize_t)(p - start); }
+  [(] (escaped_char|[^()\x00])* [)]  { return (bufsize_t)(p - start); }
   * { return 0; }
 */
 }