// File: 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
movq %rsp, %rbp
subq $0xc0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq -0x10(%rbp), %rdi
leaq 0x144fd(%rip), %rsi     # 0x192ae
callq 0x74e0
testb $0x1, %al
jne 0x4dbc
jmp 0x4df9
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
callq 0x51a0
testb $0x1, %al
jne 0x4df9
movq -0x8(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x7510
movq -0x58(%rbp), %rdi
movq (%rax), %rsi
movl -0x14(%rbp), %edx
callq 0x4d90
jmp 0x5185
movq -0x10(%rbp), %rax
testb $0x1, 0x28(%rax)
je 0x4e11
movq -0x8(%rbp), %rdi
movl $0x28, %esi
callq 0x32c0
movq -0x10(%rbp), %rdi
callq 0x34f0
testb $0x1, %al
jne 0x4f16
testb $0x1, 0x214c7(%rip)     # 0x262f0
jne 0x4e35
movq -0x10(%rbp), %rax
testb $0x1, 0x8(%rax)
jne 0x4e47
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x3310
jmp 0x4f14
movq -0x10(%rbp), %rdi
callq 0x3340
movq %rax, %rdi
callq 0x3b10
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
jne 0x4e75
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x3310
jmp 0x4f12
movq -0x20(%rbp), %rax
movq %rax, -0x60(%rbp)
leaq 0x214dc(%rip), %rdi     # 0x26360
callq 0x75b0
movq %rax, %rcx
movq -0x60(%rbp), %rax
cmpq %rcx, %rax
jae 0x4e97
jmp 0x4eb6
leaq 0x143a1(%rip), %rdi     # 0x1923f
leaq 0x14170(%rip), %rsi     # 0x19015
movl $0x275, %edx            # imm = 0x275
leaq 0x143b1(%rip), %rcx     # 0x19262
callq 0x31a0
movq -0x8(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x20(%rbp), %rsi
leaq 0x21497(%rip), %rdi     # 0x26360
callq 0x75d0
movq (%rax), %rsi
leaq -0x28(%rbp), %rdi
movq %rdi, -0x68(%rbp)
callq 0x4c00
movq -0x70(%rbp), %rdi
movq -0x68(%rbp), %rsi
callq 0x3310
jmp 0x4eed
leaq -0x28(%rbp), %rdi
callq 0x3518
jmp 0x4f12
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x3518
jmp 0x518e
jmp 0x4f14
jmp 0x4f16
leaq -0x40(%rbp), %rdi
callq 0x3210
testb $0x1, 0x213cc(%rip)     # 0x262f2
je 0x4f83
movq -0x10(%rbp), %rdi
leaq 0x162ed(%rip), %rsi     # 0x1b220
callq 0x74e0
movb %al, -0x71(%rbp)
jmp 0x4f3d
movb -0x71(%rbp), %al
testb $0x1, %al
jne 0x4f46
jmp 0x4f83
leaq -0x48(%rbp), %rdi
callq 0x4cc0
jmp 0x4f51
leaq -0x40(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x31b0
leaq -0x48(%rbp), %rdi
callq 0x3518
jmp 0x4f83
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x3518
jmp 0x518e
leaq -0x40(%rbp), %rdi
callq 0x34f0
testb $0x1, %al
jne 0x4fa4
movq -0x8(%rbp), %rdi
leaq 0x14311(%rip), %rsi     # 0x192ac
callq 0x3260
jmp 0x4fa2
jmp 0x4fa4
movq $0x0, -0x50(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
callq 0x7430
movq %rax, %rcx
movq -0x80(%rbp), %rax
cmpq %rcx, %rax
jae 0x5036
cmpq $0x0, -0x50(%rbp)
ja 0x4fe1
movq -0x10(%rbp), %rdi
callq 0x34f0
testb $0x1, %al
jne 0x4ff3
movq -0x8(%rbp), %rdi
movl $0x20, %esi
callq 0x32c0
jmp 0x4ff1
jmp 0x4ff3
movq -0x8(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
movq -0x50(%rbp), %rsi
callq 0x7510
movq -0x88(%rbp), %rdi
movq (%rax), %rsi
movl -0x14(%rbp), %edx
callq 0x4d90
jmp 0x5023
jmp 0x5025
movq -0x50(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x50(%rbp)
jmp 0x4fac
leaq -0x40(%rbp), %rdi
callq 0x34f0
testb $0x1, %al
jne 0x508c
movq -0x8(%rbp), %rdi
leaq 0x14262(%rip), %rsi     # 0x192b0
callq 0x3260
movq %rax, -0x90(%rbp)
jmp 0x505c
movq -0x90(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x3310
movq %rax, -0x98(%rbp)
jmp 0x5075
movq -0x98(%rbp), %rdi
leaq 0x141dd(%rip), %rsi     # 0x19260
callq 0x3260
jmp 0x508a
jmp 0x508c
movq -0x10(%rbp), %rax
testb $0x1, 0x28(%rax)
je 0x50a8
movq -0x8(%rbp), %rdi
movl $0x29, %esi
callq 0x32c0
jmp 0x50a6
jmp 0x50a8
movq -0x10(%rbp), %rdi
leaq 0x14206(%rip), %rsi     # 0x192b9
callq 0x74e0
movb %al, -0x99(%rbp)
jmp 0x50c0
movb -0x99(%rbp), %al
testb $0x1, %al
jne 0x50cf
jmp 0x517c
testb $0x1, 0x2121c(%rip)     # 0x262f2
je 0x5108
movq -0x8(%rbp), %rdi
movq 0x20ebd(%rip), %rsi     # 0x25fa0
callq 0x3280
movq %rax, -0xa8(%rbp)
jmp 0x50f1
movq -0xa8(%rbp), %rdi
leaq 0x141c4(%rip), %rsi     # 0x192c3
callq 0x3260
jmp 0x5106
jmp 0x5108
testb $0x1, 0x211e4(%rip)     # 0x262f3
je 0x5141
movq -0x8(%rbp), %rdi
movq 0x20e84(%rip), %rsi     # 0x25fa0
callq 0x3280
movq %rax, -0xb0(%rbp)
jmp 0x512a
movq -0xb0(%rbp), %rdi
leaq 0x1419c(%rip), %rsi     # 0x192d4
callq 0x3260
jmp 0x513f
jmp 0x5141
testb $0x1, 0x211ac(%rip)     # 0x262f4
je 0x517a
movq -0x8(%rbp), %rdi
movq 0x20e4b(%rip), %rsi     # 0x25fa0
callq 0x3280
movq %rax, -0xb8(%rbp)
jmp 0x5163
movq -0xb8(%rbp), %rdi
leaq 0x1416f(%rip), %rsi     # 0x192e0
callq 0x3260
jmp 0x5178
jmp 0x517a
jmp 0x517c
leaq -0x40(%rbp), %rdi
callq 0x3518
addq $0xc0, %rsp
popq %rbp
retq
movq -0x30(%rbp), %rdi
callq 0x3460
nopw (%rax,%rax)