#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_close_code_fence(const unsigned char *p) {
  const unsigned char *marker = NULL;
  const unsigned char *start = p;
  {
    unsigned char yych;
    unsigned int yyaccept = 0;
    static const unsigned char yybm[] = {
        0, 0, 0, 0, 0, 0, 0, 0, 0,   32, 64, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
        0, 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,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 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, 0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 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,
        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 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 yy1274;
    } else {
      if (yych <= '`')
        goto yy1272;
      if (yych == '~')
        goto yy1273;
      goto yy1274;
    }
  yy1271 : { return 0; }
  yy1272:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych == '`')
      goto yy1284;
    goto yy1271;
  yy1273:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych == '~')
      goto yy1275;
    goto yy1271;
  yy1274:
    yych = *++p;
    goto yy1271;
  yy1275:
    yych = *++p;
    if (yybm[0 + yych] & 16) {
      goto yy1277;
    }
  yy1276:
    p = marker;
    if (yyaccept == 0) {
      goto yy1271;
    } else {
      goto yy1283;
    }
  yy1277:
    marker = p + 1;
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 32) {
      goto yy1279;
    }
    if (yych == '\n')
      goto yy1281;
    if (yych == '~')
      goto yy1277;
    goto yy1276;
  yy1279:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 32) {
      goto yy1279;
    }
    if (yych != '\n')
      goto yy1276;
  yy1281:
    yyaccept = 1;
    marker = ++p;
    yych = *p;
    if (yybm[0 + yych] & 32) {
      goto yy1279;
    }
    if (yych == '\n')
      goto yy1281;
  yy1283:
    p = marker;
    { return (p - start); }
  yy1284:
    yych = *++p;
    if (yybm[0 + yych] & 128) {
      goto yy1285;
    }
    goto yy1276;
  yy1285:
    marker = p + 1;
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 32) {
      goto yy1279;
    }
    if (yych == '\n')
      goto yy1281;
    if (yych == '`')
      goto yy1285;
    goto yy1276;
  }
}


x86 assembly (clang, -O0):
<_scan_close_code_fence>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
movq   $0x0,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x20(%rbp)
movl   $0x0,-0x28(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x21(%rbp)
movzbl -0x21(%rbp),%eax
cmp    $0x5f,%eax
jg     114c <_scan_close_code_fence+0x4c>
movzbl -0x21(%rbp),%eax
cmp    $0xa,%eax
je     1147 <_scan_close_code_fence+0x47>
jmp    11f4 <_scan_close_code_fence+0xf4>
jmp    1175 <_scan_close_code_fence+0x75>
movzbl -0x21(%rbp),%eax
cmp    $0x60,%eax
jg     115e <_scan_close_code_fence+0x5e>
jmp    1186 <_scan_close_code_fence+0x86>
movzbl -0x21(%rbp),%eax
cmp    $0x7e,%eax
jne    1170 <_scan_close_code_fence+0x70>
jmp    11bd <_scan_close_code_fence+0xbd>
jmp    11f4 <_scan_close_code_fence+0xf4>
jmp    117a <_scan_close_code_fence+0x7a>
movl   $0x0,-0x4(%rbp)
jmp    1456 <_scan_close_code_fence+0x356>
movl   $0x0,-0x28(%rbp)
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    $0x60,%eax
jne    11b8 <_scan_close_code_fence+0xb8>
jmp    13a4 <_scan_close_code_fence+0x2a4>
jmp    117a <_scan_close_code_fence+0x7a>
movl   $0x0,-0x28(%rbp)
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    $0x7e,%eax
jne    11ef <_scan_close_code_fence+0xef>
jmp    120e <_scan_close_code_fence+0x10e>
jmp    117a <_scan_close_code_fence+0x7a>
mov    -0x10(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x10(%rbp)
mov    0x1(%rax),%al
mov    %al,-0x21(%rbp)
jmp    117a <_scan_close_code_fence+0x7a>
mov    -0x10(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x10(%rbp)
mov    0x1(%rax),%al
mov    %al,-0x21(%rbp)
movzbl -0x21(%rbp),%eax
add    $0x0,%eax
movslq %eax,%rcx
lea    0xdcc(%rip),%rax
movzbl (%rax,%rcx,1),%eax
and    $0x10,%eax
cmp    $0x0,%eax
je     1249 <_scan_close_code_fence+0x149>
jmp    126a <_scan_close_code_fence+0x16a>
jmp    124e <_scan_close_code_fence+0x14e>
mov    -0x18(%rbp),%rax
mov    %rax,-0x10(%rbp)
cmpl   $0x0,-0x28(%rbp)
jne    1265 <_scan_close_code_fence+0x165>
jmp    117a <_scan_close_code_fence+0x7a>
jmp    1389 <_scan_close_code_fence+0x289>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
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    0xd64(%rip),%rax
movzbl (%rax,%rcx,1),%eax
and    $0x20,%eax
cmp    $0x0,%eax
je     12b1 <_scan_close_code_fence+0x1b1>
jmp    12da <_scan_close_code_fence+0x1da>
movzbl -0x21(%rbp),%eax
cmp    $0xa,%eax
jne    12c3 <_scan_close_code_fence+0x1c3>
jmp    132c <_scan_close_code_fence+0x22c>
movzbl -0x21(%rbp),%eax
cmp    $0x7e,%eax
jne    12d5 <_scan_close_code_fence+0x1d5>
jmp    126a <_scan_close_code_fence+0x16a>
jmp    124e <_scan_close_code_fence+0x14e>
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    0xd00(%rip),%rax
movzbl (%rax,%rcx,1),%eax
and    $0x20,%eax
cmp    $0x0,%eax
je     1315 <_scan_close_code_fence+0x215>
jmp    12da <_scan_close_code_fence+0x1da>
movzbl -0x21(%rbp),%eax
cmp    $0xa,%eax
je     1327 <_scan_close_code_fence+0x227>
jmp    124e <_scan_close_code_fence+0x14e>
jmp    132c <_scan_close_code_fence+0x22c>
movl   $0x1,-0x28(%rbp)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    %rax,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x21(%rbp)
movzbl -0x21(%rbp),%eax
add    $0x0,%eax
movslq %eax,%rcx
lea    0xca3(%rip),%rax
movzbl (%rax,%rcx,1),%eax
and    $0x20,%eax
cmp    $0x0,%eax
je     1372 <_scan_close_code_fence+0x272>
jmp    12da <_scan_close_code_fence+0x1da>
movzbl -0x21(%rbp),%eax
cmp    $0xa,%eax
jne    1384 <_scan_close_code_fence+0x284>
jmp    132c <_scan_close_code_fence+0x22c>
jmp    1389 <_scan_close_code_fence+0x289>
mov    -0x18(%rbp),%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%rcx
sub    %rcx,%rax
mov    %eax,-0x4(%rbp)
jmp    1456 <_scan_close_code_fence+0x356>
mov    -0x10(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x10(%rbp)
mov    0x1(%rax),%al
mov    %al,-0x21(%rbp)
movzbl -0x21(%rbp),%eax
add    $0x0,%eax
movslq %eax,%rcx
lea    0xc36(%rip),%rax
movzbl (%rax,%rcx,1),%eax
and    $0x80,%eax
cmp    $0x0,%eax
je     13e1 <_scan_close_code_fence+0x2e1>
jmp    13e6 <_scan_close_code_fence+0x2e6>
jmp    124e <_scan_close_code_fence+0x14e>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
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    0xbe8(%rip),%rax
movzbl (%rax,%rcx,1),%eax
and    $0x20,%eax
cmp    $0x0,%eax
je     142d <_scan_close_code_fence+0x32d>
jmp    12da <_scan_close_code_fence+0x1da>
movzbl -0x21(%rbp),%eax
cmp    $0xa,%eax
jne    143f <_scan_close_code_fence+0x33f>
jmp    132c <_scan_close_code_fence+0x22c>
movzbl -0x21(%rbp),%eax
cmp    $0x60,%eax
jne    1451 <_scan_close_code_fence+0x351>
jmp    13e6 <_scan_close_code_fence+0x2e6>
jmp    124e <_scan_close_code_fence+0x14e>
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<_scan_close_code_fence>:
mov    (%rdi),%cl
xor    %eax,%eax
cmp    $0x60,%cl
jb     1202 <_scan_close_code_fence+0x102>
cmp    $0x7e,%cl
je     1159 <_scan_close_code_fence+0x59>
cmp    $0x60,%cl
jne    1202 <_scan_close_code_fence+0x102>
cmpb   $0x60,0x1(%rdi)
jne    1202 <_scan_close_code_fence+0x102>
movzbl 0x2(%rdi),%ecx
lea    0xed0(%rip),%r8
cmpb   $0x0,(%rcx,%r8,1)
jns    1202 <_scan_close_code_fence+0x102>
lea    0x3(%rdi),%rcx
nop
movzbl (%rcx),%esi
mov    $0x1,%r9b
testb  $0x20,(%rsi,%r8,1)
jne    11a6 <_scan_close_code_fence+0xa6>
add    $0x1,%rcx
cmp    $0x60,%sil
je     1140 <_scan_close_code_fence+0x40>
jmp    1197 <_scan_close_code_fence+0x97>
cmpb   $0x7e,0x1(%rdi)
jne    1202 <_scan_close_code_fence+0x102>
movzbl 0x2(%rdi),%ecx
lea    0xe92(%rip),%r8
testb  $0x10,(%rcx,%r8,1)
je     1202 <_scan_close_code_fence+0x102>
lea    0x3(%rdi),%rcx
nopl   (%rax)
movzbl (%rcx),%esi
mov    $0x1,%r9b
testb  $0x20,(%rsi,%r8,1)
jne    11a6 <_scan_close_code_fence+0xa6>
add    $0x1,%rcx
cmp    $0x7e,%sil
je     1180 <_scan_close_code_fence+0x80>
cmp    $0xa,%sil
jne    1202 <_scan_close_code_fence+0x102>
add    $0xffffffffffffffff,%rcx
mov    %rcx,%rsi
jmp    11c4 <_scan_close_code_fence+0xc4>
lea    0xe53(%rip),%r8
mov    %rcx,%rsi
movzbl 0x1(%rsi),%edx
add    $0x1,%rsi
testb  $0x20,(%rdx,%r8,1)
jne    11b0 <_scan_close_code_fence+0xb0>
cmp    $0xa,%dl
jne    11fd <_scan_close_code_fence+0xfd>
add    $0x1,%rsi
lea    0xe31(%rip),%r8
mov    %rsi,%rcx
xor    %r9d,%r9d
cs nopw 0x0(%rax,%rax,1)
nop
movzbl (%rcx),%esi
testb  $0x20,(%rsi,%r8,1)
jne    11a6 <_scan_close_code_fence+0xa6>
add    $0x1,%rcx
cmp    $0xa,%sil
je     11e0 <_scan_close_code_fence+0xe0>
add    $0xffffffffffffffff,%rcx
sub    %edi,%ecx
mov    %ecx,%eax
ret
test   %r9b,%r9b
je     11f8 <_scan_close_code_fence+0xf8>
ret

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

LLVM IR (-O2):
@_scan_close_code_fence.yybm = internal unnamed_addr constant <{ [127 x i8], [129 x i8] }> <{ [127 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\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\00\00\00\00\00\00\00\00\00\00\00\00\00\80\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\10", [129 x i8] zeroinitializer }>
define i32 @_scan_close_code_fence(i8* %0) {
%2 = load i8, i8* %0
%3 = icmp ult i8 %2, 96
br i1 %3, label %82, label %4
4: ; preds = %1
switch i8 %2, label %82 [
i8 96, label %5
i8 126, label %9
]
5: ; preds = %4
%6 = getelementptr inbounds i8, i8* %0, i64 1
%7 = load i8, i8* %6
%8 = icmp eq i8 %7, 96
br i1 %8, label %62, label %82
9: ; preds = %4
%10 = getelementptr inbounds i8, i8* %0, i64 1
%11 = load i8, i8* %10
%12 = icmp eq i8 %11, 126
br i1 %12, label %13, label %82
13: ; preds = %9
%14 = getelementptr inbounds i8, i8* %0, i64 2
%15 = load i8, i8* %14
%16 = zext i8 %15 to i64
%17 = getelementptr inbounds [256 x i8], [256 x i8]* bitcast (<{ [127 x i8], [129 x i8] }>* @_scan_close_code_fence.yybm to [256 x i8]*), i64 0, i64 %16
%18 = load i8, i8* %17
%19 = and i8 %18, 16
%20 = icmp eq i8 %19, 0
br i1 %20, label %82, label %22
21: ; preds = %41
br i1 %80, label %82, label %56
22: ; preds = %13, %31
%23 = phi i8* [ %24, %31 ], [ %14, %13 ]
%24 = getelementptr inbounds i8, i8* %23, i64 1
%25 = load i8, i8* %24
%26 = zext i8 %25 to i64
%27 = getelementptr inbounds [256 x i8], [256 x i8]* bitcast (<{ [127 x i8], [129 x i8] }>* @_scan_close_code_fence.yybm to [256 x i8]*), i64 0, i64 %26
%28 = load i8, i8* %27
%29 = and i8 %28, 32
%30 = icmp eq i8 %29, 0
br i1 %30, label %31, label %78
31: ; preds = %22
switch i8 %25, label %82 [
i8 10, label %43
i8 126, label %22
]
32: ; preds = %78, %32
%33 = phi i8* [ %34, %32 ], [ %79, %78 ]
%34 = getelementptr inbounds i8, i8* %33, i64 1
%35 = load i8, i8* %34
%36 = zext i8 %35 to i64
%37 = getelementptr inbounds [256 x i8], [256 x i8]* bitcast (<{ [127 x i8], [129 x i8] }>* @_scan_close_code_fence.yybm to [256 x i8]*), i64 0, i64 %36
%38 = load i8, i8* %37
%39 = and i8 %38, 32
%40 = icmp eq i8 %39, 0
br i1 %40, label %41, label %32
41: ; preds = %32
%42 = icmp eq i8 %35, 10
br i1 %42, label %43, label %21
43: ; preds = %31, %81, %41
%44 = phi i8* [ %34, %41 ], [ %71, %81 ], [ %24, %31 ]
br label %45
45: ; preds = %43, %54
%46 = phi i8* [ %47, %54 ], [ %44, %43 ]
%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 (<{ [127 x i8], [129 x i8] }>* @_scan_close_code_fence.yybm to [256 x i8]*), i64 0, i64 %49
%51 = load i8, i8* %50
%52 = and i8 %51, 32
%53 = icmp eq i8 %52, 0
br i1 %53, label %54, label %78
54: ; preds = %45
%55 = icmp eq i8 %48, 10
br i1 %55, label %45, label %56
56: ; preds = %54, %21
%57 = phi i8* [ %79, %21 ], [ %47, %54 ]
%58 = ptrtoint i8* %57 to i64
%59 = ptrtoint i8* %0 to i64
%60 = sub i64 %58, %59
%61 = trunc i64 %60 to i32
br label %82
62: ; preds = %5
%63 = getelementptr inbounds i8, i8* %0, i64 2
%64 = load i8, i8* %63
%65 = zext i8 %64 to i64
%66 = getelementptr inbounds [256 x i8], [256 x i8]* bitcast (<{ [127 x i8], [129 x i8] }>* @_scan_close_code_fence.yybm to [256 x i8]*), i64 0, i64 %65
%67 = load i8, i8* %66
%68 = icmp sgt i8 %67, -1
br i1 %68, label %82, label %69
69: ; preds = %62, %81
%70 = phi i8* [ %71, %81 ], [ %63, %62 ]
%71 = getelementptr inbounds i8, i8* %70, i64 1
%72 = load i8, i8* %71
%73 = zext i8 %72 to i64
%74 = getelementptr inbounds [256 x i8], [256 x i8]* bitcast (<{ [127 x i8], [129 x i8] }>* @_scan_close_code_fence.yybm to [256 x i8]*), i64 0, i64 %73
%75 = load i8, i8* %74
%76 = and i8 %75, 32
%77 = icmp eq i8 %76, 0
br i1 %77, label %81, label %78
78: ; preds = %22, %69, %45
%79 = phi i8* [ %47, %45 ], [ %71, %69 ], [ %24, %22 ]
%80 = phi i1 [ false, %45 ], [ true, %69 ], [ true, %22 ]
br label %32
81: ; preds = %69
switch i8 %72, label %82 [
i8 10, label %43
i8 96, label %69
]
82: ; preds = %31, %81, %13, %62, %1, %4, %5, %9, %21, %56
%83 = phi i32 [ %61, %56 ], [ 0, %21 ], [ 0, %9 ], [ 0, %5 ], [ 0, %4 ], [ 0, %1 ], [ 0, %62 ], [ 0, %13 ], [ 0, %81 ], [ 0, %31 ]
ret i32 %83
}