// File: /workspace/github_c_makefile_star2_O1/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 0x54bf
movq %rsi, %rdx
leaq 0x281b(%rip), %rax      # 0x7a70
movslq (%rax,%rdi,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq 0x5f9b(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2945(%rip), %rsi      # 0x7bb4
jmp 0x54d2
leaq 0x5f85(%rip), %rax      # 0xb200
movq (%rax), %rcx
leaq 0x28e7(%rip), %rdi      # 0x7b6c
movl $0x4, %esi
movl $0x1, %edx
popq %rbp
jmp 0x11c0
leaq 0x5f64(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2973(%rip), %rsi      # 0x7c19
jmp 0x54d2
leaq 0x5f4e(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x294c(%rip), %rsi      # 0x7c08
jmp 0x54d2
leaq 0x5f38(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x291a(%rip), %rsi      # 0x7bec
jmp 0x54d2
leaq 0x5f22(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x28b3(%rip), %rsi      # 0x7b9b
jmp 0x54d2
leaq 0x5f0c(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x28f9(%rip), %rsi      # 0x7bf7
jmp 0x54d2
leaq 0x5ef6(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x28c0(%rip), %rsi      # 0x7bd4
jmp 0x54d2
leaq 0x5ee0(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2931(%rip), %rsi      # 0x7c5b
jmp 0x54d2
leaq 0x5eca(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2913(%rip), %rsi      # 0x7c53
jmp 0x54d2
leaq 0x5eb4(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2831(%rip), %rsi      # 0x7b87
jmp 0x54d2
leaq 0x5e9e(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x28a4(%rip), %rsi      # 0x7c10
jmp 0x54d2
leaq 0x5e88(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2810(%rip), %rsi      # 0x7b92
jmp 0x54d2
leaq 0x5e72(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2825(%rip), %rsi      # 0x7bbd
jmp 0x54d2
leaq 0x5e5c(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x27cf(%rip), %rsi      # 0x7b7d
jmp 0x54d2
leaq 0x5e46(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x285e(%rip), %rsi      # 0x7c22
jmp 0x54d2
leaq 0x5e30(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2859(%rip), %rsi      # 0x7c33
jmp 0x54d2
leaq 0x5e1a(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x27b5(%rip), %rsi      # 0x7ba5
jmp 0x54d2
leaq 0x5e04(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2835(%rip), %rsi      # 0x7c3b
jmp 0x54d2
leaq 0x5dee(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x27e3(%rip), %rsi      # 0x7bff
jmp 0x54d2
leaq 0x5dd8(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2780(%rip), %rsi      # 0x7bb2
jmp 0x54d2
leaq 0x5dc2(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x27db(%rip), %rsi      # 0x7c23
jmp 0x54d2
leaq 0x5dac(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2782(%rip), %rsi      # 0x7be0
jmp 0x54d2
leaq 0x5d99(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2758(%rip), %rsi      # 0x7bc9
jmp 0x54d2
leaq 0x5d86(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x27bf(%rip), %rsi      # 0x7c43
jmp 0x54d2
leaq 0x5d73(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2794(%rip), %rsi      # 0x7c2b
jmp 0x54d2
leaq 0x5d60(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x27a1(%rip), %rsi      # 0x7c4b
jmp 0x54d2
leaq 0x5d4d(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x26b4(%rip), %rsi      # 0x7b71
jmp 0x54d2
popq %rbp
retq
leaq 0x5d38(%rip), %rax      # 0xb200
movq (%rax), %rdi
leaq 0x2791(%rip), %rsi      # 0x7c63
xorl %eax, %eax
popq %rbp
jmp 0x1120