// File: jacky860226[P]JinkelaSat/src/include/JinkelaSat.hpp
// Function: MiniSat::JinkelaSat::addClause(std::vector<MiniSat::Literal, std::allocator<MiniSat::Literal>>&&)
bool addClause(std::vector<Literal> &&ps) {
    if (!ok)
      return false;
    for (Literal p : ps)
      while (p.var() >= int(nVars()))
        newVar();
    std::sort(ps.begin(), ps.end());
    Literal p;
    size_t j = 0;
    for (Literal l : ps) {
      if (value(l) == Status::True || l == ~p) {
        return true;
      } else if (value(l) != Status::False && l != p) {
        ps[j++] = p = l;
      }
    }
    ps.resize(j), ps.shrink_to_fit();
    if (ps.empty())
      return ok = false;
    else if (ps.size() == 1) {
      uncheckedEnqueue(ps[0]);
      return ok = (propagate() == nullptr);
    } else {
      clauses.emplace_back(new Clause(std::move(ps), false));
      attachClause(clauses.back().get());
    }
    return true;
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xd0, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xa8(%rbp)
testb $0x1, 0x208(%rax)
jne 0x2a50
movb $0x0, -0x1(%rbp)
jmp 0x2d8b
movq -0x18(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
callq 0x3710
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rdi
callq 0x3740
movq %rax, -0x30(%rbp)
leaq -0x28(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x3770
testb $0x1, %al
jne 0x2a85
jmp 0x2ad6
leaq -0x28(%rbp), %rdi
callq 0x37b0
movl (%rax), %eax
movl %eax, -0x34(%rbp)
leaq -0x34(%rbp), %rdi
callq 0x37d0
movq -0xa8(%rbp), %rdi
movl %eax, -0xac(%rbp)
callq 0x37f0
movq %rax, %rcx
movl -0xac(%rbp), %eax
cmpl %ecx, %eax
jl 0x2ac9
movq -0xa8(%rbp), %rdi
callq 0x3810
jmp 0x2a93
jmp 0x2acb
leaq -0x28(%rbp), %rdi
callq 0x38e0
jmp 0x2a72
movq -0x18(%rbp), %rdi
callq 0x3710
movq %rax, -0x40(%rbp)
movq -0x18(%rbp), %rdi
callq 0x3740
movq %rax, -0x48(%rbp)
movq -0x40(%rbp), %rdi
movq -0x48(%rbp), %rsi
callq 0x3900
leaq -0x4c(%rbp), %rdi
callq 0x3940
movq $0x0, -0x58(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rdi
callq 0x3710
movq %rax, -0x68(%rbp)
movq -0x60(%rbp), %rdi
callq 0x3740
movq %rax, -0x70(%rbp)
leaq -0x68(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x3770
testb $0x1, %al
jne 0x2b46
jmp 0x2c3b
leaq -0x68(%rbp), %rdi
callq 0x37b0
movq -0xa8(%rbp), %rdi
movl (%rax), %eax
movl %eax, -0x74(%rbp)
movl -0x74(%rbp), %eax
movl %eax, -0x78(%rbp)
movl -0x78(%rbp), %esi
callq 0x3960
movsbl %al, %ecx
movb $0x1, %al
cmpl $0x1, %ecx
movb %al, -0xad(%rbp)
je 0x2bb0
leaq -0x74(%rbp), %rdi
callq 0x39e0
movl %eax, -0xb4(%rbp)
leaq -0x4c(%rbp), %rdi
callq 0x39f0
movl %eax, -0x7c(%rbp)
leaq -0x7c(%rbp), %rdi
callq 0x39e0
movl %eax, %ecx
movl -0xb4(%rbp), %eax
cmpl %ecx, %eax
sete %al
movb %al, -0xad(%rbp)
movb -0xad(%rbp), %al
testb $0x1, %al
jne 0x2bbc
jmp 0x2bc5
movb $0x1, -0x1(%rbp)
jmp 0x2d8b
movq -0xa8(%rbp), %rdi
movl -0x74(%rbp), %eax
movl %eax, -0x80(%rbp)
movl -0x80(%rbp), %esi
callq 0x3960
movsbl %al, %eax
cmpl $0x0, %eax
je 0x2c29
leaq -0x74(%rbp), %rdi
callq 0x39e0
movl %eax, -0xb8(%rbp)
leaq -0x4c(%rbp), %rdi
callq 0x39e0
movl %eax, %ecx
movl -0xb8(%rbp), %eax
cmpl %ecx, %eax
je 0x2c29
movl -0x74(%rbp), %eax
movl %eax, -0x4c(%rbp)
movq -0x18(%rbp), %rdi
movq -0x58(%rbp), %rsi
movq %rsi, %rax
addq $0x1, %rax
movq %rax, -0x58(%rbp)
callq 0x3a20
movl -0x4c(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x2c2b
jmp 0x2c2d
leaq -0x68(%rbp), %rdi
callq 0x38e0
jmp 0x2b30
movq -0x18(%rbp), %rdi
movq -0x58(%rbp), %rsi
callq 0x3a40
movq -0x18(%rbp), %rdi
callq 0x3ad0
movq -0x18(%rbp), %rdi
callq 0x3af0
testb $0x1, %al
jne 0x2c60
jmp 0x2c77
movq -0xa8(%rbp), %rax
movb $0x0, 0x208(%rax)
movb $0x0, -0x1(%rbp)
jmp 0x2d8b
movq -0x18(%rbp), %rdi
callq 0x3b30
cmpq $0x1, %rax
jne 0x2ce0
movq -0x18(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x3a20
movq -0xa8(%rbp), %rdi
movl (%rax), %eax
movl %eax, -0x84(%rbp)
movl -0x84(%rbp), %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x3b50
movq -0xa8(%rbp), %rdi
callq 0x3c10
movq -0xa8(%rbp), %rcx
cmpq $0x0, %rax
sete %al
movb %al, %dl
andb $0x1, %dl
movb %dl, 0x208(%rcx)
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x2d8b
movq -0xa8(%rbp), %rax
addq $0x20, %rax
movq %rax, -0xc8(%rbp)
movl $0x20, %edi
callq 0x21c0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0xc0(%rbp)
movq -0x18(%rbp), %rsi
xorl %edx, %edx
callq 0x4200
jmp 0x2d16
movq -0xc8(%rbp), %rdi
movq -0xc0(%rbp), %rax
movq %rax, -0x90(%rbp)
leaq -0x90(%rbp), %rsi
callq 0x4180
movq -0xa8(%rbp), %rdi
addq $0x20, %rdi
callq 0x43a0
movq %rax, %rdi
callq 0x43e0
movq -0xa8(%rbp), %rdi
movq %rax, %rsi
callq 0x4250
jmp 0x2d85
movq -0xc0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
movl $0x20, %esi
callq 0x21d0
jmp 0x2d99
jmp 0x2d87
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0xd0, %rsp
popq %rbp
retq
movq -0x98(%rbp), %rdi
callq 0x22f0
nopw %cs:(%rax,%rax)
nop