// File: vsklad[P]cgen/./bal/cnf/tracer/cnfnativetracer.hpp
// Function: bal::CnfNativeTracer::process_clause(unsigned int const*, unsigned int, bool)
void process_clause(const uint32_t* const p_clause, const container_offset_t offset, const bool is_resolvent) override {
            if (options_ & TRACE_CLAUSE_EVALUATIONS && p_cnf_ != nullptr) {
                if (!is_current_clause(p_clause, offset)) {
                    set_current_clause(p_clause, offset);
                    const char action = (is_resolvent) ? 'r' :
                        (clauses_.size() > 1 && clauses_[clauses_.size() - 2] != nullptr) ? '+' : 'e';
                    write_action(action);
                    write_clause(p_clause);
                    stream << std::endl;
                } else if (offset == offsets_.back() && p_clause != clauses_.back()) {
                    // changing p_clause with the same offset is fine
                    _assert_level_0(p_clause != nullptr);
                    set_current_clause(p_clause, offset);
                } else {
                    _assert_level_0(clauses_.size() > 0 && clauses_.back() == p_clause);
                    set_current_clause(p_clause, offset);
                    write_action('u', 1);
                    write_clause(p_clause);
                    stream << std::endl;
                };
            };
        }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movb %cl, %al
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
andb $0x1, %al
movb %al, -0x15(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x20(%rbp)
movzwl 0x18(%rax), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x358fe
movq -0x20(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0x358fe
movq -0x20(%rbp), %rdi
movq -0x10(%rbp), %rsi
movl -0x14(%rbp), %edx
callq 0x36b20
testb $0x1, %al
jne 0x357dc
movq -0x20(%rbp), %rdi
movq -0x10(%rbp), %rsi
movl -0x14(%rbp), %edx
callq 0x36c60
testb $0x1, -0x15(%rbp)
je 0x35736
movb $0x72, %al
movb %al, -0x21(%rbp)
jmp 0x357a1
movq -0x20(%rbp), %rdi
addq $0x28, %rdi
callq 0x36760
movq %rax, %rcx
xorl %eax, %eax
cmpq $0x1, %rcx
movb %al, -0x22(%rbp)
jbe 0x35783
movq -0x20(%rbp), %rdi
movq %rdi, %rax
addq $0x28, %rax
movq %rax, -0x30(%rbp)
addq $0x28, %rdi
callq 0x36760
movq -0x30(%rbp), %rdi
movq %rax, %rsi
subq $0x2, %rsi
callq 0x36d50
cmpq $0x0, (%rax)
setne %al
movb %al, -0x22(%rbp)
movb -0x22(%rbp), %cl
movb $0x2b, %al
movb $0x65, %dl
movb %dl, -0x32(%rbp)
testb $0x1, %cl
movb %al, -0x31(%rbp)
jne 0x3579b
movb -0x32(%rbp), %al
movb %al, -0x31(%rbp)
movb -0x31(%rbp), %al
movb %al, -0x21(%rbp)
movq -0x20(%rbp), %rdi
movb -0x21(%rbp), %al
movb %al, -0x16(%rbp)
xorl %edx, %edx
movsbl -0x16(%rbp), %esi
callq 0x36a90
movq -0x20(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x36d70
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
movq 0x4d7ae(%rip), %rsi     # 0x82f80
callq 0xd360
jmp 0x358fc
movq -0x20(%rbp), %rdi
movl -0x14(%rbp), %eax
movl %eax, -0x38(%rbp)
addq $0x40, %rdi
callq 0x36dc0
movq %rax, %rcx
movl -0x38(%rbp), %eax
cmpl (%rcx), %eax
jne 0x35857
movq -0x20(%rbp), %rdi
movq -0x10(%rbp), %rax
movq %rax, -0x40(%rbp)
addq $0x28, %rdi
callq 0x36e00
movq %rax, %rcx
movq -0x40(%rbp), %rax
cmpq (%rcx), %rax
je 0x35857
cmpq $0x0, -0x10(%rbp)
je 0x35823
jmp 0x35842
leaq 0x2d49f(%rip), %rdi     # 0x62cc9
leaq 0x2d3ec(%rip), %rsi     # 0x62c1d
movl $0x88, %edx
leaq 0x2d4a0(%rip), %rcx     # 0x62cdd
callq 0xd1c0
movq -0x20(%rbp), %rdi
movq -0x10(%rbp), %rsi
movl -0x14(%rbp), %edx
callq 0x36c60
jmp 0x358fa
movq -0x20(%rbp), %rdi
addq $0x28, %rdi
callq 0x36760
movq %rax, %rcx
xorl %eax, %eax
cmpq $0x0, %rcx
movb %al, -0x41(%rbp)
jbe 0x3588c
movq -0x20(%rbp), %rdi
addq $0x28, %rdi
callq 0x36e00
movq (%rax), %rax
cmpq -0x10(%rbp), %rax
sete %al
movb %al, -0x41(%rbp)
movb -0x41(%rbp), %al
testb $0x1, %al
jne 0x35895
jmp 0x35897
jmp 0x358b6
leaq 0x2d4ae(%rip), %rdi     # 0x62d4c
leaq 0x2d378(%rip), %rsi     # 0x62c1d
movl $0x8b, %edx
leaq 0x2d42c(%rip), %rcx     # 0x62cdd
callq 0xd1c0
movq -0x20(%rbp), %rdi
movq -0x10(%rbp), %rsi
movl -0x14(%rbp), %edx
callq 0x36c60
movq -0x20(%rbp), %rdi
movl $0x75, %esi
movl $0x1, %edx
callq 0x36a90
movq -0x20(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x36d70
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
movq 0x4d68b(%rip), %rsi     # 0x82f80
callq 0xd360
jmp 0x358fc
jmp 0x358fe
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop