// File: /workspace/github_cpp_makefile_star2_O2/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 $0x18, %rsp
movq %rdx, %r15
movq %rsi, %rbx
movq %rdi, %r14
movq %rdx, %rsi
callq 0xd994
movq %rax, -0x38(%rbp)
movq 0xa8(%r14), %rax
movq %r15, -0x30(%rbp)
movl (%rax,%r15,4), %eax
movl %eax, %r12d
movl %r12d, %r12d
movl %eax, %esi
movq -0x38(%rbp), %rax
addq %rsi, %rax
cmpq %r12, %rax
jbe 0xd302
cmpl %esi, %r12d
jbe 0xd239
movq %rbx, %rdi
leaq 0x24019(%rip), %rsi     # 0x3124d
callq 0xc290
movq %r14, %rdi
movq %r12, %rsi
callq 0xda06
movq %rax, %r13
movq 0x90(%r14), %rax
movl (%rax,%r12,4), %eax
movl %eax, %ecx
movl %ecx, %r15d
movl %eax, %ecx
addq %r13, %rcx
cmpq %r15, %rcx
jbe 0xd2ec
cmpl %eax, %r15d
jbe 0xd279
movq %rbx, %rdi
leaq 0x23fdd(%rip), %rsi     # 0x31251
callq 0xc290
movq 0x78(%r14), %rax
movl (%rax,%r15,4), %eax
leal 0x1(%rax), %ecx
cmpl $0x2, %ecx
jbe 0xd366
testb $0x1, %al
jne 0xd2a2
movq 0x90(%r14), %rax
cmpl (%rax,%r12,4), %r15d
jne 0xd385
movq %rbx, %rdi
leaq 0x30e54(%rip), %rsi     # 0x3e100
callq 0xc290
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
movl 0x18(%rax,%rcx), %edx
andl $-0x4b, %edx
orl $0x2, %edx
movl %edx, 0x18(%rax,%rcx)
movq 0x78(%r14), %rcx
movl (%rcx,%r15,4), %esi
shrl %esi
movq %rax, %rdi
callq 0xc190
leal 0x1(%r15), %ecx
movq 0x90(%r14), %rax
movl (%rax,%r12,4), %eax
jmp 0xd254
incl %r12d
movq 0xa8(%r14), %rax
movq -0x30(%rbp), %rcx
movl (%rax,%rcx,4), %eax
jmp 0xd210
cmpq $0x0, -0x38(%rbp)
je 0xd3a4
movq %r14, %rdi
callq 0xda06
cmpq $0x1, %rax
jne 0xd3c3
movq 0xa8(%r14), %rax
movq -0x30(%rbp), %rcx
movl (%rax,%rcx,4), %eax
movq 0x78(%r14), %rcx
movq 0x90(%r14), %rdx
movl (%rdx,%rax,4), %eax
testb $0x1, (%rcx,%rax,4)
jne 0xd350
leaq 0x23fe9(%rip), %rsi     # 0x31331
movq %rbx, %rdi
callq 0xc290
movq %rbx, %rdi
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xc120
leaq 0x23ee8(%rip), %rdi     # 0x31255
leaq 0x23cab(%rip), %rsi     # 0x3101f
leaq 0x23efe(%rip), %rcx     # 0x31279
movl $0x117, %edx            # imm = 0x117
callq 0xc180
leaq 0x23f2f(%rip), %rdi     # 0x312bb
leaq 0x23c8c(%rip), %rsi     # 0x3101f
leaq 0x23edf(%rip), %rcx     # 0x31279
movl $0x119, %edx            # imm = 0x119
callq 0xc180
leaq 0x23f47(%rip), %rdi     # 0x312f2
leaq 0x23c6d(%rip), %rsi     # 0x3101f
leaq 0x23ec0(%rip), %rcx     # 0x31279
movl $0x11f, %edx            # imm = 0x11F
callq 0xc180
leaq 0x23f38(%rip), %rdi     # 0x31302
leaq 0x23c4e(%rip), %rsi     # 0x3101f
leaq 0x23ea1(%rip), %rcx     # 0x31279
movl $0x120, %edx            # imm = 0x120
callq 0xc180