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

    conf::Config config;
    config("usage: 1g-prune-sents [OPTION...] CORPUS VOCAB_INIT VOCAB_FINAL\n")
      ('h', "help", "", "", "display help")
      ('c', "candidates=INT", "arg", "25000", "Number of factors to consider for removal per iteration, DEFAULT: 25 000")
      ('r', "removals=INT", "arg", "500", "Number of removals per iteration, DEFAULT: 500")
      ('m', "min-length=INT", "arg", "2", "Minimum length of factors to remove, DEFAULT: 2")
      ('v', "vocab-size=INT", "arg must", "", "Target vocabulary size (stopping criterion)")
      ('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 short_factor_min_lp = -25.0;
    string corpus_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, training corpus: " << corpus_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 factors 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;
    set<string> short_factors;
    map<string, flt_type> vocab;
    map<string, flt_type> freqs;
    vector<string> sents;

    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_factors, min_removal_length, utf8_encoding);

    cerr << "Reading training corpus " << corpus_fname << endl;
    retval = Unigrams::read_sents(corpus_fname, sents);
    if (retval < 0) {
        cerr << "something went wrong reading training corpus" << endl;
        exit(EXIT_FAILURE);
    }
    cerr << "\t" << "number of sentences in corpus: " << sents.size() << 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_sents(sents, vocab, freqs);
    cerr << "Initial likelihood: " << cost << endl;

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

        cerr << "iteration " << itern << endl;
        cerr << "collecting candidate factors" << endl;
        set<string> candidates;
        ug.init_candidates(vocab, candidates, n_candidates_per_iter, stoplist, min_removal_length);

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

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

        // Remove factors 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(sents, vocab, 1);
        assert_factors(vocab, short_factors, short_factor_min_lp);

        cerr << "factors 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 $0xa88, %rsp            # imm = 0xA88
movq %rsi, %rbx
movl %edi, %r14d
leaq -0x938(%rbp), %rdi
callq 0x8258
leaq 0x204c9(%rip), %rsi     # 0x25022
leaq -0x880(%rbp), %rdi
leaq -0xab0(%rbp), %rdx
callq 0x4150
leaq -0x938(%rbp), %rdi
leaq -0x880(%rbp), %rsi
callq 0x82c4
movq %rax, %r15
leaq 0x204e2(%rip), %rsi     # 0x2506b
leaq -0x860(%rbp), %rdi
leaq -0x220(%rbp), %rdx
callq 0x4150
leaq 0x20e24(%rip), %rsi     # 0x259c7
leaq -0x840(%rbp), %rdi
leaq -0x1f0(%rbp), %rdx
callq 0x4150
leaq 0x20e0a(%rip), %rsi     # 0x259c7
leaq -0x820(%rbp), %rdi
leaq -0x120(%rbp), %rdx
callq 0x4150
leaq 0x2048c(%rip), %rsi     # 0x25063
leaq -0x800(%rbp), %rdi
leaq -0x160(%rbp), %rdx
callq 0x4150
pushq $0x68
popq %rsi
leaq -0x860(%rbp), %rdx
leaq -0x840(%rbp), %rcx
leaq -0x820(%rbp), %r8
leaq -0x800(%rbp), %r9
movq %r15, %rdi
callq 0x82dc
movq %rax, %r15
leaq 0x20455(%rip), %rsi     # 0x25070
leaq -0x7e0(%rbp), %rdi
leaq -0xc0(%rbp), %rdx
callq 0x4150
leaq 0x2044a(%rip), %rsi     # 0x2507f
leaq -0x7c0(%rbp), %rdi
leaq -0x1a0(%rbp), %rdx
callq 0x4150
leaq 0x20434(%rip), %rsi     # 0x25083
leaq -0x7a0(%rbp), %rdi
leaq -0x180(%rbp), %rdx
callq 0x4150
leaq 0x20420(%rip), %rsi     # 0x25089
leaq -0x780(%rbp), %rdi
leaq -0x1c0(%rbp), %rdx
callq 0x4150
pushq $0x63
popq %rsi
leaq -0x7e0(%rbp), %rdx
leaq -0x7c0(%rbp), %rcx
leaq -0x7a0(%rbp), %r8
leaq -0x780(%rbp), %r9
movq %r15, %rdi
callq 0x82dc
movq %rax, %r15
leaq 0x20425(%rip), %rsi     # 0x250d2
leaq -0x760(%rbp), %rdi
leaq -0xe0(%rbp), %rdx
callq 0x4150
leaq 0x203b8(%rip), %rsi     # 0x2507f
leaq -0x740(%rbp), %rdi
leaq -0x90(%rbp), %rdx
callq 0x4150
leaq 0x20429(%rip), %rsi     # 0x2510a
leaq -0x720(%rbp), %rdi
leaq -0x130(%rbp), %rdx
callq 0x4150
leaq 0x203e4(%rip), %rsi     # 0x250df
leaq -0x700(%rbp), %rdi
leaq -0x6c(%rbp), %rdx
callq 0x4150
pushq $0x72
popq %rsi
leaq -0x760(%rbp), %rdx
leaq -0x740(%rbp), %rcx
leaq -0x720(%rbp), %r8
leaq -0x700(%rbp), %r9
movq %r15, %rdi
callq 0x82dc
movq %rax, %r15
leaq 0x203d2(%rip), %rsi     # 0x2510e
leaq -0x6e0(%rbp), %rdi
leaq -0x50(%rbp), %rdx
callq 0x4150
leaq 0x2032c(%rip), %rsi     # 0x2507f
leaq -0x6c0(%rbp), %rdi
leaq -0x4f(%rbp), %rdx
callq 0x4150
leaq 0x203e1(%rip), %rsi     # 0x2514b
leaq -0x6a0(%rbp), %rdi
leaq -0x4e(%rbp), %rdx
callq 0x4150
leaq 0x2039c(%rip), %rsi     # 0x2511d
leaq -0x680(%rbp), %rdi
leaq -0x4d(%rbp), %rdx
callq 0x4150
pushq $0x6d
popq %rsi
leaq -0x6e0(%rbp), %rdx
leaq -0x6c0(%rbp), %rcx
leaq -0x6a0(%rbp), %r8
leaq -0x680(%rbp), %r9
movq %r15, %rdi
callq 0x82dc
movq %rax, %r15
leaq 0x2038b(%rip), %rsi     # 0x2514d
leaq -0x660(%rbp), %rdi
leaq -0x4c(%rbp), %rdx
callq 0x4150
leaq 0x20383(%rip), %rsi     # 0x2515c
leaq -0x640(%rbp), %rdi
leaq -0x4b(%rbp), %rdx
callq 0x4150
leaq 0x20bd7(%rip), %rsi     # 0x259c7
leaq -0x620(%rbp), %rdi
leaq -0x4a(%rbp), %rdx
callq 0x4150
leaq 0x2035e(%rip), %rsi     # 0x25165
leaq -0x600(%rbp), %rdi
leaq -0x49(%rbp), %rdx
callq 0x4150
pushq $0x76
popq %rsi
leaq -0x660(%rbp), %rdx
leaq -0x640(%rbp), %rcx
leaq -0x620(%rbp), %r8
leaq -0x600(%rbp), %r9
movq %r15, %rdi
callq 0x82dc
movq %rax, %r15
leaq 0x20349(%rip), %rsi     # 0x25191
leaq -0x5e0(%rbp), %rdi
leaq -0x48(%rbp), %rdx
callq 0x4150
leaq 0x20220(%rip), %rsi     # 0x2507f
leaq -0x5c0(%rbp), %rdi
leaq -0x47(%rbp), %rdx
callq 0x4150
leaq 0x20b51(%rip), %rsi     # 0x259c7
leaq -0x5a0(%rbp), %rdi
leaq -0x46(%rbp), %rdx
callq 0x4150
leaq 0x20315(%rip), %rsi     # 0x251a2
leaq -0x580(%rbp), %rdi
leaq -0x45(%rbp), %rdx
callq 0x4150
pushq $0x73
popq %rsi
leaq -0x5e0(%rbp), %rdx
leaq -0x5c0(%rbp), %rcx
leaq -0x5a0(%rbp), %r8
leaq -0x580(%rbp), %r9
movq %r15, %rdi
callq 0x82dc
movq %rax, %r15
leaq 0x2030d(%rip), %rsi     # 0x251db
leaq -0x560(%rbp), %rdi
leaq -0x44(%rbp), %rdx
callq 0x4150
leaq 0x2019a(%rip), %rsi     # 0x2507f
leaq -0x540(%rbp), %rdi
leaq -0x43(%rbp), %rdx
callq 0x4150
leaq 0x20325(%rip), %rsi     # 0x25221
leaq -0x520(%rbp), %rdi
leaq -0x42(%rbp), %rdx
callq 0x4150
leaq 0x202d8(%rip), %rsi     # 0x251eb
leaq -0x500(%rbp), %rdi
leaq -0x41(%rbp), %rdx
callq 0x4150
pushq $0x74
popq %rsi
leaq -0x560(%rbp), %rdx
leaq -0x540(%rbp), %rcx
leaq -0x520(%rbp), %r8
leaq -0x500(%rbp), %r9
movq %r15, %rdi
callq 0x82dc
movq %rax, %r15
leaq 0x202cf(%rip), %rsi     # 0x25223
leaq -0x4e0(%rbp), %rdi
leaq -0x40(%rbp), %rdx
callq 0x4150
leaq 0x20a5c(%rip), %rsi     # 0x259c7
leaq -0x4c0(%rbp), %rdi
leaq -0x3f(%rbp), %rdx
callq 0x4150
leaq 0x20a45(%rip), %rsi     # 0x259c7
leaq -0x4a0(%rbp), %rdi
leaq -0x3e(%rbp), %rdx
callq 0x4150
leaq 0x2029b(%rip), %rsi     # 0x25234
leaq -0x480(%rbp), %rdi
leaq -0x3d(%rbp), %rdx
callq 0x4150
pushq $0x66
popq %rsi
leaq -0x4e0(%rbp), %rdx
leaq -0x4c0(%rbp), %rcx
leaq -0x4a0(%rbp), %r8
leaq -0x480(%rbp), %r9
movq %r15, %rdi
callq 0x82dc
movq %rax, %r15
leaq 0x2028f(%rip), %rsi     # 0x25269
leaq -0x460(%rbp), %rdi
leaq -0x3c(%rbp), %rdx
callq 0x4150
leaq 0x209d6(%rip), %rsi     # 0x259c7
leaq -0x440(%rbp), %rdi
leaq -0x3b(%rbp), %rdx
callq 0x4150
leaq 0x209bf(%rip), %rsi     # 0x259c7
leaq -0x420(%rbp), %rdi
leaq -0x3a(%rbp), %rdx
callq 0x4150
leaq 0x20250(%rip), %rsi     # 0x2526f
leaq -0x400(%rbp), %rdi
leaq -0x39(%rbp), %rdx
callq 0x4150
pushq $0x38
popq %rsi
leaq -0x460(%rbp), %rdx
leaq -0x440(%rbp), %rcx
leaq -0x420(%rbp), %r8
leaq -0x400(%rbp), %r9
movq %r15, %rdi
callq 0x82dc
leaq -0x400(%rbp), %rdi
callq 0x46e8
leaq -0x420(%rbp), %rdi
callq 0x46e8
leaq -0x440(%rbp), %rdi
callq 0x46e8
leaq -0x460(%rbp), %rdi
callq 0x46e8
leaq -0x480(%rbp), %rdi
callq 0x46e8
leaq -0x4a0(%rbp), %rdi
callq 0x46e8
leaq -0x4c0(%rbp), %rdi
callq 0x46e8
leaq -0x4e0(%rbp), %rdi
callq 0x46e8
leaq -0x500(%rbp), %rdi
callq 0x46e8
leaq -0x520(%rbp), %rdi
callq 0x46e8
leaq -0x540(%rbp), %rdi
callq 0x46e8
leaq -0x560(%rbp), %rdi
callq 0x46e8
leaq -0x580(%rbp), %rdi
callq 0x46e8
leaq -0x5a0(%rbp), %rdi
callq 0x46e8
leaq -0x5c0(%rbp), %rdi
callq 0x46e8
leaq -0x5e0(%rbp), %rdi
callq 0x46e8
leaq -0x600(%rbp), %rdi
callq 0x46e8
leaq -0x620(%rbp), %rdi
callq 0x46e8
leaq -0x640(%rbp), %rdi
callq 0x46e8
leaq -0x660(%rbp), %rdi
callq 0x46e8
leaq -0x680(%rbp), %rdi
callq 0x46e8
leaq -0x6a0(%rbp), %rdi
callq 0x46e8
leaq -0x6c0(%rbp), %rdi
callq 0x46e8
leaq -0x6e0(%rbp), %rdi
callq 0x46e8
leaq -0x700(%rbp), %rdi
callq 0x46e8
leaq -0x720(%rbp), %rdi
callq 0x46e8
leaq -0x740(%rbp), %rdi
callq 0x46e8
leaq -0x760(%rbp), %rdi
callq 0x46e8
leaq -0x780(%rbp), %rdi
callq 0x46e8
leaq -0x7a0(%rbp), %rdi
callq 0x46e8
leaq -0x7c0(%rbp), %rdi
callq 0x46e8
leaq -0x7e0(%rbp), %rdi
callq 0x46e8
leaq -0x800(%rbp), %rdi
callq 0x46e8
leaq -0x820(%rbp), %rdi
callq 0x46e8
leaq -0x840(%rbp), %rdi
callq 0x46e8
leaq -0x860(%rbp), %rdi
callq 0x46e8
leaq -0x880(%rbp), %rdi
callq 0x46e8
leaq -0x938(%rbp), %rdi
movl %r14d, %esi
movq %rbx, %rdx
callq 0x8b42
movq -0x8a0(%rbp), %rsi
movq -0x898(%rbp), %rax
subq %rsi, %rax
cmpq $0x60, %rax
je 0x525b
movq 0x31d7e(%rip), %rax     # 0x36fc0
movq (%rax), %rsi
leaq -0x938(%rbp), %rdi
pushq $0x1
popq %rdx
callq 0x902a
movq -0x8a0(%rbp), %rsi
leaq -0x1a0(%rbp), %rdi
callq 0x4480
movq -0x8a0(%rbp), %rsi
addq $0x20, %rsi
leaq -0x180(%rbp), %rdi
callq 0x4480
movq -0x8a0(%rbp), %rsi
addq $0x40, %rsi
leaq -0x1c0(%rbp), %rdi
callq 0x4480
leaq 0x1fff3(%rip), %rsi     # 0x2528f
leaq -0x3e0(%rbp), %rdi
leaq -0xab0(%rbp), %rdx
callq 0x4150
leaq -0x938(%rbp), %rdi
leaq -0x3e0(%rbp), %rsi
callq 0x8be2
movq %rax, %rdi
callq 0x8128
movl %eax, -0x60(%rbp)
leaq -0x3e0(%rbp), %rdi
callq 0x46e8
leaq 0x1ffba(%rip), %rsi     # 0x2529a
leaq -0x3c0(%rbp), %rdi
leaq -0xab0(%rbp), %rdx
callq 0x4150
leaq -0x938(%rbp), %rdi
leaq -0x3c0(%rbp), %rsi
callq 0x8be2
movq %rax, %rdi
callq 0x8128
movl %eax, -0x68(%rbp)
leaq -0x3c0(%rbp), %rdi
callq 0x46e8
leaq 0x1ff7f(%rip), %rsi     # 0x252a3
leaq -0x3a0(%rbp), %rdi
leaq -0xab0(%rbp), %rdx
callq 0x4150
leaq -0x938(%rbp), %rdi
leaq -0x3a0(%rbp), %rsi
callq 0x8be2
movq %rax, %rdi
callq 0x8128
movl %eax, -0x5c(%rbp)
leaq -0x3a0(%rbp), %rdi
callq 0x46e8
leaq 0x1ff46(%rip), %rsi     # 0x252ae
leaq -0x380(%rbp), %rdi
leaq -0xab0(%rbp), %rdx
callq 0x4150
leaq -0x938(%rbp), %rdi
leaq -0x380(%rbp), %rsi
callq 0x8be2
movq %rax, %rdi
callq 0x8128
movl %eax, %ebx
leaq -0x380(%rbp), %rdi
callq 0x46e8
leaq 0x1ff0e(%rip), %rsi     # 0x252b9
leaq -0x360(%rbp), %rdi
leaq -0xab0(%rbp), %rdx
callq 0x4150
leaq -0x938(%rbp), %rdi
leaq -0x360(%rbp), %rsi
callq 0x8be2
movq %rax, %rdi
callq 0x8128
movl %eax, -0x64(%rbp)
leaq -0x360(%rbp), %rdi
callq 0x46e8
leaq 0x1fe34(%rip), %rsi     # 0x25223
leaq -0x340(%rbp), %rdi
leaq -0xab0(%rbp), %rdx
callq 0x4150
leaq -0x938(%rbp), %rdi
leaq -0x340(%rbp), %rsi
callq 0x8be2
movb 0x4a(%rax), %al
movb %al, -0x29(%rbp)
leaq -0x340(%rbp), %rdi
callq 0x46e8
leaq 0x1fe3b(%rip), %rsi     # 0x25269
leaq -0x320(%rbp), %rdi
leaq -0xab0(%rbp), %rdx
callq 0x4150
leaq -0x938(%rbp), %rdi
leaq -0x320(%rbp), %rsi
callq 0x8be2
movb 0x4a(%rax), %al
movb %al, -0x38(%rbp)
leaq -0x320(%rbp), %rdi
callq 0x46e8
leaq -0x218(%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     # 0x252c5
leaq -0x300(%rbp), %rdi
leaq -0xab0(%rbp), %rdx
callq 0x4150
leaq -0x938(%rbp), %rdi
leaq -0x300(%rbp), %rsi
callq 0x8be2
movb 0x4a(%rax), %r14b
leaq -0x300(%rbp), %rdi
callq 0x46e8
cmpb $0x1, %r14b
jne 0x5570
xorps %xmm0, %xmm0
movaps %xmm0, -0xab0(%rbp)
andq $0x0, -0xaa0(%rbp)
leaq 0x1fde3(%rip), %rsi     # 0x252c5
leaq -0x2c0(%rbp), %rdi
leaq -0x1f0(%rbp), %rdx
callq 0x4150
leaq -0x938(%rbp), %rdi
leaq -0x2c0(%rbp), %rsi
callq 0x8be2
movq %rax, %rdi
callq 0x8244
leaq -0x2e0(%rbp), %rdi
movq %rax, %rsi
callq 0x4480
leaq -0x2e0(%rbp), %rdi
leaq -0xab0(%rbp), %rsi
callq 0x1d92e
leaq -0x2e0(%rbp), %rdi
callq 0x46e8
leaq -0x2c0(%rbp), %rdi
callq 0x46e8
movq -0xab0(%rbp), %rsi
movq -0xaa8(%rbp), %rdx
leaq -0x220(%rbp), %rdi
callq 0x745e
leaq -0xab0(%rbp), %rdi
callq 0x646a
movq 0x31a71(%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     # 0x252cf
callq 0x4350
leaq -0x1a0(%rbp), %rsi
movq %rax, %rdi
callq 0x4310
movq %rax, %rdi
callq 0x4190
movq 0x31a2e(%rip), %rdi     # 0x36fe8
leaq 0x1fd2c(%rip), %rsi     # 0x252ed
callq 0x4350
leaq -0x180(%rbp), %rsi
movq %rax, %rdi
callq 0x4310
movq %rax, %rdi
callq 0x4190
movq 0x31a04(%rip), %rdi     # 0x36fe8
leaq 0x1fd23(%rip), %rsi     # 0x2530e
callq 0x4350
leaq -0x1c0(%rbp), %rsi
movq %rax, %rdi
callq 0x4310
movq %rax, %rdi
callq 0x4190
movq 0x319da(%rip), %rdi     # 0x36fe8
leaq 0x1fd18(%rip), %rsi     # 0x2532d
callq 0x4350
movl -0x60(%rbp), %esi
movq %rax, %rdi
callq 0x4260
movq %rax, %rdi
callq 0x4190
movq 0x319b4(%rip), %rdi     # 0x36fe8
leaq 0x1fd19(%rip), %rsi     # 0x25354
callq 0x4350
movl -0x5c(%rbp), %esi
movq %rax, %rdi
movq %rsi, -0x58(%rbp)
callq 0x4260
movq %rax, %rdi
callq 0x4190
movq 0x3198a(%rip), %rdi     # 0x36fe8
leaq 0x1fd22(%rip), %rsi     # 0x25387
callq 0x4350
movl -0x68(%rbp), %esi
movq %rax, %rdi
callq 0x4260
movq %rax, %rdi
callq 0x4190
cmpq $0x0, -0x1f8(%rbp)
je 0x56c0
movq 0x3195a(%rip), %rdi     # 0x36fe8
leaq 0x1fd17(%rip), %rsi     # 0x253ac
callq 0x4350
movq -0x1f8(%rbp), %rsi
movq %rax, %rdi
callq 0x4260
leaq 0x1fd17(%rip), %rsi     # 0x253c7
movq %rax, %rdi
callq 0x4350
movq %rax, %rdi
callq 0x4190
movq 0x31921(%rip), %r14     # 0x36fe8
leaq 0x1fd03(%rip), %rsi     # 0x253d1
movq %r14, %rdi
callq 0x4350
movl %ebx, %esi
movq %rax, %rdi
movq %rsi, -0xf0(%rbp)
callq 0x4260
movq %rax, %rdi
callq 0x4190
movl -0x64(%rbp), %eax
movl %eax, %ecx
movq %rcx, -0xe8(%rbp)
testl %eax, %eax
jne 0x5708
leaq 0x1fd28(%rip), %rsi     # 0x2542e
jmp 0x5734
movq 0x318d9(%rip), %rdi     # 0x36fe8
leaq 0x1fcdb(%rip), %rsi     # 0x253f1
callq 0x4350
movq %rax, %rdi
movq -0xe8(%rbp), %rsi
callq 0x4260
movq %rax, %r14
leaq 0x1fae9(%rip), %rsi     # 0x2521d
movq %r14, %rdi
callq 0x4350
movq %rax, %rdi
callq 0x4190
movq 0x3189d(%rip), %rdi     # 0x36fe8
leaq 0x1fd04(%rip), %rsi     # 0x25456
callq 0x4350
movzbl -0x29(%rbp), %esi
movq %rax, %rdi
callq 0x45a0
movq %rax, %rdi
callq 0x4190
movq 0x31876(%rip), %rdi     # 0x36fe8
leaq 0x1fd00(%rip), %rsi     # 0x25479
callq 0x4350
movzbl -0x38(%rbp), %ebx
movq %rax, %rdi
movl %ebx, %esi
callq 0x45a0
movq %rax, %rdi
callq 0x4190
leaq -0x1e8(%rbp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq -0x118(%rbp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq -0x158(%rbp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
xorps %xmm0, %xmm0
movaps %xmm0, -0xe0(%rbp)
andq $0x0, -0xd0(%rbp)
movq 0x317e7(%rip), %rdi     # 0x36fe8
leaq 0x1fc8e(%rip), %rsi     # 0x25496
callq 0x4350
leaq -0x180(%rbp), %rsi
movq %rax, %rdi
callq 0x4310
movq %rax, %rdi
callq 0x4190
leaq -0x2a0(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x4480
leaq -0x2a0(%rbp), %rdi
leaq -0x120(%rbp), %rsi
leaq -0x6c(%rbp), %rdx
movl %ebx, %ecx
callq 0x1d2fa
movl %eax, %ebx
leaq -0x2a0(%rbp), %rdi
callq 0x46e8
testl %ebx, %ebx
jns 0x5882
movq 0x3177f(%rip), %rdi     # 0x36fe8
leaq 0x1fc3a(%rip), %rsi     # 0x254aa
callq 0x4350
movq %rax, %rdi
callq 0x4190
jmp 0x5aaf
movq 0x3175f(%rip), %rdi     # 0x36fe8
leaq 0x20136(%rip), %rsi     # 0x259c6
callq 0x4350
leaq 0x1fb4e(%rip), %rsi     # 0x253ea
movq %rax, %rdi
callq 0x4350
movq -0xf8(%rbp), %rsi
movq %rax, %rdi
callq 0x4260
movq %rax, %rdi
callq 0x4190
movq 0x31726(%rip), %rdi     # 0x36fe8
leaq 0x200fd(%rip), %rsi     # 0x259c6
callq 0x4350
leaq 0x1fbfd(%rip), %rsi     # 0x254d2
movq %rax, %rdi
callq 0x4350
movl -0x6c(%rbp), %esi
movq %rax, %rdi
callq 0x4600
movq %rax, %rdi
callq 0x4190
movq -0x108(%rbp), %r14
leaq -0xc0(%rbp), %rbx
leaq -0xab0(%rbp), %r12
leaq -0x90(%rbp), %r13
leaq -0x118(%rbp), %rax
cmpq %rax, %r14
je 0x5a32
andq $0x0, -0xb0(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0xc0(%rbp)
leaq 0x20(%r14), %r15
cmpb $0x0, -0x38(%rbp)
je 0x5998
andl $0x0, -0xab0(%rbp)
movq %rbx, %rdi
movq %r12, %rsi
callq 0x6534
andl $0x0, -0xab0(%rbp)
xorl %eax, %eax
movl %eax, %eax
cmpq %rax, 0x28(%r14)
jbe 0x59f0
movq (%r15), %rcx
movb (%rcx,%rax), %dl
pushq $0x1
popq %rcx
testb %dl, %dl
jns 0x597d
pushq $0x4
popq %rcx
cmpb $-0x11, %dl
ja 0x597d
cmpb $-0x20, %dl
pushq $0x2
popq %rcx
sbbl $-0x1, %ecx
addl %ecx, %eax
movl %eax, -0xab0(%rbp)
movq %rbx, %rdi
movq %r12, %rsi
callq 0x650e
movl -0xab0(%rbp), %eax
jmp 0x5953
movq %r12, %rdi
movq %r15, %rsi
callq 0x4480
movq -0xc0(%rbp), %rax
cmpq %rax, -0xb8(%rbp)
je 0x59ba
movq %rax, -0xb8(%rbp)
xorl %eax, %eax
movl %eax, -0x90(%rbp)
movl %eax, %eax
movq -0xaa8(%rbp), %rcx
incq %rcx
cmpq %rax, %rcx
jbe 0x59e8
movq %rbx, %rdi
movq %r13, %rsi
callq 0x650e
movl -0x90(%rbp), %eax
incl %eax
jmp 0x59bc
movq %r12, %rdi
callq 0x46e8
movq -0xb8(%rbp), %rax
subq -0xc0(%rbp), %rax
sarq $0x2, %rax
decq %rax
cmpq -0x58(%rbp), %rax
jae 0x5a1a
leaq -0x1f0(%rbp), %rdi
movq %r15, %rsi
callq 0x676e
movq %rbx, %rdi
callq 0x699e
movq %r14, %rdi
callq 0x43c0
movq %rax, %r14
jmp 0x590c
movq 0x315af(%rip), %rdi     # 0x36fe8
leaq 0x1faaa(%rip), %rsi     # 0x254ea
callq 0x4350
leaq -0x1a0(%rbp), %rsi
movq %rax, %rdi
callq 0x4310
movq %rax, %rdi
callq 0x4190
leaq -0x280(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
callq 0x4480
leaq -0x280(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x1d92e
movl %eax, %ebx
leaq -0x280(%rbp), %rdi
callq 0x46e8
testl %ebx, %ebx
jns 0x5ab7
movq 0x3154d(%rip), %rdi     # 0x36fe8
leaq 0x1fa61(%rip), %rsi     # 0x25503
callq 0x4350
movq %rax, %rdi
callq 0x4190
pushq $0x1
popq %rdi
callq 0x43d0
movq 0x3152a(%rip), %rdi     # 0x36fe8
leaq 0x1ff01(%rip), %rsi     # 0x259c6
callq 0x4350
leaq 0x1fa5f(%rip), %rsi     # 0x25530
movq %rax, %rdi
callq 0x4350
movq -0xd8(%rbp), %rsi
subq -0xe0(%rbp), %rsi
sarq $0x5, %rsi
movq %rax, %rdi
callq 0x4260
movq %rax, %rdi
callq 0x4190
cmpb $0x0, -0x29(%rbp)
je 0x5b0a
leaq 0x11ef6(%rip), %rax     # 0x179fe
jmp 0x5b11
leaq 0x11a49(%rip), %rax     # 0x1755a
leaq -0x130(%rbp), %rdi
movq %rax, (%rdi)
movb -0x38(%rbp), %al
movb %al, 0x8(%rdi)
leaq -0xe0(%rbp), %rsi
leaq -0x120(%rbp), %rdx
leaq -0x160(%rbp), %rcx
callq 0x1dd50
movsd %xmm0, -0x38(%rbp)
movq 0x314a1(%rip), %rdi     # 0x36fe8
leaq 0x1fa02(%rip), %rsi     # 0x25550
callq 0x4350
movq %rax, %rdi
movsd -0x38(%rbp), %xmm0
callq 0x4560
movq %rax, %rdi
callq 0x4190
movq 0x31479(%rip), %rdi     # 0x36fe8
callq 0x4190
leaq 0x1f9ea(%rip), %rsi     # 0x25565
movq %rax, %rdi
callq 0x4350
movq %rax, %rdi
callq 0x4190
pushq $0x1
popq %rax
leaq -0x120(%rbp), %rbx
pushq $0x28
popq %r12
movl %eax, -0x38(%rbp)
movq 0x31445(%rip), %rdi     # 0x36fe8
leaq 0x1f9e8(%rip), %rsi     # 0x25592
callq 0x4350
movq %rax, %rdi
movl -0x38(%rbp), %esi
callq 0x4600
movq %rax, %rdi
callq 0x4190
movq 0x3141f(%rip), %rdi     # 0x36fe8
leaq 0x1f9cd(%rip), %rsi     # 0x2559d
callq 0x4350
movq %rax, %rdi
callq 0x4190
andl $0x0, -0xb8(%rbp)
andq $0x0, -0xb0(%rbp)
leaq -0xb8(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq %rax, -0xa0(%rbp)
andq $0x0, -0x98(%rbp)
leaq -0x130(%rbp), %rdi
movq %rbx, %rsi
leaq -0xc0(%rbp), %rdx
movl -0x60(%rbp), %ecx
leaq -0x220(%rbp), %r8
movl -0x5c(%rbp), %r9d
callq 0x1e29c
movq 0x313b4(%rip), %rdi     # 0x36fe8
leaq 0x1f97f(%rip), %rsi     # 0x255ba
callq 0x4350
movq -0x98(%rbp), %rsi
movq %rax, %rdi
callq 0x4260
movq %rax, %rdi
leaq 0x1fc6d(%rip), %rsi     # 0x258c6
callq 0x4350
movq %rax, %rdi
callq 0x4190
xorps %xmm0, %xmm0
movaps %xmm0, -0x90(%rbp)
andq $0x0, -0x80(%rbp)
leaq -0x130(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
movq %rbx, %rdx
leaq -0xc0(%rbp), %rcx
leaq -0x160(%rbp), %r8
leaq -0x90(%rbp), %r9
callq 0x1ed62
movsd %xmm0, -0x58(%rbp)
movq 0x3133c(%rip), %rdi     # 0x36fe8
leaq 0x1f923(%rip), %rsi     # 0x255d6
callq 0x4350
movq %rax, %rdi
movsd -0x58(%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 %r12
cmpq %r15, %rax
jbe 0x5e67
imulq $0x28, %r15, %r13
cmpq $0x1, 0x8(%rsi,%r13)
je 0x5e5f
addq %r13, %rsi
movq %rbx, %rdi
callq 0x7416
leaq -0x118(%rbp), %rcx
cmpq %rcx, %rax
je 0x5e5f
movq -0x90(%rbp), %rsi
addq %r13, %rsi
leaq -0x160(%rbp), %rdi
callq 0x7416
leaq -0x158(%rbp), %rcx
cmpq %rcx, %rax
je 0x5e5f
movq -0x90(%rbp), %rsi
addq %r13, %rsi
movq %rbx, %rdi
callq 0x772c
addq -0x90(%rbp), %r13
leaq -0x160(%rbp), %rdi
movq %r13, %rsi
callq 0x772c
cmpl $0x0, -0x64(%rbp)
je 0x5e46
movq -0x138(%rbp), %rax
xorl %edx, %edx
divq -0xe8(%rbp)
testq %rdx, %rdx
jne 0x5e46
movq %rbx, %rdi
leaq -0x160(%rbp), %rsi
callq 0x69b2
movq %rbx, %rdi
movsd 0x1f25d(%rip), %xmm0    # 0x25008
callq 0x1dbf2
leaq -0xab0(%rbp), %rdi
callq 0x4470
leaq -0xab0(%rbp), %rdi
leaq 0x1f839(%rip), %rsi     # 0x25603
callq 0x4350
movq %rax, %rdi
movl -0x38(%rbp), %esi
callq 0x4600
movq %rax, %rdi
leaq 0x1f828(%rip), %rsi     # 0x2560c
callq 0x4350
movq -0xf8(%rbp), %rsi
movq %rax, %rdi
callq 0x4260
movq %rax, %rdi
leaq 0x1f80c(%rip), %rsi     # 0x2560e
callq 0x4350
leaq -0x260(%rbp), %rdi
leaq -0xaa8(%rbp), %rsi
callq 0x4540
leaq -0x260(%rbp), %rdi
movq %rbx, %rsi
xorl %edx, %edx
pushq $0x6
popq %rcx
callq 0x1d678
leaq -0x260(%rbp), %rdi
callq 0x46e8
leaq -0xab0(%rbp), %rdi
callq 0x40d0
incl %r14d
cmpl -0x68(%rbp), %r14d
jae 0x5e67
movq -0xf0(%rbp), %rax
cmpq %rax, -0xf8(%rbp)
jbe 0x5e67
incl %r15d
jmp 0x5cd3
leaq -0x130(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
movq %rbx, %rdx
pushq $0x1
popq %rcx
callq 0x1dca6
movsd %xmm0, -0x58(%rbp)
movq -0x1d8(%rbp), %r13
leaq -0x1e8(%rbp), %rax
cmpq %rax, %r13
je 0x5ed8
leaq 0x20(%r13), %r15
movq %rbx, %rdi
movq %r15, %rsi
callq 0x7416
leaq -0x118(%rbp), %rcx
cmpq %rcx, %rax
jne 0x5ecb
movq %rbx, %rdi
movq %r15, %rsi
callq 0x6dde
movabsq $-0x3fc7000000000000, %rcx # imm = 0xC039000000000000
movq %rcx, (%rax)
movq %r13, %rdi
callq 0x43c0
movq %rax, %r13
jmp 0x5e8c
movq 0x31109(%rip), %rdi     # 0x36fe8
leaq 0x1f72f(%rip), %rsi     # 0x25615
callq 0x4350
movl %r14d, %esi
movq %rax, %rdi
callq 0x4260
movq %rax, %rdi
callq 0x4190
movq 0x310e3(%rip), %rdi     # 0x36fe8
leaq 0x1f72d(%rip), %rsi     # 0x25639
callq 0x4350
movq -0xf8(%rbp), %rsi
movq %rax, %rdi
callq 0x4260
movq %rax, %rdi
callq 0x4190
movq 0x310b9(%rip), %rdi     # 0x36fe8
leaq 0x1f71d(%rip), %rsi     # 0x25653
callq 0x4350
movq %rax, %rdi
movsd -0x58(%rbp), %xmm0
callq 0x4560
movq %rax, %rdi
callq 0x4190
movq -0xf0(%rbp), %rax
cmpq %rax, -0xf8(%rbp)
jbe 0x5f80
incl -0x38(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x6496
leaq -0xc0(%rbp), %rdi
callq 0x71e0
jmp 0x5b9c
movq 0x31061(%rip), %rdi     # 0x36fe8
leaq 0x1f6e5(%rip), %rsi     # 0x25673
callq 0x4350
movq %rax, %rdi
callq 0x4190
leaq -0x90(%rbp), %rdi
callq 0x6496
leaq -0xc0(%rbp), %rdi
callq 0x71e0
leaq -0x240(%rbp), %rdi
leaq -0x1c0(%rbp), %rsi
callq 0x4480
leaq -0x240(%rbp), %rdi
leaq -0x120(%rbp), %rsi
pushq $0x6
popq %rcx
xorl %edx, %edx
callq 0x1d678
leaq -0x240(%rbp), %rdi
callq 0x46e8
xorl %edi, %edi
callq 0x43d0
movq %rax, %rbx
leaq -0x240(%rbp), %rdi
jmp 0x6097
jmp 0x609e
jmp 0x6035
jmp 0x6035
jmp 0x6035
movq %rax, %rbx
leaq -0x260(%rbp), %rdi
callq 0x46e8
jmp 0x601f
movq %rax, %rbx
leaq -0xab0(%rbp), %rdi
callq 0x40d0
jmp 0x6038
jmp 0x6035
jmp 0x6035
jmp 0x6035
jmp 0x6035
movq %rax, %rbx
leaq -0x90(%rbp), %rdi
callq 0x6496
jmp 0x6049
movq %rax, %rbx
leaq -0xc0(%rbp), %rdi
callq 0x71e0
jmp 0x60a1
jmp 0x609e
jmp 0x609e
jmp 0x609e
movq %rax, %rbx
leaq -0x280(%rbp), %rdi
jmp 0x6097
jmp 0x607c
movq %rax, %rbx
leaq -0xab0(%rbp), %rdi
callq 0x46e8
jmp 0x607f
movq %rax, %rbx
leaq -0xc0(%rbp), %rdi
callq 0x699e
jmp 0x60a1
movq %rax, %rbx
leaq -0x2a0(%rbp), %rdi
callq 0x46e8
jmp 0x60a1
movq %rax, %rbx
leaq -0xe0(%rbp), %rdi
callq 0x646a
leaq -0x160(%rbp), %rdi
callq 0x7258
leaq -0x120(%rbp), %rdi
callq 0x7258
leaq -0x1f0(%rbp), %rdi
callq 0x71e0
jmp 0x611e
jmp 0x611b
jmp 0x60f9
movq %rax, %rbx
leaq -0x2e0(%rbp), %rdi
callq 0x46e8
jmp 0x60eb
movq %rax, %rbx
leaq -0x2c0(%rbp), %rdi
callq 0x46e8
jmp 0x60fc
movq %rax, %rbx
leaq -0xab0(%rbp), %rdi
callq 0x646a
jmp 0x611e
movq %rax, %rbx
leaq -0x300(%rbp), %rdi
callq 0x46e8
jmp 0x611e
movq %rax, %rbx
leaq -0x220(%rbp), %rdi
callq 0x71e0
jmp 0x6194
movq %rax, %rbx
leaq -0x320(%rbp), %rdi
jmp 0x618a
jmp 0x6191
movq %rax, %rbx
leaq -0x340(%rbp), %rdi
jmp 0x618a
jmp 0x6191
movq %rax, %rbx
leaq -0x360(%rbp), %rdi
jmp 0x618a
jmp 0x6191
movq %rax, %rbx
leaq -0x380(%rbp), %rdi
jmp 0x618a
jmp 0x6191
movq %rax, %rbx
leaq -0x3a0(%rbp), %rdi
jmp 0x618a
jmp 0x6191
movq %rax, %rbx
leaq -0x3c0(%rbp), %rdi
jmp 0x618a
jmp 0x6191
movq %rax, %rbx
leaq -0x3e0(%rbp), %rdi
callq 0x46e8
jmp 0x6194
movq %rax, %rbx
leaq -0x1c0(%rbp), %rdi
callq 0x46e8
jmp 0x61a5
movq %rax, %rbx
leaq -0x180(%rbp), %rdi
callq 0x46e8
jmp 0x61b6
movq %rax, %rbx
leaq -0x1a0(%rbp), %rdi
jmp 0x644c
jmp 0x6453
jmp 0x6453
movq %rax, %rbx
leaq -0x400(%rbp), %rdi
callq 0x46e8
jmp 0x61e0
movq %rax, %rbx
leaq -0x420(%rbp), %rdi
callq 0x46e8
jmp 0x61f1
movq %rax, %rbx
leaq -0x440(%rbp), %rdi
callq 0x46e8
jmp 0x6202
movq %rax, %rbx
leaq -0x460(%rbp), %rdi
callq 0x46e8
jmp 0x6215
jmp 0x6212
movq %rax, %rbx
leaq -0x480(%rbp), %rdi
callq 0x46e8
jmp 0x6226
movq %rax, %rbx
leaq -0x4a0(%rbp), %rdi
callq 0x46e8
jmp 0x6237
movq %rax, %rbx
leaq -0x4c0(%rbp), %rdi
callq 0x46e8
jmp 0x6248
movq %rax, %rbx
leaq -0x4e0(%rbp), %rdi
callq 0x46e8
jmp 0x625b
jmp 0x6258
movq %rax, %rbx
leaq -0x500(%rbp), %rdi
callq 0x46e8
jmp 0x626c
movq %rax, %rbx
leaq -0x520(%rbp), %rdi
callq 0x46e8
jmp 0x627d
movq %rax, %rbx
leaq -0x540(%rbp), %rdi
callq 0x46e8
jmp 0x628e
movq %rax, %rbx
leaq -0x560(%rbp), %rdi
callq 0x46e8
jmp 0x62a1
jmp 0x629e
movq %rax, %rbx
leaq -0x580(%rbp), %rdi
callq 0x46e8
jmp 0x62b2
movq %rax, %rbx
leaq -0x5a0(%rbp), %rdi
callq 0x46e8
jmp 0x62c3
movq %rax, %rbx
leaq -0x5c0(%rbp), %rdi
callq 0x46e8
jmp 0x62d4
movq %rax, %rbx
leaq -0x5e0(%rbp), %rdi
callq 0x46e8
jmp 0x62e7
jmp 0x62e4
movq %rax, %rbx
leaq -0x600(%rbp), %rdi
callq 0x46e8
jmp 0x62f8
movq %rax, %rbx
leaq -0x620(%rbp), %rdi
callq 0x46e8
jmp 0x6309
movq %rax, %rbx
leaq -0x640(%rbp), %rdi
callq 0x46e8
jmp 0x631a
movq %rax, %rbx
leaq -0x660(%rbp), %rdi
callq 0x46e8
jmp 0x632d
jmp 0x632a
movq %rax, %rbx
leaq -0x680(%rbp), %rdi
callq 0x46e8
jmp 0x633e
movq %rax, %rbx
leaq -0x6a0(%rbp), %rdi
callq 0x46e8
jmp 0x634f
movq %rax, %rbx
leaq -0x6c0(%rbp), %rdi
callq 0x46e8
jmp 0x6360
movq %rax, %rbx
leaq -0x6e0(%rbp), %rdi
callq 0x46e8
jmp 0x6373
jmp 0x6370
movq %rax, %rbx
leaq -0x700(%rbp), %rdi
callq 0x46e8
jmp 0x6384
movq %rax, %rbx
leaq -0x720(%rbp), %rdi
callq 0x46e8
jmp 0x6395
movq %rax, %rbx
leaq -0x740(%rbp), %rdi
callq 0x46e8
jmp 0x63a6
movq %rax, %rbx
leaq -0x760(%rbp), %rdi
callq 0x46e8
jmp 0x63b9
jmp 0x63b6
movq %rax, %rbx
leaq -0x780(%rbp), %rdi
callq 0x46e8
jmp 0x63ca
movq %rax, %rbx
leaq -0x7a0(%rbp), %rdi
callq 0x46e8
jmp 0x63db
movq %rax, %rbx
leaq -0x7c0(%rbp), %rdi
callq 0x46e8
jmp 0x63ec
movq %rax, %rbx
leaq -0x7e0(%rbp), %rdi
callq 0x46e8
jmp 0x63ff
jmp 0x63fc
movq %rax, %rbx
leaq -0x800(%rbp), %rdi
callq 0x46e8
jmp 0x6410
movq %rax, %rbx
leaq -0x820(%rbp), %rdi
callq 0x46e8
jmp 0x6421
movq %rax, %rbx
leaq -0x840(%rbp), %rdi
callq 0x46e8
jmp 0x6432
movq %rax, %rbx
leaq -0x860(%rbp), %rdi
callq 0x46e8
jmp 0x6445
jmp 0x6442
movq %rax, %rbx
leaq -0x880(%rbp), %rdi
callq 0x46e8
jmp 0x6456
movq %rax, %rbx
leaq -0x938(%rbp), %rdi
callq 0x64c2
movq %rbx, %rdi
callq 0x4620