// File: /workspace/github_cpp_makefile_star2_O2/aalto-speech[P]ftk/test/emtest.cc
// Function: MSFGForwardBackwardTest3::test_method()
BOOST_AUTO_TEST_CASE(MSFGForwardBackwardTest3)
{
    set<string> vocab = {"k","i","s","a","sa","ki","kis","kissa"};

    transitions_t transitions;
    transitions[start_end]["k"] = log(0.5);
    transitions[start_end]["ki"] = log(0.25);
    transitions[start_end]["kis"] = log(0.4);
    transitions[start_end]["kissa"] = log(0.1);
    transitions["a"][start_end] = log(0.5);
    transitions["kissa"][start_end] = log(0.10);
    transitions["sa"][start_end] = log(0.4);
    transitions["ki"]["s"] = log(0.25);
    transitions["k"]["i"] = log(0.5);
    transitions["i"]["s"] = log(0.5);
    transitions["s"]["s"] = log(0.5);
    transitions["s"]["sa"] = log(0.5);
    transitions["s"]["a"] = log(0.5);
    transitions["kis"]["sa"] = log(0.4);
    transitions["kis"]["s"] = log(0.4);

    transitions["i"]["sa"] = log(0.8);
    transitions["a"]["a"] = log(0.8);
    transitions["ki"]["sa"] = log(0.8);
    transitions["kis"]["a"] = log(0.8);
    transitions["kissa"]["a"] = log(0.8);
    transitions["sa"]["a"] = log(0.8);

    map<string, flt_type> word_freqs = {{"kissa", 1.0}, {"kisa", 2.0}, {"kissaa", 3.0}};
    transitions_t stats;
    MultiStringFactorGraph msfg(start_end);
    flt_type lp = 0.0;
    for (auto wit = word_freqs.begin(); wit != word_freqs.end(); ++wit) {
        FactorGraph fg(wit->first, start_end, vocab, 5);
        transitions_t curr_stats;
        flt_type curr_lp = forward_backward(transitions, fg, curr_stats);
        lp += wit->second * curr_lp;
        Bigrams::update_trans_stats(curr_stats, wit->second, stats);
        msfg.add(fg);
    }
    msfg.update_factor_node_map();
    assign_scores(transitions, msfg);

    transitions_t msfg_stats;
    flt_type msfg_lp = forward_backward(msfg, word_freqs, msfg_stats);

    BOOST_CHECK_CLOSE( lp, msfg_lp, DBL_ACCURACY );
    BOOST_CHECK( stats == msfg_stats );
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x308, %rsp            # imm = 0x308
leaq 0x8e3f(%rip), %rsi      # 0x53c52
leaq -0x240(%rbp), %r14
leaq -0xb0(%rbp), %rdx
movq %r14, %rdi
callq 0x5160
leaq -0x220(%rbp), %r15
leaq 0x8931(%rip), %rsi      # 0x53768
leaq -0xe0(%rbp), %rdx
movq %r15, %rdi
callq 0x5160
leaq -0x200(%rbp), %r15
leaq 0x81ba(%rip), %rsi      # 0x5300e
leaq -0x140(%rbp), %rdx
movq %r15, %rdi
callq 0x5160
leaq -0x1e0(%rbp), %r15
leaq 0x90bb(%rip), %rsi      # 0x53f2c
leaq -0x110(%rbp), %rdx
movq %r15, %rdi
callq 0x5160
leaq -0x1c0(%rbp), %r15
leaq 0x9932(%rip), %rsi      # 0x547c0
leaq -0x2a0(%rbp), %rdx
movq %r15, %rdi
callq 0x5160
leaq -0x1a0(%rbp), %r15
leaq 0x8ed9(%rip), %rsi      # 0x53d84
leaq -0x270(%rbp), %rdx
movq %r15, %rdi
callq 0x5160
leaq -0x180(%rbp), %r15
leaq 0x8ebf(%rip), %rsi      # 0x53d87
leaq -0x258(%rbp), %rdx
movq %r15, %rdi
callq 0x5160
leaq -0x160(%rbp), %r15
leaq 0x8d6f(%rip), %rsi      # 0x53c54
leaq -0x38(%rbp), %rdx
movq %r15, %rdi
callq 0x5160
leaq -0x2d0(%rbp), %rdi
leaq -0x240(%rbp), %rsi
pushq $0x8
popq %rdx
leaq -0x248(%rbp), %rcx
leaq -0x29(%rbp), %r8
callq 0x4ed0a
movl $0xe0, %ebx
leaq (%rbx,%rbp), %rdi
addq $-0x240, %rdi           # imm = 0xFDC0
callq 0x57b8
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x4af17
leaq -0xd8(%rbp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq 0x25634(%rip), %rsi     # 0x70588
leaq -0xe0(%rbp), %rdi
callq 0x1b5f0
movq %rax, %rbx
leaq 0x8ce8(%rip), %rsi      # 0x53c52
leaq -0x240(%rbp), %rdi
leaq -0xb0(%rbp), %rdx
callq 0x5160
leaq -0x240(%rbp), %rsi
movq %rbx, %rdi
callq 0x1b3d2
movabsq $-0x4019d1bd0105c611, %r15 # imm = 0xBFE62E42FEFA39EF
movq %r15, (%rax)
leaq -0x240(%rbp), %rdi
callq 0x57b8
leaq 0x255dc(%rip), %rsi     # 0x70588
leaq -0xe0(%rbp), %rdi
callq 0x1b5f0
movq %rax, %rbx
leaq 0x8dc2(%rip), %rsi      # 0x53d84
leaq -0x240(%rbp), %rdi
leaq -0xb0(%rbp), %rdx
callq 0x5160
leaq -0x240(%rbp), %rsi
movq %rbx, %rdi
callq 0x1b3d2
movabsq $-0x4009d1bd0105c611, %r12 # imm = 0xBFF62E42FEFA39EF
movq %r12, (%rax)
leaq -0x240(%rbp), %rdi
callq 0x57b8
leaq 0x25584(%rip), %rsi     # 0x70588
leaq -0xe0(%rbp), %rdi
callq 0x1b5f0
movq %rax, %rbx
leaq 0x8d6d(%rip), %rsi      # 0x53d87
leaq -0x240(%rbp), %rdi
leaq -0xb0(%rbp), %rdx
callq 0x5160
leaq -0x240(%rbp), %rsi
movq %rbx, %rdi
callq 0x1b3d2
movabsq $-0x4012adbf0f1f1f89, %r14 # imm = 0xBFED5240F0E0E077
movq %r14, (%rax)
leaq -0x240(%rbp), %rdi
callq 0x57b8
leaq 0x2552c(%rip), %rsi     # 0x70588
leaq -0xe0(%rbp), %rdi
callq 0x1b5f0
movq %rax, %rbx
leaq 0x8be2(%rip), %rsi      # 0x53c54
leaq -0x240(%rbp), %rdi
leaq -0xb0(%rbp), %rdx
callq 0x5160
leaq -0x240(%rbp), %rsi
movq %rbx, %rdi
callq 0x1b3d2
movabsq $-0x3ffd944e444aaaeb, %rbx # imm = 0xC0026BB1BBB55515
movq %rbx, (%rax)
leaq -0x240(%rbp), %rdi
callq 0x57b8
leaq 0x8e78(%rip), %rsi      # 0x53f2c
leaq -0x240(%rbp), %rdi
leaq -0xb0(%rbp), %rdx
callq 0x5160
leaq -0xe0(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x1b6fa
leaq 0x254a7(%rip), %rsi     # 0x70588
movq %rax, %rdi
callq 0x1b338
movq %r15, (%rax)
leaq -0x240(%rbp), %rdi
callq 0x57b8
leaq 0x8b55(%rip), %rsi      # 0x53c54
leaq -0x240(%rbp), %rdi
leaq -0xb0(%rbp), %rdx
callq 0x5160
leaq -0xe0(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x1b6fa
leaq 0x2545c(%rip), %rsi     # 0x70588
movq %rax, %rdi
callq 0x1b338
movq %rbx, (%rax)
leaq -0x240(%rbp), %rdi
callq 0x57b8
leaq 0x9676(%rip), %rsi      # 0x547c0
leaq -0x240(%rbp), %rdi
leaq -0xb0(%rbp), %rdx
callq 0x5160
leaq -0xe0(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x1b6fa
leaq 0x25411(%rip), %rsi     # 0x70588
movq %rax, %rdi
callq 0x1b338
movq %r14, (%rax)
leaq -0x240(%rbp), %rdi
callq 0x57b8
leaq 0x8bef(%rip), %rsi      # 0x53d84
leaq -0x240(%rbp), %rdi
leaq -0x140(%rbp), %rdx
callq 0x5160
leaq -0xe0(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x1b6fa
movq %rax, %rbx
leaq 0x7e49(%rip), %rsi      # 0x5300e
leaq -0xb0(%rbp), %rdi
leaq -0x110(%rbp), %rdx
callq 0x5160
leaq -0xb0(%rbp), %rsi
movq %rbx, %rdi
callq 0x1b3d2
movq %r12, (%rax)
leaq -0xb0(%rbp), %rdi
callq 0x57b8
leaq -0x240(%rbp), %rdi
callq 0x57b8
leaq 0x8a49(%rip), %rsi      # 0x53c52
leaq -0x240(%rbp), %rdi
leaq -0x140(%rbp), %rdx
callq 0x5160
leaq -0xe0(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x1b6fa
movq %rax, %rbx
leaq 0x852f(%rip), %rsi      # 0x53768
leaq -0xb0(%rbp), %rdi
leaq -0x110(%rbp), %rdx
callq 0x5160
leaq -0xb0(%rbp), %rsi
movq %rbx, %rdi
callq 0x1b3d2
movq %r15, (%rax)
leaq -0xb0(%rbp), %rdi
callq 0x57b8
leaq -0x240(%rbp), %rdi
callq 0x57b8
leaq 0x84eb(%rip), %rsi      # 0x53768
leaq -0x240(%rbp), %rdi
leaq -0x140(%rbp), %rdx
callq 0x5160
leaq -0xe0(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x1b6fa
movq %rax, %rbx
leaq 0x7d61(%rip), %rsi      # 0x5300e
leaq -0xb0(%rbp), %rdi
leaq -0x110(%rbp), %rdx
callq 0x5160
leaq -0xb0(%rbp), %rsi
movq %rbx, %rdi
callq 0x1b3d2
movq %r15, (%rax)
leaq -0xb0(%rbp), %rdi
callq 0x57b8
leaq -0x240(%rbp), %rdi
callq 0x57b8
leaq 0x7d1d(%rip), %rsi      # 0x5300e
leaq -0x240(%rbp), %rdi
leaq -0x140(%rbp), %rdx
callq 0x5160
leaq -0xe0(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x1b6fa
movq %rax, %rbx
leaq 0x7ced(%rip), %rsi      # 0x5300e
leaq -0xb0(%rbp), %rdi
leaq -0x110(%rbp), %rdx
callq 0x5160
leaq -0xb0(%rbp), %rsi
movq %rbx, %rdi
callq 0x1b3d2
movq %r15, (%rax)
leaq -0xb0(%rbp), %rdi
callq 0x57b8
leaq -0x240(%rbp), %rdi
callq 0x57b8
leaq 0x7ca9(%rip), %rsi      # 0x5300e
leaq -0x240(%rbp), %rdi
leaq -0x140(%rbp), %rdx
callq 0x5160
leaq -0xe0(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x1b6fa
movq %rax, %rbx
leaq 0x942b(%rip), %rsi      # 0x547c0
leaq -0xb0(%rbp), %rdi
leaq -0x110(%rbp), %rdx
callq 0x5160
leaq -0xb0(%rbp), %rsi
movq %rbx, %rdi
callq 0x1b3d2
movq %r15, (%rax)
leaq -0xb0(%rbp), %rdi
callq 0x57b8
leaq -0x240(%rbp), %rdi
callq 0x57b8
leaq 0x7c35(%rip), %rsi      # 0x5300e
leaq -0x240(%rbp), %rdi
leaq -0x140(%rbp), %rdx
callq 0x5160
leaq -0xe0(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x1b6fa
movq %rax, %rbx
leaq 0x8b23(%rip), %rsi      # 0x53f2c
leaq -0xb0(%rbp), %rdi
leaq -0x110(%rbp), %rdx
callq 0x5160
leaq -0xb0(%rbp), %rsi
movq %rbx, %rdi
callq 0x1b3d2
movq %r15, (%rax)
leaq -0xb0(%rbp), %rdi
callq 0x57b8
leaq -0x240(%rbp), %rdi
callq 0x57b8
leaq 0x893a(%rip), %rsi      # 0x53d87
leaq -0x240(%rbp), %rdi
leaq -0x140(%rbp), %rdx
callq 0x5160
leaq -0xe0(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x1b6fa
movq %rax, %rbx
leaq 0x9343(%rip), %rsi      # 0x547c0
leaq -0xb0(%rbp), %rdi
leaq -0x110(%rbp), %rdx
callq 0x5160
leaq -0xb0(%rbp), %rsi
movq %rbx, %rdi
callq 0x1b3d2
movq %r14, (%rax)
leaq -0xb0(%rbp), %rdi
callq 0x57b8
leaq -0x240(%rbp), %rdi
callq 0x57b8
leaq 0x88c6(%rip), %rsi      # 0x53d87
leaq -0x240(%rbp), %rdi
leaq -0x140(%rbp), %rdx
callq 0x5160
leaq -0xe0(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x1b6fa
movq %rax, %rbx
leaq 0x7b1d(%rip), %rsi      # 0x5300e
leaq -0xb0(%rbp), %rdi
leaq -0x110(%rbp), %rdx
callq 0x5160
leaq -0xb0(%rbp), %rsi
movq %rbx, %rdi
callq 0x1b3d2
movq %r14, (%rax)
leaq -0xb0(%rbp), %rdi
callq 0x57b8
leaq -0x240(%rbp), %rdi
callq 0x57b8
leaq 0x8233(%rip), %rsi      # 0x53768
leaq -0x240(%rbp), %rdi
leaq -0x140(%rbp), %rdx
callq 0x5160
leaq -0xe0(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x1b6fa
movq %rax, %rbx
leaq 0x925b(%rip), %rsi      # 0x547c0
leaq -0xb0(%rbp), %rdi
leaq -0x110(%rbp), %rdx
callq 0x5160
leaq -0xb0(%rbp), %rsi
movq %rbx, %rdi
callq 0x1b3d2
movabsq $-0x40337008386565e0, %r14 # imm = 0xBFCC8FF7C79A9A20
movq %r14, (%rax)
leaq -0xb0(%rbp), %rdi
callq 0x57b8
leaq -0x240(%rbp), %rdi
callq 0x57b8
leaq 0x8979(%rip), %rsi      # 0x53f2c
leaq -0x240(%rbp), %rdi
leaq -0x140(%rbp), %rdx
callq 0x5160
leaq -0xe0(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x1b6fa
movq %rax, %rbx
leaq 0x8949(%rip), %rsi      # 0x53f2c
leaq -0xb0(%rbp), %rdi
leaq -0x110(%rbp), %rdx
callq 0x5160
leaq -0xb0(%rbp), %rsi
movq %rbx, %rdi
callq 0x1b3d2
movq %r14, (%rax)
leaq -0xb0(%rbp), %rdi
callq 0x57b8
leaq -0x240(%rbp), %rdi
callq 0x57b8
leaq 0x875d(%rip), %rsi      # 0x53d84
leaq -0x240(%rbp), %rdi
leaq -0x140(%rbp), %rdx
callq 0x5160
leaq -0xe0(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x1b6fa
movq %rax, %rbx
leaq 0x9169(%rip), %rsi      # 0x547c0
leaq -0xb0(%rbp), %rdi
leaq -0x110(%rbp), %rdx
callq 0x5160
leaq -0xb0(%rbp), %rsi
movq %rbx, %rdi
callq 0x1b3d2
movq %r14, (%rax)
leaq -0xb0(%rbp), %rdi
callq 0x57b8
leaq -0x240(%rbp), %rdi
callq 0x57b8
leaq 0x86ec(%rip), %rsi      # 0x53d87
leaq -0x240(%rbp), %rdi
leaq -0x140(%rbp), %rdx
callq 0x5160
leaq -0xe0(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x1b6fa
movq %rax, %rbx
leaq 0x8861(%rip), %rsi      # 0x53f2c
leaq -0xb0(%rbp), %rdi
leaq -0x110(%rbp), %rdx
callq 0x5160
leaq -0xb0(%rbp), %rsi
movq %rbx, %rdi
callq 0x1b3d2
movq %r14, (%rax)
leaq -0xb0(%rbp), %rdi
callq 0x57b8
leaq -0x240(%rbp), %rdi
callq 0x57b8
leaq 0x8545(%rip), %rsi      # 0x53c54
leaq -0x240(%rbp), %rdi
leaq -0x140(%rbp), %rdx
callq 0x5160
leaq -0xe0(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x1b6fa
movq %rax, %rbx
leaq 0x87ed(%rip), %rsi      # 0x53f2c
leaq -0xb0(%rbp), %rdi
leaq -0x110(%rbp), %rdx
callq 0x5160
leaq -0xb0(%rbp), %rsi
movq %rbx, %rdi
callq 0x1b3d2
movq %r14, (%rax)
leaq -0xb0(%rbp), %rdi
callq 0x57b8
leaq -0x240(%rbp), %rdi
callq 0x57b8
leaq 0x903d(%rip), %rsi      # 0x547c0
leaq -0x240(%rbp), %rdi
leaq -0x140(%rbp), %rdx
callq 0x5160
leaq -0xe0(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x1b6fa
movq %rax, %rbx
leaq 0x8779(%rip), %rsi      # 0x53f2c
leaq -0xb0(%rbp), %rdi
leaq -0x110(%rbp), %rdx
callq 0x5160
leaq -0xb0(%rbp), %rsi
movq %rbx, %rdi
callq 0x1b3d2
movq %r14, (%rax)
leaq -0xb0(%rbp), %rbx
movq %rbx, %rdi
callq 0x57b8
leaq -0x240(%rbp), %rdi
callq 0x57b8
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, (%rbx)
leaq 0x844d(%rip), %rsi      # 0x53c54
leaq -0x240(%rbp), %r14
leaq -0xb0(%rbp), %rdx
movq %r14, %rdi
callq 0x4f014
leaq -0x218(%rbp), %r15
movabsq $0x4000000000000000, %rax # imm = 0x4000000000000000
leaq -0x110(%rbp), %rdx
movq %rax, (%rdx)
leaq 0x8f7f(%rip), %rsi      # 0x547be
movq %r15, %rdi
callq 0x4f042
leaq -0x1f0(%rbp), %r15
movabsq $0x4008000000000000, %rax # imm = 0x4008000000000000
leaq -0x2a0(%rbp), %rdx
movq %rax, (%rdx)
leaq 0x8f5a(%rip), %rsi      # 0x547c3
movq %r15, %rdi
callq 0x4f070
leaq -0x140(%rbp), %rdi
leaq -0x240(%rbp), %rsi
pushq $0x3
popq %rdx
leaq -0x270(%rbp), %rcx
leaq -0x258(%rbp), %r8
callq 0x4f09e
pushq $0x50
popq %rbx
leaq (%rbx,%rbp), %rdi
addq $-0x240, %rdi           # imm = 0xFDC0
callq 0x57b8
addq $-0x28, %rbx
cmpq $-0x28, %rbx
jne 0x4b898
leaq -0x108(%rbp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq 0x24cb3(%rip), %rsi     # 0x70588
leaq -0x240(%rbp), %rdi
callq 0x4ee8c
andq $0x0, -0x38(%rbp)
leaq -0x138(%rbp), %rax
movq 0x10(%rax), %rbx
leaq -0x298(%rbp), %r12
leaq -0xb0(%rbp), %r13
leaq -0x2a0(%rbp), %r14
pushq $0x1
popq %r15
leaq -0x138(%rbp), %rax
cmpq %rax, %rbx
je 0x4b9ca
leaq 0x20(%rbx), %rsi
movq %r13, %rdi
leaq 0x24c60(%rip), %rdx     # 0x70588
leaq -0x2d0(%rbp), %rcx
pushq $0x5
popq %r8
xorl %r9d, %r9d
callq 0xf742
andl $0x0, -0x298(%rbp)
andq $0x0, -0x290(%rbp)
movq %r12, -0x288(%rbp)
movq %r12, -0x280(%rbp)
andq $0x0, -0x278(%rbp)
leaq -0xe0(%rbp), %rdi
movq %r13, %rsi
movq %r14, %rdx
callq 0x18d71
movsd 0x40(%rbx), %xmm1
mulsd %xmm1, %xmm0
addsd -0x38(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movq %r14, %rdi
movapd %xmm1, %xmm0
leaq -0x110(%rbp), %rsi
callq 0x21f28
leaq -0x240(%rbp), %rdi
movq %r13, %rsi
movl %r15d, %edx
callq 0x129ea
movq %r14, %rdi
callq 0x1bb0c
movq %r13, %rdi
callq 0x10c24
movq %rbx, %rdi
callq 0x52a0
movq %rax, %rbx
jmp 0x4b90a
leaq -0x240(%rbp), %rdi
callq 0x13b90
leaq -0xe0(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x198de
leaq -0xa8(%rbp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq -0x240(%rbp), %rdi
leaq -0x140(%rbp), %rsi
leaq -0xb0(%rbp), %rdx
callq 0x1ab11
leaq -0x248(%rbp), %r13
movsd %xmm0, -0x248(%rbp)
movq 0x24b0b(%rip), %rdi     # 0x70540
leaq 0x8144(%rip), %rbx      # 0x53b80
leaq -0x330(%rbp), %rsi
movq %rbx, (%rsi)
leaq 0x8141(%rip), %r14      # 0x53b8e
movq %r14, 0x8(%rsi)
leaq 0x7fbd(%rip), %r12      # 0x53a15
leaq -0x320(%rbp), %rcx
movq %r12, (%rcx)
movq %r12, 0x8(%rcx)
movl $0x4f0, %edx            # imm = 0x4F0
callq 0x5710
leaq -0x2a0(%rbp), %rdi
movb $0x0, 0x8(%rdi)
leaq 0x2405e(%rip), %rax     # 0x6fae0
movq %rax, (%rdi)
movq 0x24524(%rip), %r15     # 0x6ffb0
movq %r15, 0x10(%rdi)
leaq 0x78c0(%rip), %rax      # 0x53357
movq %rax, 0x18(%rdi)
leaq -0x310(%rbp), %rsi
movq %rbx, (%rsi)
movq %r14, 0x8(%rsi)
movsd 0x2494f(%rip), %xmm0    # 0x70400
movsd %xmm0, -0x270(%rbp)
subq $0x8, %rsp
leaq 0x8239(%rip), %rax      # 0x53cfd
leaq 0x8cbe(%rip), %r10      # 0x54789
leaq 0x8cbc(%rip), %r11      # 0x5478e
pushq $0x1
popq %rcx
pushq $0x8
popq %r8
leaq -0x38(%rbp), %r9
movl $0x4f0, %edx            # imm = 0x4F0
pushq %rax
leaq -0x270(%rbp), %rax
pushq %rax
pushq %r10
pushq %r13
pushq %r11
callq 0x4eaf1
addq $0x30, %rsp
movq 0x24a3f(%rip), %rdi     # 0x70540
leaq -0x300(%rbp), %rsi
movq %rbx, (%rsi)
movq %r14, 0x8(%rsi)
leaq -0x2f0(%rbp), %rcx
movq %r12, (%rcx)
movq %r12, 0x8(%rcx)
movl $0x4f1, %edx            # imm = 0x4F1
callq 0x5710
leaq -0x110(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x4fc18
leaq -0x270(%rbp), %rdi
movb %al, (%rdi)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x8(%rdi)
leaq 0x8c3e(%rip), %rax      # 0x54791
movq %rax, -0x258(%rbp)
leaq 0x8c43(%rip), %rax      # 0x547a4
movq %rax, -0x250(%rbp)
leaq -0x2a0(%rbp), %rsi
movb $0x0, 0x8(%rsi)
leaq 0x23ff6(%rip), %rax     # 0x6fb70
movq %rax, (%rsi)
movq %r15, 0x10(%rsi)
leaq -0x258(%rbp), %rax
movq %rax, 0x18(%rsi)
leaq -0x2e0(%rbp), %rdx
movq %rbx, (%rdx)
movq %r14, 0x8(%rdx)
subq $0x10, %rsp
andq $0x0, (%rsp)
pushq $0x1
popq %r8
movl $0x4f1, %ecx            # imm = 0x4F1
xorl %r9d, %r9d
xorl %eax, %eax
callq 0x56f0
popq %rcx
popq %rdx
leaq -0x260(%rbp), %rdi
callq 0x291f6
leaq -0xb0(%rbp), %rdi
callq 0x1bb0c
leaq -0x240(%rbp), %rdi
callq 0x128f4
leaq -0x110(%rbp), %rdi
callq 0x1bb0c
leaq -0x140(%rbp), %rdi
callq 0x1bba4
leaq -0xe0(%rbp), %rdi
callq 0x1bb0c
leaq -0x2d0(%rbp), %rdi
callq 0x200e8
addq $0x308, %rsp            # imm = 0x308
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq -0x260(%rbp), %rdi
callq 0x291f6
jmp 0x4be5f
jmp 0x4be5c
jmp 0x4be5c
movq %rax, %rbx
jmp 0x4be9e
movq %rax, %rbx
pushq $0x50
popq %r14
leaq (%r14,%rbp), %rdi
addq $-0x240, %rdi           # imm = 0xFDC0
callq 0x57b8
addq $-0x28, %r14
cmpq $-0x28, %r14
jne 0x4bc4b
jmp 0x4beb6
jmp 0x4bc6c
movq %rax, %rbx
addq $-0x28, %r15
movq %r15, %rdi
callq 0x57b8
cmpq %r14, %r15
jne 0x4bc6f
jmp 0x4beb6
jmp 0x4be6d
jmp 0x4bd65
jmp 0x4be4b
jmp 0x4be4b
jmp 0x4be6d
jmp 0x4bd65
jmp 0x4be4b
jmp 0x4be4b
jmp 0x4be6d
jmp 0x4bd65
jmp 0x4be4b
jmp 0x4be4b
jmp 0x4be6d
jmp 0x4bd65
jmp 0x4be4b
jmp 0x4be4b
jmp 0x4be6d
jmp 0x4bd65
jmp 0x4be4b
jmp 0x4be4b
jmp 0x4be6d
jmp 0x4bd65
jmp 0x4be4b
jmp 0x4be4b
jmp 0x4be6d
jmp 0x4bd65
jmp 0x4be4b
jmp 0x4be4b
jmp 0x4be6d
jmp 0x4bd65
jmp 0x4be4b
jmp 0x4be4b
jmp 0x4be6d
jmp 0x4bd65
jmp 0x4be4b
jmp 0x4be4b
jmp 0x4be6d
jmp 0x4bd65
jmp 0x4be4b
jmp 0x4be4b
jmp 0x4be6d
jmp 0x4bd65
jmp 0x4be4b
jmp 0x4be4b
jmp 0x4be6d
jmp 0x4bd65
jmp 0x4be4b
jmp 0x4be4b
jmp 0x4be6d
movq %rax, %rbx
leaq -0xb0(%rbp), %rdi
callq 0x57b8
jmp 0x4be4e
jmp 0x4be4b
jmp 0x4be4b
jmp 0x4be6d
movq %rax, %rbx
leaq -0xb0(%rbp), %rdi
callq 0x57b8
jmp 0x4bd9e
jmp 0x4bd9b
movq %rax, %rbx
jmp 0x4be4e
jmp 0x4be6d
jmp 0x4be6d
jmp 0x4be6d
jmp 0x4be6d
jmp 0x4be4b
jmp 0x4be6d
jmp 0x4be4b
jmp 0x4be6d
jmp 0x4be4b
jmp 0x4be6d
jmp 0x4be4b
jmp 0x4be6d
movq %rax, %rbx
movl $0xe0, %r12d
leaq (%r12,%rbp), %rdi
addq $-0x240, %rdi           # imm = 0xFDC0
callq 0x57b8
addq $-0x20, %r12
cmpq $-0x20, %r12
jne 0x4bde2
movb $0x1, %al
jmp 0x4be11
jmp 0x4be0c
jmp 0x4be0c
jmp 0x4be0c
jmp 0x4be0c
jmp 0x4be0c
jmp 0x4be0c
movq %rax, %rbx
xorl %eax, %eax
cmpq %r15, %r14
sete %cl
testb %al, %al
jne 0x4bece
testb %cl, %cl
jne 0x4bece
addq $-0x20, %r15
movq %r15, %rdi
callq 0x57b8
cmpq %r14, %r15
jne 0x4be27
jmp 0x4bece
movq %rax, %rbx
jmp 0x4bece
jmp 0x4be72
jmp 0x4be4b
jmp 0x4be4b
movq %rax, %rbx
leaq -0x240(%rbp), %rdi
callq 0x57b8
jmp 0x4beb6
movq %rax, %rbx
leaq -0xb0(%rbp), %rdi
callq 0x1bb0c
jmp 0x4be92
movq %rax, %rbx
jmp 0x4beb6
movq %rax, %rbx
jmp 0x4be92
movq %rax, %rbx
leaq -0x2a0(%rbp), %rdi
callq 0x1bb0c
leaq -0xb0(%rbp), %rdi
callq 0x10c24
leaq -0x240(%rbp), %rdi
callq 0x128f4
leaq -0x110(%rbp), %rdi
callq 0x1bb0c
leaq -0x140(%rbp), %rdi
callq 0x1bba4
leaq -0xe0(%rbp), %rdi
callq 0x1bb0c
leaq -0x2d0(%rbp), %rdi
callq 0x200e8
movq %rbx, %rdi
callq 0x56b0