// File: 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
subq $0xa0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x10(%rbp), %rdi
movq (%rdi), %rax
movq 0x58(%rax), %rax
callq *%rax
movl %eax, %eax
movq %rsp, %rcx
movq %rcx, -0x20(%rbp)
movq %rax, %rdx
addq $0xf, %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x70(%rbp)
movq %rcx, %rsp
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
movq (%rdi), %rax
callq *0x58(%rax)
movq -0x70(%rbp), %rdi
movl %eax, %eax
movq %rdi, %rsi
addq %rax, %rsi
movb $0x0, -0x29(%rbp)
leaq -0x29(%rbp), %rdx
callq 0x3bf60
movq -0x10(%rbp), %rdi
callq 0x54e00
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rdi
callq 0x3b1c0
movq %rax, -0x40(%rbp)
movq -0x38(%rbp), %rdi
callq 0x2de10
movq %rax, -0x48(%rbp)
leaq -0x40(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x3b1f0
testb $0x1, %al
jne 0x3bc51
jmp 0x3bd76
leaq -0x40(%rbp), %rdi
callq 0x2de90
addq $0x20, %rax
movq %rax, -0x50(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x2de90
movq %rax, -0x58(%rbp)
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
movl %eax, -0x7c(%rbp)
movq -0x50(%rbp), %rdi
callq 0x102f0
movl %eax, %ecx
movl -0x7c(%rbp), %eax
cmpl %ecx, %eax
jae 0x3bd66
movq -0x50(%rbp), %rdi
callq 0x2e180
movq %rax, %rcx
movslq -0x5c(%rbp), %rdx
xorl %eax, %eax
cmpl $0x1, (%rcx,%rdx,4)
movb %al, -0x7d(%rbp)
jbe 0x3bcc4
movq -0x50(%rbp), %rdi
callq 0x2e180
movslq -0x5c(%rbp), %rcx
cmpl $-0x2, (%rax,%rcx,4)
setbe %al
movb %al, -0x7d(%rbp)
movb -0x7d(%rbp), %al
testb $0x1, %al
jne 0x3bcd0
jmp 0x3bd56
movq -0x50(%rbp), %rdi
callq 0x2e180
movq %rax, %rcx
movq -0x70(%rbp), %rax
movslq -0x5c(%rbp), %rdx
movl (%rcx,%rdx,4), %ecx
shrl %ecx
subl $0x1, %ecx
movl %ecx, -0x60(%rbp)
movl -0x60(%rbp), %ecx
testb $0x1, (%rax,%rcx)
jne 0x3bd54
movl -0x60(%rbp), %eax
movl %eax, -0x94(%rbp)
movq -0x58(%rbp), %rdi
callq 0xd120
movq %rax, -0x90(%rbp)
movl -0x5c(%rbp), %eax
movl %eax, -0x84(%rbp)
movq -0x50(%rbp), %rdi
callq 0x2e1a0
movq -0x78(%rbp), %rdi
movl -0x94(%rbp), %esi
movq -0x90(%rbp), %rdx
movl -0x84(%rbp), %ecx
movl %eax, %r8d
movq (%rdi), %rax
movl $0xffffffff, %r9d       # imm = 0xFFFFFFFF
callq *0x18(%rax)
movq -0x70(%rbp), %rax
movl -0x60(%rbp), %ecx
movb $0x1, (%rax,%rcx)
jmp 0x3bd56
jmp 0x3bd58
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x3bc76
jmp 0x3bd68
leaq -0x40(%rbp), %rdi
callq 0x3b220
jmp 0x3bc2e
movl $0x0, -0x64(%rbp)
movl -0x64(%rbp), %eax
movl %eax, -0x98(%rbp)
movq -0x10(%rbp), %rdi
movq (%rdi), %rax
callq *0x58(%rax)
movl %eax, %ecx
movl -0x98(%rbp), %eax
cmpl %ecx, %eax
jae 0x3bde2
movq -0x70(%rbp), %rax
movslq -0x64(%rbp), %rcx
testb $0x1, (%rax,%rcx)
jne 0x3bdd5
movq -0x78(%rbp), %rdi
movl -0x64(%rbp), %esi
movq (%rdi), %rax
xorl %ecx, %ecx
movl %ecx, %edx
xorl %ecx, %ecx
movl $0x1, %r8d
movl $0xffffffff, %r9d       # imm = 0xFFFFFFFF
callq *0x18(%rax)
movq -0x70(%rbp), %rax
movslq -0x64(%rbp), %rcx
movb $0x1, (%rax,%rcx)
jmp 0x3bdd7
movl -0x64(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x64(%rbp)
jmp 0x3bd7d
movq -0x20(%rbp), %rax
movq %rax, %rsp
movq %rbp, %rsp
popq %rbp
retq
nop