// File: SMT-COMP[P]scrambler/scrambler.cpp
// Function: main
int main(int argc, char **argv)
{
    annotation_mode keep_annotations = all;

    bool create_core = false;
    std::string core_file;

    set_seed(time(0));

    for (int i = 1; i < argc; ) {
        if (strcmp(argv[i], "-seed") == 0 && i+1 < argc) {
            std::istringstream s(argv[i+1]);
            int x;
            if (s >> x && x >= 0) {
                if (x > 0) {
                    set_seed(x);
                } else {
                    no_scramble = true;
                }
            } else {
                std::cerr << "Invalid value for -seed: " << argv[i+1] << std::endl;
                return 1;
            }
            i += 2;
        } else if (strcmp(argv[i], "-term_annot") == 0 && i+1 < argc) {
            if (strcmp(argv[i+1], "true") == 0) {
                keep_annotations = all;
            } else if (strcmp(argv[i+1], "pattern") == 0) {
                keep_annotations = pattern;
            } else if (strcmp(argv[i+1], "false") == 0) {
                keep_annotations = none;
            } else {
                usage(argv[0]);
            }
            i += 2;
        } else if (strcmp(argv[i], "-core") == 0 && i+1 < argc) {
            create_core = true;
            core_file = argv[i+1];
            i += 2;
        } else if (strcmp(argv[i], "-incremental") == 0 && i + 1 < argc) {
            if (strcmp(argv[i + 1], "true") == 0) {
                gen_incremental = true;
            } else if (strcmp(argv[i + 1], "false") == 0) {
                gen_incremental = false;
            } else {
                usage(argv[0]);
            }
            i += 2;
        } else if (strcmp(argv[i], "-gen-unsat-core") == 0 && i + 1 < argc) {
            if (strcmp(argv[i + 1], "true") == 0) {
                gen_ucore = true;
            } else if (strcmp(argv[i + 1], "false") == 0) {
                gen_ucore = false;
            } else {
                usage(argv[0]);
            }
            i += 2;
        } else if (strcmp(argv[i], "-gen-model-val") == 0 && i + 1 < argc) {
            if (strcmp(argv[i + 1], "true") == 0) {
                gen_mval = true;
            } else if (strcmp(argv[i + 1], "false") == 0) {
                gen_mval = false;
            } else {
                usage(argv[0]);
            }
            i += 2;
        } else if (strcmp(argv[i], "-gen-proof") == 0 && i + 1 < argc) {
            if (strcmp(argv[i + 1], "true") == 0) {
                gen_proof = true;
            } else if (strcmp(argv[i + 1], "false") == 0) {
                gen_proof = false;
            } else {
                usage(argv[0]);
            }
            i += 2;
        } else if (strcmp(argv[i], "-support-non-smtcomp") == 0 &&
                   i + 1 < argc) {
            if (strcmp(argv[i + 1], "true") == 0) {
                support_non_smtcomp = true;
            } else if (strcmp(argv[i + 1], "false") == 0) {
                support_non_smtcomp = false;
            } else {
                usage(argv[0]);
            }
            i += 2;
        } else if (strcmp(argv[i], "-support-z3") == 0 && i + 1 < argc) {
            if (strcmp(argv[i + 1], "true") == 0) {
                support_z3 = true;
            } else if (strcmp(argv[i + 1], "false") == 0) {
                support_z3 = false;
            } else {
                usage(argv[0]);
            }
            i += 2;
        } else if (strcmp(argv[i], "-count-asserts") == 0 && i + 1 < argc) {
            if (strcmp(argv[i + 1], "true") == 0) {
                count_asrts = true;
            } else if (strcmp(argv[i + 1], "false") == 0) {
                count_asrts = false;
            } else {
                usage(argv[0]);
            }
            i += 2;
        } else {
            usage(argv[0]);
        }
    }

    StringSet core_names;
    if (create_core) {
        std::ifstream src(core_file.c_str());
        if (!parse_core(src, core_names)) {
            std::cerr << "ERROR parsing core names from " << core_file << std::endl;
            return 1;
        }
    }

    if (!gen_incremental && !count_asrts) {
        // prepend SMT-LIB command that suppresses success for non-incremental
        // tracks
        std::cout << "(set-option :print-success false)" << std::endl;
    }

    if (gen_ucore) {
        // prepend SMT-LIB command that enables production of unsat cores
        std::cout << "(set-option :produce-unsat-cores true)" << std::endl;
    }

    if (gen_mval) {
        // prepend SMT-LIB command that enables production of models
        std::cout << "(set-option :produce-models true)" << std::endl;
    }

    if (gen_proof) {
        // prepend SMT-LIB command that enables production of models
        std::cout << "(set-option :produce-proofs true)" << std::endl;
    }

    if (count_asrts) {
        while (!std::cin.eof()) {
            yyparse();
        }
        int asrt_count = 0;
        for (std::vector<scrambler::node*>::iterator it = commands.begin(); it != commands.end(); ++it) {
            if ((*it)->symbol == "assert") {
                asrt_count++;
            }
        }
        std::cerr << "; Number of assertions: " << asrt_count << "\n";
        exit(0);
    }

    while (!std::cin.eof()) {
        yyparse();
        if (!commands.empty() && commands.back()->symbol == "check-sat") {
            if (create_core) {
                filter_named(core_names);
            }
            assert(!commands.empty());
            print_scrambled(std::cout, keep_annotations);
        }
    }

    if (create_core) {
        filter_named(core_names);
    }
    if (!commands.empty()) {
        print_scrambled(std::cout, keep_annotations);
    }

    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x4a0, %rsp            # imm = 0x4A0
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl $0x2, -0x14(%rbp)
movb $0x0, -0x15(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x3210
xorl %eax, %eax
movl %eax, %edi
callq 0x3220
movl %eax, %edi
callq 0x37a0
movl $0x1, -0x24(%rbp)
movl -0x24(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x6b57
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x135dc(%rip), %rsi     # 0x1995f
callq 0x3360
cmpl $0x0, %eax
jne 0x658a
movl -0x24(%rbp), %eax
addl $0x1, %eax
cmpl -0x8(%rbp), %eax
jge 0x658a
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq 0x8(%rax,%rcx,8), %rax
movq %rax, -0x420(%rbp)
leaq -0x199(%rbp), %rdi
movq %rdi, -0x418(%rbp)
callq 0x3470
movq -0x420(%rbp), %rsi
movq -0x418(%rbp), %rdx
leaq -0x198(%rbp), %rdi
callq 0x32b0
jmp 0x63e3
leaq -0x190(%rbp), %rdi
leaq -0x198(%rbp), %rsi
movl $0x8, %edx
callq 0x3490
jmp 0x63fd
leaq -0x198(%rbp), %rdi
callq 0x3518
leaq -0x199(%rbp), %rdi
callq 0x32a0
leaq -0x190(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x3180
movq %rax, -0x428(%rbp)
jmp 0x6431
movq -0x428(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x3300
movb %al, -0x429(%rbp)
jmp 0x644f
movb -0x429(%rbp), %al
testb $0x1, %al
jne 0x645e
jmp 0x64f0
cmpl $0x0, -0x1b0(%rbp)
jl 0x64f0
cmpl $0x0, -0x1b0(%rbp)
jle 0x64e7
movl -0x1b0(%rbp), %edi
callq 0x37a0
jmp 0x64ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a8(%rbp)
movl %eax, -0x1ac(%rbp)
jmp 0x64b3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a8(%rbp)
movl %eax, -0x1ac(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x3518
leaq -0x199(%rbp), %rdi
callq 0x32a0
jmp 0x6ff6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a8(%rbp)
movl %eax, -0x1ac(%rbp)
leaq -0x190(%rbp), %rdi
callq 0x3250
jmp 0x6ff6
movb $0x1, 0x1fe02(%rip)     # 0x262f0
jmp 0x6556
movq 0x1faf9(%rip), %rdi     # 0x25ff0
leaq 0x13467(%rip), %rsi     # 0x19965
callq 0x3260
movq %rax, -0x438(%rbp)
jmp 0x650c
movq -0x438(%rbp), %rdi
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq 0x8(%rax,%rcx,8), %rsi
callq 0x3260
movq %rax, -0x440(%rbp)
jmp 0x652e
movq -0x440(%rbp), %rdi
movq 0x1fa64(%rip), %rsi     # 0x25fa0
callq 0x3280
jmp 0x6543
movl $0x1, -0x4(%rbp)
movl $0x1, -0x1b4(%rbp)
jmp 0x6569
movl -0x24(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x24(%rbp)
movl $0x0, -0x1b4(%rbp)
leaq -0x190(%rbp), %rdi
callq 0x3250
movl -0x1b4(%rbp), %eax
testl %eax, %eax
jne 0x6fe1
jmp 0x6585
jmp 0x6b52
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x133e2(%rip), %rsi     # 0x1997f
callq 0x3360
cmpl $0x0, %eax
jne 0x6677
movl -0x24(%rbp), %eax
addl $0x1, %eax
cmpl -0x8(%rbp), %eax
jge 0x6677
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x133b9(%rip), %rsi     # 0x1998b
callq 0x3360
cmpl $0x0, %eax
jne 0x65e8
movl $0x2, -0x14(%rbp)
jmp 0x6669
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x134ff(%rip), %rsi     # 0x19aff
callq 0x3360
cmpl $0x0, %eax
jne 0x6613
movl $0x1, -0x14(%rbp)
jmp 0x6667
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x13365(%rip), %rsi     # 0x19990
callq 0x3360
cmpl $0x0, %eax
jne 0x663e
movl $0x0, -0x14(%rbp)
jmp 0x6665
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0x6080
jmp 0x664c
jmp 0x6665
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a8(%rbp)
movl %eax, -0x1ac(%rbp)
jmp 0x6ff6
jmp 0x6667
jmp 0x6669
movl -0x24(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x24(%rbp)
jmp 0x6b50
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x13323(%rip), %rsi     # 0x199ad
callq 0x3360
cmpl $0x0, %eax
jne 0x66c9
movl -0x24(%rbp), %eax
addl $0x1, %eax
cmpl -0x8(%rbp), %eax
jge 0x66c9
movb $0x1, -0x15(%rbp)
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq 0x8(%rax,%rcx,8), %rsi
leaq -0x20(%rbp), %rdi
callq 0x3380
jmp 0x66bb
movl -0x24(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x24(%rbp)
jmp 0x6b4e
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x132ba(%rip), %rsi     # 0x19996
callq 0x3360
cmpl $0x0, %eax
jne 0x676b
movl -0x24(%rbp), %eax
addl $0x1, %eax
cmpl -0x8(%rbp), %eax
jge 0x676b
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x1327e(%rip), %rsi     # 0x1998b
callq 0x3360
cmpl $0x0, %eax
jne 0x6720
movb $0x1, 0x1fbd3(%rip)     # 0x262f1
jmp 0x675d
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x13258(%rip), %rsi     # 0x19990
callq 0x3360
cmpl $0x0, %eax
jne 0x674b
movb $0x0, 0x1fba8(%rip)     # 0x262f1
jmp 0x675b
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0x6080
jmp 0x6759
jmp 0x675b
jmp 0x675d
movl -0x24(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x24(%rbp)
jmp 0x6b4c
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x13225(%rip), %rsi     # 0x199a3
callq 0x3360
cmpl $0x0, %eax
jne 0x680d
movl -0x24(%rbp), %eax
addl $0x1, %eax
cmpl -0x8(%rbp), %eax
jge 0x680d
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x131dc(%rip), %rsi     # 0x1998b
callq 0x3360
cmpl $0x0, %eax
jne 0x67c2
movb $0x1, 0x1fb32(%rip)     # 0x262f2
jmp 0x67ff
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x131b6(%rip), %rsi     # 0x19990
callq 0x3360
cmpl $0x0, %eax
jne 0x67ed
movb $0x0, 0x1fb07(%rip)     # 0x262f2
jmp 0x67fd
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0x6080
jmp 0x67fb
jmp 0x67fd
jmp 0x67ff
movl -0x24(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x24(%rbp)
jmp 0x6b4a
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x13193(%rip), %rsi     # 0x199b3
callq 0x3360
cmpl $0x0, %eax
jne 0x68af
movl -0x24(%rbp), %eax
addl $0x1, %eax
cmpl -0x8(%rbp), %eax
jge 0x68af
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x1313a(%rip), %rsi     # 0x1998b
callq 0x3360
cmpl $0x0, %eax
jne 0x6864
movb $0x1, 0x1fa91(%rip)     # 0x262f3
jmp 0x68a1
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x13114(%rip), %rsi     # 0x19990
callq 0x3360
cmpl $0x0, %eax
jne 0x688f
movb $0x0, 0x1fa66(%rip)     # 0x262f3
jmp 0x689f
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0x6080
jmp 0x689d
jmp 0x689f
jmp 0x68a1
movl -0x24(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x24(%rbp)
jmp 0x6b48
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x13100(%rip), %rsi     # 0x199c2
callq 0x3360
cmpl $0x0, %eax
jne 0x6951
movl -0x24(%rbp), %eax
addl $0x1, %eax
cmpl -0x8(%rbp), %eax
jge 0x6951
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x13098(%rip), %rsi     # 0x1998b
callq 0x3360
cmpl $0x0, %eax
jne 0x6906
movb $0x1, 0x1f9f0(%rip)     # 0x262f4
jmp 0x6943
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x13072(%rip), %rsi     # 0x19990
callq 0x3360
cmpl $0x0, %eax
jne 0x6931
movb $0x0, 0x1f9c5(%rip)     # 0x262f4
jmp 0x6941
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0x6080
jmp 0x693f
jmp 0x6941
jmp 0x6943
movl -0x24(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x24(%rbp)
jmp 0x6b46
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x13069(%rip), %rsi     # 0x199cd
callq 0x3360
cmpl $0x0, %eax
jne 0x69f3
movl -0x24(%rbp), %eax
addl $0x1, %eax
cmpl -0x8(%rbp), %eax
jge 0x69f3
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x12ff6(%rip), %rsi     # 0x1998b
callq 0x3360
cmpl $0x0, %eax
jne 0x69a8
movb $0x1, 0x1f94f(%rip)     # 0x262f5
jmp 0x69e5
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x12fd0(%rip), %rsi     # 0x19990
callq 0x3360
cmpl $0x0, %eax
jne 0x69d3
movb $0x0, 0x1f924(%rip)     # 0x262f5
jmp 0x69e3
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0x6080
jmp 0x69e1
jmp 0x69e3
jmp 0x69e5
movl -0x24(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x24(%rbp)
jmp 0x6b44
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x12fdc(%rip), %rsi     # 0x199e2
callq 0x3360
cmpl $0x0, %eax
jne 0x6a95
movl -0x24(%rbp), %eax
addl $0x1, %eax
cmpl -0x8(%rbp), %eax
jge 0x6a95
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x12f54(%rip), %rsi     # 0x1998b
callq 0x3360
cmpl $0x0, %eax
jne 0x6a4a
movb $0x1, 0x1f8ae(%rip)     # 0x262f6
jmp 0x6a87
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x12f2e(%rip), %rsi     # 0x19990
callq 0x3360
cmpl $0x0, %eax
jne 0x6a75
movb $0x0, 0x1f883(%rip)     # 0x262f6
jmp 0x6a85
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0x6080
jmp 0x6a83
jmp 0x6a85
jmp 0x6a87
movl -0x24(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x24(%rbp)
jmp 0x6b42
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x12f46(%rip), %rsi     # 0x199ee
callq 0x3360
cmpl $0x0, %eax
jne 0x6b30
movl -0x24(%rbp), %eax
addl $0x1, %eax
cmpl -0x8(%rbp), %eax
jge 0x6b30
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x12eb6(%rip), %rsi     # 0x1998b
callq 0x3360
cmpl $0x0, %eax
jne 0x6ae8
movb $0x1, 0x1f811(%rip)     # 0x262f7
jmp 0x6b25
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x12e90(%rip), %rsi     # 0x19990
callq 0x3360
cmpl $0x0, %eax
jne 0x6b13
movb $0x0, 0x1f7e6(%rip)     # 0x262f7
jmp 0x6b23
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0x6080
jmp 0x6b21
jmp 0x6b23
jmp 0x6b25
movl -0x24(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x24(%rbp)
jmp 0x6b40
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0x6080
jmp 0x6b3e
jmp 0x6b40
jmp 0x6b42
jmp 0x6b44
jmp 0x6b46
jmp 0x6b48
jmp 0x6b4a
jmp 0x6b4c
jmp 0x6b4e
jmp 0x6b50
jmp 0x6b52
jmp 0x6364
leaq -0x1f0(%rbp), %rdi
callq 0x7ca0
testb $0x1, -0x15(%rbp)
je 0x6c76
leaq -0x20(%rbp), %rdi
callq 0x3340
movq %rax, %rsi
leaq -0x3f8(%rbp), %rdi
movl $0x8, %edx
callq 0x34a0
jmp 0x6b8c
leaq -0x3f8(%rbp), %rdi
leaq -0x1f0(%rbp), %rsi
callq 0x56e0
movb %al, -0x441(%rbp)
jmp 0x6ba7
movb -0x441(%rbp), %al
testb $0x1, %al
jne 0x6c4e
jmp 0x6bb7
movq 0x1f432(%rip), %rdi     # 0x25ff0
leaq 0x12e38(%rip), %rsi     # 0x199fd
callq 0x3260
movq %rax, -0x450(%rbp)
jmp 0x6bd3
movq -0x450(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x3310
movq %rax, -0x458(%rbp)
jmp 0x6bec
movq -0x458(%rbp), %rdi
movq 0x1f3a6(%rip), %rsi     # 0x25fa0
callq 0x3280
jmp 0x6c01
movl $0x1, -0x4(%rbp)
movl $0x1, -0x1b4(%rbp)
jmp 0x6c58
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a8(%rbp)
movl %eax, -0x1ac(%rbp)
jmp 0x6fd3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a8(%rbp)
movl %eax, -0x1ac(%rbp)
leaq -0x3f8(%rbp), %rdi
callq 0x30a0
jmp 0x6fd3
movl $0x0, -0x1b4(%rbp)
leaq -0x3f8(%rbp), %rdi
callq 0x30a0
movl -0x1b4(%rbp), %eax
testl %eax, %eax
jne 0x6fc5
jmp 0x6c74
jmp 0x6c76
testb $0x1, 0x1f674(%rip)     # 0x262f1
jne 0x6cbb
testb $0x1, 0x1f671(%rip)     # 0x262f7
jne 0x6cbb
movq 0x1f329(%rip), %rdi     # 0x25fb8
leaq 0x12d86(%rip), %rsi     # 0x19a1c
callq 0x3260
movq %rax, -0x460(%rbp)
jmp 0x6ca4
movq -0x460(%rbp), %rdi
movq 0x1f2ee(%rip), %rsi     # 0x25fa0
callq 0x3280
jmp 0x6cb9
jmp 0x6cbb
testb $0x1, 0x1f630(%rip)     # 0x262f2
je 0x6cf7
movq 0x1f2ed(%rip), %rdi     # 0x25fb8
leaq 0x12d6c(%rip), %rsi     # 0x19a3e
callq 0x3260
movq %rax, -0x468(%rbp)
jmp 0x6ce0
movq -0x468(%rbp), %rdi
movq 0x1f2b2(%rip), %rsi     # 0x25fa0
callq 0x3280
jmp 0x6cf5
jmp 0x6cf7
testb $0x1, 0x1f5f5(%rip)     # 0x262f3
je 0x6d33
movq 0x1f2b1(%rip), %rdi     # 0x25fb8
leaq 0x12d57(%rip), %rsi     # 0x19a65
callq 0x3260
movq %rax, -0x470(%rbp)
jmp 0x6d1c
movq -0x470(%rbp), %rdi
movq 0x1f276(%rip), %rsi     # 0x25fa0
callq 0x3280
jmp 0x6d31
jmp 0x6d33
testb $0x1, 0x1f5ba(%rip)     # 0x262f4
je 0x6d6f
movq 0x1f275(%rip), %rdi     # 0x25fb8
leaq 0x12d3d(%rip), %rsi     # 0x19a87
callq 0x3260
movq %rax, -0x478(%rbp)
jmp 0x6d58
movq -0x478(%rbp), %rdi
movq 0x1f23a(%rip), %rsi     # 0x25fa0
callq 0x3280
jmp 0x6d6d
jmp 0x6d6f
testb $0x1, 0x1f581(%rip)     # 0x262f7
je 0x6e9d
jmp 0x6d7e
movq 0x1f253(%rip), %rdi     # 0x25fd8
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x34b0
movb %al, -0x479(%rbp)
jmp 0x6d9c
movb -0x479(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x6daa
jmp 0x6db3
callq 0x10cc0
jmp 0x6db1
jmp 0x6d7e
movl $0x0, -0x3fc(%rbp)
leaq 0x1f57c(%rip), %rdi     # 0x26340
callq 0x7cc0
movq %rax, -0x408(%rbp)
leaq 0x1f569(%rip), %rdi     # 0x26340
callq 0x71c0
movq %rax, -0x410(%rbp)
leaq -0x408(%rbp), %rdi
leaq -0x410(%rbp), %rsi
callq 0x7cf0
testb $0x1, %al
jne 0x6dfc
jmp 0x6e4a
leaq -0x408(%rbp), %rdi
callq 0x7d30
movq (%rax), %rdi
leaq 0x1440e(%rip), %rsi     # 0x1b220
callq 0x74e0
movb %al, -0x47a(%rbp)
jmp 0x6e1f
movb -0x47a(%rbp), %al
testb $0x1, %al
jne 0x6e2b
jmp 0x6e3a
movl -0x3fc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3fc(%rbp)
jmp 0x6e3c
leaq -0x408(%rbp), %rdi
callq 0x7d50
jmp 0x6dd0
movq 0x1f19f(%rip), %rdi     # 0x25ff0
leaq 0x12c51(%rip), %rsi     # 0x19aa9
callq 0x3260
movq %rax, -0x488(%rbp)
jmp 0x6e66
movq -0x488(%rbp), %rdi
movl -0x3fc(%rbp), %esi
callq 0x3420
movq %rax, -0x490(%rbp)
jmp 0x6e81
movq -0x490(%rbp), %rdi
leaq 0x12ace(%rip), %rsi     # 0x1995d
callq 0x3260
jmp 0x6e96
xorl %edi, %edi
callq 0x32f0
jmp 0x6e9f
movq 0x1f132(%rip), %rdi     # 0x25fd8
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x34b0
movb %al, -0x491(%rbp)
jmp 0x6ebd
movb -0x491(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x6ece
jmp 0x6f7b
callq 0x10cc0
jmp 0x6ed5
leaq 0x1f464(%rip), %rdi     # 0x26340
callq 0x73b0
testb $0x1, %al
jne 0x6f76
leaq 0x1f450(%rip), %rdi     # 0x26340
callq 0x7ab0
movq (%rax), %rdi
leaq 0x123ba(%rip), %rsi     # 0x192b9
callq 0x74e0
movb %al, -0x492(%rbp)
jmp 0x6f0c
movb -0x492(%rbp), %al
testb $0x1, %al
jne 0x6f18
jmp 0x6f76
testb $0x1, -0x15(%rbp)
je 0x6f2e
leaq -0x1f0(%rbp), %rdi
callq 0x5ed0
jmp 0x6f2c
jmp 0x6f2e
leaq 0x1f40b(%rip), %rdi     # 0x26340
callq 0x73b0
xorb $-0x1, %al
testb $0x1, %al
jne 0x6f42
jmp 0x6f44
jmp 0x6f63
leaq 0x12b77(%rip), %rdi     # 0x19ac2
leaq 0x120c3(%rip), %rsi     # 0x19015
movl $0x445, %edx            # imm = 0x445
leaq 0x12b76(%rip), %rcx     # 0x19ad4
callq 0x31a0
movl -0x14(%rbp), %esi
movq 0x1f04b(%rip), %rdi     # 0x25fb8
callq 0x5280
jmp 0x6f74
jmp 0x6f76
jmp 0x6e9f
testb $0x1, -0x15(%rbp)
je 0x6f91
leaq -0x1f0(%rbp), %rdi
callq 0x5ed0
jmp 0x6f8f
jmp 0x6f91
leaq 0x1f3a8(%rip), %rdi     # 0x26340
callq 0x73b0
testb $0x1, %al
jne 0x6fb4
movl -0x14(%rbp), %esi
movq 0x1f00d(%rip), %rdi     # 0x25fb8
callq 0x5280
jmp 0x6fb2
jmp 0x6fb4
movl $0x0, -0x4(%rbp)
movl $0x1, -0x1b4(%rbp)
leaq -0x1f0(%rbp), %rdi
callq 0x7d70
jmp 0x6fe1
leaq -0x1f0(%rbp), %rdi
callq 0x7d70
jmp 0x6ff6
leaq -0x20(%rbp), %rdi
callq 0x3518
movl -0x4(%rbp), %eax
addq $0x4a0, %rsp            # imm = 0x4A0
popq %rbp
retq
leaq -0x20(%rbp), %rdi
callq 0x3518
movq -0x1a8(%rbp), %rdi
callq 0x3460
nopl (%rax,%rax)