// File: jovermann[P]streplace/src/streplace.cpp
// Function: main
int main(int argc, char* argv[])
{
    // Run unit tests and exit if enabled at compile time.
    UNIT_TEST_RUN();

    // Command line options.
    ut1::CommandLineParser cl("streplace", "Replace strings in files, filenames and symbolic links, in place, recursively.\n"
                                           "\n"
                                           "Usage: $programName [OPTIONS, FILES, DIRS and RULES] [--] [FILES and DIRS]\n"
                                           "\n"
                                           "This program substitutes strings in files, filenames and symbolic links according to rules:\n"
                                           "- A rule is of the from FOO=BAR which replaces FOO by BAR. FOO is a regular expression by default (unless -x is specified).\n"
                                           "- Use C escape sequences like \\n \\t \\xff. Use \\\\ to get a verbatim backslash. Note that you will need to protect backslashes from the shell by using single quotes or by duplicating backslashes.\n"
                                           "- Use \\= to get a verbatim =.\n"
                                           "- Use 'IMG([0-9]*).jpeg=pic$1.jpg' to reuse subexpressions of regular expressions ($& for the whole match, $n for subexpressions)."
                                           "\n",
        "\n"
        "$programName version $version *** Copyright (c) 2021-2022 Johannes Overmann *** https://github.com/jovermann/streplace",
        "0.10.2");

    cl.addHeader("\nFile options:\n");
    cl.addOption('r', "recursive", "Recursively process directories.");
    cl.addOption('l', "follow-links", "Follow symbolic links.");
    cl.addOption(' ', "all", "Process all files and directories. By default '.git' directories are skipped.");

    cl.addHeader("\nMatching options:\n");
    cl.addOption('i', "ignore-case", "Ignore case.");
    cl.addOption('x', "no-regex", "Match the left side of each rule as a simple string, not as a regex (substring search, useful with binary files).");
    cl.addOption('w', "whole-words", "Match only whole words. A word is an alphanumeric seuqnece with underscores. If the match begins/ends with a non-word char then this is always considered to be a word boundary, e.g. 'foo;' matches '::foo;' but not 'barfoo;'.");
    cl.addOption(' ', "equals", "Use STR instead of \"=\" as the rule lhs/rhs-separator, e.g. fooSTRbar. This may be one or more chars long. Example: --equals==== allows rules to have the form \"int a = 0;===unsigned a = 0;\"", "STR", "=");
    cl.addOption(' ', "dollar", "Use STR instead of \"$\" in substring references in the replacement string, e.g. STR&, STR1, STR12. This may be one or more chars long. Example: --dollar=SUB for \"0x([0-9A-Za-z]+)=$SUB1\"", "STR", "$");

    cl.addHeader("\nRenaming options:\n");
    cl.addOption('N', "rename-only", "Rename files and dirs. Do not modify files contents.");
    cl.addOption('A', "rename", "Rename files and dirs and modify files contents.");
    cl.addOption('s', "modify-symlinks", "Modify the path symlinks point to. Do not modify files contents. Do not rename. -N, -A and -s are mutually exclusive.");

    cl.addHeader("\nVerbose / common options:\n");
    cl.addOption('v', "verbose", "Increase verbosity. Specify multiple times to be more verbose.");
    cl.addOption('d', "dummy-mode", "Do not write/change anything.").addAlias('0');
    cl.addOption('P', "preview", "Do not write/change anything, but print matching lines of matching files with context to stdout and highlight replacements.");
    cl.addOption(' ', "context", "set number of context lines for --preview to N (use +N to hide line separator, use -1 to display the whole file) (range=[-1..], default=1).", "N", "1");

    // Parse command line options.
    cl.parse(argc, argv);

    try
    {
        // Steplace instance.
        Streplace streplace(cl);

        // Parse non-option arguments (paths and rules).
        std::vector<std::filesystem::directory_entry> paths;
        bool                                          allowRules = true;
        for (const std::string& arg: cl.getArgs())
        {
            if (arg.empty())
            {
                cl.printMessage("Ignoring empty argument.");
                continue;
            }
            if (allowRules && ut1::contains(arg, cl.getStr("equals")))
            {
                streplace.addRule(arg);
            }
            else if (allowRules && (arg == "--"))
            {
                allowRules = false;
            }
            else if (std::filesystem::exists(arg))
            {
                paths.emplace_back(arg);
            }
            else
            {
                cl.error("'" + arg + "': No such file or directory.");
            }
        }

        // Print rules.
        if (cl.getCount("verbose") >= 2)
        {
            streplace.printRules();
        }

        // Process files and directories.
        for (std::filesystem::directory_entry path: paths)
        {
            streplace.processDirectoryEntry(path);
        }

        // Print stats.
        if (cl("verbose"))
        {
            streplace.printStats();
        }
    }
    catch (const std::exception& e)
    {
        cl.error(e.what());
    }

    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1080, %rsp           # imm = 0x1080
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
jmp 0x14b7b
leaq -0x149(%rbp), %rdi
movq %rdi, -0xdf8(%rbp)
callq 0x7a50
movq -0xdf8(%rbp), %rdx
leaq 0x36122(%rip), %rsi     # 0x4acbe
leaq -0x148(%rbp), %rdi
callq 0xb310
jmp 0x14baa
leaq -0x181(%rbp), %rdi
movq %rdi, -0xe00(%rbp)
callq 0x7a50
movq -0xe00(%rbp), %rdx
leaq 0x35dad(%rip), %rsi     # 0x4a978
leaq -0x180(%rbp), %rdi
callq 0xb310
jmp 0x14bd9
leaq -0x1a9(%rbp), %rdi
movq %rdi, -0xe08(%rbp)
callq 0x7a50
movq -0xe08(%rbp), %rdx
leaq 0x36056(%rip), %rsi     # 0x4ac50
leaq -0x1a8(%rbp), %rdi
callq 0xb310
jmp 0x14c08
leaq -0x1d1(%rbp), %rdi
movq %rdi, -0xe10(%rbp)
callq 0x7a50
movq -0xe10(%rbp), %rdx
leaq 0x3609f(%rip), %rsi     # 0x4acc8
leaq -0x1d0(%rbp), %rdi
callq 0xb310
jmp 0x14c37
leaq -0x128(%rbp), %rdi
leaq -0x148(%rbp), %rsi
leaq -0x180(%rbp), %rdx
leaq -0x1a8(%rbp), %rcx
leaq -0x1d0(%rbp), %r8
callq 0x7e80
jmp 0x14c61
leaq -0x1d0(%rbp), %rdi
callq 0x73c0
leaq -0x1d1(%rbp), %rdi
callq 0x7670
leaq -0x1a8(%rbp), %rdi
callq 0x73c0
leaq -0x1a9(%rbp), %rdi
callq 0x7670
leaq -0x180(%rbp), %rdi
callq 0x73c0
leaq -0x181(%rbp), %rdi
callq 0x7670
leaq -0x148(%rbp), %rdi
callq 0x73c0
leaq -0x149(%rbp), %rdi
callq 0x7670
leaq -0x1f9(%rbp), %rdi
movq %rdi, -0xe18(%rbp)
callq 0x7a50
movq -0xe18(%rbp), %rdx
leaq 0x35fed(%rip), %rsi     # 0x4accf
leaq -0x1f8(%rbp), %rdi
callq 0xb310
jmp 0x14cf0
leaq -0x128(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
callq 0x87a0
jmp 0x14d05
leaq -0x1f8(%rbp), %rdi
callq 0x73c0
leaq -0x1f9(%rbp), %rdi
callq 0x7670
leaq -0x221(%rbp), %rdi
movq %rdi, -0xe20(%rbp)
callq 0x7a50
movq -0xe20(%rbp), %rdx
leaq 0x35fa1(%rip), %rsi     # 0x4acdf
leaq -0x220(%rbp), %rdi
callq 0xb310
jmp 0x14d4c
leaq -0x249(%rbp), %rdi
movq %rdi, -0xe28(%rbp)
callq 0x7a50
movq -0xe28(%rbp), %rdx
leaq 0x35f7c(%rip), %rsi     # 0x4ace9
leaq -0x248(%rbp), %rdi
callq 0xb310
jmp 0x14d7b
leaq -0x270(%rbp), %rdi
movq %rdi, -0xe38(%rbp)
callq 0x7860
leaq -0x290(%rbp), %rdi
movq %rdi, -0xe30(%rbp)
callq 0x7860
movq -0xe38(%rbp), %r8
movq -0xe30(%rbp), %r9
leaq -0x128(%rbp), %rdi
movl $0x72, %esi
leaq -0x220(%rbp), %rdx
leaq -0x248(%rbp), %rcx
callq 0x8300
jmp 0x14dd0
leaq -0x290(%rbp), %rdi
callq 0x73c0
leaq -0x270(%rbp), %rdi
callq 0x73c0
leaq -0x248(%rbp), %rdi
callq 0x73c0
leaq -0x249(%rbp), %rdi
callq 0x7670
leaq -0x220(%rbp), %rdi
callq 0x73c0
leaq -0x221(%rbp), %rdi
callq 0x7670
leaq -0x2b1(%rbp), %rdi
movq %rdi, -0xe40(%rbp)
callq 0x7a50
movq -0xe40(%rbp), %rdx
leaq 0x35ed1(%rip), %rsi     # 0x4ad0a
leaq -0x2b0(%rbp), %rdi
callq 0xb310
jmp 0x14e47
leaq -0x2d9(%rbp), %rdi
movq %rdi, -0xe48(%rbp)
callq 0x7a50
movq -0xe48(%rbp), %rdx
leaq 0x35eaf(%rip), %rsi     # 0x4ad17
leaq -0x2d8(%rbp), %rdi
callq 0xb310
jmp 0x14e76
leaq -0x300(%rbp), %rdi
movq %rdi, -0xe58(%rbp)
callq 0x7860
leaq -0x320(%rbp), %rdi
movq %rdi, -0xe50(%rbp)
callq 0x7860
movq -0xe58(%rbp), %r8
movq -0xe50(%rbp), %r9
leaq -0x128(%rbp), %rdi
movl $0x6c, %esi
leaq -0x2b0(%rbp), %rdx
leaq -0x2d8(%rbp), %rcx
callq 0x8300
jmp 0x14ecb
leaq -0x320(%rbp), %rdi
callq 0x73c0
leaq -0x300(%rbp), %rdi
callq 0x73c0
leaq -0x2d8(%rbp), %rdi
callq 0x73c0
leaq -0x2d9(%rbp), %rdi
callq 0x7670
leaq -0x2b0(%rbp), %rdi
callq 0x73c0
leaq -0x2b1(%rbp), %rdi
callq 0x7670
leaq -0x341(%rbp), %rdi
movq %rdi, -0xe60(%rbp)
callq 0x7a50
movq -0xe60(%rbp), %rdx
leaq 0x35dfa(%rip), %rsi     # 0x4ad2e
leaq -0x340(%rbp), %rdi
callq 0xb310
jmp 0x14f42
leaq -0x369(%rbp), %rdi
movq %rdi, -0xe68(%rbp)
callq 0x7a50
movq -0xe68(%rbp), %rdx
leaq 0x35dcf(%rip), %rsi     # 0x4ad32
leaq -0x368(%rbp), %rdi
callq 0xb310
jmp 0x14f71
leaq -0x390(%rbp), %rdi
movq %rdi, -0xe78(%rbp)
callq 0x7860
leaq -0x3b0(%rbp), %rdi
movq %rdi, -0xe70(%rbp)
callq 0x7860
movq -0xe78(%rbp), %r8
movq -0xe70(%rbp), %r9
leaq -0x128(%rbp), %rdi
movl $0x20, %esi
leaq -0x340(%rbp), %rdx
leaq -0x368(%rbp), %rcx
callq 0x8300
jmp 0x14fc6
leaq -0x3b0(%rbp), %rdi
callq 0x73c0
leaq -0x390(%rbp), %rdi
callq 0x73c0
leaq -0x368(%rbp), %rdi
callq 0x73c0
leaq -0x369(%rbp), %rdi
callq 0x7670
leaq -0x340(%rbp), %rdi
callq 0x73c0
leaq -0x341(%rbp), %rdi
callq 0x7670
leaq -0x3d1(%rbp), %rdi
movq %rdi, -0xe80(%rbp)
callq 0x7a50
movq -0xe80(%rbp), %rdx
leaq 0x35d51(%rip), %rsi     # 0x4ad80
leaq -0x3d0(%rbp), %rdi
callq 0xb310
jmp 0x1503d
leaq -0x128(%rbp), %rdi
leaq -0x3d0(%rbp), %rsi
callq 0x87a0
jmp 0x15052
leaq -0x3d0(%rbp), %rdi
callq 0x73c0
leaq -0x3d1(%rbp), %rdi
callq 0x7670
leaq -0x3f9(%rbp), %rdi
movq %rdi, -0xe88(%rbp)
callq 0x7a50
movq -0xe88(%rbp), %rdx
leaq 0x35d09(%rip), %rsi     # 0x4ad94
leaq -0x3f8(%rbp), %rdi
callq 0xb310
jmp 0x15099
leaq -0x421(%rbp), %rdi
movq %rdi, -0xe90(%rbp)
callq 0x7a50
movq -0xe90(%rbp), %rdx
leaq 0x35ce6(%rip), %rsi     # 0x4ada0
leaq -0x420(%rbp), %rdi
callq 0xb310
jmp 0x150c8
leaq -0x448(%rbp), %rdi
movq %rdi, -0xea0(%rbp)
callq 0x7860
leaq -0x468(%rbp), %rdi
movq %rdi, -0xe98(%rbp)
callq 0x7860
movq -0xea0(%rbp), %r8
movq -0xe98(%rbp), %r9
leaq -0x128(%rbp), %rdi
movl $0x69, %esi
leaq -0x3f8(%rbp), %rdx
leaq -0x420(%rbp), %rcx
callq 0x8300
jmp 0x1511d
leaq -0x468(%rbp), %rdi
callq 0x73c0
leaq -0x448(%rbp), %rdi
callq 0x73c0
leaq -0x420(%rbp), %rdi
callq 0x73c0
leaq -0x421(%rbp), %rdi
callq 0x7670
leaq -0x3f8(%rbp), %rdi
callq 0x73c0
leaq -0x3f9(%rbp), %rdi
callq 0x7670
leaq -0x489(%rbp), %rdi
movq %rdi, -0xea8(%rbp)
callq 0x7a50
movq -0xea8(%rbp), %rdx
leaq 0x35c27(%rip), %rsi     # 0x4adad
leaq -0x488(%rbp), %rdi
callq 0xb310
jmp 0x15194
leaq -0x4b1(%rbp), %rdi
movq %rdi, -0xeb0(%rbp)
callq 0x7a50
movq -0xeb0(%rbp), %rdx
leaq 0x35c01(%rip), %rsi     # 0x4adb6
leaq -0x4b0(%rbp), %rdi
callq 0xb310
jmp 0x151c3
leaq -0x4d8(%rbp), %rdi
movq %rdi, -0xec0(%rbp)
callq 0x7860
leaq -0x4f8(%rbp), %rdi
movq %rdi, -0xeb8(%rbp)
callq 0x7860
movq -0xec0(%rbp), %r8
movq -0xeb8(%rbp), %r9
leaq -0x128(%rbp), %rdi
movl $0x78, %esi
leaq -0x488(%rbp), %rdx
leaq -0x4b0(%rbp), %rcx
callq 0x8300
jmp 0x15218
leaq -0x4f8(%rbp), %rdi
callq 0x73c0
leaq -0x4d8(%rbp), %rdi
callq 0x73c0
leaq -0x4b0(%rbp), %rdi
callq 0x73c0
leaq -0x4b1(%rbp), %rdi
callq 0x7670
leaq -0x488(%rbp), %rdi
callq 0x73c0
leaq -0x489(%rbp), %rdi
callq 0x7670
leaq -0x519(%rbp), %rdi
movq %rdi, -0xec8(%rbp)
callq 0x7a50
movq -0xec8(%rbp), %rdx
leaq 0x35ba7(%rip), %rsi     # 0x4ae28
leaq -0x518(%rbp), %rdi
callq 0xb310
jmp 0x1528f
leaq -0x541(%rbp), %rdi
movq %rdi, -0xed0(%rbp)
callq 0x7a50
movq -0xed0(%rbp), %rdx
leaq 0x35b84(%rip), %rsi     # 0x4ae34
leaq -0x540(%rbp), %rdi
callq 0xb310
jmp 0x152be
leaq -0x568(%rbp), %rdi
movq %rdi, -0xee0(%rbp)
callq 0x7860
leaq -0x588(%rbp), %rdi
movq %rdi, -0xed8(%rbp)
callq 0x7860
movq -0xee0(%rbp), %r8
movq -0xed8(%rbp), %r9
leaq -0x128(%rbp), %rdi
movl $0x77, %esi
leaq -0x518(%rbp), %rdx
leaq -0x540(%rbp), %rcx
callq 0x8300
jmp 0x15313
leaq -0x588(%rbp), %rdi
callq 0x73c0
leaq -0x568(%rbp), %rdi
callq 0x73c0
leaq -0x540(%rbp), %rdi
callq 0x73c0
leaq -0x541(%rbp), %rdi
callq 0x7670
leaq -0x518(%rbp), %rdi
callq 0x73c0
leaq -0x519(%rbp), %rdi
callq 0x7670
leaq -0x5a9(%rbp), %rdi
movq %rdi, -0xee8(%rbp)
callq 0x7a50
movq -0xee8(%rbp), %rdx
leaq 0x35b99(%rip), %rsi     # 0x4af15
leaq -0x5a8(%rbp), %rdi
callq 0xb310
jmp 0x1538a
leaq -0x5d1(%rbp), %rdi
movq %rdi, -0xef0(%rbp)
callq 0x7a50
movq -0xef0(%rbp), %rdx
leaq 0x35b71(%rip), %rsi     # 0x4af1c
leaq -0x5d0(%rbp), %rdi
callq 0xb310
jmp 0x153b9
leaq -0x5f9(%rbp), %rdi
movq %rdi, -0xef8(%rbp)
callq 0x7a50
movq -0xef8(%rbp), %rdx
leaq 0x35bff(%rip), %rsi     # 0x4afd9
leaq -0x5f8(%rbp), %rdi
callq 0xb310
jmp 0x153e8
leaq -0x621(%rbp), %rdi
movq %rdi, -0xf00(%rbp)
callq 0x7a50
movq -0xf00(%rbp), %rdx
leaq 0x34d74(%rip), %rsi     # 0x4a17d
leaq -0x620(%rbp), %rdi
callq 0xb310
jmp 0x15417
leaq -0x128(%rbp), %rdi
movl $0x20, %esi
leaq -0x5a8(%rbp), %rdx
leaq -0x5d0(%rbp), %rcx
leaq -0x5f8(%rbp), %r8
leaq -0x620(%rbp), %r9
callq 0x8300
jmp 0x15446
leaq -0x620(%rbp), %rdi
callq 0x73c0
leaq -0x621(%rbp), %rdi
callq 0x7670
leaq -0x5f8(%rbp), %rdi
callq 0x73c0
leaq -0x5f9(%rbp), %rdi
callq 0x7670
leaq -0x5d0(%rbp), %rdi
callq 0x73c0
leaq -0x5d1(%rbp), %rdi
callq 0x7670
leaq -0x5a8(%rbp), %rdi
callq 0x73c0
leaq -0x5a9(%rbp), %rdi
callq 0x7670
leaq -0x649(%rbp), %rdi
movq %rdi, -0xf08(%rbp)
callq 0x7a50
movq -0xf08(%rbp), %rdx
leaq 0x35b16(%rip), %rsi     # 0x4afdd
leaq -0x648(%rbp), %rdi
callq 0xb310
jmp 0x154d5
leaq -0x671(%rbp), %rdi
movq %rdi, -0xf10(%rbp)
callq 0x7a50
movq -0xf10(%rbp), %rdx
leaq 0x35aee(%rip), %rsi     # 0x4afe4
leaq -0x670(%rbp), %rdi
callq 0xb310
jmp 0x15504
leaq -0x699(%rbp), %rdi
movq %rdi, -0xf18(%rbp)
callq 0x7a50
movq -0xf18(%rbp), %rdx
leaq 0x35ab4(%rip), %rsi     # 0x4afd9
leaq -0x698(%rbp), %rdi
callq 0xb310
jmp 0x15533
leaq -0x6c1(%rbp), %rdi
movq %rdi, -0xf20(%rbp)
callq 0x7a50
movq -0xf20(%rbp), %rdx
leaq 0x36053(%rip), %rsi     # 0x4b5a7
leaq -0x6c0(%rbp), %rdi
callq 0xb310
jmp 0x15562
leaq -0x128(%rbp), %rdi
movl $0x20, %esi
leaq -0x648(%rbp), %rdx
leaq -0x670(%rbp), %rcx
leaq -0x698(%rbp), %r8
leaq -0x6c0(%rbp), %r9
callq 0x8300
jmp 0x15591
leaq -0x6c0(%rbp), %rdi
callq 0x73c0
leaq -0x6c1(%rbp), %rdi
callq 0x7670
leaq -0x698(%rbp), %rdi
callq 0x73c0
leaq -0x699(%rbp), %rdi
callq 0x7670
leaq -0x670(%rbp), %rdi
callq 0x73c0
leaq -0x671(%rbp), %rdi
callq 0x7670
leaq -0x648(%rbp), %rdi
callq 0x73c0
leaq -0x649(%rbp), %rdi
callq 0x7670
leaq -0x6e9(%rbp), %rdi
movq %rdi, -0xf28(%rbp)
callq 0x7a50
movq -0xf28(%rbp), %rdx
leaq 0x35a8b(%rip), %rsi     # 0x4b09d
leaq -0x6e8(%rbp), %rdi
callq 0xb310
jmp 0x15620
leaq -0x128(%rbp), %rdi
leaq -0x6e8(%rbp), %rsi
callq 0x87a0
jmp 0x15635
leaq -0x6e8(%rbp), %rdi
callq 0x73c0
leaq -0x6e9(%rbp), %rdi
callq 0x7670
leaq -0x711(%rbp), %rdi
movq %rdi, -0xf30(%rbp)
callq 0x7a50
movq -0xf30(%rbp), %rdx
leaq 0x35d7a(%rip), %rsi     # 0x4b3e8
leaq -0x710(%rbp), %rdi
callq 0xb310
jmp 0x1567c
leaq -0x739(%rbp), %rdi
movq %rdi, -0xf38(%rbp)
callq 0x7a50
movq -0xf38(%rbp), %rdx
leaq 0x35a14(%rip), %rsi     # 0x4b0b1
leaq -0x738(%rbp), %rdi
callq 0xb310
jmp 0x156ab
leaq -0x760(%rbp), %rdi
movq %rdi, -0xf48(%rbp)
callq 0x7860
leaq -0x780(%rbp), %rdi
movq %rdi, -0xf40(%rbp)
callq 0x7860
movq -0xf48(%rbp), %r8
movq -0xf40(%rbp), %r9
leaq -0x128(%rbp), %rdi
movl $0x4e, %esi
leaq -0x710(%rbp), %rdx
leaq -0x738(%rbp), %rcx
callq 0x8300
jmp 0x15700
leaq -0x780(%rbp), %rdi
callq 0x73c0
leaq -0x760(%rbp), %rdi
callq 0x73c0
leaq -0x738(%rbp), %rdi
callq 0x73c0
leaq -0x739(%rbp), %rdi
callq 0x7670
leaq -0x710(%rbp), %rdi
callq 0x73c0
leaq -0x711(%rbp), %rdi
callq 0x7670
leaq -0x7a1(%rbp), %rdi
movq %rdi, -0xf50(%rbp)
callq 0x7a50
movq -0xf50(%rbp), %rdx
leaq 0x3597d(%rip), %rsi     # 0x4b0e6
leaq -0x7a0(%rbp), %rdi
callq 0xb310
jmp 0x15777
leaq -0x7c9(%rbp), %rdi
movq %rdi, -0xf58(%rbp)
callq 0x7a50
movq -0xf58(%rbp), %rdx
leaq 0x35955(%rip), %rsi     # 0x4b0ed
leaq -0x7c8(%rbp), %rdi
callq 0xb310
jmp 0x157a6
leaq -0x7f0(%rbp), %rdi
movq %rdi, -0xf68(%rbp)
callq 0x7860
leaq -0x810(%rbp), %rdi
movq %rdi, -0xf60(%rbp)
callq 0x7860
movq -0xf68(%rbp), %r8
movq -0xf60(%rbp), %r9
leaq -0x128(%rbp), %rdi
movl $0x41, %esi
leaq -0x7a0(%rbp), %rdx
leaq -0x7c8(%rbp), %rcx
callq 0x8300
jmp 0x157fb
leaq -0x810(%rbp), %rdi
callq 0x73c0
leaq -0x7f0(%rbp), %rdi
callq 0x73c0
leaq -0x7c8(%rbp), %rdi
callq 0x73c0
leaq -0x7c9(%rbp), %rdi
callq 0x7670
leaq -0x7a0(%rbp), %rdi
callq 0x73c0
leaq -0x7a1(%rbp), %rdi
callq 0x7670
leaq -0x831(%rbp), %rdi
movq %rdi, -0xf70(%rbp)
callq 0x7a50
movq -0xf70(%rbp), %rdx
leaq 0x358ba(%rip), %rsi     # 0x4b11e
leaq -0x830(%rbp), %rdi
callq 0xb310
jmp 0x15872
leaq -0x859(%rbp), %rdi
movq %rdi, -0xf78(%rbp)
callq 0x7a50
movq -0xf78(%rbp), %rdx
leaq 0x3589b(%rip), %rsi     # 0x4b12e
leaq -0x858(%rbp), %rdi
callq 0xb310
jmp 0x158a1
leaq -0x880(%rbp), %rdi
movq %rdi, -0xf88(%rbp)
callq 0x7860
leaq -0x8a0(%rbp), %rdi
movq %rdi, -0xf80(%rbp)
callq 0x7860
movq -0xf88(%rbp), %r8
movq -0xf80(%rbp), %r9
leaq -0x128(%rbp), %rdi
movl $0x73, %esi
leaq -0x830(%rbp), %rdx
leaq -0x858(%rbp), %rcx
callq 0x8300
jmp 0x158f6
leaq -0x8a0(%rbp), %rdi
callq 0x73c0
leaq -0x880(%rbp), %rdi
callq 0x73c0
leaq -0x858(%rbp), %rdi
callq 0x73c0
leaq -0x859(%rbp), %rdi
callq 0x7670
leaq -0x830(%rbp), %rdi
callq 0x73c0
leaq -0x831(%rbp), %rdi
callq 0x7670
leaq -0x8c1(%rbp), %rdi
movq %rdi, -0xf90(%rbp)
callq 0x7a50
movq -0xf90(%rbp), %rdx
leaq 0x35845(%rip), %rsi     # 0x4b1a4
leaq -0x8c0(%rbp), %rdi
callq 0xb310
jmp 0x1596d
leaq -0x128(%rbp), %rdi
leaq -0x8c0(%rbp), %rsi
callq 0x87a0
jmp 0x15982
leaq -0x8c0(%rbp), %rdi
callq 0x73c0
leaq -0x8c1(%rbp), %rdi
callq 0x7670
leaq -0x8e9(%rbp), %rdi
movq %rdi, -0xf98(%rbp)
callq 0x7a50
movq -0xf98(%rbp), %rdx
leaq 0x35805(%rip), %rsi     # 0x4b1c0
leaq -0x8e8(%rbp), %rdi
callq 0xb310
jmp 0x159c9
leaq -0x911(%rbp), %rdi
movq %rdi, -0xfa0(%rbp)
callq 0x7a50
movq -0xfa0(%rbp), %rdx
leaq 0x357de(%rip), %rsi     # 0x4b1c8
leaq -0x910(%rbp), %rdi
callq 0xb310
jmp 0x159f8
leaq -0x938(%rbp), %rdi
movq %rdi, -0xfb0(%rbp)
callq 0x7860
leaq -0x958(%rbp), %rdi
movq %rdi, -0xfa8(%rbp)
callq 0x7860
movq -0xfb0(%rbp), %r8
movq -0xfa8(%rbp), %r9
leaq -0x128(%rbp), %rdi
movl $0x76, %esi
leaq -0x8e8(%rbp), %rdx
leaq -0x910(%rbp), %rcx
callq 0x8300
jmp 0x15a4d
leaq -0x958(%rbp), %rdi
callq 0x73c0
leaq -0x938(%rbp), %rdi
callq 0x73c0
leaq -0x910(%rbp), %rdi
callq 0x73c0
leaq -0x911(%rbp), %rdi
callq 0x7670
leaq -0x8e8(%rbp), %rdi
callq 0x73c0
leaq -0x8e9(%rbp), %rdi
callq 0x7670
leaq -0x979(%rbp), %rdi
movq %rdi, -0xfb8(%rbp)
callq 0x7a50
movq -0xfb8(%rbp), %rdx
leaq 0x35751(%rip), %rsi     # 0x4b207
leaq -0x978(%rbp), %rdi
callq 0xb310
jmp 0x15ac4
leaq -0x9a1(%rbp), %rdi
movq %rdi, -0xfc0(%rbp)
callq 0x7a50
movq -0xfc0(%rbp), %rdx
leaq 0x3572d(%rip), %rsi     # 0x4b212
leaq -0x9a0(%rbp), %rdi
callq 0xb310
jmp 0x15af3
leaq -0x9c8(%rbp), %rdi
movq %rdi, -0xfd8(%rbp)
callq 0x7860
leaq -0x9e8(%rbp), %rdi
movq %rdi, -0xfd0(%rbp)
callq 0x7860
movq -0xfd8(%rbp), %r8
movq -0xfd0(%rbp), %r9
leaq -0x128(%rbp), %rdi
movl $0x64, %esi
leaq -0x978(%rbp), %rdx
leaq -0x9a0(%rbp), %rcx
callq 0x8300
movq %rax, -0xfc8(%rbp)
jmp 0x15b4f
movq -0xfc8(%rbp), %rdi
movl $0x30, %esi
callq 0x17070
jmp 0x15b62
leaq -0x9e8(%rbp), %rdi
callq 0x73c0
leaq -0x9c8(%rbp), %rdi
callq 0x73c0
leaq -0x9a0(%rbp), %rdi
callq 0x73c0
leaq -0x9a1(%rbp), %rdi
callq 0x7670
leaq -0x978(%rbp), %rdi
callq 0x73c0
leaq -0x979(%rbp), %rdi
callq 0x7670
leaq -0xa09(%rbp), %rdi
movq %rdi, -0xfe0(%rbp)
callq 0x7a50
movq -0xfe0(%rbp), %rdx
leaq 0x35665(%rip), %rsi     # 0x4b230
leaq -0xa08(%rbp), %rdi
callq 0xb310
jmp 0x15bd9
leaq -0xa31(%rbp), %rdi
movq %rdi, -0xfe8(%rbp)
callq 0x7a50
movq -0xfe8(%rbp), %rdx
leaq 0x3563e(%rip), %rsi     # 0x4b238
leaq -0xa30(%rbp), %rdi
callq 0xb310
jmp 0x15c08
leaq -0xa58(%rbp), %rdi
movq %rdi, -0xff8(%rbp)
callq 0x7860
leaq -0xa78(%rbp), %rdi
movq %rdi, -0xff0(%rbp)
callq 0x7860
movq -0xff8(%rbp), %r8
movq -0xff0(%rbp), %r9
leaq -0x128(%rbp), %rdi
movl $0x50, %esi
leaq -0xa08(%rbp), %rdx
leaq -0xa30(%rbp), %rcx
callq 0x8300
jmp 0x15c5d
leaq -0xa78(%rbp), %rdi
callq 0x73c0
leaq -0xa58(%rbp), %rdi
callq 0x73c0
leaq -0xa30(%rbp), %rdi
callq 0x73c0
leaq -0xa31(%rbp), %rdi
callq 0x7670
leaq -0xa08(%rbp), %rdi
callq 0x73c0
leaq -0xa09(%rbp), %rdi
callq 0x7670
leaq -0xa99(%rbp), %rdi
movq %rdi, -0x1000(%rbp)
callq 0x7a50
movq -0x1000(%rbp), %rdx
leaq 0x355ee(%rip), %rsi     # 0x4b2b4
leaq -0xa98(%rbp), %rdi
callq 0xb310
jmp 0x15cd4
leaq -0xac1(%rbp), %rdi
movq %rdi, -0x1008(%rbp)
callq 0x7a50
movq -0x1008(%rbp), %rdx
leaq 0x355c7(%rip), %rsi     # 0x4b2bc
leaq -0xac0(%rbp), %rdi
callq 0xb310
jmp 0x15d03
leaq -0xae9(%rbp), %rdi
movq %rdi, -0x1010(%rbp)
callq 0x7a50
movq -0x1010(%rbp), %rdx
leaq 0x35d70(%rip), %rsi     # 0x4ba94
leaq -0xae8(%rbp), %rdi
callq 0xb310
jmp 0x15d32
leaq -0xb11(%rbp), %rdi
movq %rdi, -0x1018(%rbp)
callq 0x7a50
movq -0x1018(%rbp), %rdx
leaq 0x35d25(%rip), %rsi     # 0x4ba78
leaq -0xb10(%rbp), %rdi
callq 0xb310
jmp 0x15d61
leaq -0x128(%rbp), %rdi
movl $0x20, %esi
leaq -0xa98(%rbp), %rdx
leaq -0xac0(%rbp), %rcx
leaq -0xae8(%rbp), %r8
leaq -0xb10(%rbp), %r9
callq 0x8300
jmp 0x15d90
leaq -0xb10(%rbp), %rdi
callq 0x73c0
leaq -0xb11(%rbp), %rdi
callq 0x7670
leaq -0xae8(%rbp), %rdi
callq 0x73c0
leaq -0xae9(%rbp), %rdi
callq 0x7670
leaq -0xac0(%rbp), %rdi
callq 0x73c0
leaq -0xac1(%rbp), %rdi
callq 0x7670
leaq -0xa98(%rbp), %rdi
callq 0x73c0
leaq -0xa99(%rbp), %rdi
callq 0x7670
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq -0x128(%rbp), %rdi
callq 0x170d0
jmp 0x15e05
leaq -0xc30(%rbp), %rdi
leaq -0x128(%rbp), %rsi
callq 0x17100
jmp 0x15e1a
leaq -0xc48(%rbp), %rdi
callq 0x18570
movb $0x1, -0xc49(%rbp)
leaq -0x128(%rbp), %rdi
callq 0x18590
movq %rax, -0xc58(%rbp)
movq -0xc58(%rbp), %rdi
callq 0xbf90
movq %rax, -0xc60(%rbp)
movq -0xc58(%rbp), %rdi
callq 0xbfc0
movq %rax, -0xc68(%rbp)
leaq -0xc60(%rbp), %rdi
leaq -0xc68(%rbp), %rsi
callq 0xbff0
testb $0x1, %al
jne 0x15e82
jmp 0x16ce9
leaq -0xc60(%rbp), %rdi
callq 0xc030
movq %rax, -0xc70(%rbp)
movq -0xc70(%rbp), %rdi
callq 0x7990
testb $0x1, %al
jne 0x15eaa
jmp 0x16a04
leaq -0xc91(%rbp), %rdi
movq %rdi, -0x1020(%rbp)
callq 0x7a50
movq -0x1020(%rbp), %rdx
leaq 0x3547d(%rip), %rsi     # 0x4b348
leaq -0xc90(%rbp), %rdi
callq 0xb310
jmp 0x15ed9
leaq -0x128(%rbp), %rdi
leaq -0xc90(%rbp), %rsi
callq 0x9a20
jmp 0x15eee
leaq -0xc90(%rbp), %rdi
callq 0x73c0
leaq -0xc91(%rbp), %rdi
callq 0x7670
jmp 0x16cd8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x15fc4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x15fac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x15f94
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x15f7c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0x73c0
leaq -0x1d1(%rbp), %rdi
callq 0x7670
leaq -0x1a8(%rbp), %rdi
callq 0x73c0
leaq -0x1a9(%rbp), %rdi
callq 0x7670
leaq -0x180(%rbp), %rdi
callq 0x73c0
leaq -0x181(%rbp), %rdi
callq 0x7670
leaq -0x148(%rbp), %rdi
callq 0x73c0
leaq -0x149(%rbp), %rdi
callq 0x7670
jmp 0x17050
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x16007
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x73c0
leaq -0x1f9(%rbp), %rdi
callq 0x7670
jmp 0x17044
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x1608e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x16076
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
leaq -0x290(%rbp), %rdi
callq 0x73c0
leaq -0x270(%rbp), %rdi
callq 0x73c0
leaq -0x248(%rbp), %rdi
callq 0x73c0
leaq -0x249(%rbp), %rdi
callq 0x7670
leaq -0x220(%rbp), %rdi
callq 0x73c0
leaq -0x221(%rbp), %rdi
callq 0x7670
jmp 0x17044
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x16115
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x160fd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
leaq -0x320(%rbp), %rdi
callq 0x73c0
leaq -0x300(%rbp), %rdi
callq 0x73c0
leaq -0x2d8(%rbp), %rdi
callq 0x73c0
leaq -0x2d9(%rbp), %rdi
callq 0x7670
leaq -0x2b0(%rbp), %rdi
callq 0x73c0
leaq -0x2b1(%rbp), %rdi
callq 0x7670
jmp 0x17044
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x1619c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x16184
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
leaq -0x3b0(%rbp), %rdi
callq 0x73c0
leaq -0x390(%rbp), %rdi
callq 0x73c0
leaq -0x368(%rbp), %rdi
callq 0x73c0
leaq -0x369(%rbp), %rdi
callq 0x7670
leaq -0x340(%rbp), %rdi
callq 0x73c0
leaq -0x341(%rbp), %rdi
callq 0x7670
jmp 0x17044
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x161df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
leaq -0x3d0(%rbp), %rdi
callq 0x73c0
leaq -0x3d1(%rbp), %rdi
callq 0x7670
jmp 0x17044
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x16266
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x1624e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
leaq -0x468(%rbp), %rdi
callq 0x73c0
leaq -0x448(%rbp), %rdi
callq 0x73c0
leaq -0x420(%rbp), %rdi
callq 0x73c0
leaq -0x421(%rbp), %rdi
callq 0x7670
leaq -0x3f8(%rbp), %rdi
callq 0x73c0
leaq -0x3f9(%rbp), %rdi
callq 0x7670
jmp 0x17044
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x162ed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x162d5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
leaq -0x4f8(%rbp), %rdi
callq 0x73c0
leaq -0x4d8(%rbp), %rdi
callq 0x73c0
leaq -0x4b0(%rbp), %rdi
callq 0x73c0
leaq -0x4b1(%rbp), %rdi
callq 0x7670
leaq -0x488(%rbp), %rdi
callq 0x73c0
leaq -0x489(%rbp), %rdi
callq 0x7670
jmp 0x17044
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x16374
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x1635c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
leaq -0x588(%rbp), %rdi
callq 0x73c0
leaq -0x568(%rbp), %rdi
callq 0x73c0
leaq -0x540(%rbp), %rdi
callq 0x73c0
leaq -0x541(%rbp), %rdi
callq 0x7670
leaq -0x518(%rbp), %rdi
callq 0x73c0
leaq -0x519(%rbp), %rdi
callq 0x7670
jmp 0x17044
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x1643e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x16426
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x1640e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x163f6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
leaq -0x620(%rbp), %rdi
callq 0x73c0
leaq -0x621(%rbp), %rdi
callq 0x7670
leaq -0x5f8(%rbp), %rdi
callq 0x73c0
leaq -0x5f9(%rbp), %rdi
callq 0x7670
leaq -0x5d0(%rbp), %rdi
callq 0x73c0
leaq -0x5d1(%rbp), %rdi
callq 0x7670
leaq -0x5a8(%rbp), %rdi
callq 0x73c0
leaq -0x5a9(%rbp), %rdi
callq 0x7670
jmp 0x17044
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x16508
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x164f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x164d8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x164c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
leaq -0x6c0(%rbp), %rdi
callq 0x73c0
leaq -0x6c1(%rbp), %rdi
callq 0x7670
leaq -0x698(%rbp), %rdi
callq 0x73c0
leaq -0x699(%rbp), %rdi
callq 0x7670
leaq -0x670(%rbp), %rdi
callq 0x73c0
leaq -0x671(%rbp), %rdi
callq 0x7670
leaq -0x648(%rbp), %rdi
callq 0x73c0
leaq -0x649(%rbp), %rdi
callq 0x7670
jmp 0x17044
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x1654b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
leaq -0x6e8(%rbp), %rdi
callq 0x73c0
leaq -0x6e9(%rbp), %rdi
callq 0x7670
jmp 0x17044
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x165d2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x165ba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
leaq -0x780(%rbp), %rdi
callq 0x73c0
leaq -0x760(%rbp), %rdi
callq 0x73c0
leaq -0x738(%rbp), %rdi
callq 0x73c0
leaq -0x739(%rbp), %rdi
callq 0x7670
leaq -0x710(%rbp), %rdi
callq 0x73c0
leaq -0x711(%rbp), %rdi
callq 0x7670
jmp 0x17044
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x16659
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x16641
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
leaq -0x810(%rbp), %rdi
callq 0x73c0
leaq -0x7f0(%rbp), %rdi
callq 0x73c0
leaq -0x7c8(%rbp), %rdi
callq 0x73c0
leaq -0x7c9(%rbp), %rdi
callq 0x7670
leaq -0x7a0(%rbp), %rdi
callq 0x73c0
leaq -0x7a1(%rbp), %rdi
callq 0x7670
jmp 0x17044
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x166e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x166c8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
leaq -0x8a0(%rbp), %rdi
callq 0x73c0
leaq -0x880(%rbp), %rdi
callq 0x73c0
leaq -0x858(%rbp), %rdi
callq 0x73c0
leaq -0x859(%rbp), %rdi
callq 0x7670
leaq -0x830(%rbp), %rdi
callq 0x73c0
leaq -0x831(%rbp), %rdi
callq 0x7670
jmp 0x17044
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x16723
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
leaq -0x8c0(%rbp), %rdi
callq 0x73c0
leaq -0x8c1(%rbp), %rdi
callq 0x7670
jmp 0x17044
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x167aa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x16792
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
leaq -0x958(%rbp), %rdi
callq 0x73c0
leaq -0x938(%rbp), %rdi
callq 0x73c0
leaq -0x910(%rbp), %rdi
callq 0x73c0
leaq -0x911(%rbp), %rdi
callq 0x7670
leaq -0x8e8(%rbp), %rdi
callq 0x73c0
leaq -0x8e9(%rbp), %rdi
callq 0x7670
jmp 0x17044
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x16831
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x16819
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
leaq -0x9e8(%rbp), %rdi
callq 0x73c0
leaq -0x9c8(%rbp), %rdi
callq 0x73c0
leaq -0x9a0(%rbp), %rdi
callq 0x73c0
leaq -0x9a1(%rbp), %rdi
callq 0x7670
leaq -0x978(%rbp), %rdi
callq 0x73c0
leaq -0x979(%rbp), %rdi
callq 0x7670
jmp 0x17044
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x168b8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x168a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
leaq -0xa78(%rbp), %rdi
callq 0x73c0
leaq -0xa58(%rbp), %rdi
callq 0x73c0
leaq -0xa30(%rbp), %rdi
callq 0x73c0
leaq -0xa31(%rbp), %rdi
callq 0x7670
leaq -0xa08(%rbp), %rdi
callq 0x73c0
leaq -0xa09(%rbp), %rdi
callq 0x7670
jmp 0x17044
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x16982
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x1696a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x16952
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x1693a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
leaq -0xb10(%rbp), %rdi
callq 0x73c0
leaq -0xb11(%rbp), %rdi
callq 0x7670
leaq -0xae8(%rbp), %rdi
callq 0x73c0
leaq -0xae9(%rbp), %rdi
callq 0x7670
leaq -0xac0(%rbp), %rdi
callq 0x73c0
leaq -0xac1(%rbp), %rdi
callq 0x7670
leaq -0xa98(%rbp), %rdi
callq 0x73c0
leaq -0xa99(%rbp), %rdi
callq 0x7670
jmp 0x17044
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x17044
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x16f58
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x169f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
leaq -0xc90(%rbp), %rdi
callq 0x73c0
leaq -0xc91(%rbp), %rdi
callq 0x7670
jmp 0x16f40
movb -0xc49(%rbp), %cl
movb $0x0, -0xcba(%rbp)
movb $0x0, -0xcbb(%rbp)
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x1021(%rbp)
je 0x16aa9
movq -0xc70(%rbp), %rax
movq %rax, -0x1038(%rbp)
leaq -0xcb9(%rbp), %rdi
movq %rdi, -0x1030(%rbp)
callq 0x7a50
movq -0x1030(%rbp), %rdx
movb $0x1, -0xcba(%rbp)
leaq 0x344b6(%rip), %rsi     # 0x4af15
leaq -0xcb8(%rbp), %rdi
callq 0xb310
jmp 0x16a6d
movb $0x1, -0xcbb(%rbp)
leaq -0x128(%rbp), %rdi
leaq -0xcb8(%rbp), %rsi
callq 0xab90
movq %rax, -0x1040(%rbp)
jmp 0x16a90
movq -0x1040(%rbp), %rsi
movq -0x1038(%rbp), %rdi
callq 0x11510
movb %al, -0x1021(%rbp)
movb -0x1021(%rbp), %al
movb %al, -0x1041(%rbp)
testb $0x1, -0xcbb(%rbp)
jne 0x16ac0
jmp 0x16acc
leaq -0xcb8(%rbp), %rdi
callq 0x73c0
testb $0x1, -0xcba(%rbp)
jne 0x16ad7
jmp 0x16ae3
leaq -0xcb9(%rbp), %rdi
callq 0x7670
movb -0x1041(%rbp), %al
testb $0x1, %al
jne 0x16af2
jmp 0x16b7e
movq -0xc70(%rbp), %rsi
leaq -0xc30(%rbp), %rdi
callq 0x185b0
jmp 0x16b07
jmp 0x16cd6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x16b4b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
testb $0x1, -0xcbb(%rbp)
jne 0x16b3d
jmp 0x16b49
leaq -0xcb8(%rbp), %rdi
callq 0x73c0
jmp 0x16b4b
testb $0x1, -0xcba(%rbp)
jne 0x16b56
jmp 0x16b62
leaq -0xcb9(%rbp), %rdi
callq 0x7670
jmp 0x16f40
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x16f40
testb $0x1, -0xc49(%rbp)
je 0x16bba
movq -0xc70(%rbp), %rdi
leaq 0x33642(%rip), %rsi     # 0x4a1d7
callq 0x185f0
movb %al, -0x1042(%rbp)
jmp 0x16ba2
movb -0x1042(%rbp), %al
testb $0x1, %al
jne 0x16bae
jmp 0x16bba
movb $0x0, -0xc49(%rbp)
jmp 0x16cd4
movq -0xc70(%rbp), %rsi
leaq -0xce8(%rbp), %rdi
movl $0x2, %edx
callq 0x18620
jmp 0x16bd4
leaq -0xce8(%rbp), %rdi
callq 0x14070
movb %al, -0x1043(%rbp)
jmp 0x16be8
leaq -0xce8(%rbp), %rdi
callq 0x18700
movb -0x1043(%rbp), %al
testb $0x1, %al
jne 0x16c00
jmp 0x16c3d
movq -0xc70(%rbp), %rsi
leaq -0xc48(%rbp), %rdi
callq 0x18730
jmp 0x16c15
jmp 0x16cd2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
leaq -0xce8(%rbp), %rdi
callq 0x18700
jmp 0x16f40
movq -0xc70(%rbp), %rdx
leaq 0x33506(%rip), %rsi     # 0x4a151
leaq -0xd28(%rbp), %rdi
callq 0xb5b0
jmp 0x16c59
leaq 0x34701(%rip), %rdx     # 0x4b361
leaq -0xd08(%rbp), %rdi
leaq -0xd28(%rbp), %rsi
callq 0xb720
jmp 0x16c75
leaq -0x128(%rbp), %rdi
leaq -0xd08(%rbp), %rsi
movl $0x1, %edx
callq 0xb0f0
jmp 0x16c8f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x16cc1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
leaq -0xd08(%rbp), %rdi
callq 0x73c0
leaq -0xd28(%rbp), %rdi
callq 0x73c0
jmp 0x16f40
jmp 0x16cd4
jmp 0x16cd6
jmp 0x16cd8
leaq -0xc60(%rbp), %rdi
callq 0xc220
jmp 0x15e66
leaq -0xd49(%rbp), %rdi
movq %rdi, -0x1050(%rbp)
callq 0x7a50
movq -0x1050(%rbp), %rdx
leaq 0x344b6(%rip), %rsi     # 0x4b1c0
leaq -0xd48(%rbp), %rdi
callq 0xb310
jmp 0x16d18
leaq -0x128(%rbp), %rdi
leaq -0xd48(%rbp), %rsi
callq 0xaa60
movl %eax, -0x1054(%rbp)
jmp 0x16d33
leaq -0xd48(%rbp), %rdi
callq 0x73c0
leaq -0xd49(%rbp), %rdi
callq 0x7670
movl -0x1054(%rbp), %eax
cmpl $0x2, %eax
jb 0x16da9
leaq -0xc30(%rbp), %rdi
callq 0x187b0
jmp 0x16d64
jmp 0x16da9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x16d98
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
leaq -0xd48(%rbp), %rdi
callq 0x73c0
leaq -0xd49(%rbp), %rdi
callq 0x7670
jmp 0x16f40
leaq -0xc48(%rbp), %rax
movq %rax, -0xd58(%rbp)
movq -0xd58(%rbp), %rdi
callq 0x18850
movq %rax, -0xd60(%rbp)
movq -0xd58(%rbp), %rdi
callq 0x18880
movq %rax, -0xd68(%rbp)
leaq -0xd60(%rbp), %rdi
leaq -0xd68(%rbp), %rsi
callq 0x188b0
testb $0x1, %al
jne 0x16df6
jmp 0x16e65
leaq -0xd60(%rbp), %rdi
callq 0x188f0
movq %rax, %rsi
leaq -0xd98(%rbp), %rdi
callq 0x18910
jmp 0x16e13
leaq -0xc30(%rbp), %rdi
leaq -0xd98(%rbp), %rsi
callq 0x18950
jmp 0x16e28
leaq -0xd98(%rbp), %rdi
callq 0x18da0
leaq -0xd60(%rbp), %rdi
callq 0x18dc0
jmp 0x16ddd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
leaq -0xd98(%rbp), %rdi
callq 0x18da0
jmp 0x16f40
leaq -0xdb9(%rbp), %rdi
movq %rdi, -0x1060(%rbp)
callq 0x7a50
movq -0x1060(%rbp), %rdx
leaq 0x3433a(%rip), %rsi     # 0x4b1c0
leaq -0xdb8(%rbp), %rdi
callq 0xb310
jmp 0x16e94
leaq -0x128(%rbp), %rdi
leaq -0xdb8(%rbp), %rsi
callq 0x18de0
movb %al, -0x1061(%rbp)
jmp 0x16eaf
leaq -0xdb8(%rbp), %rdi
callq 0x73c0
leaq -0xdb9(%rbp), %rdi
callq 0x7670
movb -0x1061(%rbp), %al
testb $0x1, %al
jne 0x16ed3
jmp 0x16f23
leaq -0xc30(%rbp), %rdi
callq 0x18e10
jmp 0x16ee1
jmp 0x16f23
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x16f15
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
leaq -0xdb8(%rbp), %rdi
callq 0x73c0
leaq -0xdb9(%rbp), %rdi
callq 0x7670
jmp 0x16f40
leaq -0xc48(%rbp), %rdi
callq 0x19ec0
leaq -0xc30(%rbp), %rdi
callq 0x19f20
jmp 0x17025
leaq -0xc48(%rbp), %rdi
callq 0x19ec0
leaq -0xc30(%rbp), %rdi
callq 0x19f20
movl -0x15c(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x17044
movq -0x158(%rbp), %rdi
callq 0x7250
movq %rax, -0xdc8(%rbp)
movq -0xdc8(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq %rax, -0x1078(%rbp)
leaq -0xde9(%rbp), %rdi
movq %rdi, -0x1070(%rbp)
callq 0x7a50
movq -0x1078(%rbp), %rsi
movq -0x1070(%rbp), %rdx
leaq -0xde8(%rbp), %rdi
callq 0xb310
jmp 0x16fc4
leaq -0x128(%rbp), %rdi
leaq -0xde8(%rbp), %rsi
movl $0x1, %edx
callq 0xb0f0
jmp 0x16fde
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
jmp 0x17010
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x158(%rbp)
movl %eax, -0x15c(%rbp)
leaq -0xde8(%rbp), %rdi
callq 0x73c0
leaq -0xde9(%rbp), %rdi
callq 0x7670
callq 0x7970
jmp 0x17023
jmp 0x17044
movl $0x0, -0x4(%rbp)
leaq -0x128(%rbp), %rdi
callq 0x19f70
movl -0x4(%rbp), %eax
addq $0x1080, %rsp           # imm = 0x1080
popq %rbp
retq
leaq -0x128(%rbp), %rdi
callq 0x19f70
movq -0x158(%rbp), %rdi
callq 0x7a30
movq %rax, %rdi
callq 0xc860
nopw %cs:(%rax,%rax)
nop