// File: /workspace/github_cpp_makefile_star2_O1/Myyura[P]MyyuraSat/./source/./solver_simplify.cpp
// Function: MyyuraSat::Solver::subsume1(unsigned int)
void Solver::subsume1(CRARef cr) {
    // TODO : flag to turn off
    Vector<CRARef> subs_queue;
    int q;
    for (q = 0, subs_queue.push(cr); q < subs_queue.size(); q++) {
        if (is_removed(subs_queue[q])) { q++; continue; }
        Clause& c = _ca[subs_queue[q]];

        int min_i = 0;
        for (int i = 0; i < c.size(); i++) {
            if (_occur_lit[c[i]].size() < _occur_lit[c[min_i]].size()) {
                min_i = i;
            }
        }

        Vector<CRARef>& crs = _occur_lit[c[min_i]];
        for (int i = 0; i < crs.size(); i++) {
            if (is_removed(crs[i])) { continue; }

            if (cr != crs[i]) {
                Clause& cp = _ca[crs[i]];
                Literal p = c.subsumes(cp);
                if (p != LITERAL_UNDEF && p != LITERAL_ERROR) {
                    // _selfsubsumption_removed++;
                    cp.strengthen(p);
                    subs_queue.push(crs[i]);
                }
            }
        }
    }

    check_garbage();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rdi, %rbx
leaq -0x4c(%rbp), %rax
movl %esi, (%rax)
xorpd %xmm0, %xmm0
leaq -0x40(%rbp), %rdi
movapd %xmm0, (%rdi)
movq %rax, %rsi
callq 0x5c7a
movq %rbx, -0x58(%rbp)
cmpl $0x0, -0x38(%rbp)
jle 0x4fb7
movq -0x58(%rbp), %rax
leaq 0xf8(%rax), %rcx
movq %rcx, -0x48(%rbp)
leaq 0x1a0(%rax), %r15
xorl %r14d, %r14d
movq %r15, -0x68(%rbp)
movq -0x40(%rbp), %rax
movslq %r14d, %rbx
movl (%rax,%rbx,4), %esi
movq -0x48(%rbp), %rdi
callq 0x6bc0
movl (%rax), %eax
andl $0x3, %eax
cmpl $0x1, %eax
jne 0x4ea2
incl %r14d
jmp 0x4faa
movq %r14, -0x60(%rbp)
movq -0x40(%rbp), %rax
movl (%rax,%rbx,4), %esi
movq -0x48(%rbp), %rdi
callq 0x6a4e
movq %rax, %r13
cmpl $0x20, (%rax)
jae 0x4ec2
xorl %eax, %eax
jmp 0x4f0c
xorl %ebx, %ebx
xorl %r14d, %r14d
movl 0x4(%r13,%rbx,4), %esi
movq %r15, %rdi
callq 0x7580
movq %r15, %rdi
movl 0x8(%rax), %r15d
movslq %r14d, %rax
movl 0x4(%r13,%rax,4), %esi
callq 0x7580
movl %ebx, %ecx
cmpl 0x8(%rax), %r15d
jl 0x4ef3
movl %r14d, %ecx
incq %rbx
movl (%r13), %eax
shrl $0x5, %eax
movl %ecx, %r14d
cmpq %rax, %rbx
movq -0x68(%rbp), %r15
jb 0x4ec7
movslq %ecx, %rax
movl 0x4(%r13,%rax,4), %esi
movq %r15, %rdi
callq 0x7580
movq %rax, %rbx
cmpl $0x0, 0x8(%rax)
jle 0x4fa6
xorl %r14d, %r14d
xorl %r15d, %r15d
movq (%rbx), %rax
movl (%rax,%r14), %esi
movq -0x48(%rbp), %rdi
callq 0x6bc0
movl (%rax), %eax
andl $0x3, %eax
cmpl $0x1, %eax
je 0x4f92
movq (%rbx), %rax
movl (%rax,%r14), %esi
cmpl %esi, -0x4c(%rbp)
je 0x4f92
movq -0x48(%rbp), %rdi
callq 0x6a4e
movq %rax, %r12
movq %r13, %rdi
movq %rax, %rsi
callq 0x64f2
cmpl 0x81fd(%rip), %eax      # 0xd16c
je 0x4f92
cmpl 0x81f9(%rip), %eax      # 0xd170
je 0x4f92
movq %r12, %rdi
movl %eax, %esi
callq 0x6626
movq (%rbx), %rsi
addq %r14, %rsi
leaq -0x40(%rbp), %rdi
callq 0x5c7a
incq %r15
movslq 0x8(%rbx), %rax
addq $0x4, %r14
cmpq %rax, %r15
jl 0x4f2c
movq -0x68(%rbp), %r15
movq -0x60(%rbp), %r14
incl %r14d
cmpl -0x38(%rbp), %r14d
jl 0x4e7d
movq -0x58(%rbp), %rdi
movl 0x100(%rdi), %eax
movl 0x108(%rdi), %ecx
xorps %xmm0, %xmm0
cvtsi2sd %rcx, %xmm0
cvtsi2sd %rax, %xmm1
mulsd 0x2c0(%rdi), %xmm1
ucomisd %xmm1, %xmm0
jbe 0x4fe7
movq (%rdi), %rax
callq *(%rax)
movq -0x40(%rbp), %rdi
testq %rdi, %rdi
je 0x5005
xorl %ebx, %ebx
movl %ebx, -0x38(%rbp)
callq 0x2180
movq $0x0, -0x40(%rbp)
movl %ebx, -0x34(%rbp)
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x5022
jmp 0x5022
jmp 0x5022
jmp 0x5022
jmp 0x5022
jmp 0x5022
jmp 0x5022
movq %rax, %rbx
movq -0x40(%rbp), %rdi
testq %rdi, %rdi
je 0x5046
xorl %r14d, %r14d
movl %r14d, -0x38(%rbp)
callq 0x2180
movq $0x0, -0x40(%rbp)
movl %r14d, -0x34(%rbp)
movq %rbx, %rdi
callq 0x2270