// File: /workspace/github_cpp_makefile_star2_O1/pfnet-research[P]pml/src/expr_ast.cpp
// Function: ast::to_string[abi:cxx11](ast::expr_kind_t)
std::string to_string(expr_kind_t kind) {
    switch (kind) {
    case expr_kind_t::Let:
        return "Let";
    case expr_kind_t::LetFun:
        return "LetFun";
    case expr_kind_t::If:
        return "If";
    case expr_kind_t::App:
        return "App";
    case expr_kind_t::Rand:
        return "Rand";
    case expr_kind_t::Eq:
        return "Eq";
    case expr_kind_t::Neq:
        return "Neq";
    case expr_kind_t::Leq:
        return "Leq";
    case expr_kind_t::Geq:
        return "Geq";
    case expr_kind_t::Add:
        return "Add";
    case expr_kind_t::Sub:
        return "Sub";
    case expr_kind_t::Mul:
        return "Mul";
    case expr_kind_t::Div:
        return "Div";
    case expr_kind_t::And:
        return "And";
    case expr_kind_t::Or:
        return "Or";
    case expr_kind_t::Neg:
        return "Neg";
    case expr_kind_t::Typed:
        return "Typed";
    case expr_kind_t::Fun:
        return "Fun";
    case expr_kind_t::Int:
        return "Int";
    case expr_kind_t::Bool:
        return "Bool";
    case expr_kind_t::Var:
        return "Var";
    }
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
leaq 0x10(%rdi), %rax
movq %rax, (%rdi)
movl %esi, %eax
leaq 0x38d6c(%rip), %rcx     # 0x47090
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x38e04(%rip), %rsi     # 0x47138
leaq 0x38e00(%rip), %rdx     # 0x4713b
jmp 0xe49f
leaq 0x38e2b(%rip), %rsi     # 0x47172
leaq 0x38e26(%rip), %rdx     # 0x47174
jmp 0xe49f
leaq 0x38e00(%rip), %rsi     # 0x4715a
leaq 0x38dfc(%rip), %rdx     # 0x4715d
jmp 0xe49f
leaq 0x38de2(%rip), %rsi     # 0x4714f
leaq 0x38ddd(%rip), %rdx     # 0x47151
jmp 0xe49f
leaq 0x38dca(%rip), %rsi     # 0x4714a
leaq 0x38dc7(%rip), %rdx     # 0x4714e
jmp 0xe49f
leaq 0x38dbf(%rip), %rsi     # 0x47152
leaq 0x38dbb(%rip), %rdx     # 0x47155
jmp 0xe49f
leaq 0x38dc4(%rip), %rsi     # 0x4716a
leaq 0x38dc0(%rip), %rdx     # 0x4716d
jmp 0xe49f
leaq 0x38d8a(%rip), %rsi     # 0x47143
leaq 0x38d85(%rip), %rdx     # 0x47145
jmp 0xe49f
leaq 0x38da2(%rip), %rsi     # 0x4716e
leaq 0x38d9e(%rip), %rdx     # 0x47171
jmp 0xe49f
leaq 0x38d67(%rip), %rsi     # 0x47146
leaq 0x38d63(%rip), %rdx     # 0x47149
jmp 0xe49f
leaq 0x38d70(%rip), %rsi     # 0x47162
leaq 0x38d6c(%rip), %rdx     # 0x47165
jmp 0xe49f
leaq 0x38d37(%rip), %rsi     # 0x4713c
leaq 0x38d36(%rip), %rdx     # 0x47142
jmp 0xe49f
leaq 0x38d67(%rip), %rsi     # 0x4717f
leaq 0x38d63(%rip), %rdx     # 0x47182
jmp 0xe49f
leaq 0x38d60(%rip), %rsi     # 0x47188
leaq 0x38d5c(%rip), %rdx     # 0x4718b
jmp 0xe49f
leaq 0x38d41(%rip), %rsi     # 0x47179
leaq 0x38d3f(%rip), %rdx     # 0x4717e
jmp 0xe49f
leaq 0x38d0e(%rip), %rsi     # 0x47156
leaq 0x38d0a(%rip), %rdx     # 0x47159
jmp 0xe49f
leaq 0x38d06(%rip), %rsi     # 0x4715e
leaq 0x38d02(%rip), %rdx     # 0x47161
jmp 0xe49f
leaq 0x38d1b(%rip), %rsi     # 0x47183
leaq 0x38d18(%rip), %rdx     # 0x47187
jmp 0xe49f
leaq 0x38cfd(%rip), %rsi     # 0x47175
leaq 0x38cf9(%rip), %rdx     # 0x47178
jmp 0xe49f
leaq 0x38cde(%rip), %rsi     # 0x47166
leaq 0x38cda(%rip), %rdx     # 0x47169
jmp 0xe49f
leaq 0x38ca7(%rip), %rsi     # 0x4713f
leaq 0x38ca3(%rip), %rdx     # 0x47142
movq %rbx, %rdi
callq 0x11866
movq %rbx, %rax
popq %rbx
retq