// File: vsklad[P]cgen/./bal/cnf/cnf/cnfclausescontainer.hpp
// Function: bal::CnfClausesIndexedContainer<false>::append_clause(unsigned int const*, unsigned short)
inline void append_clause(const literalid_t* const literals, const clause_size_t literals_size) {
            this->reserve(_clauses_offset_size_memory_size(literals_size));
            uint32_t* const p_clause = _clauses_offset_clause(this->data_, this->size_);
            std::copy(literals, literals + literals_size, _clause_literals(p_clause));
            
            const clause_size_t clause_size = normalize_clause_literals(_clause_literals(p_clause), literals_size);
            clause_flags_t clause_flags = 0;
            
            // if necessary, unnegate the literals and calculate the aggregated flag
            if (_clause_size_is_aggregated(clause_size)) {
                uint16_t clause_bitmap = 0;
                for (auto i = 0; i < clause_size; i++) {
                    if (literal_t__is_unnegated(_clause_literal(p_clause, i))) {
                        clause_bitmap |= 0x1 << i;
                    } else {
                        literal_t__unnegate(_clause_literal(p_clause, i));
                    };
                };
                clause_flags = 0x1 << clause_bitmap;
            };
            _clause_header_set(p_clause, clause_flags, clause_size);
            
            insertion_point_t insertion_point;
            __insertion_point_t_init(insertion_point);
            append<false>(p_clause, insertion_point);
        }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movw %dx, %ax
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movw %ax, -0x12(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x48(%rbp)
addq $0x8, %rdi
movzwl -0x12(%rbp), %esi
addl $0x1, %esi
addl $0x3, %esi
callq 0x13d70
movq -0x48(%rbp), %rcx
movq 0x8(%rcx), %rax
movl 0x10(%rcx), %ecx
shlq $0x2, %rcx
addq %rcx, %rax
addq $0xc, %rax
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rsi
movzwl -0x12(%rbp), %eax
cltq
shlq $0x2, %rax
addq %rax, %rsi
movq -0x20(%rbp), %rdx
addq $0x4, %rdx
callq 0x13db0
movq -0x20(%rbp), %rdi
addq $0x4, %rdi
movzwl -0x12(%rbp), %esi
callq 0x13df0
movw %ax, -0x22(%rbp)
movw $0x0, -0x24(%rbp)
movzwl -0x22(%rbp), %eax
cmpl $0x4, %eax
jg 0x13a55
movw $0x0, -0x26(%rbp)
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
movzwl -0x22(%rbp), %ecx
cmpl %ecx, %eax
jge 0x13a46
movq -0x20(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movl 0x4(%rax,%rcx,4), %eax
andl $0x1, %eax
cmpl $0x1, %eax
jne 0x13a26
movl -0x2c(%rbp), %ecx
movl $0x1, %eax
shll %cl, %eax
movl %eax, %ecx
movzwl -0x26(%rbp), %eax
orl %ecx, %eax
movw %ax, -0x26(%rbp)
jmp 0x13a39
movq -0x20(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movl 0x4(%rax,%rcx,4), %edx
orl $0x1, %edx
movl %edx, 0x4(%rax,%rcx,4)
jmp 0x13a3b
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x139ef
movzwl -0x26(%rbp), %ecx
movl $0x1, %eax
shll %cl, %eax
movw %ax, -0x24(%rbp)
movq -0x48(%rbp), %rdi
movzwl -0x24(%rbp), %ecx
shll $0x10, %ecx
movzwl -0x22(%rbp), %eax
orl %eax, %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movl $0xffffffff, -0x38(%rbp) # imm = 0xFFFFFFFF
movq -0x20(%rbp), %rsi
leaq -0x3c(%rbp), %rdx
callq 0x13f90
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)