// File: aalto-speech[P]ftk/test/emtest.cc
// Function: TransitionForwardBackwardTest3::test_method()
BOOST_AUTO_TEST_CASE(TransitionForwardBackwardTest3)
{
    transitions_t transitions;
    string str1("a");
    set<string> vocab = {start_end,str1};
    transitions[start_end][str1] = -1.0;
    transitions[str1][start_end] = -1.0;
    string sentence("abc");
    FactorGraph fg(sentence, start_end, vocab, 1);
    transitions_t stats;
    flt_type lp = forward_backward(transitions, fg, stats);
    BOOST_CHECK_EQUAL(0, (int)stats.size());
    BOOST_CHECK_CLOSE( MIN_FLOAT, lp, DBL_ACCURACY );
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x390, %rsp            # imm = 0x390
movq %rdi, -0x8(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x4bd30
leaq -0x59(%rbp), %rdi
movq %rdi, -0x2a8(%rbp)
callq 0x67b0
movq -0x2a8(%rbp), %rdx
leaq 0x2dfde(%rip), %rsi     # 0xcbf14
leaq -0x58(%rbp), %rdi
callq 0x65e0
jmp 0x9df41
leaq -0x59(%rbp), %rdi
callq 0x6470
leaq -0xf0(%rbp), %rdi
movq %rdi, -0xf8(%rbp)
leaq 0x696d9(%rip), %rsi     # 0x107638
callq 0x61c0
jmp 0x9df66
leaq -0xd0(%rbp), %rdi
movq %rdi, -0xf8(%rbp)
leaq -0x58(%rbp), %rsi
callq 0x61c0
jmp 0x9df7f
leaq -0xf0(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq $0x2, -0xa8(%rbp)
leaq -0xfa(%rbp), %rdi
movq %rdi, -0x2b0(%rbp)
callq 0xdab0
movq -0x2b0(%rbp), %r8
movq -0xb0(%rbp), %rsi
movq -0xa8(%rbp), %rdx
leaq -0xa0(%rbp), %rdi
leaq -0xf9(%rbp), %rcx
callq 0xbfde0
jmp 0x9dfd5
leaq -0xfa(%rbp), %rdi
callq 0xdb50
leaq -0xf0(%rbp), %rax
movq %rax, -0x2c0(%rbp)
addq $0x40, %rax
movq %rax, -0x2b8(%rbp)
movq -0x2b8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x2c8(%rbp)
callq 0x6908
movq -0x2c0(%rbp), %rcx
movq -0x2c8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x2b8(%rbp)
jne 0x9dffa
leaq 0x69606(%rip), %rsi     # 0x107638
leaq -0x38(%rbp), %rdi
callq 0x4b980
movq %rax, -0x2d0(%rbp)
jmp 0x9e044
movq -0x2d0(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x4b030
movq %rax, -0x2d8(%rbp)
jmp 0x9e05d
movq -0x2d8(%rbp), %rax
movabsq $-0x4010000000000000, %rcx # imm = 0xBFF0000000000000
movq %rcx, (%rax)
leaq -0x38(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x4b980
movq %rax, -0x2e0(%rbp)
jmp 0x9e087
movq -0x2e0(%rbp), %rdi
leaq 0x695a3(%rip), %rsi     # 0x107638
callq 0x4b030
movq %rax, -0x2e8(%rbp)
jmp 0x9e0a3
movq -0x2e8(%rbp), %rax
movabsq $-0x4010000000000000, %rcx # imm = 0xBFF0000000000000
movq %rcx, (%rax)
leaq -0x121(%rbp), %rdi
movq %rdi, -0x2f0(%rbp)
callq 0x67b0
movq -0x2f0(%rbp), %rdx
leaq 0x2db07(%rip), %rsi     # 0xcbbdf
leaq -0x120(%rbp), %rdi
callq 0x65e0
jmp 0x9e0e6
leaq -0x121(%rbp), %rdi
callq 0x6470
leaq 0x6953f(%rip), %rdx     # 0x107638
leaq -0x1a0(%rbp), %rdi
leaq -0x120(%rbp), %rsi
leaq -0xa0(%rbp), %rcx
movl $0x1, %r8d
xorl %r9d, %r9d
callq 0x239b0
jmp 0x9e11e
leaq -0x1d0(%rbp), %rdi
movq %rdi, -0x300(%rbp)
callq 0x4bd30
movq -0x300(%rbp), %rdx
leaq -0x38(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
callq 0x45f80
movsd %xmm0, -0x2f8(%rbp)
jmp 0x9e152
movsd -0x2f8(%rbp), %xmm0
movsd %xmm0, -0x1d8(%rbp)
movq 0x69487(%rip), %rax     # 0x1075f0
movq %rax, -0x308(%rbp)
leaq 0x2d9f1(%rip), %rsi     # 0xcbb68
leaq -0x1e8(%rbp), %rdi
movl $0xe, %edx
callq 0x70bd0
jmp 0x9e18a
leaq -0x1f8(%rbp), %rdi
callq 0x70c00
jmp 0x9e198
movq -0x308(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
movl $0x37d, %edx            # imm = 0x37D
leaq -0x1f8(%rbp), %rcx
callq 0x6840
jmp 0x9e1b9
callq 0x70e90
movq %rax, -0x310(%rbp)
jmp 0x9e1c7
movq -0x310(%rbp), %rsi
leaq 0x2d155(%rip), %rdx     # 0xcb32a
leaq -0x220(%rbp), %rdi
callq 0x70e50
jmp 0x9e1e3
leaq 0x2d97e(%rip), %rsi     # 0xcbb68
leaq -0x230(%rbp), %rdi
movl $0xe, %edx
callq 0x70bd0
jmp 0x9e1fd
movl $0x0, -0x234(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0x34310
movl %eax, -0x238(%rbp)
leaq 0x2da4e(%rip), %rcx     # 0xcbc6e
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x238(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x2e807(%rip), %rcx     # 0xcca40
movq %rcx, (%rax)
leaq -0x220(%rbp), %rdi
leaq -0x230(%rbp), %rsi
movl $0x37d, %edx            # imm = 0x37D
movl $0x1, %ecx
movl $0x2, %r8d
leaq -0x234(%rbp), %r9
callq 0xbf480
jmp 0x9e268
leaq -0x220(%rbp), %rdi
callq 0x70ea0
callq 0x70ec0
movb %al, -0x311(%rbp)
jmp 0x9e281
movb -0x311(%rbp), %al
testb $0x1, %al
jne 0x9e162
jmp 0x9e291
jmp 0x9e293
movq 0x69356(%rip), %rax     # 0x1075f0
movq %rax, -0x320(%rbp)
leaq 0x2d8c0(%rip), %rsi     # 0xcbb68
leaq -0x248(%rbp), %rdi
movl $0xe, %edx
callq 0x70bd0
jmp 0x9e2bb
leaq -0x258(%rbp), %rdi
callq 0x70c00
jmp 0x9e2c9
movq -0x320(%rbp), %rdi
leaq -0x248(%rbp), %rsi
movl $0x37e, %edx            # imm = 0x37E
leaq -0x258(%rbp), %rcx
callq 0x6840
jmp 0x9e2ea
callq 0x70e90
movq %rax, -0x328(%rbp)
jmp 0x9e2f8
movq -0x328(%rbp), %rsi
leaq 0x2d024(%rip), %rdx     # 0xcb32a
leaq -0x280(%rbp), %rdi
callq 0x70e50
jmp 0x9e314
leaq 0x2d84d(%rip), %rsi     # 0xcbb68
leaq -0x290(%rbp), %rdi
movl $0xe, %edx
callq 0x70bd0
jmp 0x9e32e
callq 0x4ae70
movaps 0x2d286(%rip), %xmm1    # 0xcb5c0
pxor %xmm1, %xmm0
movlpd %xmm0, -0x298(%rbp)
movsd 0x69162(%rip), %xmm0    # 0x1074b0
callq 0xbf970
movsd %xmm0, -0x330(%rbp)
jmp 0x9e35d
movsd -0x330(%rbp), %xmm0
movsd %xmm0, -0x2a0(%rbp)
leaq 0x2d971(%rip), %rcx     # 0xcbce5
movq %rsp, %rax
movq %rcx, 0x20(%rax)
leaq -0x2a0(%rbp), %rcx
movq %rcx, 0x18(%rax)
leaq 0x2e3e9(%rip), %rcx     # 0xcc776
movq %rcx, 0x10(%rax)
leaq -0x1d8(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x2d8dd(%rip), %rcx     # 0xcbc80
movq %rcx, (%rax)
leaq -0x280(%rbp), %rdi
leaq -0x290(%rbp), %rsi
movl $0x37e, %edx            # imm = 0x37E
movl $0x1, %ecx
movl $0x8, %r8d
leaq -0x298(%rbp), %r9
callq 0xbf6a0
jmp 0x9e3d2
leaq -0x280(%rbp), %rdi
callq 0x70ea0
callq 0x70ec0
movb %al, -0x331(%rbp)
jmp 0x9e3eb
movb -0x331(%rbp), %al
testb $0x1, %al
jne 0x9e293
jmp 0x9e3fb
leaq -0x1d0(%rbp), %rdi
callq 0x4bd50
leaq -0x1a0(%rbp), %rdi
callq 0x26180
leaq -0x120(%rbp), %rdi
callq 0x6908
leaq -0xa0(%rbp), %rdi
callq 0x5c1b0
leaq -0x58(%rbp), %rdi
callq 0x6908
leaq -0x38(%rbp), %rdi
callq 0x4bd50
addq $0x390, %rsp            # imm = 0x390
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x59(%rbp), %rdi
callq 0x6470
jmp 0x9e5d5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
movq -0xf8(%rbp), %rax
leaq -0xf0(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x340(%rbp)
je 0x9e4b7
movq -0x340(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x348(%rbp)
callq 0x6908
movq -0x348(%rbp), %rax
leaq -0xf0(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x340(%rbp)
jne 0x9e486
jmp 0x9e5cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xfa(%rbp), %rdi
callq 0xdb50
leaq -0xf0(%rbp), %rax
movq %rax, -0x358(%rbp)
addq $0x40, %rax
movq %rax, -0x350(%rbp)
movq -0x350(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x360(%rbp)
callq 0x6908
movq -0x358(%rbp), %rcx
movq -0x360(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x350(%rbp)
jne 0x9e4ed
jmp 0x9e5cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x9e5c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x121(%rbp), %rdi
callq 0x6470
jmp 0x9e5c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x9e5b4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x9e59c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x220(%rbp), %rdi
callq 0x70ea0
jmp 0x9e59c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x280(%rbp), %rdi
callq 0x70ea0
leaq -0x1d0(%rbp), %rdi
callq 0x4bd50
leaq -0x1a0(%rbp), %rdi
callq 0x26180
leaq -0x120(%rbp), %rdi
callq 0x6908
leaq -0xa0(%rbp), %rdi
callq 0x5c1b0
leaq -0x58(%rbp), %rdi
callq 0x6908
leaq -0x38(%rbp), %rdi
callq 0x4bd50
movq -0x68(%rbp), %rdi
callq 0x67a0
nopw (%rax,%rax)