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

    conf::Config config;
    config("usage: llh [OPTION...] WORDLIST VOCABULARY\n")
      ('h', "help", "", "", "display help")
      ('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() != 2) config.print_help(stderr, 1);

    bool enable_forward_backward = config["forward-backward"].specified;
    bool utf8_encoding = config["utf-8"].specified;
    string wordlist_fname = config.arguments[0];
    string vocab_in_fname = config.arguments[1];

    cerr << "parameters, wordlist: " << wordlist_fname << endl;
    cerr << "parameters, vocabulary: " << vocab_in_fname << endl;
    cerr << "parameters, use forward-backward: " << enable_forward_backward << endl;
    cerr << "parameters, utf-8 encoding: " << utf8_encoding << endl;

    int maxlen, word_maxlen;
    map<string, flt_type> vocab;
    map<string, flt_type> freqs;
    map<string, flt_type> words;

    cerr << "Reading vocabulary " << vocab_in_fname << endl;
    int retval = Unigrams::read_vocab(vocab_in_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;

    cerr << "Reading word list " << wordlist_fname << endl;
    retval = Unigrams::read_vocab(wordlist_fname, words, word_maxlen, utf8_encoding);
    if (retval < 0) {
        cerr << "something went wrong reading word list" << endl;
        exit(EXIT_FAILURE);
    }
    cerr << "\t" << "wordlist size: " << words.size() << endl;
    cerr << "\t" << "maximum word length: " << word_maxlen << endl;

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

    flt_type ll = ug.resegment_words(words, vocab, freqs);
    cerr << "cost: " << ll << endl;

    exit(EXIT_SUCCESS);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x650, %rsp            # imm = 0x650
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0x8940
leaq -0xe9(%rbp), %rdi
movq %rdi, -0x4a8(%rbp)
callq 0x46f0
movq -0x4a8(%rbp), %rdx
leaq 0x610c0(%rip), %rsi     # 0x66006
leaq -0xe8(%rbp), %rdi
callq 0x4550
jmp 0x4f54
leaq -0xc8(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0x89b0
movq %rax, -0x4b0(%rbp)
jmp 0x4f70
leaq -0x121(%rbp), %rdi
movq %rdi, -0x4b8(%rbp)
callq 0x46f0
movq -0x4b8(%rbp), %rdx
leaq 0x610a9(%rip), %rsi     # 0x6603a
leaq -0x120(%rbp), %rdi
callq 0x4550
jmp 0x4f9f
leaq -0x149(%rbp), %rdi
movq %rdi, -0x4c0(%rbp)
callq 0x46f0
movq -0x4c0(%rbp), %rdx
leaq 0x61537(%rip), %rsi     # 0x664f7
leaq -0x148(%rbp), %rdi
callq 0x4550
jmp 0x4fce
leaq -0x171(%rbp), %rdi
movq %rdi, -0x4c8(%rbp)
callq 0x46f0
movq -0x4c8(%rbp), %rdx
leaq 0x61508(%rip), %rsi     # 0x664f7
leaq -0x170(%rbp), %rdi
callq 0x4550
jmp 0x4ffd
leaq -0x199(%rbp), %rdi
movq %rdi, -0x4d0(%rbp)
callq 0x46f0
movq -0x4d0(%rbp), %rdx
leaq 0x61014(%rip), %rsi     # 0x66032
leaq -0x198(%rbp), %rdi
callq 0x4550
jmp 0x502c
movq -0x4b0(%rbp), %rdi
movl $0x68, %esi
leaq -0x120(%rbp), %rdx
leaq -0x148(%rbp), %rcx
leaq -0x170(%rbp), %r8
leaq -0x198(%rbp), %r9
callq 0x89e0
movq %rax, -0x4d8(%rbp)
jmp 0x5062
leaq -0x1c1(%rbp), %rdi
movq %rdi, -0x4e0(%rbp)
callq 0x46f0
movq -0x4e0(%rbp), %rdx
leaq 0x60fbc(%rip), %rsi     # 0x6603f
leaq -0x1c0(%rbp), %rdi
callq 0x4550
jmp 0x5091
leaq -0x1e9(%rbp), %rdi
movq %rdi, -0x4e8(%rbp)
callq 0x46f0
movq -0x4e8(%rbp), %rdx
leaq 0x61445(%rip), %rsi     # 0x664f7
leaq -0x1e8(%rbp), %rdi
callq 0x4550
jmp 0x50c0
leaq -0x211(%rbp), %rdi
movq %rdi, -0x4f0(%rbp)
callq 0x46f0
movq -0x4f0(%rbp), %rdx
leaq 0x61416(%rip), %rsi     # 0x664f7
leaq -0x210(%rbp), %rdi
callq 0x4550
jmp 0x50ef
leaq -0x239(%rbp), %rdi
movq %rdi, -0x4f8(%rbp)
callq 0x46f0
movq -0x4f8(%rbp), %rdx
leaq 0x60f40(%rip), %rsi     # 0x66050
leaq -0x238(%rbp), %rdi
callq 0x4550
jmp 0x511e
movq -0x4d8(%rbp), %rdi
movl $0x66, %esi
leaq -0x1c0(%rbp), %rdx
leaq -0x1e8(%rbp), %rcx
leaq -0x210(%rbp), %r8
leaq -0x238(%rbp), %r9
callq 0x89e0
movq %rax, -0x500(%rbp)
jmp 0x5154
leaq -0x261(%rbp), %rdi
movq %rdi, -0x508(%rbp)
callq 0x46f0
movq -0x508(%rbp), %rdx
leaq 0x60f10(%rip), %rsi     # 0x66085
leaq -0x260(%rbp), %rdi
callq 0x4550
jmp 0x5183
leaq -0x289(%rbp), %rdi
movq %rdi, -0x510(%rbp)
callq 0x46f0
movq -0x510(%rbp), %rdx
leaq 0x61353(%rip), %rsi     # 0x664f7
leaq -0x288(%rbp), %rdi
callq 0x4550
jmp 0x51b2
leaq -0x2b1(%rbp), %rdi
movq %rdi, -0x518(%rbp)
callq 0x46f0
movq -0x518(%rbp), %rdx
leaq 0x61324(%rip), %rsi     # 0x664f7
leaq -0x2b0(%rbp), %rdi
callq 0x4550
jmp 0x51e1
leaq -0x2d9(%rbp), %rdi
movq %rdi, -0x520(%rbp)
callq 0x46f0
movq -0x520(%rbp), %rdx
leaq 0x60e89(%rip), %rsi     # 0x6608b
leaq -0x2d8(%rbp), %rdi
callq 0x4550
jmp 0x5210
movq -0x500(%rbp), %rdi
movl $0x38, %esi
leaq -0x260(%rbp), %rdx
leaq -0x288(%rbp), %rcx
leaq -0x2b0(%rbp), %r8
leaq -0x2d8(%rbp), %r9
callq 0x89e0
jmp 0x523f
leaq -0x2d8(%rbp), %rdi
callq 0x4828
leaq -0x2d9(%rbp), %rdi
callq 0x4420
leaq -0x2b0(%rbp), %rdi
callq 0x4828
leaq -0x2b1(%rbp), %rdi
callq 0x4420
leaq -0x288(%rbp), %rdi
callq 0x4828
leaq -0x289(%rbp), %rdi
callq 0x4420
leaq -0x260(%rbp), %rdi
callq 0x4828
leaq -0x261(%rbp), %rdi
callq 0x4420
leaq -0x238(%rbp), %rdi
callq 0x4828
leaq -0x239(%rbp), %rdi
callq 0x4420
leaq -0x210(%rbp), %rdi
callq 0x4828
leaq -0x211(%rbp), %rdi
callq 0x4420
leaq -0x1e8(%rbp), %rdi
callq 0x4828
leaq -0x1e9(%rbp), %rdi
callq 0x4420
leaq -0x1c0(%rbp), %rdi
callq 0x4828
leaq -0x1c1(%rbp), %rdi
callq 0x4420
leaq -0x198(%rbp), %rdi
callq 0x4828
leaq -0x199(%rbp), %rdi
callq 0x4420
leaq -0x170(%rbp), %rdi
callq 0x4828
leaq -0x171(%rbp), %rdi
callq 0x4420
leaq -0x148(%rbp), %rdi
callq 0x4828
leaq -0x149(%rbp), %rdi
callq 0x4420
leaq -0x120(%rbp), %rdi
callq 0x4828
leaq -0x121(%rbp), %rdi
callq 0x4420
leaq -0xe8(%rbp), %rdi
callq 0x4828
leaq -0xe9(%rbp), %rdi
callq 0x4420
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq -0xc8(%rbp), %rdi
callq 0x9830
jmp 0x538c
leaq -0xc8(%rbp), %rdi
addq $0x98, %rdi
callq 0x5f70
cmpq $0x2, %rax
je 0x5698
movq 0x8ec10(%rip), %rax     # 0x93fc0
movq (%rax), %rsi
leaq -0xc8(%rbp), %rdi
movl $0x1, %edx
callq 0x9ff0
jmp 0x53c6
jmp 0x5698
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x5670
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x5664
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x5658
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x5640
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x5628
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x5610
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x5604
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x55f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x55e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x55c8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x55b0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x55a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x5598
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x5580
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x5568
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x5550
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x2d8(%rbp), %rdi
callq 0x4828
leaq -0x2d9(%rbp), %rdi
callq 0x4420
leaq -0x2b0(%rbp), %rdi
callq 0x4828
leaq -0x2b1(%rbp), %rdi
callq 0x4420
leaq -0x288(%rbp), %rdi
callq 0x4828
leaq -0x289(%rbp), %rdi
callq 0x4420
leaq -0x260(%rbp), %rdi
callq 0x4828
leaq -0x261(%rbp), %rdi
callq 0x4420
leaq -0x238(%rbp), %rdi
callq 0x4828
leaq -0x239(%rbp), %rdi
callq 0x4420
leaq -0x210(%rbp), %rdi
callq 0x4828
leaq -0x211(%rbp), %rdi
callq 0x4420
leaq -0x1e8(%rbp), %rdi
callq 0x4828
leaq -0x1e9(%rbp), %rdi
callq 0x4420
leaq -0x1c0(%rbp), %rdi
callq 0x4828
leaq -0x1c1(%rbp), %rdi
callq 0x4420
leaq -0x198(%rbp), %rdi
callq 0x4828
leaq -0x199(%rbp), %rdi
callq 0x4420
leaq -0x170(%rbp), %rdi
callq 0x4828
leaq -0x171(%rbp), %rdi
callq 0x4420
leaq -0x148(%rbp), %rdi
callq 0x4828
leaq -0x149(%rbp), %rdi
callq 0x4420
leaq -0x120(%rbp), %rdi
callq 0x4828
leaq -0x121(%rbp), %rdi
callq 0x4420
leaq -0xe8(%rbp), %rdi
callq 0x4828
leaq -0xe9(%rbp), %rdi
callq 0x4420
jmp 0x5f55
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x5f55
leaq -0x301(%rbp), %rdi
movq %rdi, -0x528(%rbp)
callq 0x46f0
movq -0x528(%rbp), %rdx
leaq 0x60986(%rip), %rsi     # 0x6603f
leaq -0x300(%rbp), %rdi
callq 0x4550
jmp 0x56c7
leaq -0xc8(%rbp), %rdi
leaq -0x300(%rbp), %rsi
callq 0x9970
movq %rax, -0x530(%rbp)
jmp 0x56e3
movq -0x530(%rbp), %rax
movb 0x4a(%rax), %al
movb %al, -0x539(%rbp)
leaq -0x300(%rbp), %rdi
callq 0x4828
leaq -0x301(%rbp), %rdi
callq 0x4420
movb -0x539(%rbp), %al
andb $0x1, %al
movb %al, -0x2da(%rbp)
leaq -0x329(%rbp), %rdi
movq %rdi, -0x538(%rbp)
callq 0x46f0
movq -0x538(%rbp), %rdx
leaq 0x6094b(%rip), %rsi     # 0x66085
leaq -0x328(%rbp), %rdi
callq 0x4550
jmp 0x5748
leaq -0xc8(%rbp), %rdi
leaq -0x328(%rbp), %rsi
callq 0x9970
movq %rax, -0x548(%rbp)
jmp 0x5764
movq -0x548(%rbp), %rax
movb 0x4a(%rax), %al
movb %al, -0x549(%rbp)
leaq -0x328(%rbp), %rdi
callq 0x4828
leaq -0x329(%rbp), %rdi
callq 0x4420
movb -0x549(%rbp), %al
andb $0x1, %al
movb %al, -0x302(%rbp)
leaq -0x30(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x5f90
movq %rax, %rsi
leaq -0x350(%rbp), %rdi
callq 0x41a0
jmp 0x57b8
leaq -0x30(%rbp), %rdi
movl $0x1, %esi
callq 0x5f90
movq %rax, %rsi
leaq -0x370(%rbp), %rdi
callq 0x41a0
jmp 0x57d7
movq 0x8e80a(%rip), %rdi     # 0x93fe8
leaq 0x608c6(%rip), %rsi     # 0x660ab
callq 0x43c0
movq %rax, -0x558(%rbp)
jmp 0x57f3
movq -0x558(%rbp), %rdi
leaq -0x350(%rbp), %rsi
callq 0x4380
movq %rax, -0x560(%rbp)
jmp 0x580f
movq -0x560(%rbp), %rdi
movq 0x8e77b(%rip), %rsi     # 0x93f98
callq 0x4400
jmp 0x5824
movq 0x8e7bd(%rip), %rdi     # 0x93fe8
leaq 0x60890(%rip), %rsi     # 0x660c2
callq 0x43c0
movq %rax, -0x568(%rbp)
jmp 0x5840
movq -0x568(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0x4380
movq %rax, -0x570(%rbp)
jmp 0x585c
movq -0x570(%rbp), %rdi
movq 0x8e72e(%rip), %rsi     # 0x93f98
callq 0x4400
jmp 0x5871
movq 0x8e770(%rip), %rdi     # 0x93fe8
leaq 0x6085c(%rip), %rsi     # 0x660db
callq 0x43c0
movq %rax, -0x578(%rbp)
jmp 0x588d
movq -0x578(%rbp), %rdi
movzbl -0x2da(%rbp), %esi
andl $0x1, %esi
callq 0x4700
movq %rax, -0x580(%rbp)
jmp 0x58ac
movq -0x580(%rbp), %rdi
movq 0x8e6de(%rip), %rsi     # 0x93f98
callq 0x4400
jmp 0x58c1
movq 0x8e720(%rip), %rdi     # 0x93fe8
leaq 0x6082f(%rip), %rsi     # 0x660fe
callq 0x43c0
movq %rax, -0x588(%rbp)
jmp 0x58dd
movq -0x588(%rbp), %rdi
movzbl -0x302(%rbp), %esi
andl $0x1, %esi
callq 0x4700
movq %rax, -0x590(%rbp)
jmp 0x58fc
movq -0x590(%rbp), %rdi
movq 0x8e68e(%rip), %rsi     # 0x93f98
callq 0x4400
jmp 0x5911
leaq -0x3a8(%rbp), %rdi
callq 0x5fb0
leaq -0x3d8(%rbp), %rdi
callq 0x5fb0
leaq -0x408(%rbp), %rdi
callq 0x5fb0
movq 0x8e6ac(%rip), %rdi     # 0x93fe8
leaq 0x607d8(%rip), %rsi     # 0x6611b
callq 0x43c0
movq %rax, -0x598(%rbp)
jmp 0x5951
movq -0x598(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0x4380
movq %rax, -0x5a0(%rbp)
jmp 0x596d
movq -0x5a0(%rbp), %rdi
movq 0x8e61d(%rip), %rsi     # 0x93f98
callq 0x4400
jmp 0x5982
leaq -0x430(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0x41a0
jmp 0x5997
movzbl -0x302(%rbp), %ecx
andl $0x1, %ecx
leaq -0x430(%rbp), %rdi
leaq -0x3a8(%rbp), %rsi
leaq -0x374(%rbp), %rdx
callq 0x54b80
movl %eax, -0x5a4(%rbp)
jmp 0x59c3
leaq -0x430(%rbp), %rdi
callq 0x4828
movl -0x5a4(%rbp), %eax
movl %eax, -0x40c(%rbp)
cmpl $0x0, -0x40c(%rbp)
jge 0x5b11
movq 0x8e5f9(%rip), %rdi     # 0x93fe8
leaq 0x60739(%rip), %rsi     # 0x6612f
callq 0x43c0
movq %rax, -0x5b0(%rbp)
jmp 0x5a04
movq -0x5b0(%rbp), %rdi
movq 0x8e586(%rip), %rsi     # 0x93f98
callq 0x4400
jmp 0x5a19
movl $0x1, %edi
callq 0x4470
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x5a55
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x300(%rbp), %rdi
callq 0x4828
leaq -0x301(%rbp), %rdi
callq 0x4420
jmp 0x5f55
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x5a98
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x328(%rbp), %rdi
callq 0x4828
leaq -0x329(%rbp), %rdi
callq 0x4420
jmp 0x5f55
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x5f49
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x5f3d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x5f19
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x430(%rbp), %rdi
callq 0x4828
jmp 0x5f19
movq 0x8e4d0(%rip), %rdi     # 0x93fe8
leaq 0x609d7(%rip), %rsi     # 0x664f6
callq 0x43c0
movq %rax, -0x5b8(%rbp)
jmp 0x5b2d
movq -0x5b8(%rbp), %rdi
leaq 0x60677(%rip), %rsi     # 0x661b2
callq 0x43c0
movq %rax, -0x5c0(%rbp)
jmp 0x5b49
leaq -0x3a8(%rbp), %rdi
callq 0x5fd0
movq -0x5c0(%rbp), %rdi
movq %rax, %rsi
callq 0x40f0
movq %rax, -0x5c8(%rbp)
jmp 0x5b6d
movq -0x5c8(%rbp), %rdi
movq 0x8e41d(%rip), %rsi     # 0x93f98
callq 0x4400
jmp 0x5b82
movq 0x8e45f(%rip), %rdi     # 0x93fe8
leaq 0x60966(%rip), %rsi     # 0x664f6
callq 0x43c0
movq %rax, -0x5d0(%rbp)
jmp 0x5b9e
movq -0x5d0(%rbp), %rdi
leaq 0x605ab(%rip), %rsi     # 0x66157
callq 0x43c0
movq %rax, -0x5d8(%rbp)
jmp 0x5bba
movq -0x5d8(%rbp), %rdi
movl -0x374(%rbp), %esi
callq 0x46d0
movq %rax, -0x5e0(%rbp)
jmp 0x5bd5
movq -0x5e0(%rbp), %rdi
movq 0x8e3b5(%rip), %rsi     # 0x93f98
callq 0x4400
jmp 0x5bea
movq 0x8e3f7(%rip), %rdi     # 0x93fe8
leaq 0x60577(%rip), %rsi     # 0x6616f
callq 0x43c0
movq %rax, -0x5e8(%rbp)
jmp 0x5c06
movq -0x5e8(%rbp), %rdi
leaq -0x350(%rbp), %rsi
callq 0x4380
movq %rax, -0x5f0(%rbp)
jmp 0x5c22
movq -0x5f0(%rbp), %rdi
movq 0x8e368(%rip), %rsi     # 0x93f98
callq 0x4400
jmp 0x5c37
leaq -0x450(%rbp), %rdi
leaq -0x350(%rbp), %rsi
callq 0x41a0
jmp 0x5c4c
movzbl -0x302(%rbp), %ecx
andl $0x1, %ecx
leaq -0x450(%rbp), %rdi
leaq -0x408(%rbp), %rsi
leaq -0x378(%rbp), %rdx
callq 0x54b80
movl %eax, -0x5f4(%rbp)
jmp 0x5c78
movl -0x5f4(%rbp), %eax
movl %eax, -0x40c(%rbp)
leaq -0x450(%rbp), %rdi
callq 0x4828
cmpl $0x0, -0x40c(%rbp)
jge 0x5cf7
movq 0x8e348(%rip), %rdi     # 0x93fe8
leaq 0x604db(%rip), %rsi     # 0x66182
callq 0x43c0
movq %rax, -0x600(%rbp)
jmp 0x5cb5
movq -0x600(%rbp), %rdi
movq 0x8e2d5(%rip), %rsi     # 0x93f98
callq 0x4400
jmp 0x5cca
movl $0x1, %edi
callq 0x4470
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x450(%rbp), %rdi
callq 0x4828
jmp 0x5f19
movq 0x8e2ea(%rip), %rdi     # 0x93fe8
leaq 0x607f1(%rip), %rsi     # 0x664f6
callq 0x43c0
movq %rax, -0x608(%rbp)
jmp 0x5d13
movq -0x608(%rbp), %rdi
leaq 0x60488(%rip), %rsi     # 0x661a9
callq 0x43c0
movq %rax, -0x610(%rbp)
jmp 0x5d2f
leaq -0x408(%rbp), %rdi
callq 0x5fd0
movq -0x610(%rbp), %rdi
movq %rax, %rsi
callq 0x40f0
movq %rax, -0x618(%rbp)
jmp 0x5d53
movq -0x618(%rbp), %rdi
movq 0x8e237(%rip), %rsi     # 0x93f98
callq 0x4400
jmp 0x5d68
movq 0x8e279(%rip), %rdi     # 0x93fe8
leaq 0x60780(%rip), %rsi     # 0x664f6
callq 0x43c0
movq %rax, -0x620(%rbp)
jmp 0x5d84
movq -0x620(%rbp), %rdi
leaq 0x60427(%rip), %rsi     # 0x661b9
callq 0x43c0
movq %rax, -0x628(%rbp)
jmp 0x5da0
movq -0x628(%rbp), %rdi
movl -0x378(%rbp), %esi
callq 0x46d0
movq %rax, -0x630(%rbp)
jmp 0x5dbb
movq -0x630(%rbp), %rdi
movq 0x8e1cf(%rip), %rsi     # 0x93f98
callq 0x4400
jmp 0x5dd0
leaq -0x460(%rbp), %rdi
callq 0x5ff0
jmp 0x5dde
testb $0x1, -0x2da(%rbp)
je 0x5dfe
leaq 0x3b8e2(%rip), %rsi     # 0x416d0
leaq -0x460(%rbp), %rdi
callq 0x6010
jmp 0x5dfc
jmp 0x5e15
leaq 0x3af2b(%rip), %rsi     # 0x40d30
leaq -0x460(%rbp), %rdi
callq 0x6010
jmp 0x5e13
jmp 0x5e15
movzbl -0x302(%rbp), %esi
andl $0x1, %esi
leaq -0x460(%rbp), %rdi
callq 0x6030
jmp 0x5e2d
xorps %xmm0, %xmm0
movaps %xmm0, -0x480(%rbp)
movaps %xmm0, -0x490(%rbp)
movaps %xmm0, -0x4a0(%rbp)
leaq -0x4a0(%rbp), %rdi
movq %rdi, -0x640(%rbp)
callq 0x6050
movq -0x640(%rbp), %r8
leaq -0x460(%rbp), %rdi
leaq -0x408(%rbp), %rsi
leaq -0x3a8(%rbp), %rdx
leaq -0x3d8(%rbp), %rcx
callq 0x55a40
movsd %xmm0, -0x638(%rbp)
jmp 0x5e8a
leaq -0x4a0(%rbp), %rdi
callq 0x6070
movsd -0x638(%rbp), %xmm0
movsd %xmm0, -0x468(%rbp)
movq 0x8e13b(%rip), %rdi     # 0x93fe8
leaq 0x6031b(%rip), %rsi     # 0x661cf
callq 0x43c0
movq %rax, -0x648(%rbp)
jmp 0x5ec2
movq -0x648(%rbp), %rdi
movsd -0x468(%rbp), %xmm0
callq 0x4780
movq %rax, -0x650(%rbp)
jmp 0x5edf
movq -0x650(%rbp), %rdi
movq 0x8e0ab(%rip), %rsi     # 0x93f98
callq 0x4400
jmp 0x5ef4
xorl %edi, %edi
callq 0x4470
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x4a0(%rbp), %rdi
callq 0x6070
leaq -0x408(%rbp), %rdi
callq 0x6090
leaq -0x3d8(%rbp), %rdi
callq 0x6090
leaq -0x3a8(%rbp), %rdi
callq 0x6090
leaq -0x370(%rbp), %rdi
callq 0x4828
leaq -0x350(%rbp), %rdi
callq 0x4828
leaq -0xc8(%rbp), %rdi
callq 0x60b0
movq -0xf8(%rbp), %rdi
callq 0x46e0
nopl (%rax)