// File: aalto-speech[P]ftk/src/1g-prune.cc
// Function: main
int main(int argc, char* argv[]) {

    conf::Config config;
    config("usage: 1g-prune [OPTION...] WORDLIST VOCAB_INIT VOCAB_FINAL\n")
      ('h', "help", "", "", "display help")
      ('c', "candidates=INT", "arg", "10000", "Number of subwords to consider for removal per iteration, DEFAULT: 10 000")
      ('r', "removals=INT", "arg", "500", "Number of subwords to remove per iteration, DEFAULT: 500")
      ('m', "min-length=INT", "arg", "2", "Minimum length of subwords to remove, DEFAULT: 2")
      ('v', "vocab-size=INT", "arg must", "", "Target vocabulary size")
      ('s', "stop-list=STRING", "arg", "", "Text file containing subwords that should not be removed")
      ('t', "temp-vocabs=INT", "arg", "0", "Write out intermediate vocabularies for #V mod INT == 0")
      ('f', "forward-backward", "", "", "Use Forward-backward segmentation instead of Viterbi")
      ('8', "utf-8", "", "", "Utf-8 character encoding in use");
    config.default_parse(argc, argv);
    if (config.arguments.size() != 3) config.print_help(stderr, 1);

    flt_type subword_min_lp = -25.0;
    string wordlist_fname = config.arguments[0];
    string vocab_fname = config.arguments[1];
    string out_vocab_fname = config.arguments[2];
    unsigned int n_candidates_per_iter = config["candidates"].get_int();
    unsigned int removals_per_iter = config["removals"].get_int();
    unsigned int min_removal_length = config["min-length"].get_int();
    unsigned int target_vocab_size = config["vocab-size"].get_int();
    unsigned int temp_vocab_interval = config["temp-vocabs"].get_int();
    bool enable_forward_backward = config["forward-backward"].specified;
    bool utf8_encoding = config["utf-8"].specified;

    set<string> stoplist;
    if (config["stop-list"].specified) {
        vector<string> stopstrings;
        Unigrams::read_sents(config["stop-list"].get_str(), stopstrings);
        stoplist.insert(stopstrings.begin(), stopstrings.end());
    }

    cerr << setprecision(15) << std::boolalpha;
    cerr << "parameters, wordlist: " << wordlist_fname << endl;
    cerr << "parameters, initial vocabulary: " << vocab_fname << endl;
    cerr << "parameters, final vocabulary: " << out_vocab_fname << endl;
    cerr << "parameters, candidates per iteration: " << n_candidates_per_iter << endl;
    cerr << "parameters, minimum length for subwords to remove: " << min_removal_length << endl;
    cerr << "parameters, removals per iteration: " << removals_per_iter << endl;
    if (stoplist.size() > 0)
        cerr << "parameters, stoplist with " << stoplist.size() << " subwords" << endl;
    cerr << "parameters, target vocab size: " << target_vocab_size << endl;
    if (temp_vocab_interval > 0)
        cerr << "parameters, write temporary vocabularies whenever #V modulo " << temp_vocab_interval << " == 0" << endl;
    else
        cerr << "parameters, write temp vocabularies: NO" << endl;
    cerr << "parameters, use forward-backward: " << enable_forward_backward << endl;
    cerr << "parameters, utf-8 encoding: " << utf8_encoding << endl;

    int maxlen, word_maxlen;
    set<string> short_subwords;
    map<string, flt_type> vocab;
    map<string, flt_type> freqs;
    map<string, flt_type> words;

    cerr << "Reading vocabulary " << vocab_fname << endl;
    int retval = Unigrams::read_vocab(vocab_fname, vocab, maxlen, utf8_encoding);
    if (retval < 0) {
        cerr << "something went wrong reading vocabulary" << endl;
        exit(EXIT_FAILURE);
    }
    cerr << "\t" << "size: " << vocab.size() << endl;
    cerr << "\t" << "maximum string length: " << maxlen << endl;
    find_short_factors(vocab, short_subwords, min_removal_length, utf8_encoding);

    set<string> stop_union;
    set_union(stoplist.begin(), stoplist.end(),
              short_subwords.begin(), short_subwords.end(),
              inserter(stop_union, stop_union.begin()));
    stoplist = stop_union;

    cerr << "Reading word list " << wordlist_fname << endl;
    retval = Unigrams::read_vocab(wordlist_fname, words, word_maxlen, utf8_encoding);
    if (retval < 0) {
        cerr << "something went wrong reading word list" << endl;
        exit(EXIT_FAILURE);
    }
    cerr << "\t" << "wordlist size: " << words.size() << endl;
    cerr << "\t" << "maximum word length: " << word_maxlen << endl;

    Unigrams ug;
    if (enable_forward_backward)
        ug.set_segmentation_method(forward_backward);
    else
        ug.set_segmentation_method(viterbi);
    ug.set_utf8(utf8_encoding);

    flt_type cost = ug.resegment_words(words, vocab, freqs);
    cerr << endl << "Initial likelihood: " << cost << endl;

    cerr << endl << "Removing subwords by likelihood based pruning" << endl;
    int itern = 1;
    while (true) {

        cerr << "iteration " << itern << endl;
        cerr << "collecting candidate subwords" << endl;
        set<string> candidates;
        ug.init_candidates_by_usage(words, vocab, candidates, n_candidates_per_iter/3, stoplist, min_removal_length);
        ug.init_candidates_by_random(vocab, candidates, (n_candidates_per_iter-candidates.size())/4, stoplist, min_removal_length);
        ug.init_candidates(vocab, candidates, n_candidates_per_iter, stoplist, min_removal_length);

        cerr << "ranking candidate subwords (" << candidates.size() << ")" << endl;
        vector<pair<string, flt_type> > removal_scores;
        cost = ug.rank_candidates(words, vocab, candidates, freqs, removal_scores);

        cerr << "initial likelihood before removing subwords: " << cost << endl;

        // Remove subwords one by one
        unsigned int n_removals = 0;
        for (unsigned int i=0; i<removal_scores.size(); i++) {

            if (removal_scores[i].first.length() == 1) continue;
            // Score most probably went to zero already
            if (vocab.find(removal_scores[i].first) == vocab.end()) continue;
            if (freqs.find(removal_scores[i].first) == freqs.end()) continue;

            vocab.erase(removal_scores[i].first);
            freqs.erase(removal_scores[i].first);
            n_removals++;

            if (temp_vocab_interval > 0 && freqs.size() % temp_vocab_interval == 0) {
                vocab = freqs;
                Unigrams::freqs_to_logprobs(vocab);
                ostringstream vocabfname;
                vocabfname << "iteration_" << itern << "_" << vocab.size() << ".vocab";
                Unigrams::write_vocab(vocabfname.str(), vocab);
            }

            if (n_removals >= removals_per_iter) break;
            if (vocab.size() <= target_vocab_size) break;
        }

        cost = ug.iterate(words, vocab, 1);
        assert_factors(vocab, stoplist, subword_min_lp);

        cerr << "subwords removed in this iteration: " << n_removals << endl;
        cerr << "current vocabulary size: " << vocab.size() << endl;
        cerr << "likelihood after the removals: " << cost << endl;

        itern++;

        if (vocab.size() <= target_vocab_size) {
            cerr << "stopping by min_vocab_size." << endl;
            break;
        }
    }

    Unigrams::write_vocab(out_vocab_fname, vocab);
    exit(EXIT_SUCCESS);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1240, %rsp           # imm = 0x1240
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0x11210
leaq -0xe9(%rbp), %rdi
movq %rdi, -0xd10(%rbp)
callq 0x5740
movq -0xd10(%rbp), %rdx
leaq 0x65084(%rip), %rsi     # 0x6b01a
leaq -0xe8(%rbp), %rdi
callq 0x5590
jmp 0x5fa4
leaq -0xc8(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0x11280
movq %rax, -0xd18(%rbp)
jmp 0x5fc0
leaq -0x121(%rbp), %rdi
movq %rdi, -0xd20(%rbp)
callq 0x5740
movq -0xd20(%rbp), %rdx
leaq 0x6507e(%rip), %rsi     # 0x6b05f
leaq -0x120(%rbp), %rdi
callq 0x5590
jmp 0x5fef
leaq -0x149(%rbp), %rdi
movq %rdi, -0xd28(%rbp)
callq 0x5740
movq -0xd28(%rbp), %rdx
leaq 0x65972(%rip), %rsi     # 0x6b982
leaq -0x148(%rbp), %rdi
callq 0x5590
jmp 0x601e
leaq -0x171(%rbp), %rdi
movq %rdi, -0xd30(%rbp)
callq 0x5740
movq -0xd30(%rbp), %rdx
leaq 0x65943(%rip), %rsi     # 0x6b982
leaq -0x170(%rbp), %rdi
callq 0x5590
jmp 0x604d
leaq -0x199(%rbp), %rdi
movq %rdi, -0xd38(%rbp)
callq 0x5740
movq -0xd38(%rbp), %rdx
leaq 0x64fe9(%rip), %rsi     # 0x6b057
leaq -0x198(%rbp), %rdi
callq 0x5590
jmp 0x607c
movq -0xd18(%rbp), %rdi
movl $0x68, %esi
leaq -0x120(%rbp), %rdx
leaq -0x148(%rbp), %rcx
leaq -0x170(%rbp), %r8
leaq -0x198(%rbp), %r9
callq 0x112b0
movq %rax, -0xd40(%rbp)
jmp 0x60b2
leaq -0x1c1(%rbp), %rdi
movq %rdi, -0xd48(%rbp)
callq 0x5740
movq -0xd48(%rbp), %rdx
leaq 0x64f91(%rip), %rsi     # 0x6b064
leaq -0x1c0(%rbp), %rdi
callq 0x5590
jmp 0x60e1
leaq -0x1e9(%rbp), %rdi
movq %rdi, -0xd50(%rbp)
callq 0x5740
movq -0xd50(%rbp), %rdx
leaq 0x64f71(%rip), %rsi     # 0x6b073
leaq -0x1e8(%rbp), %rdi
callq 0x5590
jmp 0x6110
leaq -0x211(%rbp), %rdi
movq %rdi, -0xd58(%rbp)
callq 0x5740
movq -0xd58(%rbp), %rdx
leaq 0x64f46(%rip), %rsi     # 0x6b077
leaq -0x210(%rbp), %rdi
callq 0x5590
jmp 0x613f
leaq -0x239(%rbp), %rdi
movq %rdi, -0xd60(%rbp)
callq 0x5740
movq -0xd60(%rbp), %rdx
leaq 0x64f1d(%rip), %rsi     # 0x6b07d
leaq -0x238(%rbp), %rdi
callq 0x5590
jmp 0x616e
movq -0xd40(%rbp), %rdi
movl $0x63, %esi
leaq -0x1c0(%rbp), %rdx
leaq -0x1e8(%rbp), %rcx
leaq -0x210(%rbp), %r8
leaq -0x238(%rbp), %r9
callq 0x112b0
movq %rax, -0xd68(%rbp)
jmp 0x61a4
leaq -0x261(%rbp), %rdi
movq %rdi, -0xd70(%rbp)
callq 0x5740
movq -0xd70(%rbp), %rdx
leaq 0x64f02(%rip), %rsi     # 0x6b0c7
leaq -0x260(%rbp), %rdi
callq 0x5590
jmp 0x61d3
leaq -0x289(%rbp), %rdi
movq %rdi, -0xd78(%rbp)
callq 0x5740
movq -0xd78(%rbp), %rdx
leaq 0x64e7f(%rip), %rsi     # 0x6b073
leaq -0x288(%rbp), %rdi
callq 0x5590
jmp 0x6202
leaq -0x2b1(%rbp), %rdi
movq %rdi, -0xd80(%rbp)
callq 0x5740
movq -0xd80(%rbp), %rdx
leaq 0x64ee6(%rip), %rsi     # 0x6b109
leaq -0x2b0(%rbp), %rdi
callq 0x5590
jmp 0x6231
leaq -0x2d9(%rbp), %rdi
movq %rdi, -0xd88(%rbp)
callq 0x5740
movq -0xd88(%rbp), %rdx
leaq 0x64e82(%rip), %rsi     # 0x6b0d4
leaq -0x2d8(%rbp), %rdi
callq 0x5590
jmp 0x6260
movq -0xd68(%rbp), %rdi
movl $0x72, %esi
leaq -0x260(%rbp), %rdx
leaq -0x288(%rbp), %rcx
leaq -0x2b0(%rbp), %r8
leaq -0x2d8(%rbp), %r9
callq 0x112b0
movq %rax, -0xd90(%rbp)
jmp 0x6296
leaq -0x301(%rbp), %rdi
movq %rdi, -0xd98(%rbp)
callq 0x5740
movq -0xd98(%rbp), %rdx
leaq 0x64e56(%rip), %rsi     # 0x6b10d
leaq -0x300(%rbp), %rdi
callq 0x5590
jmp 0x62c5
leaq -0x329(%rbp), %rdi
movq %rdi, -0xda0(%rbp)
callq 0x5740
movq -0xda0(%rbp), %rdx
leaq 0x64d8d(%rip), %rsi     # 0x6b073
leaq -0x328(%rbp), %rdi
callq 0x5590
jmp 0x62f4
leaq -0x351(%rbp), %rdi
movq %rdi, -0xda8(%rbp)
callq 0x5740
movq -0xda8(%rbp), %rdx
leaq 0x64e36(%rip), %rsi     # 0x6b14b
leaq -0x350(%rbp), %rdi
callq 0x5590
jmp 0x6323
leaq -0x379(%rbp), %rdi
movq %rdi, -0xdb0(%rbp)
callq 0x5740
movq -0xdb0(%rbp), %rdx
leaq 0x64dd8(%rip), %rsi     # 0x6b11c
leaq -0x378(%rbp), %rdi
callq 0x5590
jmp 0x6352
movq -0xd90(%rbp), %rdi
movl $0x6d, %esi
leaq -0x300(%rbp), %rdx
leaq -0x328(%rbp), %rcx
leaq -0x350(%rbp), %r8
leaq -0x378(%rbp), %r9
callq 0x112b0
movq %rax, -0xdb8(%rbp)
jmp 0x6388
leaq -0x3a1(%rbp), %rdi
movq %rdi, -0xdc0(%rbp)
callq 0x5740
movq -0xdc0(%rbp), %rdx
leaq 0x64da4(%rip), %rsi     # 0x6b14d
leaq -0x3a0(%rbp), %rdi
callq 0x5590
jmp 0x63b7
leaq -0x3c9(%rbp), %rdi
movq %rdi, -0xdc8(%rbp)
callq 0x5740
movq -0xdc8(%rbp), %rdx
leaq 0x64d84(%rip), %rsi     # 0x6b15c
leaq -0x3c8(%rbp), %rdi
callq 0x5590
jmp 0x63e6
leaq -0x3f1(%rbp), %rdi
movq %rdi, -0xdd0(%rbp)
callq 0x5740
movq -0xdd0(%rbp), %rdx
leaq 0x6557b(%rip), %rsi     # 0x6b982
leaq -0x3f0(%rbp), %rdi
callq 0x5590
jmp 0x6415
leaq -0x419(%rbp), %rdi
movq %rdi, -0xdd8(%rbp)
callq 0x5740
movq -0xdd8(%rbp), %rdx
leaq 0x64d2f(%rip), %rsi     # 0x6b165
leaq -0x418(%rbp), %rdi
callq 0x5590
jmp 0x6444
movq -0xdb8(%rbp), %rdi
movl $0x76, %esi
leaq -0x3a0(%rbp), %rdx
leaq -0x3c8(%rbp), %rcx
leaq -0x3f0(%rbp), %r8
leaq -0x418(%rbp), %r9
callq 0x112b0
movq %rax, -0xde0(%rbp)
jmp 0x647a
leaq -0x441(%rbp), %rdi
movq %rdi, -0xde8(%rbp)
callq 0x5740
movq -0xde8(%rbp), %rdx
leaq 0x64ce1(%rip), %rsi     # 0x6b17c
leaq -0x440(%rbp), %rdi
callq 0x5590
jmp 0x64a9
leaq -0x469(%rbp), %rdi
movq %rdi, -0xdf0(%rbp)
callq 0x5740
movq -0xdf0(%rbp), %rdx
leaq 0x64ba9(%rip), %rsi     # 0x6b073
leaq -0x468(%rbp), %rdi
callq 0x5590
jmp 0x64d8
leaq -0x491(%rbp), %rdi
movq %rdi, -0xdf8(%rbp)
callq 0x5740
movq -0xdf8(%rbp), %rdx
leaq 0x65489(%rip), %rsi     # 0x6b982
leaq -0x490(%rbp), %rdi
callq 0x5590
jmp 0x6507
leaq -0x4b9(%rbp), %rdi
movq %rdi, -0xe00(%rbp)
callq 0x5740
movq -0xe00(%rbp), %rdx
leaq 0x64c65(%rip), %rsi     # 0x6b18d
leaq -0x4b8(%rbp), %rdi
callq 0x5590
jmp 0x6536
movq -0xde0(%rbp), %rdi
movl $0x73, %esi
leaq -0x440(%rbp), %rdx
leaq -0x468(%rbp), %rcx
leaq -0x490(%rbp), %r8
leaq -0x4b8(%rbp), %r9
callq 0x112b0
movq %rax, -0xe08(%rbp)
jmp 0x656c
leaq -0x4e1(%rbp), %rdi
movq %rdi, -0xe10(%rbp)
callq 0x5740
movq -0xe10(%rbp), %rdx
leaq 0x64c39(%rip), %rsi     # 0x6b1c6
leaq -0x4e0(%rbp), %rdi
callq 0x5590
jmp 0x659b
leaq -0x509(%rbp), %rdi
movq %rdi, -0xe18(%rbp)
callq 0x5740
movq -0xe18(%rbp), %rdx
leaq 0x64ab7(%rip), %rsi     # 0x6b073
leaq -0x508(%rbp), %rdi
callq 0x5590
jmp 0x65ca
leaq -0x531(%rbp), %rdi
movq %rdi, -0xe20(%rbp)
callq 0x5740
movq -0xe20(%rbp), %rdx
leaq 0x64c21(%rip), %rsi     # 0x6b20c
leaq -0x530(%rbp), %rdi
callq 0x5590
jmp 0x65f9
leaq -0x559(%rbp), %rdi
movq %rdi, -0xe28(%rbp)
callq 0x5740
movq -0xe28(%rbp), %rdx
leaq 0x64bbc(%rip), %rsi     # 0x6b1d6
leaq -0x558(%rbp), %rdi
callq 0x5590
jmp 0x6628
movq -0xe08(%rbp), %rdi
movl $0x74, %esi
leaq -0x4e0(%rbp), %rdx
leaq -0x508(%rbp), %rcx
leaq -0x530(%rbp), %r8
leaq -0x558(%rbp), %r9
callq 0x112b0
movq %rax, -0xe30(%rbp)
jmp 0x665e
leaq -0x581(%rbp), %rdi
movq %rdi, -0xe38(%rbp)
callq 0x5740
movq -0xe38(%rbp), %rdx
leaq 0x64b8f(%rip), %rsi     # 0x6b20e
leaq -0x580(%rbp), %rdi
callq 0x5590
jmp 0x668d
leaq -0x5a9(%rbp), %rdi
movq %rdi, -0xe40(%rbp)
callq 0x5740
movq -0xe40(%rbp), %rdx
leaq 0x652d4(%rip), %rsi     # 0x6b982
leaq -0x5a8(%rbp), %rdi
callq 0x5590
jmp 0x66bc
leaq -0x5d1(%rbp), %rdi
movq %rdi, -0xe48(%rbp)
callq 0x5740
movq -0xe48(%rbp), %rdx
leaq 0x652a5(%rip), %rsi     # 0x6b982
leaq -0x5d0(%rbp), %rdi
callq 0x5590
jmp 0x66eb
leaq -0x5f9(%rbp), %rdi
movq %rdi, -0xe50(%rbp)
callq 0x5740
movq -0xe50(%rbp), %rdx
leaq 0x64b13(%rip), %rsi     # 0x6b21f
leaq -0x5f8(%rbp), %rdi
callq 0x5590
jmp 0x671a
movq -0xe30(%rbp), %rdi
movl $0x66, %esi
leaq -0x580(%rbp), %rdx
leaq -0x5a8(%rbp), %rcx
leaq -0x5d0(%rbp), %r8
leaq -0x5f8(%rbp), %r9
callq 0x112b0
movq %rax, -0xe58(%rbp)
jmp 0x6750
leaq -0x621(%rbp), %rdi
movq %rdi, -0xe60(%rbp)
callq 0x5740
movq -0xe60(%rbp), %rdx
leaq 0x64ae3(%rip), %rsi     # 0x6b254
leaq -0x620(%rbp), %rdi
callq 0x5590
jmp 0x677f
leaq -0x649(%rbp), %rdi
movq %rdi, -0xe68(%rbp)
callq 0x5740
movq -0xe68(%rbp), %rdx
leaq 0x651e2(%rip), %rsi     # 0x6b982
leaq -0x648(%rbp), %rdi
callq 0x5590
jmp 0x67ae
leaq -0x671(%rbp), %rdi
movq %rdi, -0xe70(%rbp)
callq 0x5740
movq -0xe70(%rbp), %rdx
leaq 0x651b3(%rip), %rsi     # 0x6b982
leaq -0x670(%rbp), %rdi
callq 0x5590
jmp 0x67dd
leaq -0x699(%rbp), %rdi
movq %rdi, -0xe78(%rbp)
callq 0x5740
movq -0xe78(%rbp), %rdx
leaq 0x64a5c(%rip), %rsi     # 0x6b25a
leaq -0x698(%rbp), %rdi
callq 0x5590
jmp 0x680c
movq -0xe58(%rbp), %rdi
movl $0x38, %esi
leaq -0x620(%rbp), %rdx
leaq -0x648(%rbp), %rcx
leaq -0x670(%rbp), %r8
leaq -0x698(%rbp), %r9
callq 0x112b0
jmp 0x683b
leaq -0x698(%rbp), %rdi
callq 0x5878
leaq -0x699(%rbp), %rdi
callq 0x5450
leaq -0x670(%rbp), %rdi
callq 0x5878
leaq -0x671(%rbp), %rdi
callq 0x5450
leaq -0x648(%rbp), %rdi
callq 0x5878
leaq -0x649(%rbp), %rdi
callq 0x5450
leaq -0x620(%rbp), %rdi
callq 0x5878
leaq -0x621(%rbp), %rdi
callq 0x5450
leaq -0x5f8(%rbp), %rdi
callq 0x5878
leaq -0x5f9(%rbp), %rdi
callq 0x5450
leaq -0x5d0(%rbp), %rdi
callq 0x5878
leaq -0x5d1(%rbp), %rdi
callq 0x5450
leaq -0x5a8(%rbp), %rdi
callq 0x5878
leaq -0x5a9(%rbp), %rdi
callq 0x5450
leaq -0x580(%rbp), %rdi
callq 0x5878
leaq -0x581(%rbp), %rdi
callq 0x5450
leaq -0x558(%rbp), %rdi
callq 0x5878
leaq -0x559(%rbp), %rdi
callq 0x5450
leaq -0x530(%rbp), %rdi
callq 0x5878
leaq -0x531(%rbp), %rdi
callq 0x5450
leaq -0x508(%rbp), %rdi
callq 0x5878
leaq -0x509(%rbp), %rdi
callq 0x5450
leaq -0x4e0(%rbp), %rdi
callq 0x5878
leaq -0x4e1(%rbp), %rdi
callq 0x5450
leaq -0x4b8(%rbp), %rdi
callq 0x5878
leaq -0x4b9(%rbp), %rdi
callq 0x5450
leaq -0x490(%rbp), %rdi
callq 0x5878
leaq -0x491(%rbp), %rdi
callq 0x5450
leaq -0x468(%rbp), %rdi
callq 0x5878
leaq -0x469(%rbp), %rdi
callq 0x5450
leaq -0x440(%rbp), %rdi
callq 0x5878
leaq -0x441(%rbp), %rdi
callq 0x5450
leaq -0x418(%rbp), %rdi
callq 0x5878
leaq -0x419(%rbp), %rdi
callq 0x5450
leaq -0x3f0(%rbp), %rdi
callq 0x5878
leaq -0x3f1(%rbp), %rdi
callq 0x5450
leaq -0x3c8(%rbp), %rdi
callq 0x5878
leaq -0x3c9(%rbp), %rdi
callq 0x5450
leaq -0x3a0(%rbp), %rdi
callq 0x5878
leaq -0x3a1(%rbp), %rdi
callq 0x5450
leaq -0x378(%rbp), %rdi
callq 0x5878
leaq -0x379(%rbp), %rdi
callq 0x5450
leaq -0x350(%rbp), %rdi
callq 0x5878
leaq -0x351(%rbp), %rdi
callq 0x5450
leaq -0x328(%rbp), %rdi
callq 0x5878
leaq -0x329(%rbp), %rdi
callq 0x5450
leaq -0x300(%rbp), %rdi
callq 0x5878
leaq -0x301(%rbp), %rdi
callq 0x5450
leaq -0x2d8(%rbp), %rdi
callq 0x5878
leaq -0x2d9(%rbp), %rdi
callq 0x5450
leaq -0x2b0(%rbp), %rdi
callq 0x5878
leaq -0x2b1(%rbp), %rdi
callq 0x5450
leaq -0x288(%rbp), %rdi
callq 0x5878
leaq -0x289(%rbp), %rdi
callq 0x5450
leaq -0x260(%rbp), %rdi
callq 0x5878
leaq -0x261(%rbp), %rdi
callq 0x5450
leaq -0x238(%rbp), %rdi
callq 0x5878
leaq -0x239(%rbp), %rdi
callq 0x5450
leaq -0x210(%rbp), %rdi
callq 0x5878
leaq -0x211(%rbp), %rdi
callq 0x5450
leaq -0x1e8(%rbp), %rdi
callq 0x5878
leaq -0x1e9(%rbp), %rdi
callq 0x5450
leaq -0x1c0(%rbp), %rdi
callq 0x5878
leaq -0x1c1(%rbp), %rdi
callq 0x5450
leaq -0x198(%rbp), %rdi
callq 0x5878
leaq -0x199(%rbp), %rdi
callq 0x5450
leaq -0x170(%rbp), %rdi
callq 0x5878
leaq -0x171(%rbp), %rdi
callq 0x5450
leaq -0x148(%rbp), %rdi
callq 0x5878
leaq -0x149(%rbp), %rdi
callq 0x5450
leaq -0x120(%rbp), %rdi
callq 0x5878
leaq -0x121(%rbp), %rdi
callq 0x5450
leaq -0xe8(%rbp), %rdi
callq 0x5878
leaq -0xe9(%rbp), %rdi
callq 0x5450
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq -0xc8(%rbp), %rdi
callq 0x12100
jmp 0x6bc8
leaq -0xc8(%rbp), %rdi
addq $0x98, %rdi
callq 0x9490
cmpq $0x3, %rax
je 0x73c6
movq 0x933d4(%rip), %rax     # 0x99fc0
movq (%rax), %rsi
leaq -0xc8(%rbp), %rdi
movl $0x1, %edx
callq 0x128c0
jmp 0x6c02
jmp 0x73c6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x739e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7392
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7386
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x736e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7356
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x733e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7332
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7326
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x730e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x72f6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x72de
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x72d2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x72c6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x72ae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7296
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x727e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7272
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7266
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x724e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7236
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x721e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7212
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7206
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x71ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x71d6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x71be
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x71b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x71a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x718e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7176
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x715e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7152
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7146
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x712e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7116
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x70fe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x70f2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x70e6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x70ce
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x70b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x709e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7092
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7086
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x706e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7056
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x703e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x698(%rbp), %rdi
callq 0x5878
leaq -0x699(%rbp), %rdi
callq 0x5450
leaq -0x670(%rbp), %rdi
callq 0x5878
leaq -0x671(%rbp), %rdi
callq 0x5450
leaq -0x648(%rbp), %rdi
callq 0x5878
leaq -0x649(%rbp), %rdi
callq 0x5450
leaq -0x620(%rbp), %rdi
callq 0x5878
leaq -0x621(%rbp), %rdi
callq 0x5450
leaq -0x5f8(%rbp), %rdi
callq 0x5878
leaq -0x5f9(%rbp), %rdi
callq 0x5450
leaq -0x5d0(%rbp), %rdi
callq 0x5878
leaq -0x5d1(%rbp), %rdi
callq 0x5450
leaq -0x5a8(%rbp), %rdi
callq 0x5878
leaq -0x5a9(%rbp), %rdi
callq 0x5450
leaq -0x580(%rbp), %rdi
callq 0x5878
leaq -0x581(%rbp), %rdi
callq 0x5450
leaq -0x558(%rbp), %rdi
callq 0x5878
leaq -0x559(%rbp), %rdi
callq 0x5450
leaq -0x530(%rbp), %rdi
callq 0x5878
leaq -0x531(%rbp), %rdi
callq 0x5450
leaq -0x508(%rbp), %rdi
callq 0x5878
leaq -0x509(%rbp), %rdi
callq 0x5450
leaq -0x4e0(%rbp), %rdi
callq 0x5878
leaq -0x4e1(%rbp), %rdi
callq 0x5450
leaq -0x4b8(%rbp), %rdi
callq 0x5878
leaq -0x4b9(%rbp), %rdi
callq 0x5450
leaq -0x490(%rbp), %rdi
callq 0x5878
leaq -0x491(%rbp), %rdi
callq 0x5450
leaq -0x468(%rbp), %rdi
callq 0x5878
leaq -0x469(%rbp), %rdi
callq 0x5450
leaq -0x440(%rbp), %rdi
callq 0x5878
leaq -0x441(%rbp), %rdi
callq 0x5450
leaq -0x418(%rbp), %rdi
callq 0x5878
leaq -0x419(%rbp), %rdi
callq 0x5450
leaq -0x3f0(%rbp), %rdi
callq 0x5878
leaq -0x3f1(%rbp), %rdi
callq 0x5450
leaq -0x3c8(%rbp), %rdi
callq 0x5878
leaq -0x3c9(%rbp), %rdi
callq 0x5450
leaq -0x3a0(%rbp), %rdi
callq 0x5878
leaq -0x3a1(%rbp), %rdi
callq 0x5450
leaq -0x378(%rbp), %rdi
callq 0x5878
leaq -0x379(%rbp), %rdi
callq 0x5450
leaq -0x350(%rbp), %rdi
callq 0x5878
leaq -0x351(%rbp), %rdi
callq 0x5450
leaq -0x328(%rbp), %rdi
callq 0x5878
leaq -0x329(%rbp), %rdi
callq 0x5450
leaq -0x300(%rbp), %rdi
callq 0x5878
leaq -0x301(%rbp), %rdi
callq 0x5450
leaq -0x2d8(%rbp), %rdi
callq 0x5878
leaq -0x2d9(%rbp), %rdi
callq 0x5450
leaq -0x2b0(%rbp), %rdi
callq 0x5878
leaq -0x2b1(%rbp), %rdi
callq 0x5450
leaq -0x288(%rbp), %rdi
callq 0x5878
leaq -0x289(%rbp), %rdi
callq 0x5450
leaq -0x260(%rbp), %rdi
callq 0x5878
leaq -0x261(%rbp), %rdi
callq 0x5450
leaq -0x238(%rbp), %rdi
callq 0x5878
leaq -0x239(%rbp), %rdi
callq 0x5450
leaq -0x210(%rbp), %rdi
callq 0x5878
leaq -0x211(%rbp), %rdi
callq 0x5450
leaq -0x1e8(%rbp), %rdi
callq 0x5878
leaq -0x1e9(%rbp), %rdi
callq 0x5450
leaq -0x1c0(%rbp), %rdi
callq 0x5878
leaq -0x1c1(%rbp), %rdi
callq 0x5450
leaq -0x198(%rbp), %rdi
callq 0x5878
leaq -0x199(%rbp), %rdi
callq 0x5450
leaq -0x170(%rbp), %rdi
callq 0x5878
leaq -0x171(%rbp), %rdi
callq 0x5450
leaq -0x148(%rbp), %rdi
callq 0x5878
leaq -0x149(%rbp), %rdi
callq 0x5450
leaq -0x120(%rbp), %rdi
callq 0x5878
leaq -0x121(%rbp), %rdi
callq 0x5450
leaq -0xe8(%rbp), %rdi
callq 0x5878
leaq -0xe9(%rbp), %rdi
callq 0x5450
jmp 0x909a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x909a
movabsq $-0x3fc7000000000000, %rax # imm = 0xC039000000000000
movq %rax, -0x6a8(%rbp)
leaq -0x30(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x94b0
movq %rax, %rsi
leaq -0x6c8(%rbp), %rdi
callq 0x51c0
jmp 0x73f5
leaq -0x30(%rbp), %rdi
movl $0x1, %esi
callq 0x94b0
movq %rax, %rsi
leaq -0x6e8(%rbp), %rdi
callq 0x51c0
jmp 0x7414
leaq -0x30(%rbp), %rdi
movl $0x2, %esi
callq 0x94b0
movq %rax, %rsi
leaq -0x708(%rbp), %rdi
callq 0x51c0
jmp 0x7433
leaq -0x731(%rbp), %rdi
movq %rdi, -0xe80(%rbp)
callq 0x5740
movq -0xe80(%rbp), %rdx
leaq 0x63e26(%rip), %rsi     # 0x6b27a
leaq -0x730(%rbp), %rdi
callq 0x5590
jmp 0x7462
leaq -0xc8(%rbp), %rdi
leaq -0x730(%rbp), %rsi
callq 0x12240
movq %rax, -0xe88(%rbp)
jmp 0x747e
movq -0xe88(%rbp), %rdi
callq 0x10f90
movl %eax, -0xe8c(%rbp)
jmp 0x7492
leaq -0x730(%rbp), %rdi
callq 0x5878
leaq -0x731(%rbp), %rdi
callq 0x5450
movl -0xe8c(%rbp), %eax
movl %eax, -0x70c(%rbp)
leaq -0x759(%rbp), %rdi
movq %rdi, -0xe98(%rbp)
callq 0x5740
movq -0xe98(%rbp), %rdx
leaq 0x63dae(%rip), %rsi     # 0x6b285
leaq -0x758(%rbp), %rdi
callq 0x5590
jmp 0x74e5
leaq -0xc8(%rbp), %rdi
leaq -0x758(%rbp), %rsi
callq 0x12240
movq %rax, -0xea0(%rbp)
jmp 0x7501
movq -0xea0(%rbp), %rdi
callq 0x10f90
movl %eax, -0xea4(%rbp)
jmp 0x7515
leaq -0x758(%rbp), %rdi
callq 0x5878
leaq -0x759(%rbp), %rdi
callq 0x5450
movl -0xea4(%rbp), %eax
movl %eax, -0x738(%rbp)
leaq -0x781(%rbp), %rdi
movq %rdi, -0xeb0(%rbp)
callq 0x5740
movq -0xeb0(%rbp), %rdx
leaq 0x63d34(%rip), %rsi     # 0x6b28e
leaq -0x780(%rbp), %rdi
callq 0x5590
jmp 0x7568
leaq -0xc8(%rbp), %rdi
leaq -0x780(%rbp), %rsi
callq 0x12240
movq %rax, -0xeb8(%rbp)
jmp 0x7584
movq -0xeb8(%rbp), %rdi
callq 0x10f90
movl %eax, -0xebc(%rbp)
jmp 0x7598
leaq -0x780(%rbp), %rdi
callq 0x5878
leaq -0x781(%rbp), %rdi
callq 0x5450
movl -0xebc(%rbp), %eax
movl %eax, -0x760(%rbp)
leaq -0x7a9(%rbp), %rdi
movq %rdi, -0xec8(%rbp)
callq 0x5740
movq -0xec8(%rbp), %rdx
leaq 0x63cbc(%rip), %rsi     # 0x6b299
leaq -0x7a8(%rbp), %rdi
callq 0x5590
jmp 0x75eb
leaq -0xc8(%rbp), %rdi
leaq -0x7a8(%rbp), %rsi
callq 0x12240
movq %rax, -0xed0(%rbp)
jmp 0x7607
movq -0xed0(%rbp), %rdi
callq 0x10f90
movl %eax, -0xed4(%rbp)
jmp 0x761b
leaq -0x7a8(%rbp), %rdi
callq 0x5878
leaq -0x7a9(%rbp), %rdi
callq 0x5450
movl -0xed4(%rbp), %eax
movl %eax, -0x788(%rbp)
leaq -0x7d1(%rbp), %rdi
movq %rdi, -0xee0(%rbp)
callq 0x5740
movq -0xee0(%rbp), %rdx
leaq 0x63c44(%rip), %rsi     # 0x6b2a4
leaq -0x7d0(%rbp), %rdi
callq 0x5590
jmp 0x766e
leaq -0xc8(%rbp), %rdi
leaq -0x7d0(%rbp), %rsi
callq 0x12240
movq %rax, -0xee8(%rbp)
jmp 0x768a
movq -0xee8(%rbp), %rdi
callq 0x10f90
movl %eax, -0xeec(%rbp)
jmp 0x769e
leaq -0x7d0(%rbp), %rdi
callq 0x5878
leaq -0x7d1(%rbp), %rdi
callq 0x5450
movl -0xeec(%rbp), %eax
movl %eax, -0x7b0(%rbp)
leaq -0x7f9(%rbp), %rdi
movq %rdi, -0xef8(%rbp)
callq 0x5740
movq -0xef8(%rbp), %rdx
leaq 0x63b2b(%rip), %rsi     # 0x6b20e
leaq -0x7f8(%rbp), %rdi
callq 0x5590
jmp 0x76f1
leaq -0xc8(%rbp), %rdi
leaq -0x7f8(%rbp), %rsi
callq 0x12240
movq %rax, -0xf00(%rbp)
jmp 0x770d
movq -0xf00(%rbp), %rax
movb 0x4a(%rax), %al
movb %al, -0xf09(%rbp)
leaq -0x7f8(%rbp), %rdi
callq 0x5878
leaq -0x7f9(%rbp), %rdi
callq 0x5450
movb -0xf09(%rbp), %al
andb $0x1, %al
movb %al, -0x7d2(%rbp)
leaq -0x821(%rbp), %rdi
movq %rdi, -0xf08(%rbp)
callq 0x5740
movq -0xf08(%rbp), %rdx
leaq 0x63af0(%rip), %rsi     # 0x6b254
leaq -0x820(%rbp), %rdi
callq 0x5590
jmp 0x7772
leaq -0xc8(%rbp), %rdi
leaq -0x820(%rbp), %rsi
callq 0x12240
movq %rax, -0xf18(%rbp)
jmp 0x778e
movq -0xf18(%rbp), %rax
movb 0x4a(%rax), %al
movb %al, -0xf21(%rbp)
leaq -0x820(%rbp), %rdi
callq 0x5878
leaq -0x821(%rbp), %rdi
callq 0x5450
movb -0xf21(%rbp), %al
andb $0x1, %al
movb %al, -0x7fa(%rbp)
leaq -0x858(%rbp), %rdi
callq 0x94d0
leaq -0x879(%rbp), %rdi
movq %rdi, -0xf20(%rbp)
callq 0x5740
movq -0xf20(%rbp), %rdx
leaq 0x63abf(%rip), %rsi     # 0x6b2b0
leaq -0x878(%rbp), %rdi
callq 0x5590
jmp 0x77ff
leaq -0xc8(%rbp), %rdi
leaq -0x878(%rbp), %rsi
callq 0x12240
movq %rax, -0xf30(%rbp)
jmp 0x781b
movq -0xf30(%rbp), %rax
movb 0x4a(%rax), %al
movb %al, -0xf31(%rbp)
leaq -0x878(%rbp), %rdi
callq 0x5878
leaq -0x879(%rbp), %rdi
callq 0x5450
movb -0xf31(%rbp), %al
testb $0x1, %al
je 0x7c2e
leaq -0x898(%rbp), %rdi
callq 0x94f0
leaq -0x8d9(%rbp), %rdi
movq %rdi, -0xf40(%rbp)
callq 0x5740
movq -0xf40(%rbp), %rdx
leaq 0x63a32(%rip), %rsi     # 0x6b2b0
leaq -0x8d8(%rbp), %rdi
callq 0x5590
jmp 0x788c
leaq -0xc8(%rbp), %rdi
leaq -0x8d8(%rbp), %rsi
callq 0x12240
movq %rax, -0xf48(%rbp)
jmp 0x78a8
movq -0xf48(%rbp), %rdi
callq 0x111d0
movq %rax, -0xf50(%rbp)
jmp 0x78bd
movq -0xf50(%rbp), %rsi
leaq -0x8b8(%rbp), %rdi
callq 0x51c0
jmp 0x78d2
leaq -0x8b8(%rbp), %rdi
leaq -0x898(%rbp), %rsi
callq 0x5b2e0
jmp 0x78e7
leaq -0x8b8(%rbp), %rdi
callq 0x5878
leaq -0x8d8(%rbp), %rdi
callq 0x5878
leaq -0x8d9(%rbp), %rdi
callq 0x5450
leaq -0x898(%rbp), %rdi
movq %rdi, -0xf58(%rbp)
callq 0x9550
movq -0xf58(%rbp), %rdi
movq %rax, -0x8e8(%rbp)
callq 0x9580
movq %rax, -0x8f0(%rbp)
movq -0x8e8(%rbp), %rsi
movq -0x8f0(%rbp), %rdx
leaq -0x858(%rbp), %rdi
callq 0x9510
jmp 0x7954
leaq -0x898(%rbp), %rdi
callq 0x95b0
jmp 0x7c2e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x908e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x9082
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x79c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x730(%rbp), %rdi
callq 0x5878
leaq -0x731(%rbp), %rdi
callq 0x5450
jmp 0x9076
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7a08
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x758(%rbp), %rdi
callq 0x5878
leaq -0x759(%rbp), %rdi
callq 0x5450
jmp 0x9076
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7a4b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x780(%rbp), %rdi
callq 0x5878
leaq -0x781(%rbp), %rdi
callq 0x5450
jmp 0x9076
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7a8e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x7a8(%rbp), %rdi
callq 0x5878
leaq -0x7a9(%rbp), %rdi
callq 0x5450
jmp 0x9076
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7ad1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x7d0(%rbp), %rdi
callq 0x5878
leaq -0x7d1(%rbp), %rdi
callq 0x5450
jmp 0x9076
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7b14
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x7f8(%rbp), %rdi
callq 0x5878
leaq -0x7f9(%rbp), %rdi
callq 0x5450
jmp 0x9076
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7b57
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x820(%rbp), %rdi
callq 0x5878
leaq -0x821(%rbp), %rdi
callq 0x5450
jmp 0x9076
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7b9a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x878(%rbp), %rdi
callq 0x5878
leaq -0x879(%rbp), %rdi
callq 0x5450
jmp 0x906a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7bfd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7bf1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x8b8(%rbp), %rdi
callq 0x5878
leaq -0x8d8(%rbp), %rdi
callq 0x5878
leaq -0x8d9(%rbp), %rdi
callq 0x5450
jmp 0x7c1d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x898(%rbp), %rdi
callq 0x95b0
jmp 0x906a
movl $0xf, %edi
callq 0x9610
movl %eax, -0xf5c(%rbp)
jmp 0x7c40
movl -0xf5c(%rbp), %eax
movl %eax, -0x8f4(%rbp)
movl -0x8f4(%rbp), %esi
movq 0x9238f(%rip), %rdi     # 0x99fe8
callq 0x5670
movq %rax, -0xf68(%rbp)
jmp 0x7c67
movq -0xf68(%rbp), %rdi
leaq 0x19bb(%rip), %rsi      # 0x9630
callq 0x5150
jmp 0x7c7c
movq 0x92365(%rip), %rdi     # 0x99fe8
leaq 0x63630(%rip), %rsi     # 0x6b2ba
callq 0x53e0
movq %rax, -0xf70(%rbp)
jmp 0x7c98
movq -0xf70(%rbp), %rdi
leaq -0x6c8(%rbp), %rsi
callq 0x53a0
movq %rax, -0xf78(%rbp)
jmp 0x7cb4
movq -0xf78(%rbp), %rdi
movq 0x922d6(%rip), %rsi     # 0x99f98
callq 0x5430
jmp 0x7cc9
movq 0x92318(%rip), %rdi     # 0x99fe8
leaq 0x635fa(%rip), %rsi     # 0x6b2d1
callq 0x53e0
movq %rax, -0xf80(%rbp)
jmp 0x7ce5
movq -0xf80(%rbp), %rdi
leaq -0x6e8(%rbp), %rsi
callq 0x53a0
movq %rax, -0xf88(%rbp)
jmp 0x7d01
movq -0xf88(%rbp), %rdi
movq 0x92289(%rip), %rsi     # 0x99f98
callq 0x5430
jmp 0x7d16
movq 0x922cb(%rip), %rdi     # 0x99fe8
leaq 0x635ce(%rip), %rsi     # 0x6b2f2
callq 0x53e0
movq %rax, -0xf90(%rbp)
jmp 0x7d32
movq -0xf90(%rbp), %rdi
leaq -0x708(%rbp), %rsi
callq 0x53a0
movq %rax, -0xf98(%rbp)
jmp 0x7d4e
movq -0xf98(%rbp), %rdi
movq 0x9223c(%rip), %rsi     # 0x99f98
callq 0x5430
jmp 0x7d63
movq 0x9227e(%rip), %rdi     # 0x99fe8
leaq 0x635a0(%rip), %rsi     # 0x6b311
callq 0x53e0
movq %rax, -0xfa0(%rbp)
jmp 0x7d7f
movq -0xfa0(%rbp), %rdi
movl -0x70c(%rbp), %esi
callq 0x5570
movq %rax, -0xfa8(%rbp)
jmp 0x7d9a
movq -0xfa8(%rbp), %rdi
movq 0x921f0(%rip), %rsi     # 0x99f98
callq 0x5430
jmp 0x7daf
movq 0x92232(%rip), %rdi     # 0x99fe8
leaq 0x6357b(%rip), %rsi     # 0x6b338
callq 0x53e0
movq %rax, -0xfb0(%rbp)
jmp 0x7dcb
movq -0xfb0(%rbp), %rdi
movl -0x760(%rbp), %esi
callq 0x5570
movq %rax, -0xfb8(%rbp)
jmp 0x7de6
movq -0xfb8(%rbp), %rdi
movq 0x921a4(%rip), %rsi     # 0x99f98
callq 0x5430
jmp 0x7dfb
movq 0x921e6(%rip), %rdi     # 0x99fe8
leaq 0x63563(%rip), %rsi     # 0x6b36c
callq 0x53e0
movq %rax, -0xfc0(%rbp)
jmp 0x7e17
movq -0xfc0(%rbp), %rdi
movl -0x738(%rbp), %esi
callq 0x5570
movq %rax, -0xfc8(%rbp)
jmp 0x7e32
movq -0xfc8(%rbp), %rdi
movq 0x92158(%rip), %rsi     # 0x99f98
callq 0x5430
jmp 0x7e47
leaq -0x858(%rbp), %rdi
callq 0x9660
cmpq $0x0, %rax
jbe 0x7ee7
movq 0x92184(%rip), %rdi     # 0x99fe8
leaq 0x63526(%rip), %rsi     # 0x6b391
callq 0x53e0
movq %rax, -0xfd0(%rbp)
jmp 0x7e79
leaq -0x858(%rbp), %rdi
callq 0x9660
movq -0xfd0(%rbp), %rdi
movq %rax, %rsi
callq 0x50f0
movq %rax, -0xfd8(%rbp)
jmp 0x7e9d
movq -0xfd8(%rbp), %rdi
leaq 0x636dc(%rip), %rsi     # 0x6b587
callq 0x53e0
movq %rax, -0xfe0(%rbp)
jmp 0x7eb9
movq -0xfe0(%rbp), %rdi
movq 0x920d1(%rip), %rsi     # 0x99f98
callq 0x5430
jmp 0x7ece
jmp 0x7ee7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x906a
movq 0x920fa(%rip), %rdi     # 0x99fe8
leaq 0x634b7(%rip), %rsi     # 0x6b3ac
callq 0x53e0
movq %rax, -0xfe8(%rbp)
jmp 0x7f03
movq -0xfe8(%rbp), %rdi
movl -0x788(%rbp), %esi
callq 0x5570
movq %rax, -0xff0(%rbp)
jmp 0x7f1e
movq -0xff0(%rbp), %rdi
movq 0x9206c(%rip), %rsi     # 0x99f98
callq 0x5430
jmp 0x7f33
cmpl $0x0, -0x7b0(%rbp)
jbe 0x7fa6
movq 0x920a5(%rip), %rdi     # 0x99fe8
leaq 0x63482(%rip), %rsi     # 0x6b3cc
callq 0x53e0
movq %rax, -0xff8(%rbp)
jmp 0x7f58
movq -0xff8(%rbp), %rdi
movl -0x7b0(%rbp), %esi
callq 0x5570
movq %rax, -0x1000(%rbp)
jmp 0x7f73
movq -0x1000(%rbp), %rdi
leaq 0x63287(%rip), %rsi     # 0x6b208
callq 0x53e0
movq %rax, -0x1008(%rbp)
jmp 0x7f8f
movq -0x1008(%rbp), %rdi
movq 0x91ffb(%rip), %rsi     # 0x99f98
callq 0x5430
jmp 0x7fa4
jmp 0x7fd9
movq 0x9203b(%rip), %rdi     # 0x99fe8
leaq 0x63455(%rip), %rsi     # 0x6b409
callq 0x53e0
movq %rax, -0x1010(%rbp)
jmp 0x7fc2
movq -0x1010(%rbp), %rdi
movq 0x91fc8(%rip), %rsi     # 0x99f98
callq 0x5430
jmp 0x7fd7
jmp 0x7fd9
movq 0x92008(%rip), %rdi     # 0x99fe8
leaq 0x6344a(%rip), %rsi     # 0x6b431
callq 0x53e0
movq %rax, -0x1018(%rbp)
jmp 0x7ff5
movq -0x1018(%rbp), %rdi
movzbl -0x7d2(%rbp), %esi
andl $0x1, %esi
callq 0x5750
movq %rax, -0x1020(%rbp)
jmp 0x8014
movq -0x1020(%rbp), %rdi
movq 0x91f76(%rip), %rsi     # 0x99f98
callq 0x5430
jmp 0x8029
movq 0x91fb8(%rip), %rdi     # 0x99fe8
leaq 0x6341d(%rip), %rsi     # 0x6b454
callq 0x53e0
movq %rax, -0x1028(%rbp)
jmp 0x8045
movq -0x1028(%rbp), %rdi
movzbl -0x7fa(%rbp), %esi
andl $0x1, %esi
callq 0x5750
movq %rax, -0x1030(%rbp)
jmp 0x8064
movq -0x1030(%rbp), %rdi
movq 0x91f26(%rip), %rsi     # 0x99f98
callq 0x5430
jmp 0x8079
leaq -0x930(%rbp), %rdi
callq 0x94d0
leaq -0x960(%rbp), %rdi
callq 0x9680
leaq -0x990(%rbp), %rdi
callq 0x9680
leaq -0x9c0(%rbp), %rdi
callq 0x9680
movq 0x91f38(%rip), %rdi     # 0x99fe8
leaq 0x633ba(%rip), %rsi     # 0x6b471
callq 0x53e0
movq %rax, -0x1038(%rbp)
jmp 0x80c5
movq -0x1038(%rbp), %rdi
leaq -0x6e8(%rbp), %rsi
callq 0x53a0
movq %rax, -0x1040(%rbp)
jmp 0x80e1
movq -0x1040(%rbp), %rdi
movq 0x91ea9(%rip), %rsi     # 0x99f98
callq 0x5430
jmp 0x80f6
leaq -0x9e8(%rbp), %rdi
leaq -0x6e8(%rbp), %rsi
callq 0x51c0
jmp 0x810b
movzbl -0x7fa(%rbp), %ecx
andl $0x1, %ecx
leaq -0x9e8(%rbp), %rdi
leaq -0x960(%rbp), %rsi
leaq -0x8f8(%rbp), %rdx
callq 0x5a770
movl %eax, -0x1044(%rbp)
jmp 0x8137
leaq -0x9e8(%rbp), %rdi
callq 0x5878
movl -0x1044(%rbp), %eax
movl %eax, -0x9c4(%rbp)
cmpl $0x0, -0x9c4(%rbp)
jge 0x81cd
movq 0x91e89(%rip), %rdi     # 0x99fe8
leaq 0x6331f(%rip), %rsi     # 0x6b485
callq 0x53e0
movq %rax, -0x1050(%rbp)
jmp 0x8174
movq -0x1050(%rbp), %rdi
movq 0x91e16(%rip), %rsi     # 0x99f98
callq 0x5430
jmp 0x8189
movl $0x1, %edi
callq 0x54a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x903a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x9e8(%rbp), %rdi
callq 0x5878
jmp 0x903a
movq 0x91e14(%rip), %rdi     # 0x99fe8
leaq 0x637a6(%rip), %rsi     # 0x6b981
callq 0x53e0
movq %rax, -0x1058(%rbp)
jmp 0x81e9
movq -0x1058(%rbp), %rdi
leaq 0x631ce(%rip), %rsi     # 0x6b3c5
callq 0x53e0
movq %rax, -0x1060(%rbp)
jmp 0x8205
leaq -0x960(%rbp), %rdi
callq 0x96a0
movq -0x1060(%rbp), %rdi
movq %rax, %rsi
callq 0x50f0
movq %rax, -0x1068(%rbp)
jmp 0x8229
movq -0x1068(%rbp), %rdi
movq 0x91d61(%rip), %rsi     # 0x99f98
callq 0x5430
jmp 0x823e
movq 0x91da3(%rip), %rdi     # 0x99fe8
leaq 0x63735(%rip), %rsi     # 0x6b981
callq 0x53e0
movq %rax, -0x1070(%rbp)
jmp 0x825a
movq -0x1070(%rbp), %rdi
leaq 0x63245(%rip), %rsi     # 0x6b4ad
callq 0x53e0
movq %rax, -0x1078(%rbp)
jmp 0x8276
movq -0x1078(%rbp), %rdi
movl -0x8f8(%rbp), %esi
callq 0x5720
movq %rax, -0x1080(%rbp)
jmp 0x8291
movq -0x1080(%rbp), %rdi
movq 0x91cf9(%rip), %rsi     # 0x99f98
callq 0x5430
jmp 0x82a6
movl -0x760(%rbp), %edx
movzbl -0x7fa(%rbp), %ecx
andl $0x1, %ecx
leaq -0x960(%rbp), %rdi
leaq -0x930(%rbp), %rsi
callq 0x90c0
jmp 0x82cb
leaq -0xa18(%rbp), %rdi
movq %rdi, -0x1098(%rbp)
callq 0x94d0
leaq -0x858(%rbp), %rdi
movq %rdi, -0x10a8(%rbp)
callq 0x9750
movq -0x10a8(%rbp), %rdi
movq %rax, -0xa20(%rbp)
callq 0x9780
movq %rax, -0xa28(%rbp)
leaq -0x930(%rbp), %rdi
movq %rdi, -0x10a0(%rbp)
callq 0x9750
movq -0x10a0(%rbp), %rdi
movq %rax, -0xa30(%rbp)
callq 0x9780
movq -0x1098(%rbp), %rdi
movq %rax, -0xa38(%rbp)
callq 0x9750
movq -0x1098(%rbp), %rdi
movq %rax, -0xa50(%rbp)
movq -0xa50(%rbp), %rsi
callq 0x97b0
movq %rdx, -0x1090(%rbp)
movq %rax, -0x1088(%rbp)
jmp 0x836e
movq -0x1090(%rbp), %rax
movq -0x1088(%rbp), %rcx
movq %rcx, -0xa48(%rbp)
movq %rax, -0xa40(%rbp)
movq -0xa20(%rbp), %rdi
movq -0xa28(%rbp), %rsi
movq -0xa30(%rbp), %rdx
movq -0xa38(%rbp), %rcx
movq -0xa48(%rbp), %r8
movq -0xa40(%rbp), %r9
callq 0x96c0
movq %rdx, -0x10b8(%rbp)
movq %rax, -0x10b0(%rbp)
jmp 0x83c9
movq -0x10b8(%rbp), %rax
movq -0x10b0(%rbp), %rcx
movq %rcx, -0xa60(%rbp)
movq %rax, -0xa58(%rbp)
leaq -0x858(%rbp), %rdi
leaq -0xa18(%rbp), %rsi
callq 0x97f0
jmp 0x83fa
movq 0x91be7(%rip), %rdi     # 0x99fe8
leaq 0x630bd(%rip), %rsi     # 0x6b4c5
callq 0x53e0
movq %rax, -0x10c0(%rbp)
jmp 0x8416
movq -0x10c0(%rbp), %rdi
leaq -0x6c8(%rbp), %rsi
callq 0x53a0
movq %rax, -0x10c8(%rbp)
jmp 0x8432
movq -0x10c8(%rbp), %rdi
movq 0x91b58(%rip), %rsi     # 0x99f98
callq 0x5430
jmp 0x8447
leaq -0xa80(%rbp), %rdi
leaq -0x6c8(%rbp), %rsi
callq 0x51c0
jmp 0x845c
movzbl -0x7fa(%rbp), %ecx
andl $0x1, %ecx
leaq -0xa80(%rbp), %rdi
leaq -0x9c0(%rbp), %rsi
leaq -0x8fc(%rbp), %rdx
callq 0x5a770
movl %eax, -0x10cc(%rbp)
jmp 0x8488
movl -0x10cc(%rbp), %eax
movl %eax, -0x9c4(%rbp)
leaq -0xa80(%rbp), %rdi
callq 0x5878
cmpl $0x0, -0x9c4(%rbp)
jge 0x851e
movq 0x91b38(%rip), %rdi     # 0x99fe8
leaq 0x63021(%rip), %rsi     # 0x6b4d8
callq 0x53e0
movq %rax, -0x10d8(%rbp)
jmp 0x84c5
movq -0x10d8(%rbp), %rdi
movq 0x91ac5(%rip), %rsi     # 0x99f98
callq 0x5430
jmp 0x84da
movl $0x1, %edi
callq 0x54a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x902e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xa80(%rbp), %rdi
callq 0x5878
jmp 0x902e
movq 0x91ac3(%rip), %rdi     # 0x99fe8
leaq 0x63455(%rip), %rsi     # 0x6b981
callq 0x53e0
movq %rax, -0x10e0(%rbp)
jmp 0x853a
movq -0x10e0(%rbp), %rdi
leaq 0x62fb7(%rip), %rsi     # 0x6b4ff
callq 0x53e0
movq %rax, -0x10e8(%rbp)
jmp 0x8556
leaq -0x9c0(%rbp), %rdi
callq 0x96a0
movq -0x10e8(%rbp), %rdi
movq %rax, %rsi
callq 0x50f0
movq %rax, -0x10f0(%rbp)
jmp 0x857a
movq -0x10f0(%rbp), %rdi
movq 0x91a10(%rip), %rsi     # 0x99f98
callq 0x5430
jmp 0x858f
movq 0x91a52(%rip), %rdi     # 0x99fe8
leaq 0x633e4(%rip), %rsi     # 0x6b981
callq 0x53e0
movq %rax, -0x10f8(%rbp)
jmp 0x85ab
movq -0x10f8(%rbp), %rdi
leaq 0x62f56(%rip), %rsi     # 0x6b50f
callq 0x53e0
movq %rax, -0x1100(%rbp)
jmp 0x85c7
movq -0x1100(%rbp), %rdi
movl -0x8fc(%rbp), %esi
callq 0x5720
movq %rax, -0x1108(%rbp)
jmp 0x85e2
movq -0x1108(%rbp), %rdi
movq 0x919a8(%rip), %rsi     # 0x99f98
callq 0x5430
jmp 0x85f7
leaq -0xa90(%rbp), %rdi
callq 0x9820
jmp 0x8605
testb $0x1, -0x7d2(%rbp)
je 0x8625
leaq 0x3fc5b(%rip), %rsi     # 0x48270
leaq -0xa90(%rbp), %rdi
callq 0x9840
jmp 0x8623
jmp 0x863c
leaq 0x3f2a4(%rip), %rsi     # 0x478d0
leaq -0xa90(%rbp), %rdi
callq 0x9840
jmp 0x863a
jmp 0x863c
movzbl -0x7fa(%rbp), %esi
andl $0x1, %esi
leaq -0xa90(%rbp), %rdi
callq 0x9860
jmp 0x8654
xorps %xmm0, %xmm0
movaps %xmm0, -0xab0(%rbp)
movaps %xmm0, -0xac0(%rbp)
movaps %xmm0, -0xad0(%rbp)
leaq -0xad0(%rbp), %rdi
movq %rdi, -0x1118(%rbp)
callq 0x94d0
movq -0x1118(%rbp), %r8
leaq -0xa90(%rbp), %rdi
leaq -0x9c0(%rbp), %rsi
leaq -0x960(%rbp), %rdx
leaq -0x990(%rbp), %rcx
callq 0x5b630
movsd %xmm0, -0x1110(%rbp)
jmp 0x86b1
leaq -0xad0(%rbp), %rdi
callq 0x9880
movsd -0x1110(%rbp), %xmm0
movsd %xmm0, -0xa98(%rbp)
movq 0x91914(%rip), %rdi     # 0x99fe8
movq 0x918bd(%rip), %rsi     # 0x99f98
callq 0x5430
movq %rax, -0x1120(%rbp)
jmp 0x86e9
movq -0x1120(%rbp), %rdi
leaq 0x62e2e(%rip), %rsi     # 0x6b525
callq 0x53e0
movq %rax, -0x1128(%rbp)
jmp 0x8705
movq -0x1128(%rbp), %rdi
movsd -0xa98(%rbp), %xmm0
callq 0x57d0
movq %rax, -0x1130(%rbp)
jmp 0x8722
movq -0x1130(%rbp), %rdi
movq 0x91868(%rip), %rsi     # 0x99f98
callq 0x5430
jmp 0x8737
movq 0x918aa(%rip), %rdi     # 0x99fe8
movq 0x91853(%rip), %rsi     # 0x99f98
callq 0x5430
movq %rax, -0x1138(%rbp)
jmp 0x8753
movq -0x1138(%rbp), %rdi
leaq 0x62dd9(%rip), %rsi     # 0x6b53a
callq 0x53e0
movq %rax, -0x1140(%rbp)
jmp 0x876f
movq -0x1140(%rbp), %rdi
movq 0x9181b(%rip), %rsi     # 0x99f98
callq 0x5430
jmp 0x8784
movl $0x1, -0xad4(%rbp)
jmp 0x8790
movq 0x91851(%rip), %rdi     # 0x99fe8
leaq 0x62dca(%rip), %rsi     # 0x6b568
callq 0x53e0
movq %rax, -0x1148(%rbp)
jmp 0x87ac
movq -0x1148(%rbp), %rdi
movl -0xad4(%rbp), %esi
callq 0x5720
movq %rax, -0x1150(%rbp)
jmp 0x87c7
movq -0x1150(%rbp), %rdi
movq 0x917c3(%rip), %rsi     # 0x99f98
callq 0x5430
jmp 0x87dc
movq 0x91805(%rip), %rdi     # 0x99fe8
leaq 0x62d89(%rip), %rsi     # 0x6b573
callq 0x53e0
movq %rax, -0x1158(%rbp)
jmp 0x87f8
movq -0x1158(%rbp), %rdi
movq 0x91792(%rip), %rsi     # 0x99f98
callq 0x5430
jmp 0x880d
leaq -0xb08(%rbp), %rdi
movq %rdi, -0x1168(%rbp)
callq 0x94d0
movl -0x70c(%rbp), %eax
movl $0xaaaaaaab, %ecx       # imm = 0xAAAAAAAB
imulq %rcx, %rax
shrq $0x21, %rax
movl %eax, -0x115c(%rbp)
movl -0x760(%rbp), %eax
movl %eax, -0x116c(%rbp)
callq 0x98a0
movl -0x116c(%rbp), %edx
movq -0x1168(%rbp), %rcx
movl -0x115c(%rbp), %r8d
movq %rsp, %rax
movl %edx, (%rax)
leaq -0xa90(%rbp), %rdi
leaq -0x9c0(%rbp), %rsi
leaq -0x960(%rbp), %rdx
leaq -0x858(%rbp), %r9
callq 0x5c920
jmp 0x8886
movl -0x70c(%rbp), %eax
movq %rax, -0x1178(%rbp)
leaq -0xb08(%rbp), %rdi
movq %rdi, -0x1180(%rbp)
callq 0x9660
movq -0x1180(%rbp), %rdx
movq %rax, %rcx
movq -0x1178(%rbp), %rax
subq %rcx, %rax
shrq $0x2, %rax
movl %eax, %ecx
movl -0x760(%rbp), %r9d
leaq -0xa90(%rbp), %rdi
leaq -0x960(%rbp), %rsi
leaq -0x858(%rbp), %r8
callq 0x5c5f0
jmp 0x88e3
movl -0x70c(%rbp), %ecx
movl -0x760(%rbp), %r9d
leaq -0xa90(%rbp), %rdi
leaq -0x960(%rbp), %rsi
leaq -0xb08(%rbp), %rdx
leaq -0x858(%rbp), %r8
callq 0x5c350
jmp 0x8913
movq 0x916ce(%rip), %rdi     # 0x99fe8
leaq 0x62c70(%rip), %rsi     # 0x6b591
callq 0x53e0
movq %rax, -0x1188(%rbp)
jmp 0x892f
leaq -0xb08(%rbp), %rdi
callq 0x9660
movq -0x1188(%rbp), %rdi
movq %rax, %rsi
callq 0x50f0
movq %rax, -0x1190(%rbp)
jmp 0x8953
movq -0x1190(%rbp), %rdi
leaq 0x62f3f(%rip), %rsi     # 0x6b8a0
callq 0x53e0
movq %rax, -0x1198(%rbp)
jmp 0x896f
movq -0x1198(%rbp), %rdi
movq 0x9161b(%rip), %rsi     # 0x99f98
callq 0x5430
jmp 0x8984
leaq -0xb20(%rbp), %rdi
movq %rdi, -0x11a8(%rbp)
callq 0x98b0
movq -0x11a8(%rbp), %r9
leaq -0xa90(%rbp), %rdi
leaq -0x9c0(%rbp), %rsi
leaq -0x960(%rbp), %rdx
leaq -0xb08(%rbp), %rcx
leaq -0x990(%rbp), %r8
callq 0x5cd70
movsd %xmm0, -0x11a0(%rbp)
jmp 0x89d0
movsd -0x11a0(%rbp), %xmm0
movsd %xmm0, -0xa98(%rbp)
movq 0x91601(%rip), %rdi     # 0x99fe8
leaq 0x62bc0(%rip), %rsi     # 0x6b5ae
callq 0x53e0
movq %rax, -0x11b0(%rbp)
jmp 0x89fc
movq -0x11b0(%rbp), %rdi
movsd -0xa98(%rbp), %xmm0
callq 0x57d0
movq %rax, -0x11b8(%rbp)
jmp 0x8a19
movq -0x11b8(%rbp), %rdi
movq 0x91571(%rip), %rsi     # 0x99f98
callq 0x5430
jmp 0x8a2e
movl $0x0, -0xb24(%rbp)
movl $0x0, -0xb28(%rbp)
movl -0xb28(%rbp), %eax
movq %rax, -0x11c0(%rbp)
leaq -0xb20(%rbp), %rdi
callq 0x98d0
movq %rax, %rcx
movq -0x11c0(%rbp), %rax
cmpq %rcx, %rax
jae 0x8dd5
movl -0xb28(%rbp), %eax
movl %eax, %esi
leaq -0xb20(%rbp), %rdi
callq 0x9900
movq %rax, %rdi
callq 0x5620
cmpq $0x1, %rax
jne 0x8ae6
jmp 0x8dc1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xad0(%rbp), %rdi
callq 0x9880
jmp 0x902e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x8fbe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x8fb2
movl -0xb28(%rbp), %eax
movl %eax, %esi
leaq -0xb20(%rbp), %rdi
callq 0x9900
movq %rax, %rsi
leaq -0x960(%rbp), %rdi
callq 0x9950
movq %rax, -0x11c8(%rbp)
jmp 0x8b12
movq -0x11c8(%rbp), %rax
movq %rax, -0xb30(%rbp)
leaq -0x960(%rbp), %rdi
callq 0x9980
movq %rax, -0xb38(%rbp)
leaq -0xb30(%rbp), %rdi
leaq -0xb38(%rbp), %rsi
callq 0x9920
testb $0x1, %al
jne 0x8b4c
jmp 0x8b51
jmp 0x8dc1
movl -0xb28(%rbp), %eax
movl %eax, %esi
leaq -0xb20(%rbp), %rdi
callq 0x9900
movq %rax, %rsi
leaq -0x990(%rbp), %rdi
callq 0x9950
movq %rax, -0x11d0(%rbp)
jmp 0x8b7d
movq -0x11d0(%rbp), %rax
movq %rax, -0xb40(%rbp)
leaq -0x990(%rbp), %rdi
callq 0x9980
movq %rax, -0xb48(%rbp)
leaq -0xb40(%rbp), %rdi
leaq -0xb48(%rbp), %rsi
callq 0x9920
testb $0x1, %al
jne 0x8bb7
jmp 0x8bbc
jmp 0x8dc1
movl -0xb28(%rbp), %eax
movl %eax, %esi
leaq -0xb20(%rbp), %rdi
callq 0x9900
movq %rax, %rsi
leaq -0x960(%rbp), %rdi
callq 0x99b0
jmp 0x8be1
movl -0xb28(%rbp), %eax
movl %eax, %esi
leaq -0xb20(%rbp), %rdi
callq 0x9900
movq %rax, %rsi
leaq -0x990(%rbp), %rdi
callq 0x99b0
jmp 0x8c06
movl -0xb24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xb24(%rbp)
cmpl $0x0, -0x7b0(%rbp)
jbe 0x8d96
leaq -0x990(%rbp), %rdi
callq 0x96a0
movl -0x7b0(%rbp), %ecx
xorl %edx, %edx
divq %rcx
cmpq $0x0, %rdx
jne 0x8d96
leaq -0x960(%rbp), %rdi
leaq -0x990(%rbp), %rsi
callq 0x99e0
jmp 0x8c58
leaq -0x960(%rbp), %rdi
movsd 0x623a1(%rip), %xmm0    # 0x6b008
callq 0x5b750
jmp 0x8c6e
leaq -0xcc0(%rbp), %rdi
callq 0x5580
jmp 0x8c7c
leaq 0x62959(%rip), %rsi     # 0x6b5dc
leaq -0xcc0(%rbp), %rdi
callq 0x53e0
movq %rax, -0x11d8(%rbp)
jmp 0x8c98
movq -0x11d8(%rbp), %rdi
movl -0xad4(%rbp), %esi
callq 0x5720
movq %rax, -0x11e0(%rbp)
jmp 0x8cb3
movq -0x11e0(%rbp), %rdi
leaq 0x62924(%rip), %rsi     # 0x6b5e5
callq 0x53e0
movq %rax, -0x11e8(%rbp)
jmp 0x8ccf
leaq -0x960(%rbp), %rdi
callq 0x96a0
movq -0x11e8(%rbp), %rdi
movq %rax, %rsi
callq 0x50f0
movq %rax, -0x11f0(%rbp)
jmp 0x8cf3
movq -0x11f0(%rbp), %rdi
leaq 0x628e6(%rip), %rsi     # 0x6b5e7
callq 0x53e0
jmp 0x8d08
leaq -0xce0(%rbp), %rdi
leaq -0xcc0(%rbp), %rsi
callq 0x5400
jmp 0x8d1d
leaq -0xce0(%rbp), %rdi
leaq -0x960(%rbp), %rsi
xorl %edx, %edx
movl $0x6, %ecx
callq 0x5ad50
jmp 0x8d39
leaq -0xce0(%rbp), %rdi
callq 0x5878
leaq -0xcc0(%rbp), %rdi
callq 0x5100
jmp 0x8d96
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x8d85
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xce0(%rbp), %rdi
callq 0x5878
leaq -0xcc0(%rbp), %rdi
callq 0x5100
jmp 0x8fb2
movl -0xb24(%rbp), %eax
cmpl -0x738(%rbp), %eax
jb 0x8da6
jmp 0x8dd5
leaq -0x960(%rbp), %rdi
callq 0x96a0
movl -0x788(%rbp), %ecx
cmpq %rcx, %rax
ja 0x8dbf
jmp 0x8dd5
jmp 0x8dc1
movl -0xb28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xb28(%rbp)
jmp 0x8a42
leaq -0xa90(%rbp), %rdi
leaq -0x9c0(%rbp), %rsi
leaq -0x960(%rbp), %rdx
movl $0x1, %ecx
callq 0x5b4c0
movsd %xmm0, -0x11f8(%rbp)
jmp 0x8dfe
movsd -0x11f8(%rbp), %xmm0
movsd %xmm0, -0xa98(%rbp)
movsd -0x6a8(%rbp), %xmm0
leaq -0x960(%rbp), %rdi
leaq -0x858(%rbp), %rsi
callq 0x91d0
jmp 0x8e2b
movq 0x911b6(%rip), %rdi     # 0x99fe8
leaq 0x627b5(%rip), %rsi     # 0x6b5ee
callq 0x53e0
movq %rax, -0x1200(%rbp)
jmp 0x8e47
movq -0x1200(%rbp), %rdi
movl -0xb24(%rbp), %esi
callq 0x5570
movq %rax, -0x1208(%rbp)
jmp 0x8e62
movq -0x1208(%rbp), %rdi
movq 0x91128(%rip), %rsi     # 0x99f98
callq 0x5430
jmp 0x8e77
movq 0x9116a(%rip), %rdi     # 0x99fe8
leaq 0x6278e(%rip), %rsi     # 0x6b613
callq 0x53e0
movq %rax, -0x1210(%rbp)
jmp 0x8e93
leaq -0x960(%rbp), %rdi
callq 0x96a0
movq -0x1210(%rbp), %rdi
movq %rax, %rsi
callq 0x50f0
movq %rax, -0x1218(%rbp)
jmp 0x8eb7
movq -0x1218(%rbp), %rdi
movq 0x910d3(%rip), %rsi     # 0x99f98
callq 0x5430
jmp 0x8ecc
movq 0x91115(%rip), %rdi     # 0x99fe8
leaq 0x62753(%rip), %rsi     # 0x6b62d
callq 0x53e0
movq %rax, -0x1220(%rbp)
jmp 0x8ee8
movq -0x1220(%rbp), %rdi
movsd -0xa98(%rbp), %xmm0
callq 0x57d0
movq %rax, -0x1228(%rbp)
jmp 0x8f05
movq -0x1228(%rbp), %rdi
movq 0x91085(%rip), %rsi     # 0x99f98
callq 0x5430
jmp 0x8f1a
movl -0xad4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xad4(%rbp)
leaq -0x960(%rbp), %rdi
callq 0x96a0
movl -0x788(%rbp), %ecx
cmpq %rcx, %rax
ja 0x8f7d
movq 0x910a1(%rip), %rdi     # 0x99fe8
leaq 0x626ff(%rip), %rsi     # 0x6b64d
callq 0x53e0
movq %rax, -0x1230(%rbp)
jmp 0x8f5c
movq -0x1230(%rbp), %rdi
movq 0x9102e(%rip), %rsi     # 0x99f98
callq 0x5430
jmp 0x8f71
movl $0x3, -0xce4(%rbp)
jmp 0x8f87
movl $0x0, -0xce4(%rbp)
leaq -0xb20(%rbp), %rdi
callq 0x9a10
leaq -0xb08(%rbp), %rdi
callq 0x9880
movl -0xce4(%rbp), %eax
testl %eax, %eax
je 0x8fad
jmp 0x8fab
jmp 0x8fcc
jmp 0x878e
leaq -0xb20(%rbp), %rdi
callq 0x9a10
leaq -0xb08(%rbp), %rdi
callq 0x9880
jmp 0x902e
leaq -0xd08(%rbp), %rdi
leaq -0x708(%rbp), %rsi
callq 0x51c0
jmp 0x8fe1
leaq -0xd08(%rbp), %rdi
leaq -0x960(%rbp), %rsi
xorl %edx, %edx
movl $0x6, %ecx
callq 0x5ad50
jmp 0x8ffd
leaq -0xd08(%rbp), %rdi
callq 0x5878
xorl %edi, %edi
callq 0x54a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xd08(%rbp), %rdi
callq 0x5878
leaq -0xa18(%rbp), %rdi
callq 0x9880
leaq -0x9c0(%rbp), %rdi
callq 0x9a70
leaq -0x990(%rbp), %rdi
callq 0x9a70
leaq -0x960(%rbp), %rdi
callq 0x9a70
leaq -0x930(%rbp), %rdi
callq 0x9880
leaq -0x858(%rbp), %rdi
callq 0x9880
leaq -0x708(%rbp), %rdi
callq 0x5878
leaq -0x6e8(%rbp), %rdi
callq 0x5878
leaq -0x6c8(%rbp), %rdi
callq 0x5878
leaq -0xc8(%rbp), %rdi
callq 0x9a90
movq -0xf8(%rbp), %rdi
callq 0x5730
nopw %cs:(%rax,%rax)