#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_open_code_fence(const unsigned char *p) {
  const unsigned char *marker = NULL;
  const unsigned char *start = p;
  {
    unsigned char yych;
    static const unsigned char yybm[] = {
        0,   160, 160, 160, 160, 160, 160, 160, 160, 160, 0,   160, 160, 160,
        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 96,  160,
        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
        144, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
        160, 160, 160, 160,
    };
    yych = *p;
    if (yych <= '_') {
      if (yych != '\n')
        goto yy1253;
    } else {
      if (yych <= '`')
        goto yy1251;
      if (yych == '~')
        goto yy1252;
      goto yy1253;
    }
  yy1250 : { return 0; }
  yy1251:
    yych = *(marker = ++p);
    if (yych == '`')
      goto yy1262;
    goto yy1250;
  yy1252:
    yych = *(marker = ++p);
    if (yych == '~')
      goto yy1254;
    goto yy1250;
  yy1253:
    yych = *++p;
    goto yy1250;
  yy1254:
    yych = *++p;
    if (yybm[0 + yych] & 16) {
      goto yy1256;
    }
  yy1255:
    p = marker;
    goto yy1250;
  yy1256:
    marker = p + 1;
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 32) {
      goto yy1258;
    }
    if (yych <= 0x00)
      goto yy1255;
    if (yych <= '}')
      goto yy1260;
    goto yy1256;
  yy1258:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 32) {
      goto yy1258;
    }
    if (yych <= 0x00)
      goto yy1255;
    if (yych >= '~')
      goto yy1255;
  yy1260:
    ++p;
    p = marker;
    { return (p - start); }
  yy1262:
    yych = *++p;
    if (yybm[0 + yych] & 64) {
      goto yy1263;
    }
    goto yy1255;
  yy1263:
    marker = p + 1;
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy1265;
    }
    if (yych <= 0x00)
      goto yy1255;
    if (yych <= '_')
      goto yy1267;
    goto yy1263;
  yy1265:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy1265;
    }
    if (yych <= 0x00)
      goto yy1255;
    if (yych >= '`')
      goto yy1255;
  yy1267:
    ++p;
    p = marker;
    { return (p - start); }
  }
}


x86 assembly (clang, -O0):
<_scan_open_code_fence>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
movq   $0x0,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x21(%rbp)
movzbl -0x21(%rbp),%eax
cmp    $0x5f,%eax
jg     1145 <_scan_open_code_fence+0x45>
movzbl -0x21(%rbp),%eax
cmp    $0xa,%eax
je     1140 <_scan_open_code_fence+0x40>
jmp    11df <_scan_open_code_fence+0xdf>
jmp    116e <_scan_open_code_fence+0x6e>
movzbl -0x21(%rbp),%eax
cmp    $0x60,%eax
jg     1157 <_scan_open_code_fence+0x57>
jmp    117f <_scan_open_code_fence+0x7f>
movzbl -0x21(%rbp),%eax
cmp    $0x7e,%eax
jne    1169 <_scan_open_code_fence+0x69>
jmp    11af <_scan_open_code_fence+0xaf>
jmp    11df <_scan_open_code_fence+0xdf>
jmp    1173 <_scan_open_code_fence+0x73>
movl   $0x0,-0x4(%rbp)
jmp    147b <_scan_open_code_fence+0x37b>
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    11aa <_scan_open_code_fence+0xaa>
jmp    1341 <_scan_open_code_fence+0x241>
jmp    1173 <_scan_open_code_fence+0x73>
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    11da <_scan_open_code_fence+0xda>
jmp    11f9 <_scan_open_code_fence+0xf9>
jmp    1173 <_scan_open_code_fence+0x73>
mov    -0x10(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x10(%rbp)
mov    0x1(%rax),%al
mov    %al,-0x21(%rbp)
jmp    1173 <_scan_open_code_fence+0x73>
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    0xde1(%rip),%rax
movzbl (%rax,%rcx,1),%eax
and    $0x10,%eax
cmp    $0x0,%eax
je     1234 <_scan_open_code_fence+0x134>
jmp    1246 <_scan_open_code_fence+0x146>
jmp    1239 <_scan_open_code_fence+0x139>
mov    -0x18(%rbp),%rax
mov    %rax,-0x10(%rbp)
jmp    1173 <_scan_open_code_fence+0x73>
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    0xd88(%rip),%rax
movzbl (%rax,%rcx,1),%eax
and    $0x20,%eax
cmp    $0x0,%eax
je     128d <_scan_open_code_fence+0x18d>
jmp    12b6 <_scan_open_code_fence+0x1b6>
movzbl -0x21(%rbp),%eax
cmp    $0x0,%eax
jg     129f <_scan_open_code_fence+0x19f>
jmp    1239 <_scan_open_code_fence+0x139>
movzbl -0x21(%rbp),%eax
cmp    $0x7d,%eax
jg     12b1 <_scan_open_code_fence+0x1b1>
jmp    131a <_scan_open_code_fence+0x21a>
jmp    1246 <_scan_open_code_fence+0x146>
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    0xd24(%rip),%rax
movzbl (%rax,%rcx,1),%eax
and    $0x20,%eax
cmp    $0x0,%eax
je     12f1 <_scan_open_code_fence+0x1f1>
jmp    12b6 <_scan_open_code_fence+0x1b6>
movzbl -0x21(%rbp),%eax
cmp    $0x0,%eax
jg     1303 <_scan_open_code_fence+0x203>
jmp    1239 <_scan_open_code_fence+0x139>
movzbl -0x21(%rbp),%eax
cmp    $0x7e,%eax
jl     1315 <_scan_open_code_fence+0x215>
jmp    1239 <_scan_open_code_fence+0x139>
jmp    131a <_scan_open_code_fence+0x21a>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%rcx
sub    %rcx,%rax
mov    %eax,-0x4(%rbp)
jmp    147b <_scan_open_code_fence+0x37b>
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    0xc99(%rip),%rax
movzbl (%rax,%rcx,1),%eax
and    $0x40,%eax
cmp    $0x0,%eax
je     137c <_scan_open_code_fence+0x27c>
jmp    1381 <_scan_open_code_fence+0x281>
jmp    1239 <_scan_open_code_fence+0x139>
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    0xc4d(%rip),%rax
movzbl (%rax,%rcx,1),%eax
and    $0x80,%eax
cmp    $0x0,%eax
je     13ca <_scan_open_code_fence+0x2ca>
jmp    13f3 <_scan_open_code_fence+0x2f3>
movzbl -0x21(%rbp),%eax
cmp    $0x0,%eax
jg     13dc <_scan_open_code_fence+0x2dc>
jmp    1239 <_scan_open_code_fence+0x139>
movzbl -0x21(%rbp),%eax
cmp    $0x5f,%eax
jg     13ee <_scan_open_code_fence+0x2ee>
jmp    1459 <_scan_open_code_fence+0x359>
jmp    1381 <_scan_open_code_fence+0x281>
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    0xbe7(%rip),%rax
movzbl (%rax,%rcx,1),%eax
and    $0x80,%eax
cmp    $0x0,%eax
je     1430 <_scan_open_code_fence+0x330>
jmp    13f3 <_scan_open_code_fence+0x2f3>
movzbl -0x21(%rbp),%eax
cmp    $0x0,%eax
jg     1442 <_scan_open_code_fence+0x342>
jmp    1239 <_scan_open_code_fence+0x139>
movzbl -0x21(%rbp),%eax
cmp    $0x60,%eax
jl     1454 <_scan_open_code_fence+0x354>
jmp    1239 <_scan_open_code_fence+0x139>
jmp    1459 <_scan_open_code_fence+0x359>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%rcx
sub    %rcx,%rax
mov    %eax,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<_scan_open_code_fence>:
mov    (%rdi),%cl
xor    %eax,%eax
cmp    $0x60,%cl
jb     11d3 <_scan_open_code_fence+0xd3>
cmp    $0x7e,%cl
je     118f <_scan_open_code_fence+0x8f>
cmp    $0x60,%cl
jne    11d3 <_scan_open_code_fence+0xd3>
cmpb   $0x60,0x1(%rdi)
jne    11ff <_scan_open_code_fence+0xff>
cmpb   $0x60,0x2(%rdi)
jne    11ff <_scan_open_code_fence+0xff>
add    $0x4,%rdi
mov    $0x3,%edx
lea    0xec1(%rip),%r8
nop
mov    %edx,%ecx
movzbl -0x1(%rdi),%esi
cmpb   $0x0,(%rsi,%r8,1)
js     1170 <_scan_open_code_fence+0x70>
test   %sil,%sil
je     11ff <_scan_open_code_fence+0xff>
add    $0x1,%rdi
lea    0x1(%rcx),%edx
cmp    $0x60,%sil
jae    1140 <_scan_open_code_fence+0x40>
jmp    11fd <_scan_open_code_fence+0xfd>
nopl   0x0(%rax,%rax,1)
movzbl (%rdi),%esi
add    $0x1,%rdi
cmpb   $0x0,(%rsi,%r8,1)
js     1170 <_scan_open_code_fence+0x70>
add    $0xa0,%sil
mov    $0x0,%eax
cmp    $0xa1,%sil
jae    11fd <_scan_open_code_fence+0xfd>
jmp    11ff <_scan_open_code_fence+0xff>
cmpb   $0x7e,0x1(%rdi)
jne    11d3 <_scan_open_code_fence+0xd3>
cmpb   $0x7e,0x2(%rdi)
jne    11d3 <_scan_open_code_fence+0xd3>
add    $0x4,%rdi
mov    $0x3,%edx
lea    0xe55(%rip),%r8
nopl   0x0(%rax,%rax,1)
mov    %edx,%ecx
movzbl -0x1(%rdi),%esi
testb  $0x20,(%rsi,%r8,1)
jne    11e0 <_scan_open_code_fence+0xe0>
test   %sil,%sil
je     11d3 <_scan_open_code_fence+0xd3>
add    $0x1,%rdi
lea    0x1(%rcx),%edx
mov    %ecx,%eax
cmp    $0x7e,%sil
jae    11b0 <_scan_open_code_fence+0xb0>
jmp    11ff <_scan_open_code_fence+0xff>
xor    %eax,%eax
ret
cs nopw 0x0(%rax,%rax,1)
movzbl (%rdi),%esi
add    $0x1,%rdi
testb  $0x20,(%rsi,%r8,1)
jne    11e0 <_scan_open_code_fence+0xe0>
add    $0x82,%sil
mov    $0x0,%eax
cmp    $0x83,%sil
jb     11ff <_scan_open_code_fence+0xff>
mov    %ecx,%eax
ret

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

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