// File: protonpopsicle[P]lang/src/compiler/Error.cpp
// Function: Error::tagToStr[abi:cxx11](short)
std::string Error::tagToStr(short tag) {
    switch (tag) {
        case 32: 
            return "space";
        case 255: 
            return "program end";
        case NUM: 
            return "numeric literal";
        case QUOTE: 
            return "string literal";
        case ID: 
            return "identifier";
        case BASIC: 
            return "basic type";
        case TRUE: 
            return "true keyword";
        case FALSE: 
            return "false keyword";
        case PRINT: 
            return "print statement";
        case IF: 
            return "if statement";
        case WHILE: 
            return "while statement";
        case LE: 
            return "relational expression";
        case GE: 
            return "relational expression";
        case EQ: 
            return "relational expression";
        case NE: 
            return "relational expression";
        case AND: 
            return "relational expression";
        case OR: 
            return "relational expression";
        default: 
            // returns a string formed by 1 repetition of (char)tag
            return std::string(1, (unsigned char)tag);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xf0, %rsp
movq %rdi, -0x50(%rbp)
movw %dx, %ax
movq %rdi, %rcx
movq %rcx, -0x48(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movw %ax, -0x12(%rbp)
movswl -0x12(%rbp), %eax
movl %eax, -0x3c(%rbp)
subl $0x20, %eax
je 0x673a
jmp 0x6637
movl -0x3c(%rbp), %eax
subl $0xff, %eax
je 0x6785
jmp 0x6647
movl -0x3c(%rbp), %eax
subl $0x100, %eax            # imm = 0x100
je 0x67d0
jmp 0x6657
movl -0x3c(%rbp), %eax
subl $0x101, %eax            # imm = 0x101
je 0x681b
jmp 0x6667
movl -0x3c(%rbp), %eax
subl $0x102, %eax            # imm = 0x102
je 0x6866
jmp 0x6677
movl -0x3c(%rbp), %eax
subl $0x103, %eax            # imm = 0x103
je 0x68b1
jmp 0x6687
movl -0x3c(%rbp), %eax
subl $0x104, %eax            # imm = 0x104
je 0x68fc
jmp 0x6697
movl -0x3c(%rbp), %eax
subl $0x105, %eax            # imm = 0x105
je 0x694d
jmp 0x66a7
movl -0x3c(%rbp), %eax
subl $0x106, %eax            # imm = 0x106
je 0x699e
jmp 0x66b7
movl -0x3c(%rbp), %eax
subl $0x107, %eax            # imm = 0x107
je 0x69ef
jmp 0x66c7
movl -0x3c(%rbp), %eax
subl $0x108, %eax            # imm = 0x108
je 0x6a40
jmp 0x66d7
movl -0x3c(%rbp), %eax
subl $0x12c, %eax            # imm = 0x12C
je 0x6a91
jmp 0x66e7
movl -0x3c(%rbp), %eax
subl $0x12d, %eax            # imm = 0x12D
je 0x6ae2
jmp 0x66f7
movl -0x3c(%rbp), %eax
subl $0x12e, %eax            # imm = 0x12E
je 0x6b33
jmp 0x6707
movl -0x3c(%rbp), %eax
subl $0x12f, %eax            # imm = 0x12F
je 0x6b84
jmp 0x6717
movl -0x3c(%rbp), %eax
subl $0x130, %eax            # imm = 0x130
je 0x6bd5
jmp 0x6727
movl -0x3c(%rbp), %eax
subl $0x131, %eax            # imm = 0x131
je 0x6c26
jmp 0x6c71
leaq -0x13(%rbp), %rdi
movq %rdi, -0x58(%rbp)
callq 0x23a0
movq -0x50(%rbp), %rdi
movq -0x58(%rbp), %rdx
leaq 0x79e4(%rip), %rsi      # 0xe13a
callq 0x3880
jmp 0x675d
leaq -0x13(%rbp), %rdi
callq 0x2270
jmp 0x6cca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x13(%rbp), %rdi
callq 0x2270
jmp 0x6cd7
leaq -0x25(%rbp), %rdi
movq %rdi, -0x60(%rbp)
callq 0x23a0
movq -0x50(%rbp), %rdi
movq -0x60(%rbp), %rdx
leaq 0x799f(%rip), %rsi      # 0xe140
callq 0x3880
jmp 0x67a8
leaq -0x25(%rbp), %rdi
callq 0x2270
jmp 0x6cca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x25(%rbp), %rdi
callq 0x2270
jmp 0x6cd7
leaq -0x26(%rbp), %rdi
movq %rdi, -0x68(%rbp)
callq 0x23a0
movq -0x50(%rbp), %rdi
movq -0x68(%rbp), %rdx
leaq 0x7960(%rip), %rsi      # 0xe14c
callq 0x3880
jmp 0x67f3
leaq -0x26(%rbp), %rdi
callq 0x2270
jmp 0x6cca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x26(%rbp), %rdi
callq 0x2270
jmp 0x6cd7
leaq -0x27(%rbp), %rdi
movq %rdi, -0x70(%rbp)
callq 0x23a0
movq -0x50(%rbp), %rdi
movq -0x70(%rbp), %rdx
leaq 0x7925(%rip), %rsi      # 0xe15c
callq 0x3880
jmp 0x683e
leaq -0x27(%rbp), %rdi
callq 0x2270
jmp 0x6cca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x27(%rbp), %rdi
callq 0x2270
jmp 0x6cd7
leaq -0x28(%rbp), %rdi
movq %rdi, -0x78(%rbp)
callq 0x23a0
movq -0x50(%rbp), %rdi
movq -0x78(%rbp), %rdx
leaq 0x78e9(%rip), %rsi      # 0xe16b
callq 0x3880
jmp 0x6889
leaq -0x28(%rbp), %rdi
callq 0x2270
jmp 0x6cca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x2270
jmp 0x6cd7
leaq -0x29(%rbp), %rdi
movq %rdi, -0x80(%rbp)
callq 0x23a0
movq -0x50(%rbp), %rdi
movq -0x80(%rbp), %rdx
leaq 0x78a9(%rip), %rsi      # 0xe176
callq 0x3880
jmp 0x68d4
leaq -0x29(%rbp), %rdi
callq 0x2270
jmp 0x6cca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x29(%rbp), %rdi
callq 0x2270
jmp 0x6cd7
leaq -0x2a(%rbp), %rdi
movq %rdi, -0x88(%rbp)
callq 0x23a0
movq -0x50(%rbp), %rdi
movq -0x88(%rbp), %rdx
leaq 0x7863(%rip), %rsi      # 0xe181
callq 0x3880
jmp 0x6925
leaq -0x2a(%rbp), %rdi
callq 0x2270
jmp 0x6cca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x2a(%rbp), %rdi
callq 0x2270
jmp 0x6cd7
leaq -0x2b(%rbp), %rdi
movq %rdi, -0x90(%rbp)
callq 0x23a0
movq -0x50(%rbp), %rdi
movq -0x90(%rbp), %rdx
leaq 0x781f(%rip), %rsi      # 0xe18e
callq 0x3880
jmp 0x6976
leaq -0x2b(%rbp), %rdi
callq 0x2270
jmp 0x6cca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x2b(%rbp), %rdi
callq 0x2270
jmp 0x6cd7
leaq -0x2c(%rbp), %rdi
movq %rdi, -0x98(%rbp)
callq 0x23a0
movq -0x50(%rbp), %rdi
movq -0x98(%rbp), %rdx
leaq 0x76ff(%rip), %rsi      # 0xe0bf
callq 0x3880
jmp 0x69c7
leaq -0x2c(%rbp), %rdi
callq 0x2270
jmp 0x6cca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x2c(%rbp), %rdi
callq 0x2270
jmp 0x6cd7
leaq -0x2d(%rbp), %rdi
movq %rdi, -0xa0(%rbp)
callq 0x23a0
movq -0x50(%rbp), %rdi
movq -0xa0(%rbp), %rdx
leaq 0x778b(%rip), %rsi      # 0xe19c
callq 0x3880
jmp 0x6a18
leaq -0x2d(%rbp), %rdi
callq 0x2270
jmp 0x6cca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x2d(%rbp), %rdi
callq 0x2270
jmp 0x6cd7
leaq -0x2e(%rbp), %rdi
movq %rdi, -0xa8(%rbp)
callq 0x23a0
movq -0x50(%rbp), %rdi
movq -0xa8(%rbp), %rdx
leaq 0x7747(%rip), %rsi      # 0xe1a9
callq 0x3880
jmp 0x6a69
leaq -0x2e(%rbp), %rdi
callq 0x2270
jmp 0x6cca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x2e(%rbp), %rdi
callq 0x2270
jmp 0x6cd7
leaq -0x2f(%rbp), %rdi
movq %rdi, -0xb0(%rbp)
callq 0x23a0
movq -0x50(%rbp), %rdi
movq -0xb0(%rbp), %rdx
leaq 0x7706(%rip), %rsi      # 0xe1b9
callq 0x3880
jmp 0x6aba
leaq -0x2f(%rbp), %rdi
callq 0x2270
jmp 0x6cca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x2f(%rbp), %rdi
callq 0x2270
jmp 0x6cd7
leaq -0x30(%rbp), %rdi
movq %rdi, -0xb8(%rbp)
callq 0x23a0
movq -0x50(%rbp), %rdi
movq -0xb8(%rbp), %rdx
leaq 0x76b5(%rip), %rsi      # 0xe1b9
callq 0x3880
jmp 0x6b0b
leaq -0x30(%rbp), %rdi
callq 0x2270
jmp 0x6cca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x2270
jmp 0x6cd7
leaq -0x31(%rbp), %rdi
movq %rdi, -0xc0(%rbp)
callq 0x23a0
movq -0x50(%rbp), %rdi
movq -0xc0(%rbp), %rdx
leaq 0x7664(%rip), %rsi      # 0xe1b9
callq 0x3880
jmp 0x6b5c
leaq -0x31(%rbp), %rdi
callq 0x2270
jmp 0x6cca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x31(%rbp), %rdi
callq 0x2270
jmp 0x6cd7
leaq -0x32(%rbp), %rdi
movq %rdi, -0xc8(%rbp)
callq 0x23a0
movq -0x50(%rbp), %rdi
movq -0xc8(%rbp), %rdx
leaq 0x7613(%rip), %rsi      # 0xe1b9
callq 0x3880
jmp 0x6bad
leaq -0x32(%rbp), %rdi
callq 0x2270
jmp 0x6cca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x32(%rbp), %rdi
callq 0x2270
jmp 0x6cd7
leaq -0x33(%rbp), %rdi
movq %rdi, -0xd0(%rbp)
callq 0x23a0
movq -0x50(%rbp), %rdi
movq -0xd0(%rbp), %rdx
leaq 0x75c2(%rip), %rsi      # 0xe1b9
callq 0x3880
jmp 0x6bfe
leaq -0x33(%rbp), %rdi
callq 0x2270
jmp 0x6cca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x33(%rbp), %rdi
callq 0x2270
jmp 0x6cd7
leaq -0x34(%rbp), %rdi
movq %rdi, -0xd8(%rbp)
callq 0x23a0
movq -0x50(%rbp), %rdi
movq -0xd8(%rbp), %rdx
leaq 0x7571(%rip), %rsi      # 0xe1b9
callq 0x3880
jmp 0x6c4f
leaq -0x34(%rbp), %rdi
callq 0x2270
jmp 0x6cca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x34(%rbp), %rdi
callq 0x2270
jmp 0x6cd7
movsbl -0x12(%rbp), %eax
movl %eax, -0xe4(%rbp)
leaq -0x35(%rbp), %rdi
movq %rdi, -0xe0(%rbp)
callq 0x23a0
movq -0x50(%rbp), %rdi
movl -0xe4(%rbp), %edx
movq -0xe0(%rbp), %rcx
movl $0x1, %esi
callq 0x6e50
jmp 0x6ca8
leaq -0x35(%rbp), %rdi
callq 0x2270
jmp 0x6cca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x35(%rbp), %rdi
callq 0x2270
jmp 0x6cd7
movq -0x48(%rbp), %rax
addq $0xf0, %rsp
popq %rbp
retq
movq -0x20(%rbp), %rdi
callq 0x2390