// File: /workspace/github_c_makefile_star2_O2/taeguk[P]Compiler-Proj-Cminus/src/util.c
// Function: printToken
void
printToken(TokenType token, const char* tokenString)
{
  switch (token)
    {
    case ENDFILE: fprintf(listing,"EOF\n"); break;
    case ERROR:   fprintf(listing,
                          "ERROR\t\t\t%s\n",
                          tokenString); break;

    case ID:      fprintf(listing,
                          "ID\t\t\t%s\n",
                          tokenString); break;
    case NUM:     fprintf(listing,
                          "NUM\t\t\t%s\n",
                          tokenString); break;

    case ELSE:    fprintf(listing,
                          "ELSE\t\t\t%s\n",
                          tokenString); break;
    case IF:      fprintf(listing,
                          "IF\t\t\t%s\n",
                          tokenString); break;
    case INT:     fprintf(listing,
                          "INT\t\t\t%s\n",
                          tokenString); break;
    case RETURN:  fprintf(listing,
                          "RETURN\t\t\t%s\n",
                          tokenString); break;
    case VOID:    fprintf(listing,
                          "VOID\t\t\t%s\n",
                          tokenString); break;
    case WHILE:   fprintf(listing,
                          "WHILE\t\t\t%s\n",
                          tokenString); break;

    case PLUS:    fprintf(listing,
                          "PLUS\t\t\t%s\n",
                          tokenString); break;
    case MINUS:   fprintf(listing,
                          "MINUS\t\t\t%s\n",
                          tokenString); break;
    case TIMES:   fprintf(listing,
                          "TIMES\t\t\t%s\n",
                          tokenString); break;
    case OVER:    fprintf(listing,
                          "OVER\t\t\t%s\n",
                          tokenString); break;

    case LT:      fprintf(listing,
                          "<\t\t\t%s\n",
                          tokenString); break;
    case LE:      fprintf(listing,
                          "<=\t\t\t%s\n",
                          tokenString); break;
    case GT:      fprintf(listing,
                          ">\t\t\t%s\n",
                          tokenString); break;
    case GE:      fprintf(listing,
                          ">=\t\t\t%s\n",
                          tokenString); break;
    case EQ:      fprintf(listing,
                          "==\t\t\t%s\n",
                          tokenString); break;
    case NE:      fprintf(listing,
                          "!=\t\t\t%s\n",
                          tokenString); break;

    case ASSIGN:  fprintf(listing,
                          "=\t\t\t%s\n",
                          tokenString); break;
    case SEMI:    fprintf(listing,
                          ";\t\t\t%s\n",
                          tokenString); break;
    case COMMA:   fprintf(listing,
                          ",\t\t\t%s\n",
                          tokenString); break;

    case LPAREN:   fprintf(listing,
                          "(\t\t\t%s\n",
                          tokenString); break;
    case RPAREN:   fprintf(listing,
                          ")\t\t\t%s\n",
                          tokenString); break;
    case LBRACK:   fprintf(listing,
                          "[\t\t\t%s\n",
                          tokenString); break;
    case RBRACK:   fprintf(listing,
                          "]\t\t\t%s\n",
                          tokenString); break;
    case LBRACE:   fprintf(listing,
                          "{\t\t\t%s\n",
                          tokenString); break;
    case RBRACE:   fprintf(listing,
                          "}\t\t\t%s\n",
                          tokenString); break;

    default:       /* should never happen */
           DONT_OCCUR_PRINT; 
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
addl $0xfffffefd, %edi       # imm = 0xFFFFFEFD
cmpl $0x1c, %edi
ja 0x4e65
movq %rsi, %rdx
leaq 0x2e7f(%rip), %rax      # 0x7a70
movslq (%rax,%rdi,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq 0x65ff(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2fa9(%rip), %rsi      # 0x7bb4
jmp 0x4e78
leaq 0x65e9(%rip), %rax      # 0xb200
movq (%rax), %rcx
leaq 0x2f4b(%rip), %rdi      # 0x7b6c
movabsq $0x4, %rsi
movabsq $0x1, %rdx
popq %rbp
jmp 0x11c0
leaq 0x65be(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2fcd(%rip), %rsi      # 0x7c19
jmp 0x4e78
leaq 0x65a8(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2fa6(%rip), %rsi      # 0x7c08
jmp 0x4e78
leaq 0x6592(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2f74(%rip), %rsi      # 0x7bec
jmp 0x4e78
leaq 0x657c(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2f0d(%rip), %rsi      # 0x7b9b
jmp 0x4e78
leaq 0x6566(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2f53(%rip), %rsi      # 0x7bf7
jmp 0x4e78
leaq 0x6550(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2f1a(%rip), %rsi      # 0x7bd4
jmp 0x4e78
leaq 0x653a(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2f8b(%rip), %rsi      # 0x7c5b
jmp 0x4e78
leaq 0x6524(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2f6d(%rip), %rsi      # 0x7c53
jmp 0x4e78
leaq 0x650e(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2e8b(%rip), %rsi      # 0x7b87
jmp 0x4e78
leaq 0x64f8(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2efe(%rip), %rsi      # 0x7c10
jmp 0x4e78
leaq 0x64e2(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2e6a(%rip), %rsi      # 0x7b92
jmp 0x4e78
leaq 0x64cc(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2e7f(%rip), %rsi      # 0x7bbd
jmp 0x4e78
leaq 0x64b6(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2e29(%rip), %rsi      # 0x7b7d
jmp 0x4e78
leaq 0x64a0(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2eb8(%rip), %rsi      # 0x7c22
jmp 0x4e78
leaq 0x648a(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2eb3(%rip), %rsi      # 0x7c33
jmp 0x4e78
leaq 0x6474(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2e0f(%rip), %rsi      # 0x7ba5
jmp 0x4e78
leaq 0x645e(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2e8f(%rip), %rsi      # 0x7c3b
jmp 0x4e78
leaq 0x6448(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2e3d(%rip), %rsi      # 0x7bff
jmp 0x4e78
leaq 0x6432(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2dda(%rip), %rsi      # 0x7bb2
jmp 0x4e78
leaq 0x641c(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2e35(%rip), %rsi      # 0x7c23
jmp 0x4e78
leaq 0x6406(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2ddc(%rip), %rsi      # 0x7be0
jmp 0x4e78
leaq 0x63f3(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2db2(%rip), %rsi      # 0x7bc9
jmp 0x4e78
leaq 0x63e0(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2e19(%rip), %rsi      # 0x7c43
jmp 0x4e78
leaq 0x63cd(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2dee(%rip), %rsi      # 0x7c2b
jmp 0x4e78
leaq 0x63ba(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2dfb(%rip), %rsi      # 0x7c4b
jmp 0x4e78
leaq 0x63a7(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2d0e(%rip), %rsi      # 0x7b71
jmp 0x4e78
popq %rbp
retq
leaq 0x6392(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2deb(%rip), %rsi      # 0x7c63
xorl %eax, %eax
popq %rbp
jmp 0x1120