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

    conf::Config config;
    config("usage: 2g-prune-simple [OPTION...] WORDLIST TRANSITIONS_INIT MSFG_IN TRANSITIONS_OUT\n")
      ('h', "help", "", "", "display help")
      ('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", "30000", "Target vocabulary size (stopping criterion)")
      ('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 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];
    bool enable_fb = config["forward-backward"].specified;
    bool utf8_encoding = config["utf-8"].specified;

    cerr << "parameters, initial transitions: " << initial_transitions_fname << endl;
    cerr << "parameters, wordlist: " << wordlist_fname << endl;
    cerr << "parameters, msfg: " << msfg_fname << endl;
    cerr << "parameters, transitions: " << transition_fname << endl;
    cerr << "parameters, removals per iteration: " << removals_per_iter << endl;
    cerr << "parameters, minimum length for subwords to remove: " << min_removal_length << endl;
    cerr << "parameters, target vocab size: " << target_vocab_size << endl;
    cerr << "parameters, floor lp: " << FLOOR_LP << endl;
    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);

    if (transitions.size() < msfg.factor_node_map.size()) {
        vector<string> to_remove;
        cerr << "Pruning " << msfg.factor_node_map.size()-transitions.size() << " unused transitions from msfg." << endl;
        for (auto it = msfg.factor_node_map.begin(); it != msfg.factor_node_map.end(); ++it)
            if (transitions.find(it->first) == transitions.end())
                to_remove.push_back(it->first);
        for (auto it = to_remove.begin(); it != to_remove.end(); ++it)
            msfg.remove_arcs(*it);
    }

    assign_scores(transitions, msfg);

    std::cerr << std::setprecision(15);
    int iteration = 1;
    while (true) {

        cerr << "Iteration " << iteration << endl;

        flt_type lp = Bigrams::collect_trans_stats(words, msfg, trans_stats, unigram_stats, enable_fb);
        transitions.swap(trans_stats);
        Bigrams::freqs_to_logprobs(transitions);
        assign_scores(transitions, msfg);
        trans_stats.clear();

        cerr << "\tbigram likelihood: " << lp << endl;
        cerr << "\tnumber of transitions: " << Bigrams::transition_count(transitions) << endl;
        cerr << "\tvocabulary size: " << transitions.size() << endl;

        // Write temp transitions
        ostringstream transitions_temp;
        transitions_temp << "transitions.iter" << iteration << ".gz";
        cerr << "\twriting to: " << transitions_temp.str() << endl;
        Bigrams::write_transitions(transitions, transitions_temp.str());

        cerr << "\tinitializing removals .." << endl;
        map<string, flt_type> removals;
        if (iteration == 1 && transitions.size() % 1000 != 0) {
            int first_iter_removals = transitions.size() % 1000;
            Bigrams::init_candidates_freq(first_iter_removals, unigram_stats, removals, short_subwords);
        }
        else
            Bigrams::init_candidates_freq(removals_per_iter, unigram_stats, removals, short_subwords);

        vector<string> to_remove;
        for (auto it = removals.begin(); it != removals.end(); ++it)
            to_remove.push_back(it->first);
        Bigrams::remove_transitions(to_remove, transitions);
        for (auto it = to_remove.begin(); it != to_remove.end(); ++it)
            msfg.remove_arcs(*it);

        if  (transitions.size() <= target_vocab_size) break;
        iteration++;
    }

    // Write transitions
    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 $0x978, %rsp            # imm = 0x978
movq %rsi, %rbx
movl %edi, %r14d
leaq -0x608(%rbp), %rdi
callq 0x8d2a
leaq -0x540(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x21ecb(%rip), %rsi     # 0x27020
leaq 0x21f19(%rip), %rdx     # 0x27075
leaq -0x550(%rbp), %rdi
callq 0x7f78
leaq -0x608(%rbp), %rdi
leaq -0x550(%rbp), %rsi
callq 0x8d90
movq %rax, %r15
leaq -0x520(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0x21eee(%rip), %rsi     # 0x2707e
leaq 0x21eeb(%rip), %rdx     # 0x27082
leaq -0x530(%rbp), %rdi
callq 0x7f78
leaq -0x440(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22662(%rip), %rdx     # 0x27817
leaq -0x450(%rbp), %rdi
movq %rdx, %rsi
callq 0x7f78
leaq -0x420(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22641(%rip), %rdx     # 0x27817
leaq -0x430(%rbp), %rdi
movq %rdx, %rsi
callq 0x7f78
leaq -0x400(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x21e7f(%rip), %rsi     # 0x27076
leaq 0x21e84(%rip), %rdx     # 0x27082
leaq -0x410(%rbp), %rdi
callq 0x7f78
leaq -0x530(%rbp), %rdx
leaq -0x450(%rbp), %rcx
leaq -0x430(%rbp), %r8
leaq -0x410(%rbp), %r9
movq %r15, %rdi
movl $0x68, %esi
callq 0x8da8
movq %rax, %r15
leaq -0x3e0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x21e3b(%rip), %rsi     # 0x27083
leaq 0x21e40(%rip), %rdx     # 0x2708f
leaq -0x3f0(%rbp), %rdi
callq 0x7f78
leaq -0x3c0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x21e23(%rip), %rsi     # 0x27090
leaq 0x21e1f(%rip), %rdx     # 0x27093
leaq -0x3d0(%rbp), %rdi
callq 0x7f78
leaq -0x3a0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x21e02(%rip), %rsi     # 0x27094
leaq 0x21dfe(%rip), %rdx     # 0x27097
leaq -0x3b0(%rbp), %rdi
callq 0x7f78
leaq -0x380(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x21de1(%rip), %rsi     # 0x27098
leaq 0x21dfa(%rip), %rdx     # 0x270b8
leaq -0x390(%rbp), %rdi
callq 0x7f78
leaq -0x3f0(%rbp), %rdx
leaq -0x3d0(%rbp), %rcx
leaq -0x3b0(%rbp), %r8
leaq -0x390(%rbp), %r9
movq %r15, %rdi
movl $0x72, %esi
callq 0x8da8
movq %rax, %r15
leaq -0x360(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x21db1(%rip), %rsi     # 0x270b9
leaq 0x21db8(%rip), %rdx     # 0x270c7
leaq -0x370(%rbp), %rdi
callq 0x7f78
leaq -0x340(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x21d63(%rip), %rsi     # 0x27090
leaq 0x21d5f(%rip), %rdx     # 0x27093
leaq -0x350(%rbp), %rdi
callq 0x7f78
leaq -0x320(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x21da5(%rip), %rsi     # 0x270f7
leaq 0x21d9f(%rip), %rdx     # 0x270f8
leaq -0x330(%rbp), %rdi
callq 0x7f78
leaq -0x300(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x21d51(%rip), %rsi     # 0x270c8
leaq 0x21d7a(%rip), %rdx     # 0x270f8
leaq -0x310(%rbp), %rdi
callq 0x7f78
leaq -0x370(%rbp), %rdx
leaq -0x350(%rbp), %rcx
leaq -0x330(%rbp), %r8
leaq -0x310(%rbp), %r9
movq %r15, %rdi
movl $0x6d, %esi
callq 0x8da8
movq %rax, %r15
leaq -0x2e0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x21d31(%rip), %rsi     # 0x270f9
leaq 0x21d38(%rip), %rdx     # 0x27107
leaq -0x2f0(%rbp), %rdi
callq 0x7f78
leaq -0x2c0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x21d1b(%rip), %rsi     # 0x27108
leaq 0x21d1c(%rip), %rdx     # 0x27110
leaq -0x2d0(%rbp), %rdi
callq 0x7f78
leaq -0x2a0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x21cff(%rip), %rsi     # 0x27111
leaq 0x21cfd(%rip), %rdx     # 0x27116
leaq -0x2b0(%rbp), %rdi
callq 0x7f78
leaq -0x280(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x21ce0(%rip), %rsi     # 0x27117
leaq 0x21d04(%rip), %rdx     # 0x27142
leaq -0x290(%rbp), %rdi
callq 0x7f78
leaq -0x2f0(%rbp), %rdx
leaq -0x2d0(%rbp), %rcx
leaq -0x2b0(%rbp), %r8
leaq -0x290(%rbp), %r9
movq %r15, %rdi
movl $0x76, %esi
callq 0x8da8
movq %rax, %r15
leaq -0x260(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x21cbb(%rip), %rsi     # 0x27143
leaq 0x21cc4(%rip), %rdx     # 0x27153
leaq -0x270(%rbp), %rdi
callq 0x7f78
leaq -0x240(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x2236a(%rip), %rdx     # 0x27817
leaq -0x250(%rbp), %rdi
movq %rdx, %rsi
callq 0x7f78
leaq -0x220(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22349(%rip), %rdx     # 0x27817
leaq -0x230(%rbp), %rdi
movq %rdx, %rsi
callq 0x7f78
leaq -0x200(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x21c65(%rip), %rsi     # 0x27154
leaq 0x21c92(%rip), %rdx     # 0x27188
leaq -0x210(%rbp), %rdi
callq 0x7f78
leaq -0x270(%rbp), %rdx
leaq -0x250(%rbp), %rcx
leaq -0x230(%rbp), %r8
leaq -0x210(%rbp), %r9
movq %r15, %rdi
movl $0x66, %esi
callq 0x8da8
movq %rax, %r15
leaq -0x1e0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x21c49(%rip), %rsi     # 0x27189
leaq 0x21c47(%rip), %rdx     # 0x2718e
leaq -0x1f0(%rbp), %rdi
callq 0x7f78
leaq -0x1c0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x222b2(%rip), %rdx     # 0x27817
leaq -0x1d0(%rbp), %rdi
movq %rdx, %rsi
callq 0x7f78
leaq -0x1a0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22291(%rip), %rdx     # 0x27817
leaq -0x1b0(%rbp), %rdi
movq %rdx, %rsi
callq 0x7f78
leaq -0x180(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x21be8(%rip), %rsi     # 0x2718f
leaq 0x21c00(%rip), %rdx     # 0x271ae
leaq -0x190(%rbp), %rdi
callq 0x7f78
leaq -0x1f0(%rbp), %rdx
leaq -0x1d0(%rbp), %rcx
leaq -0x1b0(%rbp), %r8
leaq -0x190(%rbp), %r9
movq %r15, %rdi
movl $0x38, %esi
callq 0x8da8
movq -0x190(%rbp), %rdi
leaq -0x180(%rbp), %rax
cmpq %rax, %rdi
je 0x55fb
callq 0x4360
movq -0x1b0(%rbp), %rdi
leaq -0x1a0(%rbp), %rax
cmpq %rax, %rdi
je 0x5613
callq 0x4360
movq -0x1d0(%rbp), %rdi
leaq -0x1c0(%rbp), %rax
cmpq %rax, %rdi
je 0x562b
callq 0x4360
movq -0x1f0(%rbp), %rdi
leaq -0x1e0(%rbp), %rax
cmpq %rax, %rdi
je 0x5643
callq 0x4360
movq -0x210(%rbp), %rdi
leaq -0x200(%rbp), %rax
cmpq %rax, %rdi
je 0x565b
callq 0x4360
movq -0x230(%rbp), %rdi
leaq -0x220(%rbp), %rax
cmpq %rax, %rdi
je 0x5673
callq 0x4360
movq -0x250(%rbp), %rdi
leaq -0x240(%rbp), %rax
cmpq %rax, %rdi
je 0x568b
callq 0x4360
movq -0x270(%rbp), %rdi
leaq -0x260(%rbp), %rax
cmpq %rax, %rdi
je 0x56a3
callq 0x4360
movq -0x290(%rbp), %rdi
leaq -0x280(%rbp), %rax
cmpq %rax, %rdi
je 0x56bb
callq 0x4360
movq -0x2b0(%rbp), %rdi
leaq -0x2a0(%rbp), %rax
cmpq %rax, %rdi
je 0x56d3
callq 0x4360
movq -0x2d0(%rbp), %rdi
leaq -0x2c0(%rbp), %rax
cmpq %rax, %rdi
je 0x56eb
callq 0x4360
movq -0x2f0(%rbp), %rdi
leaq -0x2e0(%rbp), %rax
cmpq %rax, %rdi
je 0x5703
callq 0x4360
movq -0x310(%rbp), %rdi
leaq -0x300(%rbp), %rax
cmpq %rax, %rdi
je 0x571b
callq 0x4360
movq -0x330(%rbp), %rdi
leaq -0x320(%rbp), %rax
cmpq %rax, %rdi
je 0x5733
callq 0x4360
movq -0x350(%rbp), %rdi
leaq -0x340(%rbp), %rax
cmpq %rax, %rdi
je 0x574b
callq 0x4360
movq -0x370(%rbp), %rdi
leaq -0x360(%rbp), %rax
cmpq %rax, %rdi
je 0x5763
callq 0x4360
movq -0x390(%rbp), %rdi
leaq -0x380(%rbp), %rax
cmpq %rax, %rdi
je 0x577b
callq 0x4360
movq -0x3b0(%rbp), %rdi
leaq -0x3a0(%rbp), %rax
cmpq %rax, %rdi
je 0x5793
callq 0x4360
movq -0x3d0(%rbp), %rdi
leaq -0x3c0(%rbp), %rax
cmpq %rax, %rdi
je 0x57ab
callq 0x4360
movq -0x3f0(%rbp), %rdi
leaq -0x3e0(%rbp), %rax
cmpq %rax, %rdi
je 0x57c3
callq 0x4360
movq -0x410(%rbp), %rdi
leaq -0x400(%rbp), %rax
cmpq %rax, %rdi
je 0x57db
callq 0x4360
movq -0x430(%rbp), %rdi
leaq -0x420(%rbp), %rax
cmpq %rax, %rdi
je 0x57f3
callq 0x4360
movq -0x450(%rbp), %rdi
leaq -0x440(%rbp), %rax
cmpq %rax, %rdi
je 0x580b
callq 0x4360
movq -0x530(%rbp), %rdi
cmpq %r13, %rdi
je 0x581c
callq 0x4360
movq -0x550(%rbp), %rdi
cmpq %r12, %rdi
je 0x582d
callq 0x4360
leaq -0x608(%rbp), %rdi
movl %r14d, %esi
movq %rbx, %rdx
callq 0x97d0
movq -0x568(%rbp), %rax
subq -0x570(%rbp), %rax
cmpq $0x80, %rax
je 0x5870
movq 0x2f76c(%rip), %rax     # 0x34fc8
movq (%rax), %rsi
leaq -0x608(%rbp), %rdi
movl $0x1, %edx
callq 0x9d72
leaq -0x500(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x2192d(%rip), %rsi     # 0x271af
leaq 0x2192e(%rip), %rdx     # 0x271b7
leaq -0x510(%rbp), %rdi
callq 0x7f78
leaq -0x608(%rbp), %rdi
leaq -0x510(%rbp), %rsi
callq 0x988a
movq %rax, %rdi
callq 0x8c4c
movl %eax, %ebx
movq -0x510(%rbp), %rdi
cmpq %r14, %rdi
je 0x58c3
callq 0x4360
leaq -0x4e0(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x218e3(%rip), %rsi     # 0x271b8
leaq 0x218e6(%rip), %rdx     # 0x271c2
leaq -0x4f0(%rbp), %rdi
callq 0x7f78
leaq -0x608(%rbp), %rdi
leaq -0x4f0(%rbp), %rsi
callq 0x988a
movq %rax, %rdi
callq 0x8c4c
movl %eax, %r12d
movq -0x4f0(%rbp), %rdi
cmpq %r14, %rdi
je 0x5917
callq 0x4360
leaq -0x4c0(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x2189a(%rip), %rsi     # 0x271c3
leaq 0x2189d(%rip), %rdx     # 0x271cd
leaq -0x4d0(%rbp), %rdi
callq 0x7f78
leaq -0x608(%rbp), %rdi
leaq -0x4d0(%rbp), %rsi
callq 0x988a
movq %rax, %rdi
callq 0x8c4c
movl %eax, %r14d
movq -0x4d0(%rbp), %rdi
cmpq %r15, %rdi
je 0x596b
callq 0x4360
movq -0x570(%rbp), %rax
leaq -0xd8(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0xe8(%rbp), %rdi
callq 0x7eda
movq -0x570(%rbp), %rax
leaq -0x130(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq 0x20(%rax), %rsi
movq 0x28(%rax), %rdx
addq %rsi, %rdx
leaq -0x140(%rbp), %rdi
callq 0x7eda
movq -0x570(%rbp), %rax
leaq -0x110(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq 0x40(%rax), %rsi
movq 0x48(%rax), %rdx
addq %rsi, %rdx
leaq -0x120(%rbp), %rdi
callq 0x7eda
movq -0x570(%rbp), %rax
leaq -0x160(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq 0x60(%rax), %rsi
movq 0x68(%rax), %rdx
addq %rsi, %rdx
leaq -0x170(%rbp), %rdi
callq 0x7eda
leaq -0x4a0(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0x21723(%rip), %rsi     # 0x27143
leaq 0x2172c(%rip), %rdx     # 0x27153
leaq -0x4b0(%rbp), %rdi
callq 0x7f78
leaq -0x608(%rbp), %rdi
leaq -0x4b0(%rbp), %rsi
callq 0x988a
movb 0x4a(%rax), %r15b
movq -0x4b0(%rbp), %rdi
cmpq %r13, %rdi
je 0x5a5b
callq 0x4360
leaq -0x480(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0x2171c(%rip), %rsi     # 0x27189
leaq 0x2171a(%rip), %rdx     # 0x2718e
leaq -0x490(%rbp), %rdi
callq 0x7f78
leaq -0x608(%rbp), %rdi
leaq -0x490(%rbp), %rsi
callq 0x988a
movb 0x4a(%rax), %al
movb %al, -0x2c(%rbp)
movq -0x490(%rbp), %rdi
cmpq %r13, %rdi
je 0x5aaa
callq 0x4360
movq 0x2f537(%rip), %rdi     # 0x34fe8
leaq 0x21716(%rip), %rsi     # 0x271ce
movl $0x21, %edx
callq 0x4410
movq -0x140(%rbp), %rsi
movq -0x138(%rbp), %rdx
movq 0x2f511(%rip), %rdi     # 0x34fe8
callq 0x4410
movq %rax, %rdi
callq 0x4180
movq 0x2f4fd(%rip), %rdi     # 0x34fe8
leaq 0x216fe(%rip), %rsi     # 0x271f0
movl $0x16, %edx
callq 0x4410
movq -0xe8(%rbp), %rsi
movq -0xe0(%rbp), %rdx
movq 0x2f4d7(%rip), %rdi     # 0x34fe8
callq 0x4410
movq %rax, %rdi
callq 0x4180
movq 0x2f4c3(%rip), %rdi     # 0x34fe8
leaq 0x216db(%rip), %rsi     # 0x27207
movl $0x12, %edx
callq 0x4410
movq -0x120(%rbp), %rsi
movq -0x118(%rbp), %rdx
movq 0x2f49d(%rip), %rdi     # 0x34fe8
callq 0x4410
movq %rax, %rdi
callq 0x4180
movq 0x2f489(%rip), %rdi     # 0x34fe8
leaq 0x216b4(%rip), %rsi     # 0x2721a
movl $0x19, %edx
callq 0x4410
movq -0x170(%rbp), %rsi
movq -0x168(%rbp), %rdx
movq 0x2f463(%rip), %rdi     # 0x34fe8
callq 0x4410
movq %rax, %rdi
callq 0x4180
movq 0x2f44f(%rip), %rdi     # 0x34fe8
leaq 0x21694(%rip), %rsi     # 0x27234
movl $0x24, %edx
callq 0x4410
movl %ebx, %esi
movq 0x2f435(%rip), %rdi     # 0x34fe8
callq 0x4260
movq %rax, %rdi
callq 0x4180
movq 0x2f421(%rip), %rdi     # 0x34fe8
leaq 0x2168b(%rip), %rsi     # 0x27259
movl $0x33, %edx
callq 0x4410
movl %r12d, %esi
movq 0x2f406(%rip), %rdi     # 0x34fe8
callq 0x4260
movq %rax, %rdi
callq 0x4180
movq 0x2f3f2(%rip), %rdi     # 0x34fe8
leaq 0x21690(%rip), %rsi     # 0x2728d
movl $0x1f, %edx
callq 0x4410
movl %r14d, %esi
movq 0x2f3d7(%rip), %rdi     # 0x34fe8
movq %rsi, -0x148(%rbp)
callq 0x4260
movq %rax, %rdi
callq 0x4180
movq 0x2f3bc(%rip), %rdi     # 0x34fe8
leaq 0x2167a(%rip), %rsi     # 0x272ad
movl $0x16, %edx
callq 0x4410
movq 0x2f3a4(%rip), %rdi     # 0x34fe8
movsd 0x213bc(%rip), %xmm0    # 0x27008
callq 0x45c0
movq %rax, %rdi
callq 0x4180
movq 0x2f388(%rip), %rdi     # 0x34fe8
leaq 0x2165d(%rip), %rsi     # 0x272c4
movl $0x22, %edx
callq 0x4410
movzbl %r15b, %esi
movq 0x2f36c(%rip), %rdi     # 0x34fe8
movl %esi, -0xc4(%rbp)
callq 0x4600
movq %rax, %rdi
callq 0x4180
movq 0x2f352(%rip), %rdi     # 0x34fe8
leaq 0x2164a(%rip), %rsi     # 0x272e7
movl $0x1c, %edx
callq 0x4410
movzbl -0x2c(%rbp), %r14d
movq 0x2f335(%rip), %rdi     # 0x34fe8
movl %r14d, %esi
callq 0x4600
movq %rax, %rdi
callq 0x4180
leaq -0x998(%rbp), %rax
xorl %r15d, %r15d
movl %r15d, (%rax)
movq %r15, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %r15, 0x20(%rax)
leaq -0x968(%rbp), %rax
movl %r15d, (%rax)
movq %r15, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %r15, 0x20(%rax)
leaq -0x690(%rbp), %rax
movl %r15d, (%rax)
movq %r15, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %r15, 0x20(%rax)
leaq 0x2f6a5(%rip), %rsi     # 0x353c0
leaq -0x7c0(%rbp), %rdi
callq 0x6d34
leaq -0x58(%rbp), %rax
movl %r15d, (%rax)
movq %r15, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %r15, 0x20(%rax)
leaq -0x88(%rbp), %rax
movl %r15d, (%rax)
movq %r15, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %r15, 0x20(%rax)
leaq -0x660(%rbp), %rax
movl %r15d, (%rax)
movq %r15, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %r15, 0x20(%rax)
leaq -0x630(%rbp), %rax
movl %r15d, (%rax)
movq %r15, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %r15, 0x20(%rax)
movq 0x2f255(%rip), %rdi     # 0x34fe8
leaq 0x2156a(%rip), %rsi     # 0x27304
movl $0x1c, %edx
callq 0x4410
movq -0x140(%rbp), %rsi
movq -0x138(%rbp), %rdx
movq 0x2f22f(%rip), %rdi     # 0x34fe8
callq 0x4410
movq %rax, %rdi
callq 0x4180
leaq -0x60(%rbp), %rdi
leaq -0x140(%rbp), %rsi
callq 0x237f6
testl %eax, %eax
jns 0x5e03
movq 0x2f207(%rip), %rdi     # 0x34fe8
leaq 0x21539(%rip), %rsi     # 0x27321
movl $0x28, %edx
callq 0x4410
movq 0x2f1ef(%rip), %rdi     # 0x34fe8
callq 0x4180
jmp 0x5f6e
movq 0x2f1de(%rip), %rdi     # 0x34fe8
leaq 0x21539(%rip), %rsi     # 0x2734a
movl $0x18, %edx
callq 0x4410
leaq -0x60(%rbp), %rdi
callq 0x23fde
movq 0x2f1bd(%rip), %rdi     # 0x34fe8
movl %eax, %esi
callq 0x4650
movq %rax, %rdi
callq 0x4180
movq 0x2f1a7(%rip), %rdi     # 0x34fe8
leaq 0x2151b(%rip), %rsi     # 0x27363
movl $0x12, %edx
callq 0x4410
movq -0x38(%rbp), %rsi
movq 0x2f18b(%rip), %rdi     # 0x34fe8
callq 0x4260
movq %rax, %rdi
callq 0x4180
leaq -0x6c0(%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 -0x60(%rbp), %rdi
leaq -0x6c8(%rbp), %rsi
callq 0x24032
leaq -0x6c8(%rbp), %rdi
leaq -0x638(%rbp), %rsi
movl %r12d, %edx
movl %r14d, %ecx
callq 0x6b3c
movq 0x2f12f(%rip), %rdi     # 0x34fe8
leaq 0x214b6(%rip), %rsi     # 0x27376
movl $0x12, %edx
callq 0x4410
movq -0xe8(%rbp), %rsi
movq -0xe0(%rbp), %rdx
movq 0x2f109(%rip), %rdi     # 0x34fe8
callq 0x4410
movq %rax, %rdi
callq 0x4180
leaq -0x460(%rbp), %r15
movq %r15, -0x10(%r15)
movq -0xe8(%rbp), %rsi
movq -0xe0(%rbp), %rdx
addq %rsi, %rdx
leaq -0x470(%rbp), %rdi
callq 0x7eda
leaq -0x470(%rbp), %rdi
leaq -0x698(%rbp), %rsi
leaq -0xc8(%rbp), %rdx
movl %r14d, %ecx
callq 0x1e796
movl %eax, %r14d
movq -0x470(%rbp), %rdi
cmpq %r15, %rdi
je 0x5f45
callq 0x4360
testl %r14d, %r14d
jns 0x5f78
movq 0x2f097(%rip), %rdi     # 0x34fe8
leaq 0x21431(%rip), %rsi     # 0x27389
movl $0x26, %edx
callq 0x4410
movq 0x2f07f(%rip), %rdi     # 0x34fe8
callq 0x4180
movl $0x1, %edi
callq 0x4430
movq 0x2f069(%rip), %rdi     # 0x34fe8
leaq 0x21890(%rip), %rsi     # 0x27816
movl $0x1, %edx
callq 0x4410
movq 0x2f051(%rip), %rdi     # 0x34fe8
leaq 0x21412(%rip), %rsi     # 0x273b0
movl $0xf, %edx
callq 0x4410
movq -0x670(%rbp), %rsi
movq 0x2f032(%rip), %rdi     # 0x34fe8
callq 0x4260
movq %rax, %rdi
callq 0x4180
movq 0x2f01e(%rip), %rdi     # 0x34fe8
leaq 0x21845(%rip), %rsi     # 0x27816
movl $0x1, %edx
callq 0x4410
movq 0x2f006(%rip), %rdi     # 0x34fe8
leaq 0x213d7(%rip), %rsi     # 0x273c0
movl $0x15, %edx
callq 0x4410
movl -0xc8(%rbp), %esi
movq 0x2efe8(%rip), %rdi     # 0x34fe8
callq 0x4650
movq %rax, %rdi
callq 0x4180
movq 0x2efd4(%rip), %rdi     # 0x34fe8
leaq 0x213bb(%rip), %rsi     # 0x273d6
movl $0xd, %edx
callq 0x4410
movq -0x120(%rbp), %rsi
movq -0x118(%rbp), %rdx
movq 0x2efae(%rip), %rdi     # 0x34fe8
callq 0x4410
movq %rax, %rdi
callq 0x4180
leaq -0x7c0(%rbp), %rdi
leaq -0x120(%rbp), %rsi
callq 0x14642
movq -0x38(%rbp), %rax
cmpq -0x700(%rbp), %rax
jae 0x6154
xorps %xmm0, %xmm0
movaps %xmm0, -0x940(%rbp)
movq $0x0, -0x930(%rbp)
movq 0x2ef61(%rip), %rdi     # 0x34fe8
leaq 0x21356(%rip), %rsi     # 0x273e4
movl $0x8, %edx
callq 0x4410
movq -0x700(%rbp), %rsi
subq -0x38(%rbp), %rsi
movq 0x2ef3e(%rip), %rdi     # 0x34fe8
callq 0x4260
movq %rax, %r14
leaq 0x21334(%rip), %rsi     # 0x273ed
movl $0x1e, %edx
movq %rax, %rdi
callq 0x4410
movq %r14, %rdi
callq 0x4180
leaq -0x720(%rbp), %r13
movq 0x10(%r13), %r14
cmpq %r13, %r14
je 0x6119
leaq -0x60(%rbp), %r15
leaq 0x20(%r14), %r12
movq %r15, %rdi
movq %r12, %rsi
callq 0x8016
leaq -0x58(%rbp), %rcx
cmpq %rcx, %rax
jne 0x6109
leaq -0x940(%rbp), %rdi
movq %r12, %rsi
callq 0x6ee4
movq %r14, %rdi
callq 0x4290
movq %rax, %r14
cmpq %r13, %rax
jne 0x60e2
movq -0x940(%rbp), %r14
cmpq -0x938(%rbp), %r14
je 0x6148
leaq -0x7c0(%rbp), %r15
movq %r15, %rdi
movq %r14, %rsi
callq 0x14036
addq $0x20, %r14
cmpq -0x938(%rbp), %r14
jne 0x6130
leaq -0x940(%rbp), %rdi
callq 0x6f30
leaq -0x60(%rbp), %rdi
leaq -0x7c0(%rbp), %rsi
callq 0x1a2a2
movq 0x2ee7d(%rip), %rcx     # 0x34fe8
movq (%rcx), %rax
movq -0x18(%rax), %rax
movq $0xf, 0x8(%rcx,%rax)
leaq -0xb8(%rbp), %r15
movl $0x1, -0x2c(%rbp)
leaq -0x8d0(%rbp), %r13
leaq -0x100(%rbp), %r14
movl $0xa, %edx
movq 0x2ee45(%rip), %rdi     # 0x34fe8
leaq 0x21262(%rip), %rsi     # 0x2740c
callq 0x4410
movq 0x2ee32(%rip), %rdi     # 0x34fe8
movl -0x2c(%rbp), %esi
callq 0x4650
movq %rax, %rdi
callq 0x4180
leaq -0x698(%rbp), %rdi
leaq -0x7c0(%rbp), %rsi
leaq -0x90(%rbp), %rdx
leaq -0x668(%rbp), %rcx
movl -0xc4(%rbp), %r8d
callq 0x226be
movsd %xmm0, -0x150(%rbp)
movq -0x50(%rbp), %rcx
movq -0x80(%rbp), %rax
testq %rcx, %rcx
je 0x6250
testq %rax, %rax
je 0x6295
movq %rax, -0x50(%rbp)
movq %rcx, -0x80(%rbp)
movups -0x48(%rbp), %xmm0
movups -0x78(%rbp), %xmm1
movups %xmm1, -0x48(%rbp)
movups %xmm0, -0x78(%rbp)
leaq -0x58(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0x80(%rbp), %rax
leaq -0x88(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0x38(%rbp), %rax
movq -0x68(%rbp), %rcx
movq %rcx, -0x38(%rbp)
movq %rax, -0x68(%rbp)
jmp 0x62d3
testq %rax, %rax
je 0x62d3
movl -0x88(%rbp), %ecx
movl %ecx, -0x58(%rbp)
movq %rax, -0x50(%rbp)
movups -0x78(%rbp), %xmm0
movups %xmm0, -0x48(%rbp)
leaq -0x58(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0x68(%rbp), %rax
movq %rax, -0x38(%rbp)
xorl %ecx, %ecx
movq %rcx, -0x80(%rbp)
leaq -0x88(%rbp), %rax
movq %rax, -0x78(%rbp)
movq %rax, -0x70(%rbp)
movq %rcx, -0x68(%rbp)
jmp 0x62d3
movl -0x58(%rbp), %eax
movl %eax, -0x88(%rbp)
movq %rcx, -0x80(%rbp)
movups -0x48(%rbp), %xmm0
movups %xmm0, -0x78(%rbp)
leaq -0x88(%rbp), %rax
movq %rax, 0x8(%rcx)
movq -0x38(%rbp), %rax
movq %rax, -0x68(%rbp)
xorl %ecx, %ecx
movq %rcx, -0x50(%rbp)
leaq -0x58(%rbp), %rax
movq %rax, -0x48(%rbp)
movq %rax, -0x40(%rbp)
movq %rcx, -0x38(%rbp)
leaq -0x60(%rbp), %rdi
movsd 0x20d29(%rip), %xmm0    # 0x27008
callq 0x22888
leaq -0x60(%rbp), %rdi
leaq -0x7c0(%rbp), %rsi
callq 0x1a2a2
leaq -0x90(%rbp), %rdi
callq 0x82c2
movl $0x14, %edx
movq 0x2ecdc(%rip), %rdi     # 0x34fe8
leaq 0x21104(%rip), %rsi     # 0x27417
callq 0x4410
movq 0x2ecc9(%rip), %rdi     # 0x34fe8
movsd -0x150(%rbp), %xmm0
callq 0x45c0
movq %rax, %rdi
callq 0x4180
movl $0x18, %edx
movq 0x2eca8(%rip), %rdi     # 0x34fe8
leaq 0x21003(%rip), %rsi     # 0x2734a
callq 0x4410
leaq -0x60(%rbp), %rdi
callq 0x23fde
movq 0x2ec8c(%rip), %rdi     # 0x34fe8
movl %eax, %esi
callq 0x4650
movq %rax, %rdi
callq 0x4180
movl $0x12, %edx
movq 0x2ec71(%rip), %rdi     # 0x34fe8
leaq 0x20fe5(%rip), %rsi     # 0x27363
callq 0x4410
movq -0x38(%rbp), %rsi
movq 0x2ec5a(%rip), %rdi     # 0x34fe8
callq 0x4260
movq %rax, %rdi
callq 0x4180
leaq -0x940(%rbp), %rdi
callq 0x44c0
movl $0x10, %edx
leaq -0x940(%rbp), %rdi
leaq 0x21072(%rip), %rsi     # 0x2742c
callq 0x4410
leaq -0x940(%rbp), %rdi
movl -0x2c(%rbp), %esi
callq 0x4650
movl $0x3, %edx
movq %rax, %rdi
leaq 0x21060(%rip), %rsi     # 0x2743d
callq 0x4410
movl $0xd, %edx
movq 0x2ebfa(%rip), %rdi     # 0x34fe8
leaq 0x2104c(%rip), %rsi     # 0x27441
callq 0x4410
leaq -0xc0(%rbp), %rdi
leaq -0x938(%rbp), %rsi
callq 0x45a0
movq -0xc0(%rbp), %rsi
movq -0xb8(%rbp), %rdx
movq 0x2ebc6(%rip), %rdi     # 0x34fe8
callq 0x4410
movq %rax, %rdi
callq 0x4180
movq -0xc0(%rbp), %rdi
leaq -0xb0(%rbp), %rax
cmpq %rax, %rdi
je 0x6447
callq 0x4360
leaq -0xc0(%rbp), %rdi
leaq -0x938(%rbp), %rsi
callq 0x45a0
leaq -0x60(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
xorl %edx, %edx
movl $0x6, %ecx
callq 0x234ba
movq -0xc0(%rbp), %rdi
leaq -0xb0(%rbp), %rax
cmpq %rax, %rdi
je 0x6489
callq 0x4360
movl $0x19, %edx
movq 0x2eb53(%rip), %rdi     # 0x34fe8
leaq 0x20fb3(%rip), %rsi     # 0x2744f
callq 0x4410
movq 0x2eb40(%rip), %rdi     # 0x34fe8
callq 0x4180
movl $0x0, -0xb8(%rbp)
xorl %eax, %eax
movq %rax, -0xb0(%rbp)
movq %r15, -0xa8(%rbp)
movq %r15, -0xa0(%rbp)
movq %rax, -0x98(%rbp)
cmpl $0x1, -0x2c(%rbp)
jne 0x651f
movq -0x38(%rbp), %rdi
movq %rdi, %rax
shrq $0x3, %rax
movabsq $0x20c49ba5e353f7cf, %rcx # imm = 0x20C49BA5E353F7CF
mulq %rcx
shrq $0x4, %rdx
imulq $0x3e8, %rdx, %rax      # imm = 0x3E8
subq %rax, %rdi
je 0x651f
leaq -0x668(%rbp), %rsi
leaq -0xc0(%rbp), %rdx
leaq -0x638(%rbp), %rcx
callq 0x247ac
jmp 0x653b
movl %ebx, %edi
leaq -0x668(%rbp), %rsi
leaq -0xc0(%rbp), %rdx
leaq -0x638(%rbp), %rcx
callq 0x247ac
xorps %xmm0, %xmm0
movaps %xmm0, -0x100(%rbp)
movq $0x0, -0xf0(%rbp)
movq -0xa8(%rbp), %r12
cmpq %r15, %r12
je 0x6579
leaq 0x20(%r12), %rsi
movq %r14, %rdi
callq 0x6ee4
movq %r12, %rdi
callq 0x4290
movq %rax, %r12
cmpq %r15, %rax
jne 0x655c
movq %r14, %rdi
leaq -0x60(%rbp), %rsi
callq 0x23a24
movq -0x100(%rbp), %r12
cmpq -0xf8(%rbp), %r12
je 0x65aa
leaq -0x7c0(%rbp), %rdi
movq %r12, %rsi
callq 0x14036
addq $0x20, %r12
jmp 0x658c
movq -0x38(%rbp), %r12
incl -0x2c(%rbp)
movq %r14, %rdi
callq 0x6f30
leaq -0xc0(%rbp), %rdi
callq 0x7c10
leaq -0x940(%rbp), %rdi
movq 0x2e9e5(%rip), %rsi     # 0x34fb8
callq 0x41c0
movq %r13, %rdi
callq 0x4110
cmpq -0x148(%rbp), %r12
ja 0x6197
leaq -0x60(%rbp), %rdi
leaq -0x170(%rbp), %rsi
xorl %edx, %edx
movl $0x6, %ecx
callq 0x234ba
xorl %edi, %edi
callq 0x4430
jmp 0x667e
jmp 0x6611
jmp 0x6611
movq %rax, %rbx
leaq -0x100(%rbp), %rdi
callq 0x6f30
jmp 0x6627
jmp 0x6624
movq %rax, %rbx
leaq -0xc0(%rbp), %rdi
callq 0x7c10
jmp 0x665b
jmp 0x6658
jmp 0x663b
jmp 0x6658
movq %rax, %rbx
movq -0xc0(%rbp), %rdi
leaq -0xb0(%rbp), %rax
cmpq %rax, %rdi
je 0x665b
callq 0x4360
jmp 0x665b
movq %rax, %rbx
movq 0x2e956(%rip), %rsi     # 0x34fb8
leaq -0x940(%rbp), %rdi
callq 0x41c0
movq %r13, %rdi
callq 0x4110
jmp 0x66ae
jmp 0x667e
jmp 0x667e
jmp 0x667e
movq %rax, %rbx
jmp 0x66ae
jmp 0x6689
jmp 0x6689
jmp 0x6689
movq %rax, %rbx
leaq -0x940(%rbp), %rdi
callq 0x6f30
jmp 0x66ae
movq %rax, %rbx
movq -0x470(%rbp), %rdi
cmpq %r15, %rdi
je 0x66ae
callq 0x4360
leaq -0x6c8(%rbp), %rdi
callq 0x7c10
jmp 0x66c1
jmp 0x66be
movq %rax, %rbx
leaq -0x638(%rbp), %rdi
callq 0x7c7a
leaq -0x668(%rbp), %rdi
callq 0x7c10
leaq -0x90(%rbp), %rdi
callq 0x7ce4
leaq -0x60(%rbp), %rdi
callq 0x7ce4
leaq -0x7c0(%rbp), %rdi
callq 0x1348c
jmp 0x66ff
movq %rax, %rbx
leaq -0x698(%rbp), %rdi
callq 0x7c10
leaq -0x970(%rbp), %rdi
callq 0x7c10
leaq -0x9a0(%rbp), %rdi
callq 0x7c10
jmp 0x674e
jmp 0x674b
movq %rax, %rbx
movq -0x490(%rbp), %rdi
jmp 0x673f
jmp 0x674b
movq %rax, %rbx
movq -0x4b0(%rbp), %rdi
cmpq %r13, %rdi
je 0x674e
callq 0x4360
jmp 0x674e
movq %rax, %rbx
movq -0x170(%rbp), %rdi
leaq -0x160(%rbp), %rax
cmpq %rax, %rdi
je 0x676b
callq 0x4360
jmp 0x676b
movq %rax, %rbx
movq -0x120(%rbp), %rdi
leaq -0x110(%rbp), %rax
cmpq %rax, %rdi
je 0x6788
callq 0x4360
jmp 0x6788
movq %rax, %rbx
movq -0x140(%rbp), %rdi
leaq -0x130(%rbp), %rax
cmpq %rax, %rdi
je 0x67a5
callq 0x4360
jmp 0x67a5
movq %rax, %rbx
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
jne 0x6ae2
jmp 0x6aec
jmp 0x6ae9
movq %rax, %rbx
movq -0x4d0(%rbp), %rdi
cmpq %r15, %rdi
jne 0x6ae2
jmp 0x6aec
jmp 0x6ae9
movq %rax, %rbx
movq -0x4f0(%rbp), %rdi
jmp 0x67fe
jmp 0x6ae9
movq %rax, %rbx
movq -0x510(%rbp), %rdi
cmpq %r14, %rdi
jne 0x6ae2
jmp 0x6aec
jmp 0x6ae9
jmp 0x6ae9
movq %rax, %rbx
movq -0x190(%rbp), %rdi
leaq -0x180(%rbp), %rax
cmpq %rax, %rdi
je 0x6836
callq 0x4360
jmp 0x6836
movq %rax, %rbx
movq -0x1b0(%rbp), %rdi
leaq -0x1a0(%rbp), %rax
cmpq %rax, %rdi
je 0x6853
callq 0x4360
jmp 0x6853
movq %rax, %rbx
movq -0x1d0(%rbp), %rdi
leaq -0x1c0(%rbp), %rax
cmpq %rax, %rdi
je 0x6870
callq 0x4360
jmp 0x6870
movq %rax, %rbx
movq -0x1f0(%rbp), %rdi
leaq -0x1e0(%rbp), %rax
cmpq %rax, %rdi
je 0x688f
callq 0x4360
jmp 0x688f
jmp 0x688c
movq %rax, %rbx
movq -0x210(%rbp), %rdi
leaq -0x200(%rbp), %rax
cmpq %rax, %rdi
je 0x68ac
callq 0x4360
jmp 0x68ac
movq %rax, %rbx
movq -0x230(%rbp), %rdi
leaq -0x220(%rbp), %rax
cmpq %rax, %rdi
je 0x68c9
callq 0x4360
jmp 0x68c9
movq %rax, %rbx
movq -0x250(%rbp), %rdi
leaq -0x240(%rbp), %rax
cmpq %rax, %rdi
je 0x68e6
callq 0x4360
jmp 0x68e6
movq %rax, %rbx
movq -0x270(%rbp), %rdi
leaq -0x260(%rbp), %rax
cmpq %rax, %rdi
je 0x6905
callq 0x4360
jmp 0x6905
jmp 0x6902
movq %rax, %rbx
movq -0x290(%rbp), %rdi
leaq -0x280(%rbp), %rax
cmpq %rax, %rdi
je 0x6922
callq 0x4360
jmp 0x6922
movq %rax, %rbx
movq -0x2b0(%rbp), %rdi
leaq -0x2a0(%rbp), %rax
cmpq %rax, %rdi
je 0x693f
callq 0x4360
jmp 0x693f
movq %rax, %rbx
movq -0x2d0(%rbp), %rdi
leaq -0x2c0(%rbp), %rax
cmpq %rax, %rdi
je 0x695c
callq 0x4360
jmp 0x695c
movq %rax, %rbx
movq -0x2f0(%rbp), %rdi
leaq -0x2e0(%rbp), %rax
cmpq %rax, %rdi
je 0x697b
callq 0x4360
jmp 0x697b
jmp 0x6978
movq %rax, %rbx
movq -0x310(%rbp), %rdi
leaq -0x300(%rbp), %rax
cmpq %rax, %rdi
je 0x6998
callq 0x4360
jmp 0x6998
movq %rax, %rbx
movq -0x330(%rbp), %rdi
leaq -0x320(%rbp), %rax
cmpq %rax, %rdi
je 0x69b5
callq 0x4360
jmp 0x69b5
movq %rax, %rbx
movq -0x350(%rbp), %rdi
leaq -0x340(%rbp), %rax
cmpq %rax, %rdi
je 0x69d2
callq 0x4360
jmp 0x69d2
movq %rax, %rbx
movq -0x370(%rbp), %rdi
leaq -0x360(%rbp), %rax
cmpq %rax, %rdi
je 0x69f1
callq 0x4360
jmp 0x69f1
jmp 0x69ee
movq %rax, %rbx
movq -0x390(%rbp), %rdi
leaq -0x380(%rbp), %rax
cmpq %rax, %rdi
je 0x6a0e
callq 0x4360
jmp 0x6a0e
movq %rax, %rbx
movq -0x3b0(%rbp), %rdi
leaq -0x3a0(%rbp), %rax
cmpq %rax, %rdi
je 0x6a2b
callq 0x4360
jmp 0x6a2b
movq %rax, %rbx
movq -0x3d0(%rbp), %rdi
leaq -0x3c0(%rbp), %rax
cmpq %rax, %rdi
je 0x6a48
callq 0x4360
jmp 0x6a48
movq %rax, %rbx
movq -0x3f0(%rbp), %rdi
leaq -0x3e0(%rbp), %rax
cmpq %rax, %rdi
je 0x6a67
callq 0x4360
jmp 0x6a67
jmp 0x6a64
movq %rax, %rbx
movq -0x410(%rbp), %rdi
leaq -0x400(%rbp), %rax
cmpq %rax, %rdi
je 0x6a84
callq 0x4360
jmp 0x6a84
movq %rax, %rbx
movq -0x430(%rbp), %rdi
leaq -0x420(%rbp), %rax
cmpq %rax, %rdi
je 0x6aa1
callq 0x4360
jmp 0x6aa1
movq %rax, %rbx
movq -0x450(%rbp), %rdi
leaq -0x440(%rbp), %rax
cmpq %rax, %rdi
je 0x6abe
callq 0x4360
jmp 0x6abe
movq %rax, %rbx
movq -0x530(%rbp), %rdi
cmpq %r13, %rdi
je 0x6ad6
callq 0x4360
jmp 0x6ad6
jmp 0x6ad3
movq %rax, %rbx
movq -0x550(%rbp), %rdi
cmpq %r12, %rdi
je 0x6aec
callq 0x4360
jmp 0x6aec
movq %rax, %rbx
leaq -0x570(%rbp), %rdi
callq 0x6f30
leaq -0x5a0(%rbp), %rdi
callq 0x7da6
leaq -0x5d0(%rbp), %rdi
callq 0x7e10
leaq -0x5e8(%rbp), %r14
movq %r14, %rdi
callq 0x7d72
movq -0x20(%r14), %rdi
leaq -0x5f8(%rbp), %rax
cmpq %rax, %rdi
je 0x6b34
callq 0x4360
movq %rbx, %rdi
callq 0x4680