// File: /workspace/github_cpp_makefile_star2_O1/pfnet-research[P]pml/src/logic.cpp
// Function: logic::operator==(logic::formula_t const&, logic::formula_t const&)
bool operator==(formula_t const& lhs, formula_t const& rhs) {
    if (lhs.kind() != rhs.kind())
        return false;
    switch (lhs.kind()) {
    case formula_kind_t::Var:
        return cast<var_formula_t>(lhs).name == cast<var_formula_t>(rhs).name;
    case formula_kind_t::Bot:
    case formula_kind_t::Top:
        return true;
    case formula_kind_t::Neg:
        return *cast<neg_formula_t>(lhs).inner == *cast<neg_formula_t>(rhs).inner;
    case formula_kind_t::And:
        return *cast<and_formula_t>(lhs).lhs == *cast<and_formula_t>(rhs).lhs &&
            *cast<and_formula_t>(lhs).rhs == *cast<and_formula_t>(rhs).rhs;
    case formula_kind_t::Or:
        return *cast<or_formula_t>(lhs).lhs == *cast<or_formula_t>(rhs).lhs &&
            *cast<or_formula_t>(lhs).rhs == *cast<or_formula_t>(rhs).rhs;
    case formula_kind_t::Impl:
        return *cast<impl_formula_t>(lhs).lhs == *cast<impl_formula_t>(rhs).lhs &&
            *cast<impl_formula_t>(lhs).rhs == *cast<impl_formula_t>(rhs).rhs;
    case formula_kind_t::Eq:
        return *cast<eq_formula_t>(lhs).lhs == *cast<eq_formula_t>(rhs).lhs &&
            *cast<eq_formula_t>(lhs).rhs == *cast<eq_formula_t>(rhs).rhs;
    case formula_kind_t::Lt:
        return *cast<less_formula_t>(lhs).lhs == *cast<less_formula_t>(rhs).lhs &&
            *cast<less_formula_t>(lhs).rhs == *cast<less_formula_t>(rhs).rhs;
    case formula_kind_t::Leq:
        return *cast<leq_formula_t>(lhs).lhs == *cast<leq_formula_t>(rhs).lhs &&
            *cast<leq_formula_t>(lhs).rhs == *cast<leq_formula_t>(rhs).rhs;
    case formula_kind_t::Geq:
        return *cast<geq_formula_t>(lhs).lhs == *cast<geq_formula_t>(rhs).lhs &&
            *cast<geq_formula_t>(lhs).rhs == *cast<geq_formula_t>(rhs).rhs;
    case formula_kind_t::Gt:
        return *cast<greater_formula_t>(lhs).lhs == *cast<greater_formula_t>(rhs).lhs &&
            *cast<greater_formula_t>(lhs).rhs == *cast<greater_formula_t>(rhs).rhs;
    }
    return true;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
leaq 0x2f181(%rip), %rbp     # 0x47438
leaq 0x48d82(%rip), %r15     # 0x61040
leaq 0x48eab(%rip), %r12     # 0x61170
movq (%r14), %rax
movq %r14, %rdi
callq *(%rax)
movl %eax, %r13d
movq (%rbx), %rax
movq %rbx, %rdi
callq *(%rax)
cmpl %eax, %r13d
jne 0x188a5
movq (%r14), %rax
movq %r14, %rdi
callq *(%rax)
movb $0x1, %r13b
cmpl $0xb, %eax
ja 0x188a8
movl %eax, %eax
movslq (%rbp,%rax,4), %rax
addq %rbp, %rax
jmpq *%rax
movq %r14, %rdi
movq %r15, %rsi
leaq 0x48d42(%rip), %r13     # 0x61050
movq %r13, %rdx
xorl %ecx, %ecx
callq 0x9340
testq %rax, %rax
je 0x188ba
movq %rax, %r14
movq %rbx, %rdi
movq %r15, %rsi
movq %r13, %rdx
xorl %ecx, %ecx
callq 0x9340
testq %rax, %rax
je 0x188ba
movq 0x8(%r14), %r14
movq 0x8(%rax), %rbx
jmp 0x182c5
movq %r14, %rdi
movq %r15, %rsi
movq %r12, %rdx
xorl %ecx, %ecx
callq 0x9340
testq %rax, %rax
je 0x188ba
movq %rax, %r13
movq %rbx, %rdi
movq %r15, %rsi
movq %r12, %rdx
xorl %ecx, %ecx
callq 0x9340
testq %rax, %rax
je 0x188ba
movq 0x8(%r13), %rdi
movq 0x8(%rax), %rsi
callq 0x1829f
testb %al, %al
je 0x188a5
movq %r14, %rdi
movq %r15, %rsi
movq %r12, %rdx
xorl %ecx, %ecx
callq 0x9340
testq %rax, %rax
je 0x188ba
movq %rax, %r14
movq %rbx, %rdi
movq %r15, %rsi
movq %r12, %rdx
xorl %ecx, %ecx
callq 0x9340
testq %rax, %rax
je 0x188ba
movq 0x18(%r14), %r14
movq 0x18(%rax), %rbx
jmp 0x182c5
movq %r12, %rbp
movq %r14, %rdi
movq %r15, %rsi
leaq 0x48cfa(%rip), %r12     # 0x610e0
movq %r12, %rdx
xorl %ecx, %ecx
callq 0x9340
testq %rax, %rax
je 0x188ba
movq %rax, %r13
movq %rbx, (%rsp)
movq %rbx, %rdi
movq %r15, %rbx
movq %r15, %rsi
movq %r12, %rdx
xorl %ecx, %ecx
callq 0x9340
testq %rax, %rax
je 0x188ba
movq 0x8(%r13), %rdi
movq 0x8(%rax), %rsi
callq 0x1829f
testb %al, %al
je 0x188a5
movq %rbp, %r12
movq %r14, %rdi
movq %rbx, %r15
movq %rbx, %rsi
leaq 0x48c9c(%rip), %r13     # 0x610e0
movq %r13, %rdx
xorl %ecx, %ecx
callq 0x9340
testq %rax, %rax
je 0x188ba
movq %rax, %r14
movq (%rsp), %rdi
movq %r15, %rsi
movq %r13, %rdx
xorl %ecx, %ecx
callq 0x9340
testq %rax, %rax
leaq 0x2efc3(%rip), %rbp     # 0x47438
je 0x188ba
movq 0x18(%r14), %r14
movq 0x18(%rax), %rax
movq %rbx, %r15
movq %rax, %rbx
jmp 0x182c5
movq %rbx, %rbp
movq %r14, %rdi
movq %r12, %r14
movq %rdi, (%rsp)
movq %r15, %rsi
leaq 0x48d5b(%rip), %r12     # 0x61200
movq %r12, %rdx
xorl %ecx, %ecx
callq 0x9340
testq %rax, %rax
je 0x188ba
movq %rax, %r13
movq %rbp, %rdi
movq %r15, %rbx
movq %r15, %rsi
movq %r12, %rdx
xorl %ecx, %ecx
callq 0x9340
testq %rax, %rax
je 0x188ba
movq 0x8(%r13), %rdi
movq 0x8(%rax), %rsi
callq 0x1829f
testb %al, %al
je 0x188a5
movq %r14, %r12
movq (%rsp), %rdi
movq %rbx, %rsi
leaq 0x48d03(%rip), %r13     # 0x61200
movq %r13, %rdx
xorl %ecx, %ecx
callq 0x9340
testq %rax, %rax
je 0x188ba
movq %rax, %r14
movq %rbp, %rdi
movq %rbx, %rsi
movq %r13, %rdx
xorl %ecx, %ecx
callq 0x9340
testq %rax, %rax
je 0x188ba
movq %rbx, %r15
movq 0x18(%r14), %r14
movq 0x18(%rax), %rbx
leaq 0x2eefa(%rip), %rbp     # 0x47438
jmp 0x182c5
leaq 0x48af6(%rip), %rsi     # 0x61040
leaq 0x48e0f(%rip), %rdx     # 0x61360
movq %r14, %rdi
xorl %ecx, %ecx
callq 0x9340
testq %rax, %rax
je 0x188ba
movq %rax, %r15
leaq 0x48ad2(%rip), %rsi     # 0x61040
leaq 0x48deb(%rip), %rdx     # 0x61360
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x9340
testq %rax, %rax
je 0x188ba
movq 0x8(%r15), %rdi
movq 0x8(%rax), %rsi
callq 0x17eb4
testb %al, %al
je 0x188a5
leaq 0x48a9c(%rip), %rsi     # 0x61040
leaq 0x48db5(%rip), %rdx     # 0x61360
movq %r14, %rdi
xorl %ecx, %ecx
callq 0x9340
testq %rax, %rax
je 0x188ba
movq %rax, %r14
leaq 0x48a78(%rip), %rsi     # 0x61040
leaq 0x48d91(%rip), %rdx     # 0x61360
jmp 0x1887b
leaq 0x48a65(%rip), %rsi     # 0x61040
leaq 0x48e0e(%rip), %rdx     # 0x613f0
movq %r14, %rdi
xorl %ecx, %ecx
callq 0x9340
testq %rax, %rax
je 0x188ba
movq %rax, %r15
leaq 0x48a41(%rip), %rsi     # 0x61040
leaq 0x48dea(%rip), %rdx     # 0x613f0
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x9340
testq %rax, %rax
je 0x188ba
movq 0x8(%r15), %rdi
movq 0x8(%rax), %rsi
callq 0x17eb4
testb %al, %al
je 0x188a5
leaq 0x48a0b(%rip), %rsi     # 0x61040
leaq 0x48db4(%rip), %rdx     # 0x613f0
movq %r14, %rdi
xorl %ecx, %ecx
callq 0x9340
testq %rax, %rax
je 0x188ba
movq %rax, %r14
leaq 0x489e7(%rip), %rsi     # 0x61040
leaq 0x48d90(%rip), %rdx     # 0x613f0
jmp 0x1887b
leaq 0x489d4(%rip), %rsi     # 0x61040
leaq 0x48c35(%rip), %rdx     # 0x612a8
movq %r14, %rdi
xorl %ecx, %ecx
callq 0x9340
testq %rax, %rax
je 0x188ba
movq %rax, %r15
leaq 0x489b0(%rip), %rsi     # 0x61040
leaq 0x48c11(%rip), %rdx     # 0x612a8
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x9340
testq %rax, %rax
je 0x188ba
movq 0x8(%r15), %rdi
movq 0x8(%rax), %rsi
callq 0x17eb4
testb %al, %al
je 0x188a5
leaq 0x4897a(%rip), %rsi     # 0x61040
leaq 0x48bdb(%rip), %rdx     # 0x612a8
movq %r14, %rdi
xorl %ecx, %ecx
callq 0x9340
testq %rax, %rax
je 0x188ba
movq %rax, %r14
leaq 0x48956(%rip), %rsi     # 0x61040
leaq 0x48bb7(%rip), %rdx     # 0x612a8
jmp 0x1887b
leaq 0x48943(%rip), %rsi     # 0x61040
leaq 0x48e24(%rip), %rdx     # 0x61528
movq %r14, %rdi
xorl %ecx, %ecx
callq 0x9340
testq %rax, %rax
je 0x188ba
movq %rax, %r14
leaq 0x4891f(%rip), %rsi     # 0x61040
leaq 0x48e00(%rip), %rdx     # 0x61528
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x9340
testq %rax, %rax
je 0x188ba
movq 0x10(%r14), %rdx
cmpq 0x10(%rax), %rdx
jne 0x188a5
testq %rdx, %rdx
je 0x188a8
movq 0x8(%rax), %rsi
movq 0x8(%r14), %rdi
callq 0x9300
testl %eax, %eax
sete %r13b
jmp 0x188a8
leaq 0x488cf(%rip), %rsi     # 0x61040
leaq 0x48d08(%rip), %rdx     # 0x61480
movq %r14, %rdi
xorl %ecx, %ecx
callq 0x9340
testq %rax, %rax
je 0x188ba
movq %rax, %r15
leaq 0x488ab(%rip), %rsi     # 0x61040
leaq 0x48ce4(%rip), %rdx     # 0x61480
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x9340
testq %rax, %rax
je 0x188ba
movq 0x8(%r15), %rdi
movq 0x8(%rax), %rsi
callq 0x17eb4
testb %al, %al
je 0x188a5
leaq 0x48875(%rip), %rsi     # 0x61040
leaq 0x48cae(%rip), %rdx     # 0x61480
movq %r14, %rdi
xorl %ecx, %ecx
callq 0x9340
testq %rax, %rax
je 0x188ba
movq %rax, %r14
leaq 0x48851(%rip), %rsi     # 0x61040
leaq 0x48c8a(%rip), %rdx     # 0x61480
jmp 0x1887b
leaq 0x4883e(%rip), %rsi     # 0x61040
leaq 0x48d07(%rip), %rdx     # 0x61510
movq %r14, %rdi
xorl %ecx, %ecx
callq 0x9340
testq %rax, %rax
je 0x188ba
movq %rax, %r15
leaq 0x4881a(%rip), %rsi     # 0x61040
leaq 0x48ce3(%rip), %rdx     # 0x61510
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x9340
testq %rax, %rax
je 0x188ba
movq 0x8(%r15), %rdi
movq 0x8(%rax), %rsi
callq 0x17eb4
testb %al, %al
je 0x188a5
leaq 0x487ec(%rip), %rsi     # 0x61040
leaq 0x48cb5(%rip), %rdx     # 0x61510
movq %r14, %rdi
xorl %ecx, %ecx
callq 0x9340
testq %rax, %rax
je 0x188ba
movq %rax, %r14
leaq 0x487cc(%rip), %rsi     # 0x61040
leaq 0x48c95(%rip), %rdx     # 0x61510
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x9340
testq %rax, %rax
je 0x188ba
movq 0x18(%r14), %rdi
movq 0x18(%rax), %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x17eb4
xorl %r13d, %r13d
movl %r13d, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x9530
nop