// File: /workspace/github_cpp_makefile_star2_O3/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 $0x38, %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 0xdb3c
movq 0x98(%r14), %rcx
subq 0x90(%r14), %rcx
sarq $0x2, %rcx
jmp 0xdb40
movl 0x4(%rax,%rdx,4), %ecx
movl (%rax,%rdx,4), %esi
movq %rcx, -0x38(%rbp)
movq %rsi, %rax
movq %rsi, -0x30(%rbp)
subq %rsi, %rcx
movq %rcx, -0x48(%rbp)
jbe 0xdc98
movq -0x30(%rbp), %rcx
movl %ecx, %eax
movq %rcx, %r15
movl %ecx, %r12d
movq %rdx, -0x40(%rbp)
cmpl %eax, %r12d
jbe 0xdb84
movl $0x3, %edx
movq %rbx, %rdi
leaq 0x316ce(%rip), %rsi     # 0x3f24d
callq 0xb320
movq 0x90(%r14), %rax
movq 0x98(%r14), %rcx
subq %rax, %rcx
sarq $0x2, %rcx
decq %rcx
cmpq %r15, %rcx
movq %r12, -0x50(%rbp)
jne 0xdbb6
movq 0x80(%r14), %rcx
subq 0x78(%r14), %rcx
sarq $0x2, %rcx
jmp 0xdbbb
movl 0x4(%rax,%r15,4), %ecx
movl (%rax,%r15,4), %eax
movq %rax, %r12
movl %eax, %r13d
subq %rax, %rcx
movq %rcx, -0x58(%rbp)
jbe 0xdc70
cmpl %eax, %r13d
jbe 0xdbeb
movl $0x3, %edx
movq %rbx, %rdi
leaq 0x3166b(%rip), %rsi     # 0x3f251
callq 0xb320
movq 0x78(%r14), %rax
movl (%rax,%r12,4), %eax
leal 0x1(%rax), %ecx
cmpl $0x2, %ecx
jbe 0xdd3b
testb $0x1, %al
jne 0xdc14
movq 0x90(%r14), %rax
cmpl (%rax,%r15,4), %r13d
jne 0xdd5a
movl $0x1, %edx
movq %rbx, %rdi
leaq 0x3e2cd(%rip), %rsi     # 0x4bef0
callq 0xb320
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,%r12,4), %esi
shrl %esi
movq %rbx, %rdi
callq 0xb190
incl %r13d
movq 0x90(%r14), %rax
movl (%rax,%r15,4), %eax
movq %rax, %rcx
addq -0x58(%rbp), %rcx
movq %r13, %r12
cmpq %r13, %rcx
ja 0xdbd2
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 0xdb6b
movq -0x30(%rbp), %rcx
cmpq %rcx, -0x38(%rbp)
je 0xdd79
movq 0x90(%r14), %rcx
movq 0x98(%r14), %rdx
subq %rcx, %rdx
sarq $0x2, %rdx
decq %rdx
cmpq %rax, %rdx
jne 0xdcd4
movq 0x80(%r14), %rdx
subq 0x78(%r14), %rdx
sarq $0x2, %rdx
jmp 0xdcd8
movl 0x4(%rcx,%rax,4), %edx
movl (%rcx,%rax,4), %eax
subq %rax, %rdx
cmpq $0x1, %rdx
jne 0xdd98
movq 0x78(%r14), %rcx
testb $0x1, (%rcx,%rax,4)
jne 0xdd06
leaq 0x31638(%rip), %rsi     # 0x3f331
movl $0x4, %edx
movq %rbx, %rdi
callq 0xb320
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0xb2a0
movsbl %al, %esi
movq %rbx, %rdi
callq 0xb030
movq %rax, %rdi
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xb1a0
leaq 0x31513(%rip), %rdi     # 0x3f255
leaq 0x312d6(%rip), %rsi     # 0x3f01f
leaq 0x31529(%rip), %rcx     # 0x3f279
movl $0x117, %edx            # imm = 0x117
callq 0xb180
leaq 0x3155a(%rip), %rdi     # 0x3f2bb
leaq 0x312b7(%rip), %rsi     # 0x3f01f
leaq 0x3150a(%rip), %rcx     # 0x3f279
movl $0x119, %edx            # imm = 0x119
callq 0xb180
leaq 0x31572(%rip), %rdi     # 0x3f2f2
leaq 0x31298(%rip), %rsi     # 0x3f01f
leaq 0x314eb(%rip), %rcx     # 0x3f279
movl $0x11f, %edx            # imm = 0x11F
callq 0xb180
leaq 0x31563(%rip), %rdi     # 0x3f302
leaq 0x31279(%rip), %rsi     # 0x3f01f
leaq 0x314cc(%rip), %rcx     # 0x3f279
movl $0x120, %edx            # imm = 0x120
callq 0xb180
nop