// File: aalto-speech[P]ftk/test/emtest.cc
// Function: TransitionForwardBackwardTest4::test_method()
BOOST_AUTO_TEST_CASE(TransitionForwardBackwardTest4)
{
    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("");
    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 0x2d2ee(%rip), %rsi     # 0xcbf14
leaq -0x58(%rbp), %rdi
callq 0x65e0
jmp 0x9ec31
leaq -0x59(%rbp), %rdi
callq 0x6470
leaq -0xf0(%rbp), %rdi
movq %rdi, -0xf8(%rbp)
leaq 0x689e9(%rip), %rsi     # 0x107638
callq 0x61c0
jmp 0x9ec56
leaq -0xd0(%rbp), %rdi
movq %rdi, -0xf8(%rbp)
leaq -0x58(%rbp), %rsi
callq 0x61c0
jmp 0x9ec6f
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 0x9ecc5
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 0x9ecea
leaq 0x68916(%rip), %rsi     # 0x107638
leaq -0x38(%rbp), %rdi
callq 0x4b980
movq %rax, -0x2d0(%rbp)
jmp 0x9ed34
movq -0x2d0(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x4b030
movq %rax, -0x2d8(%rbp)
jmp 0x9ed4d
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 0x9ed77
movq -0x2e0(%rbp), %rdi
leaq 0x688b3(%rip), %rsi     # 0x107638
callq 0x4b030
movq %rax, -0x2e8(%rbp)
jmp 0x9ed93
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 0x2c562(%rip), %rsi     # 0xcb32a
leaq -0x120(%rbp), %rdi
callq 0x65e0
jmp 0x9edd6
leaq -0x121(%rbp), %rdi
callq 0x6470
leaq 0x6884f(%rip), %rdx     # 0x107638
leaq -0x1a0(%rbp), %rdi
leaq -0x120(%rbp), %rsi
leaq -0xa0(%rbp), %rcx
movl $0x1, %r8d
xorl %r9d, %r9d
callq 0x239b0
jmp 0x9ee0e
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 0x9ee42
movsd -0x2f8(%rbp), %xmm0
movsd %xmm0, -0x1d8(%rbp)
movq 0x68797(%rip), %rax     # 0x1075f0
movq %rax, -0x308(%rbp)
leaq 0x2cd01(%rip), %rsi     # 0xcbb68
leaq -0x1e8(%rbp), %rdi
movl $0xe, %edx
callq 0x70bd0
jmp 0x9ee7a
leaq -0x1f8(%rbp), %rdi
callq 0x70c00
jmp 0x9ee88
movq -0x308(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
movl $0x38d, %edx            # imm = 0x38D
leaq -0x1f8(%rbp), %rcx
callq 0x6840
jmp 0x9eea9
callq 0x70e90
movq %rax, -0x310(%rbp)
jmp 0x9eeb7
movq -0x310(%rbp), %rsi
leaq 0x2c465(%rip), %rdx     # 0xcb32a
leaq -0x220(%rbp), %rdi
callq 0x70e50
jmp 0x9eed3
leaq 0x2cc8e(%rip), %rsi     # 0xcbb68
leaq -0x230(%rbp), %rdi
movl $0xe, %edx
callq 0x70bd0
jmp 0x9eeed
movl $0x0, -0x234(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0x34310
movl %eax, -0x238(%rbp)
leaq 0x2cd5e(%rip), %rcx     # 0xcbc6e
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x238(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x2db17(%rip), %rcx     # 0xcca40
movq %rcx, (%rax)
leaq -0x220(%rbp), %rdi
leaq -0x230(%rbp), %rsi
movl $0x38d, %edx            # imm = 0x38D
movl $0x1, %ecx
movl $0x2, %r8d
leaq -0x234(%rbp), %r9
callq 0xbf480
jmp 0x9ef58
leaq -0x220(%rbp), %rdi
callq 0x70ea0
callq 0x70ec0
movb %al, -0x311(%rbp)
jmp 0x9ef71
movb -0x311(%rbp), %al
testb $0x1, %al
jne 0x9ee52
jmp 0x9ef81
jmp 0x9ef83
movq 0x68666(%rip), %rax     # 0x1075f0
movq %rax, -0x320(%rbp)
leaq 0x2cbd0(%rip), %rsi     # 0xcbb68
leaq -0x248(%rbp), %rdi
movl $0xe, %edx
callq 0x70bd0
jmp 0x9efab
leaq -0x258(%rbp), %rdi
callq 0x70c00
jmp 0x9efb9
movq -0x320(%rbp), %rdi
leaq -0x248(%rbp), %rsi
movl $0x38e, %edx            # imm = 0x38E
leaq -0x258(%rbp), %rcx
callq 0x6840
jmp 0x9efda
callq 0x70e90
movq %rax, -0x328(%rbp)
jmp 0x9efe8
movq -0x328(%rbp), %rsi
leaq 0x2c334(%rip), %rdx     # 0xcb32a
leaq -0x280(%rbp), %rdi
callq 0x70e50
jmp 0x9f004
leaq 0x2cb5d(%rip), %rsi     # 0xcbb68
leaq -0x290(%rbp), %rdi
movl $0xe, %edx
callq 0x70bd0
jmp 0x9f01e
callq 0x4ae70
movaps 0x2c596(%rip), %xmm1    # 0xcb5c0
pxor %xmm1, %xmm0
movlpd %xmm0, -0x298(%rbp)
movsd 0x68472(%rip), %xmm0    # 0x1074b0
callq 0xbf970
movsd %xmm0, -0x330(%rbp)
jmp 0x9f04d
movsd -0x330(%rbp), %xmm0
movsd %xmm0, -0x2a0(%rbp)
leaq 0x2cc81(%rip), %rcx     # 0xcbce5
movq %rsp, %rax
movq %rcx, 0x20(%rax)
leaq -0x2a0(%rbp), %rcx
movq %rcx, 0x18(%rax)
leaq 0x2d6f9(%rip), %rcx     # 0xcc776
movq %rcx, 0x10(%rax)
leaq -0x1d8(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x2cbed(%rip), %rcx     # 0xcbc80
movq %rcx, (%rax)
leaq -0x280(%rbp), %rdi
leaq -0x290(%rbp), %rsi
movl $0x38e, %edx            # imm = 0x38E
movl $0x1, %ecx
movl $0x8, %r8d
leaq -0x298(%rbp), %r9
callq 0xbf6a0
jmp 0x9f0c2
leaq -0x280(%rbp), %rdi
callq 0x70ea0
callq 0x70ec0
movb %al, -0x331(%rbp)
jmp 0x9f0db
movb -0x331(%rbp), %al
testb $0x1, %al
jne 0x9ef83
jmp 0x9f0eb
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 0x9f2c5
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 0x9f1a7
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 0x9f176
jmp 0x9f2bc
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 0x9f1dd
jmp 0x9f2bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x9f2b0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x121(%rbp), %rdi
callq 0x6470
jmp 0x9f2b0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x9f2a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x9f28c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x220(%rbp), %rdi
callq 0x70ea0
jmp 0x9f28c
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)