// File: /workspace/github_cpp_makefile_star2_O2/navrajsaini[P]PL_Compiler_design_project/token.cpp
// Function: spellS[abi:cxx11](Symbol)
string spellS(Symbol s)
{
   switch (s)
   {
      case NUM: return "num"; break;
      case DIV: return "/"; break;
      case MOD: return "%"; break;
      case SEMICOLON: return ";"; break;
      case PLUS: return "+"; break;
      case MINUS: return "-"; break;
      case TIMES: return "*"; break;
      case DIVIDE: return "/"; break;
      case LEFTP: return "("; break;
      case RIGHTP: return ")"; break;

	 //the error handling and reporting symbols
      case BADNUM: return "Bad Number error"; break;
      case BADNAME: return "Bad Name error"; break;
      case NEWLINE: return "New Line error"; break;
      case NONAME: return "NONAME"; break;
      case ENDOFFILE: return "End of File"; break;
      case BADCHAR: return "Bad Character error"; break;
	 //The reserved words
      case Symbol::begin: return "begin"; break;
      case Symbol::end: return "end"; break;
      case const1: return "const"; break;
      case array: return "array"; break;
      case integer: return "integer"; break;
      case Boolean: return "Boolean"; break;
      case proc: return "proc"; break;
      case skip: return "skip"; break;
      case read: return "read"; break;
      case write: return "write"; break;
      case call: return "call"; break; 
      case if1: return "if"; break; 
      case do1: return "do"; break;
      case fi: return "fi"; break;
      case od: return "od"; break;
      case false1: return "false"; break;
      case true1: return "true"; break;
	 
      case Symbol::colon: return ":"; break;
      case Symbol::period: return "."; break;
      case Symbol::comma: return ","; break;
      case Symbol::rightB: return "["; break;
      case Symbol::leftB: return "]"; break;
      case Symbol::and1: return "&"; break;
      case Symbol::or1: return "|"; break;
      case Symbol::not1: return "~"; break;
      case Symbol::greater: return ">"; break;
      case Symbol::less: return "<"; break;
      case Symbol::equal: return "="; break;
      case closedS: return "[]"; break;
      case assign: return ":="; break;
      case arrow: return "->"; break;
	 //need to have it go from symbol to string...
      default: return "id"; break;
   }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %rbx
pushq %rax
movq %rdi, %rbx
addl $0xfffffeff, %esi       # imm = 0xFFFFFEFF
cmpl $0x2e, %esi
ja 0x3abe
leaq 0xb951(%rip), %rax      # 0xf208
movslq (%rax,%rsi,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq 0xba01(%rip), %rsi      # 0xf2c8
jmp 0x3ac5
leaq 0xba9e(%rip), %rsi      # 0xf371
jmp 0x3ac5
leaq 0xba8a(%rip), %rsi      # 0xf369
jmp 0x3ac5
leaq 0xbd6e(%rip), %rsi      # 0xf659
jmp 0x3ac5
leaq 0xba7b(%rip), %rsi      # 0xf372
jmp 0x3ac5
leaq 0xba4e(%rip), %rsi      # 0xf351
jmp 0x3ac5
leaq 0xba58(%rip), %rsi      # 0xf367
jmp 0x3ac5
leaq 0xba11(%rip), %rsi      # 0xf32c
jmp 0x3ac5
leaq 0xba4d(%rip), %rsi      # 0xf374
jmp 0x3ac5
leaq 0xbb46(%rip), %rsi      # 0xf479
jmp 0x3ac5
leaq 0xc0c0(%rip), %rsi      # 0xf9ff
jmp 0x3ac5
leaq 0xb985(%rip), %rsi      # 0xf2d0
jmp 0x3ac5
leaq 0xba21(%rip), %rsi      # 0xf378
jmp 0x3ac5
leaq 0xb9a2(%rip), %rsi      # 0xf305
jmp 0x3ac5
leaq 0xb963(%rip), %rsi      # 0xf2d2
jmp 0x3ac5
leaq 0xb951(%rip), %rsi      # 0xf2cc
jmp 0x3ac5
leaq 0xb705(%rip), %rsi      # 0xf08c
jmp 0x3ac5
leaq 0xb6dc(%rip), %rsi      # 0xf06f
jmp 0x3ac5
leaq 0xb948(%rip), %rsi      # 0xf2e7
jmp 0x3ac5
leaq 0xb96d(%rip), %rsi      # 0xf318
jmp 0x3ac5
leaq 0xb93f(%rip), %rsi      # 0xf2f6
jmp 0x3ac5
leaq 0xb901(%rip), %rsi      # 0xf2c4
jmp 0x3ac5
leaq 0xb907(%rip), %rsi      # 0xf2d6
jmp 0x3ac5
leaq 0xb97f(%rip), %rsi      # 0xf35a
jmp 0x3ac5
leaq 0xb94b(%rip), %rsi      # 0xf332
jmp 0x3ac5
leaq 0xb97c(%rip), %rsi      # 0xf36f
jmp 0x3ac5
leaq 0xb93d(%rip), %rsi      # 0xf33c
jmp 0x3ac5
leaq 0xb939(%rip), %rsi      # 0xf344
jmp 0x3ac5
leaq 0xb8bd(%rip), %rsi      # 0xf2d4
jmp 0x3ac5
leaq 0xb8e9(%rip), %rsi      # 0xf30c
jmp 0x3ac5
leaq 0xb907(%rip), %rsi      # 0xf336
jmp 0x3ac5
leaq 0xb893(%rip), %rsi      # 0xf2ce
jmp 0x3ac5
leaq 0xb883(%rip), %rsi      # 0xf2ca
jmp 0x3ac5
leaq 0xb907(%rip), %rsi      # 0xf357
jmp 0x3ac5
leaq 0xb907(%rip), %rsi      # 0xf360
jmp 0x3ac5
leaq 0xb903(%rip), %rsi      # 0xf365
jmp 0x3ac5
leaq 0xb5c1(%rip), %rsi      # 0xf02c
jmp 0x3ac5
leaq 0xb8f9(%rip), %rsi      # 0xf36d
jmp 0x3ac5
leaq 0xbcca(%rip), %rsi      # 0xf747
jmp 0x3ac5
leaq 0xb8ef(%rip), %rsi      # 0xf375
jmp 0x3ac5
leaq 0xb8bd(%rip), %rsi      # 0xf34c
jmp 0x3ac5
leaq 0xb8bc(%rip), %rsi      # 0xf354
jmp 0x3ac5
leaq 0xb59e(%rip), %rsi      # 0xf03f
jmp 0x3ac5
leaq 0xb8c1(%rip), %rsi      # 0xf36b
jmp 0x3ac5
leaq 0xb56a(%rip), %rsi      # 0xf01d
jmp 0x3ac5
leaq 0xb8bb(%rip), %rsi      # 0xf377
jmp 0x3ac5
leaq 0xb8b5(%rip), %rsi      # 0xf37a
leaq -0x9(%rbp), %rdx
movq %rbx, %rdi
callq 0x20a0
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq