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

    conf::Config config;
    config("usage: counts [OPTION...] INPUT COUNTS1 COUNTS2\n")
      ('h', "help", "", "", "display help")
      ('v', "vocabulary=FILE", "arg", "", "Unigram model file")
      ('t', "transitions=FILE", "arg", "", "Bigram model file")
      ('f', "forward-backward", "", "", "Use Forward-backward segmentation instead of Viterbi")
      ('w', "weights", "", "", "Training examples are weighted")
      ('8', "utf-8", "", "", "Utf-8 character encoding in use");
    config.default_parse(argc, argv);
    if (config.arguments.size() != 3) config.print_help(stderr, 1);

    if (!config["vocabulary"].specified && !config["transitions"].specified) {
        cerr << "Please define vocabulary or transitions" << endl;
        exit(EXIT_FAILURE);
    }

    if (config["vocabulary"].specified && config["transitions"].specified) {
        cerr << "Please don't define both vocabulary and transitions" << endl;
        exit(EXIT_FAILURE);
    }

    string vocab_fname;
    string trans_fname;
    int maxlen;
    map<string, flt_type> vocab;
    StringSet *ss_vocab = NULL;
    transitions_t transitions;
    bool unigram = true;
    flt_type one_char_min_lp = -25.0;
    string in_fname = config.arguments[0];
    string out_fname_1 = config.arguments[1];
    string out_fname_2 = config.arguments[2];
    bool enable_forward_backward = config["forward-backward"].specified;
    bool weights = config["weights"].specified;
    bool utf8_encoding = config["utf-8"].specified;

    if (config["vocabulary"].specified) {
        vocab_fname = config["vocabulary"].get_str();
        cerr << "Reading vocabulary " << vocab_fname << endl;
        int retval = Unigrams::read_vocab(vocab_fname, vocab, maxlen, utf8_encoding);
        vocab[start_end_symbol] = 0.0;
        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;
        ss_vocab = new StringSet(vocab);
    }

    if (config["transitions"].specified) {
        unigram = false;
        trans_fname = config["vocabulary"].get_str();
        cerr << "Reading transitions " << trans_fname << endl;
        int retval = Bigrams::read_transitions(transitions, trans_fname);
        Bigrams::trans_to_vocab(transitions, vocab);
        ss_vocab = new StringSet(vocab);
        if (retval < 0) {
            cerr << "something went wrong reading transitions" << endl;
            exit(EXIT_FAILURE);
        }
        cerr << "\t" << "vocabulary: " << transitions.size() << endl;
        cerr << "\t" << "transitions: " << retval << endl;
    }

    cerr << "Segmenting corpus" << endl;
    SimpleFileInput infile(in_fname);

    map<string, flt_type> unigram_stats;
    transitions_t trans_stats;
    string line;
    int li = 1;
    while (infile.getline(line)) {

        if (li % 100000 == 0) cerr << "processing line number: " << li << endl;

        trim(line, '\n');

        flt_type curr_weight = 1.0;
        if (weights) {
            string remainder;
            std::istringstream iss(line);
            iss >> std::skipws >> curr_weight;
            getline(iss, remainder);
            trim(remainder, '\t'); trim(remainder,' ');
            line.assign(remainder);
        }

        for (unsigned int i=0; i<line.size(); i++) {
            string currchr {line[i]};
            if (!ss_vocab->includes(currchr))
                ss_vocab->add(currchr, one_char_min_lp);
        }

        transitions_t curr_stats;

        if (unigram)
            if (enable_forward_backward) {
                FactorGraph fg(line, start_end_symbol, *ss_vocab);
                forward_backward(vocab, fg, curr_stats);
            }
            else {
                viterbi(vocab, line, curr_stats, start_end_symbol);
            }
        else {
            FactorGraph fg(line, start_end_symbol, *ss_vocab);
            if (enable_forward_backward)
                forward_backward(transitions, fg, curr_stats);
            else
                viterbi(transitions, fg, curr_stats);
        }

        Bigrams::update_trans_stats(curr_stats, curr_weight,
                                    trans_stats, unigram_stats);

        li++;
    }

    if (ss_vocab != NULL) delete ss_vocab;

    Unigrams::write_vocab(out_fname_1, unigram_stats, true, 10);
    Bigrams::write_transitions(trans_stats, out_fname_2, true, 10);

    exit(EXIT_SUCCESS);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xfd0, %rsp            # imm = 0xFD0
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0xc030
leaq -0xe9(%rbp), %rdi
movq %rdi, -0xcc0(%rbp)
callq 0x5730
movq -0xcc0(%rbp), %rdx
leaq 0x6209c(%rip), %rsi     # 0x68012
leaq -0xe8(%rbp), %rdi
callq 0x5570
jmp 0x5f84
leaq -0xc8(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0xc0a0
movq %rax, -0xcc8(%rbp)
jmp 0x5fa0
leaq -0x121(%rbp), %rdi
movq %rdi, -0xcd0(%rbp)
callq 0x5730
movq -0xcd0(%rbp), %rdx
leaq 0x6208a(%rip), %rsi     # 0x6804b
leaq -0x120(%rbp), %rdi
callq 0x5570
jmp 0x5fcf
leaq -0x149(%rbp), %rdi
movq %rdi, -0xcd8(%rbp)
callq 0x5730
movq -0xcd8(%rbp), %rdx
leaq 0x62596(%rip), %rsi     # 0x68586
leaq -0x148(%rbp), %rdi
callq 0x5570
jmp 0x5ffe
leaq -0x171(%rbp), %rdi
movq %rdi, -0xce0(%rbp)
callq 0x5730
movq -0xce0(%rbp), %rdx
leaq 0x62567(%rip), %rsi     # 0x68586
leaq -0x170(%rbp), %rdi
callq 0x5570
jmp 0x602d
leaq -0x199(%rbp), %rdi
movq %rdi, -0xce8(%rbp)
callq 0x5730
movq -0xce8(%rbp), %rdx
leaq 0x61ff5(%rip), %rsi     # 0x68043
leaq -0x198(%rbp), %rdi
callq 0x5570
jmp 0x605c
movq -0xcc8(%rbp), %rdi
movl $0x68, %esi
leaq -0x120(%rbp), %rdx
leaq -0x148(%rbp), %rcx
leaq -0x170(%rbp), %r8
leaq -0x198(%rbp), %r9
callq 0xc0d0
movq %rax, -0xcf0(%rbp)
jmp 0x6092
leaq -0x1c1(%rbp), %rdi
movq %rdi, -0xcf8(%rbp)
callq 0x5730
movq -0xcf8(%rbp), %rdx
leaq 0x61f9d(%rip), %rsi     # 0x68050
leaq -0x1c0(%rbp), %rdi
callq 0x5570
jmp 0x60c1
leaq -0x1e9(%rbp), %rdi
movq %rdi, -0xd00(%rbp)
callq 0x5730
movq -0xd00(%rbp), %rdx
leaq 0x61f7e(%rip), %rsi     # 0x68060
leaq -0x1e8(%rbp), %rdi
callq 0x5570
jmp 0x60f0
leaq -0x211(%rbp), %rdi
movq %rdi, -0xd08(%rbp)
callq 0x5730
movq -0xd08(%rbp), %rdx
leaq 0x62475(%rip), %rsi     # 0x68586
leaq -0x210(%rbp), %rdi
callq 0x5570
jmp 0x611f
leaq -0x239(%rbp), %rdi
movq %rdi, -0xd10(%rbp)
callq 0x5730
movq -0xd10(%rbp), %rdx
leaq 0x61f24(%rip), %rsi     # 0x68064
leaq -0x238(%rbp), %rdi
callq 0x5570
jmp 0x614e
movq -0xcf0(%rbp), %rdi
movl $0x76, %esi
leaq -0x1c0(%rbp), %rdx
leaq -0x1e8(%rbp), %rcx
leaq -0x210(%rbp), %r8
leaq -0x238(%rbp), %r9
callq 0xc0d0
movq %rax, -0xd18(%rbp)
jmp 0x6184
leaq -0x261(%rbp), %rdi
movq %rdi, -0xd20(%rbp)
callq 0x5730
movq -0xd20(%rbp), %rdx
leaq 0x61ed2(%rip), %rsi     # 0x68077
leaq -0x260(%rbp), %rdi
callq 0x5570
jmp 0x61b3
leaq -0x289(%rbp), %rdi
movq %rdi, -0xd28(%rbp)
callq 0x5730
movq -0xd28(%rbp), %rdx
leaq 0x61e8c(%rip), %rsi     # 0x68060
leaq -0x288(%rbp), %rdi
callq 0x5570
jmp 0x61e2
leaq -0x2b1(%rbp), %rdi
movq %rdi, -0xd30(%rbp)
callq 0x5730
movq -0xd30(%rbp), %rdx
leaq 0x62383(%rip), %rsi     # 0x68586
leaq -0x2b0(%rbp), %rdi
callq 0x5570
jmp 0x6211
leaq -0x2d9(%rbp), %rdi
movq %rdi, -0xd38(%rbp)
callq 0x5730
movq -0xd38(%rbp), %rdx
leaq 0x61e56(%rip), %rsi     # 0x68088
leaq -0x2d8(%rbp), %rdi
callq 0x5570
jmp 0x6240
movq -0xd18(%rbp), %rdi
movl $0x74, %esi
leaq -0x260(%rbp), %rdx
leaq -0x288(%rbp), %rcx
leaq -0x2b0(%rbp), %r8
leaq -0x2d8(%rbp), %r9
callq 0xc0d0
movq %rax, -0xd40(%rbp)
jmp 0x6276
leaq -0x301(%rbp), %rdi
movq %rdi, -0xd48(%rbp)
callq 0x5730
movq -0xd48(%rbp), %rdx
leaq 0x61e03(%rip), %rsi     # 0x6809a
leaq -0x300(%rbp), %rdi
callq 0x5570
jmp 0x62a5
leaq -0x329(%rbp), %rdi
movq %rdi, -0xd50(%rbp)
callq 0x5730
movq -0xd50(%rbp), %rdx
leaq 0x622c0(%rip), %rsi     # 0x68586
leaq -0x328(%rbp), %rdi
callq 0x5570
jmp 0x62d4
leaq -0x351(%rbp), %rdi
movq %rdi, -0xd58(%rbp)
callq 0x5730
movq -0xd58(%rbp), %rdx
leaq 0x62291(%rip), %rsi     # 0x68586
leaq -0x350(%rbp), %rdi
callq 0x5570
jmp 0x6303
leaq -0x379(%rbp), %rdi
movq %rdi, -0xd60(%rbp)
callq 0x5730
movq -0xd60(%rbp), %rdx
leaq 0x61d87(%rip), %rsi     # 0x680ab
leaq -0x378(%rbp), %rdi
callq 0x5570
jmp 0x6332
movq -0xd40(%rbp), %rdi
movl $0x66, %esi
leaq -0x300(%rbp), %rdx
leaq -0x328(%rbp), %rcx
leaq -0x350(%rbp), %r8
leaq -0x378(%rbp), %r9
callq 0xc0d0
movq %rax, -0xd68(%rbp)
jmp 0x6368
leaq -0x3a1(%rbp), %rdi
movq %rdi, -0xd70(%rbp)
callq 0x5730
movq -0xd70(%rbp), %rdx
leaq 0x61d57(%rip), %rsi     # 0x680e0
leaq -0x3a0(%rbp), %rdi
callq 0x5570
jmp 0x6397
leaq -0x3c9(%rbp), %rdi
movq %rdi, -0xd78(%rbp)
callq 0x5730
movq -0xd78(%rbp), %rdx
leaq 0x621ce(%rip), %rsi     # 0x68586
leaq -0x3c8(%rbp), %rdi
callq 0x5570
jmp 0x63c6
leaq -0x3f1(%rbp), %rdi
movq %rdi, -0xd80(%rbp)
callq 0x5730
movq -0xd80(%rbp), %rdx
leaq 0x6219f(%rip), %rsi     # 0x68586
leaq -0x3f0(%rbp), %rdi
callq 0x5570
jmp 0x63f5
leaq -0x419(%rbp), %rdi
movq %rdi, -0xd88(%rbp)
callq 0x5730
movq -0xd88(%rbp), %rdx
leaq 0x61cd2(%rip), %rsi     # 0x680e8
leaq -0x418(%rbp), %rdi
callq 0x5570
jmp 0x6424
movq -0xd68(%rbp), %rdi
movl $0x77, %esi
leaq -0x3a0(%rbp), %rdx
leaq -0x3c8(%rbp), %rcx
leaq -0x3f0(%rbp), %r8
leaq -0x418(%rbp), %r9
callq 0xc0d0
movq %rax, -0xd90(%rbp)
jmp 0x645a
leaq -0x441(%rbp), %rdi
movq %rdi, -0xd98(%rbp)
callq 0x5730
movq -0xd98(%rbp), %rdx
leaq 0x61c8c(%rip), %rsi     # 0x68107
leaq -0x440(%rbp), %rdi
callq 0x5570
jmp 0x6489
leaq -0x469(%rbp), %rdi
movq %rdi, -0xda0(%rbp)
callq 0x5730
movq -0xda0(%rbp), %rdx
leaq 0x620dc(%rip), %rsi     # 0x68586
leaq -0x468(%rbp), %rdi
callq 0x5570
jmp 0x64b8
leaq -0x491(%rbp), %rdi
movq %rdi, -0xda8(%rbp)
callq 0x5730
movq -0xda8(%rbp), %rdx
leaq 0x620ad(%rip), %rsi     # 0x68586
leaq -0x490(%rbp), %rdi
callq 0x5570
jmp 0x64e7
leaq -0x4b9(%rbp), %rdi
movq %rdi, -0xdb0(%rbp)
callq 0x5730
movq -0xdb0(%rbp), %rdx
leaq 0x61c05(%rip), %rsi     # 0x6810d
leaq -0x4b8(%rbp), %rdi
callq 0x5570
jmp 0x6516
movq -0xd90(%rbp), %rdi
movl $0x38, %esi
leaq -0x440(%rbp), %rdx
leaq -0x468(%rbp), %rcx
leaq -0x490(%rbp), %r8
leaq -0x4b8(%rbp), %r9
callq 0xc0d0
jmp 0x6545
leaq -0x4b8(%rbp), %rdi
callq 0x5858
leaq -0x4b9(%rbp), %rdi
callq 0x5430
leaq -0x490(%rbp), %rdi
callq 0x5858
leaq -0x491(%rbp), %rdi
callq 0x5430
leaq -0x468(%rbp), %rdi
callq 0x5858
leaq -0x469(%rbp), %rdi
callq 0x5430
leaq -0x440(%rbp), %rdi
callq 0x5858
leaq -0x441(%rbp), %rdi
callq 0x5430
leaq -0x418(%rbp), %rdi
callq 0x5858
leaq -0x419(%rbp), %rdi
callq 0x5430
leaq -0x3f0(%rbp), %rdi
callq 0x5858
leaq -0x3f1(%rbp), %rdi
callq 0x5430
leaq -0x3c8(%rbp), %rdi
callq 0x5858
leaq -0x3c9(%rbp), %rdi
callq 0x5430
leaq -0x3a0(%rbp), %rdi
callq 0x5858
leaq -0x3a1(%rbp), %rdi
callq 0x5430
leaq -0x378(%rbp), %rdi
callq 0x5858
leaq -0x379(%rbp), %rdi
callq 0x5430
leaq -0x350(%rbp), %rdi
callq 0x5858
leaq -0x351(%rbp), %rdi
callq 0x5430
leaq -0x328(%rbp), %rdi
callq 0x5858
leaq -0x329(%rbp), %rdi
callq 0x5430
leaq -0x300(%rbp), %rdi
callq 0x5858
leaq -0x301(%rbp), %rdi
callq 0x5430
leaq -0x2d8(%rbp), %rdi
callq 0x5858
leaq -0x2d9(%rbp), %rdi
callq 0x5430
leaq -0x2b0(%rbp), %rdi
callq 0x5858
leaq -0x2b1(%rbp), %rdi
callq 0x5430
leaq -0x288(%rbp), %rdi
callq 0x5858
leaq -0x289(%rbp), %rdi
callq 0x5430
leaq -0x260(%rbp), %rdi
callq 0x5858
leaq -0x261(%rbp), %rdi
callq 0x5430
leaq -0x238(%rbp), %rdi
callq 0x5858
leaq -0x239(%rbp), %rdi
callq 0x5430
leaq -0x210(%rbp), %rdi
callq 0x5858
leaq -0x211(%rbp), %rdi
callq 0x5430
leaq -0x1e8(%rbp), %rdi
callq 0x5858
leaq -0x1e9(%rbp), %rdi
callq 0x5430
leaq -0x1c0(%rbp), %rdi
callq 0x5858
leaq -0x1c1(%rbp), %rdi
callq 0x5430
leaq -0x198(%rbp), %rdi
callq 0x5858
leaq -0x199(%rbp), %rdi
callq 0x5430
leaq -0x170(%rbp), %rdi
callq 0x5858
leaq -0x171(%rbp), %rdi
callq 0x5430
leaq -0x148(%rbp), %rdi
callq 0x5858
leaq -0x149(%rbp), %rdi
callq 0x5430
leaq -0x120(%rbp), %rdi
callq 0x5858
leaq -0x121(%rbp), %rdi
callq 0x5430
leaq -0xe8(%rbp), %rdi
callq 0x5858
leaq -0xe9(%rbp), %rdi
callq 0x5430
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq -0xc8(%rbp), %rdi
callq 0xcf20
jmp 0x67b2
leaq -0xc8(%rbp), %rdi
addq $0x98, %rdi
callq 0x8490
cmpq $0x3, %rax
je 0x6d37
movq 0x8f7ea(%rip), %rax     # 0x95fc0
movq (%rax), %rsi
leaq -0xc8(%rbp), %rdi
movl $0x1, %edx
callq 0xd6e0
jmp 0x67ec
jmp 0x6d37
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6d0f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6d03
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6cf7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6cdf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6cc7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6caf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6ca3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6c97
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6c7f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6c67
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6c4f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6c43
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6c37
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6c1f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6c07
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6bef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6be3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6bd7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6bbf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6ba7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6b8f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6b83
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6b77
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6b5f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6b47
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6b2f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6b23
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6b17
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6aff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6ae7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6acf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x4b8(%rbp), %rdi
callq 0x5858
leaq -0x4b9(%rbp), %rdi
callq 0x5430
leaq -0x490(%rbp), %rdi
callq 0x5858
leaq -0x491(%rbp), %rdi
callq 0x5430
leaq -0x468(%rbp), %rdi
callq 0x5858
leaq -0x469(%rbp), %rdi
callq 0x5430
leaq -0x440(%rbp), %rdi
callq 0x5858
leaq -0x441(%rbp), %rdi
callq 0x5430
leaq -0x418(%rbp), %rdi
callq 0x5858
leaq -0x419(%rbp), %rdi
callq 0x5430
leaq -0x3f0(%rbp), %rdi
callq 0x5858
leaq -0x3f1(%rbp), %rdi
callq 0x5430
leaq -0x3c8(%rbp), %rdi
callq 0x5858
leaq -0x3c9(%rbp), %rdi
callq 0x5430
leaq -0x3a0(%rbp), %rdi
callq 0x5858
leaq -0x3a1(%rbp), %rdi
callq 0x5430
leaq -0x378(%rbp), %rdi
callq 0x5858
leaq -0x379(%rbp), %rdi
callq 0x5430
leaq -0x350(%rbp), %rdi
callq 0x5858
leaq -0x351(%rbp), %rdi
callq 0x5430
leaq -0x328(%rbp), %rdi
callq 0x5858
leaq -0x329(%rbp), %rdi
callq 0x5430
leaq -0x300(%rbp), %rdi
callq 0x5858
leaq -0x301(%rbp), %rdi
callq 0x5430
leaq -0x2d8(%rbp), %rdi
callq 0x5858
leaq -0x2d9(%rbp), %rdi
callq 0x5430
leaq -0x2b0(%rbp), %rdi
callq 0x5858
leaq -0x2b1(%rbp), %rdi
callq 0x5430
leaq -0x288(%rbp), %rdi
callq 0x5858
leaq -0x289(%rbp), %rdi
callq 0x5430
leaq -0x260(%rbp), %rdi
callq 0x5858
leaq -0x261(%rbp), %rdi
callq 0x5430
leaq -0x238(%rbp), %rdi
callq 0x5858
leaq -0x239(%rbp), %rdi
callq 0x5430
leaq -0x210(%rbp), %rdi
callq 0x5858
leaq -0x211(%rbp), %rdi
callq 0x5430
leaq -0x1e8(%rbp), %rdi
callq 0x5858
leaq -0x1e9(%rbp), %rdi
callq 0x5430
leaq -0x1c0(%rbp), %rdi
callq 0x5858
leaq -0x1c1(%rbp), %rdi
callq 0x5430
leaq -0x198(%rbp), %rdi
callq 0x5858
leaq -0x199(%rbp), %rdi
callq 0x5430
leaq -0x170(%rbp), %rdi
callq 0x5858
leaq -0x171(%rbp), %rdi
callq 0x5430
leaq -0x148(%rbp), %rdi
callq 0x5858
leaq -0x149(%rbp), %rdi
callq 0x5430
leaq -0x120(%rbp), %rdi
callq 0x5858
leaq -0x121(%rbp), %rdi
callq 0x5430
leaq -0xe8(%rbp), %rdi
callq 0x5858
leaq -0xe9(%rbp), %rdi
callq 0x5430
jmp 0x83a3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x83a3
leaq -0x4e1(%rbp), %rdi
movq %rdi, -0xdb8(%rbp)
callq 0x5730
movq -0xdb8(%rbp), %rdx
movb $0x0, -0x50a(%rbp)
movb $0x0, -0x50b(%rbp)
leaq 0x61454(%rip), %rsi     # 0x681ba
leaq -0x4e0(%rbp), %rdi
callq 0x5570
jmp 0x6d74
leaq -0xc8(%rbp), %rdi
leaq -0x4e0(%rbp), %rsi
callq 0xd060
movq %rax, -0xdc0(%rbp)
jmp 0x6d90
movq -0xdc0(%rbp), %rcx
xorl %eax, %eax
testb $0x1, 0x4a(%rcx)
movb %al, -0xdc1(%rbp)
jne 0x6e10
leaq -0x509(%rbp), %rdi
movq %rdi, -0xdd0(%rbp)
callq 0x5730
movq -0xdd0(%rbp), %rdx
movb $0x1, -0x50a(%rbp)
leaq 0x613b0(%rip), %rsi     # 0x6817d
leaq -0x508(%rbp), %rdi
callq 0x5570
jmp 0x6ddb
movb $0x1, -0x50b(%rbp)
leaq -0xc8(%rbp), %rdi
leaq -0x508(%rbp), %rsi
callq 0xd060
movq %rax, -0xdd8(%rbp)
jmp 0x6dfe
movq -0xdd8(%rbp), %rax
movb 0x4a(%rax), %al
xorb $-0x1, %al
movb %al, -0xdc1(%rbp)
movb -0xdc1(%rbp), %al
movb %al, -0xdd9(%rbp)
testb $0x1, -0x50b(%rbp)
jne 0x6e27
jmp 0x6e33
leaq -0x508(%rbp), %rdi
callq 0x5858
testb $0x1, -0x50a(%rbp)
jne 0x6e3e
jmp 0x6e4a
leaq -0x509(%rbp), %rdi
callq 0x5430
leaq -0x4e0(%rbp), %rdi
callq 0x5858
leaq -0x4e1(%rbp), %rdi
callq 0x5430
movb -0xdd9(%rbp), %al
testb $0x1, %al
jne 0x6e71
jmp 0x6f49
movq 0x8f170(%rip), %rdi     # 0x95fe8
leaq 0x612ae(%rip), %rsi     # 0x6812d
callq 0x53d0
movq %rax, -0xde8(%rbp)
jmp 0x6e8d
movq -0xde8(%rbp), %rdi
movq 0x8f0fd(%rip), %rsi     # 0x95f98
callq 0x5410
jmp 0x6ea2
movl $0x1, %edi
callq 0x5490
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6f38
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6f2c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6f13
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
testb $0x1, -0x50b(%rbp)
jne 0x6f05
jmp 0x6f11
leaq -0x508(%rbp), %rdi
callq 0x5858
jmp 0x6f13
testb $0x1, -0x50a(%rbp)
jne 0x6f1e
jmp 0x6f2a
leaq -0x509(%rbp), %rdi
callq 0x5430
jmp 0x6f2c
leaq -0x4e0(%rbp), %rdi
callq 0x5858
leaq -0x4e1(%rbp), %rdi
callq 0x5430
jmp 0x83a3
leaq -0x531(%rbp), %rdi
movq %rdi, -0xdf0(%rbp)
callq 0x5730
movq -0xdf0(%rbp), %rdx
movb $0x0, -0x55a(%rbp)
movb $0x0, -0x55b(%rbp)
leaq 0x61242(%rip), %rsi     # 0x681ba
leaq -0x530(%rbp), %rdi
callq 0x5570
jmp 0x6f86
leaq -0xc8(%rbp), %rdi
leaq -0x530(%rbp), %rsi
callq 0xd060
movq %rax, -0xdf8(%rbp)
jmp 0x6fa2
movq -0xdf8(%rbp), %rcx
xorl %eax, %eax
testb $0x1, 0x4a(%rcx)
movb %al, -0xdf9(%rbp)
je 0x7020
leaq -0x559(%rbp), %rdi
movq %rdi, -0xe08(%rbp)
callq 0x5730
movq -0xe08(%rbp), %rdx
movb $0x1, -0x55a(%rbp)
leaq 0x6119e(%rip), %rsi     # 0x6817d
leaq -0x558(%rbp), %rdi
callq 0x5570
jmp 0x6fed
movb $0x1, -0x55b(%rbp)
leaq -0xc8(%rbp), %rdi
leaq -0x558(%rbp), %rsi
callq 0xd060
movq %rax, -0xe10(%rbp)
jmp 0x7010
movq -0xe10(%rbp), %rax
movb 0x4a(%rax), %al
movb %al, -0xdf9(%rbp)
movb -0xdf9(%rbp), %al
movb %al, -0xe11(%rbp)
testb $0x1, -0x55b(%rbp)
jne 0x7037
jmp 0x7043
leaq -0x558(%rbp), %rdi
callq 0x5858
testb $0x1, -0x55a(%rbp)
jne 0x704e
jmp 0x705a
leaq -0x559(%rbp), %rdi
callq 0x5430
leaq -0x530(%rbp), %rdi
callq 0x5858
leaq -0x531(%rbp), %rdi
callq 0x5430
movb -0xe11(%rbp), %al
testb $0x1, %al
jne 0x7081
jmp 0x7159
movq 0x8ef60(%rip), %rdi     # 0x95fe8
leaq 0x610c6(%rip), %rsi     # 0x68155
callq 0x53d0
movq %rax, -0xe20(%rbp)
jmp 0x709d
movq -0xe20(%rbp), %rdi
movq 0x8eeed(%rip), %rsi     # 0x95f98
callq 0x5410
jmp 0x70b2
movl $0x1, %edi
callq 0x5490
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7148
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x713c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7123
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
testb $0x1, -0x55b(%rbp)
jne 0x7115
jmp 0x7121
leaq -0x558(%rbp), %rdi
callq 0x5858
jmp 0x7123
testb $0x1, -0x55a(%rbp)
jne 0x712e
jmp 0x713a
leaq -0x559(%rbp), %rdi
callq 0x5430
jmp 0x713c
leaq -0x530(%rbp), %rdi
callq 0x5858
leaq -0x531(%rbp), %rdi
callq 0x5430
jmp 0x83a3
leaq -0x580(%rbp), %rdi
callq 0x5580
leaq -0x5a0(%rbp), %rdi
callq 0x5580
leaq -0x5d8(%rbp), %rdi
callq 0x84b0
movq $0x0, -0x5e0(%rbp)
leaq -0x610(%rbp), %rdi
callq 0x84d0
movb $0x1, -0x611(%rbp)
movabsq $-0x3fc7000000000000, %rax # imm = 0xC039000000000000
movq %rax, -0x620(%rbp)
leaq -0x30(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x84f0
movq %rax, %rsi
leaq -0x640(%rbp), %rdi
callq 0x51a0
jmp 0x71ca
leaq -0x30(%rbp), %rdi
movl $0x1, %esi
callq 0x84f0
movq %rax, %rsi
leaq -0x660(%rbp), %rdi
callq 0x51a0
jmp 0x71e9
leaq -0x30(%rbp), %rdi
movl $0x2, %esi
callq 0x84f0
movq %rax, %rsi
leaq -0x680(%rbp), %rdi
callq 0x51a0
jmp 0x7208
leaq -0x6a9(%rbp), %rdi
movq %rdi, -0xe28(%rbp)
callq 0x5730
movq -0xe28(%rbp), %rdx
leaq 0x60e71(%rip), %rsi     # 0x6809a
leaq -0x6a8(%rbp), %rdi
callq 0x5570
jmp 0x7237
leaq -0xc8(%rbp), %rdi
leaq -0x6a8(%rbp), %rsi
callq 0xd060
movq %rax, -0xe30(%rbp)
jmp 0x7253
movq -0xe30(%rbp), %rax
movb 0x4a(%rax), %al
movb %al, -0xe39(%rbp)
leaq -0x6a8(%rbp), %rdi
callq 0x5858
leaq -0x6a9(%rbp), %rdi
callq 0x5430
movb -0xe39(%rbp), %al
andb $0x1, %al
movb %al, -0x681(%rbp)
leaq -0x6d1(%rbp), %rdi
movq %rdi, -0xe38(%rbp)
callq 0x5730
movq -0xe38(%rbp), %rdx
leaq 0x60e36(%rip), %rsi     # 0x680e0
leaq -0x6d0(%rbp), %rdi
callq 0x5570
jmp 0x72b8
leaq -0xc8(%rbp), %rdi
leaq -0x6d0(%rbp), %rsi
callq 0xd060
movq %rax, -0xe48(%rbp)
jmp 0x72d4
movq -0xe48(%rbp), %rax
movb 0x4a(%rax), %al
movb %al, -0xe51(%rbp)
leaq -0x6d0(%rbp), %rdi
callq 0x5858
leaq -0x6d1(%rbp), %rdi
callq 0x5430
movb -0xe51(%rbp), %al
andb $0x1, %al
movb %al, -0x6aa(%rbp)
leaq -0x6f9(%rbp), %rdi
movq %rdi, -0xe50(%rbp)
callq 0x5730
movq -0xe50(%rbp), %rdx
leaq 0x60ddc(%rip), %rsi     # 0x68107
leaq -0x6f8(%rbp), %rdi
callq 0x5570
jmp 0x7339
leaq -0xc8(%rbp), %rdi
leaq -0x6f8(%rbp), %rsi
callq 0xd060
movq %rax, -0xe60(%rbp)
jmp 0x7355
movq -0xe60(%rbp), %rax
movb 0x4a(%rax), %al
movb %al, -0xe69(%rbp)
leaq -0x6f8(%rbp), %rdi
callq 0x5858
leaq -0x6f9(%rbp), %rdi
callq 0x5430
movb -0xe69(%rbp), %al
andb $0x1, %al
movb %al, -0x6d2(%rbp)
leaq -0x721(%rbp), %rdi
movq %rdi, -0xe68(%rbp)
callq 0x5730
movq -0xe68(%rbp), %rdx
leaq 0x60e0e(%rip), %rsi     # 0x681ba
leaq -0x720(%rbp), %rdi
callq 0x5570
jmp 0x73ba
leaq -0xc8(%rbp), %rdi
leaq -0x720(%rbp), %rsi
callq 0xd060
movq %rax, -0xe78(%rbp)
jmp 0x73d6
movq -0xe78(%rbp), %rax
movb 0x4a(%rax), %al
movb %al, -0xe79(%rbp)
leaq -0x720(%rbp), %rdi
callq 0x5858
leaq -0x721(%rbp), %rdi
callq 0x5430
movb -0xe79(%rbp), %al
testb $0x1, %al
je 0x78b3
leaq -0x749(%rbp), %rdi
movq %rdi, -0xe88(%rbp)
callq 0x5730
movq -0xe88(%rbp), %rdx
leaq 0x60d8d(%rip), %rsi     # 0x681ba
leaq -0x748(%rbp), %rdi
callq 0x5570
jmp 0x743b
leaq -0xc8(%rbp), %rdi
leaq -0x748(%rbp), %rsi
callq 0xd060
movq %rax, -0xe90(%rbp)
jmp 0x7457
movq -0xe90(%rbp), %rdi
callq 0xbff0
movq %rax, -0xe98(%rbp)
jmp 0x746c
movq -0xe98(%rbp), %rsi
leaq -0x580(%rbp), %rdi
callq 0x5040
jmp 0x7481
leaq -0x748(%rbp), %rdi
callq 0x5858
leaq -0x749(%rbp), %rdi
callq 0x5430
movq 0x8eb48(%rip), %rdi     # 0x95fe8
leaq 0x60ce2(%rip), %rsi     # 0x68189
callq 0x53d0
movq %rax, -0xea0(%rbp)
jmp 0x74b5
movq -0xea0(%rbp), %rdi
leaq -0x580(%rbp), %rsi
callq 0x5390
movq %rax, -0xea8(%rbp)
jmp 0x74d1
movq -0xea8(%rbp), %rdi
movq 0x8eab9(%rip), %rsi     # 0x95f98
callq 0x5410
jmp 0x74e6
leaq -0x770(%rbp), %rdi
leaq -0x580(%rbp), %rsi
callq 0x51a0
jmp 0x74fb
movzbl -0x6d2(%rbp), %ecx
andl $0x1, %ecx
leaq -0x770(%rbp), %rdi
leaq -0x5d8(%rbp), %rsi
leaq -0x5a4(%rbp), %rdx
callq 0x56ed0
movl %eax, -0xeac(%rbp)
jmp 0x7527
leaq -0x770(%rbp), %rdi
callq 0x5858
movl -0xeac(%rbp), %eax
movl %eax, -0x750(%rbp)
leaq 0x8ef12(%rip), %rsi     # 0x96458
leaq -0x5d8(%rbp), %rdi
callq 0x8510
movq %rax, -0xeb8(%rbp)
jmp 0x755b
movq -0xeb8(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
cmpl $0x0, -0x750(%rbp)
jge 0x777f
movq 0x8ea6b(%rip), %rdi     # 0x95fe8
leaq 0x60c19(%rip), %rsi     # 0x6819d
callq 0x53d0
movq %rax, -0xec0(%rbp)
jmp 0x7592
movq -0xec0(%rbp), %rdi
movq 0x8e9f8(%rip), %rsi     # 0x95f98
callq 0x5410
jmp 0x75a7
movl $0x1, %edi
callq 0x5490
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x8373
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x8367
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x835b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7628
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x6a8(%rbp), %rdi
callq 0x5858
leaq -0x6a9(%rbp), %rdi
callq 0x5430
jmp 0x834f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x766b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x6d0(%rbp), %rdi
callq 0x5858
leaq -0x6d1(%rbp), %rdi
callq 0x5430
jmp 0x834f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x76ae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x6f8(%rbp), %rdi
callq 0x5858
leaq -0x6f9(%rbp), %rdi
callq 0x5430
jmp 0x834f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x76f1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x720(%rbp), %rdi
callq 0x5858
leaq -0x721(%rbp), %rdi
callq 0x5430
jmp 0x834f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7734
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x748(%rbp), %rdi
callq 0x5858
leaq -0x749(%rbp), %rdi
callq 0x5430
jmp 0x834f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x834f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x770(%rbp), %rdi
callq 0x5858
jmp 0x834f
movq 0x8e862(%rip), %rdi     # 0x95fe8
leaq 0x60df8(%rip), %rsi     # 0x68585
callq 0x53d0
movq %rax, -0xec8(%rbp)
jmp 0x779b
movq -0xec8(%rbp), %rdi
leaq 0x60a1c(%rip), %rsi     # 0x681c5
callq 0x53d0
movq %rax, -0xed0(%rbp)
jmp 0x77b7
leaq -0x5d8(%rbp), %rdi
callq 0x85f0
movq -0xed0(%rbp), %rdi
movq %rax, %rsi
callq 0x50f0
movq %rax, -0xed8(%rbp)
jmp 0x77db
movq -0xed8(%rbp), %rdi
movq 0x8e7af(%rip), %rsi     # 0x95f98
callq 0x5410
jmp 0x77f0
movq 0x8e7f1(%rip), %rdi     # 0x95fe8
leaq 0x60d87(%rip), %rsi     # 0x68585
callq 0x53d0
movq %rax, -0xee0(%rbp)
jmp 0x780c
movq -0xee0(%rbp), %rdi
leaq 0x609b2(%rip), %rsi     # 0x681cc
callq 0x53d0
movq %rax, -0xee8(%rbp)
jmp 0x7828
movq -0xee8(%rbp), %rdi
movl -0x5a4(%rbp), %esi
callq 0x5710
movq %rax, -0xef0(%rbp)
jmp 0x7843
movq -0xef0(%rbp), %rdi
movq 0x8e747(%rip), %rsi     # 0x95f98
callq 0x5410
jmp 0x7858
movl $0x120, %edi            # imm = 0x120
callq 0x53e0
movq %rax, -0xef8(%rbp)
jmp 0x786b
movq -0xef8(%rbp), %rdi
leaq -0x5d8(%rbp), %rsi
callq 0x1d310
jmp 0x7880
movq -0xef8(%rbp), %rax
movq %rax, -0x5e0(%rbp)
jmp 0x78b3
movq -0xef8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
callq 0x53b0
jmp 0x834f
leaq -0x791(%rbp), %rdi
movq %rdi, -0xf00(%rbp)
callq 0x5730
movq -0xf00(%rbp), %rdx
leaq 0x608a9(%rip), %rsi     # 0x6817d
leaq -0x790(%rbp), %rdi
callq 0x5570
jmp 0x78e2
leaq -0xc8(%rbp), %rdi
leaq -0x790(%rbp), %rsi
callq 0xd060
movq %rax, -0xf08(%rbp)
jmp 0x78fe
movq -0xf08(%rbp), %rax
movb 0x4a(%rax), %al
movb %al, -0xf09(%rbp)
leaq -0x790(%rbp), %rdi
callq 0x5858
leaq -0x791(%rbp), %rdi
callq 0x5430
movb -0xf09(%rbp), %al
testb $0x1, %al
je 0x7c53
movb $0x0, -0x611(%rbp)
leaq -0x7b9(%rbp), %rdi
movq %rdi, -0xf18(%rbp)
callq 0x5730
movq -0xf18(%rbp), %rdx
leaq 0x6085e(%rip), %rsi     # 0x681ba
leaq -0x7b8(%rbp), %rdi
callq 0x5570
jmp 0x796a
leaq -0xc8(%rbp), %rdi
leaq -0x7b8(%rbp), %rsi
callq 0xd060
movq %rax, -0xf20(%rbp)
jmp 0x7986
movq -0xf20(%rbp), %rdi
callq 0xbff0
movq %rax, -0xf28(%rbp)
jmp 0x799b
movq -0xf28(%rbp), %rsi
leaq -0x5a0(%rbp), %rdi
callq 0x5040
jmp 0x79b0
leaq -0x7b8(%rbp), %rdi
callq 0x5858
leaq -0x7b9(%rbp), %rdi
callq 0x5430
movq 0x8e619(%rip), %rdi     # 0x95fe8
leaq 0x6080e(%rip), %rsi     # 0x681e4
callq 0x53d0
movq %rax, -0xf30(%rbp)
jmp 0x79e4
movq -0xf30(%rbp), %rdi
leaq -0x5a0(%rbp), %rsi
callq 0x5390
movq %rax, -0xf38(%rbp)
jmp 0x7a00
movq -0xf38(%rbp), %rdi
movq 0x8e58a(%rip), %rsi     # 0x95f98
callq 0x5410
jmp 0x7a15
leaq -0x610(%rbp), %rdi
leaq -0x5a0(%rbp), %rsi
callq 0x60b60
movl %eax, -0xf3c(%rbp)
jmp 0x7a30
movl -0xf3c(%rbp), %eax
movl %eax, -0x7c0(%rbp)
leaq -0x610(%rbp), %rdi
leaq -0x5d8(%rbp), %rsi
callq 0x61700
jmp 0x7a51
movl $0x120, %edi            # imm = 0x120
callq 0x53e0
movq %rax, -0xf48(%rbp)
jmp 0x7a64
movq -0xf48(%rbp), %rdi
leaq -0x5d8(%rbp), %rsi
callq 0x1d310
jmp 0x7a79
movq -0xf48(%rbp), %rax
movq %rax, -0x5e0(%rbp)
cmpl $0x0, -0x7c0(%rbp)
jge 0x7b78
movq 0x8e54d(%rip), %rdi     # 0x95fe8
leaq 0x60757(%rip), %rsi     # 0x681f9
callq 0x53d0
movq %rax, -0xf50(%rbp)
jmp 0x7ab0
movq -0xf50(%rbp), %rdi
movq 0x8e4da(%rip), %rsi     # 0x95f98
callq 0x5410
jmp 0x7ac5
movl $0x1, %edi
callq 0x5490
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7b01
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x790(%rbp), %rdi
callq 0x5858
leaq -0x791(%rbp), %rdi
callq 0x5430
jmp 0x834f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7b44
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x7b8(%rbp), %rdi
callq 0x5858
leaq -0x7b9(%rbp), %rdi
callq 0x5430
jmp 0x834f
movq -0xf48(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
callq 0x53b0
jmp 0x834f
movq 0x8e469(%rip), %rdi     # 0x95fe8
leaq 0x609ff(%rip), %rsi     # 0x68585
callq 0x53d0
movq %rax, -0xf58(%rbp)
jmp 0x7b94
movq -0xf58(%rbp), %rdi
leaq 0x60680(%rip), %rsi     # 0x68222
callq 0x53d0
movq %rax, -0xf60(%rbp)
jmp 0x7bb0
leaq -0x610(%rbp), %rdi
callq 0x8610
movq -0xf60(%rbp), %rdi
movq %rax, %rsi
callq 0x50f0
movq %rax, -0xf68(%rbp)
jmp 0x7bd4
movq -0xf68(%rbp), %rdi
movq 0x8e3b6(%rip), %rsi     # 0x95f98
callq 0x5410
jmp 0x7be9
movq 0x8e3f8(%rip), %rdi     # 0x95fe8
leaq 0x6098e(%rip), %rsi     # 0x68585
callq 0x53d0
movq %rax, -0xf70(%rbp)
jmp 0x7c05
movq -0xf70(%rbp), %rdi
leaq 0x6061c(%rip), %rsi     # 0x6822f
callq 0x53d0
movq %rax, -0xf78(%rbp)
jmp 0x7c21
movq -0xf78(%rbp), %rdi
movl -0x7c0(%rbp), %esi
callq 0x5710
movq %rax, -0xf80(%rbp)
jmp 0x7c3c
movq -0xf80(%rbp), %rdi
movq 0x8e34e(%rip), %rsi     # 0x95f98
callq 0x5410
jmp 0x7c51
jmp 0x7c53
movq 0x8e38e(%rip), %rdi     # 0x95fe8
leaq 0x605dc(%rip), %rsi     # 0x6823d
callq 0x53d0
movq %rax, -0xf88(%rbp)
jmp 0x7c6f
movq -0xf88(%rbp), %rdi
movq 0x8e31b(%rip), %rsi     # 0x95f98
callq 0x5410
jmp 0x7c84
leaq -0x7e8(%rbp), %rdi
leaq -0x640(%rbp), %rsi
callq 0x51a0
jmp 0x7c99
leaq -0x7c8(%rbp), %rdi
leaq -0x7e8(%rbp), %rsi
callq 0xac90
jmp 0x7cae
leaq -0x7e8(%rbp), %rdi
callq 0x5858
leaq -0x818(%rbp), %rdi
callq 0x84b0
leaq -0x848(%rbp), %rdi
callq 0x84d0
leaq -0x868(%rbp), %rdi
callq 0x5580
movl $0x1, -0x86c(%rbp)
leaq -0x7c8(%rbp), %rdi
leaq -0x868(%rbp), %rsi
callq 0x8630
movb %al, -0xf89(%rbp)
jmp 0x7d03
movb -0xf89(%rbp), %al
testb $0x1, %al
jne 0x7d12
jmp 0x8263
movl -0x86c(%rbp), %eax
movl $0x186a0, %ecx          # imm = 0x186A0
cltd
idivl %ecx
cmpl $0x0, %edx
jne 0x7db1
movq 0x8e2b8(%rip), %rdi     # 0x95fe8
leaq 0x60518(%rip), %rsi     # 0x6824f
callq 0x53d0
movq %rax, -0xf98(%rbp)
jmp 0x7d45
movq -0xf98(%rbp), %rdi
movl -0x86c(%rbp), %esi
callq 0x5710
movq %rax, -0xfa0(%rbp)
jmp 0x7d60
movq -0xfa0(%rbp), %rdi
movq 0x8e22a(%rip), %rsi     # 0x95f98
callq 0x5410
jmp 0x7d75
jmp 0x7db1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x7e8(%rbp), %rdi
callq 0x5858
jmp 0x834f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x831f
leaq -0x868(%rbp), %rdi
movl $0xa, %esi
callq 0x83c0
jmp 0x7dc4
movsd 0x6023c(%rip), %xmm0    # 0x68008
movsd %xmm0, -0x878(%rbp)
testb $0x1, -0x6aa(%rbp)
je 0x7ee5
leaq -0x898(%rbp), %rdi
callq 0x5580
leaq -0xa18(%rbp), %rdi
leaq -0x868(%rbp), %rsi
movl $0x8, %edx
callq 0x56b0
jmp 0x7e07
leaq 0x852(%rip), %rsi       # 0x8660
leaq -0xa18(%rbp), %rdi
callq 0x5690
movq %rax, -0xfa8(%rbp)
jmp 0x7e23
movq -0xfa8(%rbp), %rdi
leaq -0x878(%rbp), %rsi
callq 0x5360
jmp 0x7e38
leaq -0xa18(%rbp), %rdi
leaq -0x898(%rbp), %rsi
callq 0x50b0
jmp 0x7e4d
leaq -0x898(%rbp), %rdi
movl $0x9, %esi
callq 0x83c0
jmp 0x7e60
leaq -0x898(%rbp), %rdi
movl $0x20, %esi
callq 0x83c0
jmp 0x7e73
leaq -0x868(%rbp), %rdi
leaq -0x898(%rbp), %rsi
callq 0x5750
jmp 0x7e88
leaq -0xa18(%rbp), %rdi
callq 0x51e0
leaq -0x898(%rbp), %rdi
callq 0x5858
jmp 0x7ee5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7ed4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xa18(%rbp), %rdi
callq 0x51e0
leaq -0x898(%rbp), %rdi
callq 0x5858
jmp 0x831f
movl $0x0, -0xa1c(%rbp)
movl -0xa1c(%rbp), %eax
movq %rax, -0xfb0(%rbp)
leaq -0x868(%rbp), %rdi
callq 0x52e0
movq %rax, %rcx
movq -0xfb0(%rbp), %rax
cmpq %rcx, %rax
jae 0x804e
movl -0xa1c(%rbp), %eax
movl %eax, %esi
leaq -0x868(%rbp), %rdi
callq 0x5820
movq %rax, -0xfb8(%rbp)
jmp 0x7f38
movq -0xfb8(%rbp), %rax
movb (%rax), %al
movb %al, -0xa51(%rbp)
leaq -0xa51(%rbp), %rax
movq %rax, -0xa50(%rbp)
movq $0x1, -0xa48(%rbp)
leaq -0xa52(%rbp), %rdi
movq %rdi, -0xfc0(%rbp)
callq 0x5730
movq -0xfc0(%rbp), %rcx
movq -0xa50(%rbp), %rsi
movq -0xa48(%rbp), %rdx
leaq -0xa40(%rbp), %rdi
callq 0x5470
jmp 0x7f96
leaq -0xa52(%rbp), %rdi
callq 0x5430
movq -0x5e0(%rbp), %rdi
leaq -0xa40(%rbp), %rsi
callq 0x1dc90
movb %al, -0xfc1(%rbp)
jmp 0x7fbd
movb -0xfc1(%rbp), %al
testb $0x1, %al
jne 0x802e
jmp 0x7fc9
movq -0x5e0(%rbp), %rdi
movsd -0x620(%rbp), %xmm0
leaq -0xa40(%rbp), %rsi
callq 0x1d740
jmp 0x7fe6
jmp 0x802e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xa52(%rbp), %rdi
callq 0x5430
jmp 0x831f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xa40(%rbp), %rdi
callq 0x5858
jmp 0x831f
leaq -0xa40(%rbp), %rdi
callq 0x5858
movl -0xa1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa1c(%rbp)
jmp 0x7eef
leaq -0xa88(%rbp), %rdi
callq 0x84d0
testb $0x1, -0x611(%rbp)
je 0x816f
testb $0x1, -0x681(%rbp)
je 0x8101
movq -0x5e0(%rbp), %rcx
leaq 0x8e3d6(%rip), %rdx     # 0x96458
leaq -0xb00(%rbp), %rdi
leaq -0x868(%rbp), %rsi
xorl %r8d, %r8d
callq 0x23ef0
jmp 0x809a
leaq -0x5d8(%rbp), %rdi
leaq -0xb00(%rbp), %rsi
leaq -0xa88(%rbp), %rdx
callq 0x46d50
jmp 0x80b6
leaq -0xb00(%rbp), %rdi
callq 0x26460
jmp 0x816a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x8252
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xb00(%rbp), %rdi
callq 0x26460
jmp 0x8252
leaq -0xc20(%rbp), %rdi
leaq -0x5d8(%rbp), %rsi
callq 0x1d310
jmp 0x8116
leaq 0x8e33b(%rip), %rcx     # 0x96458
leaq -0xc20(%rbp), %rdi
leaq -0x868(%rbp), %rsi
leaq -0xa88(%rbp), %rdx
callq 0x45170
jmp 0x8139
leaq -0xc20(%rbp), %rdi
callq 0x1d880
jmp 0x816a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xc20(%rbp), %rdi
callq 0x1d880
jmp 0x8252
jmp 0x820e
movq -0x5e0(%rbp), %rcx
leaq 0x8e2db(%rip), %rdx     # 0x96458
leaq -0xc98(%rbp), %rdi
leaq -0x868(%rbp), %rsi
xorl %r8d, %r8d
callq 0x23ef0
jmp 0x8195
testb $0x1, -0x681(%rbp)
je 0x81dc
leaq -0x610(%rbp), %rdi
leaq -0xc98(%rbp), %rsi
leaq -0xa88(%rbp), %rdx
callq 0x461a0
jmp 0x81ba
jmp 0x8202
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xc98(%rbp), %rdi
callq 0x26460
jmp 0x8252
leaq -0x610(%rbp), %rdi
leaq -0xc98(%rbp), %rsi
leaq -0xa88(%rbp), %rdx
movsd 0x5fe0f(%rip), %xmm0    # 0x68008
callq 0x45950
jmp 0x8200
jmp 0x8202
leaq -0xc98(%rbp), %rdi
callq 0x26460
movsd -0x878(%rbp), %xmm0
leaq -0xa88(%rbp), %rdi
leaq -0x848(%rbp), %rsi
leaq -0x818(%rbp), %rdx
callq 0x5fbe0
jmp 0x8232
movl -0x86c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x86c(%rbp)
leaq -0xa88(%rbp), %rdi
callq 0x8690
jmp 0x7ce8
leaq -0xa88(%rbp), %rdi
callq 0x8690
jmp 0x831f
cmpq $0x0, -0x5e0(%rbp)
je 0x829b
movq -0x5e0(%rbp), %rax
movq %rax, -0xfd0(%rbp)
cmpq $0x0, %rax
je 0x8299
movq -0xfd0(%rbp), %rdi
callq 0x1d880
movq -0xfd0(%rbp), %rdi
callq 0x53b0
jmp 0x829b
leaq -0xcb8(%rbp), %rdi
leaq -0x660(%rbp), %rsi
callq 0x51a0
jmp 0x82b0
leaq -0xcb8(%rbp), %rdi
leaq -0x818(%rbp), %rsi
movl $0x1, %edx
movl $0xa, %ecx
callq 0x574b0
jmp 0x82cf
leaq -0xcb8(%rbp), %rdi
callq 0x5858
leaq -0x848(%rbp), %rdi
leaq -0x680(%rbp), %rsi
movl $0x1, %edx
movl $0xa, %ecx
callq 0x605c0
jmp 0x82fa
xorl %edi, %edi
callq 0x5490
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xcb8(%rbp), %rdi
callq 0x5858
leaq -0x868(%rbp), %rdi
callq 0x5858
leaq -0x848(%rbp), %rdi
callq 0x8690
leaq -0x818(%rbp), %rdi
callq 0x86b0
leaq -0x7c8(%rbp), %rdi
callq 0xaea0
leaq -0x680(%rbp), %rdi
callq 0x5858
leaq -0x660(%rbp), %rdi
callq 0x5858
leaq -0x640(%rbp), %rdi
callq 0x5858
leaq -0x610(%rbp), %rdi
callq 0x8690
leaq -0x5d8(%rbp), %rdi
callq 0x86b0
leaq -0x5a0(%rbp), %rdi
callq 0x5858
leaq -0x580(%rbp), %rdi
callq 0x5858
leaq -0xc8(%rbp), %rdi
callq 0x86d0
movq -0xf8(%rbp), %rdi
callq 0x5720
nopl (%rax,%rax)