// File: /workspace/github_cpp_makefile_star2_O1/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 0x2f3a5
movq 0x18(%r15), %rsi
movq (%r14), %rax
movq %rax, 0x48(%rsp)
movq 0x8(%r14), %rax
movq %rax, 0x50(%rsp)
testq %rax, %rax
je 0x2f3d4
movq 0x23c2d(%rip), %rdx     # 0x52fc8
cmpb $0x0, (%rdx)
je 0x2f3d0
incl 0x8(%rax)
jmp 0x2f3d4
movq 0x18(%r15), %rsi
movq (%r14), %rax
movq %rax, 0x28(%rsp)
movq 0x8(%r14), %rax
movq %rax, 0x30(%rsp)
testq %rax, %rax
je 0x2f432
movq 0x23c02(%rip), %rdx     # 0x52fc8
cmpb $0x0, (%rdx)
je 0x2f42e
incl 0x8(%rax)
jmp 0x2f432
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 0x2f3f8
callq 0x13308
movq 0x28(%r15), %rsi
movq (%r14), %rax
movq %rax, 0x38(%rsp)
movq 0x8(%r14), %rax
movq %rax, 0x40(%rsp)
testq %rax, %rax
je 0x2f4bb
movq 0x23bab(%rip), %rcx     # 0x52fc8
cmpb $0x0, (%rcx)
je 0x2f4b7
incl 0x8(%rax)
jmp 0x2f4bb
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 0x2f456
callq 0x13308
movq 0x8(%rsp), %rax
testq %rax, %rax
je 0x2f481
movq %rax, (%rbx)
xorl %eax, %eax
movq %rax, 0x8(%rbx)
movq 0x10(%rsp), %rcx
movq %rax, 0x10(%rsp)
movq %rcx, 0x8(%rbx)
movq %rax, 0x8(%rsp)
jmp 0x2f55f
movq 0x28(%r15), %rsi
movq (%r14), %rax
movq %rax, 0x18(%rsp)
movq 0x8(%r14), %rax
movq %rax, 0x20(%rsp)
testq %rax, %rax
je 0x2f540
movq 0x23b22(%rip), %rcx     # 0x52fc8
cmpb $0x0, (%rcx)
je 0x2f53c
incl 0x8(%rax)
jmp 0x2f540
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 0x2f4dc
callq 0x13308
movq 0x8(%rsp), %rax
cmpq 0x58(%rsp), %rax
je 0x2f513
movq 0x242e1(%rip), %rax     # 0x537d0
movq %rax, (%rbx)
movq 0x242df(%rip), %rax     # 0x537d8
movq %rax, 0x8(%rbx)
testq %rax, %rax
je 0x2f535
movq 0x23abf(%rip), %rcx     # 0x52fc8
cmpb $0x0, (%rcx)
je 0x2f531
incl 0x8(%rax)
jmp 0x2f535
movq %rax, (%rbx)
xorl %eax, %eax
movq %rax, 0x8(%rbx)
movq 0x10(%rsp), %rcx
movq %rax, 0x10(%rsp)
movq %rcx, 0x8(%rbx)
movq %rax, 0x8(%rsp)
jmp 0x2f535
lock
incl 0x8(%rax)
movq 0x60(%rsp), %rdi
jmp 0x2f555
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 0x2f55f
callq 0x13308
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x2f56e
callq 0x13308
movq %rbx, %rax
addq $0x68, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq 0x20(%rsp), %rdi
jmp 0x2f58e
movq %rax, %rbx
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x2f598
callq 0x13308
movq 0x10(%rsp), %rdi
jmp 0x2f5b1
movq %rax, %rbx
movq 0x30(%rsp), %rdi
jmp 0x2f5b1
movq %rax, %rbx
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x2f5bb
callq 0x13308
movq %rbx, %rdi
callq 0x7430
nop