// File: /workspace/github_cpp_makefile_star2_O3/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 $0xcf8, %rsp            # imm = 0xCF8
movq %rsi, %rbx
movl %edi, %r14d
leaq -0x988(%rbp), %rdi
callq 0x973e
leaq -0x890(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x22ecb(%rip), %rsi     # 0x28020
leaq 0x22f15(%rip), %rdx     # 0x28071
leaq -0x8a0(%rbp), %rdi
callq 0x8a2a
leaq -0x988(%rbp), %rdi
leaq -0x8a0(%rbp), %rsi
callq 0x97a4
movq %rax, %r15
leaq -0x870(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0x22eea(%rip), %rsi     # 0x2807a
leaq 0x22ee7(%rip), %rdx     # 0x2807e
leaq -0x880(%rbp), %rdi
callq 0x8a2a
leaq -0x1a0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x238b2(%rip), %rdx     # 0x28a67
leaq -0x1b0(%rbp), %rdi
movq %rdx, %rsi
callq 0x8a2a
leaq -0x6f0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x23891(%rip), %rdx     # 0x28a67
leaq -0x700(%rbp), %rdi
movq %rdx, %rsi
callq 0x8a2a
leaq -0x6d0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22e7b(%rip), %rsi     # 0x28072
leaq 0x22e80(%rip), %rdx     # 0x2807e
leaq -0x6e0(%rbp), %rdi
callq 0x8a2a
leaq -0x880(%rbp), %rdx
leaq -0x1b0(%rbp), %rcx
leaq -0x700(%rbp), %r8
leaq -0x6e0(%rbp), %r9
movq %r15, %rdi
movl $0x68, %esi
callq 0x97bc
movq %rax, %r15
leaq -0x180(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22e37(%rip), %rsi     # 0x2807f
leaq 0x22e3e(%rip), %rdx     # 0x2808d
leaq -0x190(%rbp), %rdi
callq 0x8a2a
leaq -0x160(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22e21(%rip), %rsi     # 0x2808e
leaq 0x22e1d(%rip), %rdx     # 0x28091
leaq -0x170(%rbp), %rdi
callq 0x8a2a
leaq -0x6b0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22e00(%rip), %rsi     # 0x28092
leaq 0x22dfd(%rip), %rdx     # 0x28096
leaq -0x6c0(%rbp), %rdi
callq 0x8a2a
leaq -0x690(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22de0(%rip), %rsi     # 0x28097
leaq 0x22e14(%rip), %rdx     # 0x280d2
leaq -0x6a0(%rbp), %rdi
callq 0x8a2a
leaq -0x190(%rbp), %rdx
leaq -0x170(%rbp), %rcx
leaq -0x6c0(%rbp), %r8
leaq -0x6a0(%rbp), %r9
movq %r15, %rdi
movl $0x63, %esi
callq 0x97bc
movq %rax, %r15
leaq -0x670(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22dcb(%rip), %rsi     # 0x280d3
leaq 0x22dd0(%rip), %rdx     # 0x280df
leaq -0x680(%rbp), %rdi
callq 0x8a2a
leaq -0x650(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22d61(%rip), %rsi     # 0x2808e
leaq 0x22d5d(%rip), %rdx     # 0x28091
leaq -0x660(%rbp), %rdi
callq 0x8a2a
leaq -0x630(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22d8e(%rip), %rsi     # 0x280e0
leaq 0x22d8a(%rip), %rdx     # 0x280e3
leaq -0x640(%rbp), %rdi
callq 0x8a2a
leaq -0x610(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22d6d(%rip), %rsi     # 0x280e4
leaq 0x22d86(%rip), %rdx     # 0x28104
leaq -0x620(%rbp), %rdi
callq 0x8a2a
leaq -0x680(%rbp), %rdx
leaq -0x660(%rbp), %rcx
leaq -0x640(%rbp), %r8
leaq -0x620(%rbp), %r9
movq %r15, %rdi
movl $0x72, %esi
callq 0x97bc
movq %rax, %r15
leaq -0x5f0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22d3d(%rip), %rsi     # 0x28105
leaq 0x22d44(%rip), %rdx     # 0x28113
leaq -0x600(%rbp), %rdi
callq 0x8a2a
leaq -0x5d0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22ca1(%rip), %rsi     # 0x2808e
leaq 0x22c9d(%rip), %rdx     # 0x28091
leaq -0x5e0(%rbp), %rdi
callq 0x8a2a
leaq -0x5b0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22d31(%rip), %rsi     # 0x28143
leaq 0x22d2b(%rip), %rdx     # 0x28144
leaq -0x5c0(%rbp), %rdi
callq 0x8a2a
leaq -0x590(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22cdd(%rip), %rsi     # 0x28114
leaq 0x22d06(%rip), %rdx     # 0x28144
leaq -0x5a0(%rbp), %rdi
callq 0x8a2a
leaq -0x600(%rbp), %rdx
leaq -0x5e0(%rbp), %rcx
leaq -0x5c0(%rbp), %r8
leaq -0x5a0(%rbp), %r9
movq %r15, %rdi
movl $0x6d, %esi
callq 0x97bc
movq %rax, %r15
leaq -0x570(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22cbd(%rip), %rsi     # 0x28145
leaq 0x22cc4(%rip), %rdx     # 0x28153
leaq -0x580(%rbp), %rdi
callq 0x8a2a
leaq -0x550(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22ca7(%rip), %rsi     # 0x28154
leaq 0x22ca8(%rip), %rdx     # 0x2815c
leaq -0x560(%rbp), %rdi
callq 0x8a2a
leaq -0x530(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x23595(%rip), %rdx     # 0x28a67
leaq -0x540(%rbp), %rdi
movq %rdx, %rsi
callq 0x8a2a
leaq -0x510(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22c6a(%rip), %rsi     # 0x2815d
leaq 0x22c8e(%rip), %rdx     # 0x28188
leaq -0x520(%rbp), %rdi
callq 0x8a2a
leaq -0x580(%rbp), %rdx
leaq -0x560(%rbp), %rcx
leaq -0x540(%rbp), %r8
leaq -0x520(%rbp), %r9
movq %r15, %rdi
movl $0x76, %esi
callq 0x97bc
movq %rax, %r15
leaq -0x4f0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22c45(%rip), %rsi     # 0x28189
leaq 0x22c4c(%rip), %rdx     # 0x28197
leaq -0x500(%rbp), %rdi
callq 0x8a2a
leaq -0x4d0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22b25(%rip), %rsi     # 0x2808e
leaq 0x22b21(%rip), %rdx     # 0x28091
leaq -0x4e0(%rbp), %rdi
callq 0x8a2a
leaq -0x4b0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22c0a(%rip), %rsi     # 0x28198
leaq 0x22c06(%rip), %rdx     # 0x2819b
leaq -0x4c0(%rbp), %rdi
callq 0x8a2a
leaq -0x490(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22be9(%rip), %rsi     # 0x2819c
leaq 0x22bff(%rip), %rdx     # 0x281b9
leaq -0x4a0(%rbp), %rdi
callq 0x8a2a
leaq -0x500(%rbp), %rdx
leaq -0x4e0(%rbp), %rcx
leaq -0x4c0(%rbp), %r8
leaq -0x4a0(%rbp), %r9
movq %r15, %rdi
movl $0x64, %esi
callq 0x97bc
movq %rax, %r15
leaq -0x470(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22bb6(%rip), %rsi     # 0x281ba
leaq 0x22bbe(%rip), %rdx     # 0x281c9
leaq -0x480(%rbp), %rdi
callq 0x8a2a
leaq -0x450(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22a65(%rip), %rsi     # 0x2808e
leaq 0x22a61(%rip), %rdx     # 0x28091
leaq -0x460(%rbp), %rdi
callq 0x8a2a
leaq -0x430(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22bac(%rip), %rsi     # 0x281fa
leaq 0x22ba6(%rip), %rdx     # 0x281fb
leaq -0x440(%rbp), %rdi
callq 0x8a2a
leaq -0x410(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22b57(%rip), %rsi     # 0x281ca
leaq 0x22b81(%rip), %rdx     # 0x281fb
leaq -0x420(%rbp), %rdi
callq 0x8a2a
leaq -0x480(%rbp), %rdx
leaq -0x460(%rbp), %rcx
leaq -0x440(%rbp), %r8
leaq -0x420(%rbp), %r9
movq %r15, %rdi
movl $0x74, %esi
callq 0x97bc
movq %rax, %r15
leaq -0x3f0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22b38(%rip), %rsi     # 0x281fc
leaq 0x22b41(%rip), %rdx     # 0x2820c
leaq -0x400(%rbp), %rdi
callq 0x8a2a
leaq -0x3d0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x2337e(%rip), %rdx     # 0x28a67
leaq -0x3e0(%rbp), %rdi
movq %rdx, %rsi
callq 0x8a2a
leaq -0x3b0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x2335d(%rip), %rdx     # 0x28a67
leaq -0x3c0(%rbp), %rdi
movq %rdx, %rsi
callq 0x8a2a
leaq -0x390(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22ae2(%rip), %rsi     # 0x2820d
leaq 0x22b09(%rip), %rdx     # 0x2823b
leaq -0x3a0(%rbp), %rdi
callq 0x8a2a
leaq -0x400(%rbp), %rdx
leaq -0x3e0(%rbp), %rcx
leaq -0x3c0(%rbp), %r8
leaq -0x3a0(%rbp), %r9
movq %r15, %rdi
movl $0x6e, %esi
callq 0x97bc
movq %rax, %r15
leaq -0x370(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22ac0(%rip), %rsi     # 0x2823c
leaq 0x22acd(%rip), %rdx     # 0x28250
leaq -0x380(%rbp), %rdi
callq 0x8a2a
leaq -0x350(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x232c6(%rip), %rdx     # 0x28a67
leaq -0x360(%rbp), %rdi
movq %rdx, %rsi
callq 0x8a2a
leaq -0x330(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x232a5(%rip), %rdx     # 0x28a67
leaq -0x340(%rbp), %rdi
movq %rdx, %rsi
callq 0x8a2a
leaq -0x310(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22a6e(%rip), %rsi     # 0x28251
leaq 0x22a98(%rip), %rdx     # 0x28282
leaq -0x320(%rbp), %rdi
callq 0x8a2a
leaq -0x380(%rbp), %rdx
leaq -0x360(%rbp), %rcx
leaq -0x340(%rbp), %r8
leaq -0x320(%rbp), %r9
movq %r15, %rdi
movl $0x62, %esi
callq 0x97bc
movq %rax, %r15
leaq -0x2f0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22a4f(%rip), %rsi     # 0x28283
leaq 0x22a58(%rip), %rdx     # 0x28293
leaq -0x300(%rbp), %rdi
callq 0x8a2a
leaq -0x2d0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x2320e(%rip), %rdx     # 0x28a67
leaq -0x2e0(%rbp), %rdi
movq %rdx, %rsi
callq 0x8a2a
leaq -0x2b0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x231ed(%rip), %rdx     # 0x28a67
leaq -0x2c0(%rbp), %rdi
movq %rdx, %rsi
callq 0x8a2a
leaq -0x290(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x229f9(%rip), %rsi     # 0x28294
leaq 0x22a26(%rip), %rdx     # 0x282c8
leaq -0x2a0(%rbp), %rdi
callq 0x8a2a
leaq -0x300(%rbp), %rdx
leaq -0x2e0(%rbp), %rcx
leaq -0x2c0(%rbp), %r8
leaq -0x2a0(%rbp), %r9
movq %r15, %rdi
movl $0x66, %esi
callq 0x97bc
movq %rax, %r15
leaq -0x270(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x229dd(%rip), %rsi     # 0x282c9
leaq 0x229db(%rip), %rdx     # 0x282ce
leaq -0x280(%rbp), %rdi
callq 0x8a2a
leaq -0x250(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x23156(%rip), %rdx     # 0x28a67
leaq -0x260(%rbp), %rdi
movq %rdx, %rsi
callq 0x8a2a
leaq -0x230(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x23135(%rip), %rdx     # 0x28a67
leaq -0x240(%rbp), %rdi
movq %rdx, %rsi
callq 0x8a2a
leaq -0x210(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x2297c(%rip), %rsi     # 0x282cf
leaq 0x22994(%rip), %rdx     # 0x282ee
leaq -0x220(%rbp), %rdi
callq 0x8a2a
leaq -0x280(%rbp), %rdx
leaq -0x260(%rbp), %rcx
leaq -0x240(%rbp), %r8
leaq -0x220(%rbp), %r9
movq %r15, %rdi
movl $0x38, %esi
callq 0x97bc
movq -0x220(%rbp), %rdi
leaq -0x210(%rbp), %rax
cmpq %rax, %rdi
je 0x59a7
callq 0x4360
movq -0x240(%rbp), %rdi
leaq -0x230(%rbp), %rax
cmpq %rax, %rdi
je 0x59bf
callq 0x4360
movq -0x260(%rbp), %rdi
leaq -0x250(%rbp), %rax
cmpq %rax, %rdi
je 0x59d7
callq 0x4360
movq -0x280(%rbp), %rdi
leaq -0x270(%rbp), %rax
cmpq %rax, %rdi
je 0x59ef
callq 0x4360
movq -0x2a0(%rbp), %rdi
leaq -0x290(%rbp), %rax
cmpq %rax, %rdi
je 0x5a07
callq 0x4360
movq -0x2c0(%rbp), %rdi
leaq -0x2b0(%rbp), %rax
cmpq %rax, %rdi
je 0x5a1f
callq 0x4360
movq -0x2e0(%rbp), %rdi
leaq -0x2d0(%rbp), %rax
cmpq %rax, %rdi
je 0x5a37
callq 0x4360
movq -0x300(%rbp), %rdi
leaq -0x2f0(%rbp), %rax
cmpq %rax, %rdi
je 0x5a4f
callq 0x4360
movq -0x320(%rbp), %rdi
leaq -0x310(%rbp), %rax
cmpq %rax, %rdi
je 0x5a67
callq 0x4360
movq -0x340(%rbp), %rdi
leaq -0x330(%rbp), %rax
cmpq %rax, %rdi
je 0x5a7f
callq 0x4360
movq -0x360(%rbp), %rdi
leaq -0x350(%rbp), %rax
cmpq %rax, %rdi
je 0x5a97
callq 0x4360
movq -0x380(%rbp), %rdi
leaq -0x370(%rbp), %rax
cmpq %rax, %rdi
je 0x5aaf
callq 0x4360
movq -0x3a0(%rbp), %rdi
leaq -0x390(%rbp), %rax
cmpq %rax, %rdi
je 0x5ac7
callq 0x4360
movq -0x3c0(%rbp), %rdi
leaq -0x3b0(%rbp), %rax
cmpq %rax, %rdi
je 0x5adf
callq 0x4360
movq -0x3e0(%rbp), %rdi
leaq -0x3d0(%rbp), %rax
cmpq %rax, %rdi
je 0x5af7
callq 0x4360
movq -0x400(%rbp), %rdi
leaq -0x3f0(%rbp), %rax
cmpq %rax, %rdi
je 0x5b0f
callq 0x4360
movq -0x420(%rbp), %rdi
leaq -0x410(%rbp), %rax
cmpq %rax, %rdi
je 0x5b27
callq 0x4360
movq -0x440(%rbp), %rdi
leaq -0x430(%rbp), %rax
cmpq %rax, %rdi
je 0x5b3f
callq 0x4360
movq -0x460(%rbp), %rdi
leaq -0x450(%rbp), %rax
cmpq %rax, %rdi
je 0x5b57
callq 0x4360
movq -0x480(%rbp), %rdi
leaq -0x470(%rbp), %rax
cmpq %rax, %rdi
je 0x5b6f
callq 0x4360
movq -0x4a0(%rbp), %rdi
leaq -0x490(%rbp), %rax
cmpq %rax, %rdi
je 0x5b87
callq 0x4360
movq -0x4c0(%rbp), %rdi
leaq -0x4b0(%rbp), %rax
cmpq %rax, %rdi
je 0x5b9f
callq 0x4360
movq -0x4e0(%rbp), %rdi
leaq -0x4d0(%rbp), %rax
cmpq %rax, %rdi
je 0x5bb7
callq 0x4360
movq -0x500(%rbp), %rdi
leaq -0x4f0(%rbp), %rax
cmpq %rax, %rdi
je 0x5bcf
callq 0x4360
movq -0x520(%rbp), %rdi
leaq -0x510(%rbp), %rax
cmpq %rax, %rdi
je 0x5be7
callq 0x4360
movq -0x540(%rbp), %rdi
leaq -0x530(%rbp), %rax
cmpq %rax, %rdi
je 0x5bff
callq 0x4360
movq -0x560(%rbp), %rdi
leaq -0x550(%rbp), %rax
cmpq %rax, %rdi
je 0x5c17
callq 0x4360
movq -0x580(%rbp), %rdi
leaq -0x570(%rbp), %rax
cmpq %rax, %rdi
je 0x5c2f
callq 0x4360
movq -0x5a0(%rbp), %rdi
leaq -0x590(%rbp), %rax
cmpq %rax, %rdi
je 0x5c47
callq 0x4360
movq -0x5c0(%rbp), %rdi
leaq -0x5b0(%rbp), %rax
cmpq %rax, %rdi
je 0x5c5f
callq 0x4360
movq -0x5e0(%rbp), %rdi
leaq -0x5d0(%rbp), %rax
cmpq %rax, %rdi
je 0x5c77
callq 0x4360
movq -0x600(%rbp), %rdi
leaq -0x5f0(%rbp), %rax
cmpq %rax, %rdi
je 0x5c8f
callq 0x4360
movq -0x620(%rbp), %rdi
leaq -0x610(%rbp), %rax
cmpq %rax, %rdi
je 0x5ca7
callq 0x4360
movq -0x640(%rbp), %rdi
leaq -0x630(%rbp), %rax
cmpq %rax, %rdi
je 0x5cbf
callq 0x4360
movq -0x660(%rbp), %rdi
leaq -0x650(%rbp), %rax
cmpq %rax, %rdi
je 0x5cd7
callq 0x4360
movq -0x680(%rbp), %rdi
leaq -0x670(%rbp), %rax
cmpq %rax, %rdi
je 0x5cef
callq 0x4360
movq -0x6a0(%rbp), %rdi
leaq -0x690(%rbp), %rax
cmpq %rax, %rdi
je 0x5d07
callq 0x4360
movq -0x6c0(%rbp), %rdi
leaq -0x6b0(%rbp), %rax
cmpq %rax, %rdi
je 0x5d1f
callq 0x4360
movq -0x170(%rbp), %rdi
leaq -0x160(%rbp), %rax
cmpq %rax, %rdi
je 0x5d37
callq 0x4360
movq -0x190(%rbp), %rdi
leaq -0x180(%rbp), %rax
cmpq %rax, %rdi
je 0x5d4f
callq 0x4360
movq -0x6e0(%rbp), %rdi
leaq -0x6d0(%rbp), %rax
cmpq %rax, %rdi
je 0x5d67
callq 0x4360
movq -0x700(%rbp), %rdi
leaq -0x6f0(%rbp), %rax
cmpq %rax, %rdi
je 0x5d7f
callq 0x4360
movq -0x1b0(%rbp), %rdi
leaq -0x1a0(%rbp), %rax
cmpq %rax, %rdi
je 0x5d97
callq 0x4360
movq -0x880(%rbp), %rdi
cmpq %r13, %rdi
je 0x5da8
callq 0x4360
movq -0x8a0(%rbp), %rdi
cmpq %r12, %rdi
je 0x5db9
callq 0x4360
leaq -0x988(%rbp), %rdi
movl %r14d, %esi
movq %rbx, %rdx
callq 0xa1e4
movq -0x8e8(%rbp), %rax
subq -0x8f0(%rbp), %rax
cmpq $0x80, %rax
je 0x5dfc
movq 0x301e0(%rip), %rax     # 0x35fc8
movq (%rax), %rsi
leaq -0x988(%rbp), %rdi
movl $0x1, %edx
callq 0xa786
leaq -0x850(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x224e1(%rip), %rsi     # 0x282ef
leaq 0x224e4(%rip), %rdx     # 0x282f9
leaq -0x860(%rbp), %rdi
callq 0x8a2a
leaq -0x988(%rbp), %rdi
leaq -0x860(%rbp), %rsi
callq 0xa29e
movq %rax, %rdi
callq 0x9660
movl %eax, -0x38(%rbp)
movq -0x860(%rbp), %rdi
cmpq %r14, %rdi
je 0x5e50
callq 0x4360
leaq -0x830(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x22498(%rip), %rsi     # 0x282fa
leaq 0x22499(%rip), %rdx     # 0x28302
leaq -0x840(%rbp), %rdi
callq 0x8a2a
leaq -0x988(%rbp), %rdi
leaq -0x840(%rbp), %rsi
callq 0xa29e
movq %rax, %rdi
callq 0x9660
movq %rax, -0x50(%rbp)
movq -0x840(%rbp), %rdi
cmpq %r14, %rdi
je 0x5ea5
callq 0x4360
leaq -0x810(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x2244c(%rip), %rsi     # 0x28303
leaq 0x2244f(%rip), %rdx     # 0x2830d
leaq -0x820(%rbp), %rdi
callq 0x8a2a
leaq -0x988(%rbp), %rdi
leaq -0x820(%rbp), %rsi
callq 0xa29e
movq %rax, %rdi
callq 0x9660
movl %eax, -0x48(%rbp)
movq -0x820(%rbp), %rdi
cmpq %r14, %rdi
je 0x5ef9
callq 0x4360
leaq -0x7f0(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x22403(%rip), %rsi     # 0x2830e
leaq 0x22406(%rip), %rdx     # 0x28318
leaq -0x800(%rbp), %rdi
callq 0x8a2a
leaq -0x988(%rbp), %rdi
leaq -0x800(%rbp), %rsi
callq 0xa29e
movq %rax, %rdi
callq 0x9660
movl %eax, %ebx
movq -0x800(%rbp), %rdi
cmpq %r14, %rdi
je 0x5f4c
callq 0x4360
movq -0x8f0(%rbp), %rax
leaq -0x100(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0x110(%rbp), %rdi
callq 0x898c
movq -0x8f0(%rbp), %rax
leaq -0x140(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq 0x20(%rax), %rsi
movq 0x28(%rax), %rdx
addq %rsi, %rdx
leaq -0x150(%rbp), %rdi
callq 0x898c
movq -0x8f0(%rbp), %rax
leaq -0x120(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq 0x40(%rax), %rsi
movq 0x48(%rax), %rdx
addq %rsi, %rdx
leaq -0x130(%rbp), %rdi
callq 0x898c
movq -0x8f0(%rbp), %rax
leaq -0x1f0(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq 0x60(%rax), %rsi
movq 0x68(%rax), %rdx
addq %rsi, %rdx
leaq -0x200(%rbp), %rdi
callq 0x898c
leaq -0x7d0(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x22318(%rip), %rsi     # 0x28319
leaq 0x22319(%rip), %rdx     # 0x28321
leaq -0x7e0(%rbp), %rdi
callq 0x8a2a
leaq -0x988(%rbp), %rdi
leaq -0x7e0(%rbp), %rsi
callq 0xa29e
movq %rax, %rdi
callq 0x96a6
movss %xmm0, -0x30(%rbp)
movq -0x7e0(%rbp), %rdi
cmpq %r14, %rdi
je 0x6045
callq 0x4360
leaq -0x7b0(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x222cb(%rip), %rsi     # 0x28322
leaq 0x222cf(%rip), %rdx     # 0x2832d
leaq -0x7c0(%rbp), %rdi
callq 0x8a2a
leaq -0x988(%rbp), %rdi
leaq -0x7c0(%rbp), %rsi
callq 0xa29e
movq %rax, %rdi
callq 0x9660
movl %eax, -0x34(%rbp)
movq -0x7c0(%rbp), %rdi
cmpq %r14, %rdi
je 0x6099
callq 0x4360
leaq -0x790(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x221d8(%rip), %rsi     # 0x28283
leaq 0x221e1(%rip), %rdx     # 0x28293
leaq -0x7a0(%rbp), %rdi
callq 0x8a2a
leaq -0x988(%rbp), %rdi
leaq -0x7a0(%rbp), %rsi
callq 0xa29e
movb 0x4a(%rax), %r14b
movq -0x7a0(%rbp), %rdi
cmpq %r15, %rdi
je 0x60e6
callq 0x4360
leaq -0x770(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x22104(%rip), %rsi     # 0x281fc
leaq 0x2210d(%rip), %rdx     # 0x2820c
leaq -0x780(%rbp), %rdi
callq 0x8a2a
leaq -0x988(%rbp), %rdi
leaq -0x780(%rbp), %rsi
callq 0xa29e
movb 0x4a(%rax), %al
movb %al, -0x29(%rbp)
movq -0x780(%rbp), %rdi
cmpq %r15, %rdi
je 0x6135
callq 0x4360
leaq -0x750(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x220f5(%rip), %rsi     # 0x2823c
leaq 0x22102(%rip), %rdx     # 0x28250
leaq -0x760(%rbp), %rdi
callq 0x8a2a
leaq -0x988(%rbp), %rdi
leaq -0x760(%rbp), %rsi
callq 0xa29e
movb 0x4a(%rax), %r13b
movq -0x760(%rbp), %rdi
cmpq %r15, %rdi
je 0x6182
callq 0x4360
leaq -0x730(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x22134(%rip), %rsi     # 0x282c9
leaq 0x22132(%rip), %rdx     # 0x282ce
leaq -0x740(%rbp), %rdi
callq 0x8a2a
leaq -0x988(%rbp), %rdi
leaq -0x740(%rbp), %rsi
callq 0xa29e
movb 0x4a(%rax), %r15b
movq -0x740(%rbp), %rdi
cmpq %r12, %rdi
je 0x61d0
callq 0x4360
movq 0x2fe11(%rip), %rdi     # 0x35fe8
movq (%rdi), %rax
movq -0x18(%rax), %rax
orl $0x1, 0x18(%rdi,%rax)
leaq 0x22144(%rip), %rsi     # 0x2832e
movl $0x16, %edx
callq 0x4410
movq -0x110(%rbp), %rsi
movq -0x108(%rbp), %rdx
movq 0x2fddf(%rip), %rdi     # 0x35fe8
callq 0x4410
movq %rax, %rdi
callq 0x4180
movq 0x2fdcb(%rip), %rdi     # 0x35fe8
leaq 0x22121(%rip), %rsi     # 0x28345
movl $0x21, %edx
callq 0x4410
movq -0x150(%rbp), %rsi
movq -0x148(%rbp), %rdx
movq 0x2fda5(%rip), %rdi     # 0x35fe8
callq 0x4410
movq %rax, %rdi
callq 0x4180
movq 0x2fd91(%rip), %rdi     # 0x35fe8
leaq 0x22109(%rip), %rsi     # 0x28367
movl $0x12, %edx
callq 0x4410
movq -0x130(%rbp), %rsi
movq -0x128(%rbp), %rdx
movq 0x2fd6b(%rip), %rdi     # 0x35fe8
callq 0x4410
movq %rax, %rdi
callq 0x4180
movq 0x2fd57(%rip), %rdi     # 0x35fe8
leaq 0x220e2(%rip), %rsi     # 0x2837a
movl $0x1d, %edx
callq 0x4410
movq -0x200(%rbp), %rsi
movq -0x1f8(%rbp), %rdx
movq 0x2fd31(%rip), %rdi     # 0x35fe8
callq 0x4410
movq %rax, %rdi
callq 0x4180
movq 0x2fd1d(%rip), %rdi     # 0x35fe8
leaq 0x220c6(%rip), %rsi     # 0x28398
movl $0x26, %edx
callq 0x4410
movl -0x38(%rbp), %esi
movq 0x2fd02(%rip), %rdi     # 0x35fe8
callq 0x4260
movq %rax, %rdi
callq 0x4180
movq 0x2fcee(%rip), %rdi     # 0x35fe8
leaq 0x220be(%rip), %rsi     # 0x283bf
movl $0x24, %edx
callq 0x4410
movl -0x50(%rbp), %r12d
movq 0x2fcd2(%rip), %rdi     # 0x35fe8
movq %r12, %rsi
callq 0x4260
movq %rax, %rdi
callq 0x4180
movq 0x2fcbb(%rip), %rdi     # 0x35fe8
leaq 0x220b0(%rip), %rsi     # 0x283e4
movl $0x33, %edx
callq 0x4410
movl -0x48(%rbp), %esi
movq 0x2fca0(%rip), %rdi     # 0x35fe8
callq 0x4260
movq %rax, %rdi
callq 0x4180
movq 0x2fc8c(%rip), %rdi     # 0x35fe8
leaq 0x220b5(%rip), %rsi     # 0x28418
movl $0x1f, %edx
callq 0x4410
movl %ebx, %esi
movq 0x2fc72(%rip), %rdi     # 0x35fe8
movq %rsi, -0xd0(%rbp)
callq 0x4260
movq %rax, %rdi
callq 0x4180
movq 0x2fc57(%rip), %rdi     # 0x35fe8
leaq 0x220a0(%rip), %rsi     # 0x28438
movl $0x16, %edx
callq 0x4410
cvtss2sd -0x30(%rbp), %xmm0
movq 0x2fc3a(%rip), %rdi     # 0x35fe8
movsd %xmm0, -0xd8(%rbp)
callq 0x45c0
movq %rax, %rdi
callq 0x4180
movq 0x2fc1e(%rip), %rdi     # 0x35fe8
leaq 0x2207e(%rip), %rsi     # 0x2844f
movl $0x16, %edx
callq 0x4410
movq 0x2fc06(%rip), %rbx     # 0x35fe8
movsd 0x21c1e(%rip), %xmm0    # 0x28008
movq %rbx, %rdi
callq 0x45c0
movq %rax, %rdi
callq 0x4180
movl -0x34(%rbp), %eax
movl %eax, %ecx
movq %rcx, -0xc8(%rbp)
testl %eax, %eax
je 0x644e
movq 0x2fbd7(%rip), %rdi     # 0x35fe8
leaq 0x2204e(%rip), %rsi     # 0x28466
movl $0x31, %edx
callq 0x4410
movq 0x2fbbf(%rip), %rdi     # 0x35fe8
movq -0xc8(%rbp), %rsi
callq 0x4260
movq %rax, %rbx
leaq 0x21db7(%rip), %rsi     # 0x281f6
movl $0x5, %edx
movq %rax, %rdi
callq 0x4410
jmp 0x6462
leaq 0x22043(%rip), %rsi     # 0x28498
movl $0x21, %edx
movq %rbx, %rdi
callq 0x4410
movq %rbx, %rdi
callq 0x4180
movq 0x2fb77(%rip), %rdi     # 0x35fe8
leaq 0x22042(%rip), %rsi     # 0x284ba
movl $0x2e, %edx
callq 0x4410
movzbl -0x29(%rbp), %esi
movq 0x2fb5b(%rip), %rdi     # 0x35fe8
callq 0x4600
movq %rax, %rdi
callq 0x4180
movq 0x2fb47(%rip), %rdi     # 0x35fe8
leaq 0x22041(%rip), %rsi     # 0x284e9
movl $0x3f, %edx
callq 0x4410
movzbl %r13b, %esi
movq 0x2fb2b(%rip), %rdi     # 0x35fe8
movl %esi, -0x84(%rbp)
callq 0x4600
movq %rax, %rdi
callq 0x4180
movq 0x2fb11(%rip), %rdi     # 0x35fe8
leaq 0x2204b(%rip), %rsi     # 0x28529
movl $0x22, %edx
callq 0x4410
movzbl %r14b, %esi
movq 0x2faf5(%rip), %rdi     # 0x35fe8
movl %esi, -0x30(%rbp)
callq 0x4600
movq %rax, %rdi
callq 0x4180
movq 0x2fade(%rip), %rdi     # 0x35fe8
leaq 0x2203b(%rip), %rsi     # 0x2854c
movl $0x1c, %edx
callq 0x4410
movzbl %r15b, %ebx
movq 0x2fac2(%rip), %rdi     # 0x35fe8
movl %ebx, %esi
callq 0x4600
movq %rax, %rdi
callq 0x4180
leaq -0xaa0(%rbp), %rax
xorl %r14d, %r14d
movl %r14d, (%rax)
movq %r14, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %r14, 0x20(%rax)
leaq -0xa70(%rbp), %rax
movl %r14d, (%rax)
movq %r14, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %r14, 0x20(%rax)
leaq -0x8c8(%rbp), %rax
movl %r14d, (%rax)
movq %r14, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %r14, 0x20(%rax)
leaq 0x2fe33(%rip), %rsi     # 0x363c0
leaq -0xd18(%rbp), %rdi
callq 0x778e
leaq -0x78(%rbp), %rax
movl %r14d, (%rax)
movq %r14, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %r14, 0x20(%rax)
leaq -0x9e0(%rbp), %rax
movl %r14d, (%rax)
movq %r14, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %r14, 0x20(%rax)
leaq -0x9b0(%rbp), %rax
movl %r14d, (%rax)
movq %r14, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %r14, 0x20(%rax)
leaq -0xa40(%rbp), %rax
movl %r14d, (%rax)
movq %r14, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %r14, 0x20(%rax)
movq 0x2f9e3(%rip), %rdi     # 0x35fe8
leaq 0x21f5d(%rip), %rsi     # 0x28569
movl $0x1c, %edx
callq 0x4410
movq -0x150(%rbp), %rsi
movq -0x148(%rbp), %rdx
movq 0x2f9bd(%rip), %rdi     # 0x35fe8
callq 0x4410
movq %rax, %rdi
callq 0x4180
leaq -0x80(%rbp), %rdi
leaq -0x150(%rbp), %rsi
callq 0x2424e
testl %eax, %eax
jns 0x6675
movq 0x2f995(%rip), %rdi     # 0x35fe8
leaq 0x21f2c(%rip), %rsi     # 0x28586
movl $0x28, %edx
callq 0x4410
movq 0x2f97d(%rip), %rdi     # 0x35fe8
callq 0x4180
jmp 0x67dc
movq 0x2f96c(%rip), %rdi     # 0x35fe8
leaq 0x21f2c(%rip), %rsi     # 0x285af
movl $0x18, %edx
callq 0x4410
leaq -0x80(%rbp), %rdi
callq 0x24a36
movq 0x2f94b(%rip), %rdi     # 0x35fe8
movl %eax, %esi
callq 0x4650
movq %rax, %rdi
callq 0x4180
movq 0x2f935(%rip), %rdi     # 0x35fe8
leaq 0x21f0e(%rip), %rsi     # 0x285c8
movl $0x12, %edx
callq 0x4410
movq -0x58(%rbp), %rsi
movq 0x2f919(%rip), %rdi     # 0x35fe8
callq 0x4260
movq %rax, %rdi
callq 0x4180
leaq -0xa10(%rbp), %rax
movl $0x0, (%rax)
xorl %ecx, %ecx
movq %rcx, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %rcx, 0x20(%rax)
leaq -0x80(%rbp), %rdi
leaq -0xa18(%rbp), %rsi
callq 0x24a8a
leaq -0xa18(%rbp), %rdi
leaq -0xa48(%rbp), %rsi
movl -0x48(%rbp), %edx
movl %ebx, %ecx
callq 0x7596
movq 0x2f8be(%rip), %rdi     # 0x35fe8
leaq 0x21eaa(%rip), %rsi     # 0x285db
movl $0x12, %edx
callq 0x4410
movq -0x110(%rbp), %rsi
movq -0x108(%rbp), %rdx
movq 0x2f898(%rip), %rdi     # 0x35fe8
callq 0x4410
movq %rax, %rdi
callq 0x4180
leaq -0x710(%rbp), %r14
movq %r14, -0x10(%r14)
movq -0x110(%rbp), %rsi
movq -0x108(%rbp), %rdx
addq %rsi, %rdx
leaq -0x720(%rbp), %rdi
callq 0x898c
leaq -0x720(%rbp), %rdi
leaq -0x8d0(%rbp), %rsi
leaq -0x88(%rbp), %rdx
movl %ebx, %ecx
callq 0x1f246
movl %eax, %ebx
movq -0x720(%rbp), %rdi
cmpq %r14, %rdi
je 0x67b4
callq 0x4360
testl %ebx, %ebx
jns 0x67e6
movq 0x2f829(%rip), %rdi     # 0x35fe8
leaq 0x21e28(%rip), %rsi     # 0x285ee
movl $0x26, %edx
callq 0x4410
movq 0x2f811(%rip), %rdi     # 0x35fe8
callq 0x4180
movl $0x1, %edi
callq 0x4430
movq 0x2f7fb(%rip), %rdi     # 0x35fe8
leaq 0x22272(%rip), %rsi     # 0x28a66
movl $0x1, %edx
callq 0x4410
movq 0x2f7e3(%rip), %rdi     # 0x35fe8
leaq 0x21e09(%rip), %rsi     # 0x28615
movl $0xf, %edx
callq 0x4410
movq -0x8a8(%rbp), %rsi
movq 0x2f7c4(%rip), %rdi     # 0x35fe8
callq 0x4260
movq %rax, %rdi
callq 0x4180
movq 0x2f7b0(%rip), %rdi     # 0x35fe8
leaq 0x22227(%rip), %rsi     # 0x28a66
movl $0x1, %edx
callq 0x4410
movq 0x2f798(%rip), %rdi     # 0x35fe8
leaq 0x21dce(%rip), %rsi     # 0x28625
movl $0x15, %edx
callq 0x4410
movl -0x88(%rbp), %esi
movq 0x2f77a(%rip), %rdi     # 0x35fe8
callq 0x4650
movq %rax, %rdi
callq 0x4180
movq 0x2f766(%rip), %rdi     # 0x35fe8
leaq 0x21db2(%rip), %rsi     # 0x2863b
movl $0xd, %edx
callq 0x4410
movq -0x130(%rbp), %rsi
movq -0x128(%rbp), %rdx
movq 0x2f740(%rip), %rdi     # 0x35fe8
callq 0x4410
movq %rax, %rdi
callq 0x4180
leaq -0xd18(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0x15056
leaq -0xd18(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x14bba
movq 0x2f709(%rip), %rcx     # 0x35fe8
movq (%rcx), %rax
movq -0x18(%rax), %rax
movq $0xf, 0x8(%rcx,%rax)
movq -0x50(%rbp), %rax
shrl %eax
movq %rax, -0x50(%rbp)
movl $0x1, %r15d
leaq -0xd18(%rbp), %rbx
leaq -0xc0(%rbp), %r13
movq $0x0, -0x40(%rbp)
movl $0xa, %edx
movq 0x2f6c7(%rip), %rdi     # 0x35fe8
leaq 0x21d21(%rip), %rsi     # 0x28649
callq 0x4410
movq 0x2f6b4(%rip), %rdi     # 0x35fe8
movl %r15d, %esi
callq 0x4650
movq %rax, %rdi
callq 0x4180
leaq -0x80(%rbp), %rdi
movq %rbx, %rsi
callq 0x1ad52
leaq -0x8d0(%rbp), %rdi
movq %rbx, %rsi
leaq -0x9e8(%rbp), %rdx
leaq -0x9b8(%rbp), %rcx
movl -0x30(%rbp), %r8d
callq 0x23116
movsd %xmm0, -0x48(%rbp)
leaq -0x9e8(%rbp), %rdi
leaq -0x80(%rbp), %rsi
movsd -0xd8(%rbp), %xmm0
movsd 0x21677(%rip), %xmm1    # 0x28008
callq 0x235aa
cmpb $0x0, -0x29(%rbp)
jne 0x69a5
leaq -0x80(%rbp), %rdi
callq 0x23e12
leaq -0x9e8(%rbp), %rdi
callq 0x8ac8
movl $0x14, %edx
movq 0x2f62b(%rip), %rdi     # 0x35fe8
leaq 0x21c90(%rip), %rsi     # 0x28654
callq 0x4410
movq 0x2f618(%rip), %rdi     # 0x35fe8
movsd -0x48(%rbp), %xmm0
callq 0x45c0
movq %rax, %rdi
callq 0x4180
movl $0x18, %edx
movq 0x2f5fa(%rip), %rdi     # 0x35fe8
leaq 0x21bba(%rip), %rsi     # 0x285af
callq 0x4410
leaq -0x80(%rbp), %rdi
callq 0x24a36
movq 0x2f5de(%rip), %rdi     # 0x35fe8
movl %eax, %esi
callq 0x4650
movq %rax, %rdi
callq 0x4180
movl $0x12, %edx
movq 0x2f5c3(%rip), %rdi     # 0x35fe8
leaq 0x21b9c(%rip), %rsi     # 0x285c8
callq 0x4410
movq -0x58(%rbp), %rsi
movq 0x2f5ac(%rip), %rdi     # 0x35fe8
callq 0x4260
movq %rax, %rdi
callq 0x4180
cmpl $0x0, -0x34(%rbp)
sete %al
cmpl $0x1, %r15d
setne %cl
orb %al, %cl
jne 0x6a71
movq -0x58(%rbp), %rcx
movq %rcx, %rax
xorl %edx, %edx
divq -0xc8(%rbp)
subl %edx, %ecx
movq %rcx, -0x40(%rbp)
movl $0x19, %edx
movq 0x2f56b(%rip), %rdi     # 0x35fe8
leaq 0x21be5(%rip), %rsi     # 0x28669
callq 0x4410
movq 0x2f558(%rip), %rdi     # 0x35fe8
callq 0x4180
movl $0x0, -0x1d8(%rbp)
xorl %ecx, %ecx
movq %rcx, -0x1d0(%rbp)
leaq -0x1d8(%rbp), %rax
movq %rax, -0x1c8(%rbp)
movq %rax, -0x1c0(%rbp)
movq %rcx, -0x1b8(%rbp)
movl -0x38(%rbp), %edi
leaq -0x9b8(%rbp), %rsi
leaq -0x1e0(%rbp), %rdx
leaq -0xa48(%rbp), %rcx
callq 0x25204
movl $0x14, %edx
movq 0x2f4fb(%rip), %rdi     # 0x35fe8
leaq 0x21b8f(%rip), %rsi     # 0x28683
callq 0x4410
movq 0x2f4e8(%rip), %rdi     # 0x35fe8
callq 0x4180
leaq -0x80(%rbp), %rdi
movq %rbx, %rsi
callq 0x1ad52
movl -0x84(%rbp), %eax
movl %eax, (%rsp)
leaq -0x8d0(%rbp), %rdi
movq %rbx, %rsi
leaq -0x9b8(%rbp), %rdx
leaq -0x80(%rbp), %rcx
leaq -0x1e0(%rbp), %r8
movl -0x30(%rbp), %r9d
callq 0x2552a
xorps %xmm0, %xmm0
movaps %xmm0, -0xf0(%rbp)
movq $0x0, -0xe0(%rbp)
leaq -0x1e0(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
movl $0x1, %edx
callq 0x1f958
xorps %xmm0, %xmm0
movaps %xmm0, -0xc0(%rbp)
movq $0x0, -0xb0(%rbp)
movq -0xf0(%rbp), %r14
cmpq -0xe8(%rbp), %r14
je 0x6bd1
movq %r13, %rdi
movq %r14, %rsi
callq 0x793e
movq -0xb8(%rbp), %rcx
subq -0xc0(%rbp), %rcx
movq -0x58(%rbp), %rax
sarq $0x5, %rcx
subq %rcx, %rax
xorl %edx, %edx
divq %r12
testq %rdx, %rdx
sete %al
cmpq -0x50(%rbp), %rcx
setae %cl
testb %cl, %al
jne 0x6bd1
addq $0x28, %r14
jmp 0x6b88
movq %r13, %rdi
leaq -0x80(%rbp), %rsi
callq 0x2447c
movq -0xc0(%rbp), %r14
cmpq -0xb8(%rbp), %r14
je 0x6bfe
movq %rbx, %rdi
movq %r14, %rsi
callq 0x14a4a
addq $0x20, %r14
jmp 0x6be4
leaq -0x8d0(%rbp), %rdi
movq %rbx, %rsi
leaq -0x80(%rbp), %rdx
movl -0x30(%rbp), %ecx
movsd -0xd8(%rbp), %xmm0
movl $0x1, %r8d
callq 0x23498
cmpb $0x0, -0x29(%rbp)
jne 0x6c31
leaq -0x80(%rbp), %rdi
callq 0x23e12
movq %rbx, %rdi
leaq -0x80(%rbp), %rsi
callq 0x14bba
movq -0x58(%rbp), %r14
cmpl $0x0, -0x34(%rbp)
je 0x6d83
movl -0x40(%rbp), %eax
cmpq %rax, %r14
seta %al
cmpq -0xd0(%rbp), %r14
setbe %cl
orb %al, %cl
jne 0x6d83
leaq -0xc20(%rbp), %rdi
callq 0x44c0
movl $0xc, %edx
leaq -0xc20(%rbp), %rdi
leaq 0x21a13(%rip), %rsi     # 0x28698
callq 0x4410
movq -0x58(%rbp), %rsi
leaq -0xc20(%rbp), %rdi
callq 0x4260
movl $0x3, %edx
movq %rax, %rdi
leaq 0x219fc(%rip), %rsi     # 0x286a5
callq 0x4410
movl $0xd, %edx
movq 0x2f32e(%rip), %rdi     # 0x35fe8
leaq 0x219e8(%rip), %rsi     # 0x286a9
callq 0x4410
leaq -0xa8(%rbp), %rdi
leaq -0xc18(%rbp), %rsi
callq 0x45a0
movq -0xa8(%rbp), %rsi
movq -0xa0(%rbp), %rdx
movq 0x2f2fa(%rip), %rdi     # 0x35fe8
callq 0x4410
movq %rax, %rdi
callq 0x4180
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0x6d13
callq 0x4360
leaq -0xa8(%rbp), %rdi
leaq -0xc18(%rbp), %rsi
callq 0x45a0
leaq -0x80(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
xorl %edx, %edx
movl $0x6, %ecx
callq 0x23f12
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0x6d55
callq 0x4360
movq -0x40(%rbp), %rax
subl -0x34(%rbp), %eax
movq %rax, -0x40(%rbp)
leaq -0xc20(%rbp), %rdi
movq 0x2f24a(%rip), %rsi     # 0x35fb8
callq 0x41c0
leaq -0xbb0(%rbp), %rdi
callq 0x4110
movq -0x58(%rbp), %r14
incl %r15d
movq %r13, %rdi
callq 0x798a
leaq -0xf0(%rbp), %rdi
callq 0x79e2
leaq -0x1e0(%rbp), %rdi
callq 0x86c2
cmpq -0xd0(%rbp), %r14
ja 0x6915
leaq -0x80(%rbp), %rdi
leaq -0x200(%rbp), %rsi
xorl %edx, %edx
movl $0x6, %ecx
callq 0x23f12
xorl %edi, %edi
callq 0x4430
jmp 0x6e5a
jmp 0x6dda
jmp 0x6df9
movq %rax, %rbx
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0x6dfc
callq 0x4360
jmp 0x6dfc
jmp 0x6df9
movq %rax, %rbx
movq 0x2f1b5(%rip), %rsi     # 0x35fb8
leaq -0xc20(%rbp), %rdi
callq 0x41c0
leaq -0xbb0(%rbp), %rdi
callq 0x4110
jmp 0x6e26
jmp 0x6e23
jmp 0x6e23
jmp 0x6e23
movq %rax, %rbx
leaq -0xc0(%rbp), %rdi
callq 0x798a
jmp 0x6e37
movq %rax, %rbx
leaq -0xf0(%rbp), %rdi
callq 0x79e2
jmp 0x6e48
movq %rax, %rbx
leaq -0x1e0(%rbp), %rdi
callq 0x86c2
jmp 0x6e73
jmp 0x6e5a
jmp 0x6e5a
movq %rax, %rbx
jmp 0x6e73
movq %rax, %rbx
movq -0x720(%rbp), %rdi
cmpq %r14, %rdi
je 0x6e73
callq 0x4360
leaq -0xa18(%rbp), %rdi
callq 0x86c2
jmp 0x6e86
jmp 0x6e83
movq %rax, %rbx
leaq -0xa48(%rbp), %rdi
callq 0x872c
leaq -0x9b8(%rbp), %rdi
callq 0x86c2
leaq -0x9e8(%rbp), %rdi
callq 0x8796
leaq -0x80(%rbp), %rdi
callq 0x8796
leaq -0xd18(%rbp), %rdi
callq 0x13ea0
jmp 0x6ec4
movq %rax, %rbx
leaq -0x8d0(%rbp), %rdi
callq 0x86c2
leaq -0xa78(%rbp), %rdi
callq 0x86c2
leaq -0xaa8(%rbp), %rdi
callq 0x86c2
jmp 0x6f55
jmp 0x6f52
movq %rax, %rbx
movq -0x740(%rbp), %rdi
cmpq %r12, %rdi
jne 0x6f4b
jmp 0x6f55
jmp 0x6f52
movq %rax, %rbx
movq -0x760(%rbp), %rdi
jmp 0x6f25
jmp 0x6f52
movq %rax, %rbx
movq -0x780(%rbp), %rdi
jmp 0x6f25
jmp 0x6f52
movq %rax, %rbx
movq -0x7a0(%rbp), %rdi
cmpq %r15, %rdi
jne 0x6f4b
jmp 0x6f55
jmp 0x6f52
movq %rax, %rbx
movq -0x7c0(%rbp), %rdi
jmp 0x6f46
jmp 0x6f52
movq %rax, %rbx
movq -0x7e0(%rbp), %rdi
cmpq %r14, %rdi
je 0x6f55
callq 0x4360
jmp 0x6f55
movq %rax, %rbx
movq -0x200(%rbp), %rdi
leaq -0x1f0(%rbp), %rax
cmpq %rax, %rdi
je 0x6f72
callq 0x4360
jmp 0x6f72
movq %rax, %rbx
movq -0x130(%rbp), %rdi
leaq -0x120(%rbp), %rax
cmpq %rax, %rdi
je 0x6f8f
callq 0x4360
jmp 0x6f8f
movq %rax, %rbx
movq -0x150(%rbp), %rdi
leaq -0x140(%rbp), %rax
cmpq %rax, %rdi
je 0x6fac
callq 0x4360
jmp 0x6fac
movq %rax, %rbx
movq -0x110(%rbp), %rdi
leaq -0x100(%rbp), %rax
cmpq %rax, %rdi
jne 0x753c
jmp 0x7546
jmp 0x7543
movq %rax, %rbx
movq -0x800(%rbp), %rdi
jmp 0x700a
jmp 0x7543
movq %rax, %rbx
movq -0x820(%rbp), %rdi
jmp 0x700a
jmp 0x7543
movq %rax, %rbx
movq -0x840(%rbp), %rdi
jmp 0x700a
jmp 0x7543
movq %rax, %rbx
movq -0x860(%rbp), %rdi
cmpq %r14, %rdi
jne 0x753c
jmp 0x7546
jmp 0x7543
jmp 0x7543
movq %rax, %rbx
movq -0x220(%rbp), %rdi
leaq -0x210(%rbp), %rax
cmpq %rax, %rdi
je 0x7042
callq 0x4360
jmp 0x7042
movq %rax, %rbx
movq -0x240(%rbp), %rdi
leaq -0x230(%rbp), %rax
cmpq %rax, %rdi
je 0x705f
callq 0x4360
jmp 0x705f
movq %rax, %rbx
movq -0x260(%rbp), %rdi
leaq -0x250(%rbp), %rax
cmpq %rax, %rdi
je 0x707c
callq 0x4360
jmp 0x707c
movq %rax, %rbx
movq -0x280(%rbp), %rdi
leaq -0x270(%rbp), %rax
cmpq %rax, %rdi
je 0x709b
callq 0x4360
jmp 0x709b
jmp 0x7098
movq %rax, %rbx
movq -0x2a0(%rbp), %rdi
leaq -0x290(%rbp), %rax
cmpq %rax, %rdi
je 0x70b8
callq 0x4360
jmp 0x70b8
movq %rax, %rbx
movq -0x2c0(%rbp), %rdi
leaq -0x2b0(%rbp), %rax
cmpq %rax, %rdi
je 0x70d5
callq 0x4360
jmp 0x70d5
movq %rax, %rbx
movq -0x2e0(%rbp), %rdi
leaq -0x2d0(%rbp), %rax
cmpq %rax, %rdi
je 0x70f2
callq 0x4360
jmp 0x70f2
movq %rax, %rbx
movq -0x300(%rbp), %rdi
leaq -0x2f0(%rbp), %rax
cmpq %rax, %rdi
je 0x7111
callq 0x4360
jmp 0x7111
jmp 0x710e
movq %rax, %rbx
movq -0x320(%rbp), %rdi
leaq -0x310(%rbp), %rax
cmpq %rax, %rdi
je 0x712e
callq 0x4360
jmp 0x712e
movq %rax, %rbx
movq -0x340(%rbp), %rdi
leaq -0x330(%rbp), %rax
cmpq %rax, %rdi
je 0x714b
callq 0x4360
jmp 0x714b
movq %rax, %rbx
movq -0x360(%rbp), %rdi
leaq -0x350(%rbp), %rax
cmpq %rax, %rdi
je 0x7168
callq 0x4360
jmp 0x7168
movq %rax, %rbx
movq -0x380(%rbp), %rdi
leaq -0x370(%rbp), %rax
cmpq %rax, %rdi
je 0x7187
callq 0x4360
jmp 0x7187
jmp 0x7184
movq %rax, %rbx
movq -0x3a0(%rbp), %rdi
leaq -0x390(%rbp), %rax
cmpq %rax, %rdi
je 0x71a4
callq 0x4360
jmp 0x71a4
movq %rax, %rbx
movq -0x3c0(%rbp), %rdi
leaq -0x3b0(%rbp), %rax
cmpq %rax, %rdi
je 0x71c1
callq 0x4360
jmp 0x71c1
movq %rax, %rbx
movq -0x3e0(%rbp), %rdi
leaq -0x3d0(%rbp), %rax
cmpq %rax, %rdi
je 0x71de
callq 0x4360
jmp 0x71de
movq %rax, %rbx
movq -0x400(%rbp), %rdi
leaq -0x3f0(%rbp), %rax
cmpq %rax, %rdi
je 0x71fd
callq 0x4360
jmp 0x71fd
jmp 0x71fa
movq %rax, %rbx
movq -0x420(%rbp), %rdi
leaq -0x410(%rbp), %rax
cmpq %rax, %rdi
je 0x721a
callq 0x4360
jmp 0x721a
movq %rax, %rbx
movq -0x440(%rbp), %rdi
leaq -0x430(%rbp), %rax
cmpq %rax, %rdi
je 0x7237
callq 0x4360
jmp 0x7237
movq %rax, %rbx
movq -0x460(%rbp), %rdi
leaq -0x450(%rbp), %rax
cmpq %rax, %rdi
je 0x7254
callq 0x4360
jmp 0x7254
movq %rax, %rbx
movq -0x480(%rbp), %rdi
leaq -0x470(%rbp), %rax
cmpq %rax, %rdi
je 0x7273
callq 0x4360
jmp 0x7273
jmp 0x7270
movq %rax, %rbx
movq -0x4a0(%rbp), %rdi
leaq -0x490(%rbp), %rax
cmpq %rax, %rdi
je 0x7290
callq 0x4360
jmp 0x7290
movq %rax, %rbx
movq -0x4c0(%rbp), %rdi
leaq -0x4b0(%rbp), %rax
cmpq %rax, %rdi
je 0x72ad
callq 0x4360
jmp 0x72ad
movq %rax, %rbx
movq -0x4e0(%rbp), %rdi
leaq -0x4d0(%rbp), %rax
cmpq %rax, %rdi
je 0x72ca
callq 0x4360
jmp 0x72ca
movq %rax, %rbx
movq -0x500(%rbp), %rdi
leaq -0x4f0(%rbp), %rax
cmpq %rax, %rdi
je 0x72e9
callq 0x4360
jmp 0x72e9
jmp 0x72e6
movq %rax, %rbx
movq -0x520(%rbp), %rdi
leaq -0x510(%rbp), %rax
cmpq %rax, %rdi
je 0x7306
callq 0x4360
jmp 0x7306
movq %rax, %rbx
movq -0x540(%rbp), %rdi
leaq -0x530(%rbp), %rax
cmpq %rax, %rdi
je 0x7323
callq 0x4360
jmp 0x7323
movq %rax, %rbx
movq -0x560(%rbp), %rdi
leaq -0x550(%rbp), %rax
cmpq %rax, %rdi
je 0x7340
callq 0x4360
jmp 0x7340
movq %rax, %rbx
movq -0x580(%rbp), %rdi
leaq -0x570(%rbp), %rax
cmpq %rax, %rdi
je 0x735f
callq 0x4360
jmp 0x735f
jmp 0x735c
movq %rax, %rbx
movq -0x5a0(%rbp), %rdi
leaq -0x590(%rbp), %rax
cmpq %rax, %rdi
je 0x737c
callq 0x4360
jmp 0x737c
movq %rax, %rbx
movq -0x5c0(%rbp), %rdi
leaq -0x5b0(%rbp), %rax
cmpq %rax, %rdi
je 0x7399
callq 0x4360
jmp 0x7399
movq %rax, %rbx
movq -0x5e0(%rbp), %rdi
leaq -0x5d0(%rbp), %rax
cmpq %rax, %rdi
je 0x73b6
callq 0x4360
jmp 0x73b6
movq %rax, %rbx
movq -0x600(%rbp), %rdi
leaq -0x5f0(%rbp), %rax
cmpq %rax, %rdi
je 0x73d5
callq 0x4360
jmp 0x73d5
jmp 0x73d2
movq %rax, %rbx
movq -0x620(%rbp), %rdi
leaq -0x610(%rbp), %rax
cmpq %rax, %rdi
je 0x73f2
callq 0x4360
jmp 0x73f2
movq %rax, %rbx
movq -0x640(%rbp), %rdi
leaq -0x630(%rbp), %rax
cmpq %rax, %rdi
je 0x740f
callq 0x4360
jmp 0x740f
movq %rax, %rbx
movq -0x660(%rbp), %rdi
leaq -0x650(%rbp), %rax
cmpq %rax, %rdi
je 0x742c
callq 0x4360
jmp 0x742c
movq %rax, %rbx
movq -0x680(%rbp), %rdi
leaq -0x670(%rbp), %rax
cmpq %rax, %rdi
je 0x744b
callq 0x4360
jmp 0x744b
jmp 0x7448
movq %rax, %rbx
movq -0x6a0(%rbp), %rdi
leaq -0x690(%rbp), %rax
cmpq %rax, %rdi
je 0x7468
callq 0x4360
jmp 0x7468
movq %rax, %rbx
movq -0x6c0(%rbp), %rdi
leaq -0x6b0(%rbp), %rax
cmpq %rax, %rdi
je 0x7485
callq 0x4360
jmp 0x7485
movq %rax, %rbx
leaq -0x160(%rbp), %rax
movq -0x170(%rbp), %rdi
cmpq %rax, %rdi
je 0x74a2
callq 0x4360
jmp 0x74a2
movq %rax, %rbx
leaq -0x180(%rbp), %rax
movq -0x190(%rbp), %rdi
cmpq %rax, %rdi
je 0x74c1
callq 0x4360
jmp 0x74c1
jmp 0x74be
movq %rax, %rbx
movq -0x6e0(%rbp), %rdi
leaq -0x6d0(%rbp), %rax
cmpq %rax, %rdi
je 0x74de
callq 0x4360
jmp 0x74de
movq %rax, %rbx
movq -0x700(%rbp), %rdi
leaq -0x6f0(%rbp), %rax
cmpq %rax, %rdi
je 0x74fb
callq 0x4360
jmp 0x74fb
movq %rax, %rbx
leaq -0x1a0(%rbp), %rax
movq -0x1b0(%rbp), %rdi
cmpq %rax, %rdi
je 0x7518
callq 0x4360
jmp 0x7518
movq %rax, %rbx
movq -0x880(%rbp), %rdi
cmpq %r13, %rdi
je 0x7530
callq 0x4360
jmp 0x7530
jmp 0x752d
movq %rax, %rbx
movq -0x8a0(%rbp), %rdi
cmpq %r12, %rdi
je 0x7546
callq 0x4360
jmp 0x7546
movq %rax, %rbx
leaq -0x8f0(%rbp), %rdi
callq 0x798a
leaq -0x920(%rbp), %rdi
callq 0x8858
leaq -0x950(%rbp), %rdi
callq 0x88c2
leaq -0x968(%rbp), %r14
movq %r14, %rdi
callq 0x8824
movq -0x20(%r14), %rdi
leaq -0x978(%rbp), %rax
cmpq %rax, %rdi
je 0x758e
callq 0x4360
movq %rbx, %rdi
callq 0x4680