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

    string vocab_fname;
    string trans_fname;
    int maxlen;
    map<string, flt_type> vocab;
    StringSet *ss_vocab = NULL;
    transitions_t transitions;
    flt_type one_char_min_lp = -50.0;
    bool unigram = true;

    conf::Config config;
    config("usage: segtext [OPTION...] INPUT OUTPUT\n")
      ('h', "help", "", "", "display help")
      ('v', "vocabulary=FILE", "arg", "", "Unigram model file")
      ('t', "transitions=FILE", "arg", "", "Bigram model file")
      ('8', "utf-8", "", "", "Utf-8 character encoding in use");
    config.default_parse(argc, argv);
    if (config.arguments.size() != 2) config.print_help(stderr, 1);

    bool utf8_encoding = config["utf-8"].specified;
    string in_fname = config.arguments[0];
    string out_fname = config.arguments[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);
    }

    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);
        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["transitions"].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 size: " << transitions.size() << endl;
        cerr << "\t" << "transitions: " << retval << endl;
    }

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

    string line;
    while (infile.getline(line)) {

        vector<unsigned int> char_positions;
        get_character_positions(line, char_positions, utf8_encoding);
        for (unsigned int i=0; i<char_positions.size()-1; i++) {
            unsigned int start_pos = char_positions[i];
            unsigned int end_pos = char_positions[i+1];
            string currchr = line.substr(start_pos, end_pos-start_pos);
            if (!ss_vocab->includes(currchr))
                ss_vocab->add(currchr, one_char_min_lp);
        }

        vector<string> best_path;
        if (unigram)
            viterbi(*ss_vocab, line, best_path, true, utf8_encoding);
        else {
            FactorGraph fg(line, start_end_symbol, *ss_vocab);
            viterbi(transitions, fg, best_path);
            best_path.erase(best_path.begin());
            best_path.erase(best_path.end());
        }

        if (best_path.size() == 0) {
            cerr << "warning, no segmentation for line: " << line << endl;
            continue;
        }

        for (unsigned int i=0; i<best_path.size(); i++) {
            if (best_path[i] == " ")
                outfile << "\t";
            else {
                if (i>0) outfile << " ";
                outfile << best_path[i];
            }
        }
        outfile << "\n";
    }

    outfile.close();
    if (ss_vocab != NULL) delete ss_vocab;
    exit(EXIT_SUCCESS);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xad0, %rsp            # imm = 0xAD0
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x4560
leaq -0x50(%rbp), %rdi
callq 0x4560
leaq -0x88(%rbp), %rdi
callq 0x7030
movq $0x0, -0x90(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0x7050
movabsq $-0x3fb7000000000000, %rax # imm = 0xC049000000000000
movq %rax, -0xc8(%rbp)
movb $0x1, -0xc9(%rbp)
leaq -0x188(%rbp), %rdi
callq 0xaed0
jmp 0x4f64
leaq -0x1b9(%rbp), %rdi
movq %rdi, -0x808(%rbp)
callq 0x46f0
movq -0x808(%rbp), %rdx
leaq 0x62081(%rip), %rsi     # 0x67006
leaq -0x1b8(%rbp), %rdi
callq 0x4550
jmp 0x4f93
leaq -0x188(%rbp), %rdi
leaq -0x1b8(%rbp), %rsi
callq 0xaf40
movq %rax, -0x810(%rbp)
jmp 0x4faf
leaq -0x1e1(%rbp), %rdi
movq %rdi, -0x818(%rbp)
callq 0x46f0
movq -0x818(%rbp), %rdx
leaq 0x62067(%rip), %rsi     # 0x67037
leaq -0x1e0(%rbp), %rdi
callq 0x4550
jmp 0x4fde
leaq -0x209(%rbp), %rdi
movq %rdi, -0x820(%rbp)
callq 0x46f0
movq -0x820(%rbp), %rdx
leaq 0x6250e(%rip), %rsi     # 0x6750d
leaq -0x208(%rbp), %rdi
callq 0x4550
jmp 0x500d
leaq -0x231(%rbp), %rdi
movq %rdi, -0x828(%rbp)
callq 0x46f0
movq -0x828(%rbp), %rdx
leaq 0x624df(%rip), %rsi     # 0x6750d
leaq -0x230(%rbp), %rdi
callq 0x4550
jmp 0x503c
leaq -0x259(%rbp), %rdi
movq %rdi, -0x830(%rbp)
callq 0x46f0
movq -0x830(%rbp), %rdx
leaq 0x61fd2(%rip), %rsi     # 0x6702f
leaq -0x258(%rbp), %rdi
callq 0x4550
jmp 0x506b
movq -0x810(%rbp), %rdi
movl $0x68, %esi
leaq -0x1e0(%rbp), %rdx
leaq -0x208(%rbp), %rcx
leaq -0x230(%rbp), %r8
leaq -0x258(%rbp), %r9
callq 0xaf70
movq %rax, -0x838(%rbp)
jmp 0x50a1
leaq -0x281(%rbp), %rdi
movq %rdi, -0x840(%rbp)
callq 0x46f0
movq -0x840(%rbp), %rdx
leaq 0x61f7a(%rip), %rsi     # 0x6703c
leaq -0x280(%rbp), %rdi
callq 0x4550
jmp 0x50d0
leaq -0x2a9(%rbp), %rdi
movq %rdi, -0x848(%rbp)
callq 0x46f0
movq -0x848(%rbp), %rdx
leaq 0x61f5b(%rip), %rsi     # 0x6704c
leaq -0x2a8(%rbp), %rdi
callq 0x4550
jmp 0x50ff
leaq -0x2d1(%rbp), %rdi
movq %rdi, -0x850(%rbp)
callq 0x46f0
movq -0x850(%rbp), %rdx
leaq 0x623ed(%rip), %rsi     # 0x6750d
leaq -0x2d0(%rbp), %rdi
callq 0x4550
jmp 0x512e
leaq -0x2f9(%rbp), %rdi
movq %rdi, -0x858(%rbp)
callq 0x46f0
movq -0x858(%rbp), %rdx
leaq 0x61f01(%rip), %rsi     # 0x67050
leaq -0x2f8(%rbp), %rdi
callq 0x4550
jmp 0x515d
movq -0x838(%rbp), %rdi
movl $0x76, %esi
leaq -0x280(%rbp), %rdx
leaq -0x2a8(%rbp), %rcx
leaq -0x2d0(%rbp), %r8
leaq -0x2f8(%rbp), %r9
callq 0xaf70
movq %rax, -0x860(%rbp)
jmp 0x5193
leaq -0x321(%rbp), %rdi
movq %rdi, -0x868(%rbp)
callq 0x46f0
movq -0x868(%rbp), %rdx
leaq 0x61eaf(%rip), %rsi     # 0x67063
leaq -0x320(%rbp), %rdi
callq 0x4550
jmp 0x51c2
leaq -0x349(%rbp), %rdi
movq %rdi, -0x870(%rbp)
callq 0x46f0
movq -0x870(%rbp), %rdx
leaq 0x61e69(%rip), %rsi     # 0x6704c
leaq -0x348(%rbp), %rdi
callq 0x4550
jmp 0x51f1
leaq -0x371(%rbp), %rdi
movq %rdi, -0x878(%rbp)
callq 0x46f0
movq -0x878(%rbp), %rdx
leaq 0x622fb(%rip), %rsi     # 0x6750d
leaq -0x370(%rbp), %rdi
callq 0x4550
jmp 0x5220
leaq -0x399(%rbp), %rdi
movq %rdi, -0x880(%rbp)
callq 0x46f0
movq -0x880(%rbp), %rdx
leaq 0x61e33(%rip), %rsi     # 0x67074
leaq -0x398(%rbp), %rdi
callq 0x4550
jmp 0x524f
movq -0x860(%rbp), %rdi
movl $0x74, %esi
leaq -0x320(%rbp), %rdx
leaq -0x348(%rbp), %rcx
leaq -0x370(%rbp), %r8
leaq -0x398(%rbp), %r9
callq 0xaf70
movq %rax, -0x888(%rbp)
jmp 0x5285
leaq -0x3c1(%rbp), %rdi
movq %rdi, -0x890(%rbp)
callq 0x46f0
movq -0x890(%rbp), %rdx
leaq 0x61de0(%rip), %rsi     # 0x67086
leaq -0x3c0(%rbp), %rdi
callq 0x4550
jmp 0x52b4
leaq -0x3e9(%rbp), %rdi
movq %rdi, -0x898(%rbp)
callq 0x46f0
movq -0x898(%rbp), %rdx
leaq 0x62238(%rip), %rsi     # 0x6750d
leaq -0x3e8(%rbp), %rdi
callq 0x4550
jmp 0x52e3
leaq -0x411(%rbp), %rdi
movq %rdi, -0x8a0(%rbp)
callq 0x46f0
movq -0x8a0(%rbp), %rdx
leaq 0x62209(%rip), %rsi     # 0x6750d
leaq -0x410(%rbp), %rdi
callq 0x4550
jmp 0x5312
leaq -0x439(%rbp), %rdi
movq %rdi, -0x8a8(%rbp)
callq 0x46f0
movq -0x8a8(%rbp), %rdx
leaq 0x61d59(%rip), %rsi     # 0x6708c
leaq -0x438(%rbp), %rdi
callq 0x4550
jmp 0x5341
movq -0x888(%rbp), %rdi
movl $0x38, %esi
leaq -0x3c0(%rbp), %rdx
leaq -0x3e8(%rbp), %rcx
leaq -0x410(%rbp), %r8
leaq -0x438(%rbp), %r9
callq 0xaf70
jmp 0x5370
leaq -0x438(%rbp), %rdi
callq 0x4818
leaq -0x439(%rbp), %rdi
callq 0x4420
leaq -0x410(%rbp), %rdi
callq 0x4818
leaq -0x411(%rbp), %rdi
callq 0x4420
leaq -0x3e8(%rbp), %rdi
callq 0x4818
leaq -0x3e9(%rbp), %rdi
callq 0x4420
leaq -0x3c0(%rbp), %rdi
callq 0x4818
leaq -0x3c1(%rbp), %rdi
callq 0x4420
leaq -0x398(%rbp), %rdi
callq 0x4818
leaq -0x399(%rbp), %rdi
callq 0x4420
leaq -0x370(%rbp), %rdi
callq 0x4818
leaq -0x371(%rbp), %rdi
callq 0x4420
leaq -0x348(%rbp), %rdi
callq 0x4818
leaq -0x349(%rbp), %rdi
callq 0x4420
leaq -0x320(%rbp), %rdi
callq 0x4818
leaq -0x321(%rbp), %rdi
callq 0x4420
leaq -0x2f8(%rbp), %rdi
callq 0x4818
leaq -0x2f9(%rbp), %rdi
callq 0x4420
leaq -0x2d0(%rbp), %rdi
callq 0x4818
leaq -0x2d1(%rbp), %rdi
callq 0x4420
leaq -0x2a8(%rbp), %rdi
callq 0x4818
leaq -0x2a9(%rbp), %rdi
callq 0x4420
leaq -0x280(%rbp), %rdi
callq 0x4818
leaq -0x281(%rbp), %rdi
callq 0x4420
leaq -0x258(%rbp), %rdi
callq 0x4818
leaq -0x259(%rbp), %rdi
callq 0x4420
leaq -0x230(%rbp), %rdi
callq 0x4818
leaq -0x231(%rbp), %rdi
callq 0x4420
leaq -0x208(%rbp), %rdi
callq 0x4818
leaq -0x209(%rbp), %rdi
callq 0x4420
leaq -0x1e0(%rbp), %rdi
callq 0x4818
leaq -0x1e1(%rbp), %rdi
callq 0x4420
leaq -0x1b8(%rbp), %rdi
callq 0x4818
leaq -0x1b9(%rbp), %rdi
callq 0x4420
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq -0x188(%rbp), %rdi
callq 0xbdc0
jmp 0x551d
leaq -0x188(%rbp), %rdi
addq $0x98, %rdi
callq 0x7070
cmpq $0x2, %rax
je 0x5913
movq 0x8fa7f(%rip), %rax     # 0x94fc0
movq (%rax), %rsi
leaq -0x188(%rbp), %rdi
movl $0x1, %edx
callq 0xc580
jmp 0x5557
jmp 0x5913
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x6e01
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x58eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x58df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x58d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x58bb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x58a3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x588b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x587f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x5873
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x585b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x5843
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x582b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x581f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x5813
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x57fb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x57e3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x57cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x57bf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x57b3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x579b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x5783
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x576b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
leaq -0x438(%rbp), %rdi
callq 0x4818
leaq -0x439(%rbp), %rdi
callq 0x4420
leaq -0x410(%rbp), %rdi
callq 0x4818
leaq -0x411(%rbp), %rdi
callq 0x4420
leaq -0x3e8(%rbp), %rdi
callq 0x4818
leaq -0x3e9(%rbp), %rdi
callq 0x4420
leaq -0x3c0(%rbp), %rdi
callq 0x4818
leaq -0x3c1(%rbp), %rdi
callq 0x4420
leaq -0x398(%rbp), %rdi
callq 0x4818
leaq -0x399(%rbp), %rdi
callq 0x4420
leaq -0x370(%rbp), %rdi
callq 0x4818
leaq -0x371(%rbp), %rdi
callq 0x4420
leaq -0x348(%rbp), %rdi
callq 0x4818
leaq -0x349(%rbp), %rdi
callq 0x4420
leaq -0x320(%rbp), %rdi
callq 0x4818
leaq -0x321(%rbp), %rdi
callq 0x4420
leaq -0x2f8(%rbp), %rdi
callq 0x4818
leaq -0x2f9(%rbp), %rdi
callq 0x4420
leaq -0x2d0(%rbp), %rdi
callq 0x4818
leaq -0x2d1(%rbp), %rdi
callq 0x4420
leaq -0x2a8(%rbp), %rdi
callq 0x4818
leaq -0x2a9(%rbp), %rdi
callq 0x4420
leaq -0x280(%rbp), %rdi
callq 0x4818
leaq -0x281(%rbp), %rdi
callq 0x4420
leaq -0x258(%rbp), %rdi
callq 0x4818
leaq -0x259(%rbp), %rdi
callq 0x4420
leaq -0x230(%rbp), %rdi
callq 0x4818
leaq -0x231(%rbp), %rdi
callq 0x4420
leaq -0x208(%rbp), %rdi
callq 0x4818
leaq -0x209(%rbp), %rdi
callq 0x4420
leaq -0x1e0(%rbp), %rdi
callq 0x4818
leaq -0x1e1(%rbp), %rdi
callq 0x4420
leaq -0x1b8(%rbp), %rdi
callq 0x4818
leaq -0x1b9(%rbp), %rdi
callq 0x4420
jmp 0x6df5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x6df5
leaq -0x461(%rbp), %rdi
movq %rdi, -0x8b0(%rbp)
callq 0x46f0
movq -0x8b0(%rbp), %rdx
leaq 0x61752(%rip), %rsi     # 0x67086
leaq -0x460(%rbp), %rdi
callq 0x4550
jmp 0x5942
leaq -0x188(%rbp), %rdi
leaq -0x460(%rbp), %rsi
callq 0xbf00
movq %rax, -0x8b8(%rbp)
jmp 0x595e
movq -0x8b8(%rbp), %rax
movb 0x4a(%rax), %al
movb %al, -0x8b9(%rbp)
leaq -0x460(%rbp), %rdi
callq 0x4818
leaq -0x461(%rbp), %rdi
callq 0x4420
movb -0x8b9(%rbp), %al
andb $0x1, %al
movb %al, -0x43a(%rbp)
leaq -0xf0(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x7090
movq %rax, %rsi
leaq -0x488(%rbp), %rdi
callq 0x41a0
jmp 0x59b5
leaq -0xf0(%rbp), %rdi
movl $0x1, %esi
callq 0x7090
movq %rax, %rsi
leaq -0x4a8(%rbp), %rdi
callq 0x41a0
jmp 0x59d7
leaq -0x4c9(%rbp), %rdi
movq %rdi, -0x8c8(%rbp)
callq 0x46f0
movq -0x8c8(%rbp), %rdx
movb $0x0, -0x4f2(%rbp)
movb $0x0, -0x4f3(%rbp)
leaq 0x61733(%rip), %rsi     # 0x67139
leaq -0x4c8(%rbp), %rdi
callq 0x4550
jmp 0x5a14
leaq -0x188(%rbp), %rdi
leaq -0x4c8(%rbp), %rsi
callq 0xbf00
movq %rax, -0x8d0(%rbp)
jmp 0x5a30
movq -0x8d0(%rbp), %rcx
xorl %eax, %eax
testb $0x1, 0x4a(%rcx)
movb %al, -0x8d1(%rbp)
jne 0x5ab0
leaq -0x4f1(%rbp), %rdi
movq %rdi, -0x8e0(%rbp)
callq 0x46f0
movq -0x8e0(%rbp), %rdx
movb $0x1, -0x4f2(%rbp)
leaq 0x6168f(%rip), %rsi     # 0x670fc
leaq -0x4f0(%rbp), %rdi
callq 0x4550
jmp 0x5a7b
movb $0x1, -0x4f3(%rbp)
leaq -0x188(%rbp), %rdi
leaq -0x4f0(%rbp), %rsi
callq 0xbf00
movq %rax, -0x8e8(%rbp)
jmp 0x5a9e
movq -0x8e8(%rbp), %rax
movb 0x4a(%rax), %al
xorb $-0x1, %al
movb %al, -0x8d1(%rbp)
movb -0x8d1(%rbp), %al
movb %al, -0x8e9(%rbp)
testb $0x1, -0x4f3(%rbp)
jne 0x5ac7
jmp 0x5ad3
leaq -0x4f0(%rbp), %rdi
callq 0x4818
testb $0x1, -0x4f2(%rbp)
jne 0x5ade
jmp 0x5aea
leaq -0x4f1(%rbp), %rdi
callq 0x4420
leaq -0x4c8(%rbp), %rdi
callq 0x4818
leaq -0x4c9(%rbp), %rdi
callq 0x4420
movb -0x8e9(%rbp), %al
testb $0x1, %al
jne 0x5b11
jmp 0x5c5a
movq 0x8f4d0(%rip), %rdi     # 0x94fe8
leaq 0x6158d(%rip), %rsi     # 0x670ac
callq 0x43c0
movq %rax, -0x8f8(%rbp)
jmp 0x5b2d
movq -0x8f8(%rbp), %rdi
movq 0x8f45d(%rip), %rsi     # 0x94f98
callq 0x4400
jmp 0x5b42
movl $0x1, %edi
callq 0x4470
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x5b7e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
leaq -0x460(%rbp), %rdi
callq 0x4818
leaq -0x461(%rbp), %rdi
callq 0x4420
jmp 0x6df5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x6de9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x5c32
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x5c26
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x5c0d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
testb $0x1, -0x4f3(%rbp)
jne 0x5bff
jmp 0x5c0b
leaq -0x4f0(%rbp), %rdi
callq 0x4818
jmp 0x5c0d
testb $0x1, -0x4f2(%rbp)
jne 0x5c18
jmp 0x5c24
leaq -0x4f1(%rbp), %rdi
callq 0x4420
jmp 0x5c26
leaq -0x4c8(%rbp), %rdi
callq 0x4818
leaq -0x4c9(%rbp), %rdi
callq 0x4420
jmp 0x6ddd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x6ddd
leaq -0x519(%rbp), %rdi
movq %rdi, -0x900(%rbp)
callq 0x46f0
movq -0x900(%rbp), %rdx
movb $0x0, -0x542(%rbp)
movb $0x0, -0x543(%rbp)
leaq 0x614b0(%rip), %rsi     # 0x67139
leaq -0x518(%rbp), %rdi
callq 0x4550
jmp 0x5c97
leaq -0x188(%rbp), %rdi
leaq -0x518(%rbp), %rsi
callq 0xbf00
movq %rax, -0x908(%rbp)
jmp 0x5cb3
movq -0x908(%rbp), %rcx
xorl %eax, %eax
testb $0x1, 0x4a(%rcx)
movb %al, -0x909(%rbp)
je 0x5d31
leaq -0x541(%rbp), %rdi
movq %rdi, -0x918(%rbp)
callq 0x46f0
movq -0x918(%rbp), %rdx
movb $0x1, -0x542(%rbp)
leaq 0x6140c(%rip), %rsi     # 0x670fc
leaq -0x540(%rbp), %rdi
callq 0x4550
jmp 0x5cfe
movb $0x1, -0x543(%rbp)
leaq -0x188(%rbp), %rdi
leaq -0x540(%rbp), %rsi
callq 0xbf00
movq %rax, -0x920(%rbp)
jmp 0x5d21
movq -0x920(%rbp), %rax
movb 0x4a(%rax), %al
movb %al, -0x909(%rbp)
movb -0x909(%rbp), %al
movb %al, -0x921(%rbp)
testb $0x1, -0x543(%rbp)
jne 0x5d48
jmp 0x5d54
leaq -0x540(%rbp), %rdi
callq 0x4818
testb $0x1, -0x542(%rbp)
jne 0x5d5f
jmp 0x5d6b
leaq -0x541(%rbp), %rdi
callq 0x4420
leaq -0x518(%rbp), %rdi
callq 0x4818
leaq -0x519(%rbp), %rdi
callq 0x4420
movb -0x921(%rbp), %al
testb $0x1, %al
jne 0x5d92
jmp 0x5e6a
movq 0x8f24f(%rip), %rdi     # 0x94fe8
leaq 0x61334(%rip), %rsi     # 0x670d4
callq 0x43c0
movq %rax, -0x930(%rbp)
jmp 0x5dae
movq -0x930(%rbp), %rdi
movq 0x8f1dc(%rip), %rsi     # 0x94f98
callq 0x4400
jmp 0x5dc3
movl $0x1, %edi
callq 0x4470
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x5e59
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x5e4d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x5e34
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
testb $0x1, -0x543(%rbp)
jne 0x5e26
jmp 0x5e32
leaq -0x540(%rbp), %rdi
callq 0x4818
jmp 0x5e34
testb $0x1, -0x542(%rbp)
jne 0x5e3f
jmp 0x5e4b
leaq -0x541(%rbp), %rdi
callq 0x4420
jmp 0x5e4d
leaq -0x518(%rbp), %rdi
callq 0x4818
leaq -0x519(%rbp), %rdi
callq 0x4420
jmp 0x6ddd
leaq -0x569(%rbp), %rdi
movq %rdi, -0x938(%rbp)
callq 0x46f0
movq -0x938(%rbp), %rdx
leaq 0x612ae(%rip), %rsi     # 0x67139
leaq -0x568(%rbp), %rdi
callq 0x4550
jmp 0x5e99
leaq -0x188(%rbp), %rdi
leaq -0x568(%rbp), %rsi
callq 0xbf00
movq %rax, -0x940(%rbp)
jmp 0x5eb5
movq -0x940(%rbp), %rax
movb 0x4a(%rax), %al
movb %al, -0x941(%rbp)
leaq -0x568(%rbp), %rdi
callq 0x4818
leaq -0x569(%rbp), %rdi
callq 0x4420
movb -0x941(%rbp), %al
testb $0x1, %al
je 0x6234
leaq -0x591(%rbp), %rdi
movq %rdi, -0x950(%rbp)
callq 0x46f0
movq -0x950(%rbp), %rdx
leaq 0x6122d(%rip), %rsi     # 0x67139
leaq -0x590(%rbp), %rdi
callq 0x4550
jmp 0x5f1a
leaq -0x188(%rbp), %rdi
leaq -0x590(%rbp), %rsi
callq 0xbf00
movq %rax, -0x958(%rbp)
jmp 0x5f36
movq -0x958(%rbp), %rdi
callq 0xae90
movq %rax, -0x960(%rbp)
jmp 0x5f4b
movq -0x960(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x4040
jmp 0x5f5d
leaq -0x590(%rbp), %rdi
callq 0x4818
leaq -0x591(%rbp), %rdi
callq 0x4420
movq 0x8f06c(%rip), %rdi     # 0x94fe8
leaq 0x61185(%rip), %rsi     # 0x67108
callq 0x43c0
movq %rax, -0x968(%rbp)
jmp 0x5f91
movq -0x968(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x4380
movq %rax, -0x970(%rbp)
jmp 0x5faa
movq -0x970(%rbp), %rdi
movq 0x8efe0(%rip), %rsi     # 0x94f98
callq 0x4400
jmp 0x5fbf
leaq -0x5b8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x41a0
jmp 0x5fd1
movzbl -0x43a(%rbp), %ecx
andl $0x1, %ecx
leaq -0x5b8(%rbp), %rdi
leaq -0x88(%rbp), %rsi
leaq -0x54(%rbp), %rdx
callq 0x55d00
movl %eax, -0x974(%rbp)
jmp 0x5ffa
leaq -0x5b8(%rbp), %rdi
callq 0x4818
movl -0x974(%rbp), %eax
movl %eax, -0x598(%rbp)
cmpl $0x0, -0x598(%rbp)
jge 0x6103
movq 0x8efc2(%rip), %rdi     # 0x94fe8
leaq 0x610ef(%rip), %rsi     # 0x6711c
callq 0x43c0
movq %rax, -0x980(%rbp)
jmp 0x603b
movq -0x980(%rbp), %rdi
movq 0x8ef4f(%rip), %rsi     # 0x94f98
callq 0x4400
jmp 0x6050
movl $0x1, %edi
callq 0x4470
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x608c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
leaq -0x568(%rbp), %rdi
callq 0x4818
leaq -0x569(%rbp), %rdi
callq 0x4420
jmp 0x6ddd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x60cf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
leaq -0x590(%rbp), %rdi
callq 0x4818
leaq -0x591(%rbp), %rdi
callq 0x4420
jmp 0x6ddd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
leaq -0x5b8(%rbp), %rdi
callq 0x4818
jmp 0x6ddd
movq 0x8eede(%rip), %rdi     # 0x94fe8
leaq 0x613fb(%rip), %rsi     # 0x6750c
callq 0x43c0
movq %rax, -0x988(%rbp)
jmp 0x611f
movq -0x988(%rbp), %rdi
leaq 0x61078(%rip), %rsi     # 0x671a5
callq 0x43c0
movq %rax, -0x990(%rbp)
jmp 0x613b
leaq -0x88(%rbp), %rdi
callq 0x70b0
movq -0x990(%rbp), %rdi
movq %rax, %rsi
callq 0x40f0
movq %rax, -0x998(%rbp)
jmp 0x615f
movq -0x998(%rbp), %rdi
movq 0x8ee2b(%rip), %rsi     # 0x94f98
callq 0x4400
jmp 0x6174
movq 0x8ee6d(%rip), %rdi     # 0x94fe8
leaq 0x6138a(%rip), %rsi     # 0x6750c
callq 0x43c0
movq %rax, -0x9a0(%rbp)
jmp 0x6190
movq -0x9a0(%rbp), %rdi
leaq 0x60fa6(%rip), %rsi     # 0x67144
callq 0x43c0
movq %rax, -0x9a8(%rbp)
jmp 0x61ac
movq -0x9a8(%rbp), %rdi
movl -0x54(%rbp), %esi
callq 0x46d0
movq %rax, -0x9b0(%rbp)
jmp 0x61c4
movq -0x9b0(%rbp), %rdi
movq 0x8edc6(%rip), %rsi     # 0x94f98
callq 0x4400
jmp 0x61d9
movl $0x120, %edi            # imm = 0x120
callq 0x43d0
movq %rax, -0x9b8(%rbp)
jmp 0x61ec
movq -0x9b8(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x1c160
jmp 0x6201
movq -0x9b8(%rbp), %rax
movq %rax, -0x90(%rbp)
jmp 0x6234
movq -0x9b8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
callq 0x43a0
jmp 0x6ddd
leaq -0x5d9(%rbp), %rdi
movq %rdi, -0x9c0(%rbp)
callq 0x46f0
movq -0x9c0(%rbp), %rdx
leaq 0x60ea7(%rip), %rsi     # 0x670fc
leaq -0x5d8(%rbp), %rdi
callq 0x4550
jmp 0x6263
leaq -0x188(%rbp), %rdi
leaq -0x5d8(%rbp), %rsi
callq 0xbf00
movq %rax, -0x9c8(%rbp)
jmp 0x627f
movq -0x9c8(%rbp), %rax
movb 0x4a(%rax), %al
movb %al, -0x9c9(%rbp)
leaq -0x5d8(%rbp), %rdi
callq 0x4818
leaq -0x5d9(%rbp), %rdi
callq 0x4420
movb -0x9c9(%rbp), %al
testb $0x1, %al
je 0x65cb
movb $0x0, -0xc9(%rbp)
leaq -0x601(%rbp), %rdi
movq %rdi, -0x9d8(%rbp)
callq 0x46f0
movq -0x9d8(%rbp), %rdx
leaq 0x60e1f(%rip), %rsi     # 0x670fc
leaq -0x600(%rbp), %rdi
callq 0x4550
jmp 0x62eb
leaq -0x188(%rbp), %rdi
leaq -0x600(%rbp), %rsi
callq 0xbf00
movq %rax, -0x9e0(%rbp)
jmp 0x6307
movq -0x9e0(%rbp), %rdi
callq 0xae90
movq %rax, -0x9e8(%rbp)
jmp 0x631c
movq -0x9e8(%rbp), %rsi
leaq -0x50(%rbp), %rdi
callq 0x4040
jmp 0x632e
leaq -0x600(%rbp), %rdi
callq 0x4818
leaq -0x601(%rbp), %rdi
callq 0x4420
movq 0x8ec9b(%rip), %rdi     # 0x94fe8
leaq 0x60e08(%rip), %rsi     # 0x6715c
callq 0x43c0
movq %rax, -0x9f0(%rbp)
jmp 0x6362
movq -0x9f0(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x4380
movq %rax, -0x9f8(%rbp)
jmp 0x637b
movq -0x9f8(%rbp), %rdi
movq 0x8ec0f(%rip), %rsi     # 0x94f98
callq 0x4400
jmp 0x6390
leaq -0xc0(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x5f9e0
movl %eax, -0x9fc(%rbp)
jmp 0x63a8
movl -0x9fc(%rbp), %eax
movl %eax, -0x608(%rbp)
leaq -0xc0(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x60580
jmp 0x63c9
movl $0x120, %edi            # imm = 0x120
callq 0x43d0
movq %rax, -0xa08(%rbp)
jmp 0x63dc
movq -0xa08(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x1c160
jmp 0x63f1
movq -0xa08(%rbp), %rax
movq %rax, -0x90(%rbp)
cmpl $0x0, -0x608(%rbp)
jge 0x64f0
movq 0x8ebd5(%rip), %rdi     # 0x94fe8
leaq 0x60d57(%rip), %rsi     # 0x67171
callq 0x43c0
movq %rax, -0xa10(%rbp)
jmp 0x6428
movq -0xa10(%rbp), %rdi
movq 0x8eb62(%rip), %rsi     # 0x94f98
callq 0x4400
jmp 0x643d
movl $0x1, %edi
callq 0x4470
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x6479
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
leaq -0x5d8(%rbp), %rdi
callq 0x4818
leaq -0x5d9(%rbp), %rdi
callq 0x4420
jmp 0x6ddd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x64bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
leaq -0x600(%rbp), %rdi
callq 0x4818
leaq -0x601(%rbp), %rdi
callq 0x4420
jmp 0x6ddd
movq -0xa08(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
callq 0x43a0
jmp 0x6ddd
movq 0x8eaf1(%rip), %rdi     # 0x94fe8
leaq 0x6100e(%rip), %rsi     # 0x6750c
callq 0x43c0
movq %rax, -0xa18(%rbp)
jmp 0x650c
movq -0xa18(%rbp), %rdi
leaq 0x60c80(%rip), %rsi     # 0x6719a
callq 0x43c0
movq %rax, -0xa20(%rbp)
jmp 0x6528
leaq -0xc0(%rbp), %rdi
callq 0x70d0
movq -0xa20(%rbp), %rdi
movq %rax, %rsi
callq 0x40f0
movq %rax, -0xa28(%rbp)
jmp 0x654c
movq -0xa28(%rbp), %rdi
movq 0x8ea3e(%rip), %rsi     # 0x94f98
callq 0x4400
jmp 0x6561
movq 0x8ea80(%rip), %rdi     # 0x94fe8
leaq 0x60f9d(%rip), %rsi     # 0x6750c
callq 0x43c0
movq %rax, -0xa30(%rbp)
jmp 0x657d
movq -0xa30(%rbp), %rdi
leaq 0x60c21(%rip), %rsi     # 0x671ac
callq 0x43c0
movq %rax, -0xa38(%rbp)
jmp 0x6599
movq -0xa38(%rbp), %rdi
movl -0x608(%rbp), %esi
callq 0x46d0
movq %rax, -0xa40(%rbp)
jmp 0x65b4
movq -0xa40(%rbp), %rdi
movq 0x8e9d6(%rip), %rsi     # 0x94f98
callq 0x4400
jmp 0x65c9
jmp 0x65cb
movq 0x8ea16(%rip), %rdi     # 0x94fe8
leaq 0x60be1(%rip), %rsi     # 0x671ba
callq 0x43c0
movq %rax, -0xa48(%rbp)
jmp 0x65e7
movq -0xa48(%rbp), %rdi
movq 0x8e9a3(%rip), %rsi     # 0x94f98
callq 0x4400
jmp 0x65fc
leaq -0x630(%rbp), %rdi
leaq -0x488(%rbp), %rsi
callq 0x41a0
jmp 0x6611
leaq -0x610(%rbp), %rdi
leaq -0x630(%rbp), %rsi
callq 0x9b30
jmp 0x6626
leaq -0x630(%rbp), %rdi
callq 0x4818
leaq -0x658(%rbp), %rdi
leaq -0x4a8(%rbp), %rsi
callq 0x41a0
jmp 0x6647
leaq -0x638(%rbp), %rdi
leaq -0x658(%rbp), %rsi
callq 0x9ef0
jmp 0x665c
leaq -0x658(%rbp), %rdi
callq 0x4818
leaq -0x678(%rbp), %rdi
callq 0x4560
leaq -0x610(%rbp), %rdi
leaq -0x678(%rbp), %rsi
callq 0x70f0
movb %al, -0xa49(%rbp)
jmp 0x668f
movb -0xa49(%rbp), %al
testb $0x1, %al
jne 0x669e
jmp 0x6d6c
leaq -0x690(%rbp), %rdi
movq %rdi, -0xa58(%rbp)
callq 0x7120
movq -0xa58(%rbp), %rsi
movzbl -0x43a(%rbp), %edx
andl $0x1, %edx
leaq -0x678(%rbp), %rdi
callq 0x6e40
jmp 0x66d0
movl $0x0, -0x694(%rbp)
movl -0x694(%rbp), %eax
movq %rax, -0xa60(%rbp)
leaq -0x690(%rbp), %rdi
callq 0x7140
movq %rax, %rcx
movq -0xa60(%rbp), %rax
subq $0x1, %rcx
cmpq %rcx, %rax
jae 0x688f
movl -0x694(%rbp), %eax
movl %eax, %esi
leaq -0x690(%rbp), %rdi
movq %rdi, -0xa68(%rbp)
callq 0x7160
movq -0xa68(%rbp), %rdi
movl (%rax), %eax
movl %eax, -0x698(%rbp)
movl -0x694(%rbp), %eax
incl %eax
movl %eax, %esi
callq 0x7160
movl (%rax), %eax
movl %eax, -0x69c(%rbp)
movl -0x698(%rbp), %eax
movl %eax, %edx
movl %edx, %ecx
movl -0x69c(%rbp), %eax
subl %ecx, %eax
movl %eax, %ecx
leaq -0x6c0(%rbp), %rdi
leaq -0x678(%rbp), %rsi
callq 0x43e0
jmp 0x6774
movq -0x90(%rbp), %rdi
leaq -0x6c0(%rbp), %rsi
callq 0x1cae0
movb %al, -0xa69(%rbp)
jmp 0x678f
movb -0xa69(%rbp), %al
testb $0x1, %al
jne 0x686f
jmp 0x679f
movq -0x90(%rbp), %rdi
movsd -0xc8(%rbp), %xmm0
leaq -0x6c0(%rbp), %rsi
callq 0x1c590
jmp 0x67bc
jmp 0x686f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
leaq -0x630(%rbp), %rdi
callq 0x4818
jmp 0x6ddd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x6dd1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
leaq -0x658(%rbp), %rdi
callq 0x4818
jmp 0x6dd1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x6db9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x6d5e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
leaq -0x6c0(%rbp), %rdi
callq 0x4818
jmp 0x6d5e
leaq -0x6c0(%rbp), %rdi
callq 0x4818
movl -0x694(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x694(%rbp)
jmp 0x66da
leaq -0x6d8(%rbp), %rdi
callq 0x7180
testb $0x1, -0xc9(%rbp)
je 0x68ed
movq -0x90(%rbp), %rdi
movzbl -0x43a(%rbp), %r8d
andl $0x1, %r8d
leaq -0x678(%rbp), %rsi
leaq -0x6d8(%rbp), %rdx
movl $0x1, %ecx
callq 0x41ea0
jmp 0x68d1
jmp 0x6a13
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x6d52
movq -0x90(%rbp), %rcx
leaq 0x8eb3d(%rip), %rdx     # 0x95438
leaq -0x750(%rbp), %rdi
leaq -0x678(%rbp), %rsi
xorl %r8d, %r8d
callq 0x22e00
jmp 0x6913
leaq -0xc0(%rbp), %rdi
leaq -0x750(%rbp), %rsi
leaq -0x6d8(%rbp), %rdx
movl $0x1, %ecx
callq 0x43500
jmp 0x6934
leaq -0x6d8(%rbp), %rdi
movq %rdi, -0xa80(%rbp)
callq 0x7210
movq %rax, -0x760(%rbp)
leaq -0x758(%rbp), %rdi
leaq -0x760(%rbp), %rsi
callq 0x7240
movq -0xa80(%rbp), %rdi
movq -0x758(%rbp), %rsi
callq 0x71a0
movq %rax, -0xa78(%rbp)
jmp 0x697d
movq -0xa78(%rbp), %rax
movq %rax, -0x768(%rbp)
leaq -0x6d8(%rbp), %rdi
movq %rdi, -0xa90(%rbp)
callq 0x7280
movq %rax, -0x778(%rbp)
leaq -0x770(%rbp), %rdi
leaq -0x778(%rbp), %rsi
callq 0x7240
movq -0xa90(%rbp), %rdi
movq -0x770(%rbp), %rsi
callq 0x71a0
movq %rax, -0xa88(%rbp)
jmp 0x69d4
movq -0xa88(%rbp), %rax
movq %rax, -0x780(%rbp)
leaq -0x750(%rbp), %rdi
callq 0x25370
jmp 0x6a13
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
leaq -0x750(%rbp), %rdi
callq 0x25370
jmp 0x6d52
leaq -0x6d8(%rbp), %rdi
callq 0x7070
cmpq $0x0, %rax
jne 0x6a81
movq 0x8e5bc(%rip), %rdi     # 0x94fe8
leaq 0x60799(%rip), %rsi     # 0x671cc
callq 0x43c0
movq %rax, -0xa98(%rbp)
jmp 0x6a41
movq -0xa98(%rbp), %rdi
leaq -0x678(%rbp), %rsi
callq 0x4380
movq %rax, -0xaa0(%rbp)
jmp 0x6a5d
movq -0xaa0(%rbp), %rdi
movq 0x8e52d(%rip), %rsi     # 0x94f98
callq 0x4400
jmp 0x6a72
movl $0x2, -0x784(%rbp)
jmp 0x6ce6
movl $0x0, -0x788(%rbp)
movl -0x788(%rbp), %eax
movq %rax, -0xaa8(%rbp)
leaq -0x6d8(%rbp), %rdi
callq 0x7070
movq %rax, %rcx
movq -0xaa8(%rbp), %rax
cmpq %rcx, %rax
jae 0x6c80
movl -0x788(%rbp), %eax
movl %eax, %esi
leaq -0x6d8(%rbp), %rdi
callq 0x7090
movq %rax, %rdi
leaq 0x608c3(%rip), %rsi     # 0x67398
callq 0x72b0
movb %al, -0xaa9(%rbp)
jmp 0x6ae2
movb -0xaa9(%rbp), %al
testb $0x1, %al
jne 0x6af1
jmp 0x6b95
leaq -0x7a9(%rbp), %rdi
movq %rdi, -0xab8(%rbp)
callq 0x46f0
movq -0xab8(%rbp), %rdx
leaq 0x609fa(%rip), %rsi     # 0x6750c
leaq -0x7a8(%rbp), %rdi
callq 0x4550
jmp 0x6b20
leaq -0x638(%rbp), %rdi
leaq -0x7a8(%rbp), %rsi
callq 0xa190
jmp 0x6b35
leaq -0x7a8(%rbp), %rdi
callq 0x4818
leaq -0x7a9(%rbp), %rdi
callq 0x4420
jmp 0x6c6a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x6b84
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
leaq -0x7a8(%rbp), %rdi
callq 0x4818
leaq -0x7a9(%rbp), %rdi
callq 0x4420
jmp 0x6d52
cmpl $0x0, -0x788(%rbp)
jbe 0x6c43
leaq -0x7d1(%rbp), %rdi
movq %rdi, -0xac0(%rbp)
callq 0x46f0
movq -0xac0(%rbp), %rdx
leaq 0x607d5(%rip), %rsi     # 0x67398
leaq -0x7d0(%rbp), %rdi
callq 0x4550
jmp 0x6bd1
leaq -0x638(%rbp), %rdi
leaq -0x7d0(%rbp), %rsi
callq 0xa190
jmp 0x6be6
leaq -0x7d0(%rbp), %rdi
callq 0x4818
leaq -0x7d1(%rbp), %rdi
callq 0x4420
jmp 0x6c43
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x6c32
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
leaq -0x7d0(%rbp), %rdi
callq 0x4818
leaq -0x7d1(%rbp), %rdi
callq 0x4420
jmp 0x6d52
movl -0x788(%rbp), %eax
movl %eax, %esi
leaq -0x6d8(%rbp), %rdi
callq 0x7090
movq %rax, %rsi
leaq -0x638(%rbp), %rdi
callq 0xa190
jmp 0x6c68
jmp 0x6c6a
jmp 0x6c6c
movl -0x788(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x788(%rbp)
jmp 0x6a8b
leaq -0x7f9(%rbp), %rdi
movq %rdi, -0xac8(%rbp)
callq 0x46f0
movq -0xac8(%rbp), %rdx
leaq 0x606e1(%rip), %rsi     # 0x67382
leaq -0x7f8(%rbp), %rdi
callq 0x4550
jmp 0x6caf
leaq -0x638(%rbp), %rdi
leaq -0x7f8(%rbp), %rsi
callq 0xa190
jmp 0x6cc4
leaq -0x7f8(%rbp), %rdi
callq 0x4818
leaq -0x7f9(%rbp), %rdi
callq 0x4420
movl $0x0, -0x784(%rbp)
leaq -0x6d8(%rbp), %rdi
callq 0x72e0
leaq -0x690(%rbp), %rdi
callq 0x7340
movl -0x784(%rbp), %eax
testl %eax, %eax
je 0x6d0f
jmp 0x6d0a
jmp 0x6674
jmp 0x6674
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x6d46
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
leaq -0x7f8(%rbp), %rdi
callq 0x4818
leaq -0x7f9(%rbp), %rdi
callq 0x4420
leaq -0x6d8(%rbp), %rdi
callq 0x72e0
leaq -0x690(%rbp), %rdi
callq 0x7340
jmp 0x6db9
leaq -0x638(%rbp), %rdi
callq 0xa130
jmp 0x6d7a
cmpq $0x0, -0x90(%rbp)
je 0x6db2
movq -0x90(%rbp), %rax
movq %rax, -0xad0(%rbp)
cmpq $0x0, %rax
je 0x6db0
movq -0xad0(%rbp), %rdi
callq 0x1c6d0
movq -0xad0(%rbp), %rdi
callq 0x43a0
jmp 0x6db2
xorl %edi, %edi
callq 0x4470
leaq -0x678(%rbp), %rdi
callq 0x4818
leaq -0x638(%rbp), %rdi
callq 0xa100
leaq -0x610(%rbp), %rdi
callq 0x9d40
leaq -0x4a8(%rbp), %rdi
callq 0x4818
leaq -0x488(%rbp), %rdi
callq 0x4818
leaq -0x188(%rbp), %rdi
callq 0x73a0
leaq -0xc0(%rbp), %rdi
callq 0x7400
leaq -0x88(%rbp), %rdi
callq 0x7420
leaq -0x50(%rbp), %rdi
callq 0x4818
leaq -0x30(%rbp), %rdi
callq 0x4818
movq -0x190(%rbp), %rdi
callq 0x46e0
nopw (%rax,%rax)