// File: /workspace/github_cpp_makefile_star2_O1/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x8e8, %rsp            # imm = 0x8E8
movq %rsi, %rbx
movl %edi, %r14d
leaq -0x730(%rbp), %rdi
callq 0x7c56
leaq -0x638(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x21f13(%rip), %rsi     # 0x27018
leaq 0x21f3c(%rip), %rdx     # 0x27048
leaq -0x648(%rbp), %rdi
callq 0x6e0a
leaq -0x730(%rbp), %rdi
leaq -0x648(%rbp), %rsi
callq 0x7cbc
movq %rax, %r15
leaq -0x618(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0x21f11(%rip), %rsi     # 0x27051
leaq 0x21f0e(%rip), %rdx     # 0x27055
leaq -0x628(%rbp), %rdi
callq 0x6e0a
leaq -0x388(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x224d2(%rip), %rdx     # 0x27637
leaq -0x398(%rbp), %rdi
movq %rdx, %rsi
callq 0x6e0a
leaq -0x368(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x224b1(%rip), %rdx     # 0x27637
leaq -0x378(%rbp), %rdi
movq %rdx, %rsi
callq 0x6e0a
leaq -0x348(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x21ea2(%rip), %rsi     # 0x27049
leaq 0x21ea7(%rip), %rdx     # 0x27055
leaq -0x358(%rbp), %rdi
callq 0x6e0a
leaq -0x628(%rbp), %rdx
leaq -0x398(%rbp), %rcx
leaq -0x378(%rbp), %r8
leaq -0x358(%rbp), %r9
movq %r15, %rdi
movl $0x68, %esi
callq 0x7cd4
movq %rax, %r15
leaq -0x328(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x21e5e(%rip), %rsi     # 0x27056
leaq 0x21e66(%rip), %rdx     # 0x27065
leaq -0x338(%rbp), %rdi
callq 0x6e0a
leaq -0x308(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x21e49(%rip), %rsi     # 0x27066
leaq 0x21e45(%rip), %rdx     # 0x27069
leaq -0x318(%rbp), %rdi
callq 0x6e0a
leaq -0x2e8(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x223f5(%rip), %rdx     # 0x27637
leaq -0x2f8(%rbp), %rdi
movq %rdx, %rsi
callq 0x6e0a
leaq -0x2c8(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x21e07(%rip), %rsi     # 0x2706a
leaq 0x21e12(%rip), %rdx     # 0x2707c
leaq -0x2d8(%rbp), %rdi
callq 0x6e0a
leaq -0x338(%rbp), %rdx
leaq -0x318(%rbp), %rcx
leaq -0x2f8(%rbp), %r8
leaq -0x2d8(%rbp), %r9
movq %r15, %rdi
movl $0x76, %esi
callq 0x7cd4
movq %rax, %r15
leaq -0x2a8(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x21dc9(%rip), %rsi     # 0x2707d
leaq 0x21dd2(%rip), %rdx     # 0x2708d
leaq -0x2b8(%rbp), %rdi
callq 0x6e0a
leaq -0x288(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x21d8d(%rip), %rsi     # 0x27066
leaq 0x21d89(%rip), %rdx     # 0x27069
leaq -0x298(%rbp), %rdi
callq 0x6e0a
leaq -0x268(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22339(%rip), %rdx     # 0x27637
leaq -0x278(%rbp), %rdi
movq %rdx, %rsi
callq 0x6e0a
leaq -0x248(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x21d6f(%rip), %rsi     # 0x2708e
leaq 0x21d79(%rip), %rdx     # 0x2709f
leaq -0x258(%rbp), %rdi
callq 0x6e0a
leaq -0x2b8(%rbp), %rdx
leaq -0x298(%rbp), %rcx
leaq -0x278(%rbp), %r8
leaq -0x258(%rbp), %r9
movq %r15, %rdi
movl $0x74, %esi
callq 0x7cd4
movq %rax, %r15
leaq -0x228(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x21d30(%rip), %rsi     # 0x270a0
leaq 0x21d39(%rip), %rdx     # 0x270b0
leaq -0x238(%rbp), %rdi
callq 0x6e0a
leaq -0x208(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x222a2(%rip), %rdx     # 0x27637
leaq -0x218(%rbp), %rdi
movq %rdx, %rsi
callq 0x6e0a
leaq -0x1e8(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22281(%rip), %rdx     # 0x27637
leaq -0x1f8(%rbp), %rdi
movq %rdx, %rsi
callq 0x6e0a
leaq -0x1c8(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x21cda(%rip), %rsi     # 0x270b1
leaq 0x21d07(%rip), %rdx     # 0x270e5
leaq -0x1d8(%rbp), %rdi
callq 0x6e0a
leaq -0x238(%rbp), %rdx
leaq -0x218(%rbp), %rcx
leaq -0x1f8(%rbp), %r8
leaq -0x1d8(%rbp), %r9
movq %r15, %rdi
movl $0x66, %esi
callq 0x7cd4
movq %rax, %r15
leaq -0x1a8(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x21cbe(%rip), %rsi     # 0x270e6
leaq 0x21cbe(%rip), %rdx     # 0x270ed
leaq -0x1b8(%rbp), %rdi
callq 0x6e0a
leaq -0x188(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x221ea(%rip), %rdx     # 0x27637
leaq -0x198(%rbp), %rdi
movq %rdx, %rsi
callq 0x6e0a
leaq -0x168(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x221c9(%rip), %rdx     # 0x27637
leaq -0x178(%rbp), %rdi
movq %rdx, %rsi
callq 0x6e0a
leaq -0x148(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x21c5f(%rip), %rsi     # 0x270ee
leaq 0x21c76(%rip), %rdx     # 0x2710c
leaq -0x158(%rbp), %rdi
callq 0x6e0a
leaq -0x1b8(%rbp), %rdx
leaq -0x198(%rbp), %rcx
leaq -0x178(%rbp), %r8
leaq -0x158(%rbp), %r9
movq %r15, %rdi
movl $0x77, %esi
callq 0x7cd4
movq %rax, %r15
leaq -0x128(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x21c2d(%rip), %rsi     # 0x2710d
leaq 0x21c2b(%rip), %rdx     # 0x27112
leaq -0x138(%rbp), %rdi
callq 0x6e0a
leaq -0x108(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22132(%rip), %rdx     # 0x27637
leaq -0x118(%rbp), %rdi
movq %rdx, %rsi
callq 0x6e0a
leaq -0xe8(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22111(%rip), %rdx     # 0x27637
leaq -0xf8(%rbp), %rdi
movq %rdx, %rsi
callq 0x6e0a
leaq -0xc8(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x21bcc(%rip), %rsi     # 0x27113
leaq 0x21be4(%rip), %rdx     # 0x27132
leaq -0xd8(%rbp), %rdi
callq 0x6e0a
leaq -0x138(%rbp), %rdx
leaq -0x118(%rbp), %rcx
leaq -0xf8(%rbp), %r8
leaq -0xd8(%rbp), %r9
movq %r15, %rdi
movl $0x38, %esi
callq 0x7cd4
movq -0xd8(%rbp), %rdi
leaq -0xc8(%rbp), %rax
cmpq %rax, %rdi
je 0x559b
callq 0x4360
movq -0xf8(%rbp), %rdi
leaq -0xe8(%rbp), %rax
cmpq %rax, %rdi
je 0x55b3
callq 0x4360
movq -0x118(%rbp), %rdi
leaq -0x108(%rbp), %rax
cmpq %rax, %rdi
je 0x55cb
callq 0x4360
movq -0x138(%rbp), %rdi
leaq -0x128(%rbp), %rax
cmpq %rax, %rdi
je 0x55e3
callq 0x4360
movq -0x158(%rbp), %rdi
leaq -0x148(%rbp), %rax
cmpq %rax, %rdi
je 0x55fb
callq 0x4360
movq -0x178(%rbp), %rdi
leaq -0x168(%rbp), %rax
cmpq %rax, %rdi
je 0x5613
callq 0x4360
movq -0x198(%rbp), %rdi
leaq -0x188(%rbp), %rax
cmpq %rax, %rdi
je 0x562b
callq 0x4360
movq -0x1b8(%rbp), %rdi
leaq -0x1a8(%rbp), %rax
cmpq %rax, %rdi
je 0x5643
callq 0x4360
movq -0x1d8(%rbp), %rdi
leaq -0x1c8(%rbp), %rax
cmpq %rax, %rdi
je 0x565b
callq 0x4360
movq -0x1f8(%rbp), %rdi
leaq -0x1e8(%rbp), %rax
cmpq %rax, %rdi
je 0x5673
callq 0x4360
movq -0x218(%rbp), %rdi
leaq -0x208(%rbp), %rax
cmpq %rax, %rdi
je 0x568b
callq 0x4360
movq -0x238(%rbp), %rdi
leaq -0x228(%rbp), %rax
cmpq %rax, %rdi
je 0x56a3
callq 0x4360
movq -0x258(%rbp), %rdi
leaq -0x248(%rbp), %rax
cmpq %rax, %rdi
je 0x56bb
callq 0x4360
movq -0x278(%rbp), %rdi
leaq -0x268(%rbp), %rax
cmpq %rax, %rdi
je 0x56d3
callq 0x4360
movq -0x298(%rbp), %rdi
leaq -0x288(%rbp), %rax
cmpq %rax, %rdi
je 0x56eb
callq 0x4360
movq -0x2b8(%rbp), %rdi
leaq -0x2a8(%rbp), %rax
cmpq %rax, %rdi
je 0x5703
callq 0x4360
movq -0x2d8(%rbp), %rdi
leaq -0x2c8(%rbp), %rax
cmpq %rax, %rdi
je 0x571b
callq 0x4360
movq -0x2f8(%rbp), %rdi
leaq -0x2e8(%rbp), %rax
cmpq %rax, %rdi
je 0x5733
callq 0x4360
movq -0x318(%rbp), %rdi
leaq -0x308(%rbp), %rax
cmpq %rax, %rdi
je 0x574b
callq 0x4360
movq -0x338(%rbp), %rdi
leaq -0x328(%rbp), %rax
cmpq %rax, %rdi
je 0x5763
callq 0x4360
movq -0x358(%rbp), %rdi
leaq -0x348(%rbp), %rax
cmpq %rax, %rdi
je 0x577b
callq 0x4360
movq -0x378(%rbp), %rdi
leaq -0x368(%rbp), %rax
cmpq %rax, %rdi
je 0x5793
callq 0x4360
movq -0x398(%rbp), %rdi
leaq -0x388(%rbp), %rax
cmpq %rax, %rdi
je 0x57ab
callq 0x4360
movq -0x628(%rbp), %rdi
cmpq %r13, %rdi
je 0x57bc
callq 0x4360
movq -0x648(%rbp), %rdi
cmpq %r12, %rdi
je 0x57cd
callq 0x4360
leaq -0x730(%rbp), %rdi
movl %r14d, %esi
movq %rbx, %rdx
callq 0x8722
movq -0x690(%rbp), %rax
subq -0x698(%rbp), %rax
cmpq $0x60, %rax
je 0x580e
movq 0x2f7ce(%rip), %rax     # 0x34fc8
movq (%rax), %rsi
leaq -0x730(%rbp), %rdi
movl $0x1, %edx
callq 0x8cc4
leaq -0x5f8(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x219a0(%rip), %rsi     # 0x271c0
leaq 0x219a3(%rip), %rdx     # 0x271ca
leaq -0x608(%rbp), %rdi
callq 0x6e0a
leaq -0x730(%rbp), %rdi
leaq -0x608(%rbp), %rsi
callq 0x87dc
movb 0x4a(%rax), %bl
testb %bl, %bl
je 0x5852
xorl %r15d, %r15d
jmp 0x5892
leaq -0x5d8(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x2191f(%rip), %rsi     # 0x27183
leaq 0x21923(%rip), %rdx     # 0x2718e
leaq -0x5e8(%rbp), %rdi
callq 0x6e0a
leaq -0x730(%rbp), %rdi
leaq -0x5e8(%rbp), %rsi
callq 0x87dc
movb 0x4a(%rax), %r15b
xorb $0x1, %r15b
testb %bl, %bl
jne 0x58ab
leaq -0x5d8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x58ab
callq 0x4360
movq -0x608(%rbp), %rdi
cmpq %r14, %rdi
je 0x58bc
callq 0x4360
testb %r15b, %r15b
je 0x58ef
movq 0x2f720(%rip), %rdi     # 0x34fe8
leaq 0x21864(%rip), %rsi     # 0x27133
movl $0x27, %edx
callq 0x4410
movq 0x2f708(%rip), %rdi     # 0x34fe8
callq 0x4190
movl $0x1, %edi
callq 0x4430
leaq -0x5b8(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x218bf(%rip), %rsi     # 0x271c0
leaq 0x218c2(%rip), %rdx     # 0x271ca
leaq -0x5c8(%rbp), %rdi
callq 0x6e0a
leaq -0x730(%rbp), %rdi
leaq -0x5c8(%rbp), %rsi
callq 0x87dc
movb 0x4a(%rax), %bl
cmpb $0x1, %bl
jne 0x596d
leaq -0x598(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x21842(%rip), %rsi     # 0x27183
leaq 0x21846(%rip), %rdx     # 0x2718e
leaq -0x5a8(%rbp), %rdi
callq 0x6e0a
leaq -0x730(%rbp), %rdi
leaq -0x5a8(%rbp), %rsi
callq 0x87dc
movb 0x4a(%rax), %r15b
jmp 0x5970
xorl %r15d, %r15d
testb %bl, %bl
je 0x5989
leaq -0x598(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5989
callq 0x4360
movq -0x5c8(%rbp), %rdi
cmpq %r14, %rdi
je 0x599a
callq 0x4360
testb %r15b, %r15b
je 0x59c8
movq 0x2f642(%rip), %rdi     # 0x34fe8
leaq 0x217ae(%rip), %rsi     # 0x2715b
movl $0x33, %edx
callq 0x4410
movq 0x2f62a(%rip), %rdi     # 0x34fe8
callq 0x4190
jmp 0x58e5
leaq -0xa8(%rbp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x418(%rbp), %r13
movq %r13, -0x10(%r13)
movq %rax, -0x8(%r13)
movb %al, (%r13)
leaq -0x3c0(%rbp), %rcx
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq -0x670(%rbp), %rcx
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
movq -0x698(%rbp), %rax
leaq -0x3f8(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0x408(%rbp), %rdi
callq 0x6d70
movq -0x698(%rbp), %rax
leaq -0x3d8(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq 0x20(%rax), %rsi
movq 0x28(%rax), %rdx
addq %rsi, %rdx
leaq -0x3e8(%rbp), %rdi
callq 0x6d70
movq -0x698(%rbp), %rax
leaq -0x578(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq 0x40(%rax), %rsi
movq 0x48(%rax), %rdx
addq %rsi, %rdx
leaq -0x588(%rbp), %rdi
callq 0x6d70
leaq -0x558(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x215f4(%rip), %rsi     # 0x270a0
leaq 0x215fd(%rip), %rdx     # 0x270b0
leaq -0x568(%rbp), %rdi
callq 0x6e0a
leaq -0x730(%rbp), %rdi
leaq -0x568(%rbp), %rsi
callq 0x87dc
movb 0x4a(%rax), %al
movb %al, -0x2a(%rbp)
movq -0x568(%rbp), %rdi
cmpq %r14, %rdi
je 0x5ae9
callq 0x4360
leaq -0x538(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x215eb(%rip), %rsi     # 0x270e6
leaq 0x215eb(%rip), %rdx     # 0x270ed
leaq -0x548(%rbp), %rdi
callq 0x6e0a
leaq -0x730(%rbp), %rdi
leaq -0x548(%rbp), %rsi
callq 0x87dc
movb 0x4a(%rax), %al
movb %al, -0x2b(%rbp)
movq -0x548(%rbp), %rdi
cmpq %r14, %rdi
je 0x5b38
callq 0x4360
leaq -0x518(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x215c3(%rip), %rsi     # 0x2710d
leaq 0x215c1(%rip), %rdx     # 0x27112
leaq -0x528(%rbp), %rdi
callq 0x6e0a
leaq -0x730(%rbp), %rdi
leaq -0x528(%rbp), %rsi
callq 0x87dc
movb 0x4a(%rax), %bl
movq -0x528(%rbp), %rdi
cmpq %r14, %rdi
je 0x5b84
callq 0x4360
leaq -0x4f8(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x2162a(%rip), %rsi     # 0x271c0
leaq 0x2162d(%rip), %rdx     # 0x271ca
leaq -0x508(%rbp), %rdi
callq 0x6e0a
leaq -0x730(%rbp), %rdi
leaq -0x508(%rbp), %rsi
callq 0x87dc
movb 0x4a(%rax), %r15b
movq -0x508(%rbp), %rdi
cmpq %r14, %rdi
je 0x5bd1
callq 0x4360
testb %r15b, %r15b
je 0x5d10
leaq -0x4d8(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x215d4(%rip), %rsi     # 0x271c0
leaq 0x215d7(%rip), %rdx     # 0x271ca
leaq -0x4e8(%rbp), %rdi
callq 0x6e0a
leaq -0x730(%rbp), %rdi
leaq -0x4e8(%rbp), %rsi
callq 0x87dc
movq %rax, %rdi
callq 0x7c42
leaq -0xb8(%rbp), %rdi
movq %rax, %rsi
callq 0x41d0
movq -0x4e8(%rbp), %rdi
cmpq %r14, %rdi
je 0x5c3a
callq 0x4360
movq 0x2f3a7(%rip), %rdi     # 0x34fe8
leaq 0x21547(%rip), %rsi     # 0x2718f
movl $0x13, %edx
callq 0x4410
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
movq 0x2f381(%rip), %rdi     # 0x34fe8
callq 0x4410
movq %rax, %rdi
callq 0x4190
leaq -0x4b8(%rbp), %r14
movq %r14, -0x10(%r14)
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
addq %rsi, %rdx
leaq -0x4c8(%rbp), %rdi
callq 0x6d70
movzbl %bl, %ecx
leaq -0x4c8(%rbp), %rdi
leaq -0x3c8(%rbp), %rsi
leaq -0x64(%rbp), %rdx
callq 0x1e37e
movl %eax, %ebx
movq -0x4c8(%rbp), %rdi
cmpq %r14, %rdi
je 0x5cc9
callq 0x4360
leaq 0x2f6f0(%rip), %rsi     # 0x353c0
leaq -0x3c8(%rbp), %rdi
callq 0x6a0a
movq $0x0, (%rax)
testl %ebx, %ebx
jns 0x5d18
movq 0x2f2fa(%rip), %rdi     # 0x34fe8
leaq 0x214ae(%rip), %rsi     # 0x271a3
movl $0x27, %edx
callq 0x4410
movq 0x2f2e2(%rip), %rdi     # 0x34fe8
callq 0x4190
jmp 0x58e5
xorl %r14d, %r14d
jmp 0x5dc6
movq 0x2f2c9(%rip), %rdi     # 0x34fe8
leaq 0x21910(%rip), %rsi     # 0x27636
movl $0x1, %edx
callq 0x4410
movq 0x2f2b1(%rip), %rdi     # 0x34fe8
leaq 0x2148d(%rip), %rsi     # 0x271cb
movl $0x6, %edx
callq 0x4410
movq -0x3a0(%rbp), %rsi
movq 0x2f292(%rip), %rdi     # 0x34fe8
callq 0x4260
movq %rax, %rdi
callq 0x4190
movq 0x2f27e(%rip), %rdi     # 0x34fe8
leaq 0x218c5(%rip), %rsi     # 0x27636
movl $0x1, %edx
callq 0x4410
movq 0x2f266(%rip), %rdi     # 0x34fe8
leaq 0x21449(%rip), %rsi     # 0x271d2
movl $0x17, %edx
callq 0x4410
movl -0x64(%rbp), %esi
movq 0x2f24b(%rip), %rdi     # 0x34fe8
callq 0x4640
movq %rax, %rdi
callq 0x4190
movl $0x120, %edi            # imm = 0x120
callq 0x43a0
movq %rax, %r14
leaq -0x3c8(%rbp), %rsi
movq %rax, %rdi
callq 0xda38
leaq -0x498(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x213ab(%rip), %rsi     # 0x27183
leaq 0x213af(%rip), %rdx     # 0x2718e
leaq -0x4a8(%rbp), %rdi
callq 0x6e0a
leaq -0x730(%rbp), %rdi
leaq -0x4a8(%rbp), %rsi
callq 0x87dc
movb 0x4a(%rax), %al
movb %al, -0x29(%rbp)
movq -0x4a8(%rbp), %rdi
cmpq %r15, %rdi
je 0x5e15
callq 0x4360
cmpb $0x0, -0x29(%rbp)
je 0x5fbb
leaq -0x478(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x2138f(%rip), %rsi     # 0x271c0
leaq 0x21392(%rip), %rdx     # 0x271ca
leaq -0x488(%rbp), %rdi
callq 0x6e0a
leaq -0x730(%rbp), %rdi
leaq -0x488(%rbp), %rsi
callq 0x87dc
movq %rax, %rdi
callq 0x7c42
leaq -0x428(%rbp), %rdi
movq %rax, %rsi
callq 0x41d0
movq -0x488(%rbp), %rdi
cmpq %r14, %rdi
je 0x5e7f
callq 0x4360
movq 0x2f162(%rip), %rdi     # 0x34fe8
leaq 0x2135d(%rip), %rsi     # 0x271ea
movl $0x14, %edx
callq 0x4410
movq -0x428(%rbp), %rsi
movq -0x420(%rbp), %rdx
movq 0x2f13c(%rip), %rdi     # 0x34fe8
callq 0x4410
movq %rax, %rdi
callq 0x4190
leaq -0x678(%rbp), %rdi
leaq -0x428(%rbp), %rsi
callq 0x234f2
movl %eax, %ebx
leaq -0x678(%rbp), %rdi
leaq -0x3c8(%rbp), %rsi
callq 0x23cea
movl $0x120, %edi            # imm = 0x120
callq 0x43a0
movq %rax, %r14
leaq -0x3c8(%rbp), %rsi
movq %rax, %rdi
callq 0xda38
testl %ebx, %ebx
jns 0x5f2a
movq 0x2f0e0(%rip), %rdi     # 0x34fe8
leaq 0x212f0(%rip), %rsi     # 0x271ff
movl $0x28, %edx
callq 0x4410
movq 0x2f0c8(%rip), %rdi     # 0x34fe8
callq 0x4190
jmp 0x58e5
movq 0x2f0b7(%rip), %rdi     # 0x34fe8
leaq 0x216fe(%rip), %rsi     # 0x27636
movl $0x1, %edx
callq 0x4410
movq 0x2f09f(%rip), %rdi     # 0x34fe8
leaq 0x212d8(%rip), %rsi     # 0x27228
movl $0xc, %edx
callq 0x4410
movq -0x650(%rbp), %rsi
movq 0x2f080(%rip), %rdi     # 0x34fe8
callq 0x4260
movq %rax, %rdi
callq 0x4190
movq 0x2f06c(%rip), %rdi     # 0x34fe8
leaq 0x216b3(%rip), %rsi     # 0x27636
movl $0x1, %edx
callq 0x4410
movq 0x2f054(%rip), %rdi     # 0x34fe8
leaq 0x2129a(%rip), %rsi     # 0x27235
movl $0xd, %edx
callq 0x4410
movq 0x2f03c(%rip), %rdi     # 0x34fe8
movl %ebx, %esi
callq 0x4640
movq %rax, %rdi
callq 0x4190
movq 0x2f026(%rip), %rdi     # 0x34fe8
leaq 0x2127a(%rip), %rsi     # 0x27243
movl $0x11, %edx
callq 0x4410
movq 0x2f00e(%rip), %rdi     # 0x34fe8
callq 0x4190
leaq -0x458(%rbp), %r15
movq %r15, -0x10(%r15)
movq -0x408(%rbp), %rsi
movq -0x400(%rbp), %rdx
addq %rsi, %rdx
leaq -0x468(%rbp), %rdi
callq 0x6d70
leaq -0x98(%rbp), %rdi
leaq -0x468(%rbp), %rsi
callq 0x7228
movq -0x468(%rbp), %rdi
cmpq %r15, %rdi
je 0x602b
callq 0x4360
leaq -0x788(%rbp), %rax
xorl %ecx, %ecx
movl %ecx, (%rax)
movq %rcx, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %rcx, 0x20(%rax)
leaq -0x758(%rbp), %rax
movl %ecx, (%rax)
movq %rcx, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %rcx, 0x20(%rax)
leaq -0x78(%rbp), %rax
movq %rax, -0x10(%rax)
movq %rcx, -0x8(%rax)
movb $0x0, (%rax)
leaq -0x900(%rbp), %r15
movl $0x1, -0x30(%rbp)
leaq -0x910(%rbp), %rbx
movq -0x98(%rbp), %rdi
movq (%rdi), %rax
leaq -0x88(%rbp), %rsi
callq *(%rax)
testb %al, %al
je 0x634a
imull $0xbcbe61d, -0x30(%rbp), %eax # imm = 0xBCBE61D
rorl $0x5, %eax
cmpl $0xa7c5, %eax           # imm = 0xA7C5
ja 0x60de
movl $0x18, %edx
movq 0x2ef2d(%rip), %rdi     # 0x34fe8
leaq 0x21193(%rip), %rsi     # 0x27255
callq 0x4410
movq 0x2ef1a(%rip), %rdi     # 0x34fe8
movl -0x30(%rbp), %esi
callq 0x4640
movq %rax, %rdi
callq 0x4190
leaq -0x88(%rbp), %rdi
movl $0xa, %esi
callq 0x6985
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, -0x90(%rbp)
cmpb $0x0, -0x2b(%rbp)
je 0x61bc
leaq -0x50(%rbp), %rax
movq %rax, -0x60(%rbp)
movq $0x0, -0x58(%rbp)
movb $0x0, -0x50(%rbp)
movq %rbx, %rdi
leaq -0x88(%rbp), %rsi
movl $0x8, %edx
callq 0x45f0
movq -0x910(%rbp), %rax
movq -0x18(%rax), %rax
orl $0x1000, -0x8f8(%rbp,%rax) # imm = 0x1000
movq %rbx, %rdi
leaq -0x90(%rbp), %rsi
callq 0x4250
movq %rbx, %rdi
leaq -0x60(%rbp), %rsi
callq 0x40a0
leaq -0x60(%rbp), %rdi
movl $0x9, %esi
callq 0x6985
leaq -0x60(%rbp), %rdi
movl $0x20, %esi
callq 0x6985
leaq -0x88(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x41d0
movq %rbx, %rdi
movq 0x2ee17(%rip), %rsi     # 0x34fb0
callq 0x44e0
leaq -0x898(%rbp), %rdi
callq 0x4120
movq -0x60(%rbp), %rdi
leaq -0x50(%rbp), %rax
cmpq %rax, %rdi
je 0x61bc
callq 0x4360
cmpq $0x0, -0x80(%rbp)
je 0x6233
movl $0x1, %r12d
xorl %eax, %eax
movq -0x88(%rbp), %rcx
movb (%rcx,%rax), %al
movq %r15, -0x910(%rbp)
movb %al, -0x900(%rbp)
movq $0x1, -0x908(%rbp)
movb $0x0, -0x8ff(%rbp)
movq %r14, %rdi
movq %rbx, %rsi
callq 0xe01a
testb %al, %al
jne 0x6216
movq %r14, %rdi
movq %rbx, %rsi
movsd 0x20df7(%rip), %xmm0    # 0x27008
callq 0xdcb0
movq -0x910(%rbp), %rdi
cmpq %r15, %rdi
je 0x6227
callq 0x4360
movl %r12d, %eax
incl %r12d
cmpq %rax, -0x80(%rbp)
ja 0x61cb
movl $0x0, -0x58(%rbp)
xorl %eax, %eax
movq %rax, -0x50(%rbp)
leaq -0x58(%rbp), %rcx
movq %rcx, -0x48(%rbp)
movq %rcx, -0x40(%rbp)
movq %rax, -0x38(%rbp)
cmpb $0x0, -0x29(%rbp)
je 0x628d
movq %rbx, %rdi
leaq -0x88(%rbp), %rsi
leaq 0x2f159(%rip), %rdx     # 0x353c0
movq %r14, %rcx
xorl %r8d, %r8d
callq 0xf6d4
cmpb $0x0, -0x2a(%rbp)
je 0x62c4
leaq -0x678(%rbp), %rdi
movq %rbx, %rsi
leaq -0x60(%rbp), %rdx
callq 0x1948f
jmp 0x62df
cmpb $0x0, -0x2a(%rbp)
je 0x62e9
movq %rbx, %rdi
leaq -0x88(%rbp), %rsi
leaq 0x2f11c(%rip), %rdx     # 0x353c0
movq %r14, %rcx
xorl %r8d, %r8d
callq 0xf6d4
leaq -0x3c8(%rbp), %rdi
movq %rbx, %rsi
leaq -0x60(%rbp), %rdx
callq 0x19c1c
jmp 0x62df
leaq -0x678(%rbp), %rdi
movq %rbx, %rsi
leaq -0x60(%rbp), %rdx
movsd 0x20d36(%rip), %xmm0    # 0x27010
callq 0x18f5f
movq %rbx, %rdi
callq 0x110c4
jmp 0x631a
movq %rbx, %rdi
leaq -0x3c8(%rbp), %rsi
callq 0xda38
movq %rbx, %rdi
leaq -0x88(%rbp), %rsi
leaq -0x60(%rbp), %rdx
leaq 0x2f0b3(%rip), %rcx     # 0x353c0
callq 0x18a65
movq %rbx, %rdi
callq 0xdd84
movsd -0x90(%rbp), %xmm0
leaq -0x60(%rbp), %rdi
leaq -0x760(%rbp), %rsi
leaq -0x790(%rbp), %rdx
callq 0x22c02
incl -0x30(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x6a98
jmp 0x6083
testq %r14, %r14
je 0x635f
movq %r14, %rdi
callq 0xdd84
movq %r14, %rdi
callq 0x4360
leaq -0x438(%rbp), %r14
movq %r14, -0x10(%r14)
movq -0x3e8(%rbp), %rsi
movq -0x3e0(%rbp), %rdx
addq %rsi, %rdx
leaq -0x448(%rbp), %rdi
callq 0x6d70
leaq -0x448(%rbp), %rdi
leaq -0x790(%rbp), %rsi
movl $0x1, %edx
movl $0xa, %ecx
callq 0x1e7e2
movq -0x448(%rbp), %rdi
cmpq %r14, %rdi
je 0x63b5
callq 0x4360
leaq -0x760(%rbp), %rdi
leaq -0x588(%rbp), %rsi
movl $0x1, %edx
movl $0xa, %ecx
callq 0x231b6
xorl %edi, %edi
callq 0x4430
jmp 0x647a
movq %rax, %rbx
movq -0x448(%rbp), %rdi
cmpq %r14, %rdi
jne 0x6473
jmp 0x647d
jmp 0x6420
movq %rax, %rbx
leaq -0x910(%rbp), %rdi
callq 0xdd84
jmp 0x6423
jmp 0x6420
jmp 0x640d
movq %rax, %rbx
leaq -0x910(%rbp), %rdi
callq 0x110c4
jmp 0x6423
jmp 0x6420
movq %rax, %rbx
leaq -0x60(%rbp), %rdi
callq 0x6a98
jmp 0x647d
movq %rax, %rbx
movq -0x910(%rbp), %rdi
cmpq %r15, %rdi
jne 0x6473
jmp 0x647d
movq %rax, %rbx
movq 0x2eb67(%rip), %rsi     # 0x34fb0
leaq -0x910(%rbp), %rdi
callq 0x44e0
leaq -0x898(%rbp), %rdi
callq 0x4120
jmp 0x6466
movq %rax, %rbx
movq -0x60(%rbp), %rdi
leaq -0x50(%rbp), %rax
cmpq %rax, %rdi
je 0x647d
callq 0x4360
jmp 0x647d
movq %rax, %rbx
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x6492
callq 0x4360
leaq -0x760(%rbp), %rdi
callq 0x6a98
leaq -0x790(%rbp), %rdi
callq 0x6b26
leaq -0x98(%rbp), %rdi
callq 0x737a
jmp 0x6560
movq %rax, %rbx
movq -0x468(%rbp), %rdi
jmp 0x64f0
jmp 0x655d
jmp 0x655d
jmp 0x655d
jmp 0x64f9
movq %rax, %rbx
movq -0x488(%rbp), %rdi
jmp 0x6551
jmp 0x655d
movq %rax, %rbx
movq -0x4a8(%rbp), %rdi
cmpq %r15, %rdi
jne 0x6556
jmp 0x6560
jmp 0x655d
movq %rax, %rbx
movq %r14, %rdi
jmp 0x6556
jmp 0x655d
movq %rax, %rbx
movq -0x4c8(%rbp), %rdi
jmp 0x6551
movq %rax, %rbx
movq -0x4e8(%rbp), %rdi
jmp 0x6551
jmp 0x655d
movq %rax, %rbx
movq -0x508(%rbp), %rdi
jmp 0x6551
jmp 0x655d
movq %rax, %rbx
movq -0x528(%rbp), %rdi
jmp 0x6551
jmp 0x655d
movq %rax, %rbx
movq -0x548(%rbp), %rdi
jmp 0x6551
jmp 0x655d
movq %rax, %rbx
movq -0x568(%rbp), %rdi
cmpq %r14, %rdi
je 0x6560
callq 0x4360
jmp 0x6560
movq %rax, %rbx
movq -0x588(%rbp), %rdi
leaq -0x578(%rbp), %rax
cmpq %rax, %rdi
je 0x657d
callq 0x4360
jmp 0x657d
movq %rax, %rbx
movq -0x3e8(%rbp), %rdi
leaq -0x3d8(%rbp), %rax
cmpq %rax, %rdi
je 0x659a
callq 0x4360
jmp 0x659a
movq %rax, %rbx
movq -0x408(%rbp), %rdi
leaq -0x3f8(%rbp), %rax
cmpq %rax, %rdi
je 0x65cd
callq 0x4360
jmp 0x65cd
movq %rax, %rbx
movq -0x5a8(%rbp), %rdi
cmpq %r15, %rdi
je 0x6617
callq 0x4360
jmp 0x6617
movq %rax, %rbx
leaq -0x678(%rbp), %rdi
callq 0x6a98
leaq -0x3c8(%rbp), %rdi
callq 0x6b26
movq -0x428(%rbp), %rdi
cmpq %r13, %rdi
je 0x65f6
callq 0x4360
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
jne 0x692b
jmp 0x6935
jmp 0x6614
movq %rax, %rbx
movq -0x5c8(%rbp), %rdi
jmp 0x6647
movq %rax, %rbx
movq -0x5e8(%rbp), %rdi
cmpq %r15, %rdi
je 0x6640
callq 0x4360
jmp 0x6640
jmp 0x6932
jmp 0x663d
movq %rax, %rbx
movq -0x608(%rbp), %rdi
cmpq %r14, %rdi
jne 0x692b
jmp 0x6935
jmp 0x6932
jmp 0x6932
movq %rax, %rbx
movq -0xd8(%rbp), %rdi
leaq -0xc8(%rbp), %rax
cmpq %rax, %rdi
je 0x667f
callq 0x4360
jmp 0x667f
movq %rax, %rbx
movq -0xf8(%rbp), %rdi
leaq -0xe8(%rbp), %rax
cmpq %rax, %rdi
je 0x669c
callq 0x4360
jmp 0x669c
movq %rax, %rbx
movq -0x118(%rbp), %rdi
leaq -0x108(%rbp), %rax
cmpq %rax, %rdi
je 0x66b9
callq 0x4360
jmp 0x66b9
movq %rax, %rbx
movq -0x138(%rbp), %rdi
leaq -0x128(%rbp), %rax
cmpq %rax, %rdi
je 0x66d8
callq 0x4360
jmp 0x66d8
jmp 0x66d5
movq %rax, %rbx
movq -0x158(%rbp), %rdi
leaq -0x148(%rbp), %rax
cmpq %rax, %rdi
je 0x66f5
callq 0x4360
jmp 0x66f5
movq %rax, %rbx
movq -0x178(%rbp), %rdi
leaq -0x168(%rbp), %rax
cmpq %rax, %rdi
je 0x6712
callq 0x4360
jmp 0x6712
movq %rax, %rbx
movq -0x198(%rbp), %rdi
leaq -0x188(%rbp), %rax
cmpq %rax, %rdi
je 0x672f
callq 0x4360
jmp 0x672f
movq %rax, %rbx
movq -0x1b8(%rbp), %rdi
leaq -0x1a8(%rbp), %rax
cmpq %rax, %rdi
je 0x674e
callq 0x4360
jmp 0x674e
jmp 0x674b
movq %rax, %rbx
movq -0x1d8(%rbp), %rdi
leaq -0x1c8(%rbp), %rax
cmpq %rax, %rdi
je 0x676b
callq 0x4360
jmp 0x676b
movq %rax, %rbx
movq -0x1f8(%rbp), %rdi
leaq -0x1e8(%rbp), %rax
cmpq %rax, %rdi
je 0x6788
callq 0x4360
jmp 0x6788
movq %rax, %rbx
movq -0x218(%rbp), %rdi
leaq -0x208(%rbp), %rax
cmpq %rax, %rdi
je 0x67a5
callq 0x4360
jmp 0x67a5
movq %rax, %rbx
movq -0x238(%rbp), %rdi
leaq -0x228(%rbp), %rax
cmpq %rax, %rdi
je 0x67c4
callq 0x4360
jmp 0x67c4
jmp 0x67c1
movq %rax, %rbx
movq -0x258(%rbp), %rdi
leaq -0x248(%rbp), %rax
cmpq %rax, %rdi
je 0x67e1
callq 0x4360
jmp 0x67e1
movq %rax, %rbx
movq -0x278(%rbp), %rdi
leaq -0x268(%rbp), %rax
cmpq %rax, %rdi
je 0x67fe
callq 0x4360
jmp 0x67fe
movq %rax, %rbx
movq -0x298(%rbp), %rdi
leaq -0x288(%rbp), %rax
cmpq %rax, %rdi
je 0x681b
callq 0x4360
jmp 0x681b
movq %rax, %rbx
movq -0x2b8(%rbp), %rdi
leaq -0x2a8(%rbp), %rax
cmpq %rax, %rdi
je 0x683a
callq 0x4360
jmp 0x683a
jmp 0x6837
movq %rax, %rbx
movq -0x2d8(%rbp), %rdi
leaq -0x2c8(%rbp), %rax
cmpq %rax, %rdi
je 0x6857
callq 0x4360
jmp 0x6857
movq %rax, %rbx
movq -0x2f8(%rbp), %rdi
leaq -0x2e8(%rbp), %rax
cmpq %rax, %rdi
je 0x6874
callq 0x4360
jmp 0x6874
movq %rax, %rbx
movq -0x318(%rbp), %rdi
leaq -0x308(%rbp), %rax
cmpq %rax, %rdi
je 0x6891
callq 0x4360
jmp 0x6891
movq %rax, %rbx
movq -0x338(%rbp), %rdi
leaq -0x328(%rbp), %rax
cmpq %rax, %rdi
je 0x68b0
callq 0x4360
jmp 0x68b0
jmp 0x68ad
movq %rax, %rbx
movq -0x358(%rbp), %rdi
leaq -0x348(%rbp), %rax
cmpq %rax, %rdi
je 0x68cd
callq 0x4360
jmp 0x68cd
movq %rax, %rbx
movq -0x378(%rbp), %rdi
leaq -0x368(%rbp), %rax
cmpq %rax, %rdi
je 0x68ea
callq 0x4360
jmp 0x68ea
movq %rax, %rbx
movq -0x398(%rbp), %rdi
leaq -0x388(%rbp), %rax
cmpq %rax, %rdi
je 0x6907
callq 0x4360
jmp 0x6907
movq %rax, %rbx
movq -0x628(%rbp), %rdi
cmpq %r13, %rdi
je 0x691f
callq 0x4360
jmp 0x691f
jmp 0x691c
movq %rax, %rbx
movq -0x648(%rbp), %rdi
cmpq %r12, %rdi
je 0x6935
callq 0x4360
jmp 0x6935
movq %rax, %rbx
leaq -0x698(%rbp), %rdi
callq 0x6bba
leaq -0x6c8(%rbp), %rdi
callq 0x6c3c
leaq -0x6f8(%rbp), %rdi
callq 0x6ca6
leaq -0x710(%rbp), %r14
movq %r14, %rdi
callq 0x6c08
movq -0x20(%r14), %rdi
leaq -0x720(%rbp), %rax
cmpq %rax, %rdi
je 0x697d
callq 0x4360
movq %rbx, %rdi
callq 0x4670