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

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x380, %rsp            # imm = 0x380
movq %rdi, -0x8(%rbp)
leaq -0x29(%rbp), %rdi
movq %rdi, -0x290(%rbp)
callq 0x67b0
movq -0x290(%rbp), %rdx
leaq 0x38747(%rip), %rsi     # 0xcbf14
leaq -0x28(%rbp), %rdi
callq 0x65e0
jmp 0x937d8
leaq -0x29(%rbp), %rdi
callq 0x6470
leaq -0xc0(%rbp), %rdi
movq %rdi, -0xc8(%rbp)
leaq 0x73e42(%rip), %rsi     # 0x107638
callq 0x61c0
jmp 0x937fd
leaq -0xa0(%rbp), %rdi
movq %rdi, -0xc8(%rbp)
leaq -0x28(%rbp), %rsi
callq 0x61c0
jmp 0x93816
leaq -0xc0(%rbp), %rax
movq %rax, -0x80(%rbp)
movq $0x2, -0x78(%rbp)
leaq -0xca(%rbp), %rdi
movq %rdi, -0x298(%rbp)
callq 0xdab0
movq -0x298(%rbp), %r8
movq -0x80(%rbp), %rsi
movq -0x78(%rbp), %rdx
leaq -0x70(%rbp), %rdi
leaq -0xc9(%rbp), %rcx
callq 0xbfde0
jmp 0x9385d
leaq -0xca(%rbp), %rdi
callq 0xdb50
leaq -0xc0(%rbp), %rax
movq %rax, -0x2a8(%rbp)
addq $0x40, %rax
movq %rax, -0x2a0(%rbp)
movq -0x2a0(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x2b0(%rbp)
callq 0x6908
movq -0x2a8(%rbp), %rcx
movq -0x2b0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x2a0(%rbp)
jne 0x93882
leaq -0x100(%rbp), %rdi
movq %rdi, -0x2c0(%rbp)
callq 0x4bd30
movq -0x2c0(%rbp), %rdi
leaq 0x73d64(%rip), %rsi     # 0x107638
callq 0x4b980
movq %rax, -0x2b8(%rbp)
jmp 0x938e2
movq -0x2b8(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x4b030
movq %rax, -0x2c8(%rbp)
jmp 0x938fb
movq -0x2c8(%rbp), %rax
movabsq $-0x4010000000000000, %rcx # imm = 0xBFF0000000000000
movq %rcx, (%rax)
leaq -0x100(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x4b980
movq %rax, -0x2d0(%rbp)
jmp 0x93928
movq -0x2d0(%rbp), %rdi
leaq 0x73d02(%rip), %rsi     # 0x107638
callq 0x4b030
movq %rax, -0x2d8(%rbp)
jmp 0x93944
movq -0x2d8(%rbp), %rax
movabsq $-0x4010000000000000, %rcx # imm = 0xBFF0000000000000
movq %rcx, (%rax)
leaq -0x121(%rbp), %rdi
movq %rdi, -0x2e0(%rbp)
callq 0x67b0
movq -0x2e0(%rbp), %rdx
leaq 0x38266(%rip), %rsi     # 0xcbbdf
leaq -0x120(%rbp), %rdi
callq 0x65e0
jmp 0x93987
leaq -0x121(%rbp), %rdi
callq 0x6470
leaq 0x73c9e(%rip), %rdx     # 0x107638
leaq -0x1a0(%rbp), %rdi
leaq -0x120(%rbp), %rsi
leaq -0x70(%rbp), %rcx
movl $0x1, %r8d
xorl %r9d, %r9d
callq 0x239b0
jmp 0x939bc
leaq -0x1b8(%rbp), %rdi
movq %rdi, -0x2f0(%rbp)
callq 0xc7d0
movq -0x2f0(%rbp), %rdx
leaq -0x100(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
movl $0x1, %ecx
callq 0x45140
movsd %xmm0, -0x2e8(%rbp)
jmp 0x939f8
movsd -0x2e8(%rbp), %xmm0
movsd %xmm0, -0x1c0(%rbp)
movq 0x73be1(%rip), %rax     # 0x1075f0
movq %rax, -0x2f8(%rbp)
leaq 0x3814b(%rip), %rsi     # 0xcbb68
leaq -0x1d0(%rbp), %rdi
movl $0xe, %edx
callq 0x70bd0
jmp 0x93a30
leaq -0x1e0(%rbp), %rdi
callq 0x70c00
jmp 0x93a3e
movq -0x2f8(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
movl $0x2a6, %edx            # imm = 0x2A6
leaq -0x1e0(%rbp), %rcx
callq 0x6840
jmp 0x93a5f
callq 0x70e90
movq %rax, -0x300(%rbp)
jmp 0x93a6d
movq -0x300(%rbp), %rsi
leaq 0x378af(%rip), %rdx     # 0xcb32a
leaq -0x208(%rbp), %rdi
callq 0x70e50
jmp 0x93a89
leaq 0x380d8(%rip), %rsi     # 0xcbb68
leaq -0x218(%rbp), %rdi
movl $0xe, %edx
callq 0x70bd0
jmp 0x93aa3
movl $0x0, -0x21c(%rbp)
leaq -0x1b8(%rbp), %rdi
callq 0xcba0
movl %eax, -0x220(%rbp)
leaq 0x38617(%rip), %rcx     # 0xcc0dd
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x220(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x38f61(%rip), %rcx     # 0xcca40
movq %rcx, (%rax)
leaq -0x208(%rbp), %rdi
leaq -0x218(%rbp), %rsi
movl $0x2a6, %edx            # imm = 0x2A6
movl $0x1, %ecx
movl $0x2, %r8d
leaq -0x21c(%rbp), %r9
callq 0xbf480
jmp 0x93b0e
leaq -0x208(%rbp), %rdi
callq 0x70ea0
callq 0x70ec0
movb %al, -0x301(%rbp)
jmp 0x93b27
movb -0x301(%rbp), %al
testb $0x1, %al
jne 0x93a08
jmp 0x93b37
jmp 0x93b39
movq 0x73ab0(%rip), %rax     # 0x1075f0
movq %rax, -0x310(%rbp)
leaq 0x3801a(%rip), %rsi     # 0xcbb68
leaq -0x230(%rbp), %rdi
movl $0xe, %edx
callq 0x70bd0
jmp 0x93b61
leaq -0x240(%rbp), %rdi
callq 0x70c00
jmp 0x93b6f
movq -0x310(%rbp), %rdi
leaq -0x230(%rbp), %rsi
movl $0x2a7, %edx            # imm = 0x2A7
leaq -0x240(%rbp), %rcx
callq 0x6840
jmp 0x93b90
callq 0x70e90
movq %rax, -0x318(%rbp)
jmp 0x93b9e
movq -0x318(%rbp), %rsi
leaq 0x3777e(%rip), %rdx     # 0xcb32a
leaq -0x268(%rbp), %rdi
callq 0x70e50
jmp 0x93bba
leaq 0x37fa7(%rip), %rsi     # 0xcbb68
leaq -0x278(%rbp), %rdi
movl $0xe, %edx
callq 0x70bd0
jmp 0x93bd4
callq 0x4ae70
movaps 0x379e0(%rip), %xmm1    # 0xcb5c0
pxor %xmm1, %xmm0
movlpd %xmm0, -0x280(%rbp)
movsd 0x738bc(%rip), %xmm0    # 0x1074b0
callq 0xbf970
movsd %xmm0, -0x320(%rbp)
jmp 0x93c03
movsd -0x320(%rbp), %xmm0
movsd %xmm0, -0x288(%rbp)
leaq 0x380cb(%rip), %rcx     # 0xcbce5
movq %rsp, %rax
movq %rcx, 0x20(%rax)
leaq -0x288(%rbp), %rcx
movq %rcx, 0x18(%rax)
leaq 0x38b43(%rip), %rcx     # 0xcc776
movq %rcx, 0x10(%rax)
leaq -0x1c0(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x38037(%rip), %rcx     # 0xcbc80
movq %rcx, (%rax)
leaq -0x268(%rbp), %rdi
leaq -0x278(%rbp), %rsi
movl $0x2a7, %edx            # imm = 0x2A7
movl $0x1, %ecx
movl $0x8, %r8d
leaq -0x280(%rbp), %r9
callq 0xbf6a0
jmp 0x93c78
leaq -0x268(%rbp), %rdi
callq 0x70ea0
callq 0x70ec0
movb %al, -0x321(%rbp)
jmp 0x93c91
movb -0x321(%rbp), %al
testb $0x1, %al
jne 0x93b39
jmp 0x93ca1
leaq -0x1b8(%rbp), %rdi
callq 0xcfc0
leaq -0x1a0(%rbp), %rdi
callq 0x26180
leaq -0x120(%rbp), %rdi
callq 0x6908
leaq -0x100(%rbp), %rdi
callq 0x4bd50
leaq -0x70(%rbp), %rdi
callq 0x5c1b0
leaq -0x28(%rbp), %rdi
callq 0x6908
addq $0x380, %rsp            # imm = 0x380
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x29(%rbp), %rdi
callq 0x6470
jmp 0x93e84
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
movq -0xc8(%rbp), %rax
leaq -0xc0(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x330(%rbp)
je 0x93d5d
movq -0x330(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x338(%rbp)
callq 0x6908
movq -0x338(%rbp), %rax
leaq -0xc0(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x330(%rbp)
jne 0x93d2c
jmp 0x93e7b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0xca(%rbp), %rdi
callq 0xdb50
leaq -0xc0(%rbp), %rax
movq %rax, -0x348(%rbp)
addq $0x40, %rax
movq %rax, -0x340(%rbp)
movq -0x340(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x350(%rbp)
callq 0x6908
movq -0x348(%rbp), %rcx
movq -0x350(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x340(%rbp)
jne 0x93d93
jmp 0x93e7b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x93e66
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x121(%rbp), %rdi
callq 0x6470
jmp 0x93e66
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x93e5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x93e42
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x208(%rbp), %rdi
callq 0x70ea0
jmp 0x93e42
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x268(%rbp), %rdi
callq 0x70ea0
leaq -0x1b8(%rbp), %rdi
callq 0xcfc0
leaq -0x1a0(%rbp), %rdi
callq 0x26180
leaq -0x120(%rbp), %rdi
callq 0x6908
leaq -0x100(%rbp), %rdi
callq 0x4bd50
leaq -0x70(%rbp), %rdi
callq 0x5c1b0
leaq -0x28(%rbp), %rdi
callq 0x6908
movq -0x38(%rbp), %rdi
callq 0x67a0
nopl (%rax)