// File: /workspace/github_cpp_makefile_star2_O2/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xd38, %rsp            # imm = 0xD38
movq %rsi, %rbx
movl %edi, %r14d
leaq -0xa50(%rbp), %rdi
callq 0x8624
leaq 0x204c9(%rip), %rsi     # 0x25022
leaq -0x998(%rbp), %rdi
leaq -0xbf8(%rbp), %rdx
callq 0x4150
leaq -0xa50(%rbp), %rdi
leaq -0x998(%rbp), %rsi
callq 0x8690
movq %rax, %r15
leaq 0x204f3(%rip), %rsi     # 0x2507c
leaq -0x978(%rbp), %rdi
leaq -0xd50(%rbp), %rdx
callq 0x4150
leaq 0x20e44(%rip), %rsi     # 0x259e7
leaq -0x958(%rbp), %rdi
leaq -0xc58(%rbp), %rdx
callq 0x4150
leaq 0x20e2a(%rip), %rsi     # 0x259e7
leaq -0x938(%rbp), %rdi
leaq -0xc28(%rbp), %rdx
callq 0x4150
leaq 0x2049d(%rip), %rsi     # 0x25074
leaq -0x918(%rbp), %rdi
leaq -0x1e8(%rbp), %rdx
callq 0x4150
pushq $0x68
popq %rsi
leaq -0x978(%rbp), %rdx
leaq -0x958(%rbp), %rcx
leaq -0x938(%rbp), %r8
leaq -0x918(%rbp), %r9
movq %r15, %rdi
callq 0x86a8
movq %rax, %r15
leaq 0x20466(%rip), %rsi     # 0x25081
leaq -0x8f8(%rbp), %rdi
leaq -0x150(%rbp), %rdx
callq 0x4150
leaq 0x2045b(%rip), %rsi     # 0x25090
leaq -0x8d8(%rbp), %rdi
leaq -0x2b8(%rbp), %rdx
callq 0x4150
leaq 0x20445(%rip), %rsi     # 0x25094
leaq -0x8b8(%rbp), %rdi
leaq -0x288(%rbp), %rdx
callq 0x4150
leaq 0x20430(%rip), %rsi     # 0x25099
leaq -0x898(%rbp), %rdi
leaq -0xa80(%rbp), %rdx
callq 0x4150
pushq $0x63
popq %rsi
leaq -0x8f8(%rbp), %rdx
leaq -0x8d8(%rbp), %rcx
leaq -0x8b8(%rbp), %r8
leaq -0x898(%rbp), %r9
movq %r15, %rdi
callq 0x86a8
movq %rax, %r15
leaq 0x20428(%rip), %rsi     # 0x250d5
leaq -0x878(%rbp), %rdi
leaq -0x258(%rbp), %rdx
callq 0x4150
leaq 0x203c9(%rip), %rsi     # 0x25090
leaq -0x858(%rbp), %rdi
leaq -0xb0(%rbp), %rdx
callq 0x4150
leaq 0x20401(%rip), %rsi     # 0x250e2
leaq -0x838(%rbp), %rdi
leaq -0x1b8(%rbp), %rdx
callq 0x4150
leaq 0x203eb(%rip), %rsi     # 0x250e6
leaq -0x818(%rbp), %rdi
leaq -0x198(%rbp), %rdx
callq 0x4150
pushq $0x72
popq %rsi
leaq -0x878(%rbp), %rdx
leaq -0x858(%rbp), %rcx
leaq -0x838(%rbp), %r8
leaq -0x818(%rbp), %r9
movq %r15, %rdi
callq 0x86a8
movq %rax, %r15
leaq 0x203c8(%rip), %rsi     # 0x25107
leaq -0x7f8(%rbp), %rdi
leaq -0x178(%rbp), %rdx
callq 0x4150
leaq 0x20337(%rip), %rsi     # 0x25090
leaq -0x7d8(%rbp), %rdi
leaq -0x208(%rbp), %rdx
callq 0x4150
leaq 0x203d2(%rip), %rsi     # 0x25145
leaq -0x7b8(%rbp), %rdi
leaq -0x108(%rbp), %rdx
callq 0x4150
leaq 0x20389(%rip), %rsi     # 0x25116
leaq -0x798(%rbp), %rdi
leaq -0x120(%rbp), %rdx
callq 0x4150
pushq $0x6d
popq %rsi
leaq -0x7f8(%rbp), %rdx
leaq -0x7d8(%rbp), %rcx
leaq -0x7b8(%rbp), %r8
leaq -0x798(%rbp), %r9
movq %r15, %rdi
callq 0x86a8
movq %rax, %r15
leaq 0x20376(%rip), %rsi     # 0x25147
leaq -0x778(%rbp), %rdi
leaq -0xd0(%rbp), %rdx
callq 0x4150
leaq 0x2036b(%rip), %rsi     # 0x25156
leaq -0x758(%rbp), %rdi
leaq -0x60(%rbp), %rdx
callq 0x4150
leaq 0x20be5(%rip), %rsi     # 0x259e7
leaq -0x738(%rbp), %rdi
leaq -0x4e(%rbp), %rdx
callq 0x4150
leaq 0x20346(%rip), %rsi     # 0x2515f
leaq -0x718(%rbp), %rdi
leaq -0x4d(%rbp), %rdx
callq 0x4150
pushq $0x76
popq %rsi
leaq -0x778(%rbp), %rdx
leaq -0x758(%rbp), %rcx
leaq -0x738(%rbp), %r8
leaq -0x718(%rbp), %r9
movq %r15, %rdi
callq 0x86a8
movq %rax, %r15
leaq 0x20331(%rip), %rsi     # 0x2518b
leaq -0x6f8(%rbp), %rdi
leaq -0x4c(%rbp), %rdx
callq 0x4150
leaq 0x2021f(%rip), %rsi     # 0x25090
leaq -0x6d8(%rbp), %rdi
leaq -0x4b(%rbp), %rdx
callq 0x4150
leaq 0x20312(%rip), %rsi     # 0x2519a
leaq -0x6b8(%rbp), %rdi
leaq -0x4a(%rbp), %rdx
callq 0x4150
leaq 0x202ff(%rip), %rsi     # 0x2519e
leaq -0x698(%rbp), %rdi
leaq -0x49(%rbp), %rdx
callq 0x4150
pushq $0x64
popq %rsi
leaq -0x6f8(%rbp), %rdx
leaq -0x6d8(%rbp), %rcx
leaq -0x6b8(%rbp), %r8
leaq -0x698(%rbp), %r9
movq %r15, %rdi
callq 0x86a8
movq %rax, %r15
leaq 0x202dc(%rip), %rsi     # 0x251bc
leaq -0x678(%rbp), %rdi
leaq -0x48(%rbp), %rdx
callq 0x4150
leaq 0x20199(%rip), %rsi     # 0x25090
leaq -0x658(%rbp), %rdi
leaq -0x47(%rbp), %rdx
callq 0x4150
leaq 0x202ee(%rip), %rsi     # 0x251fc
leaq -0x638(%rbp), %rdi
leaq -0x46(%rbp), %rdx
callq 0x4150
leaq 0x202a7(%rip), %rsi     # 0x251cc
leaq -0x618(%rbp), %rdi
leaq -0x45(%rbp), %rdx
callq 0x4150
pushq $0x74
popq %rsi
leaq -0x678(%rbp), %rdx
leaq -0x658(%rbp), %rcx
leaq -0x638(%rbp), %r8
leaq -0x618(%rbp), %r9
movq %r15, %rdi
callq 0x86a8
movq %rax, %r15
leaq 0x20298(%rip), %rsi     # 0x251fe
leaq -0x5f8(%rbp), %rdi
leaq -0x44(%rbp), %rdx
callq 0x4150
leaq 0x20a6a(%rip), %rsi     # 0x259e7
leaq -0x5d8(%rbp), %rdi
leaq -0x43(%rbp), %rdx
callq 0x4150
leaq 0x20a53(%rip), %rsi     # 0x259e7
leaq -0x5b8(%rbp), %rdi
leaq -0x42(%rbp), %rdx
callq 0x4150
leaq 0x20264(%rip), %rsi     # 0x2520f
leaq -0x598(%rbp), %rdi
leaq -0x41(%rbp), %rdx
callq 0x4150
pushq $0x6e
popq %rsi
leaq -0x5f8(%rbp), %rdx
leaq -0x5d8(%rbp), %rcx
leaq -0x5b8(%rbp), %r8
leaq -0x598(%rbp), %r9
movq %r15, %rdi
callq 0x86a8
movq %rax, %r15
leaq 0x20252(%rip), %rsi     # 0x2523e
leaq -0x578(%rbp), %rdi
leaq -0x40(%rbp), %rdx
callq 0x4150
leaq 0x209e4(%rip), %rsi     # 0x259e7
leaq -0x558(%rbp), %rdi
leaq -0x3f(%rbp), %rdx
callq 0x4150
leaq 0x209cd(%rip), %rsi     # 0x259e7
leaq -0x538(%rbp), %rdi
leaq -0x3e(%rbp), %rdx
callq 0x4150
leaq 0x20222(%rip), %rsi     # 0x25253
leaq -0x518(%rbp), %rdi
leaq -0x3d(%rbp), %rdx
callq 0x4150
pushq $0x62
popq %rsi
leaq -0x578(%rbp), %rdx
leaq -0x558(%rbp), %rcx
leaq -0x538(%rbp), %r8
leaq -0x518(%rbp), %r9
movq %r15, %rdi
callq 0x86a8
movq %rax, %r15
leaq 0x20213(%rip), %rsi     # 0x25285
leaq -0x4f8(%rbp), %rdi
leaq -0x3c(%rbp), %rdx
callq 0x4150
leaq 0x2095e(%rip), %rsi     # 0x259e7
leaq -0x4d8(%rbp), %rdi
leaq -0x3b(%rbp), %rdx
callq 0x4150
leaq 0x20947(%rip), %rsi     # 0x259e7
leaq -0x4b8(%rbp), %rdi
leaq -0x3a(%rbp), %rdx
callq 0x4150
leaq 0x201df(%rip), %rsi     # 0x25296
leaq -0x498(%rbp), %rdi
leaq -0x39(%rbp), %rdx
callq 0x4150
pushq $0x66
popq %rsi
leaq -0x4f8(%rbp), %rdx
leaq -0x4d8(%rbp), %rcx
leaq -0x4b8(%rbp), %r8
leaq -0x498(%rbp), %r9
movq %r15, %rdi
callq 0x86a8
movq %rax, %r15
leaq 0x201d3(%rip), %rsi     # 0x252cb
leaq -0x478(%rbp), %rdi
leaq -0x38(%rbp), %rdx
callq 0x4150
leaq 0x208d8(%rip), %rsi     # 0x259e7
leaq -0x458(%rbp), %rdi
leaq -0x37(%rbp), %rdx
callq 0x4150
leaq 0x208c1(%rip), %rsi     # 0x259e7
leaq -0x438(%rbp), %rdi
leaq -0x36(%rbp), %rdx
callq 0x4150
leaq 0x20194(%rip), %rsi     # 0x252d1
leaq -0x418(%rbp), %rdi
leaq -0x35(%rbp), %rdx
callq 0x4150
pushq $0x38
popq %rsi
leaq -0x478(%rbp), %rdx
leaq -0x458(%rbp), %rcx
leaq -0x438(%rbp), %r8
leaq -0x418(%rbp), %r9
movq %r15, %rdi
callq 0x86a8
leaq -0x418(%rbp), %rdi
callq 0x46e8
leaq -0x438(%rbp), %rdi
callq 0x46e8
leaq -0x458(%rbp), %rdi
callq 0x46e8
leaq -0x478(%rbp), %rdi
callq 0x46e8
leaq -0x498(%rbp), %rdi
callq 0x46e8
leaq -0x4b8(%rbp), %rdi
callq 0x46e8
leaq -0x4d8(%rbp), %rdi
callq 0x46e8
leaq -0x4f8(%rbp), %rdi
callq 0x46e8
leaq -0x518(%rbp), %rdi
callq 0x46e8
leaq -0x538(%rbp), %rdi
callq 0x46e8
leaq -0x558(%rbp), %rdi
callq 0x46e8
leaq -0x578(%rbp), %rdi
callq 0x46e8
leaq -0x598(%rbp), %rdi
callq 0x46e8
leaq -0x5b8(%rbp), %rdi
callq 0x46e8
leaq -0x5d8(%rbp), %rdi
callq 0x46e8
leaq -0x5f8(%rbp), %rdi
callq 0x46e8
leaq -0x618(%rbp), %rdi
callq 0x46e8
leaq -0x638(%rbp), %rdi
callq 0x46e8
leaq -0x658(%rbp), %rdi
callq 0x46e8
leaq -0x678(%rbp), %rdi
callq 0x46e8
leaq -0x698(%rbp), %rdi
callq 0x46e8
leaq -0x6b8(%rbp), %rdi
callq 0x46e8
leaq -0x6d8(%rbp), %rdi
callq 0x46e8
leaq -0x6f8(%rbp), %rdi
callq 0x46e8
leaq -0x718(%rbp), %rdi
callq 0x46e8
leaq -0x738(%rbp), %rdi
callq 0x46e8
leaq -0x758(%rbp), %rdi
callq 0x46e8
leaq -0x778(%rbp), %rdi
callq 0x46e8
leaq -0x798(%rbp), %rdi
callq 0x46e8
leaq -0x7b8(%rbp), %rdi
callq 0x46e8
leaq -0x7d8(%rbp), %rdi
callq 0x46e8
leaq -0x7f8(%rbp), %rdi
callq 0x46e8
leaq -0x818(%rbp), %rdi
callq 0x46e8
leaq -0x838(%rbp), %rdi
callq 0x46e8
leaq -0x858(%rbp), %rdi
callq 0x46e8
leaq -0x878(%rbp), %rdi
callq 0x46e8
leaq -0x898(%rbp), %rdi
callq 0x46e8
leaq -0x8b8(%rbp), %rdi
callq 0x46e8
leaq -0x8d8(%rbp), %rdi
callq 0x46e8
leaq -0x8f8(%rbp), %rdi
callq 0x46e8
leaq -0x918(%rbp), %rdi
callq 0x46e8
leaq -0x938(%rbp), %rdi
callq 0x46e8
leaq -0x958(%rbp), %rdi
callq 0x46e8
leaq -0x978(%rbp), %rdi
callq 0x46e8
leaq -0x998(%rbp), %rdi
callq 0x46e8
leaq -0xa50(%rbp), %rdi
movl %r14d, %esi
movq %rbx, %rdx
callq 0x8f0e
movq -0x9b0(%rbp), %rax
subq -0x9b8(%rbp), %rax
cmpq $0x80, %rax
je 0x53d1
movq 0x31c01(%rip), %rax     # 0x36fc0
movq (%rax), %rsi
leaq -0xa50(%rbp), %rdi
pushq $0x1
popq %rdx
callq 0x93f6
leaq 0x1ff19(%rip), %rsi     # 0x252f1
leaq -0x3f8(%rbp), %rdi
leaq -0xbf8(%rbp), %rdx
callq 0x4150
leaq -0xa50(%rbp), %rdi
leaq -0x3f8(%rbp), %rsi
callq 0x8fae
movq %rax, %rdi
callq 0x84f4
movl %eax, -0x5c(%rbp)
leaq -0x3f8(%rbp), %rdi
callq 0x46e8
leaq 0x1fee0(%rip), %rsi     # 0x252fc
leaq -0x3d8(%rbp), %rdi
leaq -0xbf8(%rbp), %rdx
callq 0x4150
leaq -0xa50(%rbp), %rdi
leaq -0x3d8(%rbp), %rsi
callq 0x8fae
movq %rax, %rdi
callq 0x84f4
movq %rax, -0x70(%rbp)
leaq -0x3d8(%rbp), %rdi
callq 0x46e8
leaq 0x1fea4(%rip), %rsi     # 0x25305
leaq -0x3b8(%rbp), %rdi
leaq -0xbf8(%rbp), %rdx
callq 0x4150
leaq -0xa50(%rbp), %rdi
leaq -0x3b8(%rbp), %rsi
callq 0x8fae
movq %rax, %rdi
callq 0x84f4
movl %eax, %ebx
leaq -0x3b8(%rbp), %rdi
callq 0x46e8
leaq 0x1fe6c(%rip), %rsi     # 0x25310
leaq -0x398(%rbp), %rdi
leaq -0xbf8(%rbp), %rdx
callq 0x4150
leaq -0xa50(%rbp), %rdi
leaq -0x398(%rbp), %rsi
callq 0x8fae
movq %rax, %rdi
callq 0x84f4
movl %eax, %r14d
leaq -0x398(%rbp), %rdi
callq 0x46e8
movq -0x9b8(%rbp), %rsi
leaq -0x1b8(%rbp), %rdi
callq 0x4480
movq -0x9b8(%rbp), %rsi
addq $0x20, %rsi
leaq -0x198(%rbp), %rdi
callq 0x4480
movq -0x9b8(%rbp), %rsi
addq $0x40, %rsi
leaq -0x178(%rbp), %rdi
callq 0x4480
movq -0x9b8(%rbp), %rsi
addq $0x60, %rsi
leaq -0x208(%rbp), %rdi
callq 0x4480
leaq 0x1fddb(%rip), %rsi     # 0x2531b
leaq -0x378(%rbp), %rdi
leaq -0xbf8(%rbp), %rdx
callq 0x4150
leaq -0xa50(%rbp), %rdi
leaq -0x378(%rbp), %rsi
callq 0x8fae
movq %rax, %rdi
callq 0x8554
movss %xmm0, -0x30(%rbp)
leaq -0x378(%rbp), %rdi
callq 0x46e8
leaq 0x1fd9e(%rip), %rsi     # 0x25324
leaq -0x358(%rbp), %rdi
leaq -0xbf8(%rbp), %rdx
callq 0x4150
leaq -0xa50(%rbp), %rdi
leaq -0x358(%rbp), %rsi
callq 0x8fae
movq %rax, %rdi
callq 0x84f4
movl %eax, -0x34(%rbp)
leaq -0x358(%rbp), %rdi
callq 0x46e8
leaq 0x1fcbb(%rip), %rsi     # 0x25285
leaq -0x338(%rbp), %rdi
leaq -0xbf8(%rbp), %rdx
callq 0x4150
leaq -0xa50(%rbp), %rdi
leaq -0x338(%rbp), %rsi
callq 0x8fae
movb 0x4a(%rax), %r15b
leaq -0x338(%rbp), %rdi
callq 0x46e8
leaq 0x1fbf7(%rip), %rsi     # 0x251fe
leaq -0x318(%rbp), %rdi
leaq -0xbf8(%rbp), %rdx
callq 0x4150
leaq -0xa50(%rbp), %rdi
leaq -0x318(%rbp), %rsi
callq 0x8fae
movb 0x4a(%rax), %al
movb %al, -0x29(%rbp)
leaq -0x318(%rbp), %rdi
callq 0x46e8
leaq 0x1fbf8(%rip), %rsi     # 0x2523e
leaq -0x2f8(%rbp), %rdi
leaq -0xbf8(%rbp), %rdx
callq 0x4150
leaq -0xa50(%rbp), %rdi
leaq -0x2f8(%rbp), %rsi
callq 0x8fae
movb 0x4a(%rax), %r12b
leaq -0x2f8(%rbp), %rdi
callq 0x46e8
leaq 0x1fc48(%rip), %rsi     # 0x252cb
leaq -0x2d8(%rbp), %rdi
leaq -0xbf8(%rbp), %rdx
callq 0x4150
leaq -0xa50(%rbp), %rdi
leaq -0x2d8(%rbp), %rsi
callq 0x8fae
movb 0x4a(%rax), %al
movb %al, -0x68(%rbp)
leaq -0x2d8(%rbp), %rdi
callq 0x46e8
movq 0x31926(%rip), %rdi     # 0x36fe8
movq (%rdi), %rax
movq -0x18(%rax), %rax
orl $0x1, 0x18(%rdi,%rax)
leaq 0x1fc5b(%rip), %rsi     # 0x25330
callq 0x4350
leaq -0x1b8(%rbp), %rsi
movq %rax, %rdi
callq 0x4310
movq %rax, %rdi
callq 0x4190
movq 0x318f0(%rip), %rdi     # 0x36fe8
leaq 0x1fc48(%rip), %rsi     # 0x25347
callq 0x4350
leaq -0x198(%rbp), %rsi
movq %rax, %rdi
callq 0x4310
movq %rax, %rdi
callq 0x4190
movq 0x318c6(%rip), %rdi     # 0x36fe8
leaq 0x1fc40(%rip), %rsi     # 0x25369
callq 0x4350
leaq -0x178(%rbp), %rsi
movq %rax, %rdi
callq 0x4310
movq %rax, %rdi
callq 0x4190
movq 0x3189c(%rip), %rdi     # 0x36fe8
leaq 0x1fc29(%rip), %rsi     # 0x2537c
callq 0x4350
leaq -0x208(%rbp), %rsi
movq %rax, %rdi
callq 0x4310
movq %rax, %rdi
callq 0x4190
movq 0x31872(%rip), %rdi     # 0x36fe8
leaq 0x1fc1d(%rip), %rsi     # 0x2539a
callq 0x4350
movl -0x5c(%rbp), %esi
movq %rax, %rdi
callq 0x4260
movq %rax, %rdi
callq 0x4190
movq 0x3184c(%rip), %rdi     # 0x36fe8
leaq 0x1fc1e(%rip), %rsi     # 0x253c1
callq 0x4350
movl -0x70(%rbp), %esi
movq %rax, %rdi
movq %rsi, -0x158(%rbp)
callq 0x4260
movq %rax, %rdi
callq 0x4190
movq 0x3181f(%rip), %rdi     # 0x36fe8
leaq 0x1fc16(%rip), %rsi     # 0x253e6
callq 0x4350
movl %ebx, %esi
movq %rax, %rdi
movq %rsi, -0x58(%rbp)
callq 0x4260
movq %rax, %rdi
callq 0x4190
movq 0x317f6(%rip), %rdi     # 0x36fe8
leaq 0x1fc21(%rip), %rsi     # 0x2541a
callq 0x4350
movl %r14d, %esi
movq %rax, %rdi
movq %rsi, -0xe0(%rbp)
callq 0x4260
movq %rax, %rdi
callq 0x4190
movq 0x317c9(%rip), %rdi     # 0x36fe8
leaq 0x1fc14(%rip), %rsi     # 0x2543a
callq 0x4350
cvtss2sd -0x30(%rbp), %xmm0
movq %rax, %rdi
movsd %xmm0, -0xe8(%rbp)
callq 0x4560
movq %rax, %rdi
callq 0x4190
movq 0x31799(%rip), %rbx     # 0x36fe8
leaq 0x1fbfb(%rip), %rsi     # 0x25451
movq %rbx, %rdi
callq 0x4350
movsd 0x1f7a2(%rip), %xmm0    # 0x25008
movq %rax, %rdi
callq 0x4560
movq %rax, %rdi
callq 0x4190
movl -0x34(%rbp), %eax
movl %eax, %ecx
movq %rcx, -0xd8(%rbp)
testl %eax, %eax
je 0x58b4
movq 0x3175b(%rip), %rdi     # 0x36fe8
leaq 0x1fbd4(%rip), %rsi     # 0x25468
callq 0x4350
movq %rax, %rdi
movq -0xd8(%rbp), %rsi
callq 0x4260
movq %rax, %rbx
leaq 0x1f946(%rip), %rsi     # 0x251f8
jmp 0x58bb
leaq 0x1fbdf(%rip), %rsi     # 0x2549a
movq %rbx, %rdi
callq 0x4350
movq %rax, %rdi
callq 0x4190
movq 0x31716(%rip), %rdi     # 0x36fe8
leaq 0x1fbe3(%rip), %rsi     # 0x254bc
callq 0x4350
movzbl -0x29(%rbp), %esi
movq %rax, %rdi
callq 0x45a0
movq %rax, %rdi
callq 0x4190
movq 0x316ef(%rip), %rdi     # 0x36fe8
leaq 0x1fbeb(%rip), %rsi     # 0x254eb
callq 0x4350
movzbl %r12b, %esi
movq %rax, %rdi
movl %esi, -0x78(%rbp)
callq 0x45a0
movq %rax, %rdi
callq 0x4190
movq 0x316c5(%rip), %rdi     # 0x36fe8
leaq 0x1fc01(%rip), %rsi     # 0x2552b
callq 0x4350
movzbl %r15b, %esi
movq %rax, %rdi
movl %esi, -0x30(%rbp)
callq 0x45a0
movq %rax, %rdi
callq 0x4190
movq 0x3169b(%rip), %rdi     # 0x36fe8
leaq 0x1fbfa(%rip), %rsi     # 0x2554e
callq 0x4350
movzbl -0x68(%rbp), %esi
movq %rax, %rdi
movl %esi, -0x74(%rbp)
callq 0x45a0
movq %rax, %rdi
callq 0x4190
leaq -0xc50(%rbp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq -0xc20(%rbp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq -0x1e0(%rbp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq 0x319cd(%rip), %rsi     # 0x37398
leaq -0xd50(%rbp), %rdi
callq 0x6770
leaq -0x148(%rbp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq -0x2b0(%rbp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq -0x280(%rbp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq -0xa78(%rbp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
movq 0x3159a(%rip), %rdi     # 0x36fe8
leaq 0x1fb16(%rip), %rsi     # 0x2556b
callq 0x4350
leaq -0x198(%rbp), %rsi
movq %rax, %rdi
callq 0x4310
movq %rax, %rdi
callq 0x4190
leaq -0x150(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x214d8
testl %eax, %eax
jns 0x5aa8
movq 0x31559(%rip), %rdi     # 0x36fe8
leaq 0x1faf2(%rip), %rsi     # 0x25588
callq 0x4350
movq %rax, %rdi
callq 0x4190
jmp 0x5cfc
movq 0x31539(%rip), %rdi     # 0x36fe8
leaq 0x1fafb(%rip), %rsi     # 0x255b1
callq 0x4350
movq %rax, %rbx
leaq -0x150(%rbp), %rdi
callq 0x21b66
movq %rbx, %rdi
movl %eax, %esi
callq 0x4600
movq %rax, %rdi
callq 0x4190
movq 0x31505(%rip), %rdi     # 0x36fe8
leaq 0x1fae0(%rip), %rsi     # 0x255ca
callq 0x4350
movq -0x128(%rbp), %rsi
movq %rax, %rdi
callq 0x4260
movq %rax, %rdi
callq 0x4190
leaq -0x250(%rbp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq -0x150(%rbp), %rdi
leaq -0x258(%rbp), %rsi
callq 0x21bb8
movq -0x240(%rbp), %r15
leaq -0xb0(%rbp), %r14
leaq -0xbf8(%rbp), %rbx
leaq -0x108(%rbp), %r13
leaq -0x250(%rbp), %rax
cmpq %rax, %r15
je 0x5c78
andq $0x0, -0xa0(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0xb0(%rbp)
leaq 0x20(%r15), %r12
cmpb $0x0, -0x68(%rbp)
je 0x5bde
andl $0x0, -0xbf8(%rbp)
movq %r14, %rdi
movq %rbx, %rsi
callq 0x72e8
andl $0x0, -0xbf8(%rbp)
xorl %eax, %eax
movl %eax, %eax
cmpq %rax, 0x28(%r15)
jbe 0x5c36
movq (%r12), %rcx
movb (%rcx,%rax), %dl
pushq $0x1
popq %rcx
testb %dl, %dl
jns 0x5bc3
pushq $0x4
popq %rcx
cmpb $-0x11, %dl
ja 0x5bc3
cmpb $-0x20, %dl
pushq $0x2
popq %rcx
sbbl $-0x1, %ecx
addl %ecx, %eax
movl %eax, -0xbf8(%rbp)
movq %r14, %rdi
movq %rbx, %rsi
callq 0x72c2
movl -0xbf8(%rbp), %eax
jmp 0x5b98
movq %rbx, %rdi
movq %r12, %rsi
callq 0x4480
movq -0xb0(%rbp), %rax
cmpq %rax, -0xa8(%rbp)
je 0x5c00
movq %rax, -0xa8(%rbp)
xorl %eax, %eax
movl %eax, -0x108(%rbp)
movl %eax, %eax
movq -0xbf0(%rbp), %rcx
incq %rcx
cmpq %rax, %rcx
jbe 0x5c2e
movq %r14, %rdi
movq %r13, %rsi
callq 0x72c2
movl -0x108(%rbp), %eax
incl %eax
jmp 0x5c02
movq %rbx, %rdi
callq 0x46e8
movq -0xa8(%rbp), %rax
subq -0xb0(%rbp), %rax
sarq $0x2, %rax
decq %rax
cmpq -0x58(%rbp), %rax
jae 0x5c60
leaq -0xa80(%rbp), %rdi
movq %r12, %rsi
callq 0x7522
movq %r14, %rdi
callq 0x71aa
movq %r15, %rdi
callq 0x43c0
movq %rax, %r15
jmp 0x5b51
movq 0x31369(%rip), %rdi     # 0x36fe8
leaq 0x1f957(%rip), %rsi     # 0x255dd
callq 0x4350
leaq -0x1b8(%rbp), %rsi
movq %rax, %rdi
callq 0x4310
movq %rax, %rdi
callq 0x4190
leaq -0x228(%rbp), %rdi
leaq -0x1b8(%rbp), %rsi
callq 0x4480
leaq -0x228(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
leaq -0x60(%rbp), %rdx
movl -0x74(%rbp), %ecx
callq 0x1cffa
movl %eax, %ebx
leaq -0x228(%rbp), %rdi
callq 0x46e8
testl %ebx, %ebx
jns 0x5d04
movq 0x31300(%rip), %rdi     # 0x36fe8
leaq 0x1f901(%rip), %rsi     # 0x255f0
callq 0x4350
movq %rax, %rdi
callq 0x4190
pushq $0x1
popq %rdi
callq 0x43d0
movq 0x312dd(%rip), %rdi     # 0x36fe8
leaq 0x1fcd4(%rip), %rsi     # 0x259e6
callq 0x4350
leaq 0x1f8f9(%rip), %rsi     # 0x25617
movq %rax, %rdi
callq 0x4350
movq -0x1c0(%rbp), %rsi
movq %rax, %rdi
callq 0x4260
movq %rax, %rdi
callq 0x4190
movq 0x312a4(%rip), %rdi     # 0x36fe8
leaq 0x1fc9b(%rip), %rsi     # 0x259e6
callq 0x4350
leaq 0x1f8d0(%rip), %rsi     # 0x25627
movq %rax, %rdi
callq 0x4350
movl -0x60(%rbp), %esi
movq %rax, %rdi
callq 0x4600
movq %rax, %rdi
callq 0x4190
movq 0x3126f(%rip), %rdi     # 0x36fe8
leaq 0x1f8bd(%rip), %rsi     # 0x2563d
callq 0x4350
leaq -0x178(%rbp), %rsi
movq %rax, %rdi
callq 0x4310
movq %rax, %rdi
callq 0x4190
leaq -0xd50(%rbp), %rdi
leaq -0x178(%rbp), %rsi
callq 0x1335e
leaq -0xd50(%rbp), %rdi
leaq -0x150(%rbp), %rsi
callq 0x13016
movq 0x3121f(%rip), %rcx     # 0x36fe8
movq (%rcx), %rax
movq -0x18(%rax), %rax
movq $0xf, 0x8(%rcx,%rax)
movq -0x70(%rbp), %rax
shrl %eax
movq %rax, -0x70(%rbp)
movq $0x0, -0x58(%rbp)
pushq $0x1
popq %r15
leaq -0x150(%rbp), %rbx
leaq -0xd50(%rbp), %r14
leaq -0xd0(%rbp), %r13
movq 0x311dd(%rip), %rdi     # 0x36fe8
leaq 0x1f839(%rip), %rsi     # 0x2564b
callq 0x4350
movq %rax, %rdi
movl %r15d, %esi
callq 0x4600
movq %rax, %rdi
callq 0x4190
movq %rbx, %rdi
movq %r14, %rsi
callq 0x189ee
leaq -0x1e8(%rbp), %rdi
movq %r14, %rsi
leaq -0x2b8(%rbp), %rdx
leaq -0x288(%rbp), %rcx
movl -0x30(%rbp), %r8d
callq 0x20566
movsd %xmm0, -0x68(%rbp)
leaq -0x2b8(%rbp), %rdi
movq %rbx, %rsi
movsd -0xe8(%rbp), %xmm0
movsd 0x1f193(%rip), %xmm1    # 0x25008
callq 0x2098c
cmpb $0x0, -0x29(%rbp)
jne 0x5e88
movq %rbx, %rdi
callq 0x211ae
leaq -0x2b8(%rbp), %rdi
callq 0x7a80
movq 0x3114d(%rip), %rdi     # 0x36fe8
leaq 0x1f7b4(%rip), %rsi     # 0x25656
callq 0x4350
movq %rax, %rdi
movsd -0x68(%rbp), %xmm0
callq 0x4560
movq %rax, %rdi
callq 0x4190
movq 0x31125(%rip), %rdi     # 0x36fe8
leaq 0x1f6e7(%rip), %rsi     # 0x255b1
callq 0x4350
movq %rax, %r12
movq %rbx, %rdi
callq 0x21b66
movq %r12, %rdi
movl %eax, %esi
callq 0x4600
movq %rax, %rdi
callq 0x4190
movq 0x310f5(%rip), %rdi     # 0x36fe8
leaq 0x1f6d0(%rip), %rsi     # 0x255ca
callq 0x4350
movq -0x128(%rbp), %rsi
movq %rax, %rdi
callq 0x4260
movq %rax, %rdi
callq 0x4190
cmpl $0x0, -0x34(%rbp)
sete %al
cmpl $0x1, %r15d
setne %cl
orb %al, %cl
jne 0x5f41
movq -0x128(%rbp), %rcx
movq %rcx, %rax
xorl %edx, %edx
divq -0xd8(%rbp)
subl %edx, %ecx
movq %rcx, -0x58(%rbp)
movq 0x310a0(%rip), %rdi     # 0x36fe8
leaq 0x1f71c(%rip), %rsi     # 0x2566b
callq 0x4350
movq %rax, %rdi
callq 0x4190
andl $0x0, -0xa8(%rbp)
andq $0x0, -0xa0(%rbp)
leaq -0xa8(%rbp), %rax
movq %rax, -0x98(%rbp)
movq %rax, -0x90(%rbp)
andq $0x0, -0x88(%rbp)
movl -0x5c(%rbp), %edi
leaq -0x288(%rbp), %rsi
leaq -0xb0(%rbp), %rdx
leaq -0xa80(%rbp), %rcx
callq 0x222ae
movq 0x3103c(%rip), %rdi     # 0x36fe8
leaq 0x1f6d2(%rip), %rsi     # 0x25685
callq 0x4350
movq %rax, %rdi
callq 0x4190
movq %rbx, %rdi
movq %r14, %rsi
callq 0x189ee
movl -0x78(%rbp), %eax
movl %eax, (%rsp)
leaq -0x1e8(%rbp), %rdi
movq %r14, %rsi
leaq -0x288(%rbp), %rdx
movq %rbx, %rcx
leaq -0xb0(%rbp), %r8
movl -0x30(%rbp), %r9d
callq 0x22534
xorps %xmm0, %xmm0
movaps %xmm0, -0x120(%rbp)
andq $0x0, -0x110(%rbp)
leaq -0xb0(%rbp), %rdi
leaq -0x120(%rbp), %rsi
pushq $0x1
popq %rdx
callq 0x1d588
xorps %xmm0, %xmm0
movaps %xmm0, -0xd0(%rbp)
andq $0x0, -0xc0(%rbp)
movq -0x120(%rbp), %r12
cmpq -0x118(%rbp), %r12
je 0x607e
movq %r13, %rdi
movq %r12, %rsi
callq 0x68f8
movq -0x128(%rbp), %rax
movq -0xc8(%rbp), %rcx
subq -0xd0(%rbp), %rcx
sarq $0x5, %rcx
subq %rcx, %rax
xorl %edx, %edx
divq -0x158(%rbp)
addq $0x28, %r12
testq %rdx, %rdx
jne 0x6036
cmpq -0x70(%rbp), %rcx
jb 0x6036
movq %r13, %rdi
movq %rbx, %rsi
callq 0x2167c
movq -0xd0(%rbp), %r12
cmpq -0xc8(%rbp), %r12
je 0x60aa
movq %r14, %rdi
movq %r12, %rsi
callq 0x12eda
addq $0x20, %r12
jmp 0x6090
leaq -0x1e8(%rbp), %rdi
movq %r14, %rsi
movq %rbx, %rdx
movl -0x30(%rbp), %ecx
movsd -0xe8(%rbp), %xmm0
pushq $0x1
popq %r8
callq 0x20876
cmpb $0x0, -0x29(%rbp)
jne 0x60d9
movq %rbx, %rdi
callq 0x211ae
movq %r14, %rdi
movq %rbx, %rsi
callq 0x13016
movq -0x128(%rbp), %r12
cmpl $0x0, -0x34(%rbp)
je 0x61e9
movl -0x58(%rbp), %eax
cmpq %rax, %r12
seta %al
cmpq -0xe0(%rbp), %r12
setbe %cl
orb %al, %cl
jne 0x61e9
leaq -0xbf8(%rbp), %rdi
callq 0x4470
leaq -0xbf8(%rbp), %rdi
leaq 0x1f570(%rip), %rsi     # 0x2569a
callq 0x4350
movq -0x128(%rbp), %rsi
movq %rax, %rdi
callq 0x4260
movq %rax, %rdi
leaq 0x1f55f(%rip), %rsi     # 0x256a7
callq 0x4350
movq 0x30e94(%rip), %rdi     # 0x36fe8
leaq 0x1f550(%rip), %rsi     # 0x256ab
callq 0x4350
movq %rax, %r12
leaq -0x108(%rbp), %rdi
leaq -0xbf0(%rbp), %rsi
callq 0x4540
movq %r12, %rdi
leaq -0x108(%rbp), %rsi
callq 0x4310
movq %rax, %rdi
callq 0x4190
leaq -0x108(%rbp), %r12
movq %r12, %rdi
callq 0x46e8
movq %r12, %rdi
leaq -0xbf0(%rbp), %rsi
callq 0x4540
movq %rbx, %rdi
leaq -0x108(%rbp), %rsi
xorl %edx, %edx
pushq $0x6
popq %rcx
callq 0x21264
leaq -0x108(%rbp), %rdi
callq 0x46e8
movq -0x58(%rbp), %rax
subl -0x34(%rbp), %eax
movq %rax, -0x58(%rbp)
leaq -0xbf8(%rbp), %rdi
callq 0x40d0
movq -0x128(%rbp), %r12
incl %r15d
movq %r13, %rdi
callq 0x6934
leaq -0x120(%rbp), %rdi
callq 0x6960
leaq -0xb0(%rbp), %rdi
callq 0x7752
cmpq -0xe0(%rbp), %r12
ja 0x5e04
leaq -0x150(%rbp), %rdi
leaq -0x208(%rbp), %rsi
pushq $0x6
popq %rcx
xorl %edx, %edx
callq 0x21264
xorl %edi, %edi
callq 0x43d0
jmp 0x629f
jmp 0x623e
jmp 0x6251
movq %rax, %rbx
leaq -0x108(%rbp), %rdi
callq 0x46e8
jmp 0x6254
jmp 0x6251
movq %rax, %rbx
leaq -0xbf8(%rbp), %rdi
callq 0x40d0
jmp 0x626b
jmp 0x6268
jmp 0x6268
jmp 0x6268
movq %rax, %rbx
leaq -0xd0(%rbp), %rdi
callq 0x6934
jmp 0x627c
movq %rax, %rbx
leaq -0x120(%rbp), %rdi
callq 0x6960
jmp 0x628d
movq %rax, %rbx
leaq -0xb0(%rbp), %rdi
callq 0x7752
jmp 0x62d7
jmp 0x629f
jmp 0x629f
movq %rax, %rbx
jmp 0x62d7
movq %rax, %rbx
leaq -0x228(%rbp), %rdi
callq 0x46e8
jmp 0x62d7
jmp 0x62c8
movq %rax, %rbx
leaq -0xbf8(%rbp), %rdi
callq 0x46e8
jmp 0x62cb
movq %rax, %rbx
leaq -0xb0(%rbp), %rdi
callq 0x71aa
leaq -0x258(%rbp), %rdi
callq 0x7752
jmp 0x62ea
jmp 0x62e7
movq %rax, %rbx
leaq -0xa80(%rbp), %rdi
callq 0x77ca
leaq -0x288(%rbp), %rdi
callq 0x7752
leaq -0x2b8(%rbp), %rdi
callq 0x7842
leaq -0x150(%rbp), %rdi
callq 0x7842
leaq -0xd50(%rbp), %rdi
callq 0x124f4
jmp 0x632b
movq %rax, %rbx
leaq -0x1e8(%rbp), %rdi
callq 0x7752
leaq -0xc28(%rbp), %rdi
callq 0x7752
leaq -0xc58(%rbp), %rdi
callq 0x7752
jmp 0x63ad
jmp 0x63aa
movq %rax, %rbx
leaq -0x2d8(%rbp), %rdi
jmp 0x63a3
jmp 0x63aa
movq %rax, %rbx
leaq -0x2f8(%rbp), %rdi
jmp 0x63a3
jmp 0x63aa
movq %rax, %rbx
leaq -0x318(%rbp), %rdi
jmp 0x63a3
jmp 0x63aa
movq %rax, %rbx
leaq -0x338(%rbp), %rdi
jmp 0x63a3
jmp 0x63aa
movq %rax, %rbx
leaq -0x358(%rbp), %rdi
jmp 0x63a3
jmp 0x63aa
movq %rax, %rbx
leaq -0x378(%rbp), %rdi
callq 0x46e8
jmp 0x63ad
movq %rax, %rbx
leaq -0x208(%rbp), %rdi
callq 0x46e8
jmp 0x63be
movq %rax, %rbx
leaq -0x178(%rbp), %rdi
callq 0x46e8
jmp 0x63cf
movq %rax, %rbx
leaq -0x198(%rbp), %rdi
callq 0x46e8
jmp 0x63e0
movq %rax, %rbx
leaq -0x1b8(%rbp), %rdi
jmp 0x6752
jmp 0x6759
movq %rax, %rbx
leaq -0x398(%rbp), %rdi
jmp 0x6752
jmp 0x6759
movq %rax, %rbx
leaq -0x3b8(%rbp), %rdi
jmp 0x6752
jmp 0x6759
movq %rax, %rbx
leaq -0x3d8(%rbp), %rdi
jmp 0x6752
jmp 0x6759
movq %rax, %rbx
leaq -0x3f8(%rbp), %rdi
jmp 0x6752
jmp 0x6759
jmp 0x6759
movq %rax, %rbx
leaq -0x418(%rbp), %rdi
callq 0x46e8
jmp 0x645a
movq %rax, %rbx
leaq -0x438(%rbp), %rdi
callq 0x46e8
jmp 0x646b
movq %rax, %rbx
leaq -0x458(%rbp), %rdi
callq 0x46e8
jmp 0x647c
movq %rax, %rbx
leaq -0x478(%rbp), %rdi
callq 0x46e8
jmp 0x648f
jmp 0x648c
movq %rax, %rbx
leaq -0x498(%rbp), %rdi
callq 0x46e8
jmp 0x64a0
movq %rax, %rbx
leaq -0x4b8(%rbp), %rdi
callq 0x46e8
jmp 0x64b1
movq %rax, %rbx
leaq -0x4d8(%rbp), %rdi
callq 0x46e8
jmp 0x64c2
movq %rax, %rbx
leaq -0x4f8(%rbp), %rdi
callq 0x46e8
jmp 0x64d5
jmp 0x64d2
movq %rax, %rbx
leaq -0x518(%rbp), %rdi
callq 0x46e8
jmp 0x64e6
movq %rax, %rbx
leaq -0x538(%rbp), %rdi
callq 0x46e8
jmp 0x64f7
movq %rax, %rbx
leaq -0x558(%rbp), %rdi
callq 0x46e8
jmp 0x6508
movq %rax, %rbx
leaq -0x578(%rbp), %rdi
callq 0x46e8
jmp 0x651b
jmp 0x6518
movq %rax, %rbx
leaq -0x598(%rbp), %rdi
callq 0x46e8
jmp 0x652c
movq %rax, %rbx
leaq -0x5b8(%rbp), %rdi
callq 0x46e8
jmp 0x653d
movq %rax, %rbx
leaq -0x5d8(%rbp), %rdi
callq 0x46e8
jmp 0x654e
movq %rax, %rbx
leaq -0x5f8(%rbp), %rdi
callq 0x46e8
jmp 0x6561
jmp 0x655e
movq %rax, %rbx
leaq -0x618(%rbp), %rdi
callq 0x46e8
jmp 0x6572
movq %rax, %rbx
leaq -0x638(%rbp), %rdi
callq 0x46e8
jmp 0x6583
movq %rax, %rbx
leaq -0x658(%rbp), %rdi
callq 0x46e8
jmp 0x6594
movq %rax, %rbx
leaq -0x678(%rbp), %rdi
callq 0x46e8
jmp 0x65a7
jmp 0x65a4
movq %rax, %rbx
leaq -0x698(%rbp), %rdi
callq 0x46e8
jmp 0x65b8
movq %rax, %rbx
leaq -0x6b8(%rbp), %rdi
callq 0x46e8
jmp 0x65c9
movq %rax, %rbx
leaq -0x6d8(%rbp), %rdi
callq 0x46e8
jmp 0x65da
movq %rax, %rbx
leaq -0x6f8(%rbp), %rdi
callq 0x46e8
jmp 0x65ed
jmp 0x65ea
movq %rax, %rbx
leaq -0x718(%rbp), %rdi
callq 0x46e8
jmp 0x65fe
movq %rax, %rbx
leaq -0x738(%rbp), %rdi
callq 0x46e8
jmp 0x660f
movq %rax, %rbx
leaq -0x758(%rbp), %rdi
callq 0x46e8
jmp 0x6620
movq %rax, %rbx
leaq -0x778(%rbp), %rdi
callq 0x46e8
jmp 0x6633
jmp 0x6630
movq %rax, %rbx
leaq -0x798(%rbp), %rdi
callq 0x46e8
jmp 0x6644
movq %rax, %rbx
leaq -0x7b8(%rbp), %rdi
callq 0x46e8
jmp 0x6655
movq %rax, %rbx
leaq -0x7d8(%rbp), %rdi
callq 0x46e8
jmp 0x6666
movq %rax, %rbx
leaq -0x7f8(%rbp), %rdi
callq 0x46e8
jmp 0x6679
jmp 0x6676
movq %rax, %rbx
leaq -0x818(%rbp), %rdi
callq 0x46e8
jmp 0x668a
movq %rax, %rbx
leaq -0x838(%rbp), %rdi
callq 0x46e8
jmp 0x669b
movq %rax, %rbx
leaq -0x858(%rbp), %rdi
callq 0x46e8
jmp 0x66ac
movq %rax, %rbx
leaq -0x878(%rbp), %rdi
callq 0x46e8
jmp 0x66bf
jmp 0x66bc
movq %rax, %rbx
leaq -0x898(%rbp), %rdi
callq 0x46e8
jmp 0x66d0
movq %rax, %rbx
leaq -0x8b8(%rbp), %rdi
callq 0x46e8
jmp 0x66e1
movq %rax, %rbx
leaq -0x8d8(%rbp), %rdi
callq 0x46e8
jmp 0x66f2
movq %rax, %rbx
leaq -0x8f8(%rbp), %rdi
callq 0x46e8
jmp 0x6705
jmp 0x6702
movq %rax, %rbx
leaq -0x918(%rbp), %rdi
callq 0x46e8
jmp 0x6716
movq %rax, %rbx
leaq -0x938(%rbp), %rdi
callq 0x46e8
jmp 0x6727
movq %rax, %rbx
leaq -0x958(%rbp), %rdi
callq 0x46e8
jmp 0x6738
movq %rax, %rbx
leaq -0x978(%rbp), %rdi
callq 0x46e8
jmp 0x674b
jmp 0x6748
movq %rax, %rbx
leaq -0x998(%rbp), %rdi
callq 0x46e8
jmp 0x675c
movq %rax, %rbx
leaq -0xa50(%rbp), %rdi
callq 0x698c
movq %rbx, %rdi
callq 0x4620