#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 */
typedef int /*<<< orphan*/ FILE;

/* Variables and functions */
int /*<<< orphan*/ fclose(int /*<<< orphan*/ *);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *);
int /*<<< orphan*/ fputc(char const, int /*<<< orphan*/ *);
int /*<<< orphan*/ fread(char *, int, int, int /*<<< orphan*/ *);
int ftell(int /*<<< orphan*/ *);
scalar_t__ isalpha(char const);
scalar_t__ isspace(char const);
char *malloc(int);
int /*<<< orphan*/ rewind(int /*<<< orphan*/ *);
int /*<<< orphan*/ stderr;
int /*<<< orphan*/ *tmpfile();
char *pass0(const char *content) {
  unsigned char mode = 0;
  char tag[1024 + 1], sp = ' ';
  int tagsize = 0;
  FILE *output = tmpfile();
  for (; *content != 0; ++content) {
    if (mode == 0) {
      if (*content == '\\') {
        ++content;
        if (*content == '{')
          fputc(1, output);
        else if (*content == '}')
          fputc(2, output);
        else
          fputc(*content, output);
      } else if (*content == '{')
        mode = 1;
      else {
        fputc(*content, output);
        if (*content == 0)
          break;
      }
    } else if (mode == 1) {
      if (isalpha(*content)) {
        fputc('{', output);
        mode = 0;
        fputc(*content, output);
      } else if (*content == '{') {
        fputc('{', output);
      } else {
        mode = 2;
        tagsize = 0;
        tag[tagsize++] = *content;
      }
    } else if (mode == 2) {
      if (isspace(*content)) {
        mode = 5;
        tag[tagsize] = 0;
      } else if (tagsize < 1024) {
        tag[tagsize++] = *content;
      } else {
        fprintf(stderr, "Maximum length for Bun's verbatim tag exceeded.\n");
        fclose(output);
        return NULL;
      }
    } else if (mode == 5) {
      if (isspace(*content)) {
        sp = *content;
        mode = 3;
      } else if (*content == '{')
        fputc(1, output);
      else if (*content == '}')
        fputc(2, output);
      else
        fputc(*content, output);
    } else if (mode == 3) {
      if (*content == tag[0]) {
        mode = 4;
        tagsize = 1;
      } else {
        fputc(sp, output);
        fputc(*content, output);
        mode = 5;
      }
    } else if (mode == 4) {
      if (*content == '}' && tag[tagsize] == 0) {
        mode = 0;
      } else if (*content == tag[tagsize]) {
        ++tagsize;
      } else {
        int i;
        fputc(sp, output);
        for (i = 0; i < tagsize; ++i)
          fputc(tag[i], output);
        fputc(*content, output);
        mode = 5;
      }
    }
  }
  fputc(0, output);
  if (mode == 0) {
    int output_size = ftell(output);
    char *ret;
    ret = malloc(output_size);
    rewind(output);
    fread(ret, 1, output_size, output);
    fclose(output);
    return ret;
  } else {
    fprintf(stderr, "Didn't finish pass 0 in normal state.\n");
    fclose(output);
    return NULL;
  }
}


x86 assembly (clang, -O0):
<pass0>:
push   %rbp
mov    %rsp,%rbp
sub    $0x440,%rsp
mov    %rdi,-0x10(%rbp)
movb   $0x0,-0x11(%rbp)
movb   $0x20,-0x421(%rbp)
movl   $0x0,-0x428(%rbp)
mov    $0x0,%al
call   1080 <tmpfile@plt>
mov    %rax,-0x430(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
je     1655 <pass0+0x4b5>
movzbl -0x11(%rbp),%eax
cmp    $0x0,%eax
jne    12c8 <pass0+0x128>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x5c,%eax
jne    1276 <pass0+0xd6>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x7b,%eax
jne    1231 <pass0+0x91>
mov    -0x430(%rbp),%rsi
mov    $0x1,%edi
call   1070 <fputc@plt>
jmp    1271 <pass0+0xd1>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x7d,%eax
jne    1257 <pass0+0xb7>
mov    -0x430(%rbp),%rsi
mov    $0x2,%edi
call   1070 <fputc@plt>
jmp    126c <pass0+0xcc>
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    -0x430(%rbp),%rsi
movsbl %al,%edi
call   1070 <fputc@plt>
jmp    1271 <pass0+0xd1>
jmp    12c3 <pass0+0x123>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x7b,%eax
jne    128f <pass0+0xef>
movb   $0x1,-0x11(%rbp)
jmp    12be <pass0+0x11e>
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    -0x430(%rbp),%rsi
movsbl %al,%edi
call   1070 <fputc@plt>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
jne    12b9 <pass0+0x119>
jmp    1655 <pass0+0x4b5>
jmp    12be <pass0+0x11e>
jmp    12c3 <pass0+0x123>
jmp    163f <pass0+0x49f>
movzbl -0x11(%rbp),%eax
cmp    $0x1,%eax
jne    1378 <pass0+0x1d8>
mov    -0x10(%rbp),%rax
movsbl (%rax),%edi
call   10c0 <isalpha@plt>
cmp    $0x0,%rax
je     131a <pass0+0x17a>
mov    -0x430(%rbp),%rsi
mov    $0x7b,%edi
call   1070 <fputc@plt>
movb   $0x0,-0x11(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    -0x430(%rbp),%rsi
movsbl %al,%edi
call   1070 <fputc@plt>
jmp    1373 <pass0+0x1d3>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x7b,%eax
jne    1340 <pass0+0x1a0>
mov    -0x430(%rbp),%rsi
mov    $0x7b,%edi
call   1070 <fputc@plt>
jmp    136e <pass0+0x1ce>
movb   $0x2,-0x11(%rbp)
movl   $0x0,-0x428(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%cl
mov    -0x428(%rbp),%eax
mov    %eax,%edx
add    $0x1,%edx
mov    %edx,-0x428(%rbp)
cltq
mov    %cl,-0x420(%rbp,%rax,1)
jmp    1373 <pass0+0x1d3>
jmp    163a <pass0+0x49a>
movzbl -0x11(%rbp),%eax
cmp    $0x2,%eax
jne    1420 <pass0+0x280>
mov    -0x10(%rbp),%rax
movsbl (%rax),%edi
call   1060 <isspace@plt>
cmp    $0x0,%rax
je     13b3 <pass0+0x213>
movb   $0x5,-0x11(%rbp)
movslq -0x428(%rbp),%rax
movb   $0x0,-0x420(%rbp,%rax,1)
jmp    141b <pass0+0x27b>
cmpl   $0x400,-0x428(%rbp)
jge    13e8 <pass0+0x248>
mov    -0x10(%rbp),%rax
mov    (%rax),%cl
mov    -0x428(%rbp),%eax
mov    %eax,%edx
add    $0x1,%edx
mov    %edx,-0x428(%rbp)
cltq
mov    %cl,-0x420(%rbp,%rax,1)
jmp    1416 <pass0+0x276>
mov    0x2bf1(%rip),%rax
mov    (%rax),%edi
lea    0xc08(%rip),%rsi
call   1090 <fprintf@plt>
mov    -0x430(%rbp),%rdi
call   1040 <fclose@plt>
movq   $0x0,-0x8(%rbp)
jmp    1703 <pass0+0x563>
jmp    141b <pass0+0x27b>
jmp    1635 <pass0+0x495>
movzbl -0x11(%rbp),%eax
cmp    $0x5,%eax
jne    14c8 <pass0+0x328>
mov    -0x10(%rbp),%rax
movsbl (%rax),%edi
call   1060 <isspace@plt>
cmp    $0x0,%rax
je     1458 <pass0+0x2b8>
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x421(%rbp)
movb   $0x3,-0x11(%rbp)
jmp    14c3 <pass0+0x323>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x7b,%eax
jne    147e <pass0+0x2de>
mov    -0x430(%rbp),%rsi
mov    $0x1,%edi
call   1070 <fputc@plt>
jmp    14be <pass0+0x31e>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x7d,%eax
jne    14a4 <pass0+0x304>
mov    -0x430(%rbp),%rsi
mov    $0x2,%edi
call   1070 <fputc@plt>
jmp    14b9 <pass0+0x319>
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    -0x430(%rbp),%rsi
movsbl %al,%edi
call   1070 <fputc@plt>
jmp    14be <pass0+0x31e>
jmp    14c3 <pass0+0x323>
jmp    1630 <pass0+0x490>
movzbl -0x11(%rbp),%eax
cmp    $0x3,%eax
jne    1531 <pass0+0x391>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
movsbl -0x420(%rbp),%ecx
cmp    %ecx,%eax
jne    14fe <pass0+0x35e>
movb   $0x4,-0x11(%rbp)
movl   $0x1,-0x428(%rbp)
jmp    152c <pass0+0x38c>
mov    -0x421(%rbp),%al
mov    -0x430(%rbp),%rsi
movsbl %al,%edi
call   1070 <fputc@plt>
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    -0x430(%rbp),%rsi
movsbl %al,%edi
call   1070 <fputc@plt>
movb   $0x5,-0x11(%rbp)
jmp    162b <pass0+0x48b>
movzbl -0x11(%rbp),%eax
cmp    $0x4,%eax
jne    1626 <pass0+0x486>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x7d,%eax
jne    156f <pass0+0x3cf>
movslq -0x428(%rbp),%rax
movsbl -0x420(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
jne    156f <pass0+0x3cf>
movb   $0x0,-0x11(%rbp)
jmp    1621 <pass0+0x481>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
movslq -0x428(%rbp),%rcx
movsbl -0x420(%rbp,%rcx,1),%ecx
ff
cmp    %ecx,%eax
jne    15a1 <pass0+0x401>
mov    -0x428(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x428(%rbp)
jmp    161c <pass0+0x47c>
mov    -0x421(%rbp),%al
mov    -0x430(%rbp),%rsi
movsbl %al,%edi
call   1070 <fputc@plt>
movl   $0x0,-0x434(%rbp)
mov    -0x434(%rbp),%eax
cmp    -0x428(%rbp),%eax
jge    1603 <pass0+0x463>
movslq -0x434(%rbp),%rax
mov    -0x420(%rbp,%rax,1),%al
mov    -0x430(%rbp),%rsi
movsbl %al,%edi
call   1070 <fputc@plt>
mov    -0x434(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x434(%rbp)
jmp    15c0 <pass0+0x420>
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    -0x430(%rbp),%rsi
movsbl %al,%edi
call   1070 <fputc@plt>
movb   $0x5,-0x11(%rbp)
jmp    1621 <pass0+0x481>
jmp    1626 <pass0+0x486>
jmp    162b <pass0+0x48b>
jmp    1630 <pass0+0x490>
jmp    1635 <pass0+0x495>
jmp    163a <pass0+0x49a>
jmp    163f <pass0+0x49f>
jmp    1644 <pass0+0x4a4>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    11d2 <pass0+0x32>
mov    -0x430(%rbp),%rsi
xor    %edi,%edi
call   1070 <fputc@plt>
movzbl -0x11(%rbp),%eax
cmp    $0x0,%eax
jne    16da <pass0+0x53a>
mov    -0x430(%rbp),%rdi
call   10a0 <ftell@plt>
mov    %eax,-0x438(%rbp)
mov    -0x438(%rbp),%edi
call   10b0 <malloc@plt>
mov    %rax,-0x440(%rbp)
mov    -0x430(%rbp),%rdi
call   1050 <rewind@plt>
mov    -0x440(%rbp),%rdi
mov    -0x438(%rbp),%edx
mov    -0x430(%rbp),%rcx
mov    $0x1,%esi
call   1030 <fread@plt>
mov    -0x430(%rbp),%rdi
call   1040 <fclose@plt>
mov    -0x440(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    1703 <pass0+0x563>
mov    0x28ff(%rip),%rax
mov    (%rax),%edi
lea    0x947(%rip),%rsi
call   1090 <fprintf@plt>
mov    -0x430(%rbp),%rdi
call   1040 <fclose@plt>
movq   $0x0,-0x8(%rbp)
mov    -0x8(%rbp),%rax
add    $0x440,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<pass0>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x418,%rsp
mov    %rdi,%rbx
xor    %r12d,%r12d
xor    %eax,%eax
call   1080 <tmpfile@plt>
mov    %rax,%r14
mov    (%rbx),%al
test   %al,%al
je     13fd <pass0+0x25d>
mov    $0x20,%r15b
lea    0xe2b(%rip),%r13
xor    %ebp,%ebp
jmp    11ff <pass0+0x5f>
movsbl %al,%edi
mov    %r14,%rsi
call   1070 <fputc@plt>
cmpb   $0x0,(%rbx)
je     13fd <pass0+0x25d>
xor    %ebp,%ebp
nop
mov    0x1(%rbx),%al
add    $0x1,%rbx
test   %al,%al
je     13d5 <pass0+0x235>
cmp    $0x5,%bpl
ja     11f0 <pass0+0x50>
movzbl %bpl,%ecx
movslq 0x0(%r13,%rcx,4),%rcx
add    %r13,%rcx
jmp    *%rcx
cmp    $0x7b,%al
je     134b <pass0+0x1ab>
cmp    $0x5c,%al
jne    11d9 <pass0+0x39>
mov    0x1(%rbx),%al
add    $0x1,%rbx
cmp    $0x7d,%al
je     13c3 <pass0+0x223>
cmp    $0x7b,%al
jne    13cd <pass0+0x22d>
mov    $0x1,%edi
jmp    125e <pass0+0xbe>
movsbl %al,%edi
call   10c0 <isalpha@plt>
test   %rax,%rax
je     12f9 <pass0+0x159>
mov    $0x7b,%edi
mov    %r14,%rsi
call   1070 <fputc@plt>
movsbl (%rbx),%edi
mov    %r14,%rsi
call   1070 <fputc@plt>
xor    %ebp,%ebp
jmp    11f0 <pass0+0x50>
movsbl %al,%edi
call   1060 <isspace@plt>
test   %rax,%rax
je     1318 <pass0+0x178>
movslq %r12d,%rax
movb   $0x0,0x10(%rsp,%rax,1)
mov    $0x5,%bpl
jmp    11f0 <pass0+0x50>
cmp    0x10(%rsp),%al
jne    12da <pass0+0x13a>
mov    $0x4,%bpl
jmp    13a6 <pass0+0x206>
movslq %r12d,%rcx
mov    0x10(%rsp,%rcx,1),%cl
cmp    $0x7d,%al
jne    12ac <pass0+0x10c>
test   %cl,%cl
je     11ed <pass0+0x4d>
cmp    %cl,%al
jne    1353 <pass0+0x1b3>
add    $0x1,%r12d
mov    $0x4,%bpl
jmp    11f0 <pass0+0x50>
movsbl %al,%edi
call   1060 <isspace@plt>
mov    (%rbx),%cl
mov    $0x3,%bpl
test   %rax,%rax
je     133a <pass0+0x19a>
mov    %ecx,%r15d
jmp    11f0 <pass0+0x50>
movsbl %r15b,%edi
mov    %r14,%rsi
call   1070 <fputc@plt>
movsbl (%rbx),%edi
mov    %r14,%rsi
call   1070 <fputc@plt>
mov    $0x5,%bpl
jmp    11f0 <pass0+0x50>
mov    (%rbx),%al
cmp    $0x7b,%al
jne    139f <pass0+0x1ff>
mov    $0x7b,%edi
mov    %r14,%rsi
call   1070 <fputc@plt>
mov    $0x1,%bpl
jmp    11f0 <pass0+0x50>
cmp    $0x3ff,%r12d
jg     1452 <pass0+0x2b2>
mov    (%rbx),%al
movslq %r12d,%rcx
add    $0x1,%r12d
mov    %al,0x10(%rsp,%rcx,1)
mov    $0x2,%bpl
jmp    11f0 <pass0+0x50>
cmp    $0x7d,%cl
je     13b1 <pass0+0x211>
cmp    $0x7b,%cl
jne    13bb <pass0+0x21b>
mov    $0x1,%edi
jmp    12e9 <pass0+0x149>
mov    $0x1,%bpl
jmp    11f0 <pass0+0x50>
mov    %r15b,0xf(%rsp)
movsbl %r15b,%edi
mov    %r14,%rsi
call   1070 <fputc@plt>
test   %r12d,%r12d
jle    1387 <pass0+0x1e7>
mov    %r12d,%ebp
xor    %r15d,%r15d
nop
movsbl 0x10(%rsp,%r15,1),%edi
mov    %r14,%rsi
call   1070 <fputc@plt>
add    $0x1,%r15
cmp    %r15,%rbp
jne    1370 <pass0+0x1d0>
movsbl (%rbx),%edi
mov    %r14,%rsi
call   1070 <fputc@plt>
mov    $0x5,%bpl
mov    0xf(%rsp),%r15b
jmp    11f0 <pass0+0x50>
mov    %al,0x10(%rsp)
mov    $0x2,%bpl
mov    $0x1,%r12d
jmp    11f0 <pass0+0x50>
mov    $0x2,%edi
jmp    12e9 <pass0+0x149>
movsbl %cl,%edi
jmp    12e9 <pass0+0x149>
mov    $0x2,%edi
jmp    125e <pass0+0xbe>
movsbl %al,%edi
jmp    125e <pass0+0xbe>
xor    %edi,%edi
mov    %r14,%rsi
call   1070 <fputc@plt>
test   %bpl,%bpl
je     1407 <pass0+0x267>
mov    0x2bf5(%rip),%rax
mov    (%rax),%edi
lea    0xc55(%rip),%rsi
call   1090 <fprintf@plt>
xor    %ebx,%ebx
jmp    1435 <pass0+0x295>
xor    %edi,%edi
mov    %r14,%rsi
call   1070 <fputc@plt>
mov    %r14,%rdi
call   10a0 <ftell@plt>
mov    %eax,%ebp
mov    %eax,%edi
call   10b0 <malloc@plt>
mov    %rax,%rbx
mov    %r14,%rdi
call   1050 <rewind@plt>
mov    %rbx,%rdi
mov    $0x1,%esi
mov    %ebp,%edx
mov    %r14,%rcx
call   1030 <fread@plt>
mov    %r14,%rdi
call   1040 <fclose@plt>
mov    %rbx,%rax
add    $0x418,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    0x2b87(%rip),%rax
mov    (%rax),%edi
lea    0xbb6(%rip),%rsi
jmp    13f4 <pass0+0x254>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [49 x i8] c"Maximum length for Bun's verbatim tag exceeded.\0A\00"
@.str.1 = [39 x i8] c"Didn't finish pass 0 in normal state.\0A\00"
define i8* @pass0(i8* %0) {
%2 = alloca i8*
%3 = alloca i8*
%4 = alloca i8
%5 = alloca [1025 x i8]
%6 = alloca i8
%7 = alloca i32
%8 = alloca i32*
%9 = alloca i32
%10 = alloca i32
%11 = alloca i8*
store i8* %0, i8** %3
store i8 0, i8* %4
store i8 32, i8* %6
store i32 0, i32* %7
%12 = call i32* (...) @tmpfile()
store i32* %12, i32** %8
br label %13
13: ; preds = %253, %1
%14 = load i8*, i8** %3
%15 = load i8, i8* %14
%16 = sext i8 %15 to i32
%17 = icmp ne i32 %16, 0
br i1 %17, label %18, label %256
18: ; preds = %13
%19 = load i8, i8* %4
%20 = zext i8 %19 to i32
%21 = icmp eq i32 %20, 0
br i1 %21, label %22, label %71
22: ; preds = %18
%23 = load i8*, i8** %3
%24 = load i8, i8* %23
%25 = sext i8 %24 to i32
%26 = icmp eq i32 %25, 92
br i1 %26, label %27, label %52
27: ; preds = %22
%28 = load i8*, i8** %3
%29 = getelementptr inbounds i8, i8* %28, i32 1
store i8* %29, i8** %3
%30 = load i8*, i8** %3
%31 = load i8, i8* %30
%32 = sext i8 %31 to i32
%33 = icmp eq i32 %32, 123
br i1 %33, label %34, label %37
34: ; preds = %27
%35 = load i32*, i32** %8
%36 = call i32 @fputc(i8 signext 1, i32* %35)
br label %51
37: ; preds = %27
%38 = load i8*, i8** %3
%39 = load i8, i8* %38
%40 = sext i8 %39 to i32
%41 = icmp eq i32 %40, 125
br i1 %41, label %42, label %45
42: ; preds = %37
%43 = load i32*, i32** %8
%44 = call i32 @fputc(i8 signext 2, i32* %43)
br label %50
45: ; preds = %37
%46 = load i8*, i8** %3
%47 = load i8, i8* %46
%48 = load i32*, i32** %8
%49 = call i32 @fputc(i8 signext %47, i32* %48)
br label %50
50: ; preds = %45, %42
br label %51
51: ; preds = %50, %34
br label %70
52: ; preds = %22
%53 = load i8*, i8** %3
%54 = load i8, i8* %53
%55 = sext i8 %54 to i32
%56 = icmp eq i32 %55, 123
br i1 %56, label %57, label %58
57: ; preds = %52
store i8 1, i8* %4
br label %69
58: ; preds = %52
%59 = load i8*, i8** %3
%60 = load i8, i8* %59
%61 = load i32*, i32** %8
%62 = call i32 @fputc(i8 signext %60, i32* %61)
%63 = load i8*, i8** %3
%64 = load i8, i8* %63
%65 = sext i8 %64 to i32
%66 = icmp eq i32 %65, 0
br i1 %66, label %67, label %68
67: ; preds = %58
br label %256
68: ; preds = %58
br label %69
69: ; preds = %68, %57
br label %70
70: ; preds = %69, %51
br label %252
71: ; preds = %18
%72 = load i8, i8* %4
%73 = zext i8 %72 to i32
%74 = icmp eq i32 %73, 1
br i1 %74, label %75, label %104
75: ; preds = %71
%76 = load i8*, i8** %3
%77 = load i8, i8* %76
%78 = call i64 @isalpha(i8 signext %77)
%79 = icmp ne i64 %78, 0
br i1 %79, label %80, label %87
80: ; preds = %75
%81 = load i32*, i32** %8
%82 = call i32 @fputc(i8 signext 123, i32* %81)
store i8 0, i8* %4
%83 = load i8*, i8** %3
%84 = load i8, i8* %83
%85 = load i32*, i32** %8
%86 = call i32 @fputc(i8 signext %84, i32* %85)
br label %103
87: ; preds = %75
%88 = load i8*, i8** %3
%89 = load i8, i8* %88
%90 = sext i8 %89 to i32
%91 = icmp eq i32 %90, 123
br i1 %91, label %92, label %95
92: ; preds = %87
%93 = load i32*, i32** %8
%94 = call i32 @fputc(i8 signext 123, i32* %93)
br label %102
95: ; preds = %87
store i8 2, i8* %4
store i32 0, i32* %7
%96 = load i8*, i8** %3
%97 = load i8, i8* %96
%98 = load i32, i32* %7
%99 = add nsw i32 %98, 1
store i32 %99, i32* %7
%100 = sext i32 %98 to i64
%101 = getelementptr inbounds [1025 x i8], [1025 x i8]* %5, i64 0, i64 %100
store i8 %97, i8* %101
br label %102
102: ; preds = %95, %92
br label %103
103: ; preds = %102, %80
br label %251
104: ; preds = %71
%105 = load i8, i8* %4
%106 = zext i8 %105 to i32
%107 = icmp eq i32 %106, 2
br i1 %107, label %108, label %134
108: ; preds = %104
%109 = load i8*, i8** %3
%110 = load i8, i8* %109
%111 = call i64 @isspace(i8 signext %110)
%112 = icmp ne i64 %111, 0
br i1 %112, label %113, label %117
113: ; preds = %108
store i8 5, i8* %4
%114 = load i32, i32* %7
%115 = sext i32 %114 to i64
%116 = getelementptr inbounds [1025 x i8], [1025 x i8]* %5, i64 0, i64 %115
store i8 0, i8* %116
br label %133
117: ; preds = %108
%118 = load i32, i32* %7
%119 = icmp slt i32 %118, 1024
br i1 %119, label %120, label %127
120: ; preds = %117
%121 = load i8*, i8** %3
%122 = load i8, i8* %121
%123 = load i32, i32* %7
%124 = add nsw i32 %123, 1
store i32 %124, i32* %7
%125 = sext i32 %123 to i64
%126 = getelementptr inbounds [1025 x i8], [1025 x i8]* %5, i64 0, i64 %125
store i8 %122, i8* %126
br label %132
127: ; preds = %117
%128 = load i32, i32* @stderr
%129 = call i32 @fprintf(i32 %128, i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str, i64 0, i64 0))
%130 = load i32*, i32** %8
%131 = call i32 @fclose(i32* %130)
store i8* null, i8** %2
br label %281
132: ; preds = %120
br label %133
133: ; preds = %132, %113
br label %250
134: ; preds = %104
%135 = load i8, i8* %4
%136 = zext i8 %135 to i32
%137 = icmp eq i32 %136, 5
br i1 %137, label %138, label %170
138: ; preds = %134
%139 = load i8*, i8** %3
%140 = load i8, i8* %139
%141 = call i64 @isspace(i8 signext %140)
%142 = icmp ne i64 %141, 0
br i1 %142, label %143, label %146
143: ; preds = %138
%144 = load i8*, i8** %3
%145 = load i8, i8* %144
store i8 %145, i8* %6
store i8 3, i8* %4
br label %169
146: ; preds = %138
%147 = load i8*, i8** %3
%148 = load i8, i8* %147
%149 = sext i8 %148 to i32
%150 = icmp eq i32 %149, 123
br i1 %150, label %151, label %154
151: ; preds = %146
%152 = load i32*, i32** %8
%153 = call i32 @fputc(i8 signext 1, i32* %152)
br label %168
154: ; preds = %146
%155 = load i8*, i8** %3
%156 = load i8, i8* %155
%157 = sext i8 %156 to i32
%158 = icmp eq i32 %157, 125
br i1 %158, label %159, label %162
159: ; preds = %154
%160 = load i32*, i32** %8
%161 = call i32 @fputc(i8 signext 2, i32* %160)
br label %167
162: ; preds = %154
%163 = load i8*, i8** %3
%164 = load i8, i8* %163
%165 = load i32*, i32** %8
%166 = call i32 @fputc(i8 signext %164, i32* %165)
br label %167
167: ; preds = %162, %159
br label %168
168: ; preds = %167, %151
br label %169
169: ; preds = %168, %143
br label %249
170: ; preds = %134
%171 = load i8, i8* %4
%172 = zext i8 %171 to i32
%173 = icmp eq i32 %172, 3
br i1 %173, label %174, label %192
174: ; preds = %170
%175 = load i8*, i8** %3
%176 = load i8, i8* %175
%177 = sext i8 %176 to i32
%178 = getelementptr inbounds [1025 x i8], [1025 x i8]* %5, i64 0, i64 0
%179 = load i8, i8* %178
%180 = sext i8 %179 to i32
%181 = icmp eq i32 %177, %180
br i1 %181, label %182, label %183
182: ; preds = %174
store i8 4, i8* %4
store i32 1, i32* %7
br label %191
183: ; preds = %174
%184 = load i8, i8* %6
%185 = load i32*, i32** %8
%186 = call i32 @fputc(i8 signext %184, i32* %185)
%187 = load i8*, i8** %3
%188 = load i8, i8* %187
%189 = load i32*, i32** %8
%190 = call i32 @fputc(i8 signext %188, i32* %189)
store i8 5, i8* %4
br label %191
191: ; preds = %183, %182
br label %248
192: ; preds = %170
%193 = load i8, i8* %4
%194 = zext i8 %193 to i32
%195 = icmp eq i32 %194, 4
br i1 %195, label %196, label %247
196: ; preds = %192
%197 = load i8*, i8** %3
%198 = load i8, i8* %197
%199 = sext i8 %198 to i32
%200 = icmp eq i32 %199, 125
br i1 %200, label %201, label %209
201: ; preds = %196
%202 = load i32, i32* %7
%203 = sext i32 %202 to i64
%204 = getelementptr inbounds [1025 x i8], [1025 x i8]* %5, i64 0, i64 %203
%205 = load i8, i8* %204
%206 = sext i8 %205 to i32
%207 = icmp eq i32 %206, 0
br i1 %207, label %208, label %209
208: ; preds = %201
store i8 0, i8* %4
br label %246
209: ; preds = %201, %196
%210 = load i8*, i8** %3
%211 = load i8, i8* %210
%212 = sext i8 %211 to i32
%213 = load i32, i32* %7
%214 = sext i32 %213 to i64
%215 = getelementptr inbounds [1025 x i8], [1025 x i8]* %5, i64 0, i64 %214
%216 = load i8, i8* %215
%217 = sext i8 %216 to i32
%218 = icmp eq i32 %212, %217
br i1 %218, label %219, label %222
219: ; preds = %209
%220 = load i32, i32* %7
%221 = add nsw i32 %220, 1
store i32 %221, i32* %7
br label %245
222: ; preds = %209
%223 = load i8, i8* %6
%224 = load i32*, i32** %8
%225 = call i32 @fputc(i8 signext %223, i32* %224)
store i32 0, i32* %9
br label %226
226: ; preds = %237, %222
%227 = load i32, i32* %9
%228 = load i32, i32* %7
%229 = icmp slt i32 %227, %228
br i1 %229, label %230, label %240
230: ; preds = %226
%231 = load i32, i32* %9
%232 = sext i32 %231 to i64
%233 = getelementptr inbounds [1025 x i8], [1025 x i8]* %5, i64 0, i64 %232
%234 = load i8, i8* %233
%235 = load i32*, i32** %8
%236 = call i32 @fputc(i8 signext %234, i32* %235)
br label %237
237: ; preds = %230
%238 = load i32, i32* %9
%239 = add nsw i32 %238, 1
store i32 %239, i32* %9
br label %226
240: ; preds = %226
%241 = load i8*, i8** %3
%242 = load i8, i8* %241
%243 = load i32*, i32** %8
%244 = call i32 @fputc(i8 signext %242, i32* %243)
store i8 5, i8* %4
br label %245
245: ; preds = %240, %219
br label %246
246: ; preds = %245, %208
br label %247
247: ; preds = %246, %192
br label %248
248: ; preds = %247, %191
br label %249
249: ; preds = %248, %169
br label %250
250: ; preds = %249, %133
br label %251
251: ; preds = %250, %103
br label %252
252: ; preds = %251, %70
br label %253
253: ; preds = %252
%254 = load i8*, i8** %3
%255 = getelementptr inbounds i8, i8* %254, i32 1
store i8* %255, i8** %3
br label %13
256: ; preds = %67, %13
%257 = load i32*, i32** %8
%258 = call i32 @fputc(i8 signext 0, i32* %257)
%259 = load i8, i8* %4
%260 = zext i8 %259 to i32
%261 = icmp eq i32 %260, 0
br i1 %261, label %262, label %276
262: ; preds = %256
%263 = load i32*, i32** %8
%264 = call i32 @ftell(i32* %263)
store i32 %264, i32* %10
%265 = load i32, i32* %10
%266 = call i8* @malloc(i32 %265)
store i8* %266, i8** %11
%267 = load i32*, i32** %8
%268 = call i32 @rewind(i32* %267)
%269 = load i8*, i8** %11
%270 = load i32, i32* %10
%271 = load i32*, i32** %8
%272 = call i32 @fread(i8* %269, i32 1, i32 %270, i32* %271)
%273 = load i32*, i32** %8
%274 = call i32 @fclose(i32* %273)
%275 = load i8*, i8** %11
store i8* %275, i8** %2
br label %281
276: ; preds = %256
%277 = load i32, i32* @stderr
%278 = call i32 @fprintf(i32 %277, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.1, i64 0, i64 0))
%279 = load i32*, i32** %8
%280 = call i32 @fclose(i32* %279)
store i8* null, i8** %2
br label %281
281: ; preds = %276, %262, %127
%282 = load i8*, i8** %2
ret i8* %282
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [49 x i8] c"Maximum length for Bun's verbatim tag exceeded.\0A\00"
@.str.1 = [39 x i8] c"Didn't finish pass 0 in normal state.\0A\00"
define noalias i8* @pass0(i8* %0) {
%2 = alloca [1025 x i8]
%3 = getelementptr inbounds [1025 x i8], [1025 x i8]* %2, i64 0, i64 0
%4 = tail call i32* (...) @tmpfile()
%5 = load i8, i8* %0
%6 = icmp eq i8 %5, 0
br i1 %6, label %111, label %7
7: ; preds = %1, %100
%8 = phi i8 [ %106, %100 ], [ %5, %1 ]
%9 = phi i8* [ %105, %100 ], [ %0, %1 ]
%10 = phi i8 [ %103, %100 ], [ 0, %1 ]
%11 = phi i32 [ %102, %100 ], [ 0, %1 ]
%12 = phi i8 [ %101, %100 ], [ 32, %1 ]
switch i8 %10, label %100 [
i8 0, label %13
i8 1, label %27
i8 2, label %40
i8 5, label %56
i8 3, label %67
i8 4, label %74
]
13: ; preds = %7
switch i8 %8, label %23 [
i8 92, label %14
i8 123, label %100
]
14: ; preds = %13
%15 = getelementptr inbounds i8, i8* %9, i64 1
%16 = load i8, i8* %15
switch i8 %16, label %21 [
i8 123, label %17
i8 125, label %19
]
17: ; preds = %14
%18 = tail call i32 @fputc(i8 signext 1, i32* %4)
br label %100
19: ; preds = %14
%20 = tail call i32 @fputc(i8 signext 2, i32* %4)
br label %100
21: ; preds = %14
%22 = tail call i32 @fputc(i8 signext %16, i32* %4)
br label %100
23: ; preds = %13
%24 = tail call i32 @fputc(i8 signext %8, i32* %4)
%25 = load i8, i8* %9
%26 = icmp eq i8 %25, 0
br i1 %26, label %111, label %100
27: ; preds = %7
%28 = tail call i64 @isalpha(i8 signext %8)
%29 = icmp eq i64 %28, 0
br i1 %29, label %34, label %30
30: ; preds = %27
%31 = tail call i32 @fputc(i8 signext 123, i32* %4)
%32 = load i8, i8* %9
%33 = tail call i32 @fputc(i8 signext %32, i32* %4)
br label %100
34: ; preds = %27
%35 = load i8, i8* %9
%36 = icmp eq i8 %35, 123
br i1 %36, label %37, label %39
37: ; preds = %34
%38 = tail call i32 @fputc(i8 signext 123, i32* %4)
br label %100
39: ; preds = %34
store i8 %35, i8* %3
br label %100
40: ; preds = %7
%41 = tail call i64 @isspace(i8 signext %8)
%42 = icmp eq i64 %41, 0
br i1 %42, label %46, label %43
43: ; preds = %40
%44 = sext i32 %11 to i64
%45 = getelementptr inbounds [1025 x i8], [1025 x i8]* %2, i64 0, i64 %44
store i8 0, i8* %45
br label %100
46: ; preds = %40
%47 = icmp slt i32 %11, 1024
br i1 %47, label %48, label %53
48: ; preds = %46
%49 = load i8, i8* %9
%50 = add nsw i32 %11, 1
%51 = sext i32 %11 to i64
%52 = getelementptr inbounds [1025 x i8], [1025 x i8]* %2, i64 0, i64 %51
store i8 %49, i8* %52
br label %100
53: ; preds = %46
%54 = load i32, i32* @stderr
%55 = tail call i32 @fprintf(i32 %54, i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str, i64 0, i64 0))
br label %121
56: ; preds = %7
%57 = tail call i64 @isspace(i8 signext %8)
%58 = icmp eq i64 %57, 0
%59 = load i8, i8* %9
br i1 %58, label %60, label %100
60: ; preds = %56
switch i8 %59, label %65 [
i8 123, label %61
i8 125, label %63
]
61: ; preds = %60
%62 = tail call i32 @fputc(i8 signext 1, i32* %4)
br label %100
63: ; preds = %60
%64 = tail call i32 @fputc(i8 signext 2, i32* %4)
br label %100
65: ; preds = %60
%66 = tail call i32 @fputc(i8 signext %59, i32* %4)
br label %100
67: ; preds = %7
%68 = load i8, i8* %3
%69 = icmp eq i8 %8, %68
br i1 %69, label %100, label %70
70: ; preds = %67
%71 = tail call i32 @fputc(i8 signext %12, i32* %4)
%72 = load i8, i8* %9
%73 = tail call i32 @fputc(i8 signext %72, i32* %4)
br label %100
74: ; preds = %7
%75 = icmp eq i8 %8, 125
%76 = sext i32 %11 to i64
%77 = getelementptr inbounds [1025 x i8], [1025 x i8]* %2, i64 0, i64 %76
%78 = load i8, i8* %77
%79 = icmp eq i8 %78, 0
%80 = select i1 %75, i1 %79, i1 false
br i1 %80, label %100, label %81
81: ; preds = %74
%82 = icmp eq i8 %8, %78
br i1 %82, label %83, label %85
83: ; preds = %81
%84 = add nsw i32 %11, 1
br label %100
85: ; preds = %81
%86 = tail call i32 @fputc(i8 signext %12, i32* %4)
%87 = icmp sgt i32 %11, 0
br i1 %87, label %88, label %97
88: ; preds = %85
%89 = zext i32 %11 to i64
br label %90
90: ; preds = %88, %90
%91 = phi i64 [ 0, %88 ], [ %95, %90 ]
%92 = getelementptr inbounds [1025 x i8], [1025 x i8]* %2, i64 0, i64 %91
%93 = load i8, i8* %92
%94 = tail call i32 @fputc(i8 signext %93, i32* %4)
%95 = add nuw nsw i64 %91, 1
%96 = icmp eq i64 %95, %89
br i1 %96, label %97, label %90
97: ; preds = %90, %85
%98 = load i8, i8* %9
%99 = tail call i32 @fputc(i8 signext %98, i32* %4)
br label %100
100: ; preds = %74, %56, %7, %67, %13, %23, %17, %21, %19, %48, %43, %70, %97, %83, %63, %65, %61, %30, %39, %37
%101 = phi i8 [ %12, %17 ], [ %12, %19 ], [ %12, %21 ], [ %12, %23 ], [ %12, %30 ], [ %12, %37 ], [ %12, %39 ], [ %12, %43 ], [ %12, %48 ], [ %12, %61 ], [ %12, %63 ], [ %12, %65 ], [ %12, %70 ], [ %12, %83 ], [ %12, %97 ], [ %12, %13 ], [ %12, %67 ], [ %12, %7 ], [ %59, %56 ], [ %12, %74 ]
%102 = phi i32 [ %11, %17 ], [ %11, %19 ], [ %11, %21 ], [ %11, %23 ], [ %11, %30 ], [ %11, %37 ], [ 1, %39 ], [ %11, %43 ], [ %50, %48 ], [ %11, %61 ], [ %11, %63 ], [ %11, %65 ], [ %11, %70 ], [ %84, %83 ], [ %11, %97 ], [ %11, %13 ], [ 1, %67 ], [ %11, %7 ], [ %11, %56 ], [ %11, %74 ]
%103 = phi i8 [ 0, %17 ], [ 0, %19 ], [ 0, %21 ], [ 0, %23 ], [ 0, %30 ], [ 1, %37 ], [ 2, %39 ], [ 5, %43 ], [ 2, %48 ], [ 5, %61 ], [ 5, %63 ], [ 5, %65 ], [ 5, %70 ], [ 4, %83 ], [ 5, %97 ], [ 1, %13 ], [ 4, %67 ], [ %10, %7 ], [ 3, %56 ], [ 0, %74 ]
%104 = phi i8* [ %15, %17 ], [ %15, %19 ], [ %15, %21 ], [ %9, %23 ], [ %9, %30 ], [ %9, %37 ], [ %9, %39 ], [ %9, %43 ], [ %9, %48 ], [ %9, %61 ], [ %9, %63 ], [ %9, %65 ], [ %9, %70 ], [ %9, %83 ], [ %9, %97 ], [ %9, %13 ], [ %9, %67 ], [ %9, %7 ], [ %9, %56 ], [ %9, %74 ]
%105 = getelementptr inbounds i8, i8* %104, i64 1
%106 = load i8, i8* %105
%107 = icmp eq i8 %106, 0
br i1 %107, label %108, label %7
108: ; preds = %100
%109 = tail call i32 @fputc(i8 signext 0, i32* %4)
%110 = icmp eq i8 %103, 0
br i1 %110, label %113, label %118
111: ; preds = %23, %1
%112 = tail call i32 @fputc(i8 signext 0, i32* %4)
br label %113
113: ; preds = %111, %108
%114 = tail call i32 @ftell(i32* %4)
%115 = tail call i8* @malloc(i32 %114)
%116 = tail call i32 @rewind(i32* %4)
%117 = tail call i32 @fread(i8* %115, i32 1, i32 %114, i32* %4)
br label %121
118: ; preds = %108
%119 = load i32, i32* @stderr
%120 = tail call i32 @fprintf(i32 %119, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.1, i64 0, i64 0))
br label %121
121: ; preds = %118, %113, %53
%122 = phi i8* [ %115, %113 ], [ null, %118 ], [ null, %53 ]
%123 = tail call i32 @fclose(i32* %4)
ret i8* %122
}