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

    conf::Config config;
    config("usage: 1g-prune-sents [OPTION...] CORPUS VOCAB_INIT VOCAB_FINAL\n")
      ('h', "help", "", "", "display help")
      ('c', "candidates=INT", "arg", "25000", "Number of factors to consider for removal per iteration, DEFAULT: 25 000")
      ('r', "removals=INT", "arg", "500", "Number of removals per iteration, DEFAULT: 500")
      ('m', "min-length=INT", "arg", "2", "Minimum length of factors to remove, DEFAULT: 2")
      ('v', "vocab-size=INT", "arg must", "", "Target vocabulary size (stopping criterion)")
      ('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 short_factor_min_lp = -25.0;
    string corpus_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, training corpus: " << corpus_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 factors 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;
    set<string> short_factors;
    map<string, flt_type> vocab;
    map<string, flt_type> freqs;
    vector<string> sents;

    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_factors, min_removal_length, utf8_encoding);

    cerr << "Reading training corpus " << corpus_fname << endl;
    retval = Unigrams::read_sents(corpus_fname, sents);
    if (retval < 0) {
        cerr << "something went wrong reading training corpus" << endl;
        exit(EXIT_FAILURE);
    }
    cerr << "\t" << "number of sentences in corpus: " << sents.size() << 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_sents(sents, vocab, freqs);
    cerr << "Initial likelihood: " << cost << endl;

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

        cerr << "iteration " << itern << endl;
        cerr << "collecting candidate factors" << endl;
        set<string> candidates;
        ug.init_candidates(vocab, candidates, n_candidates_per_iter, stoplist, min_removal_length);

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

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

        // Remove factors 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(sents, vocab, 1);
        assert_factors(vocab, short_factors, short_factor_min_lp);

        cerr << "factors 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 $0x10e0, %rsp           # imm = 0x10E0
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0x10030
leaq -0xe9(%rbp), %rdi
movq %rdi, -0xc40(%rbp)
callq 0x5740
movq -0xc40(%rbp), %rdx
leaq 0x6307c(%rip), %rsi     # 0x69012
leaq -0xe8(%rbp), %rdi
callq 0x5590
jmp 0x5fa4
leaq -0xc8(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0x100a0
movq %rax, -0xc48(%rbp)
jmp 0x5fc0
leaq -0x121(%rbp), %rdi
movq %rdi, -0xc50(%rbp)
callq 0x5740
movq -0xc50(%rbp), %rdx
leaq 0x6307a(%rip), %rsi     # 0x6905b
leaq -0x120(%rbp), %rdi
callq 0x5590
jmp 0x5fef
leaq -0x149(%rbp), %rdi
movq %rdi, -0xc58(%rbp)
callq 0x5740
movq -0xc58(%rbp), %rdx
leaq 0x63988(%rip), %rsi     # 0x69998
leaq -0x148(%rbp), %rdi
callq 0x5590
jmp 0x601e
leaq -0x171(%rbp), %rdi
movq %rdi, -0xc60(%rbp)
callq 0x5740
movq -0xc60(%rbp), %rdx
leaq 0x63959(%rip), %rsi     # 0x69998
leaq -0x170(%rbp), %rdi
callq 0x5590
jmp 0x604d
leaq -0x199(%rbp), %rdi
movq %rdi, -0xc68(%rbp)
callq 0x5740
movq -0xc68(%rbp), %rdx
leaq 0x62fe5(%rip), %rsi     # 0x69053
leaq -0x198(%rbp), %rdi
callq 0x5590
jmp 0x607c
movq -0xc48(%rbp), %rdi
movl $0x68, %esi
leaq -0x120(%rbp), %rdx
leaq -0x148(%rbp), %rcx
leaq -0x170(%rbp), %r8
leaq -0x198(%rbp), %r9
callq 0x100d0
movq %rax, -0xc70(%rbp)
jmp 0x60b2
leaq -0x1c1(%rbp), %rdi
movq %rdi, -0xc78(%rbp)
callq 0x5740
movq -0xc78(%rbp), %rdx
leaq 0x62f8d(%rip), %rsi     # 0x69060
leaq -0x1c0(%rbp), %rdi
callq 0x5590
jmp 0x60e1
leaq -0x1e9(%rbp), %rdi
movq %rdi, -0xc80(%rbp)
callq 0x5740
movq -0xc80(%rbp), %rdx
leaq 0x62f6d(%rip), %rsi     # 0x6906f
leaq -0x1e8(%rbp), %rdi
callq 0x5590
jmp 0x6110
leaq -0x211(%rbp), %rdi
movq %rdi, -0xc88(%rbp)
callq 0x5740
movq -0xc88(%rbp), %rdx
leaq 0x62f42(%rip), %rsi     # 0x69073
leaq -0x210(%rbp), %rdi
callq 0x5590
jmp 0x613f
leaq -0x239(%rbp), %rdi
movq %rdi, -0xc90(%rbp)
callq 0x5740
movq -0xc90(%rbp), %rdx
leaq 0x62f19(%rip), %rsi     # 0x69079
leaq -0x238(%rbp), %rdi
callq 0x5590
jmp 0x616e
movq -0xc70(%rbp), %rdi
movl $0x63, %esi
leaq -0x1c0(%rbp), %rdx
leaq -0x1e8(%rbp), %rcx
leaq -0x210(%rbp), %r8
leaq -0x238(%rbp), %r9
callq 0x100d0
movq %rax, -0xc98(%rbp)
jmp 0x61a4
leaq -0x261(%rbp), %rdi
movq %rdi, -0xca0(%rbp)
callq 0x5740
movq -0xca0(%rbp), %rdx
leaq 0x62efd(%rip), %rsi     # 0x690c2
leaq -0x260(%rbp), %rdi
callq 0x5590
jmp 0x61d3
leaq -0x289(%rbp), %rdi
movq %rdi, -0xca8(%rbp)
callq 0x5740
movq -0xca8(%rbp), %rdx
leaq 0x62e7b(%rip), %rsi     # 0x6906f
leaq -0x288(%rbp), %rdi
callq 0x5590
jmp 0x6202
leaq -0x2b1(%rbp), %rdi
movq %rdi, -0xcb0(%rbp)
callq 0x5740
movq -0xcb0(%rbp), %rdx
leaq 0x62ed7(%rip), %rsi     # 0x690fa
leaq -0x2b0(%rbp), %rdi
callq 0x5590
jmp 0x6231
leaq -0x2d9(%rbp), %rdi
movq %rdi, -0xcb8(%rbp)
callq 0x5740
movq -0xcb8(%rbp), %rdx
leaq 0x62e7d(%rip), %rsi     # 0x690cf
leaq -0x2d8(%rbp), %rdi
callq 0x5590
jmp 0x6260
movq -0xc98(%rbp), %rdi
movl $0x72, %esi
leaq -0x260(%rbp), %rdx
leaq -0x288(%rbp), %rcx
leaq -0x2b0(%rbp), %r8
leaq -0x2d8(%rbp), %r9
callq 0x100d0
movq %rax, -0xcc0(%rbp)
jmp 0x6296
leaq -0x301(%rbp), %rdi
movq %rdi, -0xcc8(%rbp)
callq 0x5740
movq -0xcc8(%rbp), %rdx
leaq 0x62e47(%rip), %rsi     # 0x690fe
leaq -0x300(%rbp), %rdi
callq 0x5590
jmp 0x62c5
leaq -0x329(%rbp), %rdi
movq %rdi, -0xcd0(%rbp)
callq 0x5740
movq -0xcd0(%rbp), %rdx
leaq 0x62d89(%rip), %rsi     # 0x6906f
leaq -0x328(%rbp), %rdi
callq 0x5590
jmp 0x62f4
leaq -0x351(%rbp), %rdi
movq %rdi, -0xcd8(%rbp)
callq 0x5740
movq -0xcd8(%rbp), %rdx
leaq 0x62e26(%rip), %rsi     # 0x6913b
leaq -0x350(%rbp), %rdi
callq 0x5590
jmp 0x6323
leaq -0x379(%rbp), %rdi
movq %rdi, -0xce0(%rbp)
callq 0x5740
movq -0xce0(%rbp), %rdx
leaq 0x62dc9(%rip), %rsi     # 0x6910d
leaq -0x378(%rbp), %rdi
callq 0x5590
jmp 0x6352
movq -0xcc0(%rbp), %rdi
movl $0x6d, %esi
leaq -0x300(%rbp), %rdx
leaq -0x328(%rbp), %rcx
leaq -0x350(%rbp), %r8
leaq -0x378(%rbp), %r9
callq 0x100d0
movq %rax, -0xce8(%rbp)
jmp 0x6388
leaq -0x3a1(%rbp), %rdi
movq %rdi, -0xcf0(%rbp)
callq 0x5740
movq -0xcf0(%rbp), %rdx
leaq 0x62d94(%rip), %rsi     # 0x6913d
leaq -0x3a0(%rbp), %rdi
callq 0x5590
jmp 0x63b7
leaq -0x3c9(%rbp), %rdi
movq %rdi, -0xcf8(%rbp)
callq 0x5740
movq -0xcf8(%rbp), %rdx
leaq 0x62d74(%rip), %rsi     # 0x6914c
leaq -0x3c8(%rbp), %rdi
callq 0x5590
jmp 0x63e6
leaq -0x3f1(%rbp), %rdi
movq %rdi, -0xd00(%rbp)
callq 0x5740
movq -0xd00(%rbp), %rdx
leaq 0x63591(%rip), %rsi     # 0x69998
leaq -0x3f0(%rbp), %rdi
callq 0x5590
jmp 0x6415
leaq -0x419(%rbp), %rdi
movq %rdi, -0xd08(%rbp)
callq 0x5740
movq -0xd08(%rbp), %rdx
leaq 0x62d1f(%rip), %rsi     # 0x69155
leaq -0x418(%rbp), %rdi
callq 0x5590
jmp 0x6444
movq -0xce8(%rbp), %rdi
movl $0x76, %esi
leaq -0x3a0(%rbp), %rdx
leaq -0x3c8(%rbp), %rcx
leaq -0x3f0(%rbp), %r8
leaq -0x418(%rbp), %r9
callq 0x100d0
movq %rax, -0xd10(%rbp)
jmp 0x647a
leaq -0x441(%rbp), %rdi
movq %rdi, -0xd18(%rbp)
callq 0x5740
movq -0xd18(%rbp), %rdx
leaq 0x62ce6(%rip), %rsi     # 0x69181
leaq -0x440(%rbp), %rdi
callq 0x5590
jmp 0x64a9
leaq -0x469(%rbp), %rdi
movq %rdi, -0xd20(%rbp)
callq 0x5740
movq -0xd20(%rbp), %rdx
leaq 0x62ba5(%rip), %rsi     # 0x6906f
leaq -0x468(%rbp), %rdi
callq 0x5590
jmp 0x64d8
leaq -0x491(%rbp), %rdi
movq %rdi, -0xd28(%rbp)
callq 0x5740
movq -0xd28(%rbp), %rdx
leaq 0x6349f(%rip), %rsi     # 0x69998
leaq -0x490(%rbp), %rdi
callq 0x5590
jmp 0x6507
leaq -0x4b9(%rbp), %rdi
movq %rdi, -0xd30(%rbp)
callq 0x5740
movq -0xd30(%rbp), %rdx
leaq 0x62c6a(%rip), %rsi     # 0x69192
leaq -0x4b8(%rbp), %rdi
callq 0x5590
jmp 0x6536
movq -0xd10(%rbp), %rdi
movl $0x73, %esi
leaq -0x440(%rbp), %rdx
leaq -0x468(%rbp), %rcx
leaq -0x490(%rbp), %r8
leaq -0x4b8(%rbp), %r9
callq 0x100d0
movq %rax, -0xd38(%rbp)
jmp 0x656c
leaq -0x4e1(%rbp), %rdi
movq %rdi, -0xd40(%rbp)
callq 0x5740
movq -0xd40(%rbp), %rdx
leaq 0x62c3e(%rip), %rsi     # 0x691cb
leaq -0x4e0(%rbp), %rdi
callq 0x5590
jmp 0x659b
leaq -0x509(%rbp), %rdi
movq %rdi, -0xd48(%rbp)
callq 0x5740
movq -0xd48(%rbp), %rdx
leaq 0x62ab3(%rip), %rsi     # 0x6906f
leaq -0x508(%rbp), %rdi
callq 0x5590
jmp 0x65ca
leaq -0x531(%rbp), %rdi
movq %rdi, -0xd50(%rbp)
callq 0x5740
movq -0xd50(%rbp), %rdx
leaq 0x62c26(%rip), %rsi     # 0x69211
leaq -0x530(%rbp), %rdi
callq 0x5590
jmp 0x65f9
leaq -0x559(%rbp), %rdi
movq %rdi, -0xd58(%rbp)
callq 0x5740
movq -0xd58(%rbp), %rdx
leaq 0x62bc1(%rip), %rsi     # 0x691db
leaq -0x558(%rbp), %rdi
callq 0x5590
jmp 0x6628
movq -0xd38(%rbp), %rdi
movl $0x74, %esi
leaq -0x4e0(%rbp), %rdx
leaq -0x508(%rbp), %rcx
leaq -0x530(%rbp), %r8
leaq -0x558(%rbp), %r9
callq 0x100d0
movq %rax, -0xd60(%rbp)
jmp 0x665e
leaq -0x581(%rbp), %rdi
movq %rdi, -0xd68(%rbp)
callq 0x5740
movq -0xd68(%rbp), %rdx
leaq 0x62b94(%rip), %rsi     # 0x69213
leaq -0x580(%rbp), %rdi
callq 0x5590
jmp 0x668d
leaq -0x5a9(%rbp), %rdi
movq %rdi, -0xd70(%rbp)
callq 0x5740
movq -0xd70(%rbp), %rdx
leaq 0x632ea(%rip), %rsi     # 0x69998
leaq -0x5a8(%rbp), %rdi
callq 0x5590
jmp 0x66bc
leaq -0x5d1(%rbp), %rdi
movq %rdi, -0xd78(%rbp)
callq 0x5740
movq -0xd78(%rbp), %rdx
leaq 0x632bb(%rip), %rsi     # 0x69998
leaq -0x5d0(%rbp), %rdi
callq 0x5590
jmp 0x66eb
leaq -0x5f9(%rbp), %rdi
movq %rdi, -0xd80(%rbp)
callq 0x5740
movq -0xd80(%rbp), %rdx
leaq 0x62b18(%rip), %rsi     # 0x69224
leaq -0x5f8(%rbp), %rdi
callq 0x5590
jmp 0x671a
movq -0xd60(%rbp), %rdi
movl $0x66, %esi
leaq -0x580(%rbp), %rdx
leaq -0x5a8(%rbp), %rcx
leaq -0x5d0(%rbp), %r8
leaq -0x5f8(%rbp), %r9
callq 0x100d0
movq %rax, -0xd88(%rbp)
jmp 0x6750
leaq -0x621(%rbp), %rdi
movq %rdi, -0xd90(%rbp)
callq 0x5740
movq -0xd90(%rbp), %rdx
leaq 0x62ae8(%rip), %rsi     # 0x69259
leaq -0x620(%rbp), %rdi
callq 0x5590
jmp 0x677f
leaq -0x649(%rbp), %rdi
movq %rdi, -0xd98(%rbp)
callq 0x5740
movq -0xd98(%rbp), %rdx
leaq 0x631f8(%rip), %rsi     # 0x69998
leaq -0x648(%rbp), %rdi
callq 0x5590
jmp 0x67ae
leaq -0x671(%rbp), %rdi
movq %rdi, -0xda0(%rbp)
callq 0x5740
movq -0xda0(%rbp), %rdx
leaq 0x631c9(%rip), %rsi     # 0x69998
leaq -0x670(%rbp), %rdi
callq 0x5590
jmp 0x67dd
leaq -0x699(%rbp), %rdi
movq %rdi, -0xda8(%rbp)
callq 0x5740
movq -0xda8(%rbp), %rdx
leaq 0x62a61(%rip), %rsi     # 0x6925f
leaq -0x698(%rbp), %rdi
callq 0x5590
jmp 0x680c
movq -0xd88(%rbp), %rdi
movl $0x38, %esi
leaq -0x620(%rbp), %rdx
leaq -0x648(%rbp), %rcx
leaq -0x670(%rbp), %r8
leaq -0x698(%rbp), %r9
callq 0x100d0
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 0x10f20
jmp 0x6bc8
leaq -0xc8(%rbp), %rdi
addq $0x98, %rdi
callq 0x9180
cmpq $0x3, %rax
je 0x73c6
movq 0x913d4(%rip), %rax     # 0x97fc0
movq (%rax), %rsi
leaq -0xc8(%rbp), %rdi
movl $0x1, %edx
callq 0x116e0
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 0x8d8f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x8d8f
movabsq $-0x3fc7000000000000, %rax # imm = 0xC039000000000000
movq %rax, -0x6a8(%rbp)
leaq -0x30(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x91a0
movq %rax, %rsi
leaq -0x6c8(%rbp), %rdi
callq 0x51c0
jmp 0x73f5
leaq -0x30(%rbp), %rdi
movl $0x1, %esi
callq 0x91a0
movq %rax, %rsi
leaq -0x6e8(%rbp), %rdi
callq 0x51c0
jmp 0x7414
leaq -0x30(%rbp), %rdi
movl $0x2, %esi
callq 0x91a0
movq %rax, %rsi
leaq -0x708(%rbp), %rdi
callq 0x51c0
jmp 0x7433
leaq -0x731(%rbp), %rdi
movq %rdi, -0xdb0(%rbp)
callq 0x5740
movq -0xdb0(%rbp), %rdx
leaq 0x61e2b(%rip), %rsi     # 0x6927f
leaq -0x730(%rbp), %rdi
callq 0x5590
jmp 0x7462
leaq -0xc8(%rbp), %rdi
leaq -0x730(%rbp), %rsi
callq 0x11060
movq %rax, -0xdb8(%rbp)
jmp 0x747e
movq -0xdb8(%rbp), %rdi
callq 0xfdb0
movl %eax, -0xdbc(%rbp)
jmp 0x7492
leaq -0x730(%rbp), %rdi
callq 0x5878
leaq -0x731(%rbp), %rdi
callq 0x5450
movl -0xdbc(%rbp), %eax
movl %eax, -0x70c(%rbp)
leaq -0x759(%rbp), %rdi
movq %rdi, -0xdc8(%rbp)
callq 0x5740
movq -0xdc8(%rbp), %rdx
leaq 0x61db3(%rip), %rsi     # 0x6928a
leaq -0x758(%rbp), %rdi
callq 0x5590
jmp 0x74e5
leaq -0xc8(%rbp), %rdi
leaq -0x758(%rbp), %rsi
callq 0x11060
movq %rax, -0xdd0(%rbp)
jmp 0x7501
movq -0xdd0(%rbp), %rdi
callq 0xfdb0
movl %eax, -0xdd4(%rbp)
jmp 0x7515
leaq -0x758(%rbp), %rdi
callq 0x5878
leaq -0x759(%rbp), %rdi
callq 0x5450
movl -0xdd4(%rbp), %eax
movl %eax, -0x738(%rbp)
leaq -0x781(%rbp), %rdi
movq %rdi, -0xde0(%rbp)
callq 0x5740
movq -0xde0(%rbp), %rdx
leaq 0x61d39(%rip), %rsi     # 0x69293
leaq -0x780(%rbp), %rdi
callq 0x5590
jmp 0x7568
leaq -0xc8(%rbp), %rdi
leaq -0x780(%rbp), %rsi
callq 0x11060
movq %rax, -0xde8(%rbp)
jmp 0x7584
movq -0xde8(%rbp), %rdi
callq 0xfdb0
movl %eax, -0xdec(%rbp)
jmp 0x7598
leaq -0x780(%rbp), %rdi
callq 0x5878
leaq -0x781(%rbp), %rdi
callq 0x5450
movl -0xdec(%rbp), %eax
movl %eax, -0x760(%rbp)
leaq -0x7a9(%rbp), %rdi
movq %rdi, -0xdf8(%rbp)
callq 0x5740
movq -0xdf8(%rbp), %rdx
leaq 0x61cc1(%rip), %rsi     # 0x6929e
leaq -0x7a8(%rbp), %rdi
callq 0x5590
jmp 0x75eb
leaq -0xc8(%rbp), %rdi
leaq -0x7a8(%rbp), %rsi
callq 0x11060
movq %rax, -0xe00(%rbp)
jmp 0x7607
movq -0xe00(%rbp), %rdi
callq 0xfdb0
movl %eax, -0xe04(%rbp)
jmp 0x761b
leaq -0x7a8(%rbp), %rdi
callq 0x5878
leaq -0x7a9(%rbp), %rdi
callq 0x5450
movl -0xe04(%rbp), %eax
movl %eax, -0x788(%rbp)
leaq -0x7d1(%rbp), %rdi
movq %rdi, -0xe10(%rbp)
callq 0x5740
movq -0xe10(%rbp), %rdx
leaq 0x61c49(%rip), %rsi     # 0x692a9
leaq -0x7d0(%rbp), %rdi
callq 0x5590
jmp 0x766e
leaq -0xc8(%rbp), %rdi
leaq -0x7d0(%rbp), %rsi
callq 0x11060
movq %rax, -0xe18(%rbp)
jmp 0x768a
movq -0xe18(%rbp), %rdi
callq 0xfdb0
movl %eax, -0xe1c(%rbp)
jmp 0x769e
leaq -0x7d0(%rbp), %rdi
callq 0x5878
leaq -0x7d1(%rbp), %rdi
callq 0x5450
movl -0xe1c(%rbp), %eax
movl %eax, -0x7b0(%rbp)
leaq -0x7f9(%rbp), %rdi
movq %rdi, -0xe28(%rbp)
callq 0x5740
movq -0xe28(%rbp), %rdx
leaq 0x61b30(%rip), %rsi     # 0x69213
leaq -0x7f8(%rbp), %rdi
callq 0x5590
jmp 0x76f1
leaq -0xc8(%rbp), %rdi
leaq -0x7f8(%rbp), %rsi
callq 0x11060
movq %rax, -0xe30(%rbp)
jmp 0x770d
movq -0xe30(%rbp), %rax
movb 0x4a(%rax), %al
movb %al, -0xe39(%rbp)
leaq -0x7f8(%rbp), %rdi
callq 0x5878
leaq -0x7f9(%rbp), %rdi
callq 0x5450
movb -0xe39(%rbp), %al
andb $0x1, %al
movb %al, -0x7d2(%rbp)
leaq -0x821(%rbp), %rdi
movq %rdi, -0xe38(%rbp)
callq 0x5740
movq -0xe38(%rbp), %rdx
leaq 0x61af5(%rip), %rsi     # 0x69259
leaq -0x820(%rbp), %rdi
callq 0x5590
jmp 0x7772
leaq -0xc8(%rbp), %rdi
leaq -0x820(%rbp), %rsi
callq 0x11060
movq %rax, -0xe48(%rbp)
jmp 0x778e
movq -0xe48(%rbp), %rax
movb 0x4a(%rax), %al
movb %al, -0xe51(%rbp)
leaq -0x820(%rbp), %rdi
callq 0x5878
leaq -0x821(%rbp), %rdi
callq 0x5450
movb -0xe51(%rbp), %al
andb $0x1, %al
movb %al, -0x7fa(%rbp)
leaq -0x858(%rbp), %rdi
callq 0x91c0
leaq -0x879(%rbp), %rdi
movq %rdi, -0xe50(%rbp)
callq 0x5740
movq -0xe50(%rbp), %rdx
leaq 0x61ac4(%rip), %rsi     # 0x692b5
leaq -0x878(%rbp), %rdi
callq 0x5590
jmp 0x77ff
leaq -0xc8(%rbp), %rdi
leaq -0x878(%rbp), %rsi
callq 0x11060
movq %rax, -0xe60(%rbp)
jmp 0x781b
movq -0xe60(%rbp), %rax
movb 0x4a(%rax), %al
movb %al, -0xe61(%rbp)
leaq -0x878(%rbp), %rdi
callq 0x5878
leaq -0x879(%rbp), %rdi
callq 0x5450
movb -0xe61(%rbp), %al
testb $0x1, %al
je 0x7c2e
leaq -0x898(%rbp), %rdi
callq 0x91e0
leaq -0x8d9(%rbp), %rdi
movq %rdi, -0xe70(%rbp)
callq 0x5740
movq -0xe70(%rbp), %rdx
leaq 0x61a37(%rip), %rsi     # 0x692b5
leaq -0x8d8(%rbp), %rdi
callq 0x5590
jmp 0x788c
leaq -0xc8(%rbp), %rdi
leaq -0x8d8(%rbp), %rsi
callq 0x11060
movq %rax, -0xe78(%rbp)
jmp 0x78a8
movq -0xe78(%rbp), %rdi
callq 0xfff0
movq %rax, -0xe80(%rbp)
jmp 0x78bd
movq -0xe80(%rbp), %rsi
leaq -0x8b8(%rbp), %rdi
callq 0x51c0
jmp 0x78d2
leaq -0x8b8(%rbp), %rdi
leaq -0x898(%rbp), %rsi
callq 0x5a150
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, -0xe88(%rbp)
callq 0x9240
movq -0xe88(%rbp), %rdi
movq %rax, -0x8e8(%rbp)
callq 0x9270
movq %rax, -0x8f0(%rbp)
movq -0x8e8(%rbp), %rsi
movq -0x8f0(%rbp), %rdx
leaq -0x858(%rbp), %rdi
callq 0x9200
jmp 0x7954
leaq -0x898(%rbp), %rdi
callq 0x92a0
jmp 0x7c2e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x8d83
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x8d77
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 0x8d6b
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 0x8d6b
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 0x8d6b
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 0x8d6b
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 0x8d6b
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 0x8d6b
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 0x8d6b
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 0x8d5f
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 0x92a0
jmp 0x8d5f
movl $0xf, %edi
callq 0x9300
movl %eax, -0xe8c(%rbp)
jmp 0x7c40
movl -0xe8c(%rbp), %eax
movl %eax, -0x8f4(%rbp)
movl -0x8f4(%rbp), %esi
movq 0x9038f(%rip), %rdi     # 0x97fe8
callq 0x5670
movq %rax, -0xe98(%rbp)
jmp 0x7c67
movq -0xe98(%rbp), %rdi
leaq 0x16ab(%rip), %rsi      # 0x9320
callq 0x5150
jmp 0x7c7c
movq 0x90365(%rip), %rdi     # 0x97fe8
leaq 0x61635(%rip), %rsi     # 0x692bf
callq 0x53e0
movq %rax, -0xea0(%rbp)
jmp 0x7c98
movq -0xea0(%rbp), %rdi
leaq -0x6c8(%rbp), %rsi
callq 0x53a0
movq %rax, -0xea8(%rbp)
jmp 0x7cb4
movq -0xea8(%rbp), %rdi
movq 0x902d6(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x7cc9
movq 0x90318(%rip), %rdi     # 0x97fe8
leaq 0x61606(%rip), %rsi     # 0x692dd
callq 0x53e0
movq %rax, -0xeb0(%rbp)
jmp 0x7ce5
movq -0xeb0(%rbp), %rdi
leaq -0x6e8(%rbp), %rsi
callq 0x53a0
movq %rax, -0xeb8(%rbp)
jmp 0x7d01
movq -0xeb8(%rbp), %rdi
movq 0x90289(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x7d16
movq 0x902cb(%rip), %rdi     # 0x97fe8
leaq 0x615da(%rip), %rsi     # 0x692fe
callq 0x53e0
movq %rax, -0xec0(%rbp)
jmp 0x7d32
movq -0xec0(%rbp), %rdi
leaq -0x708(%rbp), %rsi
callq 0x53a0
movq %rax, -0xec8(%rbp)
jmp 0x7d4e
movq -0xec8(%rbp), %rdi
movq 0x9023c(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x7d63
movq 0x9027e(%rip), %rdi     # 0x97fe8
leaq 0x615ac(%rip), %rsi     # 0x6931d
callq 0x53e0
movq %rax, -0xed0(%rbp)
jmp 0x7d7f
movq -0xed0(%rbp), %rdi
movl -0x70c(%rbp), %esi
callq 0x5570
movq %rax, -0xed8(%rbp)
jmp 0x7d9a
movq -0xed8(%rbp), %rdi
movq 0x901f0(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x7daf
movq 0x90232(%rip), %rdi     # 0x97fe8
leaq 0x61587(%rip), %rsi     # 0x69344
callq 0x53e0
movq %rax, -0xee0(%rbp)
jmp 0x7dcb
movq -0xee0(%rbp), %rdi
movl -0x760(%rbp), %esi
callq 0x5570
movq %rax, -0xee8(%rbp)
jmp 0x7de6
movq -0xee8(%rbp), %rdi
movq 0x901a4(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x7dfb
movq 0x901e6(%rip), %rdi     # 0x97fe8
leaq 0x6156e(%rip), %rsi     # 0x69377
callq 0x53e0
movq %rax, -0xef0(%rbp)
jmp 0x7e17
movq -0xef0(%rbp), %rdi
movl -0x738(%rbp), %esi
callq 0x5570
movq %rax, -0xef8(%rbp)
jmp 0x7e32
movq -0xef8(%rbp), %rdi
movq 0x90158(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x7e47
leaq -0x858(%rbp), %rdi
callq 0x9350
cmpq $0x0, %rax
jbe 0x7ee7
movq 0x90184(%rip), %rdi     # 0x97fe8
leaq 0x61531(%rip), %rsi     # 0x6939c
callq 0x53e0
movq %rax, -0xf00(%rbp)
jmp 0x7e79
leaq -0x858(%rbp), %rdi
callq 0x9350
movq -0xf00(%rbp), %rdi
movq %rax, %rsi
callq 0x50f0
movq %rax, -0xf08(%rbp)
jmp 0x7e9d
movq -0xf08(%rbp), %rdi
leaq 0x6150c(%rip), %rsi     # 0x693b7
callq 0x53e0
movq %rax, -0xf10(%rbp)
jmp 0x7eb9
movq -0xf10(%rbp), %rdi
movq 0x900d1(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x7ece
jmp 0x7ee7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x8d5f
movq 0x900fa(%rip), %rdi     # 0x97fe8
leaq 0x614cc(%rip), %rsi     # 0x693c1
callq 0x53e0
movq %rax, -0xf18(%rbp)
jmp 0x7f03
movq -0xf18(%rbp), %rdi
movl -0x788(%rbp), %esi
callq 0x5570
movq %rax, -0xf20(%rbp)
jmp 0x7f1e
movq -0xf20(%rbp), %rdi
movq 0x9006c(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x7f33
cmpl $0x0, -0x7b0(%rbp)
jbe 0x7fa6
movq 0x900a5(%rip), %rdi     # 0x97fe8
leaq 0x61497(%rip), %rsi     # 0x693e1
callq 0x53e0
movq %rax, -0xf28(%rbp)
jmp 0x7f58
movq -0xf28(%rbp), %rdi
movl -0x7b0(%rbp), %esi
callq 0x5570
movq %rax, -0xf30(%rbp)
jmp 0x7f73
movq -0xf30(%rbp), %rdi
leaq 0x6128c(%rip), %rsi     # 0x6920d
callq 0x53e0
movq %rax, -0xf38(%rbp)
jmp 0x7f8f
movq -0xf38(%rbp), %rdi
movq 0x8fffb(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x7fa4
jmp 0x7fd9
movq 0x9003b(%rip), %rdi     # 0x97fe8
leaq 0x6146a(%rip), %rsi     # 0x6941e
callq 0x53e0
movq %rax, -0xf40(%rbp)
jmp 0x7fc2
movq -0xf40(%rbp), %rdi
movq 0x8ffc8(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x7fd7
jmp 0x7fd9
movq 0x90008(%rip), %rdi     # 0x97fe8
leaq 0x6145f(%rip), %rsi     # 0x69446
callq 0x53e0
movq %rax, -0xf48(%rbp)
jmp 0x7ff5
movq -0xf48(%rbp), %rdi
movzbl -0x7d2(%rbp), %esi
andl $0x1, %esi
callq 0x5750
movq %rax, -0xf50(%rbp)
jmp 0x8014
movq -0xf50(%rbp), %rdi
movq 0x8ff76(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x8029
movq 0x8ffb8(%rip), %rdi     # 0x97fe8
leaq 0x61432(%rip), %rsi     # 0x69469
callq 0x53e0
movq %rax, -0xf58(%rbp)
jmp 0x8045
movq -0xf58(%rbp), %rdi
movzbl -0x7fa(%rbp), %esi
andl $0x1, %esi
callq 0x5750
movq %rax, -0xf60(%rbp)
jmp 0x8064
movq -0xf60(%rbp), %rdi
movq 0x8ff26(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x8079
leaq -0x928(%rbp), %rdi
callq 0x91c0
leaq -0x958(%rbp), %rdi
callq 0x9370
leaq -0x988(%rbp), %rdi
callq 0x9370
leaq -0x9a0(%rbp), %rdi
callq 0x91e0
movq 0x8ff38(%rip), %rdi     # 0x97fe8
leaq 0x613cf(%rip), %rsi     # 0x69486
callq 0x53e0
movq %rax, -0xf68(%rbp)
jmp 0x80c5
movq -0xf68(%rbp), %rdi
leaq -0x6e8(%rbp), %rsi
callq 0x53a0
movq %rax, -0xf70(%rbp)
jmp 0x80e1
movq -0xf70(%rbp), %rdi
movq 0x8fea9(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x80f6
leaq -0x9c8(%rbp), %rdi
leaq -0x6e8(%rbp), %rsi
callq 0x51c0
jmp 0x810b
movzbl -0x7fa(%rbp), %ecx
andl $0x1, %ecx
leaq -0x9c8(%rbp), %rdi
leaq -0x958(%rbp), %rsi
leaq -0x8f8(%rbp), %rdx
callq 0x595e0
movl %eax, -0xf74(%rbp)
jmp 0x8137
leaq -0x9c8(%rbp), %rdi
callq 0x5878
movl -0xf74(%rbp), %eax
movl %eax, -0x9a4(%rbp)
cmpl $0x0, -0x9a4(%rbp)
jge 0x81cd
movq 0x8fe89(%rip), %rdi     # 0x97fe8
leaq 0x61334(%rip), %rsi     # 0x6949a
callq 0x53e0
movq %rax, -0xf80(%rbp)
jmp 0x8174
movq -0xf80(%rbp), %rdi
movq 0x8fe16(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x8189
movl $0x1, %edi
callq 0x54a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x8d2f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x9c8(%rbp), %rdi
callq 0x5878
jmp 0x8d2f
movq 0x8fe14(%rip), %rdi     # 0x97fe8
leaq 0x617bc(%rip), %rsi     # 0x69997
callq 0x53e0
movq %rax, -0xf88(%rbp)
jmp 0x81e9
movq -0xf88(%rbp), %rdi
leaq 0x611e3(%rip), %rsi     # 0x693da
callq 0x53e0
movq %rax, -0xf90(%rbp)
jmp 0x8205
leaq -0x958(%rbp), %rdi
callq 0x9390
movq -0xf90(%rbp), %rdi
movq %rax, %rsi
callq 0x50f0
movq %rax, -0xf98(%rbp)
jmp 0x8229
movq -0xf98(%rbp), %rdi
movq 0x8fd61(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x823e
movq 0x8fda3(%rip), %rdi     # 0x97fe8
leaq 0x6174b(%rip), %rsi     # 0x69997
callq 0x53e0
movq %rax, -0xfa0(%rbp)
jmp 0x825a
movq -0xfa0(%rbp), %rdi
leaq 0x6125a(%rip), %rsi     # 0x694c2
callq 0x53e0
movq %rax, -0xfa8(%rbp)
jmp 0x8276
movq -0xfa8(%rbp), %rdi
movl -0x8f8(%rbp), %esi
callq 0x5720
movq %rax, -0xfb0(%rbp)
jmp 0x8291
movq -0xfb0(%rbp), %rdi
movq 0x8fcf9(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x82a6
movl -0x760(%rbp), %edx
movzbl -0x7fa(%rbp), %ecx
andl $0x1, %ecx
leaq -0x958(%rbp), %rdi
leaq -0x928(%rbp), %rsi
callq 0x8db0
jmp 0x82cb
movq 0x8fd16(%rip), %rdi     # 0x97fe8
leaq 0x61201(%rip), %rsi     # 0x694da
callq 0x53e0
movq %rax, -0xfb8(%rbp)
jmp 0x82e7
movq -0xfb8(%rbp), %rdi
leaq -0x6c8(%rbp), %rsi
callq 0x53a0
movq %rax, -0xfc0(%rbp)
jmp 0x8303
movq -0xfc0(%rbp), %rdi
movq 0x8fc87(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x8318
leaq -0x9e8(%rbp), %rdi
leaq -0x6c8(%rbp), %rsi
callq 0x51c0
jmp 0x832d
leaq -0x9e8(%rbp), %rdi
leaq -0x9a0(%rbp), %rsi
callq 0x5a150
movl %eax, -0xfc4(%rbp)
jmp 0x8348
movl -0xfc4(%rbp), %eax
movl %eax, -0x9a4(%rbp)
leaq -0x9e8(%rbp), %rdi
callq 0x5878
cmpl $0x0, -0x9a4(%rbp)
jge 0x83c7
movq 0x8fc78(%rip), %rdi     # 0x97fe8
leaq 0x6117c(%rip), %rsi     # 0x694f3
callq 0x53e0
movq %rax, -0xfd0(%rbp)
jmp 0x8385
movq -0xfd0(%rbp), %rdi
movq 0x8fc05(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x839a
movl $0x1, %edi
callq 0x54a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x9e8(%rbp), %rdi
callq 0x5878
jmp 0x8d2f
movq 0x8fc1a(%rip), %rdi     # 0x97fe8
leaq 0x615c2(%rip), %rsi     # 0x69997
callq 0x53e0
movq %rax, -0xfd8(%rbp)
jmp 0x83e3
movq -0xfd8(%rbp), %rdi
leaq 0x6112f(%rip), %rsi     # 0x69520
callq 0x53e0
movq %rax, -0xfe0(%rbp)
jmp 0x83ff
leaq -0x9a0(%rbp), %rdi
callq 0x9180
movq -0xfe0(%rbp), %rdi
movq %rax, %rsi
callq 0x50f0
movq %rax, -0xfe8(%rbp)
jmp 0x8423
movq -0xfe8(%rbp), %rdi
movq 0x8fb67(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x8438
leaq -0x9f8(%rbp), %rdi
callq 0x93b0
jmp 0x8446
testb $0x1, -0x7d2(%rbp)
je 0x8466
leaq 0x3ec7a(%rip), %rsi     # 0x470d0
leaq -0x9f8(%rbp), %rdi
callq 0x93d0
jmp 0x8464
jmp 0x847d
leaq 0x3e2c3(%rip), %rsi     # 0x46730
leaq -0x9f8(%rbp), %rdi
callq 0x93d0
jmp 0x847b
jmp 0x847d
movzbl -0x7fa(%rbp), %esi
andl $0x1, %esi
leaq -0x9f8(%rbp), %rdi
callq 0x93f0
jmp 0x8495
leaq -0x9f8(%rbp), %rdi
leaq -0x9a0(%rbp), %rsi
leaq -0x958(%rbp), %rdx
leaq -0x988(%rbp), %rcx
callq 0x5a7b0
movsd %xmm0, -0xff0(%rbp)
jmp 0x84c0
movsd -0xff0(%rbp), %xmm0
movsd %xmm0, -0xa00(%rbp)
movq 0x8fb11(%rip), %rdi     # 0x97fe8
leaq 0x61062(%rip), %rsi     # 0x69540
callq 0x53e0
movq %rax, -0xff8(%rbp)
jmp 0x84ec
movq -0xff8(%rbp), %rdi
movsd -0xa00(%rbp), %xmm0
callq 0x57d0
movq %rax, -0x1000(%rbp)
jmp 0x8509
movq -0x1000(%rbp), %rdi
movq 0x8fa81(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x851e
movq 0x8fac3(%rip), %rdi     # 0x97fe8
movq 0x8fa6c(%rip), %rsi     # 0x97f98
callq 0x5430
movq %rax, -0x1008(%rbp)
jmp 0x853a
movq -0x1008(%rbp), %rdi
leaq 0x6100d(%rip), %rsi     # 0x69555
callq 0x53e0
movq %rax, -0x1010(%rbp)
jmp 0x8556
movq -0x1010(%rbp), %rdi
movq 0x8fa34(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x856b
movl $0x1, -0xa04(%rbp)
jmp 0x8577
movq 0x8fa6a(%rip), %rdi     # 0x97fe8
leaq 0x60ffd(%rip), %rsi     # 0x69582
callq 0x53e0
movq %rax, -0x1018(%rbp)
jmp 0x8593
movq -0x1018(%rbp), %rdi
movl -0xa04(%rbp), %esi
callq 0x5720
movq %rax, -0x1020(%rbp)
jmp 0x85ae
movq -0x1020(%rbp), %rdi
movq 0x8f9dc(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x85c3
movq 0x8fa1e(%rip), %rdi     # 0x97fe8
leaq 0x60fbc(%rip), %rsi     # 0x6958d
callq 0x53e0
movq %rax, -0x1028(%rbp)
jmp 0x85df
movq -0x1028(%rbp), %rdi
movq 0x8f9ab(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x85f4
leaq -0xa38(%rbp), %rdi
movq %rdi, -0x1030(%rbp)
callq 0x91c0
movq -0x1030(%rbp), %rdx
movl -0x70c(%rbp), %ecx
movl -0x760(%rbp), %r9d
leaq -0x9f8(%rbp), %rdi
leaq -0x958(%rbp), %rsi
leaq -0x858(%rbp), %r8
callq 0x5b1c0
jmp 0x8637
movq 0x8f9aa(%rip), %rdi     # 0x97fe8
leaq 0x60f65(%rip), %rsi     # 0x695aa
callq 0x53e0
movq %rax, -0x1038(%rbp)
jmp 0x8653
leaq -0xa38(%rbp), %rdi
callq 0x9350
movq -0x1038(%rbp), %rdi
movq %rax, %rsi
callq 0x50f0
movq %rax, -0x1040(%rbp)
jmp 0x8677
movq -0x1040(%rbp), %rdi
leaq 0x61231(%rip), %rsi     # 0x698b6
callq 0x53e0
movq %rax, -0x1048(%rbp)
jmp 0x8693
movq -0x1048(%rbp), %rdi
movq 0x8f8f7(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x86a8
leaq -0xa50(%rbp), %rdi
movq %rdi, -0x1058(%rbp)
callq 0x9410
movq -0x1058(%rbp), %r9
leaq -0x9f8(%rbp), %rdi
leaq -0x9a0(%rbp), %rsi
leaq -0x958(%rbp), %rdx
leaq -0xa38(%rbp), %rcx
leaq -0x988(%rbp), %r8
callq 0x5c6b0
movsd %xmm0, -0x1050(%rbp)
jmp 0x86f4
movsd -0x1050(%rbp), %xmm0
movsd %xmm0, -0xa00(%rbp)
movq 0x8f8dd(%rip), %rdi     # 0x97fe8
leaq 0x60eb4(%rip), %rsi     # 0x695c6
callq 0x53e0
movq %rax, -0x1060(%rbp)
jmp 0x8720
movq -0x1060(%rbp), %rdi
movsd -0xa00(%rbp), %xmm0
callq 0x57d0
movq %rax, -0x1068(%rbp)
jmp 0x873d
movq -0x1068(%rbp), %rdi
movq 0x8f84d(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x8752
movl $0x0, -0xa54(%rbp)
movl $0x0, -0xa58(%rbp)
movl -0xa58(%rbp), %eax
movq %rax, -0x1070(%rbp)
leaq -0xa50(%rbp), %rdi
callq 0x9430
movq %rax, %rcx
movq -0x1070(%rbp), %rax
cmpq %rcx, %rax
jae 0x8ad6
movl -0xa58(%rbp), %eax
movl %eax, %esi
leaq -0xa50(%rbp), %rdi
callq 0x9460
movq %rax, %rdi
callq 0x5620
cmpq $0x1, %rax
jne 0x87e7
jmp 0x8ac2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x8cbf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x8cb3
movl -0xa58(%rbp), %eax
movl %eax, %esi
leaq -0xa50(%rbp), %rdi
callq 0x9460
movq %rax, %rsi
leaq -0x958(%rbp), %rdi
callq 0x94b0
movq %rax, -0x1078(%rbp)
jmp 0x8813
movq -0x1078(%rbp), %rax
movq %rax, -0xa60(%rbp)
leaq -0x958(%rbp), %rdi
callq 0x94e0
movq %rax, -0xa68(%rbp)
leaq -0xa60(%rbp), %rdi
leaq -0xa68(%rbp), %rsi
callq 0x9480
testb $0x1, %al
jne 0x884d
jmp 0x8852
jmp 0x8ac2
movl -0xa58(%rbp), %eax
movl %eax, %esi
leaq -0xa50(%rbp), %rdi
callq 0x9460
movq %rax, %rsi
leaq -0x988(%rbp), %rdi
callq 0x94b0
movq %rax, -0x1080(%rbp)
jmp 0x887e
movq -0x1080(%rbp), %rax
movq %rax, -0xa70(%rbp)
leaq -0x988(%rbp), %rdi
callq 0x94e0
movq %rax, -0xa78(%rbp)
leaq -0xa70(%rbp), %rdi
leaq -0xa78(%rbp), %rsi
callq 0x9480
testb $0x1, %al
jne 0x88b8
jmp 0x88bd
jmp 0x8ac2
movl -0xa58(%rbp), %eax
movl %eax, %esi
leaq -0xa50(%rbp), %rdi
callq 0x9460
movq %rax, %rsi
leaq -0x958(%rbp), %rdi
callq 0x9510
jmp 0x88e2
movl -0xa58(%rbp), %eax
movl %eax, %esi
leaq -0xa50(%rbp), %rdi
callq 0x9460
movq %rax, %rsi
leaq -0x988(%rbp), %rdi
callq 0x9510
jmp 0x8907
movl -0xa54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa54(%rbp)
cmpl $0x0, -0x7b0(%rbp)
jbe 0x8a97
leaq -0x988(%rbp), %rdi
callq 0x9390
movl -0x7b0(%rbp), %ecx
xorl %edx, %edx
divq %rcx
cmpq $0x0, %rdx
jne 0x8a97
leaq -0x958(%rbp), %rdi
leaq -0x988(%rbp), %rsi
callq 0x9540
jmp 0x8959
leaq -0x958(%rbp), %rdi
movsd 0x606a0(%rip), %xmm0    # 0x69008
callq 0x5a5c0
jmp 0x896f
leaq -0xbf0(%rbp), %rdi
callq 0x5580
jmp 0x897d
leaq 0x60c6f(%rip), %rsi     # 0x695f3
leaq -0xbf0(%rbp), %rdi
callq 0x53e0
movq %rax, -0x1088(%rbp)
jmp 0x8999
movq -0x1088(%rbp), %rdi
movl -0xa04(%rbp), %esi
callq 0x5720
movq %rax, -0x1090(%rbp)
jmp 0x89b4
movq -0x1090(%rbp), %rdi
leaq 0x60c3a(%rip), %rsi     # 0x695fc
callq 0x53e0
movq %rax, -0x1098(%rbp)
jmp 0x89d0
leaq -0x958(%rbp), %rdi
callq 0x9390
movq -0x1098(%rbp), %rdi
movq %rax, %rsi
callq 0x50f0
movq %rax, -0x10a0(%rbp)
jmp 0x89f4
movq -0x10a0(%rbp), %rdi
leaq 0x60bfc(%rip), %rsi     # 0x695fe
callq 0x53e0
jmp 0x8a09
leaq -0xc10(%rbp), %rdi
leaq -0xbf0(%rbp), %rsi
callq 0x5400
jmp 0x8a1e
leaq -0xc10(%rbp), %rdi
leaq -0x958(%rbp), %rsi
xorl %edx, %edx
movl $0x6, %ecx
callq 0x59bc0
jmp 0x8a3a
leaq -0xc10(%rbp), %rdi
callq 0x5878
leaq -0xbf0(%rbp), %rdi
callq 0x5100
jmp 0x8a97
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x8a86
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xc10(%rbp), %rdi
callq 0x5878
leaq -0xbf0(%rbp), %rdi
callq 0x5100
jmp 0x8cb3
movl -0xa54(%rbp), %eax
cmpl -0x738(%rbp), %eax
jb 0x8aa7
jmp 0x8ad6
leaq -0x958(%rbp), %rdi
callq 0x9390
movl -0x788(%rbp), %ecx
cmpq %rcx, %rax
ja 0x8ac0
jmp 0x8ad6
jmp 0x8ac2
movl -0xa58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa58(%rbp)
jmp 0x8766
leaq -0x9f8(%rbp), %rdi
leaq -0x9a0(%rbp), %rsi
leaq -0x958(%rbp), %rdx
movl $0x1, %ecx
callq 0x5a6d0
movsd %xmm0, -0x10a8(%rbp)
jmp 0x8aff
movsd -0x10a8(%rbp), %xmm0
movsd %xmm0, -0xa00(%rbp)
movsd -0x6a8(%rbp), %xmm0
leaq -0x958(%rbp), %rdi
leaq -0x928(%rbp), %rsi
callq 0x8ec0
jmp 0x8b2c
movq 0x8f4b5(%rip), %rdi     # 0x97fe8
leaq 0x60acb(%rip), %rsi     # 0x69605
callq 0x53e0
movq %rax, -0x10b0(%rbp)
jmp 0x8b48
movq -0x10b0(%rbp), %rdi
movl -0xa54(%rbp), %esi
callq 0x5570
movq %rax, -0x10b8(%rbp)
jmp 0x8b63
movq -0x10b8(%rbp), %rdi
movq 0x8f427(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x8b78
movq 0x8f469(%rip), %rdi     # 0x97fe8
leaq 0x60aa3(%rip), %rsi     # 0x69629
callq 0x53e0
movq %rax, -0x10c0(%rbp)
jmp 0x8b94
leaq -0x958(%rbp), %rdi
callq 0x9390
movq -0x10c0(%rbp), %rdi
movq %rax, %rsi
callq 0x50f0
movq %rax, -0x10c8(%rbp)
jmp 0x8bb8
movq -0x10c8(%rbp), %rdi
movq 0x8f3d2(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x8bcd
movq 0x8f414(%rip), %rdi     # 0x97fe8
leaq 0x60a68(%rip), %rsi     # 0x69643
callq 0x53e0
movq %rax, -0x10d0(%rbp)
jmp 0x8be9
movq -0x10d0(%rbp), %rdi
movsd -0xa00(%rbp), %xmm0
callq 0x57d0
movq %rax, -0x10d8(%rbp)
jmp 0x8c06
movq -0x10d8(%rbp), %rdi
movq 0x8f384(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x8c1b
movl -0xa04(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa04(%rbp)
leaq -0x958(%rbp), %rdi
callq 0x9390
movl -0x788(%rbp), %ecx
cmpq %rcx, %rax
ja 0x8c7e
movq 0x8f3a0(%rip), %rdi     # 0x97fe8
leaq 0x60a14(%rip), %rsi     # 0x69663
callq 0x53e0
movq %rax, -0x10e0(%rbp)
jmp 0x8c5d
movq -0x10e0(%rbp), %rdi
movq 0x8f32d(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x8c72
movl $0x3, -0xc14(%rbp)
jmp 0x8c88
movl $0x0, -0xc14(%rbp)
leaq -0xa50(%rbp), %rdi
callq 0x9570
leaq -0xa38(%rbp), %rdi
callq 0x95d0
movl -0xc14(%rbp), %eax
testl %eax, %eax
je 0x8cae
jmp 0x8cac
jmp 0x8ccd
jmp 0x8575
leaq -0xa50(%rbp), %rdi
callq 0x9570
leaq -0xa38(%rbp), %rdi
callq 0x95d0
jmp 0x8d2f
leaq -0xc38(%rbp), %rdi
leaq -0x708(%rbp), %rsi
callq 0x51c0
jmp 0x8ce2
leaq -0xc38(%rbp), %rdi
leaq -0x958(%rbp), %rsi
xorl %edx, %edx
movl $0x6, %ecx
callq 0x59bc0
jmp 0x8cfe
leaq -0xc38(%rbp), %rdi
callq 0x5878
xorl %edi, %edi
callq 0x54a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xc38(%rbp), %rdi
callq 0x5878
leaq -0x9a0(%rbp), %rdi
callq 0x92a0
leaq -0x988(%rbp), %rdi
callq 0x95f0
leaq -0x958(%rbp), %rdi
callq 0x95f0
leaq -0x928(%rbp), %rdi
callq 0x95d0
leaq -0x858(%rbp), %rdi
callq 0x95d0
leaq -0x708(%rbp), %rdi
callq 0x5878
leaq -0x6e8(%rbp), %rdi
callq 0x5878
leaq -0x6c8(%rbp), %rdi
callq 0x5878
leaq -0xc8(%rbp), %rdi
callq 0x9610
movq -0xf8(%rbp), %rdi
callq 0x5730
nopw (%rax,%rax)