// File: /workspace/github_cpp_makefile_star2_O1/vsklad[P]cgen/./bal/cnf/processor/cnfprocessor.hpp
// Function: bal::processor_result_t bal::CnfProcessor::process_clauses<bal::CnfSubsumptionOptimizer, &bal::CnfSubsumptionOptimizer::process_clause_subsumption(unsigned int*)>(bal::CnfSubsumptionOptimizer*)
inline processor_result_t process_clauses(CALLER_T* const p_caller) {
            clauses_index_.reset(0, 0);
            processor_result_t result = erUndetermined;
            
            uint32_t offset = 0;
            while (offset < cnf_.size_) {
                uint32_t* p_clause = _clauses_offset_clause(clauses_data_, offset);
                // p_clause size may change
                const clause_size_t clause_size = _clause_size(p_clause);
                
                // the clause may be excluded during processing of the preceding ones
                if (_clause_is_included(p_clause)) {
                    processed_offset_ = offset;
                    if ((p_caller->*p_process_clause)(p_clause) == erConflict) {
                        result = erConflict;
                        break;
                    } else {
                        // the pointer may become invalid
                        p_clause = _clauses_offset_clause(clauses_data_, offset);
                        if (_clause_is_included(p_clause)) {
                            // append processed clause to the index if included
                            for (auto i = 0; i < _clause_size(p_clause); i++) {
                                clauses_index_.append(literal_t__variable_id(_clause_literal(p_clause, i)), offset);
                            };
                        };
                    };
                };
                
                _clauses_offset_size_next(offset, clause_size);
            };
            
            return result;
        }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rsi, -0x38(%rbp)
movq %rdi, %r14
addq $0x30, %rdi
xorl %r12d, %r12d
movq %rdi, -0x40(%rbp)
xorl %esi, %esi
xorl %edx, %edx
callq 0x1407a
movl $0x0, -0x2c(%rbp)
movq 0x8(%r14), %rax
cmpl 0x88(%rax), %r12d
jae 0x18c3e
movq 0x18(%r14), %rax
movq (%rax), %rax
movl %r12d, %ebx
movl 0xc(%rax,%rbx,4), %r13d
testw %r13w, %r13w
js 0x18c26
leaq (%rax,%rbx,4), %rsi
addq $0xc, %rsi
movl %r12d, 0xb0(%r14)
movl (%rsi), %ecx
movl $0x7fff, %eax           # imm = 0x7FFF
andl %eax, %ecx
cmpl $0x4, %ecx
je 0x18bc8
cmpl $0x3, %ecx
je 0x18bbd
xorl %eax, %eax
cmpl $0x2, %ecx
jne 0x18bd1
movq -0x38(%rbp), %rdi
callq 0x18c50
jmp 0x18bd1
movq -0x38(%rbp), %rdi
callq 0x190c4
jmp 0x18bd1
movq -0x38(%rbp), %rdi
callq 0x194da
cmpl $0x4, %eax
jne 0x18be1
movl $0x4, -0x2c(%rbp)
xorl %eax, %eax
jmp 0x18c36
movq 0x18(%r14), %rax
movq (%rax), %rax
testb $-0x80, 0xd(%rax,%rbx,4)
jne 0x18c26
leaq (%rax,%rbx,4), %rbx
movzwl 0xc(%rbx), %eax
testl $0x7fff, %eax           # imm = 0x7FFF
je 0x18c26
xorl %r15d, %r15d
movl 0x10(%rbx,%r15,4), %esi
shrl %esi
decl %esi
movq -0x40(%rbp), %rdi
movl %r12d, %edx
callq 0x153d6
incq %r15
movl 0xc(%rbx), %eax
andl $0x7fff, %eax           # imm = 0x7FFF
cmpq %rax, %r15
jb 0x18c01
andl $0x7fff, %r13d          # imm = 0x7FFF
addl %r13d, %r12d
addl $0x4, %r12d
movb $0x1, %al
testb %al, %al
jne 0x18b5f
movl -0x2c(%rbp), %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq