// File: /workspace/github_cpp_makefile_star2_O3/SMT-COMP[P]scrambler/scrambler.cpp
// Function: print_node(std::ostream&, scrambler::node const*, annotation_mode)
void print_node(std::ostream &out, const scrambler::node *n, annotation_mode keep_annotations)
{
    if (n->symbol == "!" && !keep_annotation(n, keep_annotations)) {
        print_node(out, n->children[0], keep_annotations);
    } else {
        if (n->needs_parens) {
            out << '(';
        }
        if (!n->symbol.empty()) {
            if (no_scramble || !n->is_name) {
                out << n->symbol;
            } else {
                uint64_t name_id = get_name_id(n->symbol.c_str());
                if (name_id == 0) {
                    out << n->symbol;
                } else {
                    assert(name_id < permuted_name_ids.size());
                    out << make_name(permuted_name_ids[name_id]);
                }
            }
        }
        std::string name;
        if (gen_ucore && n->symbol == "assert") {
            name = make_annotation_name();
        }
        if (!name.empty()) {
            out << " (!";
        }
        for (size_t i = 0; i < n->children.size(); ++i) {
            if (i > 0 || !n->symbol.empty()) {
                out << ' ';
            }
            print_node(out, n->children[i], keep_annotations);
        }
        if (!name.empty()) {
            out << " :named " << name << ")";
        }
        if (n->needs_parens) {
            out << ')';
        }
        if (n->symbol == "check-sat") {
            if (gen_ucore) {
                // insert (get-unsat-core) after each check-sat
                out << std::endl << "(get-unsat-core)";
            }
            if (gen_mval) {
                // insert (get-model) after each check-sat
                out << std::endl << "(get-model)";
            }
            if (gen_proof) {
                // insert (get-proof) after each check-sat
                out << std::endl << "(get-proof)";
            }
        }
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movl %edx, %ebp
movq %rsi, %r15
movq %rdi, %rbx
leaq 0x7822(%rip), %rsi      # 0xc2c6
movq %r15, %rdi
callq 0x30a0
testl %eax, %eax
je 0x4ab5
movq %r15, %r14
jmp 0x4b0f
cmpl $0x2, %ebp
ja 0x4df4
leaq 0x7801(%rip), %r12      # 0xc2c6
leaq 0x8092(%rip), %r13      # 0xcb5e
movq %r15, %r14
testl %ebp, %ebp
je 0x4af9
cmpl $0x2, %ebp
je 0x4ab0
movq 0x10(%r14), %rax
movq 0x18(%r14), %rcx
subq %rax, %rcx
cmpq $0x10, %rcx
jne 0x4af9
movq 0x8(%rax), %rdi
movq %r13, %rsi
callq 0x30a0
testl %eax, %eax
je 0x4b0f
movq 0x10(%r14), %rax
movq (%rax), %r14
movq %r14, %rdi
movq %r12, %rsi
callq 0x30a0
testl %eax, %eax
je 0x4acf
cmpb $0x1, 0x28(%r14)
jne 0x4b2b
leaq 0x8(%rsp), %rsi
movb $0x28, (%rsi)
movl $0x1, %edx
movq %rbx, %rdi
callq 0x32a0
movq (%r14), %rsi
movq -0x18(%rsi), %rdx
testq %rdx, %rdx
je 0x4bb6
cmpb $0x0, 0xe772(%rip)      # 0x132b0
jne 0x4bae
cmpb $0x0, 0x8(%r14)
je 0x4bae
movq %rsi, %rdi
callq 0x3c52
testq %rax, %rax
je 0x4ba7
movq 0xe7cd(%rip), %rdx      # 0x13328
movq 0xe7be(%rip), %rcx      # 0x13320
subq %rcx, %rdx
sarq $0x3, %rdx
cmpq %rdx, %rax
jae 0x4e13
movq (%rcx,%rax,8), %rsi
leaq 0x8(%rsp), %r15
movq %r15, %rdi
callq 0x494f
movq (%r15), %rsi
movq -0x18(%rsi), %rdx
movq %rbx, %rdi
callq 0x32a0
movq 0x8(%rsp), %rdi
addq $-0x18, %rdi
leaq 0x10(%rsp), %rsi
callq 0x3170
jmp 0x4bb6
movq (%r14), %rsi
movq -0x18(%rsi), %rdx
movq %rbx, %rdi
callq 0x32a0
movq 0xe3cb(%rip), %rax      # 0x12f88
addq $0x18, %rax
movq %rax, 0x8(%rsp)
cmpb $0x1, 0xe6e5(%rip)      # 0x132b2
jne 0x4c0f
leaq 0x9588(%rip), %rsi      # 0xe15e
movq %r14, %rdi
callq 0x30a0
testl %eax, %eax
jne 0x4c0f
leaq 0x10(%rsp), %rdi
callq 0x49e5
leaq 0x8(%rsp), %rdi
leaq 0x10(%rsp), %r15
movq %r15, %rsi
callq 0x33d0
movq (%r15), %rdi
addq $-0x18, %rdi
leaq 0x7(%rsp), %rsi
callq 0x3170
movq 0x8(%rsp), %rax
cmpq $0x0, -0x18(%rax)
je 0x4c2f
leaq 0x76a2(%rip), %rsi      # 0xc2c4
movl $0x3, %edx
movq %rbx, %rdi
callq 0x32a0
movq 0x10(%r14), %rax
cmpq %rax, 0x18(%r14)
je 0x4c8e
xorl %r12d, %r12d
leaq 0x7(%rsp), %r15
testq %r12, %r12
jne 0x4c50
movq (%r14), %rcx
cmpq $0x0, -0x18(%rcx)
je 0x4c69
movb $0x20, 0x7(%rsp)
movl $0x1, %edx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x32a0
movq 0x10(%r14), %rax
movq (%rax,%r12,8), %rsi
movq %rbx, %rdi
movl %ebp, %edx
callq 0x4a87
incq %r12
movq 0x10(%r14), %rax
movq 0x18(%r14), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
cmpq %rcx, %r12
jb 0x4c41
movq 0x8(%rsp), %rax
cmpq $0x0, -0x18(%rax)
je 0x4cd3
leaq 0x7627(%rip), %rsi      # 0xc2c8
movl $0x8, %edx
movq %rbx, %rdi
callq 0x32a0
movq 0x8(%rsp), %rsi
movq -0x18(%rsi), %rdx
movq %rbx, %rdi
callq 0x32a0
leaq 0x75b2(%rip), %rsi      # 0xc278
movl $0x1, %edx
movq %rax, %rdi
callq 0x32a0
cmpb $0x1, 0x28(%r14)
jne 0x4cef
leaq 0x7(%rsp), %rsi
movb $0x29, (%rsi)
movl $0x1, %edx
movq %rbx, %rdi
callq 0x32a0
leaq 0x75db(%rip), %rsi      # 0xc2d1
movq %r14, %rdi
callq 0x30a0
testl %eax, %eax
jne 0x4dd2
cmpb $0x1, 0xe5a5(%rip)      # 0x132b2
jne 0x4d4a
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3250
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31c0
leaq 0x759e(%rip), %rsi      # 0xc2db
movl $0x10, %edx
movq %rax, %rdi
callq 0x32a0
cmpb $0x1, 0xe562(%rip)      # 0x132b3
jne 0x4d8e
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3250
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31c0
leaq 0x756b(%rip), %rsi      # 0xc2ec
movl $0xb, %edx
movq %rax, %rdi
callq 0x32a0
cmpb $0x1, 0xe51f(%rip)      # 0x132b4
jne 0x4dd2
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3250
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31c0
leaq 0x7533(%rip), %rsi      # 0xc2f8
movl $0xb, %edx
movq %rax, %rdi
callq 0x32a0
movq 0x8(%rsp), %rdi
addq $-0x18, %rdi
leaq 0x10(%rsp), %rsi
callq 0x3170
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x7d08(%rip), %rdi      # 0xcb03
leaq 0x722b(%rip), %rsi      # 0xc02d
leaq 0x7d16(%rip), %rcx      # 0xcb1f
movl $0x261, %edx            # imm = 0x261
callq 0x31a0
leaq 0x743d(%rip), %rdi      # 0xc257
leaq 0x720c(%rip), %rsi      # 0xc02d
leaq 0x7452(%rip), %rcx      # 0xc27a
movl $0x275, %edx            # imm = 0x275
callq 0x31a0
jmp 0x4e38
jmp 0x4e38
jmp 0x4e38
movq %rax, %rbx
movq 0x8(%rsp), %rdi
addq $-0x18, %rdi
leaq 0x10(%rsp), %rsi
callq 0x3170
movq %rbx, %rdi
callq 0x3410