// File: aalto-speech[P]ftk/test/emtest.cc
// Function: ForwardBackwardTest2::test_method()
BOOST_AUTO_TEST_CASE(ForwardBackwardTest2)
{
    map<string, flt_type> vocab;
    string str1("a"); string str2("b");
    string str3("c"); string str4("d");
    vocab[str1] = -1.0;
    vocab[str2] = -2.0;
    vocab[str3] = 0.0;
    vocab[str4] = 0.0;
    string sentence("a-bcd");
    map<string, flt_type> stats;
    flt_type lp = forward_backward(vocab, sentence, stats);
    BOOST_CHECK_EQUAL(0, (int)stats.size());
    BOOST_CHECK_EQUAL(MIN_FLOAT, lp);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2b0, %rsp            # imm = 0x2B0
movq %rdi, -0x8(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x530a0
leaq -0x59(%rbp), %rdi
movq %rdi, -0x210(%rbp)
callq 0x67b0
movq -0x210(%rbp), %rdx
leaq 0x533ce(%rip), %rsi     # 0xcbf14
leaq -0x58(%rbp), %rdi
callq 0x65e0
jmp 0x78b51
leaq -0x59(%rbp), %rdi
callq 0x6470
leaq -0x91(%rbp), %rdi
movq %rdi, -0x218(%rbp)
callq 0x67b0
movq -0x218(%rbp), %rdx
leaq 0x53076(%rip), %rsi     # 0xcbbf1
leaq -0x90(%rbp), %rdi
callq 0x65e0
jmp 0x78b89
leaq -0x91(%rbp), %rdi
callq 0x6470
leaq -0xb9(%rbp), %rdi
movq %rdi, -0x220(%rbp)
callq 0x67b0
movq -0x220(%rbp), %rdx
leaq 0x5302b(%rip), %rsi     # 0xcbbe1
leaq -0xb8(%rbp), %rdi
callq 0x65e0
jmp 0x78bc4
leaq -0xb9(%rbp), %rdi
callq 0x6470
leaq -0xe1(%rbp), %rdi
movq %rdi, -0x228(%rbp)
callq 0x67b0
movq -0x228(%rbp), %rdx
leaq 0x52420(%rip), %rsi     # 0xcb011
leaq -0xe0(%rbp), %rdi
callq 0x65e0
jmp 0x78bff
leaq -0xe1(%rbp), %rdi
callq 0x6470
leaq -0x38(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x4b030
movq %rax, -0x230(%rbp)
jmp 0x78c21
movq -0x230(%rbp), %rax
movabsq $-0x4010000000000000, %rcx # imm = 0xBFF0000000000000
movq %rcx, (%rax)
leaq -0x38(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x4b030
movq %rax, -0x238(%rbp)
jmp 0x78c4e
movq -0x238(%rbp), %rax
movabsq $-0x4000000000000000, %rcx # imm = 0xC000000000000000
movq %rcx, (%rax)
leaq -0x38(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x4b030
movq %rax, -0x240(%rbp)
jmp 0x78c7b
movq -0x240(%rbp), %rax
movq $0x0, (%rax)
leaq -0x38(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x4b030
movq %rax, -0x248(%rbp)
jmp 0x78ca2
movq -0x248(%rbp), %rax
movq $0x0, (%rax)
leaq -0x109(%rbp), %rdi
movq %rdi, -0x250(%rbp)
callq 0x67b0
movq -0x250(%rbp), %rdx
leaq 0x52f56(%rip), %rsi     # 0xcbc27
leaq -0x108(%rbp), %rdi
callq 0x65e0
jmp 0x78cdf
leaq -0x109(%rbp), %rdi
callq 0x6470
leaq -0x140(%rbp), %rdi
movq %rdi, -0x260(%rbp)
callq 0x530a0
movq -0x260(%rbp), %rdx
leaq -0x38(%rbp), %rdi
leaq -0x108(%rbp), %rsi
xorl %ecx, %ecx
callq 0x44ea0
movsd %xmm0, -0x258(%rbp)
jmp 0x78d21
movsd -0x258(%rbp), %xmm0
movsd %xmm0, -0x148(%rbp)
movq 0x8e8b8(%rip), %rax     # 0x1075f0
movq %rax, -0x268(%rbp)
leaq 0x52e22(%rip), %rsi     # 0xcbb68
leaq -0x158(%rbp), %rdi
movl $0xe, %edx
callq 0x70bd0
jmp 0x78d59
leaq -0x168(%rbp), %rdi
callq 0x70c00
jmp 0x78d67
movq -0x268(%rbp), %rdi
leaq -0x158(%rbp), %rsi
movl $0xd6, %edx
leaq -0x168(%rbp), %rcx
callq 0x6840
jmp 0x78d88
callq 0x70e90
movq %rax, -0x270(%rbp)
jmp 0x78d96
movq -0x270(%rbp), %rsi
leaq 0x52586(%rip), %rdx     # 0xcb32a
leaq -0x190(%rbp), %rdi
callq 0x70e50
jmp 0x78db2
leaq 0x52daf(%rip), %rsi     # 0xcbb68
leaq -0x1a0(%rbp), %rdi
movl $0xe, %edx
callq 0x70bd0
jmp 0x78dcc
movl $0x0, -0x1a4(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x5bdf0
movl %eax, -0x1a8(%rbp)
leaq 0x52e7f(%rip), %rcx     # 0xcbc6e
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x1a8(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x53c38(%rip), %rcx     # 0xcca40
movq %rcx, (%rax)
leaq -0x190(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
movl $0xd6, %edx
movl $0x1, %ecx
movl $0x2, %r8d
leaq -0x1a4(%rbp), %r9
callq 0xbf480
jmp 0x78e37
leaq -0x190(%rbp), %rdi
callq 0x70ea0
callq 0x70ec0
movb %al, -0x271(%rbp)
jmp 0x78e50
movb -0x271(%rbp), %al
testb $0x1, %al
jne 0x78d31
jmp 0x78e60
jmp 0x78e62
movq 0x8e787(%rip), %rax     # 0x1075f0
movq %rax, -0x280(%rbp)
leaq 0x52cf1(%rip), %rsi     # 0xcbb68
leaq -0x1b8(%rbp), %rdi
movl $0xe, %edx
callq 0x70bd0
jmp 0x78e8a
leaq -0x1c8(%rbp), %rdi
callq 0x70c00
jmp 0x78e98
movq -0x280(%rbp), %rdi
leaq -0x1b8(%rbp), %rsi
movl $0xd7, %edx
leaq -0x1c8(%rbp), %rcx
callq 0x6840
jmp 0x78eb9
callq 0x70e90
movq %rax, -0x288(%rbp)
jmp 0x78ec7
movq -0x288(%rbp), %rsi
leaq 0x52455(%rip), %rdx     # 0xcb32a
leaq -0x1f0(%rbp), %rdi
callq 0x70e50
jmp 0x78ee3
leaq 0x52c7e(%rip), %rsi     # 0xcbb68
leaq -0x200(%rbp), %rdi
movl $0xe, %edx
callq 0x70bd0
jmp 0x78efd
callq 0x4ae70
movaps 0x526b7(%rip), %xmm1    # 0xcb5c0
pxor %xmm1, %xmm0
movlpd %xmm0, -0x208(%rbp)
leaq 0x5385a(%rip), %rcx     # 0xcc776
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x148(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x52d4b(%rip), %rcx     # 0xcbc80
movq %rcx, (%rax)
leaq -0x1f0(%rbp), %rdi
leaq -0x200(%rbp), %rsi
movl $0xd7, %edx
movl $0x1, %ecx
movl $0x2, %r8d
leaq -0x208(%rbp), %r9
callq 0x70c30
jmp 0x78f64
leaq -0x1f0(%rbp), %rdi
callq 0x70ea0
callq 0x70ec0
movb %al, -0x289(%rbp)
jmp 0x78f7d
movb -0x289(%rbp), %al
testb $0x1, %al
jne 0x78e62
jmp 0x78f8d
leaq -0x140(%rbp), %rdi
callq 0x4cf70
leaq -0x108(%rbp), %rdi
callq 0x6908
leaq -0xe0(%rbp), %rdi
callq 0x6908
leaq -0xb8(%rbp), %rdi
callq 0x6908
leaq -0x90(%rbp), %rdi
callq 0x6908
leaq -0x58(%rbp), %rdi
callq 0x6908
leaq -0x38(%rbp), %rdi
callq 0x4cf70
addq $0x2b0, %rsp            # imm = 0x2B0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x59(%rbp), %rdi
callq 0x6470
jmp 0x79102
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x91(%rbp), %rdi
callq 0x6470
jmp 0x790f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xb9(%rbp), %rdi
callq 0x6470
jmp 0x790ed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xe1(%rbp), %rdi
callq 0x6470
jmp 0x790e1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x790d5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x109(%rbp), %rdi
callq 0x6470
jmp 0x790d5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x790bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x190(%rbp), %rdi
callq 0x70ea0
jmp 0x790bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x1f0(%rbp), %rdi
callq 0x70ea0
leaq -0x140(%rbp), %rdi
callq 0x4cf70
leaq -0x108(%rbp), %rdi
callq 0x6908
leaq -0xe0(%rbp), %rdi
callq 0x6908
leaq -0xb8(%rbp), %rdi
callq 0x6908
leaq -0x90(%rbp), %rdi
callq 0x6908
leaq -0x58(%rbp), %rdi
callq 0x6908
leaq -0x38(%rbp), %rdi
callq 0x4cf70
movq -0x68(%rbp), %rdi
callq 0x67a0
nopw %cs:(%rax,%rax)