// File: /workspace/github_cpp_makefile_star2_O3/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 0x38ef0(%rip), %rcx     # 0x47090
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x38f88(%rip), %rsi     # 0x47138
leaq 0x38f84(%rip), %rdx     # 0x4713b
jmp 0xe31b
leaq 0x38faf(%rip), %rsi     # 0x47172
leaq 0x38faa(%rip), %rdx     # 0x47174
jmp 0xe31b
leaq 0x38f84(%rip), %rsi     # 0x4715a
leaq 0x38f80(%rip), %rdx     # 0x4715d
jmp 0xe31b
leaq 0x38f66(%rip), %rsi     # 0x4714f
leaq 0x38f61(%rip), %rdx     # 0x47151
jmp 0xe31b
leaq 0x38f4e(%rip), %rsi     # 0x4714a
leaq 0x38f4b(%rip), %rdx     # 0x4714e
jmp 0xe31b
leaq 0x38f43(%rip), %rsi     # 0x47152
leaq 0x38f3f(%rip), %rdx     # 0x47155
jmp 0xe31b
leaq 0x38f48(%rip), %rsi     # 0x4716a
leaq 0x38f44(%rip), %rdx     # 0x4716d
jmp 0xe31b
leaq 0x38f0e(%rip), %rsi     # 0x47143
leaq 0x38f09(%rip), %rdx     # 0x47145
jmp 0xe31b
leaq 0x38f26(%rip), %rsi     # 0x4716e
leaq 0x38f22(%rip), %rdx     # 0x47171
jmp 0xe31b
leaq 0x38eeb(%rip), %rsi     # 0x47146
leaq 0x38ee7(%rip), %rdx     # 0x47149
jmp 0xe31b
leaq 0x38ef4(%rip), %rsi     # 0x47162
leaq 0x38ef0(%rip), %rdx     # 0x47165
jmp 0xe31b
leaq 0x38ebb(%rip), %rsi     # 0x4713c
leaq 0x38eba(%rip), %rdx     # 0x47142
jmp 0xe31b
leaq 0x38eeb(%rip), %rsi     # 0x4717f
leaq 0x38ee7(%rip), %rdx     # 0x47182
jmp 0xe31b
leaq 0x38ee4(%rip), %rsi     # 0x47188
leaq 0x38ee0(%rip), %rdx     # 0x4718b
jmp 0xe31b
leaq 0x38ec5(%rip), %rsi     # 0x47179
leaq 0x38ec3(%rip), %rdx     # 0x4717e
jmp 0xe31b
leaq 0x38e92(%rip), %rsi     # 0x47156
leaq 0x38e8e(%rip), %rdx     # 0x47159
jmp 0xe31b
leaq 0x38e8a(%rip), %rsi     # 0x4715e
leaq 0x38e86(%rip), %rdx     # 0x47161
jmp 0xe31b
leaq 0x38e9f(%rip), %rsi     # 0x47183
leaq 0x38e9c(%rip), %rdx     # 0x47187
jmp 0xe31b
leaq 0x38e81(%rip), %rsi     # 0x47175
leaq 0x38e7d(%rip), %rdx     # 0x47178
jmp 0xe31b
leaq 0x38e62(%rip), %rsi     # 0x47166
leaq 0x38e5e(%rip), %rdx     # 0x47169
jmp 0xe31b
leaq 0x38e2b(%rip), %rsi     # 0x4713f
leaq 0x38e27(%rip), %rdx     # 0x47142
movq %rbx, %rdi
callq 0x116f8
movq %rbx, %rax
popq %rbx
retq