// File: /workspace/github_cpp_makefile_star2_O3/eryxcc[P]lois/src/formula.cpp
// Function: lois::FormulaBi::valueKnown(std::shared_ptr<lois::Variable>, bool)
term valueKnown(vptr v, bool negated) { 
    // non-negated: AND => at least one
    if(negated == type) {
      // OR: both need the same value
      term v1 = left->valueKnown(v, negated);
      term v2 = right->valueKnown(v, negated);
      if(v1.p == v2.p) return v1;
      return nullterm;
      }
    else {
      term v1 = left->valueKnown(v, negated);
      if(v1.p) return v1;
      return right->valueKnown(v, negated);
      }
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x68, %rsp
movq %rdx, %r14
movq %rsi, %r15
movq %rdi, %rbx
cmpb %cl, 0x10(%rsi)
jne 0x2f395
movq 0x18(%r15), %rsi
movq (%r14), %rax
movq %rax, 0x48(%rsp)
movq 0x8(%r14), %rax
movq %rax, 0x50(%rsp)
testq %rax, %rax
je 0x2f3c4
movq 0x22c3d(%rip), %rdx     # 0x51fc8
cmpb $0x0, (%rdx)
je 0x2f3c0
incl 0x8(%rax)
jmp 0x2f3c4
movq 0x18(%r15), %rsi
movq (%r14), %rax
movq %rax, 0x28(%rsp)
movq 0x8(%r14), %rax
movq %rax, 0x30(%rsp)
testq %rax, %rax
je 0x2f422
movq 0x22c12(%rip), %rdx     # 0x51fc8
cmpb $0x0, (%rdx)
je 0x2f41e
incl 0x8(%rax)
jmp 0x2f422
lock
incl 0x8(%rax)
movq (%rsi), %rax
movzbl %cl, %ebp
leaq 0x8(%rsp), %rdi
leaq 0x48(%rsp), %rdx
movl %ebp, %ecx
callq *0x30(%rax)
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x2f3e8
callq 0x133fc
movq 0x28(%r15), %rsi
movq (%r14), %rax
movq %rax, 0x38(%rsp)
movq 0x8(%r14), %rax
movq %rax, 0x40(%rsp)
testq %rax, %rax
je 0x2f4a7
movq 0x22bbb(%rip), %rcx     # 0x51fc8
cmpb $0x0, (%rcx)
je 0x2f4a3
incl 0x8(%rax)
jmp 0x2f4a7
lock
incl 0x8(%rax)
movq (%rsi), %rax
movzbl %cl, %ebp
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rdx
movl %ebp, %ecx
callq *0x30(%rax)
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x2f446
callq 0x133fc
movq 0x8(%rsp), %rax
testq %rax, %rax
je 0x2f46d
movq %rax, (%rbx)
movq 0x10(%rsp), %rax
xorl %ecx, %ecx
movq %rcx, 0x10(%rsp)
movq %rax, 0x8(%rbx)
movq %rcx, 0x8(%rsp)
jmp 0x2f547
movq 0x28(%r15), %rsi
movq (%r14), %rax
movq %rax, 0x18(%rsp)
movq 0x8(%r14), %rax
movq %rax, 0x20(%rsp)
testq %rax, %rax
je 0x2f528
movq 0x22b36(%rip), %rcx     # 0x51fc8
cmpb $0x0, (%rcx)
je 0x2f524
incl 0x8(%rax)
jmp 0x2f528
lock
incl 0x8(%rax)
movq (%rsi), %rax
leaq 0x58(%rsp), %rdi
leaq 0x38(%rsp), %rdx
movl %ebp, %ecx
callq *0x30(%rax)
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x2f4c8
callq 0x133fc
movq 0x8(%rsp), %rax
cmpq 0x58(%rsp), %rax
je 0x2f4ff
movq 0x232f5(%rip), %rax     # 0x527d0
movq %rax, (%rbx)
movq 0x232f3(%rip), %rax     # 0x527d8
movq %rax, 0x8(%rbx)
testq %rax, %rax
je 0x2f51d
movq 0x22ad3(%rip), %rcx     # 0x51fc8
cmpb $0x0, (%rcx)
je 0x2f519
incl 0x8(%rax)
jmp 0x2f51d
movq %rax, (%rbx)
movq 0x10(%rsp), %rax
xorl %ecx, %ecx
movq %rcx, 0x10(%rsp)
movq %rax, 0x8(%rbx)
movq %rcx, 0x8(%rsp)
jmp 0x2f51d
lock
incl 0x8(%rax)
movq 0x60(%rsp), %rdi
jmp 0x2f53d
lock
incl 0x8(%rax)
movq (%rsi), %rax
leaq 0x18(%rsp), %rdx
movq %rbx, %rdi
movl %ebp, %ecx
callq *0x30(%rax)
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x2f547
callq 0x133fc
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x2f556
callq 0x133fc
movq %rbx, %rax
addq $0x68, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq 0x20(%rsp), %rdi
jmp 0x2f576
movq %rax, %rbx
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x2f580
callq 0x133fc
movq 0x10(%rsp), %rdi
jmp 0x2f599
movq %rax, %rbx
movq 0x30(%rsp), %rdi
jmp 0x2f599
movq %rax, %rbx
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x2f5a3
callq 0x133fc
movq %rbx, %rdi
callq 0x7430
nop