// File: /workspace/github_cpp_makefile_star2_O2/pfnet-research[P]pml/src/logic.cpp
// Function: logic::to_debug_string[abi:cxx11](logic::formula_t const&)
std::string to_debug_string(formula_t const& formula) {
    switch (formula.kind()) {
    case formula_kind_t::Var:
        return cast<var_formula_t>(formula).name;
    case formula_kind_t::Bot:
        return "Bot";
    case formula_kind_t::Top:
        return "Top";
    case formula_kind_t::Neg:
        return "Not(" + to_debug_string(*cast<neg_formula_t>(formula).inner) + ")";
    case formula_kind_t::And:
        return "And(" +
           to_debug_string(*cast<and_formula_t>(formula).lhs) + ", " +
           to_debug_string(*cast<and_formula_t>(formula).rhs) + ")";
    case formula_kind_t::Or:
        return "Or(" +
           to_debug_string(*cast<or_formula_t>(formula).lhs) + ", " +
           to_debug_string(*cast<or_formula_t>(formula).rhs) + ")";
    case formula_kind_t::Impl:
        return "Impl(" +
           to_debug_string(*cast<impl_formula_t>(formula).lhs) + ", " +
           to_debug_string(*cast<impl_formula_t>(formula).rhs) + ")";
    case formula_kind_t::Eq:
        return "Eq(" +
           to_debug_string(*cast<eq_formula_t>(formula).lhs) + ", " +
           to_debug_string(*cast<eq_formula_t>(formula).rhs) + ")";
    case formula_kind_t::Lt:
        return "Lt(" +
           to_debug_string(*cast<less_formula_t>(formula).lhs) + ", " +
           to_debug_string(*cast<less_formula_t>(formula).rhs) + ")";
    case formula_kind_t::Leq:
        return "Leq(" +
           to_debug_string(*cast<leq_formula_t>(formula).lhs) + ", " +
           to_debug_string(*cast<leq_formula_t>(formula).rhs) + ")";
    case formula_kind_t::Geq:
        return "Geq(" +
           to_debug_string(*cast<geq_formula_t>(formula).lhs) + ", " +
           to_debug_string(*cast<geq_formula_t>(formula).rhs) + ")";
    case formula_kind_t::Gt:
        return "Gt(" +
           to_debug_string(*cast<greater_formula_t>(formula).lhs) + ", " +
           to_debug_string(*cast<greater_formula_t>(formula).rhs) + ")";
    }
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0xa0, %rsp
movq %rsi, %r14
movq %rdi, %rbx
movq (%rsi), %rax
movq %rsi, %rdi
callq *(%rax)
movl %eax, %eax
leaq 0x28640(%rip), %rcx     # 0x386c0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %r14, %rdi
callq 0x1064b
leaq 0x8(%rax), %rsi
movq %rbx, %rdi
callq 0x93a0
jmp 0x1056a
movq %r14, %rdi
callq 0x1077d
movq 0x8(%rax), %rsi
leaq 0x80(%rsp), %r15
movq %r15, %rdi
callq 0xfc0f
leaq 0x2870b(%rip), %rsi     # 0x387d0
leaq 0x60(%rsp), %rdi
movq %r15, %rdx
callq 0xb97b
leaq 0x283be(%rip), %rdx     # 0x38497
leaq 0x20(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0xeb69
movq %r14, %rdi
callq 0x1077d
movq 0x18(%rax), %rsi
leaq 0x40(%rsp), %rdi
callq 0xfc0f
movq %rsp, %rdi
leaq 0x20(%rsp), %rsi
leaq 0x40(%rsp), %rdx
callq 0xeb88
leaq 0x26272(%rip), %rdx     # 0x36389
movq %rsp, %rsi
movq %rbx, %rdi
callq 0xeb69
jmp 0x10537
movq %r14, %rdi
callq 0x1068f
movq 0x8(%rax), %rsi
leaq 0x80(%rsp), %r15
movq %r15, %rdi
callq 0x1005d
leaq 0x28665(%rip), %rsi     # 0x387af
leaq 0x60(%rsp), %rdi
movq %r15, %rdx
callq 0xb97b
leaq 0x28339(%rip), %rdx     # 0x38497
leaq 0x20(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0xeb69
movq %r14, %rdi
callq 0x1068f
movq 0x18(%rax), %rsi
leaq 0x40(%rsp), %rdi
callq 0x1005d
movq %rsp, %rdi
leaq 0x20(%rsp), %rsi
leaq 0x40(%rsp), %rdx
callq 0xeb88
leaq 0x261ed(%rip), %rdx     # 0x36389
movq %rsp, %rsi
movq %rbx, %rdi
callq 0xeb69
jmp 0x10537
movq %r14, %rdi
callq 0x10739
movq 0x8(%rax), %rsi
leaq 0x80(%rsp), %r15
movq %r15, %rdi
callq 0xfc0f
leaq 0x285f7(%rip), %rsi     # 0x387c6
leaq 0x60(%rsp), %rdi
movq %r15, %rdx
callq 0xb97b
leaq 0x282b4(%rip), %rdx     # 0x38497
leaq 0x20(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0xeb69
movq %r14, %rdi
callq 0x10739
movq 0x18(%rax), %rsi
leaq 0x40(%rsp), %rdi
callq 0xfc0f
movq %rsp, %rdi
leaq 0x20(%rsp), %rsi
leaq 0x40(%rsp), %rdx
callq 0xeb88
leaq 0x26168(%rip), %rdx     # 0x36389
movq %rsp, %rsi
movq %rbx, %rdi
callq 0xeb69
jmp 0x10537
leaq 0x2856e(%rip), %rsi     # 0x387a6
jmp 0x10318
movq %r14, %rdi
callq 0x1066d
movq 0x8(%rax), %rsi
leaq 0x20(%rsp), %r14
movq %r14, %rdi
callq 0x1005d
leaq 0x2854d(%rip), %rsi     # 0x387aa
movq %rsp, %rdi
movq %r14, %rdx
callq 0xb97b
leaq 0x2611a(%rip), %rdx     # 0x36389
movq %rsp, %rsi
movq %rbx, %rdi
callq 0xeb69
movq %rsp, %rdi
callq 0x9130
leaq 0x20(%rsp), %rdi
jmp 0x10565
movq %r14, %rdi
callq 0x106f5
movq 0x8(%rax), %rsi
leaq 0x80(%rsp), %r15
movq %r15, %rdi
callq 0xfc0f
leaq 0x2850f(%rip), %rsi     # 0x387be
leaq 0x60(%rsp), %rdi
movq %r15, %rdx
callq 0xb97b
leaq 0x281d4(%rip), %rdx     # 0x38497
leaq 0x20(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0xeb69
movq %r14, %rdi
callq 0x106f5
movq 0x18(%rax), %rsi
leaq 0x40(%rsp), %rdi
callq 0xfc0f
movq %rsp, %rdi
leaq 0x20(%rsp), %rsi
leaq 0x40(%rsp), %rdx
callq 0xeb88
leaq 0x26088(%rip), %rdx     # 0x36389
movq %rsp, %rsi
movq %rbx, %rdi
callq 0xeb69
jmp 0x10537
leaq 0x2848a(%rip), %rsi     # 0x387a2
movq %rsp, %rdx
movq %rbx, %rdi
callq 0xeb2e
jmp 0x1056a
movq %r14, %rdi
callq 0x106b1
movq 0x8(%rax), %rsi
leaq 0x80(%rsp), %r15
movq %r15, %rdi
callq 0x1005d
leaq 0x28469(%rip), %rsi     # 0x387b4
leaq 0x60(%rsp), %rdi
movq %r15, %rdx
callq 0xb97b
leaq 0x28138(%rip), %rdx     # 0x38497
leaq 0x20(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0xeb69
movq %r14, %rdi
callq 0x106b1
movq 0x18(%rax), %rsi
leaq 0x40(%rsp), %rdi
callq 0x1005d
movq %rsp, %rdi
leaq 0x20(%rsp), %rsi
leaq 0x40(%rsp), %rdx
callq 0xeb88
leaq 0x25fec(%rip), %rdx     # 0x36389
movq %rsp, %rsi
movq %rbx, %rdi
callq 0xeb69
jmp 0x10537
movq %r14, %rdi
callq 0x106d3
movq 0x8(%rax), %rsi
leaq 0x80(%rsp), %r15
movq %r15, %rdi
callq 0x1005d
leaq 0x283e8(%rip), %rsi     # 0x387b8
leaq 0x60(%rsp), %rdi
movq %r15, %rdx
callq 0xb97b
leaq 0x280b3(%rip), %rdx     # 0x38497
leaq 0x20(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0xeb69
movq %r14, %rdi
callq 0x106d3
movq 0x18(%rax), %rsi
leaq 0x40(%rsp), %rdi
callq 0x1005d
movq %rsp, %rdi
leaq 0x20(%rsp), %rsi
leaq 0x40(%rsp), %rdx
callq 0xeb88
leaq 0x25f67(%rip), %rdx     # 0x36389
movq %rsp, %rsi
movq %rbx, %rdi
callq 0xeb69
jmp 0x10537
movq %r14, %rdi
callq 0x1075b
movq 0x8(%rax), %rsi
leaq 0x80(%rsp), %r15
movq %r15, %rdi
callq 0xfc0f
leaq 0x28376(%rip), %rsi     # 0x387cb
leaq 0x60(%rsp), %rdi
movq %r15, %rdx
callq 0xb97b
leaq 0x2802e(%rip), %rdx     # 0x38497
leaq 0x20(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0xeb69
movq %r14, %rdi
callq 0x1075b
movq 0x18(%rax), %rsi
leaq 0x40(%rsp), %rdi
callq 0xfc0f
movq %rsp, %rdi
leaq 0x20(%rsp), %rsi
leaq 0x40(%rsp), %rdx
callq 0xeb88
leaq 0x25ee2(%rip), %rdx     # 0x36389
movq %rsp, %rsi
movq %rbx, %rdi
callq 0xeb69
jmp 0x10537
movq %r14, %rdi
callq 0x10717
movq 0x8(%rax), %rsi
leaq 0x80(%rsp), %r15
movq %r15, %rdi
callq 0xfc0f
leaq 0x282e8(%rip), %rsi     # 0x387c2
leaq 0x60(%rsp), %rdi
movq %r15, %rdx
callq 0xb97b
leaq 0x27fa9(%rip), %rdx     # 0x38497
leaq 0x20(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0xeb69
movq %r14, %rdi
callq 0x10717
movq 0x18(%rax), %rsi
leaq 0x40(%rsp), %rdi
callq 0xfc0f
movq %rsp, %rdi
leaq 0x20(%rsp), %rsi
leaq 0x40(%rsp), %rdx
callq 0xeb88
leaq 0x25e5d(%rip), %rdx     # 0x36389
movq %rsp, %rsi
movq %rbx, %rdi
callq 0xeb69
movq %rsp, %rdi
callq 0x9130
leaq 0x40(%rsp), %rdi
callq 0x9130
leaq 0x20(%rsp), %rdi
callq 0x9130
leaq 0x60(%rsp), %rdi
callq 0x9130
leaq 0x80(%rsp), %rdi
callq 0x9130
movq %rbx, %rax
addq $0xa0, %rsp
popq %rbx
popq %r14
popq %r15
retq
jmp 0x10588
jmp 0x10588
jmp 0x10588
jmp 0x10588
jmp 0x10588
jmp 0x10588
jmp 0x10588
movq %rax, %rbx
movq %rsp, %rdi
callq 0x9130
jmp 0x105a6
jmp 0x105a3
jmp 0x105a3
jmp 0x105a3
jmp 0x105a3
jmp 0x105a3
jmp 0x105a3
jmp 0x105a3
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x9130
jmp 0x10600
jmp 0x105cd
jmp 0x105cd
jmp 0x105cd
jmp 0x105cd
jmp 0x105cd
movq %rax, %rbx
movq %rsp, %rdi
callq 0x9130
jmp 0x105df
jmp 0x105cd
jmp 0x105cd
movq %rax, %rbx
jmp 0x1060a
jmp 0x105ea
jmp 0x105ea
jmp 0x105ea
jmp 0x105ea
jmp 0x105ea
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
jmp 0x1061c
jmp 0x105ea
jmp 0x105ea
movq %rax, %rbx
jmp 0x10614
jmp 0x105fd
jmp 0x105fd
jmp 0x105fd
jmp 0x105fd
jmp 0x105fd
jmp 0x105fd
jmp 0x105fd
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x9130
leaq 0x60(%rsp), %rdi
callq 0x9130
leaq 0x80(%rsp), %rdi
callq 0x9130
movq %rbx, %rdi
callq 0x94d0