// File: vsklad[P]cgen/./bal/cnf/processor/cnfprocessor.hpp
// Function: bal::processor_result_t bal::CnfProcessor::process_clauses<bal::CnfOptimizer, &bal::CnfOptimizer::process_clause_evaluate(unsigned int*)>(bal::CnfOptimizer*)
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
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x30(%rbp)
addq $0x30, %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x17d40
movl $0x0, -0x14(%rbp)
movl $0x0, -0x18(%rbp)
movq -0x30(%rbp), %rcx
movl -0x18(%rbp), %eax
movq 0x8(%rcx), %rcx
cmpl 0x88(%rcx), %eax
jae 0x1a94d
movq -0x30(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movl -0x18(%rbp), %ecx
shlq $0x2, %rcx
addq %rcx, %rax
addq $0xc, %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movl (%rax), %eax
andl $0x7fff, %eax           # imm = 0x7FFF
movw %ax, -0x22(%rbp)
movq -0x20(%rbp), %rax
movl (%rax), %eax
andl $0x8000, %eax           # imm = 0x8000
cmpl $0x0, %eax
jne 0x1a938
movq -0x30(%rbp), %rax
movl -0x18(%rbp), %ecx
movl %ecx, 0xb0(%rax)
movq -0x10(%rbp), %rax
movq %rax, -0x38(%rbp)
xorl %eax, %eax
testb $0x1, %al
jne 0x1a877
jmp 0x1a893
movq -0x38(%rbp), %rax
movq (%rax), %rax
leaq 0x1bb(%rip), %rcx       # 0x1aa40
subq $0x1, %rcx
movq (%rax,%rcx), %rax
movq %rax, -0x40(%rbp)
jmp 0x1a8a0
leaq 0x1a6(%rip), %rax       # 0x1aa40
movq %rax, -0x40(%rbp)
jmp 0x1a8a0
movq -0x38(%rbp), %rdi
movq -0x40(%rbp), %rax
movq -0x20(%rbp), %rsi
callq *%rax
cmpl $0x4, %eax
jne 0x1a8bf
movl $0x4, -0x14(%rbp)
jmp 0x1a94d
movq -0x30(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movl -0x18(%rbp), %ecx
shlq $0x2, %rcx
addq %rcx, %rax
addq $0xc, %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movl (%rax), %eax
andl $0x8000, %eax           # imm = 0x8000
cmpl $0x0, %eax
jne 0x1a934
movl $0x0, -0x28(%rbp)
movl -0x28(%rbp), %eax
movq -0x20(%rbp), %rcx
movl (%rcx), %ecx
andl $0x7fff, %ecx           # imm = 0x7FFF
cmpl %ecx, %eax
jae 0x1a932
movq -0x30(%rbp), %rdi
addq $0x30, %rdi
movq -0x20(%rbp), %rax
movslq -0x28(%rbp), %rcx
movl 0x4(%rax,%rcx,4), %esi
shrl %esi
subl $0x1, %esi
movl -0x18(%rbp), %edx
callq 0x1ac10
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x1a8f3
jmp 0x1a934
jmp 0x1a936
jmp 0x1a938
movzwl -0x22(%rbp), %eax
addl $0x1, %eax
addl $0x3, %eax
addl -0x18(%rbp), %eax
movl %eax, -0x18(%rbp)
jmp 0x1a803
movl -0x14(%rbp), %eax
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)