// File: /workspace/github_cpp_makefile_star2_O3/pfnet-research[P]pml/src/parser.cpp
// Function: token_kind_to_string[abi:cxx11](token_t::kind_t)
std::string token_kind_to_string(token_t::kind_t kind) {
    using kind_t = token_t::kind_t;
    switch (kind) {
    case kind_t::Let:
        return "let";
    case kind_t::LetFun:
        return "letfun";
    case kind_t::In:
        return "in";
    case kind_t::If:
        return "if";
    case kind_t::Then:
        return "then";
    case kind_t::Else:
        return "else";
    case kind_t::Rand:
        return "rand";
    case kind_t::Ident:
        return "identifier";
    case kind_t::Arrow:
        return "->";
    case kind_t::FatArrow:
        return "=>";
    case kind_t::Or:
        return "\\/";
    case kind_t::And:
        return "/\\";
    case kind_t::Prob:
        return "Prob";
    case kind_t::Not:
        return "not";
    case kind_t::DoubleEq:
        return "==";
    case kind_t::Neq:
        return "!=";
    case kind_t::Less:
        return "<";
    case kind_t::Leq:
        return "<=";
    case kind_t::Geq:
        return ">=";
    case kind_t::Greater:
        return ">";
    case kind_t::Eq:
        return "=";
    case kind_t::Plus:
        return "+";
    case kind_t::Minus:
        return "-";
    case kind_t::Star:
        return "*";
    case kind_t::Slash:
        return "/";
    case kind_t::Comma:
        return ",";
    case kind_t::Amp:
        return "&";
    case kind_t::BackSlash:
        return "\\";
    case kind_t::Bar:
        return "|";
    case kind_t::Colon:
        return ":";
    case kind_t::Int:
        return "number";
    case kind_t::True:
        return "true";
    case kind_t::False:
        return "false";
    case kind_t::LParen:
        return "(";
    case kind_t::RParen:
        return ")";
    case kind_t::LBrace:
        return "{";
    case kind_t::RBrace:
        return "}";
    case kind_t::Eof:
        return "eof";
    case kind_t::Dummy:
        return "dummy";
    }
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
leaq 0x10(%rdi), %rax
movq %rax, (%rdi)
movl %esi, %eax
leaq 0x2ca70(%rip), %rcx     # 0x48140
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x2f995(%rip), %rsi     # 0x4b075
leaq 0x2f991(%rip), %rdx     # 0x4b078
jmp 0x1b9a1
leaq 0x2cbf3(%rip), %rsi     # 0x482e6
leaq 0x2cbef(%rip), %rdx     # 0x482e9
jmp 0x1b9a1
leaq 0x2cbc9(%rip), %rsi     # 0x482cf
leaq 0x2cbc6(%rip), %rdx     # 0x482d3
jmp 0x1b9a1
leaq 0x2cbbb(%rip), %rsi     # 0x482d4
leaq 0x2cbb7(%rip), %rdx     # 0x482d7
jmp 0x1b9a1
leaq 0x2bddb(%rip), %rsi     # 0x47507
leaq 0x2bdd5(%rip), %rdx     # 0x47508
jmp 0x1b9a1
leaq 0x2cb8d(%rip), %rsi     # 0x482cc
leaq 0x2cb88(%rip), %rdx     # 0x482ce
jmp 0x1b9a1
leaq 0x2bd6a(%rip), %rsi     # 0x474bc
leaq 0x2bd64(%rip), %rdx     # 0x474bd
jmp 0x1b9a1
leaq 0x299f8(%rip), %rsi     # 0x4515d
leaq 0x299f2(%rip), %rdx     # 0x4515e
jmp 0x1b9a1
leaq 0x2cb51(%rip), %rsi     # 0x482c9
leaq 0x2cb4c(%rip), %rdx     # 0x482cb
jmp 0x1b9a1
leaq 0x2cb3b(%rip), %rsi     # 0x482c6
leaq 0x2cb36(%rip), %rdx     # 0x482c8
jmp 0x1b9a1
leaq 0x2cb18(%rip), %rsi     # 0x482b6
leaq 0x2cb15(%rip), %rdx     # 0x482ba
jmp 0x1b9a1
leaq 0x2c6f7(%rip), %rsi     # 0x47ea8
leaq 0x2c6f2(%rip), %rdx     # 0x47eaa
jmp 0x1b9a1
leaq 0x2f68f(%rip), %rsi     # 0x4ae53
leaq 0x2f68d(%rip), %rdx     # 0x4ae58
jmp 0x1b9a1
leaq 0x2bd2e(%rip), %rsi     # 0x47505
leaq 0x2bd28(%rip), %rdx     # 0x47506
jmp 0x1b9a1
leaq 0x2cadd(%rip), %rsi     # 0x482c7
leaq 0x2cad7(%rip), %rdx     # 0x482c8
jmp 0x1b9a1
leaq 0x2caae(%rip), %rsi     # 0x482ab
leaq 0x2caa9(%rip), %rdx     # 0x482ad
jmp 0x1b9a1
leaq 0x2bcaa(%rip), %rsi     # 0x474ba
leaq 0x2bca4(%rip), %rdx     # 0x474bb
jmp 0x1b9a1
leaq 0x2ca8b(%rip), %rsi     # 0x482ae
leaq 0x2ca86(%rip), %rdx     # 0x482b0
jmp 0x1b9a1
leaq 0x2caa7(%rip), %rsi     # 0x482dd
leaq 0x2caa6(%rip), %rdx     # 0x482e3
jmp 0x1b9a1
leaq 0x2ca5b(%rip), %rsi     # 0x482a4
leaq 0x2ca5a(%rip), %rdx     # 0x482aa
jmp 0x1b9a1
leaq 0x2bca7(%rip), %rsi     # 0x47503
leaq 0x2bca1(%rip), %rdx     # 0x47504
jmp 0x1b9a1
leaq 0x2ca5b(%rip), %rsi     # 0x482ca
leaq 0x2ca55(%rip), %rdx     # 0x482cb
jmp 0x1b9a1
leaq 0x2c622(%rip), %rsi     # 0x47ea4
leaq 0x2c61d(%rip), %rdx     # 0x47ea6
jmp 0x1b9a1
leaq 0x2ca1c(%rip), %rsi     # 0x482b1
leaq 0x2ca19(%rip), %rdx     # 0x482b5
jmp 0x1b9a1
leaq 0x2bc61(%rip), %rsi     # 0x47509
leaq 0x2bc5b(%rip), %rdx     # 0x4750a
jmp 0x1b9a1
leaq 0x2c5ea(%rip), %rsi     # 0x47ea5
leaq 0x2c5e4(%rip), %rdx     # 0x47ea6
jmp 0x1b9a1
leaq 0x2f7b7(%rip), %rsi     # 0x4b085
leaq 0x2f7b4(%rip), %rdx     # 0x4b089
jmp 0x1b9a1
leaq 0x2c9fa(%rip), %rsi     # 0x482db
leaq 0x2c9f4(%rip), %rdx     # 0x482dc
jmp 0x1b9a1
leaq 0x2c9c7(%rip), %rsi     # 0x482bb
leaq 0x2c9ca(%rip), %rdx     # 0x482c5
jmp 0x1b9a1
leaq 0x312e4(%rip), %rsi     # 0x4cbeb
leaq 0x312e1(%rip), %rdx     # 0x4cbef
jmp 0x1b9a1
leaq 0x2f4a4(%rip), %rsi     # 0x4adbe
leaq 0x2f49e(%rip), %rdx     # 0x4adbf
jmp 0x1b9a1
leaq 0x29a93(%rip), %rsi     # 0x453bd
leaq 0x29a8d(%rip), %rdx     # 0x453be
jmp 0x1b9a1
leaq 0x2bbd1(%rip), %rsi     # 0x4750b
leaq 0x2bbcc(%rip), %rdx     # 0x4750d
jmp 0x1b9a1
leaq 0x2c98e(%rip), %rsi     # 0x482d8
leaq 0x2c989(%rip), %rdx     # 0x482da
jmp 0x1b9a1
leaq 0x2bbb4(%rip), %rsi     # 0x4750e
leaq 0x2bbaf(%rip), %rdx     # 0x47510
jmp 0x1b9a1
leaq 0x2c543(%rip), %rsi     # 0x47ead
leaq 0x2c53d(%rip), %rdx     # 0x47eae
jmp 0x1b9a1
leaq 0x2c96a(%rip), %rsi     # 0x482e4
leaq 0x2c964(%rip), %rdx     # 0x482e5
jmp 0x1b9a1
leaq 0x2c960(%rip), %rsi     # 0x482ea
leaq 0x2c95e(%rip), %rdx     # 0x482ef
jmp 0x1b9a1
leaq 0x2c933(%rip), %rsi     # 0x482cd
leaq 0x2c92d(%rip), %rdx     # 0x482ce
movq %rbx, %rdi
callq 0x116f8
movq %rbx, %rax
popq %rbx
retq