// File: /workspace/github_cpp_makefile_star2_O1/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 0x8d56
leaq -0x540(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x22ecb(%rip), %rsi     # 0x28020
leaq 0x22f19(%rip), %rdx     # 0x28075
leaq -0x550(%rbp), %rdi
callq 0x7f76
leaq -0x608(%rbp), %rdi
leaq -0x550(%rbp), %rsi
callq 0x8dbc
movq %rax, %r15
leaq -0x520(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0x22eee(%rip), %rsi     # 0x2807e
leaq 0x22eeb(%rip), %rdx     # 0x28082
leaq -0x530(%rbp), %rdi
callq 0x7f76
leaq -0x440(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x23662(%rip), %rdx     # 0x28817
leaq -0x450(%rbp), %rdi
movq %rdx, %rsi
callq 0x7f76
leaq -0x420(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x23641(%rip), %rdx     # 0x28817
leaq -0x430(%rbp), %rdi
movq %rdx, %rsi
callq 0x7f76
leaq -0x400(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22e7f(%rip), %rsi     # 0x28076
leaq 0x22e84(%rip), %rdx     # 0x28082
leaq -0x410(%rbp), %rdi
callq 0x7f76
leaq -0x530(%rbp), %rdx
leaq -0x450(%rbp), %rcx
leaq -0x430(%rbp), %r8
leaq -0x410(%rbp), %r9
movq %r15, %rdi
movl $0x68, %esi
callq 0x8dd4
movq %rax, %r15
leaq -0x3e0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22e3b(%rip), %rsi     # 0x28083
leaq 0x22e40(%rip), %rdx     # 0x2808f
leaq -0x3f0(%rbp), %rdi
callq 0x7f76
leaq -0x3c0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22e23(%rip), %rsi     # 0x28090
leaq 0x22e1f(%rip), %rdx     # 0x28093
leaq -0x3d0(%rbp), %rdi
callq 0x7f76
leaq -0x3a0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22e02(%rip), %rsi     # 0x28094
leaq 0x22dfe(%rip), %rdx     # 0x28097
leaq -0x3b0(%rbp), %rdi
callq 0x7f76
leaq -0x380(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22de1(%rip), %rsi     # 0x28098
leaq 0x22dfa(%rip), %rdx     # 0x280b8
leaq -0x390(%rbp), %rdi
callq 0x7f76
leaq -0x3f0(%rbp), %rdx
leaq -0x3d0(%rbp), %rcx
leaq -0x3b0(%rbp), %r8
leaq -0x390(%rbp), %r9
movq %r15, %rdi
movl $0x72, %esi
callq 0x8dd4
movq %rax, %r15
leaq -0x360(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22db1(%rip), %rsi     # 0x280b9
leaq 0x22db8(%rip), %rdx     # 0x280c7
leaq -0x370(%rbp), %rdi
callq 0x7f76
leaq -0x340(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22d63(%rip), %rsi     # 0x28090
leaq 0x22d5f(%rip), %rdx     # 0x28093
leaq -0x350(%rbp), %rdi
callq 0x7f76
leaq -0x320(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22da5(%rip), %rsi     # 0x280f7
leaq 0x22d9f(%rip), %rdx     # 0x280f8
leaq -0x330(%rbp), %rdi
callq 0x7f76
leaq -0x300(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22d51(%rip), %rsi     # 0x280c8
leaq 0x22d7a(%rip), %rdx     # 0x280f8
leaq -0x310(%rbp), %rdi
callq 0x7f76
leaq -0x370(%rbp), %rdx
leaq -0x350(%rbp), %rcx
leaq -0x330(%rbp), %r8
leaq -0x310(%rbp), %r9
movq %r15, %rdi
movl $0x6d, %esi
callq 0x8dd4
movq %rax, %r15
leaq -0x2e0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22d31(%rip), %rsi     # 0x280f9
leaq 0x22d38(%rip), %rdx     # 0x28107
leaq -0x2f0(%rbp), %rdi
callq 0x7f76
leaq -0x2c0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22d1b(%rip), %rsi     # 0x28108
leaq 0x22d1c(%rip), %rdx     # 0x28110
leaq -0x2d0(%rbp), %rdi
callq 0x7f76
leaq -0x2a0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22cff(%rip), %rsi     # 0x28111
leaq 0x22cfd(%rip), %rdx     # 0x28116
leaq -0x2b0(%rbp), %rdi
callq 0x7f76
leaq -0x280(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22ce0(%rip), %rsi     # 0x28117
leaq 0x22d04(%rip), %rdx     # 0x28142
leaq -0x290(%rbp), %rdi
callq 0x7f76
leaq -0x2f0(%rbp), %rdx
leaq -0x2d0(%rbp), %rcx
leaq -0x2b0(%rbp), %r8
leaq -0x290(%rbp), %r9
movq %r15, %rdi
movl $0x76, %esi
callq 0x8dd4
movq %rax, %r15
leaq -0x260(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22cbb(%rip), %rsi     # 0x28143
leaq 0x22cc4(%rip), %rdx     # 0x28153
leaq -0x270(%rbp), %rdi
callq 0x7f76
leaq -0x240(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x2336a(%rip), %rdx     # 0x28817
leaq -0x250(%rbp), %rdi
movq %rdx, %rsi
callq 0x7f76
leaq -0x220(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x23349(%rip), %rdx     # 0x28817
leaq -0x230(%rbp), %rdi
movq %rdx, %rsi
callq 0x7f76
leaq -0x200(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22c65(%rip), %rsi     # 0x28154
leaq 0x22c92(%rip), %rdx     # 0x28188
leaq -0x210(%rbp), %rdi
callq 0x7f76
leaq -0x270(%rbp), %rdx
leaq -0x250(%rbp), %rcx
leaq -0x230(%rbp), %r8
leaq -0x210(%rbp), %r9
movq %r15, %rdi
movl $0x66, %esi
callq 0x8dd4
movq %rax, %r15
leaq -0x1e0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22c49(%rip), %rsi     # 0x28189
leaq 0x22c47(%rip), %rdx     # 0x2818e
leaq -0x1f0(%rbp), %rdi
callq 0x7f76
leaq -0x1c0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x232b2(%rip), %rdx     # 0x28817
leaq -0x1d0(%rbp), %rdi
movq %rdx, %rsi
callq 0x7f76
leaq -0x1a0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x23291(%rip), %rdx     # 0x28817
leaq -0x1b0(%rbp), %rdi
movq %rdx, %rsi
callq 0x7f76
leaq -0x180(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22be8(%rip), %rsi     # 0x2818f
leaq 0x22c00(%rip), %rdx     # 0x281ae
leaq -0x190(%rbp), %rdi
callq 0x7f76
leaq -0x1f0(%rbp), %rdx
leaq -0x1d0(%rbp), %rcx
leaq -0x1b0(%rbp), %r8
leaq -0x190(%rbp), %r9
movq %r15, %rdi
movl $0x38, %esi
callq 0x8dd4
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 0x9822
movq -0x568(%rbp), %rax
subq -0x570(%rbp), %rax
cmpq $0x80, %rax
je 0x5870
movq 0x3076c(%rip), %rax     # 0x35fc8
movq (%rax), %rsi
leaq -0x608(%rbp), %rdi
movl $0x1, %edx
callq 0x9dc4
leaq -0x500(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x2292d(%rip), %rsi     # 0x281af
leaq 0x2292e(%rip), %rdx     # 0x281b7
leaq -0x510(%rbp), %rdi
callq 0x7f76
leaq -0x608(%rbp), %rdi
leaq -0x510(%rbp), %rsi
callq 0x98dc
movq %rax, %rdi
callq 0x8c78
movl %eax, %ebx
movq -0x510(%rbp), %rdi
cmpq %r14, %rdi
je 0x58c3
callq 0x4360
leaq -0x4e0(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x228e3(%rip), %rsi     # 0x281b8
leaq 0x228e6(%rip), %rdx     # 0x281c2
leaq -0x4f0(%rbp), %rdi
callq 0x7f76
leaq -0x608(%rbp), %rdi
leaq -0x4f0(%rbp), %rsi
callq 0x98dc
movq %rax, %rdi
callq 0x8c78
movl %eax, %r12d
movq -0x4f0(%rbp), %rdi
cmpq %r14, %rdi
je 0x5917
callq 0x4360
leaq -0x4c0(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x2289a(%rip), %rsi     # 0x281c3
leaq 0x2289d(%rip), %rdx     # 0x281cd
leaq -0x4d0(%rbp), %rdi
callq 0x7f76
leaq -0x608(%rbp), %rdi
leaq -0x4d0(%rbp), %rsi
callq 0x98dc
movq %rax, %rdi
callq 0x8c78
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 0x7edc
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 0x7edc
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 0x7edc
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 0x7edc
leaq -0x4a0(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0x22723(%rip), %rsi     # 0x28143
leaq 0x2272c(%rip), %rdx     # 0x28153
leaq -0x4b0(%rbp), %rdi
callq 0x7f76
leaq -0x608(%rbp), %rdi
leaq -0x4b0(%rbp), %rsi
callq 0x98dc
movb 0x4a(%rax), %r15b
movq -0x4b0(%rbp), %rdi
cmpq %r13, %rdi
je 0x5a5b
callq 0x4360
leaq -0x480(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0x2271c(%rip), %rsi     # 0x28189
leaq 0x2271a(%rip), %rdx     # 0x2818e
leaq -0x490(%rbp), %rdi
callq 0x7f76
leaq -0x608(%rbp), %rdi
leaq -0x490(%rbp), %rsi
callq 0x98dc
movb 0x4a(%rax), %al
movb %al, -0x2c(%rbp)
movq -0x490(%rbp), %rdi
cmpq %r13, %rdi
je 0x5aaa
callq 0x4360
movq 0x30537(%rip), %rdi     # 0x35fe8
leaq 0x22716(%rip), %rsi     # 0x281ce
movl $0x21, %edx
callq 0x4410
movq -0x140(%rbp), %rsi
movq -0x138(%rbp), %rdx
movq 0x30511(%rip), %rdi     # 0x35fe8
callq 0x4410
movq %rax, %rdi
callq 0x4180
movq 0x304fd(%rip), %rdi     # 0x35fe8
leaq 0x226fe(%rip), %rsi     # 0x281f0
movl $0x16, %edx
callq 0x4410
movq -0xe8(%rbp), %rsi
movq -0xe0(%rbp), %rdx
movq 0x304d7(%rip), %rdi     # 0x35fe8
callq 0x4410
movq %rax, %rdi
callq 0x4180
movq 0x304c3(%rip), %rdi     # 0x35fe8
leaq 0x226db(%rip), %rsi     # 0x28207
movl $0x12, %edx
callq 0x4410
movq -0x120(%rbp), %rsi
movq -0x118(%rbp), %rdx
movq 0x3049d(%rip), %rdi     # 0x35fe8
callq 0x4410
movq %rax, %rdi
callq 0x4180
movq 0x30489(%rip), %rdi     # 0x35fe8
leaq 0x226b4(%rip), %rsi     # 0x2821a
movl $0x19, %edx
callq 0x4410
movq -0x170(%rbp), %rsi
movq -0x168(%rbp), %rdx
movq 0x30463(%rip), %rdi     # 0x35fe8
callq 0x4410
movq %rax, %rdi
callq 0x4180
movq 0x3044f(%rip), %rdi     # 0x35fe8
leaq 0x22694(%rip), %rsi     # 0x28234
movl $0x24, %edx
callq 0x4410
movl %ebx, %esi
movq 0x30435(%rip), %rdi     # 0x35fe8
callq 0x4260
movq %rax, %rdi
callq 0x4180
movq 0x30421(%rip), %rdi     # 0x35fe8
leaq 0x2268b(%rip), %rsi     # 0x28259
movl $0x33, %edx
callq 0x4410
movl %r12d, %esi
movq 0x30406(%rip), %rdi     # 0x35fe8
callq 0x4260
movq %rax, %rdi
callq 0x4180
movq 0x303f2(%rip), %rdi     # 0x35fe8
leaq 0x22690(%rip), %rsi     # 0x2828d
movl $0x1f, %edx
callq 0x4410
movl %r14d, %esi
movq 0x303d7(%rip), %rdi     # 0x35fe8
movq %rsi, -0x148(%rbp)
callq 0x4260
movq %rax, %rdi
callq 0x4180
movq 0x303bc(%rip), %rdi     # 0x35fe8
leaq 0x2267a(%rip), %rsi     # 0x282ad
movl $0x16, %edx
callq 0x4410
movq 0x303a4(%rip), %rdi     # 0x35fe8
movsd 0x223bc(%rip), %xmm0    # 0x28008
callq 0x45c0
movq %rax, %rdi
callq 0x4180
movq 0x30388(%rip), %rdi     # 0x35fe8
leaq 0x2265d(%rip), %rsi     # 0x282c4
movl $0x22, %edx
callq 0x4410
movzbl %r15b, %esi
movq 0x3036c(%rip), %rdi     # 0x35fe8
movl %esi, -0xc4(%rbp)
callq 0x4600
movq %rax, %rdi
callq 0x4180
movq 0x30352(%rip), %rdi     # 0x35fe8
leaq 0x2264a(%rip), %rsi     # 0x282e7
movl $0x1c, %edx
callq 0x4410
movzbl -0x2c(%rbp), %r14d
movq 0x30335(%rip), %rdi     # 0x35fe8
movl %r14d, %esi
callq 0x4600
movq %rax, %rdi
callq 0x4180
leaq -0x990(%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 -0x960(%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 0x306a5(%rip), %rsi     # 0x363c0
leaq -0x938(%rbp), %rdi
callq 0x6d52
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 0x30255(%rip), %rdi     # 0x35fe8
leaq 0x2256a(%rip), %rsi     # 0x28304
movl $0x1c, %edx
callq 0x4410
movq -0x140(%rbp), %rsi
movq -0x138(%rbp), %rdx
movq 0x3022f(%rip), %rdi     # 0x35fe8
callq 0x4410
movq %rax, %rdi
callq 0x4180
leaq -0x60(%rbp), %rdi
leaq -0x140(%rbp), %rsi
callq 0x239ea
testl %eax, %eax
jns 0x5e03
movq 0x30207(%rip), %rdi     # 0x35fe8
leaq 0x22539(%rip), %rsi     # 0x28321
movl $0x28, %edx
callq 0x4410
movq 0x301ef(%rip), %rdi     # 0x35fe8
callq 0x4180
jmp 0x5f6e
movq 0x301de(%rip), %rdi     # 0x35fe8
leaq 0x22539(%rip), %rsi     # 0x2834a
movl $0x18, %edx
callq 0x4410
leaq -0x60(%rbp), %rdi
callq 0x2418e
movq 0x301bd(%rip), %rdi     # 0x35fe8
movl %eax, %esi
callq 0x4650
movq %rax, %rdi
callq 0x4180
movq 0x301a7(%rip), %rdi     # 0x35fe8
leaq 0x2251b(%rip), %rsi     # 0x28363
movl $0x12, %edx
callq 0x4410
movq -0x38(%rbp), %rsi
movq 0x3018b(%rip), %rdi     # 0x35fe8
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 0x241e2
leaq -0x6c8(%rbp), %rdi
leaq -0x638(%rbp), %rsi
movl %r12d, %edx
movl %r14d, %ecx
callq 0x6b48
movq 0x3012f(%rip), %rdi     # 0x35fe8
leaq 0x224b6(%rip), %rsi     # 0x28376
movl $0x12, %edx
callq 0x4410
movq -0xe8(%rbp), %rsi
movq -0xe0(%rbp), %rdx
movq 0x30109(%rip), %rdi     # 0x35fe8
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 0x7edc
leaq -0x470(%rbp), %rdi
leaq -0x698(%rbp), %rsi
leaq -0xc8(%rbp), %rdx
movl %r14d, %ecx
callq 0x1e8e2
movl %eax, %r14d
movq -0x470(%rbp), %rdi
cmpq %r15, %rdi
je 0x5f45
callq 0x4360
testl %r14d, %r14d
jns 0x5f78
movq 0x30097(%rip), %rdi     # 0x35fe8
leaq 0x22431(%rip), %rsi     # 0x28389
movl $0x26, %edx
callq 0x4410
movq 0x3007f(%rip), %rdi     # 0x35fe8
callq 0x4180
movl $0x1, %edi
callq 0x4430
movq 0x30069(%rip), %rdi     # 0x35fe8
leaq 0x22890(%rip), %rsi     # 0x28816
movl $0x1, %edx
callq 0x4410
movq 0x30051(%rip), %rdi     # 0x35fe8
leaq 0x22412(%rip), %rsi     # 0x283b0
movl $0xf, %edx
callq 0x4410
movq -0x670(%rbp), %rsi
movq 0x30032(%rip), %rdi     # 0x35fe8
callq 0x4260
movq %rax, %rdi
callq 0x4180
movq 0x3001e(%rip), %rdi     # 0x35fe8
leaq 0x22845(%rip), %rsi     # 0x28816
movl $0x1, %edx
callq 0x4410
movq 0x30006(%rip), %rdi     # 0x35fe8
leaq 0x223d7(%rip), %rsi     # 0x283c0
movl $0x15, %edx
callq 0x4410
movl -0xc8(%rbp), %esi
movq 0x2ffe8(%rip), %rdi     # 0x35fe8
callq 0x4650
movq %rax, %rdi
callq 0x4180
movq 0x2ffd4(%rip), %rdi     # 0x35fe8
leaq 0x223bb(%rip), %rsi     # 0x283d6
movl $0xd, %edx
callq 0x4410
movq -0x120(%rbp), %rsi
movq -0x118(%rbp), %rdx
movq 0x2ffae(%rip), %rdi     # 0x35fe8
callq 0x4410
movq %rax, %rdi
callq 0x4180
leaq -0x938(%rbp), %rdi
leaq -0x120(%rbp), %rsi
callq 0x1475e
movq -0x38(%rbp), %rax
cmpq -0x878(%rbp), %rax
jae 0x6154
xorps %xmm0, %xmm0
movaps %xmm0, -0x840(%rbp)
movq $0x0, -0x830(%rbp)
movq 0x2ff61(%rip), %rdi     # 0x35fe8
leaq 0x22356(%rip), %rsi     # 0x283e4
movl $0x8, %edx
callq 0x4410
movq -0x878(%rbp), %rsi
subq -0x38(%rbp), %rsi
movq 0x2ff3e(%rip), %rdi     # 0x35fe8
callq 0x4260
movq %rax, %r14
leaq 0x22334(%rip), %rsi     # 0x283ed
movl $0x1e, %edx
movq %rax, %rdi
callq 0x4410
movq %r14, %rdi
callq 0x4180
leaq -0x898(%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 0x8010
leaq -0x58(%rbp), %rcx
cmpq %rcx, %rax
jne 0x6109
leaq -0x840(%rbp), %rdi
movq %r12, %rsi
callq 0x6f02
movq %r14, %rdi
callq 0x4290
movq %rax, %r14
cmpq %r13, %rax
jne 0x60e2
movq -0x840(%rbp), %r14
cmpq -0x838(%rbp), %r14
je 0x6148
leaq -0x938(%rbp), %r15
movq %r15, %rdi
movq %r14, %rsi
callq 0x14158
addq $0x20, %r14
cmpq -0x838(%rbp), %r14
jne 0x6130
leaq -0x840(%rbp), %rdi
callq 0x6f4e
leaq -0x60(%rbp), %rdi
leaq -0x938(%rbp), %rsi
callq 0x1a3db
movq 0x2fe7d(%rip), %rcx     # 0x35fe8
movq (%rcx), %rax
movq -0x18(%rax), %rax
movq $0xf, 0x8(%rcx,%rax)
leaq -0xb8(%rbp), %r14
movl $0x1, -0x2c(%rbp)
leaq -0x100(%rbp), %r15
movq -0x148(%rbp), %r13
movl $0xa, %edx
movq 0x2fe45(%rip), %rdi     # 0x35fe8
leaq 0x22262(%rip), %rsi     # 0x2840c
callq 0x4410
movq 0x2fe32(%rip), %rdi     # 0x35fe8
movl -0x2c(%rbp), %esi
callq 0x4650
movq %rax, %rdi
callq 0x4180
leaq -0x698(%rbp), %rdi
leaq -0x938(%rbp), %rsi
leaq -0x90(%rbp), %rdx
leaq -0x668(%rbp), %rcx
movl -0xc4(%rbp), %r8d
callq 0x228ae
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 0x21d29(%rip), %xmm0    # 0x28008
callq 0x22a78
leaq -0x60(%rbp), %rdi
leaq -0x938(%rbp), %rsi
callq 0x1a3db
leaq -0x90(%rbp), %rdi
callq 0x82ee
movl $0x14, %edx
movq 0x2fcdc(%rip), %rdi     # 0x35fe8
leaq 0x22104(%rip), %rsi     # 0x28417
callq 0x4410
movq 0x2fcc9(%rip), %rdi     # 0x35fe8
movsd -0x150(%rbp), %xmm0
callq 0x45c0
movq %rax, %rdi
callq 0x4180
movl $0x18, %edx
movq 0x2fca8(%rip), %rdi     # 0x35fe8
leaq 0x22003(%rip), %rsi     # 0x2834a
callq 0x4410
leaq -0x60(%rbp), %rdi
callq 0x2418e
movq 0x2fc8c(%rip), %rdi     # 0x35fe8
movl %eax, %esi
callq 0x4650
movq %rax, %rdi
callq 0x4180
movl $0x12, %edx
movq 0x2fc71(%rip), %rdi     # 0x35fe8
leaq 0x21fe5(%rip), %rsi     # 0x28363
callq 0x4410
movq -0x38(%rbp), %rsi
movq 0x2fc5a(%rip), %rdi     # 0x35fe8
callq 0x4260
movq %rax, %rdi
callq 0x4180
leaq -0x840(%rbp), %rdi
callq 0x44c0
movl $0x10, %edx
leaq -0x840(%rbp), %rdi
leaq 0x22072(%rip), %rsi     # 0x2842c
callq 0x4410
leaq -0x840(%rbp), %rdi
movl -0x2c(%rbp), %esi
callq 0x4650
movl $0x3, %edx
movq %rax, %rdi
leaq 0x22060(%rip), %rsi     # 0x2843d
callq 0x4410
movl $0xd, %edx
movq 0x2fbfa(%rip), %rdi     # 0x35fe8
leaq 0x2204c(%rip), %rsi     # 0x28441
callq 0x4410
leaq -0xc0(%rbp), %rdi
leaq -0x838(%rbp), %rsi
callq 0x45a0
movq -0xc0(%rbp), %rsi
movq -0xb8(%rbp), %rdx
movq 0x2fbc6(%rip), %rdi     # 0x35fe8
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 -0x838(%rbp), %rsi
callq 0x45a0
leaq -0x60(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
xorl %edx, %edx
movl $0x6, %ecx
callq 0x236ae
movq -0xc0(%rbp), %rdi
leaq -0xb0(%rbp), %rax
cmpq %rax, %rdi
je 0x6489
callq 0x4360
movl $0x19, %edx
movq 0x2fb53(%rip), %rdi     # 0x35fe8
leaq 0x21fb3(%rip), %rsi     # 0x2844f
callq 0x4410
movq 0x2fb40(%rip), %rdi     # 0x35fe8
callq 0x4180
movl $0x0, -0xb8(%rbp)
xorl %eax, %eax
movq %rax, -0xb0(%rbp)
movq %r14, -0xa8(%rbp)
movq %r14, -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 0x2495c
jmp 0x653b
movl %ebx, %edi
leaq -0x668(%rbp), %rsi
leaq -0xc0(%rbp), %rdx
leaq -0x638(%rbp), %rcx
callq 0x2495c
xorps %xmm0, %xmm0
movaps %xmm0, -0x100(%rbp)
movq $0x0, -0xf0(%rbp)
movq -0xa8(%rbp), %r12
cmpq %r14, %r12
je 0x6579
leaq 0x20(%r12), %rsi
movq %r15, %rdi
callq 0x6f02
movq %r12, %rdi
callq 0x4290
movq %rax, %r12
cmpq %r14, %rax
jne 0x655c
movq %r15, %rdi
leaq -0x60(%rbp), %rsi
callq 0x23c18
movq -0x100(%rbp), %r12
cmpq -0xf8(%rbp), %r12
je 0x65aa
leaq -0x938(%rbp), %rdi
movq %r12, %rsi
callq 0x14158
addq $0x20, %r12
jmp 0x658c
movq -0x38(%rbp), %r12
xorl %eax, %eax
cmpq %r13, %r12
seta %al
addl %eax, -0x2c(%rbp)
movq %r15, %rdi
callq 0x6f4e
leaq -0xc0(%rbp), %rdi
callq 0x7c12
leaq -0x840(%rbp), %rdi
movq 0x2f9dd(%rip), %rsi     # 0x35fb8
callq 0x41c0
leaq -0x7d0(%rbp), %rdi
callq 0x4110
cmpq %r13, %r12
ja 0x6197
leaq -0x60(%rbp), %rdi
leaq -0x170(%rbp), %rsi
xorl %edx, %edx
movl $0x6, %ecx
callq 0x236ae
xorl %edi, %edi
callq 0x4430
jmp 0x668a
jmp 0x6619
jmp 0x6619
movq %rax, %rbx
leaq -0x100(%rbp), %rdi
callq 0x6f4e
jmp 0x662f
jmp 0x662c
movq %rax, %rbx
leaq -0xc0(%rbp), %rdi
callq 0x7c12
jmp 0x6663
jmp 0x6660
jmp 0x6643
jmp 0x6660
movq %rax, %rbx
movq -0xc0(%rbp), %rdi
leaq -0xb0(%rbp), %rax
cmpq %rax, %rdi
je 0x6663
callq 0x4360
jmp 0x6663
movq %rax, %rbx
movq 0x2f94e(%rip), %rsi     # 0x35fb8
leaq -0x840(%rbp), %rdi
callq 0x41c0
leaq -0x7d0(%rbp), %rdi
callq 0x4110
jmp 0x66ba
jmp 0x668a
jmp 0x668a
jmp 0x668a
movq %rax, %rbx
jmp 0x66ba
jmp 0x6695
jmp 0x6695
jmp 0x6695
movq %rax, %rbx
leaq -0x840(%rbp), %rdi
callq 0x6f4e
jmp 0x66ba
movq %rax, %rbx
movq -0x470(%rbp), %rdi
cmpq %r15, %rdi
je 0x66ba
callq 0x4360
leaq -0x6c8(%rbp), %rdi
callq 0x7c12
jmp 0x66cd
jmp 0x66ca
movq %rax, %rbx
leaq -0x638(%rbp), %rdi
callq 0x7c7c
leaq -0x668(%rbp), %rdi
callq 0x7c12
leaq -0x90(%rbp), %rdi
callq 0x7ce6
leaq -0x60(%rbp), %rdi
callq 0x7ce6
leaq -0x938(%rbp), %rdi
callq 0x135c4
jmp 0x670b
movq %rax, %rbx
leaq -0x698(%rbp), %rdi
callq 0x7c12
leaq -0x968(%rbp), %rdi
callq 0x7c12
leaq -0x998(%rbp), %rdi
callq 0x7c12
jmp 0x675a
jmp 0x6757
movq %rax, %rbx
movq -0x490(%rbp), %rdi
jmp 0x674b
jmp 0x6757
movq %rax, %rbx
movq -0x4b0(%rbp), %rdi
cmpq %r13, %rdi
je 0x675a
callq 0x4360
jmp 0x675a
movq %rax, %rbx
movq -0x170(%rbp), %rdi
leaq -0x160(%rbp), %rax
cmpq %rax, %rdi
je 0x6777
callq 0x4360
jmp 0x6777
movq %rax, %rbx
movq -0x120(%rbp), %rdi
leaq -0x110(%rbp), %rax
cmpq %rax, %rdi
je 0x6794
callq 0x4360
jmp 0x6794
movq %rax, %rbx
movq -0x140(%rbp), %rdi
leaq -0x130(%rbp), %rax
cmpq %rax, %rdi
je 0x67b1
callq 0x4360
jmp 0x67b1
movq %rax, %rbx
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
jne 0x6aee
jmp 0x6af8
jmp 0x6af5
movq %rax, %rbx
movq -0x4d0(%rbp), %rdi
cmpq %r15, %rdi
jne 0x6aee
jmp 0x6af8
jmp 0x6af5
movq %rax, %rbx
movq -0x4f0(%rbp), %rdi
jmp 0x680a
jmp 0x6af5
movq %rax, %rbx
movq -0x510(%rbp), %rdi
cmpq %r14, %rdi
jne 0x6aee
jmp 0x6af8
jmp 0x6af5
jmp 0x6af5
movq %rax, %rbx
movq -0x190(%rbp), %rdi
leaq -0x180(%rbp), %rax
cmpq %rax, %rdi
je 0x6842
callq 0x4360
jmp 0x6842
movq %rax, %rbx
movq -0x1b0(%rbp), %rdi
leaq -0x1a0(%rbp), %rax
cmpq %rax, %rdi
je 0x685f
callq 0x4360
jmp 0x685f
movq %rax, %rbx
movq -0x1d0(%rbp), %rdi
leaq -0x1c0(%rbp), %rax
cmpq %rax, %rdi
je 0x687c
callq 0x4360
jmp 0x687c
movq %rax, %rbx
movq -0x1f0(%rbp), %rdi
leaq -0x1e0(%rbp), %rax
cmpq %rax, %rdi
je 0x689b
callq 0x4360
jmp 0x689b
jmp 0x6898
movq %rax, %rbx
movq -0x210(%rbp), %rdi
leaq -0x200(%rbp), %rax
cmpq %rax, %rdi
je 0x68b8
callq 0x4360
jmp 0x68b8
movq %rax, %rbx
movq -0x230(%rbp), %rdi
leaq -0x220(%rbp), %rax
cmpq %rax, %rdi
je 0x68d5
callq 0x4360
jmp 0x68d5
movq %rax, %rbx
movq -0x250(%rbp), %rdi
leaq -0x240(%rbp), %rax
cmpq %rax, %rdi
je 0x68f2
callq 0x4360
jmp 0x68f2
movq %rax, %rbx
movq -0x270(%rbp), %rdi
leaq -0x260(%rbp), %rax
cmpq %rax, %rdi
je 0x6911
callq 0x4360
jmp 0x6911
jmp 0x690e
movq %rax, %rbx
movq -0x290(%rbp), %rdi
leaq -0x280(%rbp), %rax
cmpq %rax, %rdi
je 0x692e
callq 0x4360
jmp 0x692e
movq %rax, %rbx
movq -0x2b0(%rbp), %rdi
leaq -0x2a0(%rbp), %rax
cmpq %rax, %rdi
je 0x694b
callq 0x4360
jmp 0x694b
movq %rax, %rbx
movq -0x2d0(%rbp), %rdi
leaq -0x2c0(%rbp), %rax
cmpq %rax, %rdi
je 0x6968
callq 0x4360
jmp 0x6968
movq %rax, %rbx
movq -0x2f0(%rbp), %rdi
leaq -0x2e0(%rbp), %rax
cmpq %rax, %rdi
je 0x6987
callq 0x4360
jmp 0x6987
jmp 0x6984
movq %rax, %rbx
movq -0x310(%rbp), %rdi
leaq -0x300(%rbp), %rax
cmpq %rax, %rdi
je 0x69a4
callq 0x4360
jmp 0x69a4
movq %rax, %rbx
movq -0x330(%rbp), %rdi
leaq -0x320(%rbp), %rax
cmpq %rax, %rdi
je 0x69c1
callq 0x4360
jmp 0x69c1
movq %rax, %rbx
movq -0x350(%rbp), %rdi
leaq -0x340(%rbp), %rax
cmpq %rax, %rdi
je 0x69de
callq 0x4360
jmp 0x69de
movq %rax, %rbx
movq -0x370(%rbp), %rdi
leaq -0x360(%rbp), %rax
cmpq %rax, %rdi
je 0x69fd
callq 0x4360
jmp 0x69fd
jmp 0x69fa
movq %rax, %rbx
movq -0x390(%rbp), %rdi
leaq -0x380(%rbp), %rax
cmpq %rax, %rdi
je 0x6a1a
callq 0x4360
jmp 0x6a1a
movq %rax, %rbx
movq -0x3b0(%rbp), %rdi
leaq -0x3a0(%rbp), %rax
cmpq %rax, %rdi
je 0x6a37
callq 0x4360
jmp 0x6a37
movq %rax, %rbx
movq -0x3d0(%rbp), %rdi
leaq -0x3c0(%rbp), %rax
cmpq %rax, %rdi
je 0x6a54
callq 0x4360
jmp 0x6a54
movq %rax, %rbx
movq -0x3f0(%rbp), %rdi
leaq -0x3e0(%rbp), %rax
cmpq %rax, %rdi
je 0x6a73
callq 0x4360
jmp 0x6a73
jmp 0x6a70
movq %rax, %rbx
movq -0x410(%rbp), %rdi
leaq -0x400(%rbp), %rax
cmpq %rax, %rdi
je 0x6a90
callq 0x4360
jmp 0x6a90
movq %rax, %rbx
movq -0x430(%rbp), %rdi
leaq -0x420(%rbp), %rax
cmpq %rax, %rdi
je 0x6aad
callq 0x4360
jmp 0x6aad
movq %rax, %rbx
movq -0x450(%rbp), %rdi
leaq -0x440(%rbp), %rax
cmpq %rax, %rdi
je 0x6aca
callq 0x4360
jmp 0x6aca
movq %rax, %rbx
movq -0x530(%rbp), %rdi
cmpq %r13, %rdi
je 0x6ae2
callq 0x4360
jmp 0x6ae2
jmp 0x6adf
movq %rax, %rbx
movq -0x550(%rbp), %rdi
cmpq %r12, %rdi
je 0x6af8
callq 0x4360
jmp 0x6af8
movq %rax, %rbx
leaq -0x570(%rbp), %rdi
callq 0x6f4e
leaq -0x5a0(%rbp), %rdi
callq 0x7da8
leaq -0x5d0(%rbp), %rdi
callq 0x7e12
leaq -0x5e8(%rbp), %r14
movq %r14, %rdi
callq 0x7d74
movq -0x20(%r14), %rdi
leaq -0x5f8(%rbp), %rax
cmpq %rax, %rdi
je 0x6b40
callq 0x4360
movq %rbx, %rdi
callq 0x4680