// File: /workspace/github_cpp_makefile_star2_O2/vsklad[P]cgen/./bal/cnf/io/cnfvig.hpp
// Function: bal::CnfVigStreamWriter<false, false>::write_nodes(bal::Cnf const&, std::map<unsigned long, bal::CnfVigStreamWriter<false, false>::__edge_data_t, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, bal::CnfVigStreamWriter<false, false>::__edge_data_t>>> const&)
virtual void write_nodes(const Cnf& value, const edges_data_t& edges) {
            bool is_processed[value.variables_size()];
            std::fill(is_processed, is_processed + value.variables_size(), false);
            
            const formula_named_variables_t& nv = value.get_named_variables();
            for (formula_named_variables_t::const_iterator it = nv.begin(); it != nv.end(); ++it) {
                const VariablesArray& nv_variables = it->second;
                const std::string& nv_name = it->first;
                for (auto i = 0; i < nv_variables.size(); i++) {
                    if (literal_t__is_variable(nv_variables.data()[i])) {
                        const variableid_t variable_id = literal_t__variable_id(nv_variables.data()[i]);
                        if (!is_processed[variable_id]) {
                            write_node(variable_id, nv_name.c_str(), i, nv_variables.element_size(), TIMESTAMP_MAX);
                            is_processed[variable_id] = true;
                        };
                    };
                };
            };
            
            for (auto i = 0; i < value.variables_size(); i++) {
                if (!is_processed[i]) {
                    write_node(i, nullptr, 0, 1, TIMESTAMP_MAX);
                    is_processed[i] = true;
                };
            };
        }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rsi, %rbx
movq %rdi, %r14
movq (%rsi), %rax
movq %rsi, %rdi
callq *0x58(%rax)
movl %eax, %eax
addq $0xf, %rax
andq $-0x10, %rax
movq %rsp, %r13
subq %rax, %r13
movq %r13, %rsp
movq (%rbx), %rax
movq %rbx, -0x30(%rbp)
movq %rbx, %rdi
callq *0x58(%rax)
movl %eax, %eax
xorl %ecx, %ecx
cmpq %rcx, %rax
je 0x21f46
movb $0x0, (%r13,%rcx)
incq %rcx
jmp 0x21f36
movq -0x30(%rbp), %rdi
callq 0x2e0f8
movq 0x18(%rax), %r12
addq $0x8, %rax
movq %rax, -0x38(%rbp)
cmpq -0x38(%rbp), %r12
je 0x21fc3
xorl %ebx, %ebx
movl 0x48(%r12), %eax
cmpq %rax, %rbx
jae 0x21fb6
movq 0x40(%r12), %rax
movl (%rax,%rbx,4), %r15d
leal 0x1(%r15), %eax
cmpl $0x3, %eax
jae 0x21f84
incq %rbx
jmp 0x21f63
shrl %r15d
decl %r15d
cmpb $0x0, (%r13,%r15)
jne 0x21f7f
movq 0x20(%r12), %rdx
movl 0x5c(%r12), %r8d
movq (%r14), %rax
movq %r14, %rdi
movl %r15d, %esi
movl %ebx, %ecx
pushq $-0x1
popq %r9
callq *0x18(%rax)
movb $0x1, (%r13,%r15)
jmp 0x21f7f
movq %r12, %rdi
callq 0xc2e0
movq %rax, %r12
jmp 0x21f5b
xorl %ebx, %ebx
pushq $0x1
popq %r15
pushq $-0x1
popq %r12
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
callq *0x58(%rax)
movl %eax, %eax
cmpq %rax, %rbx
jae 0x22006
cmpb $0x0, (%r13,%rbx)
jne 0x22001
movq (%r14), %rax
movq %r14, %rdi
movl %ebx, %esi
xorl %edx, %edx
xorl %ecx, %ecx
movl %r15d, %r8d
movl %r12d, %r9d
callq *0x18(%rax)
movb $0x1, (%r13,%rbx)
incq %rbx
jmp 0x21fcd
leaq -0x28(%rbp), %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop