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

    conf::Config config;
    config("usage: iterate12 [OPTION...] WORDLIST VOCAB_INIT MSFG_IN TRANSITIONS_OUT\n")
      ('h', "help", "", "", "display help")
      ('i', "iterations=INT", "arg", "5", "Number of iterations")
      ('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() != 4) config.print_help(stderr, 1);

    int num_iterations = config["iterations"].get_int();
    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];
    string msfg_fname = config.arguments[2];
    string transitions_out_fname = config.arguments[3];

    cerr << std::boolalpha;
    cerr << "parameters, wordlist: " << wordlist_fname << endl;
    cerr << "parameters, initial vocabulary: " << vocab_in_fname << endl;
    cerr << "parameters, msfg: " << msfg_fname << endl;
    cerr << "parameters, final model: " << transitions_out_fname << endl;
    cerr << "parameters, use forward-backward: " << enable_forward_backward << endl;
    cerr << "parameters, number of iterations: " << num_iterations << endl;
    cerr << "parameters, utf-8 encoding: " << utf8_encoding << endl;

    int word_maxlen, subword_maxlen;
    set<string> all_chars;
    map<string, flt_type> vocab;
    map<string, flt_type> words;

    cerr << "Reading initial vocabulary " << vocab_in_fname << endl;
    int retval = Unigrams::read_vocab(vocab_in_fname, vocab, subword_maxlen, utf8_encoding);
    if (retval < 0) {
        cerr << "something went wrong reading initial vocabulary" << endl;
        exit(EXIT_FAILURE);
    }
    cerr << "\t" << "size: " << vocab.size() << endl;
    cerr << "\t" << "maximum string length: " << subword_maxlen << endl;
    find_short_factors(vocab, all_chars, 2, utf8_encoding);

    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;

    cerr << "Reading msfg " << msfg_fname << endl;
    MultiStringFactorGraph msfg(start_end_symbol);
    msfg.read(msfg_fname);

    if (vocab.find(start_end_symbol) == vocab.end()) vocab[start_end_symbol] = log(0.5);
    prune_msfg(vocab, msfg);

    std::cerr << std::setprecision(15);
    transitions_t transitions;
    map<string, flt_type> unigram_stats;

    for (int i=0; i<3; i++) {
        cerr << "Unigram iteration " << i << endl;
        assign_scores(vocab, msfg);
        flt_type lp = Bigrams::collect_trans_stats(words, msfg, transitions, unigram_stats, true);
        vocab.swap(unigram_stats);
        Unigrams::freqs_to_logprobs(vocab);
        prune_msfg(vocab, msfg);
        if (i>0) {
            cerr << "\tlikelihood: " << lp << endl;
            cerr << "\tvocabulary size: " << vocab.size() << endl;
        }
    }

    Bigrams::freqs_to_logprobs(transitions);
    for (int i=0; i<num_iterations; i++) {
        cerr << "Bigram iteration " << i+1 << endl;
        flt_type lp = Bigrams::iterate(words, msfg, transitions, enable_forward_backward, 1);
        cerr << "\tlikelihood: " << lp << endl;
        cerr << "\tnumber of transitions: " << Bigrams::transition_count(transitions) << endl;
        cerr << "\tvocabulary size: " << transitions.size() << endl;
    }

    // Write transitions
    Bigrams::write_transitions(transitions, transitions_out_fname);

    exit(EXIT_SUCCESS);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x608, %rsp            # imm = 0x608
movq %rsi, %rbx
movl %edi, %r14d
leaq -0x630(%rbp), %rdi
callq 0x7f48
leaq 0x1f3aa(%rip), %rsi     # 0x2405d
leaq -0x450(%rbp), %rdi
leaq -0x578(%rbp), %rdx
callq 0x4140
leaq -0x630(%rbp), %rdi
leaq -0x450(%rbp), %rsi
callq 0x7fb4
movq %rax, %r15
leaq 0x1f3cc(%rip), %rsi     # 0x240af
leaq -0x430(%rbp), %rdi
leaq -0x480(%rbp), %rdx
callq 0x4140
leaq 0x1f98a(%rip), %rsi     # 0x24687
leaq -0x410(%rbp), %rdi
leaq -0xb0(%rbp), %rdx
callq 0x4140
leaq 0x1f970(%rip), %rsi     # 0x24687
leaq -0x3f0(%rbp), %rdi
leaq -0x190(%rbp), %rdx
callq 0x4140
leaq 0x1f376(%rip), %rsi     # 0x240a7
leaq -0x3d0(%rbp), %rdi
leaq -0x80(%rbp), %rdx
callq 0x4140
pushq $0x68
popq %rsi
leaq -0x430(%rbp), %rdx
leaq -0x410(%rbp), %rcx
leaq -0x3f0(%rbp), %r8
leaq -0x3d0(%rbp), %r9
movq %r15, %rdi
callq 0x7fcc
movq %rax, %r15
leaq 0x1f342(%rip), %rsi     # 0x240b4
leaq -0x3b0(%rbp), %rdi
leaq -0x160(%rbp), %rdx
callq 0x4140
leaq 0x1f337(%rip), %rsi     # 0x240c3
leaq -0x390(%rbp), %rdi
leaq -0x110(%rbp), %rdx
callq 0x4140
leaq 0x1f321(%rip), %rsi     # 0x240c7
leaq -0x370(%rbp), %rdi
leaq -0xf0(%rbp), %rdx
callq 0x4140
leaq 0x1f309(%rip), %rsi     # 0x240c9
leaq -0x350(%rbp), %rdi
leaq -0xd0(%rbp), %rdx
callq 0x4140
pushq $0x69
popq %rsi
leaq -0x3b0(%rbp), %rdx
leaq -0x390(%rbp), %rcx
leaq -0x370(%rbp), %r8
leaq -0x350(%rbp), %r9
movq %r15, %rdi
callq 0x7fcc
movq %rax, %r15
leaq 0x1f2da(%rip), %rsi     # 0x240de
leaq -0x330(%rbp), %rdi
leaq -0x130(%rbp), %rdx
callq 0x4140
leaq 0x1f869(%rip), %rsi     # 0x24687
leaq -0x310(%rbp), %rdi
leaq -0x40(%rbp), %rdx
callq 0x4140
leaq 0x1f852(%rip), %rsi     # 0x24687
leaq -0x2f0(%rbp), %rdi
leaq -0x3c(%rbp), %rdx
callq 0x4140
leaq 0x1f2a3(%rip), %rsi     # 0x240ef
leaq -0x2d0(%rbp), %rdi
leaq -0x2d(%rbp), %rdx
callq 0x4140
pushq $0x66
popq %rsi
leaq -0x330(%rbp), %rdx
leaq -0x310(%rbp), %rcx
leaq -0x2f0(%rbp), %r8
leaq -0x2d0(%rbp), %r9
movq %r15, %rdi
callq 0x7fcc
movq %rax, %r15
leaq 0x1f297(%rip), %rsi     # 0x24124
leaq -0x2b0(%rbp), %rdi
leaq -0x2c(%rbp), %rdx
callq 0x4140
leaq 0x1f7e3(%rip), %rsi     # 0x24687
leaq -0x290(%rbp), %rdi
leaq -0x2b(%rbp), %rdx
callq 0x4140
leaq 0x1f7cc(%rip), %rsi     # 0x24687
leaq -0x270(%rbp), %rdi
leaq -0x2a(%rbp), %rdx
callq 0x4140
leaq 0x1f258(%rip), %rsi     # 0x2412a
leaq -0x250(%rbp), %rdi
leaq -0x29(%rbp), %rdx
callq 0x4140
pushq $0x38
popq %rsi
leaq -0x2b0(%rbp), %rdx
leaq -0x290(%rbp), %rcx
leaq -0x270(%rbp), %r8
leaq -0x250(%rbp), %r9
movq %r15, %rdi
callq 0x7fcc
leaq -0x250(%rbp), %rdi
callq 0x46b8
leaq -0x270(%rbp), %rdi
callq 0x46b8
leaq -0x290(%rbp), %rdi
callq 0x46b8
leaq -0x2b0(%rbp), %rdi
callq 0x46b8
leaq -0x2d0(%rbp), %rdi
callq 0x46b8
leaq -0x2f0(%rbp), %rdi
callq 0x46b8
leaq -0x310(%rbp), %rdi
callq 0x46b8
leaq -0x330(%rbp), %rdi
callq 0x46b8
leaq -0x350(%rbp), %rdi
callq 0x46b8
leaq -0x370(%rbp), %rdi
callq 0x46b8
leaq -0x390(%rbp), %rdi
callq 0x46b8
leaq -0x3b0(%rbp), %rdi
callq 0x46b8
leaq -0x3d0(%rbp), %rdi
callq 0x46b8
leaq -0x3f0(%rbp), %rdi
callq 0x46b8
leaq -0x410(%rbp), %rdi
callq 0x46b8
leaq -0x430(%rbp), %rdi
callq 0x46b8
leaq -0x450(%rbp), %rdi
callq 0x46b8
leaq -0x630(%rbp), %rdi
movl %r14d, %esi
movq %rbx, %rdx
callq 0x8832
movq -0x590(%rbp), %rax
subq -0x598(%rbp), %rax
cmpq $0x80, %rax
je 0x5016
movq 0x30fbc(%rip), %rax     # 0x35fc0
movq (%rax), %rsi
leaq -0x630(%rbp), %rdi
pushq $0x1
popq %rdx
callq 0x8d1a
leaq 0x1f0b6(%rip), %rsi     # 0x240d3
leaq -0x230(%rbp), %rdi
leaq -0x578(%rbp), %rdx
callq 0x4140
leaq -0x630(%rbp), %rdi
leaq -0x230(%rbp), %rsi
callq 0x88d2
movq %rax, %rdi
callq 0x7e18
movl %eax, %ebx
leaq -0x230(%rbp), %rdi
callq 0x46b8
leaq 0x1f07e(%rip), %rsi     # 0x240de
leaq -0x210(%rbp), %rdi
leaq -0x578(%rbp), %rdx
callq 0x4140
leaq -0x630(%rbp), %rdi
leaq -0x210(%rbp), %rsi
callq 0x88d2
movb 0x4a(%rax), %r14b
leaq -0x210(%rbp), %rdi
callq 0x46b8
leaq 0x1f087(%rip), %rsi     # 0x24124
leaq -0x1f0(%rbp), %rdi
leaq -0x578(%rbp), %rdx
callq 0x4140
leaq -0x630(%rbp), %rdi
leaq -0x1f0(%rbp), %rsi
callq 0x88d2
movb 0x4a(%rax), %r15b
leaq -0x1f0(%rbp), %rdi
callq 0x46b8
movq -0x598(%rbp), %rsi
leaq -0x110(%rbp), %rdi
callq 0x4460
movq -0x598(%rbp), %rsi
addq $0x20, %rsi
leaq -0xf0(%rbp), %rdi
callq 0x4460
movq -0x598(%rbp), %rsi
addq $0x40, %rsi
leaq -0xd0(%rbp), %rdi
callq 0x4460
movq -0x598(%rbp), %rsi
addq $0x60, %rsi
leaq -0x130(%rbp), %rdi
callq 0x4460
movq 0x30eb6(%rip), %rdi     # 0x35fe8
movq (%rdi), %rax
movq -0x18(%rax), %rax
orl $0x1, 0x18(%rdi,%rax)
leaq 0x1f005(%rip), %rsi     # 0x2414a
callq 0x4340
leaq -0x110(%rbp), %rsi
movq %rax, %rdi
callq 0x4300
movq %rax, %rdi
callq 0x4180
movq 0x30e80(%rip), %rdi     # 0x35fe8
leaq 0x1eff2(%rip), %rsi     # 0x24161
callq 0x4340
leaq -0xf0(%rbp), %rsi
movq %rax, %rdi
callq 0x4300
movq %rax, %rdi
callq 0x4180
movq 0x30e56(%rip), %rdi     # 0x35fe8
leaq 0x1efe9(%rip), %rsi     # 0x24182
callq 0x4340
leaq -0xd0(%rbp), %rsi
movq %rax, %rdi
callq 0x4300
movq %rax, %rdi
callq 0x4180
movq 0x30e2c(%rip), %rdi     # 0x35fe8
leaq 0x1efd2(%rip), %rsi     # 0x24195
callq 0x4340
leaq -0x130(%rbp), %rsi
movq %rax, %rdi
callq 0x4300
movq %rax, %rdi
callq 0x4180
movq 0x30e02(%rip), %rdi     # 0x35fe8
leaq 0x1efc2(%rip), %rsi     # 0x241af
callq 0x4340
movzbl %r14b, %esi
movq %rax, %rdi
movl %esi, -0x44(%rbp)
callq 0x4570
movq %rax, %rdi
callq 0x4180
movq 0x30dd8(%rip), %rdi     # 0x35fe8
leaq 0x1efbb(%rip), %rsi     # 0x241d2
callq 0x4340
movq %rax, %rdi
movl %ebx, %esi
callq 0x45d0
movq %rax, %rdi
callq 0x4180
movq 0x30db3(%rip), %rdi     # 0x35fe8
leaq 0x1efb9(%rip), %rsi     # 0x241f5
callq 0x4340
movzbl %r15b, %esi
movq %rax, %rdi
movl %esi, -0x38(%rbp)
callq 0x4570
movq %rax, %rdi
callq 0x4180
leaq -0x478(%rbp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq -0xa8(%rbp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq -0x188(%rbp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
movq 0x30d35(%rip), %rdi     # 0x35fe8
leaq 0x1ef58(%rip), %rsi     # 0x24212
callq 0x4340
leaq -0xf0(%rbp), %rsi
movq %rax, %rdi
callq 0x4300
movq %rax, %rdi
callq 0x4180
leaq -0x1d0(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x4460
leaq -0x1d0(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
leaq -0x3c(%rbp), %rdx
movl -0x38(%rbp), %ecx
callq 0x1c42a
movl %eax, %r14d
leaq -0x1d0(%rbp), %rdi
callq 0x46b8
testl %r14d, %r14d
jns 0x5337
movq 0x30cca(%rip), %rdi     # 0x35fe8
leaq 0x1ef09(%rip), %rsi     # 0x2422e
callq 0x4340
movq %rax, %rdi
callq 0x4180
jmp 0x555a
movq 0x30caa(%rip), %rdi     # 0x35fe8
leaq 0x1f341(%rip), %rsi     # 0x24686
callq 0x4340
leaq 0x1ef68(%rip), %rsi     # 0x242b9
movq %rax, %rdi
callq 0x4340
movq -0x88(%rbp), %rsi
movq %rax, %rdi
callq 0x4250
movq %rax, %rdi
callq 0x4180
movq 0x30c71(%rip), %rdi     # 0x35fe8
leaq 0x1f308(%rip), %rsi     # 0x24686
callq 0x4340
leaq 0x1eed4(%rip), %rsi     # 0x2425e
movq %rax, %rdi
callq 0x4340
movl -0x3c(%rbp), %esi
movq %rax, %rdi
callq 0x45d0
movq %rax, %rdi
callq 0x4180
movq -0x98(%rbp), %r13
leaq -0x80(%rbp), %r12
leaq -0xa8(%rbp), %rax
cmpq %rax, %r13
je 0x54d4
andq $0x0, -0x70(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x80(%rbp)
leaq 0x20(%r13), %r14
testb %r15b, %r15b
je 0x543d
andl $0x0, -0x578(%rbp)
movq %r12, %rdi
leaq -0x578(%rbp), %rsi
callq 0x5e00
andl $0x0, -0x578(%rbp)
xorl %eax, %eax
movl %eax, %eax
cmpq %rax, 0x28(%r13)
jbe 0x5498
movq (%r14), %rcx
movb (%rcx,%rax), %dl
pushq $0x1
popq %rcx
testb %dl, %dl
jns 0x541e
pushq $0x4
popq %rcx
cmpb $-0x11, %dl
ja 0x541e
cmpb $-0x20, %dl
pushq $0x2
popq %rcx
sbbl $-0x1, %ecx
addl %ecx, %eax
movl %eax, -0x578(%rbp)
movq %r12, %rdi
leaq -0x578(%rbp), %rsi
callq 0x5dda
movl -0x578(%rbp), %eax
jmp 0x53f4
leaq -0x578(%rbp), %rdi
movq %r14, %rsi
callq 0x4460
movq -0x80(%rbp), %rax
cmpq %rax, -0x78(%rbp)
je 0x545a
movq %rax, -0x78(%rbp)
xorl %eax, %eax
movl %eax, -0x160(%rbp)
movl %eax, %eax
movq -0x570(%rbp), %rcx
incq %rcx
cmpq %rax, %rcx
jbe 0x548c
movq %r12, %rdi
leaq -0x160(%rbp), %rsi
callq 0x5dda
movl -0x160(%rbp), %eax
incl %eax
jmp 0x545c
leaq -0x578(%rbp), %rdi
callq 0x46b8
movq -0x78(%rbp), %rax
subq -0x80(%rbp), %rax
sarq $0x2, %rax
decq %rax
cmpq $0x1, %rax
ja 0x54bc
leaq -0x480(%rbp), %rdi
movq %r14, %rsi
callq 0x603a
movq %r12, %rdi
callq 0x626a
movq %r13, %rdi
callq 0x43b0
movq %rax, %r13
jmp 0x53b0
movq 0x30b0d(%rip), %rdi     # 0x35fe8
leaq 0x1ed94(%rip), %rsi     # 0x24276
callq 0x4340
leaq -0x110(%rbp), %rsi
movq %rax, %rdi
callq 0x4300
movq %rax, %rdi
callq 0x4180
leaq -0x1b0(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0x4460
leaq -0x1b0(%rbp), %rdi
leaq -0x190(%rbp), %rsi
leaq -0x40(%rbp), %rdx
movl -0x38(%rbp), %ecx
callq 0x1c42a
movl %eax, %r14d
leaq -0x1b0(%rbp), %rdi
callq 0x46b8
testl %r14d, %r14d
jns 0x5562
movq 0x30aa2(%rip), %rdi     # 0x35fe8
leaq 0x1ed3c(%rip), %rsi     # 0x24289
callq 0x4340
movq %rax, %rdi
callq 0x4180
pushq $0x1
popq %rdi
callq 0x43c0
movq 0x30a7f(%rip), %rdi     # 0x35fe8
leaq 0x1f116(%rip), %rsi     # 0x24686
callq 0x4340
leaq 0x1ed34(%rip), %rsi     # 0x242b0
movq %rax, %rdi
callq 0x4340
movq -0x168(%rbp), %rsi
movq %rax, %rdi
callq 0x4250
movq %rax, %rdi
callq 0x4180
movq 0x30a46(%rip), %rdi     # 0x35fe8
leaq 0x1f0dd(%rip), %rsi     # 0x24686
callq 0x4340
leaq 0x1ed0b(%rip), %rsi     # 0x242c0
movq %rax, %rdi
callq 0x4340
movl -0x40(%rbp), %esi
movq %rax, %rdi
callq 0x45d0
movq %rax, %rdi
callq 0x4180
movq 0x30a11(%rip), %rdi     # 0x35fe8
leaq 0x1ecf8(%rip), %rsi     # 0x242d6
callq 0x4340
leaq -0xd0(%rbp), %rsi
movq %rax, %rdi
callq 0x4300
movq %rax, %rdi
callq 0x4180
leaq 0x30d7f(%rip), %rsi     # 0x36380
leaq -0x578(%rbp), %rdi
callq 0x5b9c
leaq -0x578(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x12bf6
leaq 0x30d59(%rip), %rsi     # 0x36380
leaq -0xb0(%rbp), %rdi
callq 0x6e48
leaq -0xa8(%rbp), %rcx
cmpq %rcx, %rax
jne 0x565f
leaq 0x30d3a(%rip), %rsi     # 0x36380
leaq -0xb0(%rbp), %rdi
callq 0x5d24
movabsq $-0x4019d1bd0105c611, %rcx # imm = 0xBFE62E42FEFA39EF
movq %rcx, (%rax)
leaq -0xb0(%rbp), %rdi
leaq -0x578(%rbp), %rsi
callq 0x4b3e
movq 0x3096f(%rip), %rdx     # 0x35fe8
movq (%rdx), %rax
movq -0x18(%rax), %rax
leaq -0x78(%rbp), %rcx
andl $0x0, (%rcx)
andq $0x0, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
andq $0x0, 0x20(%rcx)
leaq -0x158(%rbp), %rcx
andl $0x0, (%rcx)
andq $0x0, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
andq $0x0, 0x20(%rcx)
movq $0xf, 0x8(%rdx,%rax)
xorl %r13d, %r13d
leaq -0xb0(%rbp), %r15
leaq -0x578(%rbp), %r14
leaq -0x160(%rbp), %r12
cmpl $0x3, %r13d
je 0x57b5
movq 0x30901(%rip), %rdi     # 0x35fe8
leaq 0x1ebf6(%rip), %rsi     # 0x242e4
callq 0x4340
movq %rax, %rdi
movl %r13d, %esi
callq 0x45d0
movq %rax, %rdi
callq 0x4180
movq %r15, %rdi
movq %r14, %rsi
callq 0x184bc
leaq -0x190(%rbp), %rdi
movq %r14, %rsi
leaq -0x80(%rbp), %rdx
movq %r12, %rcx
pushq $0x1
popq %r8
callq 0x1f9fe
movsd %xmm0, -0x38(%rbp)
movq %r15, %rdi
movq %r12, %rsi
callq 0x752a
movq %r15, %rdi
movsd 0x1e8c2(%rip), %xmm0    # 0x24008
callq 0x1cd22
movq %r15, %rdi
movq %r14, %rsi
callq 0x4b3e
testl %r13d, %r13d
je 0x57ad
movq 0x30886(%rip), %rdi     # 0x35fe8
leaq 0x1eb8e(%rip), %rsi     # 0x242f7
callq 0x4340
movq %rax, %rdi
movsd -0x38(%rbp), %xmm0
callq 0x4530
movq %rax, %rdi
callq 0x4180
movq 0x3085e(%rip), %rdi     # 0x35fe8
leaq 0x1eb74(%rip), %rsi     # 0x24305
callq 0x4340
movq -0x88(%rbp), %rsi
movq %rax, %rdi
callq 0x4250
movq %rax, %rdi
callq 0x4180
incl %r13d
jmp 0x56d6
leaq -0x80(%rbp), %rdi
movsd 0x1e847(%rip), %xmm0    # 0x24008
callq 0x1fbb4
xorl %r12d, %r12d
testl %ebx, %ebx
cmovgl %ebx, %r12d
negl %r12d
movq 0x3080f(%rip), %rbx     # 0x35fe8
leaq -0x80(%rbp), %r15
pushq $0x1
popq %rax
movl %eax, %r13d
leal (%r12,%r13), %eax
cmpl $0x1, %eax
je 0x58af
movq %rbx, %rdi
leaq 0x1eb1e(%rip), %rsi     # 0x24318
callq 0x4340
movq %rax, %rdi
movl %r13d, %esi
callq 0x45d0
movq %rax, %rdi
callq 0x4180
leaq -0x190(%rbp), %rdi
leaq -0x578(%rbp), %rsi
movq %r15, %rdx
movl -0x44(%rbp), %ecx
pushq $0x1
popq %r8
callq 0x1f8f4
movsd %xmm0, -0x38(%rbp)
movq %rbx, %rdi
leaq 0x1eab9(%rip), %rsi     # 0x242f7
callq 0x4340
movq %rax, %rdi
movsd -0x38(%rbp), %xmm0
callq 0x4530
movq %rax, %rdi
callq 0x4180
movq %rbx, %rdi
leaq 0x1eac8(%rip), %rsi     # 0x2432a
callq 0x4340
movq %rax, %r14
movq %r15, %rdi
callq 0x20ffe
movq %r14, %rdi
movl %eax, %esi
callq 0x45d0
movq %rax, %rdi
callq 0x4180
movq %rbx, %rdi
leaq 0x1ea77(%rip), %rsi     # 0x24305
callq 0x4340
movq -0x58(%rbp), %rsi
movq %rax, %rdi
callq 0x4250
incl %r13d
movq %rax, %rdi
callq 0x4180
jmp 0x57e3
leaq -0x80(%rbp), %rdi
leaq -0x130(%rbp), %rsi
pushq $0x6
popq %rcx
xorl %edx, %edx
callq 0x206fc
xorl %edi, %edi
callq 0x43c0
jmp 0x58d3
jmp 0x58d3
jmp 0x58d3
jmp 0x58d3
movq %rax, %rbx
leaq -0x160(%rbp), %rdi
callq 0x6b54
leaq -0x80(%rbp), %rdi
callq 0x6bcc
jmp 0x58f2
jmp 0x58ef
movq %rax, %rbx
leaq -0x578(%rbp), %rdi
callq 0x11d8c
jmp 0x5945
jmp 0x5942
jmp 0x5942
movq %rax, %rbx
leaq -0x1b0(%rbp), %rdi
jmp 0x593b
jmp 0x5923
movq %rax, %rbx
leaq -0x578(%rbp), %rdi
callq 0x46b8
jmp 0x5926
movq %rax, %rbx
leaq -0x80(%rbp), %rdi
callq 0x626a
jmp 0x5945
movq %rax, %rbx
leaq -0x1d0(%rbp), %rdi
callq 0x46b8
jmp 0x5945
movq %rax, %rbx
leaq -0x190(%rbp), %rdi
callq 0x6b54
leaq -0xb0(%rbp), %rdi
callq 0x6b54
leaq -0x480(%rbp), %rdi
callq 0x6c64
jmp 0x596e
movq %rax, %rbx
leaq -0x130(%rbp), %rdi
callq 0x46b8
jmp 0x597f
movq %rax, %rbx
leaq -0xd0(%rbp), %rdi
callq 0x46b8
jmp 0x5990
movq %rax, %rbx
leaq -0xf0(%rbp), %rdi
callq 0x46b8
jmp 0x59a1
movq %rax, %rbx
leaq -0x110(%rbp), %rdi
jmp 0x5b15
jmp 0x5b1c
movq %rax, %rbx
leaq -0x1f0(%rbp), %rdi
jmp 0x5b15
jmp 0x5b1c
movq %rax, %rbx
leaq -0x210(%rbp), %rdi
jmp 0x5b15
jmp 0x5b1c
movq %rax, %rbx
leaq -0x230(%rbp), %rdi
jmp 0x5b15
jmp 0x5b1c
jmp 0x5b1c
movq %rax, %rbx
leaq -0x250(%rbp), %rdi
callq 0x46b8
jmp 0x5a07
movq %rax, %rbx
leaq -0x270(%rbp), %rdi
callq 0x46b8
jmp 0x5a18
movq %rax, %rbx
leaq -0x290(%rbp), %rdi
callq 0x46b8
jmp 0x5a29
movq %rax, %rbx
leaq -0x2b0(%rbp), %rdi
callq 0x46b8
jmp 0x5a3c
jmp 0x5a39
movq %rax, %rbx
leaq -0x2d0(%rbp), %rdi
callq 0x46b8
jmp 0x5a4d
movq %rax, %rbx
leaq -0x2f0(%rbp), %rdi
callq 0x46b8
jmp 0x5a5e
movq %rax, %rbx
leaq -0x310(%rbp), %rdi
callq 0x46b8
jmp 0x5a6f
movq %rax, %rbx
leaq -0x330(%rbp), %rdi
callq 0x46b8
jmp 0x5a82
jmp 0x5a7f
movq %rax, %rbx
leaq -0x350(%rbp), %rdi
callq 0x46b8
jmp 0x5a93
movq %rax, %rbx
leaq -0x370(%rbp), %rdi
callq 0x46b8
jmp 0x5aa4
movq %rax, %rbx
leaq -0x390(%rbp), %rdi
callq 0x46b8
jmp 0x5ab5
movq %rax, %rbx
leaq -0x3b0(%rbp), %rdi
callq 0x46b8
jmp 0x5ac8
jmp 0x5ac5
movq %rax, %rbx
leaq -0x3d0(%rbp), %rdi
callq 0x46b8
jmp 0x5ad9
movq %rax, %rbx
leaq -0x3f0(%rbp), %rdi
callq 0x46b8
jmp 0x5aea
movq %rax, %rbx
leaq -0x410(%rbp), %rdi
callq 0x46b8
jmp 0x5afb
movq %rax, %rbx
leaq -0x430(%rbp), %rdi
callq 0x46b8
jmp 0x5b0e
jmp 0x5b0b
movq %rax, %rbx
leaq -0x450(%rbp), %rdi
callq 0x46b8
jmp 0x5b1f
movq %rax, %rbx
leaq -0x630(%rbp), %rdi
callq 0x5d8e
movq %rbx, %rdi
callq 0x45f0
nop