// File: AshOlogn[P]ash-language-interpreter/src/parsetoken.cpp
// Function: toStringParseOperatorType(ParseOperatorType)
const char* toStringParseOperatorType(ParseOperatorType p) {

  switch(p) {

    case PREFIX_INC_OP: return "++";
    case PREFIX_DEC_OP: return "--";
    case POSTFIX_INC_OP: return "++";
    case POSTFIX_DEC_OP: return "--";
    case POSITIVE_OP: return "+";
    case NEGATIVE_OP: return "-";
    case ADD_OP: return "+";
    case SUBTRACT_OP: return "-";
    case NOT_OP: return "!";
    case BIT_NOT_OP: return "~";

    case EXPONENT_OP: return "**"; 
    case MULTIPLY_OP: return "*";
    case DIVIDE_OP: return "/"; 
    case MOD_OP: return "%";
 
    case BIT_LEFT_OP: return "<<";
    case BIT_RIGHT_OP: return ">>";
    
    case GREATER_OP: return ">"; 
    case LESS_OP: return "<"; 
    case GREATER_EQ_OP: return ">="; 
    case LESS_EQ_OP: return "<=";
    case EQ_EQ_OP: return "=="; 
    case NOT_EQ_OP: return "!=";

    case BIT_AND_OP: return "&";
    case BIT_XOR_OP: return "^";
    case BIT_OR_OP: return "|";  

    case AND_OP: return "&&";
    case XOR_OP: return "^^";
    case OR_OP: return "||";

    case EQ_OP: return "="; 
    case ADD_EQ_OP: return "+=";
    case SUBTRACT_EQ_OP: return "-=";
    case EXPONENT_EQ_OP: return "**=";
    case MULTIPLY_EQ_OP: return "*=";
    case DIVIDE_EQ_OP: return "/=";
    case MOD_EQ_OP: return "%="; 
    case AND_EQ_OP: return "&=";
    case XOR_EQ_OP: return "^=";
    case OR_EQ_OP: return "|=";
    case BIT_LEFT_EQ_OP: return "<<=";
    case BIT_RIGHT_EQ_OP: return ">>=";
    
    default: return "INVALID";
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movl %edi, -0xc(%rbp)
movl -0xc(%rbp), %eax
movq %rax, -0x18(%rbp)
subq $0x2a, %rax
ja 0xbc11
movq -0x18(%rbp), %rax
leaq 0x344b9(%rip), %rcx     # 0x3fe5c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x34675(%rip), %rax     # 0x40028
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x34668(%rip), %rax     # 0x4002b
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x34655(%rip), %rax     # 0x40028
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x34648(%rip), %rax     # 0x4002b
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x34636(%rip), %rax     # 0x40029
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x34629(%rip), %rax     # 0x4002c
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x34616(%rip), %rax     # 0x40029
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x34609(%rip), %rax     # 0x4002c
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x341d2(%rip), %rax     # 0x3fc05
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x341c4(%rip), %rax     # 0x3fc07
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x341a2(%rip), %rax     # 0x3fbf5
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x34193(%rip), %rax     # 0x3fbf6
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x34188(%rip), %rax     # 0x3fbfb
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x3417d(%rip), %rax     # 0x3fc00
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x3417a(%rip), %rax     # 0x3fc0d
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x34171(%rip), %rax     # 0x3fc14
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x34139(%rip), %rax     # 0x3fbec
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x3414b(%rip), %rax     # 0x3fc0e
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x3413e(%rip), %rax     # 0x3fc11
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x34127(%rip), %rax     # 0x3fc0a
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x34124(%rip), %rax     # 0x3fc17
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x340ff(%rip), %rax     # 0x3fc02
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x34108(%rip), %rax     # 0x3fc1b
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x340fe(%rip), %rax     # 0x3fc21
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x340f4(%rip), %rax     # 0x3fc27
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x340d7(%rip), %rax     # 0x3fc1a
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x340cd(%rip), %rax     # 0x3fc20
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x340c3(%rip), %rax     # 0x3fc26
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x34090(%rip), %rax     # 0x3fc03
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x34065(%rip), %rax     # 0x3fbe8
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x3405b(%rip), %rax     # 0x3fbee
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x3404e(%rip), %rax     # 0x3fbf1
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x34042(%rip), %rax     # 0x3fbf2
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x3403b(%rip), %rax     # 0x3fbf8
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x34033(%rip), %rax     # 0x3fbfd
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x34046(%rip), %rax     # 0x3fc1d
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x3403f(%rip), %rax     # 0x3fc23
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x34038(%rip), %rax     # 0x3fc29
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x3400b(%rip), %rax     # 0x3fc09
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x34005(%rip), %rax     # 0x3fc10
movq %rax, -0x8(%rbp)
jmp 0xbc1c
leaq 0x34416(%rip), %rax     # 0x4002e
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
popq %rbp
retq
nopw %cs:(%rax,%rax)