// File: /workspace/github_cpp_makefile_star2_O1/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, %r15
subq %rax, %r15
movq %r15, %rsp
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x58(%rax)
testl %eax, %eax
je 0x2b7a2
movl %eax, %edx
movq %r15, %rdi
xorl %esi, %esi
callq 0xc160
movq %rbx, -0x30(%rbp)
movq %rbx, %rdi
callq 0x3ce9e
movq 0x18(%rax), %r13
addq $0x8, %rax
movq %rax, -0x38(%rbp)
cmpq %rax, %r13
je 0x2b829
cmpl $0x0, 0x48(%r13)
je 0x2b818
xorl %ebx, %ebx
movq 0x40(%r13), %rax
movl (%rax,%rbx,4), %r12d
leal 0x1(%r12), %eax
cmpl $0x3, %eax
jae 0x2b7e8
incq %rbx
movl 0x48(%r13), %eax
cmpq %rax, %rbx
jb 0x2b7c8
jmp 0x2b818
shrl %r12d
decl %r12d
cmpb $0x0, (%r15,%r12)
jne 0x2b7da
movq 0x20(%r13), %rdx
movl 0x5c(%r13), %r8d
movq (%r14), %rax
movq %r14, %rdi
movl %r12d, %esi
movl %ebx, %ecx
movl $0xffffffff, %r9d       # imm = 0xFFFFFFFF
callq *0x18(%rax)
movb $0x1, (%r15,%r12)
jmp 0x2b7da
movq %r13, %rdi
callq 0xc330
movq %rax, %r13
cmpq -0x38(%rbp), %rax
jne 0x2b7bf
movq -0x30(%rbp), %r12
movq (%r12), %rax
movq %r12, %rdi
callq *0x58(%rax)
testl %eax, %eax
je 0x2b878
xorl %ebx, %ebx
cmpb $0x0, (%r15,%rbx)
jne 0x2b864
movq (%r14), %rax
movq %r14, %rdi
movl %ebx, %esi
xorl %edx, %edx
xorl %ecx, %ecx
movl $0x1, %r8d
movl $0xffffffff, %r9d       # imm = 0xFFFFFFFF
callq *0x18(%rax)
movb $0x1, (%r15,%rbx)
incq %rbx
movq (%r12), %rax
movq %r12, %rdi
callq *0x58(%rax)
movl %eax, %eax
cmpq %rax, %rbx
jb 0x2b83d
leaq -0x28(%rbp), %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop