// File: /workspace/github_c_makefile_star2_O0/masyagin1998[P]GCI/src/parser/parser.c
// Function: token_type_to_str
void token_type_to_str(enum TOKEN_TYPE type, char*buf, size_t buflen)
{
    switch (type) {
    case TOKEN_TYPE_FUNCTION:
        strncpy(buf, "FUNCTION", buflen);
        break;
    case TOKEN_TYPE_LET:
        strncpy(buf, "LET", buflen);
        break;
    case TOKEN_TYPE_IF:
        strncpy(buf, "IF", buflen);
        break;
    case TOKEN_TYPE_ELSE:
        strncpy(buf, "ELSE", buflen);
        break;
    case TOKEN_TYPE_WHILE:
        strncpy(buf, "WHILE", buflen);
        break;
    case TOKEN_TYPE_BREAK:
        strncpy(buf, "BREAK", buflen);
        break;
    case TOKEN_TYPE_CONTINUE:
        strncpy(buf, "CONTINUE", buflen);
        break;
    case TOKEN_TYPE_APPEND:
        strncpy(buf, "APPEND", buflen);
        break;
    case TOKEN_TYPE_DELETE:
        strncpy(buf, "DELETE", buflen);
        break;
    case TOKEN_TYPE_HAS_PROPERTY:
        strncpy(buf, "HAS_PROPERTY", buflen);
        break;        
    case TOKEN_TYPE_LEN:
        strncpy(buf, "LEN", buflen);
        break;        
    case TOKEN_TYPE_RETURN:
        strncpy(buf, "RETURN", buflen);
        break;
    case TOKEN_TYPE_IDENT:
        strncpy(buf, "IDENT", buflen);
        break;
    case TOKEN_TYPE_OR:
        strncpy(buf, "OR", buflen);
        break;
    case TOKEN_TYPE_AND:
        strncpy(buf, "AND", buflen);
        break;
    case TOKEN_TYPE_EQEQ:
        strncpy(buf, "EQEQ", buflen);
        break;
    case TOKEN_TYPE_NEQ:
        strncpy(buf, "NEQ", buflen);
        break;
    case TOKEN_TYPE_LT:
        strncpy(buf, "LT", buflen);
        break;
    case TOKEN_TYPE_GT:
        strncpy(buf, "GT", buflen);
        break;
    case TOKEN_TYPE_LE:
        strncpy(buf, "LE", buflen);
        break;
    case TOKEN_TYPE_GE:
        strncpy(buf, "GE", buflen);
        break;
    case TOKEN_TYPE_EQ:
        strncpy(buf, "EQ", buflen);
        break;
    case TOKEN_TYPE_PLUS:
        strncpy(buf, "PLUS", buflen);
        break;
    case TOKEN_TYPE_MINUS:
        strncpy(buf, "MINUS", buflen);
        break;
    case TOKEN_TYPE_MUL:
        strncpy(buf, "MUL", buflen);
        break;
    case TOKEN_TYPE_DIV:
        strncpy(buf, "DIV", buflen);
        break;
    case TOKEN_TYPE_MOD:
        strncpy(buf, "MOD", buflen);
        break;
    case TOKEN_TYPE_LPAREN:
        strncpy(buf, "LPAREN", buflen);
        break;
    case TOKEN_TYPE_RPAREN:
        strncpy(buf, "RPAREN", buflen);
        break;
    case TOKEN_TYPE_NUMBER:
        strncpy(buf, "NUMBER", buflen);
        break;
    case TOKEN_TYPE_LBRACKET:
        strncpy(buf, "LBRACKET", buflen);
        break;
    case TOKEN_TYPE_RBRACKET:
        strncpy(buf, "RBRACKET", buflen);
        break;        
    case TOKEN_TYPE_LBRACE:
        strncpy(buf, "LBRACE", buflen);
        break;
    case TOKEN_TYPE_RBRACE:
        strncpy(buf, "RBRACE", buflen);
        break;
    case TOKEN_TYPE_COMMA:
        strncpy(buf, "COMMA", buflen);
        break;
    case TOKEN_TYPE_SEMI:
        strncpy(buf, "SEMI", buflen);
        break;
    case TOKEN_TYPE_DOT:
        strncpy(buf, "DOT", buflen);
        break;
    case TOKEN_TYPE_COLON:
        strncpy(buf, "COLON", buflen);
        break;
    case TOKEN_TYPE_EOF:
        strncpy(buf, "EOF", buflen);
        break;
    case TOKEN_TYPE_UNKNOWN:
        strncpy(buf, "UNKNOWN", buflen);
        break;        
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movl %edi, -0x4(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movl -0x4(%rbp), %eax
movq %rax, -0x20(%rbp)
subq $0x27, %rax
ja 0x3d6c
movq -0x20(%rbp), %rax
leaq 0x14db5(%rip), %rcx     # 0x18744
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14ed5(%rip), %rsi     # 0x1887c
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14ec5(%rip), %rsi     # 0x18885
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14eb0(%rip), %rsi     # 0x18889
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14e9a(%rip), %rsi     # 0x1888c
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14e86(%rip), %rsi     # 0x18891
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14e73(%rip), %rsi     # 0x18897
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14e60(%rip), %rsi     # 0x1889d
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14e50(%rip), %rsi     # 0x188a6
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14e3e(%rip), %rsi     # 0x188ad
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14e2c(%rip), %rsi     # 0x188b4
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14e20(%rip), %rsi     # 0x188c1
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14e0b(%rip), %rsi     # 0x188c5
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14df9(%rip), %rsi     # 0x188cc
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14de6(%rip), %rsi     # 0x188d2
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14dd0(%rip), %rsi     # 0x188d5
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14dbb(%rip), %rsi     # 0x188d9
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14da7(%rip), %rsi     # 0x188de
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14d92(%rip), %rsi     # 0x188e2
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14d7c(%rip), %rsi     # 0x188e5
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14d12(%rip), %rsi     # 0x18894
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14d4d(%rip), %rsi     # 0x188e8
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14d2b(%rip), %rsi     # 0x188df
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14d1e(%rip), %rsi     # 0x188eb
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14d0a(%rip), %rsi     # 0x188f0
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14cf7(%rip), %rsi     # 0x188f6
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14ce2(%rip), %rsi     # 0x188fa
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14ccd(%rip), %rsi     # 0x188fe
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14cb8(%rip), %rsi     # 0x18902
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14ca6(%rip), %rsi     # 0x18909
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14c94(%rip), %rsi     # 0x18910
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14c82(%rip), %rsi     # 0x18917
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14c72(%rip), %rsi     # 0x18920
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14c62(%rip), %rsi     # 0x18929
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14c50(%rip), %rsi     # 0x18930
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14c3e(%rip), %rsi     # 0x18937
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14c2e(%rip), %rsi     # 0x1893d
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14c1d(%rip), %rsi     # 0x18942
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14c0b(%rip), %rsi     # 0x18946
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14bfb(%rip), %rsi     # 0x1894c
callq 0x1040
jmp 0x3d6c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x14be9(%rip), %rsi     # 0x18950
callq 0x1040
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)