// File: /workspace/github_cpp_makefile_star2_O1/vsklad[P]cgen/./bal/anf/anf.cpp
// Function: bal::Anf::print_equation(std::ostream&, unsigned long) const
void Anf::print_equation(std::ostream& stream, const size_t equation_index) const {
        const size_t terms_size = terms_size_(equation_index);
        
        for (auto j = equations_[equation_index]; j < equations_[equation_index] + terms_size; j++) {
            if (j > equations_[equation_index]) {
                stream << " + ";
            };
            
            const size_t symbols_size = symbols_size_(j);
            for (auto k = terms_[j]; k < terms_[j] + symbols_size; k++) {
                if (k > terms_[j]) {
                    stream << " * ";
                };
                
                assert(literal_t__is_variable(symbols_[k]));
                // only the only variable in the first term can be negated
                assert(k == terms_[j] || !literal_t__is_negation(symbols_[k]));
                stream << "x" << std::dec << literal_t__variable_id(symbols_[k]) + 1;
            };
        };
        
        // check the first constant term and output it last
        assert(terms_size >= 1);
        assert(symbols_size_(equations_[equation_index]) == 1);
        if (literal_t__is_negation(symbols_[terms_[equations_[equation_index]]])) {
            stream << " + 1";
        };
        
        stream << std::endl;
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rsi, %rbx
movq %rdi, %r14
movq 0xa8(%rdi), %rax
movq 0xb0(%rdi), %rcx
subq %rax, %rcx
sarq $0x2, %rcx
decq %rcx
cmpq %rdx, %rcx
jne 0xec0a
movq 0x98(%r14), %rcx
subq 0x90(%r14), %rcx
sarq $0x2, %rcx
jmp 0xec0e
movl 0x4(%rax,%rdx,4), %ecx
movl (%rax,%rdx,4), %esi
movq %rcx, -0x38(%rbp)
subq %rsi, %rcx
movq 0xa8(%r14), %rax
movl (%rax,%rdx,4), %eax
movq %rcx, -0x48(%rbp)
addq %rax, %rcx
movq %rsi, -0x30(%rbp)
cmpq %rsi, %rcx
jbe 0xed62
movq -0x30(%rbp), %rcx
movq %rcx, %r15
movl %ecx, %r12d
movq %rdx, -0x40(%rbp)
cmpl %eax, %r12d
jbe 0xec5d
movl $0x3, %edx
movq %rbx, %rdi
leaq 0x325f5(%rip), %rsi     # 0x4124d
callq 0xc320
movq 0x90(%r14), %rax
movq 0x98(%r14), %rcx
subq %rax, %rcx
sarq $0x2, %rcx
decq %rcx
cmpq %r15, %rcx
movq %r12, -0x50(%rbp)
jne 0xec8f
movq 0x80(%r14), %r12
subq 0x78(%r14), %r12
sarq $0x2, %r12
jmp 0xec94
movl 0x4(%rax,%r15,4), %r12d
movl (%rax,%r15,4), %r13d
subq %r13, %r12
movq 0x90(%r14), %rax
movl (%rax,%r15,4), %eax
movq %rax, %rcx
addq %r12, %rcx
cmpq %r13, %rcx
jbe 0xed3a
cmpl %eax, %r13d
jbe 0xecce
movl $0x3, %edx
movq %rbx, %rdi
leaq 0x32588(%rip), %rsi     # 0x41251
callq 0xc320
movq 0x78(%r14), %rax
movl (%rax,%r13,4), %eax
leal 0x1(%rax), %ecx
cmpl $0x2, %ecx
jbe 0xee05
testb $0x1, %al
jne 0xecf7
movq 0x90(%r14), %rax
cmpl (%rax,%r15,4), %r13d
jne 0xee24
movl $0x1, %edx
movq %rbx, %rdi
leaq 0x3f2ea(%rip), %rsi     # 0x4dff0
callq 0xc320
movq (%rbx), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x2, %ecx
movl %ecx, 0x18(%rbx,%rax)
movq 0x78(%r14), %rax
movl (%rax,%r13,4), %esi
shrl %esi
movq %rbx, %rdi
callq 0xc190
incl %r13d
jmp 0xec9b
movq -0x50(%rbp), %r12
incl %r12d
movq 0xa8(%r14), %rax
movq -0x40(%rbp), %rcx
movl (%rax,%rcx,4), %eax
movq -0x48(%rbp), %rcx
addq %rax, %rcx
movq %r12, %r15
cmpq %r12, %rcx
ja 0xec44
movq -0x30(%rbp), %rcx
cmpq %rcx, -0x38(%rbp)
je 0xee43
movq 0x90(%r14), %rcx
movq 0x98(%r14), %rdx
subq %rcx, %rdx
sarq $0x2, %rdx
decq %rdx
cmpq %rax, %rdx
jne 0xed9e
movq 0x80(%r14), %rdx
subq 0x78(%r14), %rdx
sarq $0x2, %rdx
jmp 0xeda2
movl 0x4(%rcx,%rax,4), %edx
movl (%rcx,%rax,4), %eax
subq %rax, %rdx
cmpq $0x1, %rdx
jne 0xee62
movq 0x78(%r14), %rcx
testb $0x1, (%rcx,%rax,4)
jne 0xedd0
leaq 0x3256e(%rip), %rsi     # 0x41331
movl $0x4, %edx
movq %rbx, %rdi
callq 0xc320
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0xc2a0
movsbl %al, %esi
movq %rbx, %rdi
callq 0xc030
movq %rax, %rdi
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xc1a0
leaq 0x32449(%rip), %rdi     # 0x41255
leaq 0x3220c(%rip), %rsi     # 0x4101f
leaq 0x3245f(%rip), %rcx     # 0x41279
movl $0x117, %edx            # imm = 0x117
callq 0xc180
leaq 0x32490(%rip), %rdi     # 0x412bb
leaq 0x321ed(%rip), %rsi     # 0x4101f
leaq 0x32440(%rip), %rcx     # 0x41279
movl $0x119, %edx            # imm = 0x119
callq 0xc180
leaq 0x324a8(%rip), %rdi     # 0x412f2
leaq 0x321ce(%rip), %rsi     # 0x4101f
leaq 0x32421(%rip), %rcx     # 0x41279
movl $0x11f, %edx            # imm = 0x11F
callq 0xc180
leaq 0x32499(%rip), %rdi     # 0x41302
leaq 0x321af(%rip), %rsi     # 0x4101f
leaq 0x32402(%rip), %rcx     # 0x41279
movl $0x120, %edx            # imm = 0x120
callq 0xc180
nop