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

    conf::Config config;
    config("usage: 1g-prune [OPTION...] WORDLIST VOCAB_INIT VOCAB_FINAL\n")
      ('h', "help", "", "", "display help")
      ('c', "candidates=INT", "arg", "10000", "Number of subwords to consider for removal per iteration, DEFAULT: 10 000")
      ('r', "removals=INT", "arg", "500", "Number of subwords to remove per iteration, DEFAULT: 500")
      ('m', "min-length=INT", "arg", "2", "Minimum length of subwords to remove, DEFAULT: 2")
      ('v', "vocab-size=INT", "arg must", "", "Target vocabulary size")
      ('s', "stop-list=STRING", "arg", "", "Text file containing subwords that should not be removed")
      ('t', "temp-vocabs=INT", "arg", "0", "Write out intermediate vocabularies for #V mod INT == 0")
      ('f', "forward-backward", "", "", "Use Forward-backward segmentation instead of Viterbi")
      ('8', "utf-8", "", "", "Utf-8 character encoding in use");
    config.default_parse(argc, argv);
    if (config.arguments.size() != 3) config.print_help(stderr, 1);

    flt_type subword_min_lp = -25.0;
    string wordlist_fname = config.arguments[0];
    string vocab_fname = config.arguments[1];
    string out_vocab_fname = config.arguments[2];
    unsigned int n_candidates_per_iter = config["candidates"].get_int();
    unsigned int removals_per_iter = config["removals"].get_int();
    unsigned int min_removal_length = config["min-length"].get_int();
    unsigned int target_vocab_size = config["vocab-size"].get_int();
    unsigned int temp_vocab_interval = config["temp-vocabs"].get_int();
    bool enable_forward_backward = config["forward-backward"].specified;
    bool utf8_encoding = config["utf-8"].specified;

    set<string> stoplist;
    if (config["stop-list"].specified) {
        vector<string> stopstrings;
        Unigrams::read_sents(config["stop-list"].get_str(), stopstrings);
        stoplist.insert(stopstrings.begin(), stopstrings.end());
    }

    cerr << setprecision(15) << std::boolalpha;
    cerr << "parameters, wordlist: " << wordlist_fname << endl;
    cerr << "parameters, initial vocabulary: " << vocab_fname << endl;
    cerr << "parameters, final vocabulary: " << out_vocab_fname << endl;
    cerr << "parameters, candidates per iteration: " << n_candidates_per_iter << endl;
    cerr << "parameters, minimum length for subwords to remove: " << min_removal_length << endl;
    cerr << "parameters, removals per iteration: " << removals_per_iter << endl;
    if (stoplist.size() > 0)
        cerr << "parameters, stoplist with " << stoplist.size() << " subwords" << endl;
    cerr << "parameters, target vocab size: " << target_vocab_size << endl;
    if (temp_vocab_interval > 0)
        cerr << "parameters, write temporary vocabularies whenever #V modulo " << temp_vocab_interval << " == 0" << endl;
    else
        cerr << "parameters, write temp vocabularies: NO" << endl;
    cerr << "parameters, use forward-backward: " << enable_forward_backward << endl;
    cerr << "parameters, utf-8 encoding: " << utf8_encoding << endl;

    int maxlen, word_maxlen;
    set<string> short_subwords;
    map<string, flt_type> vocab;
    map<string, flt_type> freqs;
    map<string, flt_type> words;

    cerr << "Reading vocabulary " << vocab_fname << endl;
    int retval = Unigrams::read_vocab(vocab_fname, vocab, maxlen, utf8_encoding);
    if (retval < 0) {
        cerr << "something went wrong reading vocabulary" << endl;
        exit(EXIT_FAILURE);
    }
    cerr << "\t" << "size: " << vocab.size() << endl;
    cerr << "\t" << "maximum string length: " << maxlen << endl;
    find_short_factors(vocab, short_subwords, min_removal_length, utf8_encoding);

    set<string> stop_union;
    set_union(stoplist.begin(), stoplist.end(),
              short_subwords.begin(), short_subwords.end(),
              inserter(stop_union, stop_union.begin()));
    stoplist = stop_union;

    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;

    Unigrams ug;
    if (enable_forward_backward)
        ug.set_segmentation_method(forward_backward);
    else
        ug.set_segmentation_method(viterbi);
    ug.set_utf8(utf8_encoding);

    flt_type cost = ug.resegment_words(words, vocab, freqs);
    cerr << endl << "Initial likelihood: " << cost << endl;

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

        cerr << "iteration " << itern << endl;
        cerr << "collecting candidate subwords" << endl;
        set<string> candidates;
        ug.init_candidates_by_usage(words, vocab, candidates, n_candidates_per_iter/3, stoplist, min_removal_length);
        ug.init_candidates_by_random(vocab, candidates, (n_candidates_per_iter-candidates.size())/4, stoplist, min_removal_length);
        ug.init_candidates(vocab, candidates, n_candidates_per_iter, stoplist, min_removal_length);

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

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

        // Remove subwords one by one
        unsigned int n_removals = 0;
        for (unsigned int i=0; i<removal_scores.size(); i++) {

            if (removal_scores[i].first.length() == 1) continue;
            // Score most probably went to zero already
            if (vocab.find(removal_scores[i].first) == vocab.end()) continue;
            if (freqs.find(removal_scores[i].first) == freqs.end()) continue;

            vocab.erase(removal_scores[i].first);
            freqs.erase(removal_scores[i].first);
            n_removals++;

            if (temp_vocab_interval > 0 && freqs.size() % temp_vocab_interval == 0) {
                vocab = freqs;
                Unigrams::freqs_to_logprobs(vocab);
                ostringstream vocabfname;
                vocabfname << "iteration_" << itern << "_" << vocab.size() << ".vocab";
                Unigrams::write_vocab(vocabfname.str(), vocab);
            }

            if (n_removals >= removals_per_iter) break;
            if (vocab.size() <= target_vocab_size) break;
        }

        cost = ug.iterate(words, vocab, 1);
        assert_factors(vocab, stoplist, subword_min_lp);

        cerr << "subwords removed in this iteration: " << n_removals << endl;
        cerr << "current vocabulary size: " << vocab.size() << endl;
        cerr << "likelihood after the removals: " << cost << endl;

        itern++;

        if (vocab.size() <= target_vocab_size) {
            cerr << "stopping by min_vocab_size." << endl;
            break;
        }
    }

    Unigrams::write_vocab(out_vocab_fname, vocab);
    exit(EXIT_SUCCESS);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xb18, %rsp            # imm = 0xB18
movq %rsi, %rbx
movl %edi, %r14d
leaq -0x980(%rbp), %rdi
callq 0x8848
leaq 0x204d9(%rip), %rsi     # 0x25032
leaq -0x8c8(%rbp), %rdi
leaq -0xb30(%rbp), %rdx
callq 0x4150
leaq -0x980(%rbp), %rdi
leaq -0x8c8(%rbp), %rsi
callq 0x88b4
movq %rax, %r15
leaq 0x204ee(%rip), %rsi     # 0x25077
leaq -0x8a8(%rbp), %rdi
leaq -0x170(%rbp), %rdx
callq 0x4150
leaq 0x20e14(%rip), %rsi     # 0x259b7
leaq -0x888(%rbp), %rdi
leaq -0x268(%rbp), %rdx
callq 0x4150
leaq 0x20dfa(%rip), %rsi     # 0x259b7
leaq -0x868(%rbp), %rdi
leaq -0x110(%rbp), %rdx
callq 0x4150
leaq 0x20498(%rip), %rsi     # 0x2506f
leaq -0x848(%rbp), %rdi
leaq -0x1a8(%rbp), %rdx
callq 0x4150
pushq $0x68
popq %rsi
leaq -0x8a8(%rbp), %rdx
leaq -0x888(%rbp), %rcx
leaq -0x868(%rbp), %r8
leaq -0x848(%rbp), %r9
movq %r15, %rdi
callq 0x88cc
movq %rax, %r15
leaq 0x20461(%rip), %rsi     # 0x2507c
leaq -0x828(%rbp), %rdi
leaq -0x1d8(%rbp), %rdx
callq 0x4150
leaq 0x20456(%rip), %rsi     # 0x2508b
leaq -0x808(%rbp), %rdi
leaq -0x140(%rbp), %rdx
callq 0x4150
leaq 0x20440(%rip), %rsi     # 0x2508f
leaq -0x7e8(%rbp), %rdi
leaq -0xd0(%rbp), %rdx
callq 0x4150
leaq 0x2042c(%rip), %rsi     # 0x25095
leaq -0x7c8(%rbp), %rdi
leaq -0x218(%rbp), %rdx
callq 0x4150
pushq $0x63
popq %rsi
leaq -0x828(%rbp), %rdx
leaq -0x808(%rbp), %rcx
leaq -0x7e8(%rbp), %r8
leaq -0x7c8(%rbp), %r9
movq %r15, %rdi
callq 0x88cc
movq %rax, %r15
leaq 0x20432(%rip), %rsi     # 0x250df
leaq -0x7a8(%rbp), %rdi
leaq -0x1f8(%rbp), %rdx
callq 0x4150
leaq 0x203c4(%rip), %rsi     # 0x2508b
leaq -0x788(%rbp), %rdi
leaq -0x238(%rbp), %rdx
callq 0x4150
leaq 0x20440(%rip), %rsi     # 0x25121
leaq -0x768(%rbp), %rdi
leaq -0x90(%rbp), %rdx
callq 0x4150
leaq 0x203f1(%rip), %rsi     # 0x250ec
leaq -0x748(%rbp), %rdi
leaq -0xa0(%rbp), %rdx
callq 0x4150
pushq $0x72
popq %rsi
leaq -0x7a8(%rbp), %rdx
leaq -0x788(%rbp), %rcx
leaq -0x768(%rbp), %r8
leaq -0x748(%rbp), %r9
movq %r15, %rdi
callq 0x88cc
movq %rax, %r15
leaq 0x203e6(%rip), %rsi     # 0x25125
leaq -0x728(%rbp), %rdi
leaq -0x74(%rbp), %rdx
callq 0x4150
leaq 0x20335(%rip), %rsi     # 0x2508b
leaq -0x708(%rbp), %rdi
leaq -0x70(%rbp), %rdx
callq 0x4150
leaq 0x203f6(%rip), %rsi     # 0x25163
leaq -0x6e8(%rbp), %rdi
leaq -0x52(%rbp), %rdx
callq 0x4150
leaq 0x203b0(%rip), %rsi     # 0x25134
leaq -0x6c8(%rbp), %rdi
leaq -0x51(%rbp), %rdx
callq 0x4150
pushq $0x6d
popq %rsi
leaq -0x728(%rbp), %rdx
leaq -0x708(%rbp), %rcx
leaq -0x6e8(%rbp), %r8
leaq -0x6c8(%rbp), %r9
movq %r15, %rdi
callq 0x88cc
movq %rax, %r15
leaq 0x203a0(%rip), %rsi     # 0x25165
leaq -0x6a8(%rbp), %rdi
leaq -0x50(%rbp), %rdx
callq 0x4150
leaq 0x20398(%rip), %rsi     # 0x25174
leaq -0x688(%rbp), %rdi
leaq -0x4f(%rbp), %rdx
callq 0x4150
leaq 0x20bc4(%rip), %rsi     # 0x259b7
leaq -0x668(%rbp), %rdi
leaq -0x4e(%rbp), %rdx
callq 0x4150
leaq 0x20373(%rip), %rsi     # 0x2517d
leaq -0x648(%rbp), %rdi
leaq -0x4d(%rbp), %rdx
callq 0x4150
pushq $0x76
popq %rsi
leaq -0x6a8(%rbp), %rdx
leaq -0x688(%rbp), %rcx
leaq -0x668(%rbp), %r8
leaq -0x648(%rbp), %r9
movq %r15, %rdi
callq 0x88cc
movq %rax, %r15
leaq 0x20349(%rip), %rsi     # 0x25194
leaq -0x628(%rbp), %rdi
leaq -0x4c(%rbp), %rdx
callq 0x4150
leaq 0x20229(%rip), %rsi     # 0x2508b
leaq -0x608(%rbp), %rdi
leaq -0x4b(%rbp), %rdx
callq 0x4150
leaq 0x20b3e(%rip), %rsi     # 0x259b7
leaq -0x5e8(%rbp), %rdi
leaq -0x4a(%rbp), %rdx
callq 0x4150
leaq 0x20315(%rip), %rsi     # 0x251a5
leaq -0x5c8(%rbp), %rdi
leaq -0x49(%rbp), %rdx
callq 0x4150
pushq $0x73
popq %rsi
leaq -0x628(%rbp), %rdx
leaq -0x608(%rbp), %rcx
leaq -0x5e8(%rbp), %r8
leaq -0x5c8(%rbp), %r9
movq %r15, %rdi
callq 0x88cc
movq %rax, %r15
leaq 0x2030d(%rip), %rsi     # 0x251de
leaq -0x5a8(%rbp), %rdi
leaq -0x48(%rbp), %rdx
callq 0x4150
leaq 0x201a3(%rip), %rsi     # 0x2508b
leaq -0x588(%rbp), %rdi
leaq -0x47(%rbp), %rdx
callq 0x4150
leaq 0x20325(%rip), %rsi     # 0x25224
leaq -0x568(%rbp), %rdi
leaq -0x46(%rbp), %rdx
callq 0x4150
leaq 0x202d8(%rip), %rsi     # 0x251ee
leaq -0x548(%rbp), %rdi
leaq -0x45(%rbp), %rdx
callq 0x4150
pushq $0x74
popq %rsi
leaq -0x5a8(%rbp), %rdx
leaq -0x588(%rbp), %rcx
leaq -0x568(%rbp), %r8
leaq -0x548(%rbp), %r9
movq %r15, %rdi
callq 0x88cc
movq %rax, %r15
leaq 0x202cf(%rip), %rsi     # 0x25226
leaq -0x528(%rbp), %rdi
leaq -0x44(%rbp), %rdx
callq 0x4150
leaq 0x20a49(%rip), %rsi     # 0x259b7
leaq -0x508(%rbp), %rdi
leaq -0x43(%rbp), %rdx
callq 0x4150
leaq 0x20a32(%rip), %rsi     # 0x259b7
leaq -0x4e8(%rbp), %rdi
leaq -0x42(%rbp), %rdx
callq 0x4150
leaq 0x2029b(%rip), %rsi     # 0x25237
leaq -0x4c8(%rbp), %rdi
leaq -0x41(%rbp), %rdx
callq 0x4150
pushq $0x66
popq %rsi
leaq -0x528(%rbp), %rdx
leaq -0x508(%rbp), %rcx
leaq -0x4e8(%rbp), %r8
leaq -0x4c8(%rbp), %r9
movq %r15, %rdi
callq 0x88cc
movq %rax, %r15
leaq 0x2028f(%rip), %rsi     # 0x2526c
leaq -0x4a8(%rbp), %rdi
leaq -0x40(%rbp), %rdx
callq 0x4150
leaq 0x209c3(%rip), %rsi     # 0x259b7
leaq -0x488(%rbp), %rdi
leaq -0x3f(%rbp), %rdx
callq 0x4150
leaq 0x209ac(%rip), %rsi     # 0x259b7
leaq -0x468(%rbp), %rdi
leaq -0x3e(%rbp), %rdx
callq 0x4150
leaq 0x20250(%rip), %rsi     # 0x25272
leaq -0x448(%rbp), %rdi
leaq -0x3d(%rbp), %rdx
callq 0x4150
pushq $0x38
popq %rsi
leaq -0x4a8(%rbp), %rdx
leaq -0x488(%rbp), %rcx
leaq -0x468(%rbp), %r8
leaq -0x448(%rbp), %r9
movq %r15, %rdi
callq 0x88cc
leaq -0x448(%rbp), %rdi
callq 0x46e8
leaq -0x468(%rbp), %rdi
callq 0x46e8
leaq -0x488(%rbp), %rdi
callq 0x46e8
leaq -0x4a8(%rbp), %rdi
callq 0x46e8
leaq -0x4c8(%rbp), %rdi
callq 0x46e8
leaq -0x4e8(%rbp), %rdi
callq 0x46e8
leaq -0x508(%rbp), %rdi
callq 0x46e8
leaq -0x528(%rbp), %rdi
callq 0x46e8
leaq -0x548(%rbp), %rdi
callq 0x46e8
leaq -0x568(%rbp), %rdi
callq 0x46e8
leaq -0x588(%rbp), %rdi
callq 0x46e8
leaq -0x5a8(%rbp), %rdi
callq 0x46e8
leaq -0x5c8(%rbp), %rdi
callq 0x46e8
leaq -0x5e8(%rbp), %rdi
callq 0x46e8
leaq -0x608(%rbp), %rdi
callq 0x46e8
leaq -0x628(%rbp), %rdi
callq 0x46e8
leaq -0x648(%rbp), %rdi
callq 0x46e8
leaq -0x668(%rbp), %rdi
callq 0x46e8
leaq -0x688(%rbp), %rdi
callq 0x46e8
leaq -0x6a8(%rbp), %rdi
callq 0x46e8
leaq -0x6c8(%rbp), %rdi
callq 0x46e8
leaq -0x6e8(%rbp), %rdi
callq 0x46e8
leaq -0x708(%rbp), %rdi
callq 0x46e8
leaq -0x728(%rbp), %rdi
callq 0x46e8
leaq -0x748(%rbp), %rdi
callq 0x46e8
leaq -0x768(%rbp), %rdi
callq 0x46e8
leaq -0x788(%rbp), %rdi
callq 0x46e8
leaq -0x7a8(%rbp), %rdi
callq 0x46e8
leaq -0x7c8(%rbp), %rdi
callq 0x46e8
leaq -0x7e8(%rbp), %rdi
callq 0x46e8
leaq -0x808(%rbp), %rdi
callq 0x46e8
leaq -0x828(%rbp), %rdi
callq 0x46e8
leaq -0x848(%rbp), %rdi
callq 0x46e8
leaq -0x868(%rbp), %rdi
callq 0x46e8
leaq -0x888(%rbp), %rdi
callq 0x46e8
leaq -0x8a8(%rbp), %rdi
callq 0x46e8
leaq -0x8c8(%rbp), %rdi
callq 0x46e8
leaq -0x980(%rbp), %rdi
movl %r14d, %esi
movq %rbx, %rdx
callq 0x9132
movq -0x8e8(%rbp), %rsi
movq -0x8e0(%rbp), %rax
subq %rsi, %rax
cmpq $0x60, %rax
je 0x525e
movq 0x31d7b(%rip), %rax     # 0x36fc0
movq (%rax), %rsi
leaq -0x980(%rbp), %rdi
pushq $0x1
popq %rdx
callq 0x961a
movq -0x8e8(%rbp), %rsi
leaq -0x218(%rbp), %rdi
callq 0x4480
movq -0x8e8(%rbp), %rsi
addq $0x20, %rsi
leaq -0x1f8(%rbp), %rdi
callq 0x4480
movq -0x8e8(%rbp), %rsi
addq $0x40, %rsi
leaq -0x238(%rbp), %rdi
callq 0x4480
leaq 0x1fff3(%rip), %rsi     # 0x25292
leaq -0x428(%rbp), %rdi
leaq -0xb30(%rbp), %rdx
callq 0x4150
leaq -0x980(%rbp), %rdi
leaq -0x428(%rbp), %rsi
callq 0x91d2
movq %rax, %rdi
callq 0x8718
movl %eax, -0x3c(%rbp)
leaq -0x428(%rbp), %rdi
callq 0x46e8
leaq 0x1ffba(%rip), %rsi     # 0x2529d
leaq -0x408(%rbp), %rdi
leaq -0xb30(%rbp), %rdx
callq 0x4150
leaq -0x980(%rbp), %rdi
leaq -0x408(%rbp), %rsi
callq 0x91d2
movq %rax, %rdi
callq 0x8718
movl %eax, -0x6c(%rbp)
leaq -0x408(%rbp), %rdi
callq 0x46e8
leaq 0x1ff7f(%rip), %rsi     # 0x252a6
leaq -0x3e8(%rbp), %rdi
leaq -0xb30(%rbp), %rdx
callq 0x4150
leaq -0x980(%rbp), %rdi
leaq -0x3e8(%rbp), %rsi
callq 0x91d2
movq %rax, %rdi
callq 0x8718
movl %eax, -0x38(%rbp)
leaq -0x3e8(%rbp), %rdi
callq 0x46e8
leaq 0x1ff46(%rip), %rsi     # 0x252b1
leaq -0x3c8(%rbp), %rdi
leaq -0xb30(%rbp), %rdx
callq 0x4150
leaq -0x980(%rbp), %rdi
leaq -0x3c8(%rbp), %rsi
callq 0x91d2
movq %rax, %rdi
callq 0x8718
movl %eax, %ebx
leaq -0x3c8(%rbp), %rdi
callq 0x46e8
leaq 0x1ff0e(%rip), %rsi     # 0x252bc
leaq -0x3a8(%rbp), %rdi
leaq -0xb30(%rbp), %rdx
callq 0x4150
leaq -0x980(%rbp), %rdi
leaq -0x3a8(%rbp), %rsi
callq 0x91d2
movq %rax, %rdi
callq 0x8718
movl %eax, -0x68(%rbp)
leaq -0x3a8(%rbp), %rdi
callq 0x46e8
leaq 0x1fe34(%rip), %rsi     # 0x25226
leaq -0x388(%rbp), %rdi
leaq -0xb30(%rbp), %rdx
callq 0x4150
leaq -0x980(%rbp), %rdi
leaq -0x388(%rbp), %rsi
callq 0x91d2
movb 0x4a(%rax), %al
movb %al, -0x34(%rbp)
leaq -0x388(%rbp), %rdi
callq 0x46e8
leaq 0x1fe3b(%rip), %rsi     # 0x2526c
leaq -0x368(%rbp), %rdi
leaq -0xb30(%rbp), %rdx
callq 0x4150
leaq -0x980(%rbp), %rdi
leaq -0x368(%rbp), %rsi
callq 0x91d2
movb 0x4a(%rax), %al
movb %al, -0x30(%rbp)
leaq -0x368(%rbp), %rdi
callq 0x46e8
leaq -0x168(%rbp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq 0x1fe3c(%rip), %rsi     # 0x252c8
leaq -0x348(%rbp), %rdi
leaq -0xb30(%rbp), %rdx
callq 0x4150
leaq -0x980(%rbp), %rdi
leaq -0x348(%rbp), %rsi
callq 0x91d2
movb 0x4a(%rax), %r14b
leaq -0x348(%rbp), %rdi
callq 0x46e8
cmpb $0x1, %r14b
jne 0x5573
xorps %xmm0, %xmm0
movaps %xmm0, -0xb30(%rbp)
andq $0x0, -0xb20(%rbp)
leaq 0x1fde3(%rip), %rsi     # 0x252c8
leaq -0x308(%rbp), %rdi
leaq -0x268(%rbp), %rdx
callq 0x4150
leaq -0x980(%rbp), %rdi
leaq -0x308(%rbp), %rsi
callq 0x91d2
movq %rax, %rdi
callq 0x8834
leaq -0x328(%rbp), %rdi
movq %rax, %rsi
callq 0x4480
leaq -0x328(%rbp), %rdi
leaq -0xb30(%rbp), %rsi
callq 0x1df1e
leaq -0x328(%rbp), %rdi
callq 0x46e8
leaq -0x308(%rbp), %rdi
callq 0x46e8
movq -0xb30(%rbp), %rsi
movq -0xb28(%rbp), %rdx
leaq -0x170(%rbp), %rdi
callq 0x789a
leaq -0xb30(%rbp), %rdi
callq 0x65d6
movq 0x31a6e(%rip), %rdi     # 0x36fe8
movq (%rdi), %rax
movq -0x18(%rax), %rcx
movq $0xf, 0x8(%rdi,%rcx)
movq -0x18(%rax), %rax
orl $0x1, 0x18(%rdi,%rax)
leaq 0x1fd38(%rip), %rsi     # 0x252d2
callq 0x4350
leaq -0x218(%rbp), %rsi
movq %rax, %rdi
callq 0x4310
movq %rax, %rdi
callq 0x4190
movq 0x31a2b(%rip), %rdi     # 0x36fe8
leaq 0x1fd25(%rip), %rsi     # 0x252e9
callq 0x4350
leaq -0x1f8(%rbp), %rsi
movq %rax, %rdi
callq 0x4310
movq %rax, %rdi
callq 0x4190
movq 0x31a01(%rip), %rdi     # 0x36fe8
leaq 0x1fd1c(%rip), %rsi     # 0x2530a
callq 0x4350
leaq -0x238(%rbp), %rsi
movq %rax, %rdi
callq 0x4310
movq %rax, %rdi
callq 0x4190
movq 0x319d7(%rip), %rdi     # 0x36fe8
leaq 0x1fd11(%rip), %rsi     # 0x25329
callq 0x4350
movl -0x3c(%rbp), %esi
movq %rax, %rdi
movq %rsi, -0x178(%rbp)
callq 0x4260
movq %rax, %rdi
callq 0x4190
movq 0x319aa(%rip), %rdi     # 0x36fe8
leaq 0x1fd0b(%rip), %rsi     # 0x25350
callq 0x4350
movl -0x38(%rbp), %esi
movq %rax, %rdi
movq %rsi, -0x60(%rbp)
callq 0x4260
movq %rax, %rdi
callq 0x4190
movq 0x31980(%rip), %rdi     # 0x36fe8
leaq 0x1fd15(%rip), %rsi     # 0x25384
callq 0x4350
movl -0x6c(%rbp), %esi
movq %rax, %rdi
callq 0x4260
movq %rax, %rdi
callq 0x4190
cmpq $0x0, -0x148(%rbp)
je 0x56ca
movq 0x31950(%rip), %rdi     # 0x36fe8
leaq 0x1fd0a(%rip), %rsi     # 0x253a9
callq 0x4350
movq -0x148(%rbp), %rsi
movq %rax, %rdi
callq 0x4260
leaq 0x1fee5(%rip), %rsi     # 0x2559f
movq %rax, %rdi
callq 0x4350
movq %rax, %rdi
callq 0x4190
movq 0x31917(%rip), %r14     # 0x36fe8
leaq 0x1fcec(%rip), %rsi     # 0x253c4
movq %r14, %rdi
callq 0x4350
movl %ebx, %esi
movq %rax, %rdi
movq %rsi, -0xe0(%rbp)
callq 0x4260
movq %rax, %rdi
callq 0x4190
movl -0x68(%rbp), %eax
movl %eax, %ecx
movq %rcx, -0xd8(%rbp)
testl %eax, %eax
jne 0x5712
leaq 0x1fd11(%rip), %rsi     # 0x25421
jmp 0x573e
movq 0x318cf(%rip), %rdi     # 0x36fe8
leaq 0x1fcc4(%rip), %rsi     # 0x253e4
callq 0x4350
movq %rax, %rdi
movq -0xd8(%rbp), %rsi
callq 0x4260
movq %rax, %r14
leaq 0x1fae2(%rip), %rsi     # 0x25220
movq %r14, %rdi
callq 0x4350
movq %rax, %rdi
callq 0x4190
movq 0x31893(%rip), %rdi     # 0x36fe8
leaq 0x1fced(%rip), %rsi     # 0x25449
callq 0x4350
movzbl -0x34(%rbp), %esi
movq %rax, %rdi
callq 0x45a0
movq %rax, %rdi
callq 0x4190
movq 0x3186c(%rip), %rdi     # 0x36fe8
leaq 0x1fce9(%rip), %rsi     # 0x2546c
callq 0x4350
movzbl -0x30(%rbp), %esi
movq %rax, %rdi
movl %esi, -0x64(%rbp)
callq 0x45a0
movq %rax, %rdi
callq 0x4190
leaq -0x260(%rbp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq -0x108(%rbp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq -0x1a0(%rbp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq -0x1d0(%rbp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
movq 0x317d2(%rip), %rdi     # 0x36fe8
leaq 0x1fc6c(%rip), %rsi     # 0x25489
callq 0x4350
leaq -0x1f8(%rbp), %rsi
movq %rax, %rdi
callq 0x4310
movq %rax, %rdi
callq 0x4190
leaq -0x2e8(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
callq 0x4480
leaq -0x2e8(%rbp), %rdi
leaq -0x110(%rbp), %rsi
leaq -0x74(%rbp), %rdx
movl -0x64(%rbp), %ecx
callq 0x1d8ea
movl %eax, %ebx
leaq -0x2e8(%rbp), %rdi
callq 0x46e8
testl %ebx, %ebx
jns 0x5898
movq 0x31769(%rip), %rdi     # 0x36fe8
leaq 0x1fc17(%rip), %rsi     # 0x2549d
callq 0x4350
movq %rax, %rdi
callq 0x4190
jmp 0x5b25
movq 0x31749(%rip), %rdi     # 0x36fe8
leaq 0x20110(%rip), %rsi     # 0x259b6
callq 0x4350
leaq 0x1fb2b(%rip), %rsi     # 0x253dd
movq %rax, %rdi
callq 0x4350
movq -0xe8(%rbp), %rsi
movq %rax, %rdi
callq 0x4260
movq %rax, %rdi
callq 0x4190
movq 0x31710(%rip), %rdi     # 0x36fe8
leaq 0x200d7(%rip), %rsi     # 0x259b6
callq 0x4350
leaq 0x1fbda(%rip), %rsi     # 0x254c5
movq %rax, %rdi
callq 0x4350
movl -0x74(%rbp), %esi
movq %rax, %rdi
callq 0x4600
movq %rax, %rdi
callq 0x4190
movq -0xf8(%rbp), %rbx
leaq -0x140(%rbp), %r12
leaq -0xb30(%rbp), %r15
leaq -0xd0(%rbp), %r14
leaq -0x108(%rbp), %rax
cmpq %rax, %rbx
je 0x5a49
andq $0x0, -0x130(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x140(%rbp)
leaq 0x20(%rbx), %r13
cmpb $0x0, -0x30(%rbp)
je 0x59af
andl $0x0, -0xb30(%rbp)
movq %r12, %rdi
movq %r15, %rsi
callq 0x66a0
andl $0x0, -0xb30(%rbp)
xorl %eax, %eax
movl %eax, %eax
cmpq %rax, 0x28(%rbx)
jbe 0x5a07
movq (%r13), %rcx
movb (%rcx,%rax), %dl
pushq $0x1
popq %rcx
testb %dl, %dl
jns 0x5994
pushq $0x4
popq %rcx
cmpb $-0x11, %dl
ja 0x5994
cmpb $-0x20, %dl
pushq $0x2
popq %rcx
sbbl $-0x1, %ecx
addl %ecx, %eax
movl %eax, -0xb30(%rbp)
movq %r12, %rdi
movq %r15, %rsi
callq 0x667a
movl -0xb30(%rbp), %eax
jmp 0x5969
movq %r15, %rdi
movq %r13, %rsi
callq 0x4480
movq -0x140(%rbp), %rax
cmpq %rax, -0x138(%rbp)
je 0x59d1
movq %rax, -0x138(%rbp)
xorl %eax, %eax
movl %eax, -0xd0(%rbp)
movl %eax, %eax
movq -0xb28(%rbp), %rcx
incq %rcx
cmpq %rax, %rcx
jbe 0x59ff
movq %r12, %rdi
movq %r14, %rsi
callq 0x667a
movl -0xd0(%rbp), %eax
incl %eax
jmp 0x59d3
movq %r15, %rdi
callq 0x46e8
movq -0x138(%rbp), %rax
subq -0x140(%rbp), %rax
sarq $0x2, %rax
decq %rax
cmpq -0x60(%rbp), %rax
jae 0x5a31
leaq -0x268(%rbp), %rdi
movq %r13, %rsi
callq 0x68da
movq %r12, %rdi
callq 0x6b0a
movq %rbx, %rdi
callq 0x43c0
movq %rax, %rbx
jmp 0x5922
leaq -0x138(%rbp), %r9
andl $0x0, (%r9)
andq $0x0, 0x8(%r9)
movq %r9, 0x10(%r9)
movq %r9, 0x18(%r9)
andq $0x0, 0x20(%r9)
movq -0x158(%rbp), %rdi
movq -0x250(%rbp), %rdx
leaq -0x140(%rbp), %r8
leaq -0x168(%rbp), %rsi
leaq -0x260(%rbp), %rcx
callq 0x7b2d
leaq -0x170(%rbp), %rdi
leaq -0x140(%rbp), %rsi
callq 0x6b1e
movq 0x31540(%rip), %rdi     # 0x36fe8
leaq 0x1fa2e(%rip), %rsi     # 0x254dd
callq 0x4350
leaq -0x218(%rbp), %rsi
movq %rax, %rdi
callq 0x4310
movq %rax, %rdi
callq 0x4190
leaq -0x2c8(%rbp), %rdi
leaq -0x218(%rbp), %rsi
callq 0x4480
leaq -0x2c8(%rbp), %rdi
leaq -0x1d8(%rbp), %rsi
leaq -0x70(%rbp), %rdx
movl -0x64(%rbp), %ecx
callq 0x1d8ea
movl %eax, %ebx
leaq -0x2c8(%rbp), %rdi
callq 0x46e8
testl %ebx, %ebx
jns 0x5b2d
movq 0x314d7(%rip), %rdi     # 0x36fe8
leaq 0x1f9d8(%rip), %rsi     # 0x254f0
callq 0x4350
movq %rax, %rdi
callq 0x4190
pushq $0x1
popq %rdi
callq 0x43d0
movq 0x314b4(%rip), %rdi     # 0x36fe8
leaq 0x1fe7b(%rip), %rsi     # 0x259b6
callq 0x4350
leaq 0x1f9d0(%rip), %rsi     # 0x25517
movq %rax, %rdi
callq 0x4350
movq -0x1b0(%rbp), %rsi
movq %rax, %rdi
callq 0x4260
movq %rax, %rdi
callq 0x4190
movq 0x3147b(%rip), %rdi     # 0x36fe8
leaq 0x1fe42(%rip), %rsi     # 0x259b6
callq 0x4350
leaq 0x1f9a7(%rip), %rsi     # 0x25527
movq %rax, %rdi
callq 0x4350
movl -0x70(%rbp), %esi
movq %rax, %rdi
callq 0x4600
movq %rax, %rdi
callq 0x4190
cmpb $0x0, -0x34(%rbp)
je 0x5baa
leaq 0x12446(%rip), %rax     # 0x17fee
jmp 0x5bb1
leaq 0x11f99(%rip), %rax     # 0x17b4a
leaq -0xa0(%rbp), %rdi
movq %rax, (%rdi)
movb -0x30(%rbp), %al
movb %al, 0x8(%rdi)
leaq -0x9a8(%rbp), %rax
xorps %xmm0, %xmm0
movaps %xmm0, -0x8(%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq -0x1d8(%rbp), %rsi
leaq -0x110(%rbp), %rdx
leaq -0x1a8(%rbp), %rcx
leaq -0x9b0(%rbp), %r8
callq 0x1e13c
movsd %xmm0, -0x30(%rbp)
leaq -0x9b0(%rbp), %rdi
callq 0x6e54
movq 0x313ce(%rip), %rdi     # 0x36fe8
callq 0x4190
leaq 0x1f917(%rip), %rsi     # 0x2553d
movq %rax, %rdi
callq 0x4350
movq %rax, %rdi
movsd -0x30(%rbp), %xmm0
callq 0x4560
movq %rax, %rdi
callq 0x4190
movq 0x3139e(%rip), %rdi     # 0x36fe8
callq 0x4190
leaq 0x1f8fc(%rip), %rsi     # 0x25552
movq %rax, %rdi
callq 0x4350
movq %rax, %rdi
callq 0x4190
pushq $0x3
popq %rcx
movl -0x3c(%rbp), %eax
xorl %edx, %edx
divl %ecx
movl %eax, -0x34(%rbp)
pushq $0x1
popq %rax
leaq -0x110(%rbp), %r12
pushq $0x28
popq %rbx
movl %eax, -0x30(%rbp)
movq 0x3135e(%rip), %rdi     # 0x36fe8
leaq 0x1f8ef(%rip), %rsi     # 0x25580
callq 0x4350
movq %rax, %rdi
movl -0x30(%rbp), %esi
callq 0x4600
movq %rax, %rdi
callq 0x4190
movq 0x31338(%rip), %rdi     # 0x36fe8
leaq 0x1f8d4(%rip), %rsi     # 0x2558b
callq 0x4350
movq %rax, %rdi
callq 0x4190
andl $0x0, -0xc8(%rbp)
andq $0x0, -0xc0(%rbp)
leaq -0xc8(%rbp), %rax
movq %rax, -0xb8(%rbp)
movq %rax, -0xb0(%rbp)
andq $0x0, -0xa8(%rbp)
movl -0x38(%rbp), %eax
movl %eax, (%rsp)
leaq -0xa0(%rbp), %rdi
leaq -0x1d8(%rbp), %rsi
movq %r12, %rdx
leaq -0xd0(%rbp), %rcx
movl -0x34(%rbp), %r8d
leaq -0x170(%rbp), %r9
movsd 0x1f2e7(%rip), %xmm0    # 0x25008
callq 0x1eb4a
movq -0x178(%rbp), %rcx
subq -0xa8(%rbp), %rcx
shrq $0x2, %rcx
leaq -0xa0(%rbp), %rdi
movq %r12, %rsi
leaq -0xd0(%rbp), %rdx
leaq -0x170(%rbp), %r8
movl -0x38(%rbp), %r9d
callq 0x1e9d0
leaq -0xa0(%rbp), %rdi
movq %r12, %rsi
leaq -0xd0(%rbp), %rdx
movl -0x3c(%rbp), %ecx
leaq -0x170(%rbp), %r8
movl -0x38(%rbp), %r9d
callq 0x1e88c
movq 0x31264(%rip), %rdi     # 0x36fe8
leaq 0x1f81e(%rip), %rsi     # 0x255a9
callq 0x4350
movq -0xa8(%rbp), %rsi
movq %rax, %rdi
callq 0x4260
movq %rax, %rdi
leaq 0x1fb0f(%rip), %rsi     # 0x258b8
callq 0x4350
movq %rax, %rdi
callq 0x4190
xorps %xmm0, %xmm0
movaps %xmm0, -0x90(%rbp)
andq $0x0, -0x80(%rbp)
leaq -0xa0(%rbp), %rdi
leaq -0x1d8(%rbp), %rsi
movq %r12, %rdx
leaq -0xd0(%rbp), %rcx
leaq -0x1a8(%rbp), %r8
leaq -0x90(%rbp), %r9
callq 0x1ed88
movsd %xmm0, -0x60(%rbp)
movq 0x311ec(%rip), %rdi     # 0x36fe8
leaq 0x1f7c3(%rip), %rsi     # 0x255c6
callq 0x4350
movq %rax, %rdi
movsd -0x60(%rbp), %xmm0
callq 0x4560
movq %rax, %rdi
callq 0x4190
xorl %r14d, %r14d
xorl %r15d, %r15d
movl %r15d, %r15d
movq -0x90(%rbp), %rsi
movq -0x88(%rbp), %rax
subq %rsi, %rax
cqto
idivq %rbx
cmpq %r15, %rax
jbe 0x5fb7
imulq $0x28, %r15, %r13
cmpq $0x1, 0x8(%rsi,%r13)
je 0x5faf
addq %r13, %rsi
movq %r12, %rdi
callq 0x7852
leaq -0x108(%rbp), %rcx
cmpq %rcx, %rax
je 0x5faf
movq -0x90(%rbp), %rsi
addq %r13, %rsi
leaq -0x1a8(%rbp), %rdi
callq 0x7852
leaq -0x1a0(%rbp), %rcx
cmpq %rcx, %rax
je 0x5faf
movq -0x90(%rbp), %rsi
addq %r13, %rsi
movq %r12, %rdi
callq 0x7d1c
addq -0x90(%rbp), %r13
leaq -0x1a8(%rbp), %rdi
movq %r13, %rsi
callq 0x7d1c
cmpl $0x0, -0x68(%rbp)
je 0x5f96
movq -0x180(%rbp), %rax
xorl %edx, %edx
divq -0xd8(%rbp)
testq %rdx, %rdx
jne 0x5f96
movq %r12, %rdi
leaq -0x1a8(%rbp), %rsi
callq 0x6e6c
movq %r12, %rdi
movsd 0x1f115(%rip), %xmm0    # 0x25010
callq 0x1e1e2
leaq -0xb30(%rbp), %rdi
callq 0x4470
leaq -0xb30(%rbp), %rdi
leaq 0x1f6da(%rip), %rsi     # 0x255f4
callq 0x4350
movq %rax, %rdi
movl -0x30(%rbp), %esi
callq 0x4600
movq %rax, %rdi
leaq 0x1f6c9(%rip), %rsi     # 0x255fd
callq 0x4350
movq -0xe8(%rbp), %rsi
movq %rax, %rdi
callq 0x4260
movq %rax, %rdi
leaq 0x1f6ad(%rip), %rsi     # 0x255ff
callq 0x4350
leaq -0x2a8(%rbp), %rdi
leaq -0xb28(%rbp), %rsi
callq 0x4540
leaq -0x2a8(%rbp), %rdi
movq %r12, %rsi
xorl %edx, %edx
pushq $0x6
popq %rcx
callq 0x1dc68
leaq -0x2a8(%rbp), %rdi
callq 0x46e8
leaq -0xb30(%rbp), %rdi
callq 0x40d0
incl %r14d
cmpl -0x6c(%rbp), %r14d
jae 0x5fb7
movq -0xe0(%rbp), %rax
cmpq %rax, -0xe8(%rbp)
jbe 0x5fb7
incl %r15d
jmp 0x5e23
leaq -0xa0(%rbp), %rdi
leaq -0x1d8(%rbp), %rsi
movq %r12, %rdx
pushq $0x1
popq %rcx
callq 0x1e04a
movsd %xmm0, -0x60(%rbp)
movq -0x158(%rbp), %r13
leaq -0x168(%rbp), %rax
cmpq %rax, %r13
je 0x6028
leaq 0x20(%r13), %r15
movq %r12, %rdi
movq %r15, %rsi
callq 0x7852
leaq -0x108(%rbp), %rcx
cmpq %rcx, %rax
jne 0x601b
movq %r12, %rdi
movq %r15, %rsi
callq 0x7274
movabsq $-0x3fc7000000000000, %rcx # imm = 0xC039000000000000
movq %rcx, (%rax)
movq %r13, %rdi
callq 0x43c0
movq %rax, %r13
jmp 0x5fdc
movq 0x30fb9(%rip), %rdi     # 0x36fe8
leaq 0x1f5d0(%rip), %rsi     # 0x25606
callq 0x4350
movl %r14d, %esi
movq %rax, %rdi
callq 0x4260
movq %rax, %rdi
callq 0x4190
movq 0x30f93(%rip), %rdi     # 0x36fe8
leaq 0x1f5cf(%rip), %rsi     # 0x2562b
callq 0x4350
movq -0xe8(%rbp), %rsi
movq %rax, %rdi
callq 0x4260
movq %rax, %rdi
callq 0x4190
movq 0x30f69(%rip), %rdi     # 0x36fe8
leaq 0x1f5bf(%rip), %rsi     # 0x25645
callq 0x4350
movq %rax, %rdi
movsd -0x60(%rbp), %xmm0
callq 0x4560
movq %rax, %rdi
callq 0x4190
movq -0xe0(%rbp), %rax
cmpq %rax, -0xe8(%rbp)
jbe 0x60d0
incl -0x30(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x6602
leaq -0xd0(%rbp), %rdi
callq 0x6e54
jmp 0x5c83
movq 0x30f11(%rip), %rdi     # 0x36fe8
leaq 0x1f587(%rip), %rsi     # 0x25665
callq 0x4350
movq %rax, %rdi
callq 0x4190
leaq -0x90(%rbp), %rdi
callq 0x6602
leaq -0xd0(%rbp), %rdi
callq 0x6e54
leaq -0x288(%rbp), %rdi
leaq -0x238(%rbp), %rsi
callq 0x4480
leaq -0x288(%rbp), %rdi
leaq -0x110(%rbp), %rsi
pushq $0x6
popq %rcx
xorl %edx, %edx
callq 0x1dc68
leaq -0x288(%rbp), %rdi
callq 0x46e8
xorl %edi, %edi
callq 0x43d0
movq %rax, %rbx
leaq -0x288(%rbp), %rdi
jmp 0x61c0
jmp 0x61b1
jmp 0x617f
jmp 0x617f
jmp 0x617f
movq %rax, %rbx
leaq -0x2a8(%rbp), %rdi
callq 0x46e8
jmp 0x6169
movq %rax, %rbx
leaq -0xb30(%rbp), %rdi
callq 0x40d0
jmp 0x6182
jmp 0x617f
jmp 0x617f
jmp 0x617f
jmp 0x617f
movq %rax, %rbx
leaq -0x90(%rbp), %rdi
callq 0x6602
jmp 0x6193
movq %rax, %rbx
leaq -0xd0(%rbp), %rdi
jmp 0x61aa
jmp 0x61b1
jmp 0x61b1
movq %rax, %rbx
leaq -0x9b0(%rbp), %rdi
callq 0x6e54
jmp 0x61c5
movq %rax, %rbx
jmp 0x61c5
movq %rax, %rbx
leaq -0x2c8(%rbp), %rdi
callq 0x46e8
leaq -0x140(%rbp), %rdi
callq 0x6e54
jmp 0x620d
jmp 0x61e6
movq %rax, %rbx
leaq -0xb30(%rbp), %rdi
callq 0x46e8
jmp 0x61e9
movq %rax, %rbx
leaq -0x140(%rbp), %rdi
callq 0x6b0a
jmp 0x620d
jmp 0x620a
movq %rax, %rbx
leaq -0x2e8(%rbp), %rdi
callq 0x46e8
jmp 0x620d
movq %rax, %rbx
leaq -0x1d8(%rbp), %rdi
callq 0x7694
leaq -0x1a8(%rbp), %rdi
callq 0x7694
leaq -0x110(%rbp), %rdi
callq 0x7694
leaq -0x268(%rbp), %rdi
callq 0x6e54
jmp 0x628a
jmp 0x6287
jmp 0x6265
movq %rax, %rbx
leaq -0x328(%rbp), %rdi
callq 0x46e8
jmp 0x6257
movq %rax, %rbx
leaq -0x308(%rbp), %rdi
callq 0x46e8
jmp 0x6268
movq %rax, %rbx
leaq -0xb30(%rbp), %rdi
callq 0x65d6
jmp 0x628a
movq %rax, %rbx
leaq -0x348(%rbp), %rdi
callq 0x46e8
jmp 0x628a
movq %rax, %rbx
leaq -0x170(%rbp), %rdi
callq 0x6e54
jmp 0x6300
movq %rax, %rbx
leaq -0x368(%rbp), %rdi
jmp 0x62f6
jmp 0x62fd
movq %rax, %rbx
leaq -0x388(%rbp), %rdi
jmp 0x62f6
jmp 0x62fd
movq %rax, %rbx
leaq -0x3a8(%rbp), %rdi
jmp 0x62f6
jmp 0x62fd
movq %rax, %rbx
leaq -0x3c8(%rbp), %rdi
jmp 0x62f6
jmp 0x62fd
movq %rax, %rbx
leaq -0x3e8(%rbp), %rdi
jmp 0x62f6
jmp 0x62fd
movq %rax, %rbx
leaq -0x408(%rbp), %rdi
jmp 0x62f6
jmp 0x62fd
movq %rax, %rbx
leaq -0x428(%rbp), %rdi
callq 0x46e8
jmp 0x6300
movq %rax, %rbx
leaq -0x238(%rbp), %rdi
callq 0x46e8
jmp 0x6311
movq %rax, %rbx
leaq -0x1f8(%rbp), %rdi
callq 0x46e8
jmp 0x6322
movq %rax, %rbx
leaq -0x218(%rbp), %rdi
jmp 0x65b8
jmp 0x65bf
jmp 0x65bf
movq %rax, %rbx
leaq -0x448(%rbp), %rdi
callq 0x46e8
jmp 0x634c
movq %rax, %rbx
leaq -0x468(%rbp), %rdi
callq 0x46e8
jmp 0x635d
movq %rax, %rbx
leaq -0x488(%rbp), %rdi
callq 0x46e8
jmp 0x636e
movq %rax, %rbx
leaq -0x4a8(%rbp), %rdi
callq 0x46e8
jmp 0x6381
jmp 0x637e
movq %rax, %rbx
leaq -0x4c8(%rbp), %rdi
callq 0x46e8
jmp 0x6392
movq %rax, %rbx
leaq -0x4e8(%rbp), %rdi
callq 0x46e8
jmp 0x63a3
movq %rax, %rbx
leaq -0x508(%rbp), %rdi
callq 0x46e8
jmp 0x63b4
movq %rax, %rbx
leaq -0x528(%rbp), %rdi
callq 0x46e8
jmp 0x63c7
jmp 0x63c4
movq %rax, %rbx
leaq -0x548(%rbp), %rdi
callq 0x46e8
jmp 0x63d8
movq %rax, %rbx
leaq -0x568(%rbp), %rdi
callq 0x46e8
jmp 0x63e9
movq %rax, %rbx
leaq -0x588(%rbp), %rdi
callq 0x46e8
jmp 0x63fa
movq %rax, %rbx
leaq -0x5a8(%rbp), %rdi
callq 0x46e8
jmp 0x640d
jmp 0x640a
movq %rax, %rbx
leaq -0x5c8(%rbp), %rdi
callq 0x46e8
jmp 0x641e
movq %rax, %rbx
leaq -0x5e8(%rbp), %rdi
callq 0x46e8
jmp 0x642f
movq %rax, %rbx
leaq -0x608(%rbp), %rdi
callq 0x46e8
jmp 0x6440
movq %rax, %rbx
leaq -0x628(%rbp), %rdi
callq 0x46e8
jmp 0x6453
jmp 0x6450
movq %rax, %rbx
leaq -0x648(%rbp), %rdi
callq 0x46e8
jmp 0x6464
movq %rax, %rbx
leaq -0x668(%rbp), %rdi
callq 0x46e8
jmp 0x6475
movq %rax, %rbx
leaq -0x688(%rbp), %rdi
callq 0x46e8
jmp 0x6486
movq %rax, %rbx
leaq -0x6a8(%rbp), %rdi
callq 0x46e8
jmp 0x6499
jmp 0x6496
movq %rax, %rbx
leaq -0x6c8(%rbp), %rdi
callq 0x46e8
jmp 0x64aa
movq %rax, %rbx
leaq -0x6e8(%rbp), %rdi
callq 0x46e8
jmp 0x64bb
movq %rax, %rbx
leaq -0x708(%rbp), %rdi
callq 0x46e8
jmp 0x64cc
movq %rax, %rbx
leaq -0x728(%rbp), %rdi
callq 0x46e8
jmp 0x64df
jmp 0x64dc
movq %rax, %rbx
leaq -0x748(%rbp), %rdi
callq 0x46e8
jmp 0x64f0
movq %rax, %rbx
leaq -0x768(%rbp), %rdi
callq 0x46e8
jmp 0x6501
movq %rax, %rbx
leaq -0x788(%rbp), %rdi
callq 0x46e8
jmp 0x6512
movq %rax, %rbx
leaq -0x7a8(%rbp), %rdi
callq 0x46e8
jmp 0x6525
jmp 0x6522
movq %rax, %rbx
leaq -0x7c8(%rbp), %rdi
callq 0x46e8
jmp 0x6536
movq %rax, %rbx
leaq -0x7e8(%rbp), %rdi
callq 0x46e8
jmp 0x6547
movq %rax, %rbx
leaq -0x808(%rbp), %rdi
callq 0x46e8
jmp 0x6558
movq %rax, %rbx
leaq -0x828(%rbp), %rdi
callq 0x46e8
jmp 0x656b
jmp 0x6568
movq %rax, %rbx
leaq -0x848(%rbp), %rdi
callq 0x46e8
jmp 0x657c
movq %rax, %rbx
leaq -0x868(%rbp), %rdi
callq 0x46e8
jmp 0x658d
movq %rax, %rbx
leaq -0x888(%rbp), %rdi
callq 0x46e8
jmp 0x659e
movq %rax, %rbx
leaq -0x8a8(%rbp), %rdi
callq 0x46e8
jmp 0x65b1
jmp 0x65ae
movq %rax, %rbx
leaq -0x8c8(%rbp), %rdi
callq 0x46e8
jmp 0x65c2
movq %rax, %rbx
leaq -0x980(%rbp), %rdi
callq 0x662e
movq %rbx, %rdi
callq 0x4620