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

    conf::Config config;
    config("usage: 2g-prune-kn [OPTION...] WORDLIST TRANSITIONS_INIT MSFG_IN TRANSITIONS_OUT\n")
      ('h', "help", "", "", "display help")
      ('c', "candidates=INT", "arg", "5000", "Number of candidate subwords to try to remove per iteration")
      ('r', "removals=INT", "arg", "500", "Number of removals per iteration")
      ('m', "min-length=INT", "arg", "2", "Minimum length of subwords to remove, DEFAULT: 2")
      ('v', "vocab-size=INT", "arg must", "", "Target vocabulary size (stopping criterion)")
      ('d', "discount=FLOAT", "arg", "0.1", "Kneser-Ney discount parameter")
      ('t', "temp-models=INT", "arg", "0", "Write out intermediate models for #V mod INT == 0")
      ('n', "no-normalization", "", "", "Do not normalize probabilities after smoothing")
      ('b', "normalize-by-bigrams", "", "", "Normalize subword scores by the number of bigrams")
      ('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() != 4) config.print_help(stderr, 1);

    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();
    string wordlist_fname = config.arguments[0];
    string initial_transitions_fname = config.arguments[1];
    string msfg_fname = config.arguments[2];
    string transition_fname = config.arguments[3];
    flt_type discount = config["discount"].get_float();
    unsigned int temp_vocab_interval = config["temp-models"].get_int();
    bool enable_fb = config["forward-backward"].specified;
    bool no_normalization = config["no-normalization"].specified;
    bool normalize_by_bigrams = config["normalize-by-bigrams"].specified;
    bool utf8_encoding = config["utf-8"].specified;

    std::cerr << std::boolalpha;
    cerr << "parameters, wordlist: " << wordlist_fname << endl;
    cerr << "parameters, initial transitions: " << initial_transitions_fname << endl;
    cerr << "parameters, msfg: " << msfg_fname << endl;
    cerr << "parameters, transitions out: " << transition_fname << endl;
    cerr << "parameters, candidates per iteration: " << n_candidates_per_iter << endl;
    cerr << "parameters, removals per iteration: " << removals_per_iter << endl;
    cerr << "parameters, minimum length for subwords to remove: " << min_removal_length << endl;
    cerr << "parameters, target vocab size: " << target_vocab_size << endl;
    cerr << "parameters, discount: " << discount << endl;
    cerr << "parameters, floor lp: " << FLOOR_LP << endl;
    if (temp_vocab_interval > 0)
        cerr << "parameters, write temp models whenever #V modulo " << temp_vocab_interval << " == 0" << endl;
    else
        cerr << "parameters, write temp models: NO" << endl;
    cerr << "parameters, no normalization after smoothing: " << no_normalization << endl;
    cerr << "parameters, normalize subword scores by the number of bigrams: " << normalize_by_bigrams << endl;
    cerr << "parameters, use forward-backward: " << enable_fb << endl;
    cerr << "parameters, utf-8 encoding: " << utf8_encoding << endl;

    int word_maxlen;
    map<string, flt_type> all_chars;
    map<string, flt_type> freqs;
    map<string, flt_type> words;
    MultiStringFactorGraph msfg(start_end_symbol);
    transitions_t transitions;
    transitions_t trans_stats;
    map<string, flt_type> unigram_stats;
    set<string> short_subwords;

    cerr << "Reading initial transitions " << initial_transitions_fname << endl;
    int retval = Bigrams::read_transitions(transitions, initial_transitions_fname);
    if (retval < 0) {
        cerr << "something went wrong reading transitions" << endl;
        exit(EXIT_FAILURE);
    }
    cerr << "\tnumber of transitions: " << Bigrams::transition_count(transitions) << endl;
    cerr << "\tvocabulary size: " << transitions.size() << endl;

    map<string, flt_type> vocab;
    Bigrams::trans_to_vocab(transitions, vocab);
    find_short_factors(vocab, short_subwords, min_removal_length, utf8_encoding);

    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;

    cerr << "Reading msfg " << msfg_fname << endl;
    msfg.read(msfg_fname);
    msfg.prune_unused(transitions);

    std::cerr << std::setprecision(15);
    int iteration = 1;
    unsigned int next_out_vocab_size=0;
    while (true) {

        cerr << "Iteration " << iteration << endl;

        assign_scores(transitions, msfg);
        flt_type lp = Bigrams::collect_trans_stats(words, msfg, trans_stats, unigram_stats, enable_fb);
        Bigrams::kn_smooth(trans_stats, transitions, discount);
        if (!no_normalization) Bigrams::normalize(transitions);
        trans_stats.clear();

        cerr << "\tbigram likelihood: " << lp << endl;
        cerr << "\tnumber of transitions: " << Bigrams::transition_count(transitions) << endl;
        cerr << "\tvocabulary size: " << transitions.size() << endl;

        if (iteration==1 && temp_vocab_interval > 0)
            next_out_vocab_size = transitions.size()/temp_vocab_interval * temp_vocab_interval;

        // Get candidate subwords
        cerr << "\tinitializing removals .." << endl;
        map<string, flt_type> candidates;
        Bigrams::init_candidates_freq(n_candidates_per_iter, unigram_stats,
                                      candidates, short_subwords);
        //Bigrams::init_candidates_num_contexts(n_candidates_per_iter, transitions,
        //                                      unigram_stats, candidates, short_subwords);

        // Score all candidates
        cerr << "\tranking removals .." << endl;
        assign_scores(transitions, msfg);
        Bigrams::rank_candidate_subwords(words, msfg, unigram_stats, transitions,
                                         candidates, enable_fb, normalize_by_bigrams);

        // Remove subwords
        vector<pair<string, flt_type> > sorted_scores;
        Unigrams::sort_vocab(candidates, sorted_scores, true);
        vector<string> to_remove;
        for (auto it = sorted_scores.begin(); it != sorted_scores.end(); ++it) {
            to_remove.push_back(it->first);
            if (((transitions.size()-to_remove.size()) % removals_per_iter == 0)
                  && to_remove.size() >= (removals_per_iter/2))
                    break;
        }
        Bigrams::remove_transitions(to_remove, transitions);
        for (auto it = to_remove.begin(); it != to_remove.end(); ++it)
            msfg.remove_arcs(*it);

        Bigrams::iterate_kn(words, msfg, transitions, enable_fb, discount, 1);
        if (!no_normalization) Bigrams::normalize(transitions);
        msfg.prune_unused(transitions);

        // Write intermediate model
        if (temp_vocab_interval > 0
            && transitions.size() <= next_out_vocab_size
            && transitions.size() > target_vocab_size)
        {
            ostringstream transitions_temp;
            transitions_temp << "transitions." << transitions.size() << ".gz";
            cerr << "\twriting to: " << transitions_temp.str() << endl;
            Bigrams::write_transitions(transitions, transitions_temp.str());
            next_out_vocab_size -= temp_vocab_interval;
        }

        if  (transitions.size() <= target_vocab_size) break;
        iteration++;
    }

    // Write the final model
    Bigrams::write_transitions(transitions, transition_fname);

    exit(EXIT_SUCCESS);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1400, %rsp           # imm = 0x1400
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0x11990
leaq -0xe9(%rbp), %rdi
movq %rdi, -0xef8(%rbp)
callq 0x5740
movq -0xef8(%rbp), %rdx
leaq 0x6407c(%rip), %rsi     # 0x6a012
leaq -0xe8(%rbp), %rdi
callq 0x5590
jmp 0x5fa4
leaq -0xc8(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0x11a00
movq %rax, -0xf00(%rbp)
jmp 0x5fc0
leaq -0x121(%rbp), %rdi
movq %rdi, -0xf08(%rbp)
callq 0x5740
movq -0xf08(%rbp), %rdx
leaq 0x6408b(%rip), %rsi     # 0x6a06c
leaq -0x120(%rbp), %rdi
callq 0x5590
jmp 0x5fef
leaq -0x149(%rbp), %rdi
movq %rdi, -0xf10(%rbp)
callq 0x5740
movq -0xf10(%rbp), %rdx
leaq 0x649ad(%rip), %rsi     # 0x6a9bd
leaq -0x148(%rbp), %rdi
callq 0x5590
jmp 0x601e
leaq -0x171(%rbp), %rdi
movq %rdi, -0xf18(%rbp)
callq 0x5740
movq -0xf18(%rbp), %rdx
leaq 0x6497e(%rip), %rsi     # 0x6a9bd
leaq -0x170(%rbp), %rdi
callq 0x5590
jmp 0x604d
leaq -0x199(%rbp), %rdi
movq %rdi, -0xf20(%rbp)
callq 0x5740
movq -0xf20(%rbp), %rdx
leaq 0x63ff6(%rip), %rsi     # 0x6a064
leaq -0x198(%rbp), %rdi
callq 0x5590
jmp 0x607c
movq -0xf00(%rbp), %rdi
movl $0x68, %esi
leaq -0x120(%rbp), %rdx
leaq -0x148(%rbp), %rcx
leaq -0x170(%rbp), %r8
leaq -0x198(%rbp), %r9
callq 0x11a30
movq %rax, -0xf28(%rbp)
jmp 0x60b2
leaq -0x1c1(%rbp), %rdi
movq %rdi, -0xf30(%rbp)
callq 0x5740
movq -0xf30(%rbp), %rdx
leaq 0x63f9e(%rip), %rsi     # 0x6a071
leaq -0x1c0(%rbp), %rdi
callq 0x5590
jmp 0x60e1
leaq -0x1e9(%rbp), %rdi
movq %rdi, -0xf38(%rbp)
callq 0x5740
movq -0xf38(%rbp), %rdx
leaq 0x63f7e(%rip), %rsi     # 0x6a080
leaq -0x1e8(%rbp), %rdi
callq 0x5590
jmp 0x6110
leaq -0x211(%rbp), %rdi
movq %rdi, -0xf40(%rbp)
callq 0x5740
movq -0xf40(%rbp), %rdx
leaq 0x63f53(%rip), %rsi     # 0x6a084
leaq -0x210(%rbp), %rdi
callq 0x5590
jmp 0x613f
leaq -0x239(%rbp), %rdi
movq %rdi, -0xf48(%rbp)
callq 0x5740
movq -0xf48(%rbp), %rdx
leaq 0x63f29(%rip), %rsi     # 0x6a089
leaq -0x238(%rbp), %rdi
callq 0x5590
jmp 0x616e
movq -0xf28(%rbp), %rdi
movl $0x63, %esi
leaq -0x1c0(%rbp), %rdx
leaq -0x1e8(%rbp), %rcx
leaq -0x210(%rbp), %r8
leaq -0x238(%rbp), %r9
callq 0x11a30
movq %rax, -0xf50(%rbp)
jmp 0x61a4
leaq -0x261(%rbp), %rdi
movq %rdi, -0xf58(%rbp)
callq 0x5740
movq -0xf58(%rbp), %rdx
leaq 0x63f00(%rip), %rsi     # 0x6a0c5
leaq -0x260(%rbp), %rdi
callq 0x5590
jmp 0x61d3
leaq -0x289(%rbp), %rdi
movq %rdi, -0xf60(%rbp)
callq 0x5740
movq -0xf60(%rbp), %rdx
leaq 0x63e8c(%rip), %rsi     # 0x6a080
leaq -0x288(%rbp), %rdi
callq 0x5590
jmp 0x6202
leaq -0x2b1(%rbp), %rdi
movq %rdi, -0xf68(%rbp)
callq 0x5740
movq -0xf68(%rbp), %rdx
leaq 0x63eaf(%rip), %rsi     # 0x6a0d2
leaq -0x2b0(%rbp), %rdi
callq 0x5590
jmp 0x6231
leaq -0x2d9(%rbp), %rdi
movq %rdi, -0xf70(%rbp)
callq 0x5740
movq -0xf70(%rbp), %rdx
leaq 0x63e84(%rip), %rsi     # 0x6a0d6
leaq -0x2d8(%rbp), %rdi
callq 0x5590
jmp 0x6260
movq -0xf50(%rbp), %rdi
movl $0x72, %esi
leaq -0x260(%rbp), %rdx
leaq -0x288(%rbp), %rcx
leaq -0x2b0(%rbp), %r8
leaq -0x2d8(%rbp), %r9
callq 0x11a30
movq %rax, -0xf78(%rbp)
jmp 0x6296
leaq -0x301(%rbp), %rdi
movq %rdi, -0xf80(%rbp)
callq 0x5740
movq -0xf80(%rbp), %rdx
leaq 0x63e40(%rip), %rsi     # 0x6a0f7
leaq -0x300(%rbp), %rdi
callq 0x5590
jmp 0x62c5
leaq -0x329(%rbp), %rdi
movq %rdi, -0xf88(%rbp)
callq 0x5740
movq -0xf88(%rbp), %rdx
leaq 0x63d9a(%rip), %rsi     # 0x6a080
leaq -0x328(%rbp), %rdi
callq 0x5590
jmp 0x62f4
leaq -0x351(%rbp), %rdi
movq %rdi, -0xf90(%rbp)
callq 0x5740
movq -0xf90(%rbp), %rdx
leaq 0x63e20(%rip), %rsi     # 0x6a135
leaq -0x350(%rbp), %rdi
callq 0x5590
jmp 0x6323
leaq -0x379(%rbp), %rdi
movq %rdi, -0xf98(%rbp)
callq 0x5740
movq -0xf98(%rbp), %rdx
leaq 0x63dc2(%rip), %rsi     # 0x6a106
leaq -0x378(%rbp), %rdi
callq 0x5590
jmp 0x6352
movq -0xf78(%rbp), %rdi
movl $0x6d, %esi
leaq -0x300(%rbp), %rdx
leaq -0x328(%rbp), %rcx
leaq -0x350(%rbp), %r8
leaq -0x378(%rbp), %r9
callq 0x11a30
movq %rax, -0xfa0(%rbp)
jmp 0x6388
leaq -0x3a1(%rbp), %rdi
movq %rdi, -0xfa8(%rbp)
callq 0x5740
movq -0xfa8(%rbp), %rdx
leaq 0x63d8e(%rip), %rsi     # 0x6a137
leaq -0x3a0(%rbp), %rdi
callq 0x5590
jmp 0x63b7
leaq -0x3c9(%rbp), %rdi
movq %rdi, -0xfb0(%rbp)
callq 0x5740
movq -0xfb0(%rbp), %rdx
leaq 0x63d6e(%rip), %rsi     # 0x6a146
leaq -0x3c8(%rbp), %rdi
callq 0x5590
jmp 0x63e6
leaq -0x3f1(%rbp), %rdi
movq %rdi, -0xfb8(%rbp)
callq 0x5740
movq -0xfb8(%rbp), %rdx
leaq 0x645b6(%rip), %rsi     # 0x6a9bd
leaq -0x3f0(%rbp), %rdi
callq 0x5590
jmp 0x6415
leaq -0x419(%rbp), %rdi
movq %rdi, -0xfc0(%rbp)
callq 0x5740
movq -0xfc0(%rbp), %rdx
leaq 0x63d19(%rip), %rsi     # 0x6a14f
leaq -0x418(%rbp), %rdi
callq 0x5590
jmp 0x6444
movq -0xfa0(%rbp), %rdi
movl $0x76, %esi
leaq -0x3a0(%rbp), %rdx
leaq -0x3c8(%rbp), %rcx
leaq -0x3f0(%rbp), %r8
leaq -0x418(%rbp), %r9
callq 0x11a30
movq %rax, -0xfc8(%rbp)
jmp 0x647a
leaq -0x441(%rbp), %rdi
movq %rdi, -0xfd0(%rbp)
callq 0x5740
movq -0xfd0(%rbp), %rdx
leaq 0x63ce0(%rip), %rsi     # 0x6a17b
leaq -0x440(%rbp), %rdi
callq 0x5590
jmp 0x64a9
leaq -0x469(%rbp), %rdi
movq %rdi, -0xfd8(%rbp)
callq 0x5740
movq -0xfd8(%rbp), %rdx
leaq 0x63bb6(%rip), %rsi     # 0x6a080
leaq -0x468(%rbp), %rdi
callq 0x5590
jmp 0x64d8
leaq -0x491(%rbp), %rdi
movq %rdi, -0xfe0(%rbp)
callq 0x5740
movq -0xfe0(%rbp), %rdx
leaq 0x63c91(%rip), %rsi     # 0x6a18a
leaq -0x490(%rbp), %rdi
callq 0x5590
jmp 0x6507
leaq -0x4b9(%rbp), %rdi
movq %rdi, -0xfe8(%rbp)
callq 0x5740
movq -0xfe8(%rbp), %rdx
leaq 0x63c66(%rip), %rsi     # 0x6a18e
leaq -0x4b8(%rbp), %rdi
callq 0x5590
jmp 0x6536
movq -0xfc8(%rbp), %rdi
movl $0x64, %esi
leaq -0x440(%rbp), %rdx
leaq -0x468(%rbp), %rcx
leaq -0x490(%rbp), %r8
leaq -0x4b8(%rbp), %r9
callq 0x11a30
movq %rax, -0xff0(%rbp)
jmp 0x656c
leaq -0x4e1(%rbp), %rdi
movq %rdi, -0xff8(%rbp)
callq 0x5740
movq -0xff8(%rbp), %rdx
leaq 0x63c1f(%rip), %rsi     # 0x6a1ac
leaq -0x4e0(%rbp), %rdi
callq 0x5590
jmp 0x659b
leaq -0x509(%rbp), %rdi
movq %rdi, -0x1000(%rbp)
callq 0x5740
movq -0x1000(%rbp), %rdx
leaq 0x63ac4(%rip), %rsi     # 0x6a080
leaq -0x508(%rbp), %rdi
callq 0x5590
jmp 0x65ca
leaq -0x531(%rbp), %rdi
movq %rdi, -0x1008(%rbp)
callq 0x5740
movq -0x1008(%rbp), %rdx
leaq 0x63c01(%rip), %rsi     # 0x6a1ec
leaq -0x530(%rbp), %rdi
callq 0x5590
jmp 0x65f9
leaq -0x559(%rbp), %rdi
movq %rdi, -0x1010(%rbp)
callq 0x5740
movq -0x1010(%rbp), %rdx
leaq 0x63ba2(%rip), %rsi     # 0x6a1bc
leaq -0x558(%rbp), %rdi
callq 0x5590
jmp 0x6628
movq -0xff0(%rbp), %rdi
movl $0x74, %esi
leaq -0x4e0(%rbp), %rdx
leaq -0x508(%rbp), %rcx
leaq -0x530(%rbp), %r8
leaq -0x558(%rbp), %r9
callq 0x11a30
movq %rax, -0x1018(%rbp)
jmp 0x665e
leaq -0x581(%rbp), %rdi
movq %rdi, -0x1020(%rbp)
callq 0x5740
movq -0x1020(%rbp), %rdx
leaq 0x63b6f(%rip), %rsi     # 0x6a1ee
leaq -0x580(%rbp), %rdi
callq 0x5590
jmp 0x668d
leaq -0x5a9(%rbp), %rdi
movq %rdi, -0x1028(%rbp)
callq 0x5740
movq -0x1028(%rbp), %rdx
leaq 0x6430f(%rip), %rsi     # 0x6a9bd
leaq -0x5a8(%rbp), %rdi
callq 0x5590
jmp 0x66bc
leaq -0x5d1(%rbp), %rdi
movq %rdi, -0x1030(%rbp)
callq 0x5740
movq -0x1030(%rbp), %rdx
leaq 0x642e0(%rip), %rsi     # 0x6a9bd
leaq -0x5d0(%rbp), %rdi
callq 0x5590
jmp 0x66eb
leaq -0x5f9(%rbp), %rdi
movq %rdi, -0x1038(%rbp)
callq 0x5740
movq -0x1038(%rbp), %rdx
leaq 0x63af3(%rip), %rsi     # 0x6a1ff
leaq -0x5f8(%rbp), %rdi
callq 0x5590
jmp 0x671a
movq -0x1018(%rbp), %rdi
movl $0x6e, %esi
leaq -0x580(%rbp), %rdx
leaq -0x5a8(%rbp), %rcx
leaq -0x5d0(%rbp), %r8
leaq -0x5f8(%rbp), %r9
callq 0x11a30
movq %rax, -0x1040(%rbp)
jmp 0x6750
leaq -0x621(%rbp), %rdi
movq %rdi, -0x1048(%rbp)
callq 0x5740
movq -0x1048(%rbp), %rdx
leaq 0x63abd(%rip), %rsi     # 0x6a22e
leaq -0x620(%rbp), %rdi
callq 0x5590
jmp 0x677f
leaq -0x649(%rbp), %rdi
movq %rdi, -0x1050(%rbp)
callq 0x5740
movq -0x1050(%rbp), %rdx
leaq 0x6421d(%rip), %rsi     # 0x6a9bd
leaq -0x648(%rbp), %rdi
callq 0x5590
jmp 0x67ae
leaq -0x671(%rbp), %rdi
movq %rdi, -0x1058(%rbp)
callq 0x5740
movq -0x1058(%rbp), %rdx
leaq 0x641ee(%rip), %rsi     # 0x6a9bd
leaq -0x670(%rbp), %rdi
callq 0x5590
jmp 0x67dd
leaq -0x699(%rbp), %rdi
movq %rdi, -0x1060(%rbp)
callq 0x5740
movq -0x1060(%rbp), %rdx
leaq 0x63a45(%rip), %rsi     # 0x6a243
leaq -0x698(%rbp), %rdi
callq 0x5590
jmp 0x680c
movq -0x1040(%rbp), %rdi
movl $0x62, %esi
leaq -0x620(%rbp), %rdx
leaq -0x648(%rbp), %rcx
leaq -0x670(%rbp), %r8
leaq -0x698(%rbp), %r9
callq 0x11a30
movq %rax, -0x1068(%rbp)
jmp 0x6842
leaq -0x6c1(%rbp), %rdi
movq %rdi, -0x1070(%rbp)
callq 0x5740
movq -0x1070(%rbp), %rdx
leaq 0x63a12(%rip), %rsi     # 0x6a275
leaq -0x6c0(%rbp), %rdi
callq 0x5590
jmp 0x6871
leaq -0x6e9(%rbp), %rdi
movq %rdi, -0x1078(%rbp)
callq 0x5740
movq -0x1078(%rbp), %rdx
leaq 0x6412b(%rip), %rsi     # 0x6a9bd
leaq -0x6e8(%rbp), %rdi
callq 0x5590
jmp 0x68a0
leaq -0x711(%rbp), %rdi
movq %rdi, -0x1080(%rbp)
callq 0x5740
movq -0x1080(%rbp), %rdx
leaq 0x640fc(%rip), %rsi     # 0x6a9bd
leaq -0x710(%rbp), %rdi
callq 0x5590
jmp 0x68cf
leaq -0x739(%rbp), %rdi
movq %rdi, -0x1088(%rbp)
callq 0x5740
movq -0x1088(%rbp), %rdx
leaq 0x63996(%rip), %rsi     # 0x6a286
leaq -0x738(%rbp), %rdi
callq 0x5590
jmp 0x68fe
movq -0x1068(%rbp), %rdi
movl $0x66, %esi
leaq -0x6c0(%rbp), %rdx
leaq -0x6e8(%rbp), %rcx
leaq -0x710(%rbp), %r8
leaq -0x738(%rbp), %r9
callq 0x11a30
movq %rax, -0x1090(%rbp)
jmp 0x6934
leaq -0x761(%rbp), %rdi
movq %rdi, -0x1098(%rbp)
callq 0x5740
movq -0x1098(%rbp), %rdx
leaq 0x63966(%rip), %rsi     # 0x6a2bb
leaq -0x760(%rbp), %rdi
callq 0x5590
jmp 0x6963
leaq -0x789(%rbp), %rdi
movq %rdi, -0x10a0(%rbp)
callq 0x5740
movq -0x10a0(%rbp), %rdx
leaq 0x64039(%rip), %rsi     # 0x6a9bd
leaq -0x788(%rbp), %rdi
callq 0x5590
jmp 0x6992
leaq -0x7b1(%rbp), %rdi
movq %rdi, -0x10a8(%rbp)
callq 0x5740
movq -0x10a8(%rbp), %rdx
leaq 0x6400a(%rip), %rsi     # 0x6a9bd
leaq -0x7b0(%rbp), %rdi
callq 0x5590
jmp 0x69c1
leaq -0x7d9(%rbp), %rdi
movq %rdi, -0x10b0(%rbp)
callq 0x5740
movq -0x10b0(%rbp), %rdx
leaq 0x638df(%rip), %rsi     # 0x6a2c1
leaq -0x7d8(%rbp), %rdi
callq 0x5590
jmp 0x69f0
movq -0x1090(%rbp), %rdi
movl $0x38, %esi
leaq -0x760(%rbp), %rdx
leaq -0x788(%rbp), %rcx
leaq -0x7b0(%rbp), %r8
leaq -0x7d8(%rbp), %r9
callq 0x11a30
jmp 0x6a1f
leaq -0x7d8(%rbp), %rdi
callq 0x5878
leaq -0x7d9(%rbp), %rdi
callq 0x5450
leaq -0x7b0(%rbp), %rdi
callq 0x5878
leaq -0x7b1(%rbp), %rdi
callq 0x5450
leaq -0x788(%rbp), %rdi
callq 0x5878
leaq -0x789(%rbp), %rdi
callq 0x5450
leaq -0x760(%rbp), %rdi
callq 0x5878
leaq -0x761(%rbp), %rdi
callq 0x5450
leaq -0x738(%rbp), %rdi
callq 0x5878
leaq -0x739(%rbp), %rdi
callq 0x5450
leaq -0x710(%rbp), %rdi
callq 0x5878
leaq -0x711(%rbp), %rdi
callq 0x5450
leaq -0x6e8(%rbp), %rdi
callq 0x5878
leaq -0x6e9(%rbp), %rdi
callq 0x5450
leaq -0x6c0(%rbp), %rdi
callq 0x5878
leaq -0x6c1(%rbp), %rdi
callq 0x5450
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 0x12880
jmp 0x6e6c
leaq -0xc8(%rbp), %rdi
addq $0x98, %rdi
callq 0x9660
cmpq $0x4, %rax
je 0x7810
movq 0x92130(%rip), %rax     # 0x98fc0
movq (%rax), %rsi
leaq -0xc8(%rbp), %rdi
movl $0x1, %edx
callq 0x13040
jmp 0x6ea6
jmp 0x7810
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x77e8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x77dc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x77d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x77b8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x77a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7788
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x777c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7770
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7758
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7740
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7728
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x771c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7710
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x76f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x76e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x76c8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x76bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x76b0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7698
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7680
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7668
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x765c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7650
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7638
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7620
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7608
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x75fc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x75f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x75d8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x75c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x75a8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x759c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7590
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7578
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7560
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7548
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x753c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7530
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7518
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7500
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x74e8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x74dc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x74d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x74b8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x74a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7488
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x747c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7470
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7458
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7440
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7428
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x741c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7410
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x73f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x73e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x73c8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x7d8(%rbp), %rdi
callq 0x5878
leaq -0x7d9(%rbp), %rdi
callq 0x5450
leaq -0x7b0(%rbp), %rdi
callq 0x5878
leaq -0x7b1(%rbp), %rdi
callq 0x5450
leaq -0x788(%rbp), %rdi
callq 0x5878
leaq -0x789(%rbp), %rdi
callq 0x5450
leaq -0x760(%rbp), %rdi
callq 0x5878
leaq -0x761(%rbp), %rdi
callq 0x5450
leaq -0x738(%rbp), %rdi
callq 0x5878
leaq -0x739(%rbp), %rdi
callq 0x5450
leaq -0x710(%rbp), %rdi
callq 0x5878
leaq -0x711(%rbp), %rdi
callq 0x5450
leaq -0x6e8(%rbp), %rdi
callq 0x5878
leaq -0x6e9(%rbp), %rdi
callq 0x5450
leaq -0x6c0(%rbp), %rdi
callq 0x5878
leaq -0x6c1(%rbp), %rdi
callq 0x5450
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 0x933b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x933b
leaq -0x801(%rbp), %rdi
movq %rdi, -0x10b8(%rbp)
callq 0x5740
movq -0x10b8(%rbp), %rdx
leaq 0x62ab0(%rip), %rsi     # 0x6a2e1
leaq -0x800(%rbp), %rdi
callq 0x5590
jmp 0x783f
leaq -0xc8(%rbp), %rdi
leaq -0x800(%rbp), %rsi
callq 0x129c0
movq %rax, -0x10c0(%rbp)
jmp 0x785b
movq -0x10c0(%rbp), %rdi
callq 0x11710
movl %eax, -0x10c4(%rbp)
jmp 0x786f
leaq -0x800(%rbp), %rdi
callq 0x5878
leaq -0x801(%rbp), %rdi
callq 0x5450
movl -0x10c4(%rbp), %eax
movl %eax, -0x7e0(%rbp)
leaq -0x829(%rbp), %rdi
movq %rdi, -0x10d0(%rbp)
callq 0x5740
movq -0x10d0(%rbp), %rdx
leaq 0x62a38(%rip), %rsi     # 0x6a2ec
leaq -0x828(%rbp), %rdi
callq 0x5590
jmp 0x78c2
leaq -0xc8(%rbp), %rdi
leaq -0x828(%rbp), %rsi
callq 0x129c0
movq %rax, -0x10d8(%rbp)
jmp 0x78de
movq -0x10d8(%rbp), %rdi
callq 0x11710
movl %eax, -0x10dc(%rbp)
jmp 0x78f2
leaq -0x828(%rbp), %rdi
callq 0x5878
leaq -0x829(%rbp), %rdi
callq 0x5450
movl -0x10dc(%rbp), %eax
movl %eax, -0x808(%rbp)
leaq -0x851(%rbp), %rdi
movq %rdi, -0x10e8(%rbp)
callq 0x5740
movq -0x10e8(%rbp), %rdx
leaq 0x629be(%rip), %rsi     # 0x6a2f5
leaq -0x850(%rbp), %rdi
callq 0x5590
jmp 0x7945
leaq -0xc8(%rbp), %rdi
leaq -0x850(%rbp), %rsi
callq 0x129c0
movq %rax, -0x10f0(%rbp)
jmp 0x7961
movq -0x10f0(%rbp), %rdi
callq 0x11710
movl %eax, -0x10f4(%rbp)
jmp 0x7975
leaq -0x850(%rbp), %rdi
callq 0x5878
leaq -0x851(%rbp), %rdi
callq 0x5450
movl -0x10f4(%rbp), %eax
movl %eax, -0x830(%rbp)
leaq -0x879(%rbp), %rdi
movq %rdi, -0x1100(%rbp)
callq 0x5740
movq -0x1100(%rbp), %rdx
leaq 0x62946(%rip), %rsi     # 0x6a300
leaq -0x878(%rbp), %rdi
callq 0x5590
jmp 0x79c8
leaq -0xc8(%rbp), %rdi
leaq -0x878(%rbp), %rsi
callq 0x129c0
movq %rax, -0x1108(%rbp)
jmp 0x79e4
movq -0x1108(%rbp), %rdi
callq 0x11710
movl %eax, -0x110c(%rbp)
jmp 0x79f8
leaq -0x878(%rbp), %rdi
callq 0x5878
leaq -0x879(%rbp), %rdi
callq 0x5450
movl -0x110c(%rbp), %eax
movl %eax, -0x858(%rbp)
leaq -0x30(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x9680
movq %rax, %rsi
leaq -0x8a0(%rbp), %rdi
callq 0x51c0
jmp 0x7a3a
leaq -0x30(%rbp), %rdi
movl $0x1, %esi
callq 0x9680
movq %rax, %rsi
leaq -0x8c0(%rbp), %rdi
callq 0x51c0
jmp 0x7a59
leaq -0x30(%rbp), %rdi
movl $0x2, %esi
callq 0x9680
movq %rax, %rsi
leaq -0x8e0(%rbp), %rdi
callq 0x51c0
jmp 0x7a78
leaq -0x30(%rbp), %rdi
movl $0x3, %esi
callq 0x9680
movq %rax, %rsi
leaq -0x900(%rbp), %rdi
callq 0x51c0
jmp 0x7a97
leaq -0x929(%rbp), %rdi
movq %rdi, -0x1118(%rbp)
callq 0x5740
movq -0x1118(%rbp), %rdx
leaq 0x62853(%rip), %rsi     # 0x6a30b
leaq -0x928(%rbp), %rdi
callq 0x5590
jmp 0x7ac6
leaq -0xc8(%rbp), %rdi
leaq -0x928(%rbp), %rsi
callq 0x129c0
movq %rax, -0x1120(%rbp)
jmp 0x7ae2
movq -0x1120(%rbp), %rdi
callq 0x117d0
movss %xmm0, -0x1124(%rbp)
jmp 0x7af8
movss -0x1124(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x1138(%rbp)
leaq -0x928(%rbp), %rdi
callq 0x5878
leaq -0x929(%rbp), %rdi
callq 0x5450
movsd -0x1138(%rbp), %xmm0
movsd %xmm0, -0x908(%rbp)
leaq -0x951(%rbp), %rdi
movq %rdi, -0x1130(%rbp)
callq 0x5740
movq -0x1130(%rbp), %rdx
leaq 0x627bf(%rip), %rsi     # 0x6a314
leaq -0x950(%rbp), %rdi
callq 0x5590
jmp 0x7b63
leaq -0xc8(%rbp), %rdi
leaq -0x950(%rbp), %rsi
callq 0x129c0
movq %rax, -0x1140(%rbp)
jmp 0x7b7f
movq -0x1140(%rbp), %rdi
callq 0x11710
movl %eax, -0x1144(%rbp)
jmp 0x7b93
leaq -0x950(%rbp), %rdi
callq 0x5878
leaq -0x951(%rbp), %rdi
callq 0x5450
movl -0x1144(%rbp), %eax
movl %eax, -0x930(%rbp)
leaq -0x979(%rbp), %rdi
movq %rdi, -0x1150(%rbp)
callq 0x5740
movq -0x1150(%rbp), %rdx
leaq 0x6269d(%rip), %rsi     # 0x6a275
leaq -0x978(%rbp), %rdi
callq 0x5590
jmp 0x7be6
leaq -0xc8(%rbp), %rdi
leaq -0x978(%rbp), %rsi
callq 0x129c0
movq %rax, -0x1158(%rbp)
jmp 0x7c02
movq -0x1158(%rbp), %rax
movb 0x4a(%rax), %al
movb %al, -0x1161(%rbp)
leaq -0x978(%rbp), %rdi
callq 0x5878
leaq -0x979(%rbp), %rdi
callq 0x5450
movb -0x1161(%rbp), %al
andb $0x1, %al
movb %al, -0x952(%rbp)
leaq -0x9a1(%rbp), %rdi
movq %rdi, -0x1160(%rbp)
callq 0x5740
movq -0x1160(%rbp), %rdx
leaq 0x62595(%rip), %rsi     # 0x6a1ee
leaq -0x9a0(%rbp), %rdi
callq 0x5590
jmp 0x7c67
leaq -0xc8(%rbp), %rdi
leaq -0x9a0(%rbp), %rsi
callq 0x129c0
movq %rax, -0x1170(%rbp)
jmp 0x7c83
movq -0x1170(%rbp), %rax
movb 0x4a(%rax), %al
movb %al, -0x1179(%rbp)
leaq -0x9a0(%rbp), %rdi
callq 0x5878
leaq -0x9a1(%rbp), %rdi
callq 0x5450
movb -0x1179(%rbp), %al
andb $0x1, %al
movb %al, -0x97a(%rbp)
leaq -0x9c9(%rbp), %rdi
movq %rdi, -0x1178(%rbp)
callq 0x5740
movq -0x1178(%rbp), %rdx
leaq 0x62554(%rip), %rsi     # 0x6a22e
leaq -0x9c8(%rbp), %rdi
callq 0x5590
jmp 0x7ce8
leaq -0xc8(%rbp), %rdi
leaq -0x9c8(%rbp), %rsi
callq 0x129c0
movq %rax, -0x1188(%rbp)
jmp 0x7d04
movq -0x1188(%rbp), %rax
movb 0x4a(%rax), %al
movb %al, -0x1191(%rbp)
leaq -0x9c8(%rbp), %rdi
callq 0x5878
leaq -0x9c9(%rbp), %rdi
callq 0x5450
movb -0x1191(%rbp), %al
andb $0x1, %al
movb %al, -0x9a2(%rbp)
leaq -0x9f1(%rbp), %rdi
movq %rdi, -0x1190(%rbp)
callq 0x5740
movq -0x1190(%rbp), %rdx
leaq 0x62560(%rip), %rsi     # 0x6a2bb
leaq -0x9f0(%rbp), %rdi
callq 0x5590
jmp 0x7d69
leaq -0xc8(%rbp), %rdi
leaq -0x9f0(%rbp), %rsi
callq 0x129c0
movq %rax, -0x11a0(%rbp)
jmp 0x7d85
movq -0x11a0(%rbp), %rax
movb 0x4a(%rax), %al
movb %al, -0x11a1(%rbp)
leaq -0x9f0(%rbp), %rdi
callq 0x5878
leaq -0x9f1(%rbp), %rdi
callq 0x5450
movb -0x11a1(%rbp), %al
andb $0x1, %al
movb %al, -0x9ca(%rbp)
movq 0x91226(%rip), %rdi     # 0x98fe8
leaq 0x18d7(%rip), %rsi      # 0x96a0
callq 0x5150
jmp 0x7dd0
movq 0x91211(%rip), %rdi     # 0x98fe8
leaq 0x62542(%rip), %rsi     # 0x6a320
callq 0x53e0
movq %rax, -0x11b0(%rbp)
jmp 0x7dec
movq -0x11b0(%rbp), %rdi
leaq -0x8a0(%rbp), %rsi
callq 0x53a0
movq %rax, -0x11b8(%rbp)
jmp 0x7e08
movq -0x11b8(%rbp), %rdi
movq 0x91182(%rip), %rsi     # 0x98f98
callq 0x5430
jmp 0x7e1d
movq 0x911c4(%rip), %rdi     # 0x98fe8
leaq 0x6250c(%rip), %rsi     # 0x6a337
callq 0x53e0
movq %rax, -0x11c0(%rbp)
jmp 0x7e39
movq -0x11c0(%rbp), %rdi
leaq -0x8c0(%rbp), %rsi
callq 0x53a0
movq %rax, -0x11c8(%rbp)
jmp 0x7e55
movq -0x11c8(%rbp), %rdi
movq 0x91135(%rip), %rsi     # 0x98f98
callq 0x5430
jmp 0x7e6a
movq 0x91177(%rip), %rdi     # 0x98fe8
leaq 0x624e1(%rip), %rsi     # 0x6a359
callq 0x53e0
movq %rax, -0x11d0(%rbp)
jmp 0x7e86
movq -0x11d0(%rbp), %rdi
leaq -0x8e0(%rbp), %rsi
callq 0x53a0
movq %rax, -0x11d8(%rbp)
jmp 0x7ea2
movq -0x11d8(%rbp), %rdi
movq 0x910e8(%rip), %rsi     # 0x98f98
callq 0x5430
jmp 0x7eb7
movq 0x9112a(%rip), %rdi     # 0x98fe8
leaq 0x624a7(%rip), %rsi     # 0x6a36c
callq 0x53e0
movq %rax, -0x11e0(%rbp)
jmp 0x7ed3
movq -0x11e0(%rbp), %rdi
leaq -0x900(%rbp), %rsi
callq 0x53a0
movq %rax, -0x11e8(%rbp)
jmp 0x7eef
movq -0x11e8(%rbp), %rdi
movq 0x9109b(%rip), %rsi     # 0x98f98
callq 0x5430
jmp 0x7f04
movq 0x910dd(%rip), %rdi     # 0x98fe8
leaq 0x62478(%rip), %rsi     # 0x6a38a
callq 0x53e0
movq %rax, -0x11f0(%rbp)
jmp 0x7f20
movq -0x11f0(%rbp), %rdi
movl -0x7e0(%rbp), %esi
callq 0x5570
movq %rax, -0x11f8(%rbp)
jmp 0x7f3b
movq -0x11f8(%rbp), %rdi
movq 0x9104f(%rip), %rsi     # 0x98f98
callq 0x5430
jmp 0x7f50
movq 0x91091(%rip), %rdi     # 0x98fe8
leaq 0x62453(%rip), %rsi     # 0x6a3b1
callq 0x53e0
movq %rax, -0x1200(%rbp)
jmp 0x7f6c
movq -0x1200(%rbp), %rdi
movl -0x808(%rbp), %esi
callq 0x5570
movq %rax, -0x1208(%rbp)
jmp 0x7f87
movq -0x1208(%rbp), %rdi
movq 0x91003(%rip), %rsi     # 0x98f98
callq 0x5430
jmp 0x7f9c
movq 0x91045(%rip), %rdi     # 0x98fe8
leaq 0x6242c(%rip), %rsi     # 0x6a3d6
callq 0x53e0
movq %rax, -0x1210(%rbp)
jmp 0x7fb8
movq -0x1210(%rbp), %rdi
movl -0x830(%rbp), %esi
callq 0x5570
movq %rax, -0x1218(%rbp)
jmp 0x7fd3
movq -0x1218(%rbp), %rdi
movq 0x90fb7(%rip), %rsi     # 0x98f98
callq 0x5430
jmp 0x7fe8
movq 0x90ff9(%rip), %rdi     # 0x98fe8
leaq 0x62414(%rip), %rsi     # 0x6a40a
callq 0x53e0
movq %rax, -0x1220(%rbp)
jmp 0x8004
movq -0x1220(%rbp), %rdi
movl -0x858(%rbp), %esi
callq 0x5570
movq %rax, -0x1228(%rbp)
jmp 0x801f
movq -0x1228(%rbp), %rdi
movq 0x90f6b(%rip), %rsi     # 0x98f98
callq 0x5430
jmp 0x8034
movq 0x90fad(%rip), %rdi     # 0x98fe8
leaq 0x623e8(%rip), %rsi     # 0x6a42a
callq 0x53e0
movq %rax, -0x1230(%rbp)
jmp 0x8050
movq -0x1230(%rbp), %rdi
movsd -0x908(%rbp), %xmm0
callq 0x57d0
movq %rax, -0x1238(%rbp)
jmp 0x806d
movq -0x1238(%rbp), %rdi
movq 0x90f1d(%rip), %rsi     # 0x98f98
callq 0x5430
jmp 0x8082
movq 0x90f5f(%rip), %rdi     # 0x98fe8
leaq 0x623b1(%rip), %rsi     # 0x6a441
callq 0x53e0
movq %rax, -0x1240(%rbp)
jmp 0x809e
movq -0x1240(%rbp), %rdi
movsd 0x61f5b(%rip), %xmm0    # 0x6a008
callq 0x57d0
movq %rax, -0x1248(%rbp)
jmp 0x80bb
movq -0x1248(%rbp), %rdi
movq 0x90ecf(%rip), %rsi     # 0x98f98
callq 0x5430
jmp 0x80d0
cmpl $0x0, -0x930(%rbp)
jbe 0x8444
movq 0x90f04(%rip), %rdi     # 0x98fe8
leaq 0x6236d(%rip), %rsi     # 0x6a458
callq 0x53e0
movq %rax, -0x1250(%rbp)
jmp 0x80f9
movq -0x1250(%rbp), %rdi
movl -0x930(%rbp), %esi
callq 0x5570
movq %rax, -0x1258(%rbp)
jmp 0x8114
movq -0x1258(%rbp), %rdi
leaq 0x620c6(%rip), %rsi     # 0x6a1e8
callq 0x53e0
movq %rax, -0x1260(%rbp)
jmp 0x8130
movq -0x1260(%rbp), %rdi
movq 0x90e5a(%rip), %rsi     # 0x98f98
callq 0x5430
jmp 0x8145
jmp 0x8477
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x817c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x800(%rbp), %rdi
callq 0x5878
leaq -0x801(%rbp), %rdi
callq 0x5450
jmp 0x933b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x81bf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x828(%rbp), %rdi
callq 0x5878
leaq -0x829(%rbp), %rdi
callq 0x5450
jmp 0x933b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x8202
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x850(%rbp), %rdi
callq 0x5878
leaq -0x851(%rbp), %rdi
callq 0x5450
jmp 0x933b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x8245
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 0x933b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x932f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x9323
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x9317
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x82cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x928(%rbp), %rdi
callq 0x5878
leaq -0x929(%rbp), %rdi
callq 0x5450
jmp 0x930b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x8310
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x950(%rbp), %rdi
callq 0x5878
leaq -0x951(%rbp), %rdi
callq 0x5450
jmp 0x930b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x8353
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x978(%rbp), %rdi
callq 0x5878
leaq -0x979(%rbp), %rdi
callq 0x5450
jmp 0x930b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x8396
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x9a0(%rbp), %rdi
callq 0x5878
leaq -0x9a1(%rbp), %rdi
callq 0x5450
jmp 0x930b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x83d9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x9c8(%rbp), %rdi
callq 0x5878
leaq -0x9c9(%rbp), %rdi
callq 0x5450
jmp 0x930b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x841c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x9f0(%rbp), %rdi
callq 0x5878
leaq -0x9f1(%rbp), %rdi
callq 0x5450
jmp 0x930b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x930b
movq 0x90b9d(%rip), %rdi     # 0x98fe8
leaq 0x62038(%rip), %rsi     # 0x6a48a
callq 0x53e0
movq %rax, -0x1268(%rbp)
jmp 0x8460
movq -0x1268(%rbp), %rdi
movq 0x90b2a(%rip), %rsi     # 0x98f98
callq 0x5430
jmp 0x8475
jmp 0x8477
movq 0x90b6a(%rip), %rdi     # 0x98fe8
leaq 0x62027(%rip), %rsi     # 0x6a4ac
callq 0x53e0
movq %rax, -0x1270(%rbp)
jmp 0x8493
movq -0x1270(%rbp), %rdi
movzbl -0x97a(%rbp), %esi
andl $0x1, %esi
callq 0x5750
movq %rax, -0x1278(%rbp)
jmp 0x84b2
movq -0x1278(%rbp), %rdi
movq 0x90ad8(%rip), %rsi     # 0x98f98
callq 0x5430
jmp 0x84c7
movq 0x90b1a(%rip), %rdi     # 0x98fe8
leaq 0x62006(%rip), %rsi     # 0x6a4db
callq 0x53e0
movq %rax, -0x1280(%rbp)
jmp 0x84e3
movq -0x1280(%rbp), %rdi
movzbl -0x9a2(%rbp), %esi
andl $0x1, %esi
callq 0x5750
movq %rax, -0x1288(%rbp)
jmp 0x8502
movq -0x1288(%rbp), %rdi
movq 0x90a88(%rip), %rsi     # 0x98f98
callq 0x5430
jmp 0x8517
movq 0x90aca(%rip), %rdi     # 0x98fe8
leaq 0x61ff6(%rip), %rsi     # 0x6a51b
callq 0x53e0
movq %rax, -0x1290(%rbp)
jmp 0x8533
movq -0x1290(%rbp), %rdi
movzbl -0x952(%rbp), %esi
andl $0x1, %esi
callq 0x5750
movq %rax, -0x1298(%rbp)
jmp 0x8552
movq -0x1298(%rbp), %rdi
movq 0x90a38(%rip), %rsi     # 0x98f98
callq 0x5430
jmp 0x8567
movq 0x90a7a(%rip), %rdi     # 0x98fe8
leaq 0x61fc9(%rip), %rsi     # 0x6a53e
callq 0x53e0
movq %rax, -0x12a0(%rbp)
jmp 0x8583
movq -0x12a0(%rbp), %rdi
movzbl -0x9ca(%rbp), %esi
andl $0x1, %esi
callq 0x5750
movq %rax, -0x12a8(%rbp)
jmp 0x85a2
movq -0x12a8(%rbp), %rdi
movq 0x909e8(%rip), %rsi     # 0x98f98
callq 0x5430
jmp 0x85b7
leaq -0xa28(%rbp), %rdi
callq 0x96d0
leaq -0xa58(%rbp), %rdi
callq 0x96d0
leaq -0xa88(%rbp), %rdi
callq 0x96d0
leaq 0x90e7e(%rip), %rsi     # 0x99460
leaq -0xb80(%rbp), %rdi
callq 0x96f0
jmp 0x85f0
leaq -0xbb0(%rbp), %rdi
callq 0x98a0
leaq -0xbe0(%rbp), %rdi
callq 0x98a0
leaq -0xc10(%rbp), %rdi
callq 0x96d0
leaq -0xc40(%rbp), %rdi
callq 0x98c0
movq 0x909c1(%rip), %rdi     # 0x98fe8
leaq 0x61f2d(%rip), %rsi     # 0x6a55b
callq 0x53e0
movq %rax, -0x12b0(%rbp)
jmp 0x863c
movq -0x12b0(%rbp), %rdi
leaq -0x8c0(%rbp), %rsi
callq 0x53a0
movq %rax, -0x12b8(%rbp)
jmp 0x8658
movq -0x12b8(%rbp), %rdi
movq 0x90932(%rip), %rsi     # 0x98f98
callq 0x5430
jmp 0x866d
leaq -0xbb0(%rbp), %rdi
leaq -0x8c0(%rbp), %rsi
callq 0x62230
movl %eax, -0x12bc(%rbp)
jmp 0x8688
movl -0x12bc(%rbp), %eax
movl %eax, -0xc44(%rbp)
cmpl $0x0, -0xc44(%rbp)
jge 0x8706
movq 0x90944(%rip), %rdi     # 0x98fe8
leaq 0x61ecd(%rip), %rsi     # 0x6a578
callq 0x53e0
movq %rax, -0x12c8(%rbp)
jmp 0x86b9
movq -0x12c8(%rbp), %rdi
movq 0x908d1(%rip), %rsi     # 0x98f98
callq 0x5430
jmp 0x86ce
movl $0x1, %edi
callq 0x54a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x92e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x92ab
movq 0x908db(%rip), %rdi     # 0x98fe8
leaq 0x61e8d(%rip), %rsi     # 0x6a5a1
callq 0x53e0
movq %rax, -0x12d0(%rbp)
jmp 0x8722
leaq -0xbb0(%rbp), %rdi
callq 0x62d10
movl %eax, -0x12d4(%rbp)
jmp 0x8736
movl -0x12d4(%rbp), %esi
movq -0x12d0(%rbp), %rdi
callq 0x5720
movq %rax, -0x12e0(%rbp)
jmp 0x8751
movq -0x12e0(%rbp), %rdi
movq 0x90839(%rip), %rsi     # 0x98f98
callq 0x5430
jmp 0x8766
movq 0x9087b(%rip), %rdi     # 0x98fe8
leaq 0x61e46(%rip), %rsi     # 0x6a5ba
callq 0x53e0
movq %rax, -0x12e8(%rbp)
jmp 0x8782
leaq -0xbb0(%rbp), %rdi
callq 0x98e0
movq -0x12e8(%rbp), %rdi
movq %rax, %rsi
callq 0x50f0
movq %rax, -0x12f0(%rbp)
jmp 0x87a6
movq -0x12f0(%rbp), %rdi
movq 0x907e4(%rip), %rsi     # 0x98f98
callq 0x5430
jmp 0x87bb
leaq -0xc78(%rbp), %rdi
movq %rdi, -0x12f8(%rbp)
callq 0x96d0
movq -0x12f8(%rbp), %rsi
leaq -0xbb0(%rbp), %rdi
callq 0x62dd0
jmp 0x87e3
movl -0x830(%rbp), %edx
movzbl -0x9ca(%rbp), %ecx
andl $0x1, %ecx
leaq -0xc78(%rbp), %rdi
leaq -0xc40(%rbp), %rsi
callq 0x9360
jmp 0x8808
movq 0x907d9(%rip), %rdi     # 0x98fe8
leaq 0x61db7(%rip), %rsi     # 0x6a5cd
callq 0x53e0
movq %rax, -0x1300(%rbp)
jmp 0x8824
movq -0x1300(%rbp), %rdi
leaq -0x8a0(%rbp), %rsi
callq 0x53a0
movq %rax, -0x1308(%rbp)
jmp 0x8840
movq -0x1308(%rbp), %rdi
movq 0x9074a(%rip), %rsi     # 0x98f98
callq 0x5430
jmp 0x8855
leaq -0xc98(%rbp), %rdi
leaq -0x8a0(%rbp), %rsi
callq 0x51c0
jmp 0x886a
movzbl -0x9ca(%rbp), %ecx
andl $0x1, %ecx
leaq -0xc98(%rbp), %rdi
leaq -0xa88(%rbp), %rsi
leaq -0x9f8(%rbp), %rdx
callq 0x58c10
movl %eax, -0x130c(%rbp)
jmp 0x8896
movl -0x130c(%rbp), %eax
movl %eax, -0xc44(%rbp)
leaq -0xc98(%rbp), %rdi
callq 0x5878
cmpl $0x0, -0xc44(%rbp)
jge 0x892c
movq 0x9072a(%rip), %rdi     # 0x98fe8
leaq 0x61d1b(%rip), %rsi     # 0x6a5e0
callq 0x53e0
movq %rax, -0x1318(%rbp)
jmp 0x88d3
movq -0x1318(%rbp), %rdi
movq 0x906b7(%rip), %rsi     # 0x98f98
callq 0x5430
jmp 0x88e8
movl $0x1, %edi
callq 0x54a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x929f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xc98(%rbp), %rdi
callq 0x5878
jmp 0x929f
movq 0x906b5(%rip), %rdi     # 0x98fe8
leaq 0x62082(%rip), %rsi     # 0x6a9bc
callq 0x53e0
movq %rax, -0x1320(%rbp)
jmp 0x8948
movq -0x1320(%rbp), %rdi
leaq 0x61cb1(%rip), %rsi     # 0x6a607
callq 0x53e0
movq %rax, -0x1328(%rbp)
jmp 0x8964
leaq -0xa88(%rbp), %rdi
callq 0x9900
movq -0x1328(%rbp), %rdi
movq %rax, %rsi
callq 0x50f0
movq %rax, -0x1330(%rbp)
jmp 0x8988
movq -0x1330(%rbp), %rdi
movq 0x90602(%rip), %rsi     # 0x98f98
callq 0x5430
jmp 0x899d
movq 0x90644(%rip), %rdi     # 0x98fe8
leaq 0x62011(%rip), %rsi     # 0x6a9bc
callq 0x53e0
movq %rax, -0x1338(%rbp)
jmp 0x89b9
movq -0x1338(%rbp), %rdi
leaq 0x61c50(%rip), %rsi     # 0x6a617
callq 0x53e0
movq %rax, -0x1340(%rbp)
jmp 0x89d5
movq -0x1340(%rbp), %rdi
movl -0x9f8(%rbp), %esi
callq 0x5720
movq %rax, -0x1348(%rbp)
jmp 0x89f0
movq -0x1348(%rbp), %rdi
movq 0x9059a(%rip), %rsi     # 0x98f98
callq 0x5430
jmp 0x8a05
movq 0x905dc(%rip), %rdi     # 0x98fe8
leaq 0x61c1a(%rip), %rsi     # 0x6a62d
callq 0x53e0
movq %rax, -0x1350(%rbp)
jmp 0x8a21
movq -0x1350(%rbp), %rdi
leaq -0x8e0(%rbp), %rsi
callq 0x53a0
movq %rax, -0x1358(%rbp)
jmp 0x8a3d
movq -0x1358(%rbp), %rdi
movq 0x9054d(%rip), %rsi     # 0x98f98
callq 0x5430
jmp 0x8a52
leaq -0xb80(%rbp), %rdi
leaq -0x8e0(%rbp), %rsi
callq 0x360e0
jmp 0x8a67
leaq -0xb80(%rbp), %rdi
leaq -0xbb0(%rbp), %rsi
callq 0x35a10
jmp 0x8a7c
movl $0xf, %edi
callq 0x9920
movl %eax, -0x135c(%rbp)
jmp 0x8a8e
movl -0x135c(%rbp), %eax
movl %eax, -0xc9c(%rbp)
movl -0xc9c(%rbp), %esi
movq 0x90541(%rip), %rdi     # 0x98fe8
callq 0x5670
jmp 0x8aae
movl $0x1, -0xca0(%rbp)
movl $0x0, -0xca4(%rbp)
jmp 0x8ac4
movq 0x9051d(%rip), %rdi     # 0x98fe8
leaq 0x61b69(%rip), %rsi     # 0x6a63b
callq 0x53e0
movq %rax, -0x1368(%rbp)
jmp 0x8ae0
movq -0x1368(%rbp), %rdi
movl -0xca0(%rbp), %esi
callq 0x5720
movq %rax, -0x1370(%rbp)
jmp 0x8afb
movq -0x1370(%rbp), %rdi
movq 0x9048f(%rip), %rsi     # 0x98f98
callq 0x5430
jmp 0x8b10
leaq -0xbb0(%rbp), %rdi
leaq -0xb80(%rbp), %rsi
callq 0x48920
jmp 0x8b25
movzbl -0x952(%rbp), %r8d
andl $0x1, %r8d
leaq -0xa88(%rbp), %rdi
leaq -0xb80(%rbp), %rsi
leaq -0xbe0(%rbp), %rdx
leaq -0xc10(%rbp), %rcx
callq 0x60570
movsd %xmm0, -0x1378(%rbp)
jmp 0x8b5c
movsd -0x1378(%rbp), %xmm0
movsd %xmm0, -0xcb0(%rbp)
movsd -0x908(%rbp), %xmm0
leaq -0xbe0(%rbp), %rdi
leaq -0xbb0(%rbp), %rsi
movsd 0x6147e(%rip), %xmm1    # 0x6a008
callq 0x60bf0
jmp 0x8b91
testb $0x1, -0x97a(%rbp)
jne 0x8baa
leaq -0xbb0(%rbp), %rdi
callq 0x61ad0
jmp 0x8ba8
jmp 0x8baa
leaq -0xbe0(%rbp), %rdi
callq 0x9940
movq 0x9042b(%rip), %rdi     # 0x98fe8
leaq 0x61a82(%rip), %rsi     # 0x6a646
callq 0x53e0
movq %rax, -0x1380(%rbp)
jmp 0x8bd2
movq -0x1380(%rbp), %rdi
movsd -0xcb0(%rbp), %xmm0
callq 0x57d0
movq %rax, -0x1388(%rbp)
jmp 0x8bef
movq -0x1388(%rbp), %rdi
movq 0x9039b(%rip), %rsi     # 0x98f98
callq 0x5430
jmp 0x8c04
movq 0x903dd(%rip), %rdi     # 0x98fe8
leaq 0x6198f(%rip), %rsi     # 0x6a5a1
callq 0x53e0
movq %rax, -0x1390(%rbp)
jmp 0x8c20
leaq -0xbb0(%rbp), %rdi
callq 0x62d10
movl %eax, -0x1394(%rbp)
jmp 0x8c34
movl -0x1394(%rbp), %esi
movq -0x1390(%rbp), %rdi
callq 0x5720
movq %rax, -0x13a0(%rbp)
jmp 0x8c4f
movq -0x13a0(%rbp), %rdi
movq 0x9033b(%rip), %rsi     # 0x98f98
callq 0x5430
jmp 0x8c64
movq 0x9037d(%rip), %rdi     # 0x98fe8
leaq 0x61948(%rip), %rsi     # 0x6a5ba
callq 0x53e0
movq %rax, -0x13a8(%rbp)
jmp 0x8c80
leaq -0xbb0(%rbp), %rdi
callq 0x98e0
movq -0x13a8(%rbp), %rdi
movq %rax, %rsi
callq 0x50f0
movq %rax, -0x13b0(%rbp)
jmp 0x8ca4
movq -0x13b0(%rbp), %rdi
movq 0x902e6(%rip), %rsi     # 0x98f98
callq 0x5430
jmp 0x8cb9
cmpl $0x1, -0xca0(%rbp)
jne 0x8cf2
cmpl $0x0, -0x930(%rbp)
jbe 0x8cf2
leaq -0xbb0(%rbp), %rdi
callq 0x98e0
movl -0x930(%rbp), %ecx
xorl %edx, %edx
divq %rcx
movl -0x930(%rbp), %ecx
imulq %rcx, %rax
movl %eax, -0xca4(%rbp)
movq 0x902ef(%rip), %rdi     # 0x98fe8
leaq 0x6195b(%rip), %rsi     # 0x6a65b
callq 0x53e0
movq %rax, -0x13b8(%rbp)
jmp 0x8d0e
movq -0x13b8(%rbp), %rdi
movq 0x9027c(%rip), %rsi     # 0x98f98
callq 0x5430
jmp 0x8d23
leaq -0xce0(%rbp), %rdi
movq %rdi, -0x13c0(%rbp)
callq 0x96d0
movq -0x13c0(%rbp), %rdx
movl -0x7e0(%rbp), %edi
leaq -0xc10(%rbp), %rsi
leaq -0xc40(%rbp), %rcx
callq 0x639f0
jmp 0x8d58
movq 0x90289(%rip), %rdi     # 0x98fe8
leaq 0x6190f(%rip), %rsi     # 0x6a675
callq 0x53e0
movq %rax, -0x13c8(%rbp)
jmp 0x8d74
movq -0x13c8(%rbp), %rdi
movq 0x90216(%rip), %rsi     # 0x98f98
callq 0x5430
jmp 0x8d89
leaq -0xbb0(%rbp), %rdi
leaq -0xb80(%rbp), %rsi
callq 0x48920
jmp 0x8d9e
movzbl -0x952(%rbp), %r9d
movzbl -0x9a2(%rbp), %ecx
andl $0x1, %ecx
movq %rsp, %rax
movl %ecx, (%rax)
andl $0x1, %r9d
leaq -0xa88(%rbp), %rdi
leaq -0xb80(%rbp), %rsi
leaq -0xc10(%rbp), %rdx
leaq -0xbb0(%rbp), %rcx
leaq -0xce0(%rbp), %r8
callq 0x63f60
jmp 0x8de3
leaq -0xcf8(%rbp), %rdi
movq %rdi, -0x13d0(%rbp)
callq 0x9960
movq -0x13d0(%rbp), %rsi
leaq -0xce0(%rbp), %rdi
movl $0x1, %edx
callq 0x59620
jmp 0x8e10
leaq -0xd10(%rbp), %rdi
callq 0x9980
leaq -0xcf8(%rbp), %rdi
callq 0x99a0
movq %rax, -0xd18(%rbp)
leaq -0xcf8(%rbp), %rdi
callq 0x9a10
movq %rax, -0xd20(%rbp)
leaq -0xd18(%rbp), %rdi
leaq -0xd20(%rbp), %rsi
callq 0x99d0
testb $0x1, %al
jne 0x8e5e
jmp 0x8f2d
leaq -0xd18(%rbp), %rdi
callq 0x9ab0
movq %rax, %rsi
leaq -0xd10(%rbp), %rdi
callq 0x9a40
jmp 0x8e7b
leaq -0xbb0(%rbp), %rdi
callq 0x98e0
movq %rax, -0x13d8(%rbp)
leaq -0xd10(%rbp), %rdi
callq 0x9660
movq %rax, %rcx
movq -0x13d8(%rbp), %rax
subq %rcx, %rax
movl -0x808(%rbp), %ecx
xorl %edx, %edx
divq %rcx
cmpq $0x0, %rdx
jne 0x8f1a
leaq -0xd10(%rbp), %rdi
callq 0x9660
movl -0x808(%rbp), %ecx
shrl %ecx
movl %ecx, %ecx
cmpq %rcx, %rax
jb 0x8f1a
jmp 0x8f2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x926e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x9262
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x9256
jmp 0x8f1c
leaq -0xd18(%rbp), %rdi
callq 0x9ad0
jmp 0x8e2f
leaq -0xd10(%rbp), %rdi
leaq -0xbb0(%rbp), %rsi
callq 0x62460
jmp 0x8f42
leaq -0xd10(%rbp), %rdi
callq 0x9af0
movq %rax, -0xd28(%rbp)
leaq -0xd10(%rbp), %rdi
callq 0x9b60
movq %rax, -0xd30(%rbp)
leaq -0xd28(%rbp), %rdi
leaq -0xd30(%rbp), %rsi
callq 0x9b20
testb $0x1, %al
jne 0x8f81
jmp 0x8fae
leaq -0xd28(%rbp), %rdi
callq 0x9b90
movq %rax, %rsi
leaq -0xb80(%rbp), %rdi
callq 0x35730
jmp 0x8f9e
jmp 0x8fa0
leaq -0xd28(%rbp), %rdi
callq 0x9bb0
jmp 0x8f55
movsd -0x908(%rbp), %xmm0
movzbl -0x952(%rbp), %ecx
andl $0x1, %ecx
leaq -0xa88(%rbp), %rdi
leaq -0xb80(%rbp), %rsi
leaq -0xbb0(%rbp), %rdx
movl $0x1, %r8d
callq 0x60ac0
jmp 0x8fe2
testb $0x1, -0x97a(%rbp)
jne 0x8ffb
leaq -0xbb0(%rbp), %rdi
callq 0x61ad0
jmp 0x8ff9
jmp 0x8ffb
leaq -0xb80(%rbp), %rdi
leaq -0xbb0(%rbp), %rsi
callq 0x35a10
jmp 0x9010
cmpl $0x0, -0x930(%rbp)
jbe 0x91e3
leaq -0xbb0(%rbp), %rdi
callq 0x98e0
movl -0xca4(%rbp), %ecx
cmpq %rcx, %rax
ja 0x91e3
leaq -0xbb0(%rbp), %rdi
callq 0x98e0
movl -0x858(%rbp), %ecx
cmpq %rcx, %rax
jbe 0x91e3
leaq -0xea8(%rbp), %rdi
callq 0x5580
jmp 0x9061
leaq 0x61622(%rip), %rsi     # 0x6a68a
leaq -0xea8(%rbp), %rdi
callq 0x53e0
movq %rax, -0x13e0(%rbp)
jmp 0x907d
leaq -0xbb0(%rbp), %rdi
callq 0x98e0
movq -0x13e0(%rbp), %rdi
movq %rax, %rsi
callq 0x50f0
movq %rax, -0x13e8(%rbp)
jmp 0x90a1
movq -0x13e8(%rbp), %rdi
leaq 0x615e8(%rip), %rsi     # 0x6a697
callq 0x53e0
jmp 0x90b6
movq 0x8ff2b(%rip), %rdi     # 0x98fe8
leaq 0x615d7(%rip), %rsi     # 0x6a69b
callq 0x53e0
movq %rax, -0x13f0(%rbp)
jmp 0x90d2
leaq -0xec8(%rbp), %rdi
leaq -0xea8(%rbp), %rsi
callq 0x5400
jmp 0x90e7
movq -0x13f0(%rbp), %rdi
leaq -0xec8(%rbp), %rsi
callq 0x53a0
movq %rax, -0x13f8(%rbp)
jmp 0x9103
movq -0x13f8(%rbp), %rdi
movq 0x8fe87(%rip), %rsi     # 0x98f98
callq 0x5430
jmp 0x9118
leaq -0xec8(%rbp), %rdi
callq 0x5878
leaq -0xee8(%rbp), %rdi
leaq -0xea8(%rbp), %rsi
callq 0x5400
jmp 0x9139
leaq -0xbb0(%rbp), %rdi
leaq -0xee8(%rbp), %rsi
xorl %edx, %edx
movl $0x6, %ecx
callq 0x61c90
jmp 0x9155
leaq -0xee8(%rbp), %rdi
callq 0x5878
movl -0x930(%rbp), %ecx
movl -0xca4(%rbp), %eax
subl %ecx, %eax
movl %eax, -0xca4(%rbp)
leaq -0xea8(%rbp), %rdi
callq 0x5100
jmp 0x91e3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x91d5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xec8(%rbp), %rdi
callq 0x5878
jmp 0x91d5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xee8(%rbp), %rdi
callq 0x5878
leaq -0xea8(%rbp), %rdi
callq 0x5100
jmp 0x9256
leaq -0xbb0(%rbp), %rdi
callq 0x98e0
movl -0x858(%rbp), %ecx
cmpq %rcx, %rax
ja 0x9206
movl $0x3, -0xeec(%rbp)
jmp 0x921f
movl -0xca0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xca0(%rbp)
movl $0x0, -0xeec(%rbp)
leaq -0xd10(%rbp), %rdi
callq 0x9bd0
leaq -0xcf8(%rbp), %rdi
callq 0x9c30
leaq -0xce0(%rbp), %rdi
callq 0x9c90
movl -0xeec(%rbp), %eax
testl %eax, %eax
je 0x9251
jmp 0x924f
jmp 0x927c
jmp 0x8ac2
leaq -0xd10(%rbp), %rdi
callq 0x9bd0
leaq -0xcf8(%rbp), %rdi
callq 0x9c30
leaq -0xce0(%rbp), %rdi
callq 0x9c90
jmp 0x929f
leaq -0xbb0(%rbp), %rdi
leaq -0x900(%rbp), %rsi
xorl %edx, %edx
movl $0x6, %ecx
callq 0x61c90
jmp 0x9298
xorl %edi, %edi
callq 0x54a0
leaq -0xc78(%rbp), %rdi
callq 0x9c90
leaq -0xc40(%rbp), %rdi
callq 0x9cb0
leaq -0xc10(%rbp), %rdi
callq 0x9c90
leaq -0xbe0(%rbp), %rdi
callq 0x9cd0
leaq -0xbb0(%rbp), %rdi
callq 0x9cd0
leaq -0xb80(%rbp), %rdi
callq 0x34280
leaq -0xa88(%rbp), %rdi
callq 0x9c90
leaq -0xa58(%rbp), %rdi
callq 0x9c90
leaq -0xa28(%rbp), %rdi
callq 0x9c90
leaq -0x900(%rbp), %rdi
callq 0x5878
leaq -0x8e0(%rbp), %rdi
callq 0x5878
leaq -0x8c0(%rbp), %rdi
callq 0x5878
leaq -0x8a0(%rbp), %rdi
callq 0x5878
leaq -0xc8(%rbp), %rdi
callq 0x9cf0
movq -0xf8(%rbp), %rdi
callq 0x5730
nopw %cs:(%rax,%rax)