// File: Myyura[P]MyyuraSat/./source/./solver_debug.cpp
// Function: MyyuraSat::Solver::clause_test()
void Solver::clause_test(void) {
    // subsume
    // Vector<Literal> A = {Literal(1, 0), Literal(2, 0), Literal(3, 0)};
    // Vector<Literal> B = {Literal(1, 1), Literal(2, 0)};

    Vector<Literal> A = {Literal(1, 0), Literal(2, 0), Literal(3, 0)};
    Vector<Literal> B = {Literal(1, 0), Literal(2, 0)};

    _ca.extra_clause_field(true);

    CRARef cr1 = _ca.alloc(A, false);
    CRARef cr2 = _ca.alloc(B, false);
    Clause& C1 = _ca[cr1];
    Clause& C2 = _ca[cr2];
    std::cout << C1.subsumes(C2).to_int() << std::endl;
    std::cout << C2.subsumes(C1).to_int() << std::endl;
    std::cout << LITERAL_UNDEF.to_int() << std::endl;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xf0, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0xa8(%rbp)
leaq -0x34(%rbp), %rdi
movq %rdi, -0xa0(%rbp)
movl $0x1, %esi
movl %esi, -0x98(%rbp)
xorl %edx, %edx
movl %edx, -0x94(%rbp)
callq 0x7430
movl -0x94(%rbp), %edx
leaq -0x30(%rbp), %rdi
movl $0x2, %esi
callq 0x7430
movl -0x94(%rbp), %edx
leaq -0x2c(%rbp), %rdi
movl $0x3, %esi
callq 0x7430
movq -0xa0(%rbp), %rax
movq %rax, -0x28(%rbp)
movq $0x3, -0x20(%rbp)
movq -0x28(%rbp), %rsi
movq -0x20(%rbp), %rdx
leaq -0x18(%rbp), %rdi
callq 0x94d0
movl -0x98(%rbp), %esi
movl -0x94(%rbp), %edx
leaq -0x60(%rbp), %rdi
callq 0x7430
jmp 0x6100
leaq -0x5c(%rbp), %rdi
movl $0x2, %esi
xorl %edx, %edx
callq 0x7430
jmp 0x6112
leaq -0x60(%rbp), %rax
movq %rax, -0x58(%rbp)
movq $0x2, -0x50(%rbp)
movq -0x58(%rbp), %rsi
movq -0x50(%rbp), %rdx
leaq -0x48(%rbp), %rdi
callq 0x94d0
jmp 0x6135
movq -0xa8(%rbp), %rdi
addq $0xf8, %rdi
movl $0x1, %esi
callq 0x9590
jmp 0x614f
movq -0xa8(%rbp), %rdi
addq $0xf8, %rdi
leaq -0x18(%rbp), %rsi
xorl %edx, %edx
callq 0x7940
movl %eax, -0xac(%rbp)
jmp 0x6170
movq -0xa8(%rbp), %rdi
movl -0xac(%rbp), %eax
movl %eax, -0x70(%rbp)
addq $0xf8, %rdi
leaq -0x48(%rbp), %rsi
xorl %edx, %edx
callq 0x7940
movl %eax, -0xb0(%rbp)
jmp 0x619a
movq -0xa8(%rbp), %rdi
movl -0xb0(%rbp), %eax
movl %eax, -0x74(%rbp)
addq $0xf8, %rdi
movl -0x70(%rbp), %esi
callq 0x7aa0
movq %rax, -0xb8(%rbp)
jmp 0x61c2
movq -0xa8(%rbp), %rdi
movq -0xb8(%rbp), %rax
movq %rax, -0x80(%rbp)
addq $0xf8, %rdi
movl -0x74(%rbp), %esi
callq 0x7aa0
movq %rax, -0xc0(%rbp)
jmp 0x61ec
movq -0xc0(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x80(%rbp), %rdi
movq -0x88(%rbp), %rsi
callq 0x9220
movl %eax, -0xc4(%rbp)
jmp 0x6212
movl -0xc4(%rbp), %eax
movl %eax, -0x8c(%rbp)
leaq -0x8c(%rbp), %rdi
callq 0x95b0
movl %eax, -0xc8(%rbp)
jmp 0x6232
movl -0xc8(%rbp), %esi
movq 0xfd59(%rip), %rdi      # 0x15f98
callq 0x2220
movq %rax, -0xd0(%rbp)
jmp 0x624d
movq -0xd0(%rbp), %rdi
movq 0xfd05(%rip), %rsi      # 0x15f60
callq 0x2120
jmp 0x6262
movq -0x88(%rbp), %rdi
movq -0x80(%rbp), %rsi
callq 0x9220
movl %eax, -0xd4(%rbp)
jmp 0x627a
movl -0xd4(%rbp), %eax
movl %eax, -0x90(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x95b0
movl %eax, -0xd8(%rbp)
jmp 0x629a
movl -0xd8(%rbp), %esi
movq 0xfcf1(%rip), %rdi      # 0x15f98
callq 0x2220
movq %rax, -0xe0(%rbp)
jmp 0x62b5
movq -0xe0(%rbp), %rdi
movq 0xfc9d(%rip), %rsi      # 0x15f60
callq 0x2120
jmp 0x62ca
leaq 0xfe7b(%rip), %rdi      # 0x1614c
callq 0x95b0
movl %eax, -0xe4(%rbp)
jmp 0x62de
movl -0xe4(%rbp), %esi
movq 0xfcad(%rip), %rdi      # 0x15f98
callq 0x2220
movq %rax, -0xf0(%rbp)
jmp 0x62f9
movq -0xf0(%rbp), %rdi
movq 0xfc59(%rip), %rsi      # 0x15f60
callq 0x2120
jmp 0x630e
leaq -0x48(%rbp), %rdi
callq 0x7640
leaq -0x18(%rbp), %rdi
callq 0x7640
addq $0xf0, %rsp
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x634c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x7640
leaq -0x18(%rbp), %rdi
callq 0x7640
movq -0x68(%rbp), %rdi
callq 0x2230
nop