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

    conf::Config config;
    config("usage: 1g-threshold-sents [OPTION...] CORPUS VOCAB_INIT VOCAB_FINAL\n")
      ('h', "help", "", "", "display help")
      ('i', "threshold-increment=FLOAT", "arg", "1.0", "Threshold increment for each iteration, DEFAULT: 1.0")
      ('m', "min-length=INT", "arg", "2", "Minimum length of factors to remove, DEFAULT: 2")
      ('v', "vocab-size=INT", "arg must", "", "Target vocabulary size")
      ('s', "stop-list=STRING", "arg", "", "Text file containing subwords that should not be removed")
      ('f', "forward-backward", "", "", "Use Forward-backward segmentation instead of Viterbi")
      ('8', "utf-8", "", "", "Utf-8 character encoding in use");
    config.default_parse(argc, argv);
    if (config.arguments.size() != 3) config.print_help(stderr, 1);

    flt_type short_factor_min_lp = -25.0;
    string corpus_fname = config.arguments[0];
    string vocab_fname = config.arguments[1];
    string out_vocab_fname = config.arguments[2];
    float threshold_increment = config["threshold-increment"].get_float();
    unsigned int min_removal_length = config["min-length"].get_int();
    unsigned int target_vocab_size = config["vocab-size"].get_int();
    bool enable_forward_backward = config["forward-backward"].specified;
    bool utf8_encoding = config["utf-8"].specified;

    set<string> stoplist;
    if (config["stop-list"].specified) {
        vector<string> stopstrings;
        Unigrams::read_sents(config["stop-list"].get_str(), stopstrings);
        stoplist.insert(stopstrings.begin(), stopstrings.end());
    }

    cerr << setprecision(15) << std::boolalpha;
    cerr << "parameters, training corpus: " << corpus_fname << endl;
    cerr << "parameters, initial vocabulary: " << vocab_fname << endl;
    cerr << "parameters, final vocabulary: " << out_vocab_fname << endl;
    cerr << "parameters, threshold increment: " << threshold_increment << endl;
    cerr << "parameters, minimum length for factors to remove: " << min_removal_length << endl;
    if (stoplist.size() > 0)
        cerr << "parameters, stoplist with " << stoplist.size() << " subwords" << endl;
    cerr << "parameters, target vocab size: " << target_vocab_size << endl;
    cerr << "parameters, use forward-backward: " << enable_forward_backward << endl;
    cerr << "parameters, utf-8 encoding: " << utf8_encoding << endl;

    int maxlen;
    set<string> short_factors;
    map<string, flt_type> vocab;
    map<string, flt_type> freqs;
    vector<string> sents;

    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;
    find_short_factors(vocab, short_factors, min_removal_length, utf8_encoding);

    cerr << "Reading training corpus " << corpus_fname << endl;
    retval = Unigrams::read_sents(corpus_fname, sents);
    if (retval < 0) {
        cerr << "something went wrong reading training corpus" << endl;
        exit(EXIT_FAILURE);
    }
    cerr << "\t" << "number of sentences in corpus: " << sents.size() << endl;

    Unigrams ug;
    if (enable_forward_backward)
        ug.set_segmentation_method(forward_backward);
    else
        ug.set_segmentation_method(viterbi);
    ug.set_utf8(utf8_encoding);

    cerr << endl << "Initial threshold" << endl;
    flt_type cost = ug.resegment_sents(sents, vocab, freqs);
    cerr << "likelihood: " << cost << endl;

    flt_type threshold_value = 0.0;
    while (vocab.size() > target_vocab_size) {
        threshold_value += threshold_increment;
        ug.cutoff(freqs, threshold_value, stoplist, min_removal_length);
        cerr << "\tthreshold: " << threshold_value << "\t" << "vocabulary size: " << freqs.size() << endl;
        vocab = freqs;
        Unigrams::freqs_to_logprobs(vocab);
        assert_factors(vocab, short_factors, short_factor_min_lp);
        cost = ug.resegment_sents(sents, vocab, freqs);
        cerr << "likelihood: " << cost << endl;
    }

    Unigrams::write_vocab(out_vocab_fname, vocab);
    exit(EXIT_SUCCESS);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc00, %rsp            # imm = 0xC00
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0xeb60
leaq -0xe9(%rbp), %rdi
movq %rdi, -0x8a0(%rbp)
callq 0x5710
movq -0x8a0(%rbp), %rdx
leaq 0x630ac(%rip), %rsi     # 0x69012
leaq -0xe8(%rbp), %rdi
callq 0x5560
jmp 0x5f74
leaq -0xc8(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0xebd0
movq %rax, -0x8a8(%rbp)
jmp 0x5f90
leaq -0x121(%rbp), %rdi
movq %rdi, -0x8b0(%rbp)
callq 0x5710
movq -0x8b0(%rbp), %rdx
leaq 0x630ae(%rip), %rsi     # 0x6905f
leaq -0x120(%rbp), %rdi
callq 0x5560
jmp 0x5fbf
leaq -0x149(%rbp), %rdi
movq %rdi, -0x8b8(%rbp)
callq 0x5710
movq -0x8b8(%rbp), %rdx
leaq 0x63778(%rip), %rsi     # 0x69758
leaq -0x148(%rbp), %rdi
callq 0x5560
jmp 0x5fee
leaq -0x171(%rbp), %rdi
movq %rdi, -0x8c0(%rbp)
callq 0x5710
movq -0x8c0(%rbp), %rdx
leaq 0x63749(%rip), %rsi     # 0x69758
leaq -0x170(%rbp), %rdi
callq 0x5560
jmp 0x601d
leaq -0x199(%rbp), %rdi
movq %rdi, -0x8c8(%rbp)
callq 0x5710
movq -0x8c8(%rbp), %rdx
leaq 0x63019(%rip), %rsi     # 0x69057
leaq -0x198(%rbp), %rdi
callq 0x5560
jmp 0x604c
movq -0x8a8(%rbp), %rdi
movl $0x68, %esi
leaq -0x120(%rbp), %rdx
leaq -0x148(%rbp), %rcx
leaq -0x170(%rbp), %r8
leaq -0x198(%rbp), %r9
callq 0xec00
movq %rax, -0x8d0(%rbp)
jmp 0x6082
leaq -0x1c1(%rbp), %rdi
movq %rdi, -0x8d8(%rbp)
callq 0x5710
movq -0x8d8(%rbp), %rdx
leaq 0x62fc1(%rip), %rsi     # 0x69064
leaq -0x1c0(%rbp), %rdi
callq 0x5560
jmp 0x60b1
leaq -0x1e9(%rbp), %rdi
movq %rdi, -0x8e0(%rbp)
callq 0x5710
movq -0x8e0(%rbp), %rdx
leaq 0x62fac(%rip), %rsi     # 0x6907e
leaq -0x1e8(%rbp), %rdi
callq 0x5560
jmp 0x60e0
leaq -0x211(%rbp), %rdi
movq %rdi, -0x8e8(%rbp)
callq 0x5710
movq -0x8e8(%rbp), %rdx
leaq 0x62fb2(%rip), %rsi     # 0x690b3
leaq -0x210(%rbp), %rdi
callq 0x5560
jmp 0x610f
leaq -0x239(%rbp), %rdi
movq %rdi, -0x8f0(%rbp)
callq 0x5710
movq -0x8f0(%rbp), %rdx
leaq 0x62f52(%rip), %rsi     # 0x69082
leaq -0x238(%rbp), %rdi
callq 0x5560
jmp 0x613e
movq -0x8d0(%rbp), %rdi
movl $0x69, %esi
leaq -0x1c0(%rbp), %rdx
leaq -0x1e8(%rbp), %rcx
leaq -0x210(%rbp), %r8
leaq -0x238(%rbp), %r9
callq 0xec00
movq %rax, -0x8f8(%rbp)
jmp 0x6174
leaq -0x261(%rbp), %rdi
movq %rdi, -0x900(%rbp)
callq 0x5710
movq -0x900(%rbp), %rdx
leaq 0x62f22(%rip), %rsi     # 0x690b7
leaq -0x260(%rbp), %rdi
callq 0x5560
jmp 0x61a3
leaq -0x289(%rbp), %rdi
movq %rdi, -0x908(%rbp)
callq 0x5710
movq -0x908(%rbp), %rdx
leaq 0x62eba(%rip), %rsi     # 0x6907e
leaq -0x288(%rbp), %rdi
callq 0x5560
jmp 0x61d2
leaq -0x2b1(%rbp), %rdi
movq %rdi, -0x910(%rbp)
callq 0x5710
movq -0x910(%rbp), %rdx
leaq 0x62f01(%rip), %rsi     # 0x690f4
leaq -0x2b0(%rbp), %rdi
callq 0x5560
jmp 0x6201
leaq -0x2d9(%rbp), %rdi
movq %rdi, -0x918(%rbp)
callq 0x5710
movq -0x918(%rbp), %rdx
leaq 0x62ea4(%rip), %rsi     # 0x690c6
leaq -0x2d8(%rbp), %rdi
callq 0x5560
jmp 0x6230
movq -0x8f8(%rbp), %rdi
movl $0x6d, %esi
leaq -0x260(%rbp), %rdx
leaq -0x288(%rbp), %rcx
leaq -0x2b0(%rbp), %r8
leaq -0x2d8(%rbp), %r9
callq 0xec00
movq %rax, -0x920(%rbp)
jmp 0x6266
leaq -0x301(%rbp), %rdi
movq %rdi, -0x928(%rbp)
callq 0x5710
movq -0x928(%rbp), %rdx
leaq 0x62e6f(%rip), %rsi     # 0x690f6
leaq -0x300(%rbp), %rdi
callq 0x5560
jmp 0x6295
leaq -0x329(%rbp), %rdi
movq %rdi, -0x930(%rbp)
callq 0x5710
movq -0x930(%rbp), %rdx
leaq 0x62e4f(%rip), %rsi     # 0x69105
leaq -0x328(%rbp), %rdi
callq 0x5560
jmp 0x62c4
leaq -0x351(%rbp), %rdi
movq %rdi, -0x938(%rbp)
callq 0x5710
movq -0x938(%rbp), %rdx
leaq 0x63473(%rip), %rsi     # 0x69758
leaq -0x350(%rbp), %rdi
callq 0x5560
jmp 0x62f3
leaq -0x379(%rbp), %rdi
movq %rdi, -0x940(%rbp)
callq 0x5710
movq -0x940(%rbp), %rdx
leaq 0x62dfa(%rip), %rsi     # 0x6910e
leaq -0x378(%rbp), %rdi
callq 0x5560
jmp 0x6322
movq -0x920(%rbp), %rdi
movl $0x76, %esi
leaq -0x300(%rbp), %rdx
leaq -0x328(%rbp), %rcx
leaq -0x350(%rbp), %r8
leaq -0x378(%rbp), %r9
callq 0xec00
movq %rax, -0x948(%rbp)
jmp 0x6358
leaq -0x3a1(%rbp), %rdi
movq %rdi, -0x950(%rbp)
callq 0x5710
movq -0x950(%rbp), %rdx
leaq 0x62dac(%rip), %rsi     # 0x69125
leaq -0x3a0(%rbp), %rdi
callq 0x5560
jmp 0x6387
leaq -0x3c9(%rbp), %rdi
movq %rdi, -0x958(%rbp)
callq 0x5710
movq -0x958(%rbp), %rdx
leaq 0x62cd6(%rip), %rsi     # 0x6907e
leaq -0x3c8(%rbp), %rdi
callq 0x5560
jmp 0x63b6
leaq -0x3f1(%rbp), %rdi
movq %rdi, -0x960(%rbp)
callq 0x5710
movq -0x960(%rbp), %rdx
leaq 0x63381(%rip), %rsi     # 0x69758
leaq -0x3f0(%rbp), %rdi
callq 0x5560
jmp 0x63e5
leaq -0x419(%rbp), %rdi
movq %rdi, -0x968(%rbp)
callq 0x5710
movq -0x968(%rbp), %rdx
leaq 0x62d30(%rip), %rsi     # 0x69136
leaq -0x418(%rbp), %rdi
callq 0x5560
jmp 0x6414
movq -0x948(%rbp), %rdi
movl $0x73, %esi
leaq -0x3a0(%rbp), %rdx
leaq -0x3c8(%rbp), %rcx
leaq -0x3f0(%rbp), %r8
leaq -0x418(%rbp), %r9
callq 0xec00
movq %rax, -0x970(%rbp)
jmp 0x644a
leaq -0x441(%rbp), %rdi
movq %rdi, -0x978(%rbp)
callq 0x5710
movq -0x978(%rbp), %rdx
leaq 0x62d04(%rip), %rsi     # 0x6916f
leaq -0x440(%rbp), %rdi
callq 0x5560
jmp 0x6479
leaq -0x469(%rbp), %rdi
movq %rdi, -0x980(%rbp)
callq 0x5710
movq -0x980(%rbp), %rdx
leaq 0x632be(%rip), %rsi     # 0x69758
leaq -0x468(%rbp), %rdi
callq 0x5560
jmp 0x64a8
leaq -0x491(%rbp), %rdi
movq %rdi, -0x988(%rbp)
callq 0x5710
movq -0x988(%rbp), %rdx
leaq 0x6328f(%rip), %rsi     # 0x69758
leaq -0x490(%rbp), %rdi
callq 0x5560
jmp 0x64d7
leaq -0x4b9(%rbp), %rdi
movq %rdi, -0x990(%rbp)
callq 0x5710
movq -0x990(%rbp), %rdx
leaq 0x62c88(%rip), %rsi     # 0x69180
leaq -0x4b8(%rbp), %rdi
callq 0x5560
jmp 0x6506
movq -0x970(%rbp), %rdi
movl $0x66, %esi
leaq -0x440(%rbp), %rdx
leaq -0x468(%rbp), %rcx
leaq -0x490(%rbp), %r8
leaq -0x4b8(%rbp), %r9
callq 0xec00
movq %rax, -0x998(%rbp)
jmp 0x653c
leaq -0x4e1(%rbp), %rdi
movq %rdi, -0x9a0(%rbp)
callq 0x5710
movq -0x9a0(%rbp), %rdx
leaq 0x62c58(%rip), %rsi     # 0x691b5
leaq -0x4e0(%rbp), %rdi
callq 0x5560
jmp 0x656b
leaq -0x509(%rbp), %rdi
movq %rdi, -0x9a8(%rbp)
callq 0x5710
movq -0x9a8(%rbp), %rdx
leaq 0x631cc(%rip), %rsi     # 0x69758
leaq -0x508(%rbp), %rdi
callq 0x5560
jmp 0x659a
leaq -0x531(%rbp), %rdi
movq %rdi, -0x9b0(%rbp)
callq 0x5710
movq -0x9b0(%rbp), %rdx
leaq 0x6319d(%rip), %rsi     # 0x69758
leaq -0x530(%rbp), %rdi
callq 0x5560
jmp 0x65c9
leaq -0x559(%rbp), %rdi
movq %rdi, -0x9b8(%rbp)
callq 0x5710
movq -0x9b8(%rbp), %rdx
leaq 0x62bd1(%rip), %rsi     # 0x691bb
leaq -0x558(%rbp), %rdi
callq 0x5560
jmp 0x65f8
movq -0x998(%rbp), %rdi
movl $0x38, %esi
leaq -0x4e0(%rbp), %rdx
leaq -0x508(%rbp), %rcx
leaq -0x530(%rbp), %r8
leaq -0x558(%rbp), %r9
callq 0xec00
jmp 0x6627
leaq -0x558(%rbp), %rdi
callq 0x5848
leaq -0x559(%rbp), %rdi
callq 0x5430
leaq -0x530(%rbp), %rdi
callq 0x5848
leaq -0x531(%rbp), %rdi
callq 0x5430
leaq -0x508(%rbp), %rdi
callq 0x5848
leaq -0x509(%rbp), %rdi
callq 0x5430
leaq -0x4e0(%rbp), %rdi
callq 0x5848
leaq -0x4e1(%rbp), %rdi
callq 0x5430
leaq -0x4b8(%rbp), %rdi
callq 0x5848
leaq -0x4b9(%rbp), %rdi
callq 0x5430
leaq -0x490(%rbp), %rdi
callq 0x5848
leaq -0x491(%rbp), %rdi
callq 0x5430
leaq -0x468(%rbp), %rdi
callq 0x5848
leaq -0x469(%rbp), %rdi
callq 0x5430
leaq -0x440(%rbp), %rdi
callq 0x5848
leaq -0x441(%rbp), %rdi
callq 0x5430
leaq -0x418(%rbp), %rdi
callq 0x5848
leaq -0x419(%rbp), %rdi
callq 0x5430
leaq -0x3f0(%rbp), %rdi
callq 0x5848
leaq -0x3f1(%rbp), %rdi
callq 0x5430
leaq -0x3c8(%rbp), %rdi
callq 0x5848
leaq -0x3c9(%rbp), %rdi
callq 0x5430
leaq -0x3a0(%rbp), %rdi
callq 0x5848
leaq -0x3a1(%rbp), %rdi
callq 0x5430
leaq -0x378(%rbp), %rdi
callq 0x5848
leaq -0x379(%rbp), %rdi
callq 0x5430
leaq -0x350(%rbp), %rdi
callq 0x5848
leaq -0x351(%rbp), %rdi
callq 0x5430
leaq -0x328(%rbp), %rdi
callq 0x5848
leaq -0x329(%rbp), %rdi
callq 0x5430
leaq -0x300(%rbp), %rdi
callq 0x5848
leaq -0x301(%rbp), %rdi
callq 0x5430
leaq -0x2d8(%rbp), %rdi
callq 0x5848
leaq -0x2d9(%rbp), %rdi
callq 0x5430
leaq -0x2b0(%rbp), %rdi
callq 0x5848
leaq -0x2b1(%rbp), %rdi
callq 0x5430
leaq -0x288(%rbp), %rdi
callq 0x5848
leaq -0x289(%rbp), %rdi
callq 0x5430
leaq -0x260(%rbp), %rdi
callq 0x5848
leaq -0x261(%rbp), %rdi
callq 0x5430
leaq -0x238(%rbp), %rdi
callq 0x5848
leaq -0x239(%rbp), %rdi
callq 0x5430
leaq -0x210(%rbp), %rdi
callq 0x5848
leaq -0x211(%rbp), %rdi
callq 0x5430
leaq -0x1e8(%rbp), %rdi
callq 0x5848
leaq -0x1e9(%rbp), %rdi
callq 0x5430
leaq -0x1c0(%rbp), %rdi
callq 0x5848
leaq -0x1c1(%rbp), %rdi
callq 0x5430
leaq -0x198(%rbp), %rdi
callq 0x5848
leaq -0x199(%rbp), %rdi
callq 0x5430
leaq -0x170(%rbp), %rdi
callq 0x5848
leaq -0x171(%rbp), %rdi
callq 0x5430
leaq -0x148(%rbp), %rdi
callq 0x5848
leaq -0x149(%rbp), %rdi
callq 0x5430
leaq -0x120(%rbp), %rdi
callq 0x5848
leaq -0x121(%rbp), %rdi
callq 0x5430
leaq -0xe8(%rbp), %rdi
callq 0x5848
leaq -0xe9(%rbp), %rdi
callq 0x5430
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq -0xc8(%rbp), %rdi
callq 0xfa50
jmp 0x68f4
leaq -0xc8(%rbp), %rdi
addq $0x98, %rdi
callq 0x8520
cmpq $0x3, %rax
je 0x6f4c
movq 0x916a8(%rip), %rax     # 0x97fc0
movq (%rax), %rsi
leaq -0xc8(%rbp), %rdi
movl $0x1, %edx
callq 0x10210
jmp 0x692e
jmp 0x6f4c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6f24
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6f18
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6f0c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6ef4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6edc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6ec4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6eb8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6eac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6e94
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6e7c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6e64
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6e58
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6e4c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6e34
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6e1c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6e04
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6df8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6dec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6dd4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6dbc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6da4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6d98
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6d8c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6d74
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6d5c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6d44
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6d38
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6d2c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6d14
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6cfc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6ce4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6cd8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6ccc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6cb4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6c9c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x6c84
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x558(%rbp), %rdi
callq 0x5848
leaq -0x559(%rbp), %rdi
callq 0x5430
leaq -0x530(%rbp), %rdi
callq 0x5848
leaq -0x531(%rbp), %rdi
callq 0x5430
leaq -0x508(%rbp), %rdi
callq 0x5848
leaq -0x509(%rbp), %rdi
callq 0x5430
leaq -0x4e0(%rbp), %rdi
callq 0x5848
leaq -0x4e1(%rbp), %rdi
callq 0x5430
leaq -0x4b8(%rbp), %rdi
callq 0x5848
leaq -0x4b9(%rbp), %rdi
callq 0x5430
leaq -0x490(%rbp), %rdi
callq 0x5848
leaq -0x491(%rbp), %rdi
callq 0x5430
leaq -0x468(%rbp), %rdi
callq 0x5848
leaq -0x469(%rbp), %rdi
callq 0x5430
leaq -0x440(%rbp), %rdi
callq 0x5848
leaq -0x441(%rbp), %rdi
callq 0x5430
leaq -0x418(%rbp), %rdi
callq 0x5848
leaq -0x419(%rbp), %rdi
callq 0x5430
leaq -0x3f0(%rbp), %rdi
callq 0x5848
leaq -0x3f1(%rbp), %rdi
callq 0x5430
leaq -0x3c8(%rbp), %rdi
callq 0x5848
leaq -0x3c9(%rbp), %rdi
callq 0x5430
leaq -0x3a0(%rbp), %rdi
callq 0x5848
leaq -0x3a1(%rbp), %rdi
callq 0x5430
leaq -0x378(%rbp), %rdi
callq 0x5848
leaq -0x379(%rbp), %rdi
callq 0x5430
leaq -0x350(%rbp), %rdi
callq 0x5848
leaq -0x351(%rbp), %rdi
callq 0x5430
leaq -0x328(%rbp), %rdi
callq 0x5848
leaq -0x329(%rbp), %rdi
callq 0x5430
leaq -0x300(%rbp), %rdi
callq 0x5848
leaq -0x301(%rbp), %rdi
callq 0x5430
leaq -0x2d8(%rbp), %rdi
callq 0x5848
leaq -0x2d9(%rbp), %rdi
callq 0x5430
leaq -0x2b0(%rbp), %rdi
callq 0x5848
leaq -0x2b1(%rbp), %rdi
callq 0x5430
leaq -0x288(%rbp), %rdi
callq 0x5848
leaq -0x289(%rbp), %rdi
callq 0x5430
leaq -0x260(%rbp), %rdi
callq 0x5848
leaq -0x261(%rbp), %rdi
callq 0x5430
leaq -0x238(%rbp), %rdi
callq 0x5848
leaq -0x239(%rbp), %rdi
callq 0x5430
leaq -0x210(%rbp), %rdi
callq 0x5848
leaq -0x211(%rbp), %rdi
callq 0x5430
leaq -0x1e8(%rbp), %rdi
callq 0x5848
leaq -0x1e9(%rbp), %rdi
callq 0x5430
leaq -0x1c0(%rbp), %rdi
callq 0x5848
leaq -0x1c1(%rbp), %rdi
callq 0x5430
leaq -0x198(%rbp), %rdi
callq 0x5848
leaq -0x199(%rbp), %rdi
callq 0x5430
leaq -0x170(%rbp), %rdi
callq 0x5848
leaq -0x171(%rbp), %rdi
callq 0x5430
leaq -0x148(%rbp), %rdi
callq 0x5848
leaq -0x149(%rbp), %rdi
callq 0x5430
leaq -0x120(%rbp), %rdi
callq 0x5848
leaq -0x121(%rbp), %rdi
callq 0x5430
leaq -0xe8(%rbp), %rdi
callq 0x5848
leaq -0xe9(%rbp), %rdi
callq 0x5430
jmp 0x812d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x812d
movabsq $-0x3fc7000000000000, %rax # imm = 0xC039000000000000
movq %rax, -0x568(%rbp)
leaq -0x30(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x8540
movq %rax, %rsi
leaq -0x588(%rbp), %rdi
callq 0x51b0
jmp 0x6f7b
leaq -0x30(%rbp), %rdi
movl $0x1, %esi
callq 0x8540
movq %rax, %rsi
leaq -0x5a8(%rbp), %rdi
callq 0x51b0
jmp 0x6f9a
leaq -0x30(%rbp), %rdi
movl $0x2, %esi
callq 0x8540
movq %rax, %rsi
leaq -0x5c8(%rbp), %rdi
callq 0x51b0
jmp 0x6fb9
leaq -0x5f1(%rbp), %rdi
movq %rdi, -0x9c0(%rbp)
callq 0x5710
movq -0x9c0(%rbp), %rdx
leaq 0x62201(%rip), %rsi     # 0x691db
leaq -0x5f0(%rbp), %rdi
callq 0x5560
jmp 0x6fe8
leaq -0xc8(%rbp), %rdi
leaq -0x5f0(%rbp), %rsi
callq 0xfb90
movq %rax, -0x9c8(%rbp)
jmp 0x7004
movq -0x9c8(%rbp), %rdi
callq 0xe9a0
movss %xmm0, -0x9cc(%rbp)
jmp 0x701a
leaq -0x5f0(%rbp), %rdi
callq 0x5848
leaq -0x5f1(%rbp), %rdi
callq 0x5430
movss -0x9cc(%rbp), %xmm0
movss %xmm0, -0x5cc(%rbp)
leaq -0x619(%rbp), %rdi
movq %rdi, -0x9d8(%rbp)
callq 0x5710
movq -0x9d8(%rbp), %rdx
leaq 0x6218c(%rip), %rsi     # 0x691ef
leaq -0x618(%rbp), %rdi
callq 0x5560
jmp 0x7071
leaq -0xc8(%rbp), %rdi
leaq -0x618(%rbp), %rsi
callq 0xfb90
movq %rax, -0x9e0(%rbp)
jmp 0x708d
movq -0x9e0(%rbp), %rdi
callq 0xe8e0
movl %eax, -0x9e4(%rbp)
jmp 0x70a1
leaq -0x618(%rbp), %rdi
callq 0x5848
leaq -0x619(%rbp), %rdi
callq 0x5430
movl -0x9e4(%rbp), %eax
movl %eax, -0x5f8(%rbp)
leaq -0x641(%rbp), %rdi
movq %rdi, -0x9f0(%rbp)
callq 0x5710
movq -0x9f0(%rbp), %rdx
leaq 0x62114(%rip), %rsi     # 0x691fa
leaq -0x640(%rbp), %rdi
callq 0x5560
jmp 0x70f4
leaq -0xc8(%rbp), %rdi
leaq -0x640(%rbp), %rsi
callq 0xfb90
movq %rax, -0x9f8(%rbp)
jmp 0x7110
movq -0x9f8(%rbp), %rdi
callq 0xe8e0
movl %eax, -0x9fc(%rbp)
jmp 0x7124
leaq -0x640(%rbp), %rdi
callq 0x5848
leaq -0x641(%rbp), %rdi
callq 0x5430
movl -0x9fc(%rbp), %eax
movl %eax, -0x620(%rbp)
leaq -0x669(%rbp), %rdi
movq %rdi, -0xa08(%rbp)
callq 0x5710
movq -0xa08(%rbp), %rdx
leaq 0x62006(%rip), %rsi     # 0x6916f
leaq -0x668(%rbp), %rdi
callq 0x5560
jmp 0x7177
leaq -0xc8(%rbp), %rdi
leaq -0x668(%rbp), %rsi
callq 0xfb90
movq %rax, -0xa10(%rbp)
jmp 0x7193
movq -0xa10(%rbp), %rax
movb 0x4a(%rax), %al
movb %al, -0xa19(%rbp)
leaq -0x668(%rbp), %rdi
callq 0x5848
leaq -0x669(%rbp), %rdi
callq 0x5430
movb -0xa19(%rbp), %al
andb $0x1, %al
movb %al, -0x642(%rbp)
leaq -0x691(%rbp), %rdi
movq %rdi, -0xa18(%rbp)
callq 0x5710
movq -0xa18(%rbp), %rdx
leaq 0x61fcb(%rip), %rsi     # 0x691b5
leaq -0x690(%rbp), %rdi
callq 0x5560
jmp 0x71f8
leaq -0xc8(%rbp), %rdi
leaq -0x690(%rbp), %rsi
callq 0xfb90
movq %rax, -0xa28(%rbp)
jmp 0x7214
movq -0xa28(%rbp), %rax
movb 0x4a(%rax), %al
movb %al, -0xa31(%rbp)
leaq -0x690(%rbp), %rdi
callq 0x5848
leaq -0x691(%rbp), %rdi
callq 0x5430
movb -0xa31(%rbp), %al
andb $0x1, %al
movb %al, -0x66a(%rbp)
leaq -0x6c8(%rbp), %rdi
callq 0x8560
leaq -0x6e9(%rbp), %rdi
movq %rdi, -0xa30(%rbp)
callq 0x5710
movq -0xa30(%rbp), %rdx
leaq 0x61f8e(%rip), %rsi     # 0x69205
leaq -0x6e8(%rbp), %rdi
callq 0x5560
jmp 0x7285
leaq -0xc8(%rbp), %rdi
leaq -0x6e8(%rbp), %rsi
callq 0xfb90
movq %rax, -0xa40(%rbp)
jmp 0x72a1
movq -0xa40(%rbp), %rax
movb 0x4a(%rax), %al
movb %al, -0xa41(%rbp)
leaq -0x6e8(%rbp), %rdi
callq 0x5848
leaq -0x6e9(%rbp), %rdi
callq 0x5430
movb -0xa41(%rbp), %al
testb $0x1, %al
je 0x762e
leaq -0x708(%rbp), %rdi
callq 0x8580
leaq -0x749(%rbp), %rdi
movq %rdi, -0xa50(%rbp)
callq 0x5710
movq -0xa50(%rbp), %rdx
leaq 0x61f01(%rip), %rsi     # 0x69205
leaq -0x748(%rbp), %rdi
callq 0x5560
jmp 0x7312
leaq -0xc8(%rbp), %rdi
leaq -0x748(%rbp), %rsi
callq 0xfb90
movq %rax, -0xa58(%rbp)
jmp 0x732e
movq -0xa58(%rbp), %rdi
callq 0xeb20
movq %rax, -0xa60(%rbp)
jmp 0x7343
movq -0xa60(%rbp), %rsi
leaq -0x728(%rbp), %rdi
callq 0x51b0
jmp 0x7358
leaq -0x728(%rbp), %rdi
leaq -0x708(%rbp), %rsi
callq 0x58d00
jmp 0x736d
leaq -0x728(%rbp), %rdi
callq 0x5848
leaq -0x748(%rbp), %rdi
callq 0x5848
leaq -0x749(%rbp), %rdi
callq 0x5430
leaq -0x708(%rbp), %rdi
movq %rdi, -0xa68(%rbp)
callq 0x85e0
movq -0xa68(%rbp), %rdi
movq %rax, -0x758(%rbp)
callq 0x8610
movq %rax, -0x760(%rbp)
movq -0x758(%rbp), %rsi
movq -0x760(%rbp), %rdx
leaq -0x6c8(%rbp), %rdi
callq 0x85a0
jmp 0x73da
leaq -0x708(%rbp), %rdi
callq 0x8640
jmp 0x762e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x8121
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x8115
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x744b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x5f0(%rbp), %rdi
callq 0x5848
leaq -0x5f1(%rbp), %rdi
callq 0x5430
jmp 0x8109
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x748e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x618(%rbp), %rdi
callq 0x5848
leaq -0x619(%rbp), %rdi
callq 0x5430
jmp 0x8109
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x74d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x640(%rbp), %rdi
callq 0x5848
leaq -0x641(%rbp), %rdi
callq 0x5430
jmp 0x8109
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7514
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x668(%rbp), %rdi
callq 0x5848
leaq -0x669(%rbp), %rdi
callq 0x5430
jmp 0x8109
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x7557
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x690(%rbp), %rdi
callq 0x5848
leaq -0x691(%rbp), %rdi
callq 0x5430
jmp 0x8109
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x759a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x6e8(%rbp), %rdi
callq 0x5848
leaq -0x6e9(%rbp), %rdi
callq 0x5430
jmp 0x80fd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x75fd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x75f1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x728(%rbp), %rdi
callq 0x5848
leaq -0x748(%rbp), %rdi
callq 0x5848
leaq -0x749(%rbp), %rdi
callq 0x5430
jmp 0x761d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x708(%rbp), %rdi
callq 0x8640
jmp 0x80fd
movl $0xf, %edi
callq 0x86a0
movl %eax, -0xa6c(%rbp)
jmp 0x7640
movl -0xa6c(%rbp), %eax
movl %eax, -0x764(%rbp)
movl -0x764(%rbp), %esi
movq 0x9098f(%rip), %rdi     # 0x97fe8
callq 0x5640
movq %rax, -0xa78(%rbp)
jmp 0x7667
movq -0xa78(%rbp), %rdi
leaq 0x104b(%rip), %rsi      # 0x86c0
callq 0x5140
jmp 0x767c
movq 0x90965(%rip), %rdi     # 0x97fe8
leaq 0x61b85(%rip), %rsi     # 0x6920f
callq 0x53d0
movq %rax, -0xa80(%rbp)
jmp 0x7698
movq -0xa80(%rbp), %rdi
leaq -0x588(%rbp), %rsi
callq 0x5390
movq %rax, -0xa88(%rbp)
jmp 0x76b4
movq -0xa88(%rbp), %rdi
movq 0x908d6(%rip), %rsi     # 0x97f98
callq 0x5410
jmp 0x76c9
movq 0x90918(%rip), %rdi     # 0x97fe8
leaq 0x61b56(%rip), %rsi     # 0x6922d
callq 0x53d0
movq %rax, -0xa90(%rbp)
jmp 0x76e5
movq -0xa90(%rbp), %rdi
leaq -0x5a8(%rbp), %rsi
callq 0x5390
movq %rax, -0xa98(%rbp)
jmp 0x7701
movq -0xa98(%rbp), %rdi
movq 0x90889(%rip), %rsi     # 0x97f98
callq 0x5410
jmp 0x7716
movq 0x908cb(%rip), %rdi     # 0x97fe8
leaq 0x61b2a(%rip), %rsi     # 0x6924e
callq 0x53d0
movq %rax, -0xaa0(%rbp)
jmp 0x7732
movq -0xaa0(%rbp), %rdi
leaq -0x5c8(%rbp), %rsi
callq 0x5390
movq %rax, -0xaa8(%rbp)
jmp 0x774e
movq -0xaa8(%rbp), %rdi
movq 0x9083c(%rip), %rsi     # 0x97f98
callq 0x5410
jmp 0x7763
movq 0x9087e(%rip), %rdi     # 0x97fe8
leaq 0x61afc(%rip), %rsi     # 0x6926d
callq 0x53d0
movq %rax, -0xab0(%rbp)
jmp 0x777f
movq -0xab0(%rbp), %rdi
movss -0x5cc(%rbp), %xmm0
callq 0x5310
movq %rax, -0xab8(%rbp)
jmp 0x779c
movq -0xab8(%rbp), %rdi
movq 0x907ee(%rip), %rsi     # 0x97f98
callq 0x5410
jmp 0x77b1
movq 0x90830(%rip), %rdi     # 0x97fe8
leaq 0x61ad0(%rip), %rsi     # 0x6928f
callq 0x53d0
movq %rax, -0xac0(%rbp)
jmp 0x77cd
movq -0xac0(%rbp), %rdi
movl -0x5f8(%rbp), %esi
callq 0x5550
movq %rax, -0xac8(%rbp)
jmp 0x77e8
movq -0xac8(%rbp), %rdi
movq 0x907a2(%rip), %rsi     # 0x97f98
callq 0x5410
jmp 0x77fd
leaq -0x6c8(%rbp), %rdi
callq 0x86f0
cmpq $0x0, %rax
jbe 0x789d
movq 0x907ce(%rip), %rdi     # 0x97fe8
leaq 0x61aa1(%rip), %rsi     # 0x692c2
callq 0x53d0
movq %rax, -0xad0(%rbp)
jmp 0x782f
leaq -0x6c8(%rbp), %rdi
callq 0x86f0
movq -0xad0(%rbp), %rdi
movq %rax, %rsi
callq 0x50f0
movq %rax, -0xad8(%rbp)
jmp 0x7853
movq -0xad8(%rbp), %rdi
leaq 0x61a7c(%rip), %rsi     # 0x692dd
callq 0x53d0
movq %rax, -0xae0(%rbp)
jmp 0x786f
movq -0xae0(%rbp), %rdi
movq 0x9071b(%rip), %rsi     # 0x97f98
callq 0x5410
jmp 0x7884
jmp 0x789d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x80fd
movq 0x90744(%rip), %rdi     # 0x97fe8
leaq 0x61a3c(%rip), %rsi     # 0x692e7
callq 0x53d0
movq %rax, -0xae8(%rbp)
jmp 0x78b9
movq -0xae8(%rbp), %rdi
movl -0x620(%rbp), %esi
callq 0x5550
movq %rax, -0xaf0(%rbp)
jmp 0x78d4
movq -0xaf0(%rbp), %rdi
movq 0x906b6(%rip), %rsi     # 0x97f98
callq 0x5410
jmp 0x78e9
movq 0x906f8(%rip), %rdi     # 0x97fe8
leaq 0x61a10(%rip), %rsi     # 0x69307
callq 0x53d0
movq %rax, -0xaf8(%rbp)
jmp 0x7905
movq -0xaf8(%rbp), %rdi
movzbl -0x642(%rbp), %esi
andl $0x1, %esi
callq 0x5720
movq %rax, -0xb00(%rbp)
jmp 0x7924
movq -0xb00(%rbp), %rdi
movq 0x90666(%rip), %rsi     # 0x97f98
callq 0x5410
jmp 0x7939
movq 0x906a8(%rip), %rdi     # 0x97fe8
leaq 0x619e3(%rip), %rsi     # 0x6932a
callq 0x53d0
movq %rax, -0xb08(%rbp)
jmp 0x7955
movq -0xb08(%rbp), %rdi
movzbl -0x66a(%rbp), %esi
andl $0x1, %esi
callq 0x5720
movq %rax, -0xb10(%rbp)
jmp 0x7974
movq -0xb10(%rbp), %rdi
movq 0x90616(%rip), %rsi     # 0x97f98
callq 0x5410
jmp 0x7989
leaq -0x798(%rbp), %rdi
callq 0x8560
leaq -0x7c8(%rbp), %rdi
callq 0x8710
leaq -0x7f8(%rbp), %rdi
callq 0x8710
leaq -0x810(%rbp), %rdi
callq 0x8580
movq 0x90628(%rip), %rdi     # 0x97fe8
leaq 0x61980(%rip), %rsi     # 0x69347
callq 0x53d0
movq %rax, -0xb18(%rbp)
jmp 0x79d5
movq -0xb18(%rbp), %rdi
leaq -0x5a8(%rbp), %rsi
callq 0x5390
movq %rax, -0xb20(%rbp)
jmp 0x79f1
movq -0xb20(%rbp), %rdi
movq 0x90599(%rip), %rsi     # 0x97f98
callq 0x5410
jmp 0x7a06
leaq -0x838(%rbp), %rdi
leaq -0x5a8(%rbp), %rsi
callq 0x51b0
jmp 0x7a1b
movzbl -0x66a(%rbp), %ecx
andl $0x1, %ecx
leaq -0x838(%rbp), %rdi
leaq -0x7c8(%rbp), %rsi
leaq -0x768(%rbp), %rdx
callq 0x58190
movl %eax, -0xb24(%rbp)
jmp 0x7a47
leaq -0x838(%rbp), %rdi
callq 0x5848
movl -0xb24(%rbp), %eax
movl %eax, -0x814(%rbp)
cmpl $0x0, -0x814(%rbp)
jge 0x7add
movq 0x90579(%rip), %rdi     # 0x97fe8
leaq 0x618e5(%rip), %rsi     # 0x6935b
callq 0x53d0
movq %rax, -0xb30(%rbp)
jmp 0x7a84
movq -0xb30(%rbp), %rdi
movq 0x90506(%rip), %rsi     # 0x97f98
callq 0x5410
jmp 0x7a99
movl $0x1, %edi
callq 0x5480
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x80cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x838(%rbp), %rdi
callq 0x5848
jmp 0x80cd
movq 0x90504(%rip), %rdi     # 0x97fe8
leaq 0x61c6c(%rip), %rsi     # 0x69757
callq 0x53d0
movq %rax, -0xb38(%rbp)
jmp 0x7af9
movq -0xb38(%rbp), %rdi
leaq 0x617f9(%rip), %rsi     # 0x69300
callq 0x53d0
movq %rax, -0xb40(%rbp)
jmp 0x7b15
leaq -0x7c8(%rbp), %rdi
callq 0x8730
movq -0xb40(%rbp), %rdi
movq %rax, %rsi
callq 0x50f0
movq %rax, -0xb48(%rbp)
jmp 0x7b39
movq -0xb48(%rbp), %rdi
movq 0x90451(%rip), %rsi     # 0x97f98
callq 0x5410
jmp 0x7b4e
movq 0x90493(%rip), %rdi     # 0x97fe8
leaq 0x61bfb(%rip), %rsi     # 0x69757
callq 0x53d0
movq %rax, -0xb50(%rbp)
jmp 0x7b6a
movq -0xb50(%rbp), %rdi
leaq 0x6180b(%rip), %rsi     # 0x69383
callq 0x53d0
movq %rax, -0xb58(%rbp)
jmp 0x7b86
movq -0xb58(%rbp), %rdi
movl -0x768(%rbp), %esi
callq 0x56f0
movq %rax, -0xb60(%rbp)
jmp 0x7ba1
movq -0xb60(%rbp), %rdi
movq 0x903e9(%rip), %rsi     # 0x97f98
callq 0x5410
jmp 0x7bb6
movl -0x5f8(%rbp), %edx
movzbl -0x66a(%rbp), %ecx
andl $0x1, %ecx
leaq -0x7c8(%rbp), %rdi
leaq -0x798(%rbp), %rsi
callq 0x8150
jmp 0x7bdb
movq 0x90406(%rip), %rdi     # 0x97fe8
leaq 0x617b2(%rip), %rsi     # 0x6939b
callq 0x53d0
movq %rax, -0xb68(%rbp)
jmp 0x7bf7
movq -0xb68(%rbp), %rdi
leaq -0x588(%rbp), %rsi
callq 0x5390
movq %rax, -0xb70(%rbp)
jmp 0x7c13
movq -0xb70(%rbp), %rdi
movq 0x90377(%rip), %rsi     # 0x97f98
callq 0x5410
jmp 0x7c28
leaq -0x858(%rbp), %rdi
leaq -0x588(%rbp), %rsi
callq 0x51b0
jmp 0x7c3d
leaq -0x858(%rbp), %rdi
leaq -0x810(%rbp), %rsi
callq 0x58d00
movl %eax, -0xb74(%rbp)
jmp 0x7c58
movl -0xb74(%rbp), %eax
movl %eax, -0x814(%rbp)
leaq -0x858(%rbp), %rdi
callq 0x5848
cmpl $0x0, -0x814(%rbp)
jge 0x7cd7
movq 0x90368(%rip), %rdi     # 0x97fe8
leaq 0x6172d(%rip), %rsi     # 0x693b4
callq 0x53d0
movq %rax, -0xb80(%rbp)
jmp 0x7c95
movq -0xb80(%rbp), %rdi
movq 0x902f5(%rip), %rsi     # 0x97f98
callq 0x5410
jmp 0x7caa
movl $0x1, %edi
callq 0x5480
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x858(%rbp), %rdi
callq 0x5848
jmp 0x80cd
movq 0x9030a(%rip), %rdi     # 0x97fe8
leaq 0x61a72(%rip), %rsi     # 0x69757
callq 0x53d0
movq %rax, -0xb88(%rbp)
jmp 0x7cf3
movq -0xb88(%rbp), %rdi
leaq 0x616e0(%rip), %rsi     # 0x693e1
callq 0x53d0
movq %rax, -0xb90(%rbp)
jmp 0x7d0f
leaq -0x810(%rbp), %rdi
callq 0x8520
movq -0xb90(%rbp), %rdi
movq %rax, %rsi
callq 0x50f0
movq %rax, -0xb98(%rbp)
jmp 0x7d33
movq -0xb98(%rbp), %rdi
movq 0x90257(%rip), %rsi     # 0x97f98
callq 0x5410
jmp 0x7d48
leaq -0x868(%rbp), %rdi
callq 0x8750
jmp 0x7d56
testb $0x1, -0x642(%rbp)
je 0x7d76
leaq 0x3deca(%rip), %rsi     # 0x45c30
leaq -0x868(%rbp), %rdi
callq 0x8770
jmp 0x7d74
jmp 0x7d8d
leaq 0x3d513(%rip), %rsi     # 0x45290
leaq -0x868(%rbp), %rdi
callq 0x8770
jmp 0x7d8b
jmp 0x7d8d
movzbl -0x66a(%rbp), %esi
andl $0x1, %esi
leaq -0x868(%rbp), %rdi
callq 0x8790
jmp 0x7da5
movq 0x9023c(%rip), %rdi     # 0x97fe8
movq 0x901e5(%rip), %rsi     # 0x97f98
callq 0x5410
movq %rax, -0xba0(%rbp)
jmp 0x7dc1
movq -0xba0(%rbp), %rdi
leaq 0x61632(%rip), %rsi     # 0x69401
callq 0x53d0
movq %rax, -0xba8(%rbp)
jmp 0x7ddd
movq -0xba8(%rbp), %rdi
movq 0x901ad(%rip), %rsi     # 0x97f98
callq 0x5410
jmp 0x7df2
leaq -0x868(%rbp), %rdi
leaq -0x810(%rbp), %rsi
leaq -0x7c8(%rbp), %rdx
leaq -0x7f8(%rbp), %rcx
callq 0x59360
movsd %xmm0, -0xbb0(%rbp)
jmp 0x7e1d
movsd -0xbb0(%rbp), %xmm0
movsd %xmm0, -0x870(%rbp)
movq 0x901b4(%rip), %rdi     # 0x97fe8
leaq 0x615d8(%rip), %rsi     # 0x69413
callq 0x53d0
movq %rax, -0xbb8(%rbp)
jmp 0x7e49
movq -0xbb8(%rbp), %rdi
movsd -0x870(%rbp), %xmm0
callq 0x57a0
movq %rax, -0xbc0(%rbp)
jmp 0x7e66
movq -0xbc0(%rbp), %rdi
movq 0x90124(%rip), %rsi     # 0x97f98
callq 0x5410
jmp 0x7e7b
xorps %xmm0, %xmm0
movsd %xmm0, -0x878(%rbp)
leaq -0x7c8(%rbp), %rdi
callq 0x8730
movl -0x620(%rbp), %ecx
cmpq %rcx, %rax
jbe 0x806b
movss -0x5cc(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd -0x878(%rbp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x878(%rbp)
movsd -0x878(%rbp), %xmm0
movl -0x5f8(%rbp), %ecx
leaq -0x868(%rbp), %rdi
leaq -0x7f8(%rbp), %rsi
leaq -0x6c8(%rbp), %rdx
callq 0x59bb0
jmp 0x7eeb
movq 0x900f6(%rip), %rdi     # 0x97fe8
leaq 0x61527(%rip), %rsi     # 0x69420
callq 0x53d0
movq %rax, -0xbc8(%rbp)
jmp 0x7f07
movq -0xbc8(%rbp), %rdi
movsd -0x878(%rbp), %xmm0
callq 0x57a0
movq %rax, -0xbd0(%rbp)
jmp 0x7f24
movq -0xbd0(%rbp), %rdi
leaq 0x61825(%rip), %rsi     # 0x69757
callq 0x53d0
movq %rax, -0xbd8(%rbp)
jmp 0x7f40
movq -0xbd8(%rbp), %rdi
leaq 0x614df(%rip), %rsi     # 0x6942d
callq 0x53d0
movq %rax, -0xbe0(%rbp)
jmp 0x7f5c
leaq -0x7f8(%rbp), %rdi
callq 0x8730
movq -0xbe0(%rbp), %rdi
movq %rax, %rsi
callq 0x50f0
movq %rax, -0xbe8(%rbp)
jmp 0x7f80
movq -0xbe8(%rbp), %rdi
movq 0x9000a(%rip), %rsi     # 0x97f98
callq 0x5410
jmp 0x7f95
leaq -0x7c8(%rbp), %rdi
leaq -0x7f8(%rbp), %rsi
callq 0x87b0
jmp 0x7faa
leaq -0x7c8(%rbp), %rdi
movsd 0x6104f(%rip), %xmm0    # 0x69008
callq 0x59170
jmp 0x7fc0
movsd -0x568(%rbp), %xmm0
leaq -0x7c8(%rbp), %rdi
leaq -0x798(%rbp), %rsi
callq 0x8260
jmp 0x7fdd
leaq -0x868(%rbp), %rdi
leaq -0x810(%rbp), %rsi
leaq -0x7c8(%rbp), %rdx
leaq -0x7f8(%rbp), %rcx
callq 0x59360
movsd %xmm0, -0xbf0(%rbp)
jmp 0x8008
movsd -0xbf0(%rbp), %xmm0
movsd %xmm0, -0x870(%rbp)
movq 0x8ffc9(%rip), %rdi     # 0x97fe8
leaq 0x613ed(%rip), %rsi     # 0x69413
callq 0x53d0
movq %rax, -0xbf8(%rbp)
jmp 0x8034
movq -0xbf8(%rbp), %rdi
movsd -0x870(%rbp), %xmm0
callq 0x57a0
movq %rax, -0xc00(%rbp)
jmp 0x8051
movq -0xc00(%rbp), %rdi
movq 0x8ff39(%rip), %rsi     # 0x97f98
callq 0x5410
jmp 0x8066
jmp 0x7e86
leaq -0x898(%rbp), %rdi
leaq -0x5c8(%rbp), %rsi
callq 0x51b0
jmp 0x8080
leaq -0x898(%rbp), %rdi
leaq -0x7c8(%rbp), %rsi
xorl %edx, %edx
movl $0x6, %ecx
callq 0x58770
jmp 0x809c
leaq -0x898(%rbp), %rdi
callq 0x5848
xorl %edi, %edi
callq 0x5480
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x898(%rbp), %rdi
callq 0x5848
leaq -0x810(%rbp), %rdi
callq 0x8640
leaq -0x7f8(%rbp), %rdi
callq 0x87e0
leaq -0x7c8(%rbp), %rdi
callq 0x87e0
leaq -0x798(%rbp), %rdi
callq 0x8800
leaq -0x6c8(%rbp), %rdi
callq 0x8800
leaq -0x5c8(%rbp), %rdi
callq 0x5848
leaq -0x5a8(%rbp), %rdi
callq 0x5848
leaq -0x588(%rbp), %rdi
callq 0x5848
leaq -0xc8(%rbp), %rdi
callq 0x8820
movq -0xf8(%rbp), %rdi
callq 0x5700
nopw %cs:(%rax,%rax)