// File: /workspace/github_cpp_makefile_star2_O2/vsklad[P]cgen/./bal/cnf/processor/cnfoptimizer.cpp
// Function: bal::CnfOptimizer::assign_variable_values_unoptimized()
inline bool CnfOptimizer::assign_variable_values_unoptimized() {
        clauses_.transaction_begin();
        
        const literalid_t* const variables = variables_.data();
        for (auto i = 0; i < variables_.size(); i++) {
            if (variable_t__literal_id(i) != variables[i]) {
                if (literal_t__is_constant(variables[i])) {
                    // unit clause
                    uint32_t unit_clause[_clause_size_memory_size(1)] = _clause_c1_make(literal_t__negated_onlyif(variable_t__literal_id(i), literal_t__is_constant_0(variables[i])));
                    Cnf::insertion_point_t insertion_point;
                    __insertion_point_t_init(insertion_point);
                    clauses_.find(unit_clause, insertion_point);
                    if (insertion_point.container_offset == CONTAINER_END) {
                        clauses_.append<true>(unit_clause, insertion_point);
                    } else {
                        // check that the value is the same, otherwise generate conflict
                        if (_clauses_offset_flags(clauses_data_, insertion_point.container_offset) != _clause_flags(unit_clause)) {
                            __print_conflict(variables_.data(), _clauses_offset_clause(clauses_data_, insertion_point.container_offset));
                            clauses_.transaction_rollback();
                            return false;
                        };
                    };
                } else if (literal_t__is_variable(variables[i])) {
                    // equality, 2 clauses
                    clauses_.append_clause_l(variable_t__literal_id(i), literal_t__negated(variables[i]));
                    clauses_.append_clause_l(literal_t__negated(variable_t__literal_id(i)), variables[i]);
                } else {
                    _assert_level_0(false);
                };
            };
        };
        
        clauses_.transaction_commit();
        return true;
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rdi, %rbx
movq 0x10(%rdi), %rdi
callq 0x109ec
movq %rbx, %rdi
movq 0xb8(%rbx), %rax
movq (%rax), %rcx
movq %rcx, -0x38(%rbp)
pushq $0x2
popq %r14
pushq $0x3
popq %r12
xorl %r13d, %r13d
leaq -0x30(%rbp), %rcx
leaq -0x48(%rbp), %r8
movl 0x8(%rax), %r15d
cmpq %r15, %r13
jae 0x10775
movq -0x38(%rbp), %rax
movl (%rax,%r13,4), %edx
cmpq %rdx, %r12
je 0x1075e
cmpl $0x1, %edx
ja 0x10710
xorl %eax, %eax
testl %edx, %edx
setne %al
shll $0x10, %eax
addl $0x10001, %eax          # imm = 0x10001
movl %eax, -0x30(%rbp)
leal 0x1(%r14), %eax
movl %eax, -0x2c(%rbp)
orl $-0x1, -0x44(%rbp)
movq %rdi, %rbx
movq 0x10(%rdi), %rdi
movq %rcx, %rsi
movq %r8, %rdx
callq 0xfccc
movl -0x48(%rbp), %eax
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
cmpq %rcx, %rax
je 0x10742
movq 0x18(%rbx), %rcx
movq (%rcx), %rcx
movl -0x30(%rbp), %edx
xorl 0xc(%rcx,%rax,4), %edx
cmpl $0x10000, %edx          # imm = 0x10000
movq %rbx, %rdi
jb 0x10756
jmp 0x10793
cmpl $-0x1, %edx
je 0x107b8
movq %rdi, %rbx
movq 0x10(%rdi), %rdi
xorl $0x1, %edx
leal 0x1(%r14), %esi
callq 0xf320
movq 0x10(%rbx), %rdi
movq -0x38(%rbp), %rax
movl (%rax,%r13,4), %edx
movl %r14d, %esi
callq 0xf320
jmp 0x10753
movq 0x10(%rbx), %rdi
leaq -0x30(%rbp), %rsi
leaq -0x48(%rbp), %rdx
callq 0x10fa8
movq %rbx, %rdi
leaq -0x30(%rbp), %rcx
leaq -0x48(%rbp), %r8
movq 0xb8(%rdi), %rax
addl $0x2, %r14d
addq $0x2, %r12
incq %r13
jmp 0x10693
movq 0x10(%rdi), %rdi
callq 0x112ec
cmpq %r15, %r13
setae %al
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq (%rcx,%rax,4), %rsi
addq $0xc, %rsi
movq 0xb8(%rdi), %rax
movq %rdi, %rbx
movq (%rax), %rdi
callq 0xe8cf
movq 0x10(%rbx), %rdi
callq 0x10b84
jmp 0x1077e
leaq 0x295fc(%rip), %rdi     # 0x39dbb
leaq 0x23642(%rip), %rsi     # 0x33e08
leaq 0x2372d(%rip), %rcx     # 0x33efa
movl $0x4e3, %edx            # imm = 0x4E3
callq 0xc180
nop