// File: /workspace/github_cpp_makefile_star2_O3/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 0x10(%rdi), %rcx
cmpl $-0x1, 0x50(%rcx)
jne 0x116aa
movq %rdi, %rbx
movl 0x10(%rcx), %edx
movl %edx, 0x50(%rcx)
movq 0x28(%rcx), %rax
movl 0x8(%rax), %eax
movl %eax, 0x54(%rcx)
movl 0x38(%rcx), %eax
movl %eax, 0x58(%rcx)
movq 0xb8(%rdi), %rax
cmpl $0x0, 0x8(%rax)
je 0x11666
movq (%rax), %r15
xorl %r13d, %r13d
movq %r15, -0x40(%rbp)
leaq 0x3(,%r13,2), %rcx
movl (%r15,%r13,4), %esi
cmpq %rsi, %rcx
je 0x115ca
cmpl $0x1, %esi
ja 0x11545
xorl %edx, %edx
testl %esi, %esi
setne %dl
shll $0x10, %edx
addl $0x10001, %edx          # imm = 0x10001
movl %edx, -0x48(%rbp)
movl %ecx, -0x44(%rbp)
movq 0x10(%rbx), %rdi
movl 0x5c(%rdi), %esi
movl %esi, -0x34(%rbp)
movl $0xffffffff, -0x38(%rbp) # imm = 0xFFFFFFFF
movl 0x38(%rdi), %esi
xorl %r8d, %r8d
cmpq %rsi, %r13
jae 0x11592
movq 0x30(%rdi), %rsi
movl (%rsi,%r13,4), %esi
movl %r13d, %r9d
cmpl $-0x1, %esi
je 0x115ac
movq 0x8(%rdi), %r8
leaq 0x4ae14(%rip), %r9      # 0x5c2f4
movl (%r9), %r9d
incl %r9d
movl %esi, %r10d
leaq (%r8,%r10,4), %r11
leaq 0x4ae00(%rip), %r14     # 0x5c2f4
movl %r9d, (%r14)
movzwl 0xc(%r11), %r15d
movw $0x7fff, %r14w          # imm = 0x7FFF
andw %r14w, %r15w
je 0x11533
leaq (%r8,%r10,4), %r14
addq $0xc, %r14
movzwl %r15w, %r12d
cmpl %ecx, (%r14,%r12,4)
jne 0x11525
cmpw $0x1, %r15w
jne 0x11527
jmp 0x115e2
jbe 0x11533
movl 0x8(%r11), %r10d
cmpl $-0x1, %r10d
jne 0x1153d
jmp 0x1159f
movl 0x4(%r11), %r10d
cmpl $-0x1, %r10d
je 0x11597
incl %r9d
movl %r10d, %esi
jmp 0x114e6
cmpl $-0x1, %esi
je 0x1168b
leaq 0x2(,%r13,2), %r14
movq 0x10(%rbx), %rdi
xorl $0x1, %esi
movl %ecx, -0x38(%rbp)
movl %esi, -0x34(%rbp)
leaq -0x38(%rbp), %r12
movq %r12, %rsi
movl $0x2, %edx
callq 0xfc72
movq 0x10(%rbx), %rdi
movl (%r15,%r13,4), %eax
movl %r14d, -0x38(%rbp)
movl %eax, -0x34(%rbp)
movq %r12, %rsi
movl $0x2, %edx
callq 0xfc72
jmp 0x115ca
movl %r13d, %r9d
jmp 0x115ac
movl $0x2, %r8d
jmp 0x115a5
movl $0x1, %r8d
movl %esi, %r9d
movq -0x40(%rbp), %r15
movl %r8d, -0x30(%rbp)
movl %r9d, -0x2c(%rbp)
leaq 0x4ad35(%rip), %rax     # 0x5c2f0
incl (%rax)
leaq -0x48(%rbp), %rsi
leaq -0x38(%rbp), %rdx
callq 0x12442
incq %r13
movq 0xb8(%rbx), %rax
movl 0x8(%rax), %ecx
cmpq %rcx, %r13
jb 0x1146d
jmp 0x1165f
movl $0x3, -0x30(%rbp)
movl %esi, -0x2c(%rbp)
movl %esi, -0x38(%rbp)
cmpl $-0x1, %esi
movq -0x40(%rbp), %r15
je 0x115b4
leaq 0x4aced(%rip), %rcx     # 0x5c2ec
incl (%rcx)
movq 0x18(%rbx), %rcx
movq (%rcx), %rcx
xorl 0xc(%rcx,%r10,4), %edx
cmpl $0x10000, %edx          # imm = 0x10000
jb 0x115ca
leaq (%rcx,%r10,4), %rsi
addq $0xc, %rsi
movq (%rax), %rdi
callq 0xf06e
movq 0x10(%rbx), %rbx
movl 0x50(%rbx), %esi
cmpl $-0x1, %esi
je 0x116e8
cmpl %esi, 0x10(%rbx)
jb 0x116e8
movl 0x58(%rbx), %edx
movl 0x54(%rbx), %ecx
movq (%rbx), %rax
movq %rbx, %rdi
callq *(%rax)
movq $-0x1, 0x50(%rbx)
movl $0xffffffff, 0x58(%rbx) # imm = 0xFFFFFFFF
xorl %eax, %eax
jmp 0x1167c
movq 0x10(%rbx), %rcx
movl 0x50(%rcx), %edx
cmpl $-0x1, %edx
je 0x116c9
movq $-0x1, 0x50(%rcx)
movl $0xffffffff, 0x58(%rcx) # imm = 0xFFFFFFFF
movb $0x1, %al
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x36610(%rip), %rdi     # 0x47ca2
leaq 0x3076f(%rip), %rsi     # 0x41e08
leaq 0x3085a(%rip), %rcx     # 0x41efa
movl $0x4e3, %edx            # imm = 0x4E3
callq 0xb180
leaq 0x30faa(%rip), %rdi     # 0x4265b
leaq 0x3032c(%rip), %rsi     # 0x419e4
leaq 0x33048(%rip), %rcx     # 0x44707
movl $0x63, %edx
callq 0xb180
leaq 0x30f8c(%rip), %rdi     # 0x4265c
leaq 0x3030d(%rip), %rsi     # 0x419e4
leaq 0x30978(%rip), %rcx     # 0x42056
movl $0x6a, %edx
callq 0xb180
leaq 0x331d1(%rip), %rdi     # 0x448c0
leaq 0x302ee(%rip), %rsi     # 0x419e4
leaq 0x331fb(%rip), %rcx     # 0x448f8
movl $0x71, %edx
callq 0xb180
nop