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

    conf::Config config;
    config("usage: 2g-prune [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)")
      ('t', "temp-models=INT", "arg", "0", "Write out intermediate models for #V mod INT == 0")
      ('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];
    unsigned int temp_vocab_interval = config["temp-models"].get_int();
    bool normalize_by_bigrams = config["normalize-by-bigrams"].specified;
    bool enable_fb = config["forward-backward"].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, 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, 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);
        transitions.swap(trans_stats);
        Bigrams::freqs_to_logprobs(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);

        // 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(words, msfg, transitions, enable_fb, 1);
        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 $0x11d0, %rsp           # imm = 0x11D0
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0x11680
leaq -0xe9(%rbp), %rdi
movq %rdi, -0xd68(%rbp)
callq 0x5740
movq -0xd68(%rbp), %rdx
leaq 0x6307c(%rip), %rsi     # 0x69012
leaq -0xe8(%rbp), %rdi
callq 0x5590
jmp 0x5fa4
leaq -0xc8(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0x116f0
movq %rax, -0xd70(%rbp)
jmp 0x5fc0
leaq -0x121(%rbp), %rdi
movq %rdi, -0xd78(%rbp)
callq 0x5740
movq -0xd78(%rbp), %rdx
leaq 0x63088(%rip), %rsi     # 0x69069
leaq -0x120(%rbp), %rdi
callq 0x5590
jmp 0x5fef
leaq -0x149(%rbp), %rdi
movq %rdi, -0xd80(%rbp)
callq 0x5740
movq -0xd80(%rbp), %rdx
leaq 0x638ea(%rip), %rsi     # 0x698fa
leaq -0x148(%rbp), %rdi
callq 0x5590
jmp 0x601e
leaq -0x171(%rbp), %rdi
movq %rdi, -0xd88(%rbp)
callq 0x5740
movq -0xd88(%rbp), %rdx
leaq 0x638bb(%rip), %rsi     # 0x698fa
leaq -0x170(%rbp), %rdi
callq 0x5590
jmp 0x604d
leaq -0x199(%rbp), %rdi
movq %rdi, -0xd90(%rbp)
callq 0x5740
movq -0xd90(%rbp), %rdx
leaq 0x62ff3(%rip), %rsi     # 0x69061
leaq -0x198(%rbp), %rdi
callq 0x5590
jmp 0x607c
movq -0xd70(%rbp), %rdi
movl $0x68, %esi
leaq -0x120(%rbp), %rdx
leaq -0x148(%rbp), %rcx
leaq -0x170(%rbp), %r8
leaq -0x198(%rbp), %r9
callq 0x11720
movq %rax, -0xd98(%rbp)
jmp 0x60b2
leaq -0x1c1(%rbp), %rdi
movq %rdi, -0xda0(%rbp)
callq 0x5740
movq -0xda0(%rbp), %rdx
leaq 0x62f9b(%rip), %rsi     # 0x6906e
leaq -0x1c0(%rbp), %rdi
callq 0x5590
jmp 0x60e1
leaq -0x1e9(%rbp), %rdi
movq %rdi, -0xda8(%rbp)
callq 0x5740
movq -0xda8(%rbp), %rdx
leaq 0x62f7b(%rip), %rsi     # 0x6907d
leaq -0x1e8(%rbp), %rdi
callq 0x5590
jmp 0x6110
leaq -0x211(%rbp), %rdi
movq %rdi, -0xdb0(%rbp)
callq 0x5740
movq -0xdb0(%rbp), %rdx
leaq 0x62f50(%rip), %rsi     # 0x69081
leaq -0x210(%rbp), %rdi
callq 0x5590
jmp 0x613f
leaq -0x239(%rbp), %rdi
movq %rdi, -0xdb8(%rbp)
callq 0x5740
movq -0xdb8(%rbp), %rdx
leaq 0x62f26(%rip), %rsi     # 0x69086
leaq -0x238(%rbp), %rdi
callq 0x5590
jmp 0x616e
movq -0xd98(%rbp), %rdi
movl $0x63, %esi
leaq -0x1c0(%rbp), %rdx
leaq -0x1e8(%rbp), %rcx
leaq -0x210(%rbp), %r8
leaq -0x238(%rbp), %r9
callq 0x11720
movq %rax, -0xdc0(%rbp)
jmp 0x61a4
leaq -0x261(%rbp), %rdi
movq %rdi, -0xdc8(%rbp)
callq 0x5740
movq -0xdc8(%rbp), %rdx
leaq 0x62efd(%rip), %rsi     # 0x690c2
leaq -0x260(%rbp), %rdi
callq 0x5590
jmp 0x61d3
leaq -0x289(%rbp), %rdi
movq %rdi, -0xdd0(%rbp)
callq 0x5740
movq -0xdd0(%rbp), %rdx
leaq 0x62e89(%rip), %rsi     # 0x6907d
leaq -0x288(%rbp), %rdi
callq 0x5590
jmp 0x6202
leaq -0x2b1(%rbp), %rdi
movq %rdi, -0xdd8(%rbp)
callq 0x5740
movq -0xdd8(%rbp), %rdx
leaq 0x62eac(%rip), %rsi     # 0x690cf
leaq -0x2b0(%rbp), %rdi
callq 0x5590
jmp 0x6231
leaq -0x2d9(%rbp), %rdi
movq %rdi, -0xde0(%rbp)
callq 0x5740
movq -0xde0(%rbp), %rdx
leaq 0x62e81(%rip), %rsi     # 0x690d3
leaq -0x2d8(%rbp), %rdi
callq 0x5590
jmp 0x6260
movq -0xdc0(%rbp), %rdi
movl $0x72, %esi
leaq -0x260(%rbp), %rdx
leaq -0x288(%rbp), %rcx
leaq -0x2b0(%rbp), %r8
leaq -0x2d8(%rbp), %r9
callq 0x11720
movq %rax, -0xde8(%rbp)
jmp 0x6296
leaq -0x301(%rbp), %rdi
movq %rdi, -0xdf0(%rbp)
callq 0x5740
movq -0xdf0(%rbp), %rdx
leaq 0x62e3d(%rip), %rsi     # 0x690f4
leaq -0x300(%rbp), %rdi
callq 0x5590
jmp 0x62c5
leaq -0x329(%rbp), %rdi
movq %rdi, -0xdf8(%rbp)
callq 0x5740
movq -0xdf8(%rbp), %rdx
leaq 0x62d97(%rip), %rsi     # 0x6907d
leaq -0x328(%rbp), %rdi
callq 0x5590
jmp 0x62f4
leaq -0x351(%rbp), %rdi
movq %rdi, -0xe00(%rbp)
callq 0x5740
movq -0xe00(%rbp), %rdx
leaq 0x62e1d(%rip), %rsi     # 0x69132
leaq -0x350(%rbp), %rdi
callq 0x5590
jmp 0x6323
leaq -0x379(%rbp), %rdi
movq %rdi, -0xe08(%rbp)
callq 0x5740
movq -0xe08(%rbp), %rdx
leaq 0x62dbf(%rip), %rsi     # 0x69103
leaq -0x378(%rbp), %rdi
callq 0x5590
jmp 0x6352
movq -0xde8(%rbp), %rdi
movl $0x6d, %esi
leaq -0x300(%rbp), %rdx
leaq -0x328(%rbp), %rcx
leaq -0x350(%rbp), %r8
leaq -0x378(%rbp), %r9
callq 0x11720
movq %rax, -0xe10(%rbp)
jmp 0x6388
leaq -0x3a1(%rbp), %rdi
movq %rdi, -0xe18(%rbp)
callq 0x5740
movq -0xe18(%rbp), %rdx
leaq 0x62d8b(%rip), %rsi     # 0x69134
leaq -0x3a0(%rbp), %rdi
callq 0x5590
jmp 0x63b7
leaq -0x3c9(%rbp), %rdi
movq %rdi, -0xe20(%rbp)
callq 0x5740
movq -0xe20(%rbp), %rdx
leaq 0x62d6b(%rip), %rsi     # 0x69143
leaq -0x3c8(%rbp), %rdi
callq 0x5590
jmp 0x63e6
leaq -0x3f1(%rbp), %rdi
movq %rdi, -0xe28(%rbp)
callq 0x5740
movq -0xe28(%rbp), %rdx
leaq 0x634f3(%rip), %rsi     # 0x698fa
leaq -0x3f0(%rbp), %rdi
callq 0x5590
jmp 0x6415
leaq -0x419(%rbp), %rdi
movq %rdi, -0xe30(%rbp)
callq 0x5740
movq -0xe30(%rbp), %rdx
leaq 0x62d16(%rip), %rsi     # 0x6914c
leaq -0x418(%rbp), %rdi
callq 0x5590
jmp 0x6444
movq -0xe10(%rbp), %rdi
movl $0x76, %esi
leaq -0x3a0(%rbp), %rdx
leaq -0x3c8(%rbp), %rcx
leaq -0x3f0(%rbp), %r8
leaq -0x418(%rbp), %r9
callq 0x11720
movq %rax, -0xe38(%rbp)
jmp 0x647a
leaq -0x441(%rbp), %rdi
movq %rdi, -0xe40(%rbp)
callq 0x5740
movq -0xe40(%rbp), %rdx
leaq 0x62cdd(%rip), %rsi     # 0x69178
leaq -0x440(%rbp), %rdi
callq 0x5590
jmp 0x64a9
leaq -0x469(%rbp), %rdi
movq %rdi, -0xe48(%rbp)
callq 0x5740
movq -0xe48(%rbp), %rdx
leaq 0x62bb3(%rip), %rsi     # 0x6907d
leaq -0x468(%rbp), %rdi
callq 0x5590
jmp 0x64d8
leaq -0x491(%rbp), %rdi
movq %rdi, -0xe50(%rbp)
callq 0x5740
movq -0xe50(%rbp), %rdx
leaq 0x62cbf(%rip), %rsi     # 0x691b8
leaq -0x490(%rbp), %rdi
callq 0x5590
jmp 0x6507
leaq -0x4b9(%rbp), %rdi
movq %rdi, -0xe58(%rbp)
callq 0x5740
movq -0xe58(%rbp), %rdx
leaq 0x62c60(%rip), %rsi     # 0x69188
leaq -0x4b8(%rbp), %rdi
callq 0x5590
jmp 0x6536
movq -0xe38(%rbp), %rdi
movl $0x74, %esi
leaq -0x440(%rbp), %rdx
leaq -0x468(%rbp), %rcx
leaq -0x490(%rbp), %r8
leaq -0x4b8(%rbp), %r9
callq 0x11720
movq %rax, -0xe60(%rbp)
jmp 0x656c
leaq -0x4e1(%rbp), %rdi
movq %rdi, -0xe68(%rbp)
callq 0x5740
movq -0xe68(%rbp), %rdx
leaq 0x62c2d(%rip), %rsi     # 0x691ba
leaq -0x4e0(%rbp), %rdi
callq 0x5590
jmp 0x659b
leaq -0x509(%rbp), %rdi
movq %rdi, -0xe70(%rbp)
callq 0x5740
movq -0xe70(%rbp), %rdx
leaq 0x6333e(%rip), %rsi     # 0x698fa
leaq -0x508(%rbp), %rdi
callq 0x5590
jmp 0x65ca
leaq -0x531(%rbp), %rdi
movq %rdi, -0xe78(%rbp)
callq 0x5740
movq -0xe78(%rbp), %rdx
leaq 0x6330f(%rip), %rsi     # 0x698fa
leaq -0x530(%rbp), %rdi
callq 0x5590
jmp 0x65f9
leaq -0x559(%rbp), %rdi
movq %rdi, -0xe80(%rbp)
callq 0x5740
movq -0xe80(%rbp), %rdx
leaq 0x62bb5(%rip), %rsi     # 0x691cf
leaq -0x558(%rbp), %rdi
callq 0x5590
jmp 0x6628
movq -0xe60(%rbp), %rdi
movl $0x62, %esi
leaq -0x4e0(%rbp), %rdx
leaq -0x508(%rbp), %rcx
leaq -0x530(%rbp), %r8
leaq -0x558(%rbp), %r9
callq 0x11720
movq %rax, -0xe88(%rbp)
jmp 0x665e
leaq -0x581(%rbp), %rdi
movq %rdi, -0xe90(%rbp)
callq 0x5740
movq -0xe90(%rbp), %rdx
leaq 0x62b82(%rip), %rsi     # 0x69201
leaq -0x580(%rbp), %rdi
callq 0x5590
jmp 0x668d
leaq -0x5a9(%rbp), %rdi
movq %rdi, -0xe98(%rbp)
callq 0x5740
movq -0xe98(%rbp), %rdx
leaq 0x6324c(%rip), %rsi     # 0x698fa
leaq -0x5a8(%rbp), %rdi
callq 0x5590
jmp 0x66bc
leaq -0x5d1(%rbp), %rdi
movq %rdi, -0xea0(%rbp)
callq 0x5740
movq -0xea0(%rbp), %rdx
leaq 0x6321d(%rip), %rsi     # 0x698fa
leaq -0x5d0(%rbp), %rdi
callq 0x5590
jmp 0x66eb
leaq -0x5f9(%rbp), %rdi
movq %rdi, -0xea8(%rbp)
callq 0x5740
movq -0xea8(%rbp), %rdx
leaq 0x62b06(%rip), %rsi     # 0x69212
leaq -0x5f8(%rbp), %rdi
callq 0x5590
jmp 0x671a
movq -0xe88(%rbp), %rdi
movl $0x66, %esi
leaq -0x580(%rbp), %rdx
leaq -0x5a8(%rbp), %rcx
leaq -0x5d0(%rbp), %r8
leaq -0x5f8(%rbp), %r9
callq 0x11720
movq %rax, -0xeb0(%rbp)
jmp 0x6750
leaq -0x621(%rbp), %rdi
movq %rdi, -0xeb8(%rbp)
callq 0x5740
movq -0xeb8(%rbp), %rdx
leaq 0x62ad6(%rip), %rsi     # 0x69247
leaq -0x620(%rbp), %rdi
callq 0x5590
jmp 0x677f
leaq -0x649(%rbp), %rdi
movq %rdi, -0xec0(%rbp)
callq 0x5740
movq -0xec0(%rbp), %rdx
leaq 0x6315a(%rip), %rsi     # 0x698fa
leaq -0x648(%rbp), %rdi
callq 0x5590
jmp 0x67ae
leaq -0x671(%rbp), %rdi
movq %rdi, -0xec8(%rbp)
callq 0x5740
movq -0xec8(%rbp), %rdx
leaq 0x6312b(%rip), %rsi     # 0x698fa
leaq -0x670(%rbp), %rdi
callq 0x5590
jmp 0x67dd
leaq -0x699(%rbp), %rdi
movq %rdi, -0xed0(%rbp)
callq 0x5740
movq -0xed0(%rbp), %rdx
leaq 0x62a4f(%rip), %rsi     # 0x6924d
leaq -0x698(%rbp), %rdi
callq 0x5590
jmp 0x680c
movq -0xeb0(%rbp), %rdi
movl $0x38, %esi
leaq -0x620(%rbp), %rdx
leaq -0x648(%rbp), %rcx
leaq -0x670(%rbp), %r8
leaq -0x698(%rbp), %r9
callq 0x11720
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 0x12570
jmp 0x6bc8
leaq -0xc8(%rbp), %rdi
addq $0x98, %rdi
callq 0x8fa0
cmpq $0x4, %rax
je 0x73c6
movq 0x913d4(%rip), %rax     # 0x97fc0
movq (%rax), %rsi
leaq -0xc8(%rbp), %rdi
movl $0x1, %edx
callq 0x12d30
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 0x8c80
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x8c80
leaq -0x6c1(%rbp), %rdi
movq %rdi, -0xed8(%rbp)
callq 0x5740
movq -0xed8(%rbp), %rdx
leaq 0x61e86(%rip), %rsi     # 0x6926d
leaq -0x6c0(%rbp), %rdi
callq 0x5590
jmp 0x73f5
leaq -0xc8(%rbp), %rdi
leaq -0x6c0(%rbp), %rsi
callq 0x126b0
movq %rax, -0xee0(%rbp)
jmp 0x7411
movq -0xee0(%rbp), %rdi
callq 0x11400
movl %eax, -0xee4(%rbp)
jmp 0x7425
leaq -0x6c0(%rbp), %rdi
callq 0x5878
leaq -0x6c1(%rbp), %rdi
callq 0x5450
movl -0xee4(%rbp), %eax
movl %eax, -0x6a0(%rbp)
leaq -0x6e9(%rbp), %rdi
movq %rdi, -0xef0(%rbp)
callq 0x5740
movq -0xef0(%rbp), %rdx
leaq 0x61e0e(%rip), %rsi     # 0x69278
leaq -0x6e8(%rbp), %rdi
callq 0x5590
jmp 0x7478
leaq -0xc8(%rbp), %rdi
leaq -0x6e8(%rbp), %rsi
callq 0x126b0
movq %rax, -0xef8(%rbp)
jmp 0x7494
movq -0xef8(%rbp), %rdi
callq 0x11400
movl %eax, -0xefc(%rbp)
jmp 0x74a8
leaq -0x6e8(%rbp), %rdi
callq 0x5878
leaq -0x6e9(%rbp), %rdi
callq 0x5450
movl -0xefc(%rbp), %eax
movl %eax, -0x6c8(%rbp)
leaq -0x711(%rbp), %rdi
movq %rdi, -0xf08(%rbp)
callq 0x5740
movq -0xf08(%rbp), %rdx
leaq 0x61d94(%rip), %rsi     # 0x69281
leaq -0x710(%rbp), %rdi
callq 0x5590
jmp 0x74fb
leaq -0xc8(%rbp), %rdi
leaq -0x710(%rbp), %rsi
callq 0x126b0
movq %rax, -0xf10(%rbp)
jmp 0x7517
movq -0xf10(%rbp), %rdi
callq 0x11400
movl %eax, -0xf14(%rbp)
jmp 0x752b
leaq -0x710(%rbp), %rdi
callq 0x5878
leaq -0x711(%rbp), %rdi
callq 0x5450
movl -0xf14(%rbp), %eax
movl %eax, -0x6f0(%rbp)
leaq -0x739(%rbp), %rdi
movq %rdi, -0xf20(%rbp)
callq 0x5740
movq -0xf20(%rbp), %rdx
leaq 0x61d1c(%rip), %rsi     # 0x6928c
leaq -0x738(%rbp), %rdi
callq 0x5590
jmp 0x757e
leaq -0xc8(%rbp), %rdi
leaq -0x738(%rbp), %rsi
callq 0x126b0
movq %rax, -0xf28(%rbp)
jmp 0x759a
movq -0xf28(%rbp), %rdi
callq 0x11400
movl %eax, -0xf2c(%rbp)
jmp 0x75ae
leaq -0x738(%rbp), %rdi
callq 0x5878
leaq -0x739(%rbp), %rdi
callq 0x5450
movl -0xf2c(%rbp), %eax
movl %eax, -0x718(%rbp)
leaq -0x30(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x8fc0
movq %rax, %rsi
leaq -0x760(%rbp), %rdi
callq 0x51c0
jmp 0x75f0
leaq -0x30(%rbp), %rdi
movl $0x1, %esi
callq 0x8fc0
movq %rax, %rsi
leaq -0x780(%rbp), %rdi
callq 0x51c0
jmp 0x760f
leaq -0x30(%rbp), %rdi
movl $0x2, %esi
callq 0x8fc0
movq %rax, %rsi
leaq -0x7a0(%rbp), %rdi
callq 0x51c0
jmp 0x762e
leaq -0x30(%rbp), %rdi
movl $0x3, %esi
callq 0x8fc0
movq %rax, %rsi
leaq -0x7c0(%rbp), %rdi
callq 0x51c0
jmp 0x764d
leaq -0x7e9(%rbp), %rdi
movq %rdi, -0xf38(%rbp)
callq 0x5740
movq -0xf38(%rbp), %rdx
leaq 0x61c29(%rip), %rsi     # 0x69297
leaq -0x7e8(%rbp), %rdi
callq 0x5590
jmp 0x767c
leaq -0xc8(%rbp), %rdi
leaq -0x7e8(%rbp), %rsi
callq 0x126b0
movq %rax, -0xf40(%rbp)
jmp 0x7698
movq -0xf40(%rbp), %rdi
callq 0x11400
movl %eax, -0xf44(%rbp)
jmp 0x76ac
leaq -0x7e8(%rbp), %rdi
callq 0x5878
leaq -0x7e9(%rbp), %rdi
callq 0x5450
movl -0xf44(%rbp), %eax
movl %eax, -0x7c4(%rbp)
leaq -0x811(%rbp), %rdi
movq %rdi, -0xf50(%rbp)
callq 0x5740
movq -0xf50(%rbp), %rdx
leaq 0x61ac9(%rip), %rsi     # 0x691ba
leaq -0x810(%rbp), %rdi
callq 0x5590
jmp 0x76ff
leaq -0xc8(%rbp), %rdi
leaq -0x810(%rbp), %rsi
callq 0x126b0
movq %rax, -0xf58(%rbp)
jmp 0x771b
movq -0xf58(%rbp), %rax
movb 0x4a(%rax), %al
movb %al, -0xf61(%rbp)
leaq -0x810(%rbp), %rdi
callq 0x5878
leaq -0x811(%rbp), %rdi
callq 0x5450
movb -0xf61(%rbp), %al
andb $0x1, %al
movb %al, -0x7ea(%rbp)
leaq -0x839(%rbp), %rdi
movq %rdi, -0xf60(%rbp)
callq 0x5740
movq -0xf60(%rbp), %rdx
leaq 0x61a8f(%rip), %rsi     # 0x69201
leaq -0x838(%rbp), %rdi
callq 0x5590
jmp 0x7780
leaq -0xc8(%rbp), %rdi
leaq -0x838(%rbp), %rsi
callq 0x126b0
movq %rax, -0xf70(%rbp)
jmp 0x779c
movq -0xf70(%rbp), %rax
movb 0x4a(%rax), %al
movb %al, -0xf79(%rbp)
leaq -0x838(%rbp), %rdi
callq 0x5878
leaq -0x839(%rbp), %rdi
callq 0x5450
movb -0xf79(%rbp), %al
andb $0x1, %al
movb %al, -0x812(%rbp)
leaq -0x861(%rbp), %rdi
movq %rdi, -0xf78(%rbp)
callq 0x5740
movq -0xf78(%rbp), %rdx
leaq 0x61a54(%rip), %rsi     # 0x69247
leaq -0x860(%rbp), %rdi
callq 0x5590
jmp 0x7801
leaq -0xc8(%rbp), %rdi
leaq -0x860(%rbp), %rsi
callq 0x126b0
movq %rax, -0xf88(%rbp)
jmp 0x781d
movq -0xf88(%rbp), %rax
movb 0x4a(%rax), %al
movb %al, -0xf89(%rbp)
leaq -0x860(%rbp), %rdi
callq 0x5878
leaq -0x861(%rbp), %rdi
callq 0x5450
movb -0xf89(%rbp), %al
andb $0x1, %al
movb %al, -0x83a(%rbp)
movq 0x9078e(%rip), %rdi     # 0x97fe8
leaq 0x177f(%rip), %rsi      # 0x8fe0
callq 0x5150
jmp 0x7868
movq 0x90779(%rip), %rdi     # 0x97fe8
leaq 0x61a2d(%rip), %rsi     # 0x692a3
callq 0x53e0
movq %rax, -0xf98(%rbp)
jmp 0x7884
movq -0xf98(%rbp), %rdi
leaq -0x760(%rbp), %rsi
callq 0x53a0
movq %rax, -0xfa0(%rbp)
jmp 0x78a0
movq -0xfa0(%rbp), %rdi
movq 0x906ea(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x78b5
movq 0x9072c(%rip), %rdi     # 0x97fe8
leaq 0x619f7(%rip), %rsi     # 0x692ba
callq 0x53e0
movq %rax, -0xfa8(%rbp)
jmp 0x78d1
movq -0xfa8(%rbp), %rdi
leaq -0x780(%rbp), %rsi
callq 0x53a0
movq %rax, -0xfb0(%rbp)
jmp 0x78ed
movq -0xfb0(%rbp), %rdi
movq 0x9069d(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x7902
movq 0x906df(%rip), %rdi     # 0x97fe8
leaq 0x619cc(%rip), %rsi     # 0x692dc
callq 0x53e0
movq %rax, -0xfb8(%rbp)
jmp 0x791e
movq -0xfb8(%rbp), %rdi
leaq -0x7a0(%rbp), %rsi
callq 0x53a0
movq %rax, -0xfc0(%rbp)
jmp 0x793a
movq -0xfc0(%rbp), %rdi
movq 0x90650(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x794f
movq 0x90692(%rip), %rdi     # 0x97fe8
leaq 0x61992(%rip), %rsi     # 0x692ef
callq 0x53e0
movq %rax, -0xfc8(%rbp)
jmp 0x796b
movq -0xfc8(%rbp), %rdi
leaq -0x7c0(%rbp), %rsi
callq 0x53a0
movq %rax, -0xfd0(%rbp)
jmp 0x7987
movq -0xfd0(%rbp), %rdi
movq 0x90603(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x799c
movq 0x90645(%rip), %rdi     # 0x97fe8
leaq 0x61963(%rip), %rsi     # 0x6930d
callq 0x53e0
movq %rax, -0xfd8(%rbp)
jmp 0x79b8
movq -0xfd8(%rbp), %rdi
movl -0x6a0(%rbp), %esi
callq 0x5570
movq %rax, -0xfe0(%rbp)
jmp 0x79d3
movq -0xfe0(%rbp), %rdi
movq 0x905b7(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x79e8
movq 0x905f9(%rip), %rdi     # 0x97fe8
leaq 0x6193e(%rip), %rsi     # 0x69334
callq 0x53e0
movq %rax, -0xfe8(%rbp)
jmp 0x7a04
movq -0xfe8(%rbp), %rdi
movl -0x6c8(%rbp), %esi
callq 0x5570
movq %rax, -0xff0(%rbp)
jmp 0x7a1f
movq -0xff0(%rbp), %rdi
movq 0x9056b(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x7a34
movq 0x905ad(%rip), %rdi     # 0x97fe8
leaq 0x61917(%rip), %rsi     # 0x69359
callq 0x53e0
movq %rax, -0xff8(%rbp)
jmp 0x7a50
movq -0xff8(%rbp), %rdi
movl -0x6f0(%rbp), %esi
callq 0x5570
movq %rax, -0x1000(%rbp)
jmp 0x7a6b
movq -0x1000(%rbp), %rdi
movq 0x9051f(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x7a80
movq 0x90561(%rip), %rdi     # 0x97fe8
leaq 0x618ff(%rip), %rsi     # 0x6938d
callq 0x53e0
movq %rax, -0x1008(%rbp)
jmp 0x7a9c
movq -0x1008(%rbp), %rdi
movl -0x718(%rbp), %esi
callq 0x5570
movq %rax, -0x1010(%rbp)
jmp 0x7ab7
movq -0x1010(%rbp), %rdi
movq 0x904d3(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x7acc
movq 0x90515(%rip), %rdi     # 0x97fe8
leaq 0x618d3(%rip), %rsi     # 0x693ad
callq 0x53e0
movq %rax, -0x1018(%rbp)
jmp 0x7ae8
movq -0x1018(%rbp), %rdi
movsd 0x61511(%rip), %xmm0    # 0x69008
callq 0x57d0
movq %rax, -0x1020(%rbp)
jmp 0x7b05
movq -0x1020(%rbp), %rdi
movq 0x90485(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x7b1a
cmpl $0x0, -0x7c4(%rbp)
jbe 0x7e08
movq 0x904ba(%rip), %rdi     # 0x97fe8
leaq 0x6188f(%rip), %rsi     # 0x693c4
callq 0x53e0
movq %rax, -0x1028(%rbp)
jmp 0x7b43
movq -0x1028(%rbp), %rdi
movl -0x7c4(%rbp), %esi
callq 0x5570
movq %rax, -0x1030(%rbp)
jmp 0x7b5e
movq -0x1030(%rbp), %rdi
leaq 0x61648(%rip), %rsi     # 0x691b4
callq 0x53e0
movq %rax, -0x1038(%rbp)
jmp 0x7b7a
movq -0x1038(%rbp), %rdi
movq 0x90410(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x7b8f
jmp 0x7e3b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7bc6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x6c0(%rbp), %rdi
callq 0x5878
leaq -0x6c1(%rbp), %rdi
callq 0x5450
jmp 0x8c80
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7c09
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x6e8(%rbp), %rdi
callq 0x5878
leaq -0x6e9(%rbp), %rdi
callq 0x5450
jmp 0x8c80
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7c4c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x710(%rbp), %rdi
callq 0x5878
leaq -0x711(%rbp), %rdi
callq 0x5450
jmp 0x8c80
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7c8f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x738(%rbp), %rdi
callq 0x5878
leaq -0x739(%rbp), %rdi
callq 0x5450
jmp 0x8c80
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x8c74
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x8c68
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x8c5c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7d17
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x7e8(%rbp), %rdi
callq 0x5878
leaq -0x7e9(%rbp), %rdi
callq 0x5450
jmp 0x8c50
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7d5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x810(%rbp), %rdi
callq 0x5878
leaq -0x811(%rbp), %rdi
callq 0x5450
jmp 0x8c50
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7d9d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x838(%rbp), %rdi
callq 0x5878
leaq -0x839(%rbp), %rdi
callq 0x5450
jmp 0x8c50
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7de0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x860(%rbp), %rdi
callq 0x5878
leaq -0x861(%rbp), %rdi
callq 0x5450
jmp 0x8c50
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x8c50
movq 0x901d9(%rip), %rdi     # 0x97fe8
leaq 0x615e0(%rip), %rsi     # 0x693f6
callq 0x53e0
movq %rax, -0x1040(%rbp)
jmp 0x7e24
movq -0x1040(%rbp), %rdi
movq 0x90166(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x7e39
jmp 0x7e3b
movq 0x901a6(%rip), %rdi     # 0x97fe8
leaq 0x615cf(%rip), %rsi     # 0x69418
callq 0x53e0
movq %rax, -0x1048(%rbp)
jmp 0x7e57
movq -0x1048(%rbp), %rdi
movzbl -0x7ea(%rbp), %esi
andl $0x1, %esi
callq 0x5750
movq %rax, -0x1050(%rbp)
jmp 0x7e76
movq -0x1050(%rbp), %rdi
movq 0x90114(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x7e8b
movq 0x90156(%rip), %rdi     # 0x97fe8
leaq 0x615bf(%rip), %rsi     # 0x69458
callq 0x53e0
movq %rax, -0x1058(%rbp)
jmp 0x7ea7
movq -0x1058(%rbp), %rdi
movzbl -0x812(%rbp), %esi
andl $0x1, %esi
callq 0x5750
movq %rax, -0x1060(%rbp)
jmp 0x7ec6
movq -0x1060(%rbp), %rdi
movq 0x900c4(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x7edb
movq 0x90106(%rip), %rdi     # 0x97fe8
leaq 0x61592(%rip), %rsi     # 0x6947b
callq 0x53e0
movq %rax, -0x1068(%rbp)
jmp 0x7ef7
movq -0x1068(%rbp), %rdi
movzbl -0x83a(%rbp), %esi
andl $0x1, %esi
callq 0x5750
movq %rax, -0x1070(%rbp)
jmp 0x7f16
movq -0x1070(%rbp), %rdi
movq 0x90074(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x7f2b
leaq -0x898(%rbp), %rdi
callq 0x9010
leaq -0x8c8(%rbp), %rdi
callq 0x9010
leaq -0x8f8(%rbp), %rdi
callq 0x9010
leaq 0x9050a(%rip), %rsi     # 0x98460
leaq -0x9f0(%rbp), %rdi
callq 0x9030
jmp 0x7f64
leaq -0xa20(%rbp), %rdi
callq 0x91e0
leaq -0xa50(%rbp), %rdi
callq 0x91e0
leaq -0xa80(%rbp), %rdi
callq 0x9010
leaq -0xab0(%rbp), %rdi
callq 0x9200
movq 0x9004d(%rip), %rdi     # 0x97fe8
leaq 0x614f6(%rip), %rsi     # 0x69498
callq 0x53e0
movq %rax, -0x1078(%rbp)
jmp 0x7fb0
movq -0x1078(%rbp), %rdi
leaq -0x780(%rbp), %rsi
callq 0x53a0
movq %rax, -0x1080(%rbp)
jmp 0x7fcc
movq -0x1080(%rbp), %rdi
movq 0x8ffbe(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x7fe1
leaq -0xa20(%rbp), %rdi
leaq -0x780(%rbp), %rsi
callq 0x61ec0
movl %eax, -0x1084(%rbp)
jmp 0x7ffc
movl -0x1084(%rbp), %eax
movl %eax, -0xab4(%rbp)
cmpl $0x0, -0xab4(%rbp)
jge 0x807a
movq 0x8ffd0(%rip), %rdi     # 0x97fe8
leaq 0x61496(%rip), %rsi     # 0x694b5
callq 0x53e0
movq %rax, -0x1090(%rbp)
jmp 0x802d
movq -0x1090(%rbp), %rdi
movq 0x8ff5d(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x8042
movl $0x1, %edi
callq 0x54a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x8c2c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x8bf0
movq 0x8ff67(%rip), %rdi     # 0x97fe8
leaq 0x61456(%rip), %rsi     # 0x694de
callq 0x53e0
movq %rax, -0x1098(%rbp)
jmp 0x8096
leaq -0xa20(%rbp), %rdi
callq 0x629a0
movl %eax, -0x109c(%rbp)
jmp 0x80aa
movl -0x109c(%rbp), %esi
movq -0x1098(%rbp), %rdi
callq 0x5720
movq %rax, -0x10a8(%rbp)
jmp 0x80c5
movq -0x10a8(%rbp), %rdi
movq 0x8fec5(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x80da
movq 0x8ff07(%rip), %rdi     # 0x97fe8
leaq 0x6140f(%rip), %rsi     # 0x694f7
callq 0x53e0
movq %rax, -0x10b0(%rbp)
jmp 0x80f6
leaq -0xa20(%rbp), %rdi
callq 0x9220
movq -0x10b0(%rbp), %rdi
movq %rax, %rsi
callq 0x50f0
movq %rax, -0x10b8(%rbp)
jmp 0x811a
movq -0x10b8(%rbp), %rdi
movq 0x8fe70(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x812f
leaq -0xae8(%rbp), %rdi
movq %rdi, -0x10c0(%rbp)
callq 0x9010
movq -0x10c0(%rbp), %rsi
leaq -0xa20(%rbp), %rdi
callq 0x62a60
jmp 0x8157
movl -0x6f0(%rbp), %edx
movzbl -0x83a(%rbp), %ecx
andl $0x1, %ecx
leaq -0xae8(%rbp), %rdi
leaq -0xab0(%rbp), %rsi
callq 0x8ca0
jmp 0x817c
movq 0x8fe65(%rip), %rdi     # 0x97fe8
leaq 0x61380(%rip), %rsi     # 0x6950a
callq 0x53e0
movq %rax, -0x10c8(%rbp)
jmp 0x8198
movq -0x10c8(%rbp), %rdi
leaq -0x760(%rbp), %rsi
callq 0x53a0
movq %rax, -0x10d0(%rbp)
jmp 0x81b4
movq -0x10d0(%rbp), %rdi
movq 0x8fdd6(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x81c9
leaq -0xb08(%rbp), %rdi
leaq -0x760(%rbp), %rsi
callq 0x51c0
jmp 0x81de
movzbl -0x83a(%rbp), %ecx
andl $0x1, %ecx
leaq -0xb08(%rbp), %rdi
leaq -0x8f8(%rbp), %rsi
leaq -0x868(%rbp), %rdx
callq 0x588a0
movl %eax, -0x10d4(%rbp)
jmp 0x820a
movl -0x10d4(%rbp), %eax
movl %eax, -0xab4(%rbp)
leaq -0xb08(%rbp), %rdi
callq 0x5878
cmpl $0x0, -0xab4(%rbp)
jge 0x82a0
movq 0x8fdb6(%rip), %rdi     # 0x97fe8
leaq 0x612e4(%rip), %rsi     # 0x6951d
callq 0x53e0
movq %rax, -0x10e0(%rbp)
jmp 0x8247
movq -0x10e0(%rbp), %rdi
movq 0x8fd43(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x825c
movl $0x1, %edi
callq 0x54a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x8be4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xb08(%rbp), %rdi
callq 0x5878
jmp 0x8be4
movq 0x8fd41(%rip), %rdi     # 0x97fe8
leaq 0x6164b(%rip), %rsi     # 0x698f9
callq 0x53e0
movq %rax, -0x10e8(%rbp)
jmp 0x82bc
movq -0x10e8(%rbp), %rdi
leaq 0x6127a(%rip), %rsi     # 0x69544
callq 0x53e0
movq %rax, -0x10f0(%rbp)
jmp 0x82d8
leaq -0x8f8(%rbp), %rdi
callq 0x9240
movq -0x10f0(%rbp), %rdi
movq %rax, %rsi
callq 0x50f0
movq %rax, -0x10f8(%rbp)
jmp 0x82fc
movq -0x10f8(%rbp), %rdi
movq 0x8fc8e(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x8311
movq 0x8fcd0(%rip), %rdi     # 0x97fe8
leaq 0x615da(%rip), %rsi     # 0x698f9
callq 0x53e0
movq %rax, -0x1100(%rbp)
jmp 0x832d
movq -0x1100(%rbp), %rdi
leaq 0x61219(%rip), %rsi     # 0x69554
callq 0x53e0
movq %rax, -0x1108(%rbp)
jmp 0x8349
movq -0x1108(%rbp), %rdi
movl -0x868(%rbp), %esi
callq 0x5720
movq %rax, -0x1110(%rbp)
jmp 0x8364
movq -0x1110(%rbp), %rdi
movq 0x8fc26(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x8379
movq 0x8fc68(%rip), %rdi     # 0x97fe8
leaq 0x611e3(%rip), %rsi     # 0x6956a
callq 0x53e0
movq %rax, -0x1118(%rbp)
jmp 0x8395
movq -0x1118(%rbp), %rdi
leaq -0x7a0(%rbp), %rsi
callq 0x53a0
movq %rax, -0x1120(%rbp)
jmp 0x83b1
movq -0x1120(%rbp), %rdi
movq 0x8fbd9(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x83c6
leaq -0x9f0(%rbp), %rdi
leaq -0x7a0(%rbp), %rsi
callq 0x35dd0
jmp 0x83db
leaq -0x9f0(%rbp), %rdi
leaq -0xa20(%rbp), %rsi
callq 0x35700
jmp 0x83f0
movl $0xf, %edi
callq 0x9260
movl %eax, -0x1124(%rbp)
jmp 0x8402
movl -0x1124(%rbp), %eax
movl %eax, -0xb0c(%rbp)
movl -0xb0c(%rbp), %esi
movq 0x8fbcd(%rip), %rdi     # 0x97fe8
callq 0x5670
jmp 0x8422
movl $0x1, -0xb10(%rbp)
movl $0x0, -0xb14(%rbp)
jmp 0x8438
movq 0x8fba9(%rip), %rdi     # 0x97fe8
leaq 0x61132(%rip), %rsi     # 0x69578
callq 0x53e0
movq %rax, -0x1130(%rbp)
jmp 0x8454
movq -0x1130(%rbp), %rdi
movl -0xb10(%rbp), %esi
callq 0x5720
movq %rax, -0x1138(%rbp)
jmp 0x846f
movq -0x1138(%rbp), %rdi
movq 0x8fb1b(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x8484
leaq -0xa20(%rbp), %rdi
leaq -0x9f0(%rbp), %rsi
callq 0x485f0
jmp 0x8499
movzbl -0x812(%rbp), %r8d
andl $0x1, %r8d
leaq -0x8f8(%rbp), %rdi
leaq -0x9f0(%rbp), %rsi
leaq -0xa50(%rbp), %rdx
leaq -0xa80(%rbp), %rcx
callq 0x60200
movsd %xmm0, -0x1140(%rbp)
jmp 0x84d0
movsd -0x1140(%rbp), %xmm0
movsd %xmm0, -0xb20(%rbp)
leaq -0xa20(%rbp), %rdi
movq %rdi, -0x1148(%rbp)
leaq -0xa50(%rbp), %rsi
callq 0x9280
movq -0x1148(%rbp), %rdi
movsd 0x60aff(%rip), %xmm0    # 0x69008
callq 0x604f0
jmp 0x8510
leaq -0xa50(%rbp), %rdi
callq 0x92b0
movq 0x8fac5(%rip), %rdi     # 0x97fe8
leaq 0x61059(%rip), %rsi     # 0x69583
callq 0x53e0
movq %rax, -0x1150(%rbp)
jmp 0x8538
movq -0x1150(%rbp), %rdi
movsd -0xb20(%rbp), %xmm0
callq 0x57d0
movq %rax, -0x1158(%rbp)
jmp 0x8555
movq -0x1158(%rbp), %rdi
movq 0x8fa35(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x856a
movq 0x8fa77(%rip), %rdi     # 0x97fe8
leaq 0x60f66(%rip), %rsi     # 0x694de
callq 0x53e0
movq %rax, -0x1160(%rbp)
jmp 0x8586
leaq -0xa20(%rbp), %rdi
callq 0x629a0
movl %eax, -0x1164(%rbp)
jmp 0x859a
movl -0x1164(%rbp), %esi
movq -0x1160(%rbp), %rdi
callq 0x5720
movq %rax, -0x1170(%rbp)
jmp 0x85b5
movq -0x1170(%rbp), %rdi
movq 0x8f9d5(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x85ca
movq 0x8fa17(%rip), %rdi     # 0x97fe8
leaq 0x60f1f(%rip), %rsi     # 0x694f7
callq 0x53e0
movq %rax, -0x1178(%rbp)
jmp 0x85e6
leaq -0xa20(%rbp), %rdi
callq 0x9220
movq -0x1178(%rbp), %rdi
movq %rax, %rsi
callq 0x50f0
movq %rax, -0x1180(%rbp)
jmp 0x860a
movq -0x1180(%rbp), %rdi
movq 0x8f980(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x861f
cmpl $0x1, -0xb10(%rbp)
jne 0x8658
cmpl $0x0, -0x7c4(%rbp)
jbe 0x8658
leaq -0xa20(%rbp), %rdi
callq 0x9220
movl -0x7c4(%rbp), %ecx
xorl %edx, %edx
divq %rcx
movl -0x7c4(%rbp), %ecx
imulq %rcx, %rax
movl %eax, -0xb14(%rbp)
movq 0x8f989(%rip), %rdi     # 0x97fe8
leaq 0x60f32(%rip), %rsi     # 0x69598
callq 0x53e0
movq %rax, -0x1188(%rbp)
jmp 0x8674
movq -0x1188(%rbp), %rdi
movq 0x8f916(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x8689
leaq -0xb50(%rbp), %rdi
movq %rdi, -0x1190(%rbp)
callq 0x9010
movq -0x1190(%rbp), %rdx
movl -0x6a0(%rbp), %edi
leaq -0xa80(%rbp), %rsi
leaq -0xab0(%rbp), %rcx
callq 0x63680
jmp 0x86be
movq 0x8f923(%rip), %rdi     # 0x97fe8
leaq 0x60ee6(%rip), %rsi     # 0x695b2
callq 0x53e0
movq %rax, -0x1198(%rbp)
jmp 0x86da
movq -0x1198(%rbp), %rdi
movq 0x8f8b0(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x86ef
leaq -0xa20(%rbp), %rdi
leaq -0x9f0(%rbp), %rsi
callq 0x485f0
jmp 0x8704
movzbl -0x812(%rbp), %r9d
movzbl -0x7ea(%rbp), %ecx
andl $0x1, %ecx
movq %rsp, %rax
movl %ecx, (%rax)
andl $0x1, %r9d
leaq -0x8f8(%rbp), %rdi
leaq -0x9f0(%rbp), %rsi
leaq -0xa80(%rbp), %rdx
leaq -0xa20(%rbp), %rcx
leaq -0xb50(%rbp), %r8
callq 0x63bf0
jmp 0x8749
leaq -0xb68(%rbp), %rdi
movq %rdi, -0x11a0(%rbp)
callq 0x92d0
movq -0x11a0(%rbp), %rsi
leaq -0xb50(%rbp), %rdi
movl $0x1, %edx
callq 0x592b0
jmp 0x8776
leaq -0xb80(%rbp), %rdi
callq 0x92f0
leaq -0xb68(%rbp), %rdi
callq 0x9310
movq %rax, -0xb88(%rbp)
leaq -0xb68(%rbp), %rdi
callq 0x9380
movq %rax, -0xb90(%rbp)
leaq -0xb88(%rbp), %rdi
leaq -0xb90(%rbp), %rsi
callq 0x9340
testb $0x1, %al
jne 0x87c4
jmp 0x8893
leaq -0xb88(%rbp), %rdi
callq 0x9420
movq %rax, %rsi
leaq -0xb80(%rbp), %rdi
callq 0x93b0
jmp 0x87e1
leaq -0xa20(%rbp), %rdi
callq 0x9220
movq %rax, -0x11a8(%rbp)
leaq -0xb80(%rbp), %rdi
callq 0x8fa0
movq %rax, %rcx
movq -0x11a8(%rbp), %rax
subq %rcx, %rax
movl -0x6c8(%rbp), %ecx
xorl %edx, %edx
divq %rcx
cmpq $0x0, %rdx
jne 0x8880
leaq -0xb80(%rbp), %rdi
callq 0x8fa0
movl -0x6c8(%rbp), %ecx
shrl %ecx
movl %ecx, %ecx
cmpq %rcx, %rax
jb 0x8880
jmp 0x8893
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x8bb3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x8ba7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x8b9b
jmp 0x8882
leaq -0xb88(%rbp), %rdi
callq 0x9440
jmp 0x8795
leaq -0xb80(%rbp), %rdi
leaq -0xa20(%rbp), %rsi
callq 0x620f0
jmp 0x88a8
leaq -0xb80(%rbp), %rdi
callq 0x9460
movq %rax, -0xb98(%rbp)
leaq -0xb80(%rbp), %rdi
callq 0x94d0
movq %rax, -0xba0(%rbp)
leaq -0xb98(%rbp), %rdi
leaq -0xba0(%rbp), %rsi
callq 0x9490
testb $0x1, %al
jne 0x88e7
jmp 0x8914
leaq -0xb98(%rbp), %rdi
callq 0x9500
movq %rax, %rsi
leaq -0x9f0(%rbp), %rdi
callq 0x35420
jmp 0x8904
jmp 0x8906
leaq -0xb98(%rbp), %rdi
callq 0x9520
jmp 0x88bb
movzbl -0x812(%rbp), %ecx
andl $0x1, %ecx
leaq -0x8f8(%rbp), %rdi
leaq -0x9f0(%rbp), %rsi
leaq -0xa20(%rbp), %rdx
movl $0x1, %r8d
callq 0x600d0
jmp 0x8940
leaq -0x9f0(%rbp), %rdi
leaq -0xa20(%rbp), %rsi
callq 0x35700
jmp 0x8955
cmpl $0x0, -0x7c4(%rbp)
jbe 0x8b28
leaq -0xa20(%rbp), %rdi
callq 0x9220
movl -0xb14(%rbp), %ecx
cmpq %rcx, %rax
ja 0x8b28
leaq -0xa20(%rbp), %rdi
callq 0x9220
movl -0x718(%rbp), %ecx
cmpq %rcx, %rax
jbe 0x8b28
leaq -0xd18(%rbp), %rdi
callq 0x5580
jmp 0x89a6
leaq 0x60c1a(%rip), %rsi     # 0x695c7
leaq -0xd18(%rbp), %rdi
callq 0x53e0
movq %rax, -0x11b0(%rbp)
jmp 0x89c2
leaq -0xa20(%rbp), %rdi
callq 0x9220
movq -0x11b0(%rbp), %rdi
movq %rax, %rsi
callq 0x50f0
movq %rax, -0x11b8(%rbp)
jmp 0x89e6
movq -0x11b8(%rbp), %rdi
leaq 0x60be0(%rip), %rsi     # 0x695d4
callq 0x53e0
jmp 0x89fb
movq 0x8f5e6(%rip), %rdi     # 0x97fe8
leaq 0x60bcf(%rip), %rsi     # 0x695d8
callq 0x53e0
movq %rax, -0x11c0(%rbp)
jmp 0x8a17
leaq -0xd38(%rbp), %rdi
leaq -0xd18(%rbp), %rsi
callq 0x5400
jmp 0x8a2c
movq -0x11c0(%rbp), %rdi
leaq -0xd38(%rbp), %rsi
callq 0x53a0
movq %rax, -0x11c8(%rbp)
jmp 0x8a48
movq -0x11c8(%rbp), %rdi
movq 0x8f542(%rip), %rsi     # 0x97f98
callq 0x5430
jmp 0x8a5d
leaq -0xd38(%rbp), %rdi
callq 0x5878
leaq -0xd58(%rbp), %rdi
leaq -0xd18(%rbp), %rsi
callq 0x5400
jmp 0x8a7e
leaq -0xa20(%rbp), %rdi
leaq -0xd58(%rbp), %rsi
xorl %edx, %edx
movl $0x6, %ecx
callq 0x61920
jmp 0x8a9a
leaq -0xd58(%rbp), %rdi
callq 0x5878
movl -0x7c4(%rbp), %ecx
movl -0xb14(%rbp), %eax
subl %ecx, %eax
movl %eax, -0xb14(%rbp)
leaq -0xd18(%rbp), %rdi
callq 0x5100
jmp 0x8b28
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x8b1a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xd38(%rbp), %rdi
callq 0x5878
jmp 0x8b1a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xd58(%rbp), %rdi
callq 0x5878
leaq -0xd18(%rbp), %rdi
callq 0x5100
jmp 0x8b9b
leaq -0xa20(%rbp), %rdi
callq 0x9220
movl -0x718(%rbp), %ecx
cmpq %rcx, %rax
ja 0x8b4b
movl $0x3, -0xd5c(%rbp)
jmp 0x8b64
movl -0xb10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xb10(%rbp)
movl $0x0, -0xd5c(%rbp)
leaq -0xb80(%rbp), %rdi
callq 0x9540
leaq -0xb68(%rbp), %rdi
callq 0x95a0
leaq -0xb50(%rbp), %rdi
callq 0x9600
movl -0xd5c(%rbp), %eax
testl %eax, %eax
je 0x8b96
jmp 0x8b94
jmp 0x8bc1
jmp 0x8436
leaq -0xb80(%rbp), %rdi
callq 0x9540
leaq -0xb68(%rbp), %rdi
callq 0x95a0
leaq -0xb50(%rbp), %rdi
callq 0x9600
jmp 0x8be4
leaq -0xa20(%rbp), %rdi
leaq -0x7c0(%rbp), %rsi
xorl %edx, %edx
movl $0x6, %ecx
callq 0x61920
jmp 0x8bdd
xorl %edi, %edi
callq 0x54a0
leaq -0xae8(%rbp), %rdi
callq 0x9600
leaq -0xab0(%rbp), %rdi
callq 0x9620
leaq -0xa80(%rbp), %rdi
callq 0x9600
leaq -0xa50(%rbp), %rdi
callq 0x9640
leaq -0xa20(%rbp), %rdi
callq 0x9640
leaq -0x9f0(%rbp), %rdi
callq 0x33f70
leaq -0x8f8(%rbp), %rdi
callq 0x9600
leaq -0x8c8(%rbp), %rdi
callq 0x9600
leaq -0x898(%rbp), %rdi
callq 0x9600
leaq -0x7c0(%rbp), %rdi
callq 0x5878
leaq -0x7a0(%rbp), %rdi
callq 0x5878
leaq -0x780(%rbp), %rdi
callq 0x5878
leaq -0x760(%rbp), %rdi
callq 0x5878
leaq -0xc8(%rbp), %rdi
callq 0x9660
movq -0xf8(%rbp), %rdi
callq 0x5730
nopl (%rax,%rax)