// File: AshOlogn[P]ash-language-interpreter/src/token.cpp
// Function: toStringTokenType(TokenType)
const char* toStringTokenType(TokenType tokenType) {
  
  switch(tokenType) {
    case LEFT_PAREN: return "LEFT_PAREN";
    case RIGHT_PAREN: return "RIGHT_PAREN";
    case LEFT_BRACKET: return "LEFT_BRACKET";
    case RIGHT_BRACKET: return "RIGHT_BRACKET";
    case LEFT_BRACE: return "LEFT_BRACE";
    case RIGHT_BRACE: return "RIGHT_BRACE";
    case PERIOD: return "PERIOD";
    case ADD: return "ADD";
    case SUBTRACT: return "SUBTRACT";
    case NOT: return "NOT";
    case BIT_NOT: return "BIT_NOT";
    case EXPONENT: return "EXPONENT";
    case MULTIPLY: return "MULTIPLY";
    case DIVIDE: return "DIVIDE";
    case MOD: return "MOD";
    case BIT_LEFT: return "BIT_LEFT";
    case BIT_RIGHT: return "BIT_RIGHT";
    case GREATER: return "GREATER";
    case LESS: return "LESS";
    case GREATER_EQ: return "GREATER_EQ";
    case LESS_EQ: return "LESS_EQ";
    case EQ_EQ: return "EQ_EQ";
    case NOT_EQ: return "NOT_EQ";
    case BIT_AND: return "BIT_AND";
    case BIT_XOR: return "BIT_XOR";
    case BIT_OR: return "BIT_OR";
    case AND: return "AND";
    case XOR: return "XOR";
    case OR: return "OR";
    case QUESTION: return "QUESTION";
    case COLON: return "COLON";
    case EQ: return "EQ";
    case ADD_EQ: return "ADD_EQ";
    case SUBTRACT_EQ: return "SUBTRACT_EQ";
    case EXPONENT_EQ: return "EXPONENT_EQ";
    case MULTIPLY_EQ: return "MULTIPLY_EQ";
    case DIVIDE_EQ: return "DIVIDE_EQ";
    case MOD_EQ: return "MOD_EQ";
    case AND_EQ: return "AND_EQ";
    case XOR_EQ: return "XOR_EQ";
    case OR_EQ: return "OR_EQ";
    case BIT_LEFT_EQ: return "BIT_LEFT_EQ";
    case BIT_RIGHT_EQ: return "BIT_RIGHT_EQ";
    case COMMA: return "COMMA";
    case SEMICOLON: return "SEMICOLON";
    case INT8: return "INT8";
    case INT16: return "INT16";
    case INT32: return "INT32";
    case INT64: return "INT64";
    case UINT8: return "UINT8";
    case UINT16: return "UINT16";
    case UINT32: return "UINT32";
    case UINT64: return "UINT64";
    case CHAR: return "CHAR";
    case DOUBLE: return "DOUBLE";
    case BOOL: return "BOOL";
    case STRING: return "STRING";
    case VARIABLE: return "VARIABLE";
    case FOR: return "FOR";
    case WHILE: return "WHILE";
    case DO: return "DO";
    case IF: return "IF";
    case ELSE: return "ELSE";
    case BREAK: return "BREAK";
    case SWITCH: return "SWITCH";
    case CASE: return "CASE";
    case CLASS: return "CLASS";
    case FUN: return "FUN";
		case RETURN: return "RETURN";
		case NEW: return "NEW";
    case PRINT: return "PRINT";
    case PRINTLN: return "PRINTLN";
    case TRUE: return "TRUE";
    case FALSE: return "FALSE";
    case END: return "END";
    default: return "INVALID_TOKEN";
  }  
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movl %edi, -0xc(%rbp)
movl -0xc(%rbp), %eax
movq %rax, -0x18(%rbp)
subq $0x4e, %rax
ja 0x7c51
movq -0x18(%rbp), %rax
leaq 0x37cad(%rip), %rcx     # 0x3f460
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x37e61(%rip), %rax     # 0x3f624
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37e5c(%rip), %rax     # 0x3f62f
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37e58(%rip), %rax     # 0x3f63b
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37e55(%rip), %rax     # 0x3f648
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37e53(%rip), %rax     # 0x3f656
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37e4e(%rip), %rax     # 0x3f661
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37e4a(%rip), %rax     # 0x3f66d
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37e41(%rip), %rax     # 0x3f674
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37e35(%rip), %rax     # 0x3f678
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x38864(%rip), %rax     # 0x400b7
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37e1e(%rip), %rax     # 0x3f681
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37e16(%rip), %rax     # 0x3f689
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37e0f(%rip), %rax     # 0x3f692
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37e08(%rip), %rax     # 0x3f69b
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37dff(%rip), %rax     # 0x3f6a2
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37df3(%rip), %rax     # 0x3f6a6
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37dec(%rip), %rax     # 0x3f6af
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37de6(%rip), %rax     # 0x3f6b9
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37dde(%rip), %rax     # 0x3f6c1
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37dd3(%rip), %rax     # 0x3f6c6
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37dce(%rip), %rax     # 0x3f6d1
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37dc6(%rip), %rax     # 0x3f6d9
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37dbc(%rip), %rax     # 0x3f6df
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37db3(%rip), %rax     # 0x3f6e6
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37dab(%rip), %rax     # 0x3f6ee
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37da3(%rip), %rax     # 0x3f6f6
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x387f3(%rip), %rax     # 0x40156
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x387ef(%rip), %rax     # 0x40162
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x387eb(%rip), %rax     # 0x4016e
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37d6a(%rip), %rax     # 0x3f6fd
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37dd0(%rip), %rax     # 0x3f773
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37d57(%rip), %rax     # 0x3f70a
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37d43(%rip), %rax     # 0x3f706
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37d3a(%rip), %rax     # 0x3f70d
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37d36(%rip), %rax     # 0x3f719
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37d32(%rip), %rax     # 0x3f725
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37d2e(%rip), %rax     # 0x3f731
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37d28(%rip), %rax     # 0x3f73b
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37d1f(%rip), %rax     # 0x3f742
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37d16(%rip), %rax     # 0x3f749
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37d07(%rip), %rax     # 0x3f74a
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37cfd(%rip), %rax     # 0x3f750
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37cf9(%rip), %rax     # 0x3f75c
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37cf6(%rip), %rax     # 0x3f769
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37cec(%rip), %rax     # 0x3f76f
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37ce7(%rip), %rax     # 0x3f77a
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37cdd(%rip), %rax     # 0x3f780
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37cd4(%rip), %rax     # 0x3f787
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37ccb(%rip), %rax     # 0x3f78e
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37ca6(%rip), %rax     # 0x3f779
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37c9c(%rip), %rax     # 0x3f77f
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37c93(%rip), %rax     # 0x3f786
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37c8a(%rip), %rax     # 0x3f78d
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37c81(%rip), %rax     # 0x3f794
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37c76(%rip), %rax     # 0x3f799
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37c6d(%rip), %rax     # 0x3f7a0
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37c62(%rip), %rax     # 0x3f7a5
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37c59(%rip), %rax     # 0x3f7ac
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37c52(%rip), %rax     # 0x3f7b5
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37c46(%rip), %rax     # 0x3f7b9
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37c3c(%rip), %rax     # 0x3f7bf
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37c2f(%rip), %rax     # 0x3f7c2
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37c22(%rip), %rax     # 0x3f7c5
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37c17(%rip), %rax     # 0x3f7ca
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37c0d(%rip), %rax     # 0x3f7d0
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37c04(%rip), %rax     # 0x3f7d7
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37bf9(%rip), %rax     # 0x3f7dc
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37bf2(%rip), %rax     # 0x3f7e2
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37be9(%rip), %rax     # 0x3f7e6
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37be3(%rip), %rax     # 0x3f7ed
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37bda(%rip), %rax     # 0x3f7f1
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37bd3(%rip), %rax     # 0x3f7f7
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37bce(%rip), %rax     # 0x3f7ff
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37bc6(%rip), %rax     # 0x3f804
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37bbf(%rip), %rax     # 0x3f80a
movq %rax, -0x8(%rbp)
jmp 0x7c5c
leaq 0x37bb6(%rip), %rax     # 0x3f80e
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
popq %rbp
retq
nopw %cs:(%rax,%rax)