// File: aalto-speech[P]ftk/test/emtest.cc
// Function: viterbiTest7::test_method()
BOOST_AUTO_TEST_CASE(viterbiTest7)
{
    map<string, flt_type> vocab;
    string str1("k"); string str2("i");
    string str3("s"); string str4("a");
    string str5("l"); string str6("kissa");
    string str7("lla"); string str8("kissalla");
    vocab[str1] = -1.0;
    vocab[str2] = -2.0;
    vocab[str3] = -1.5;
    vocab[str4] = -2.0;
    vocab[str5] = -3.0;
    vocab[str6] = -3.0;
    vocab[str7] = -2.0;
    vocab[str8] = -1.0;
    string sentence("kissalla");
    int maxlen = 8;
    vector<string> correct_path;
    correct_path.push_back(str8);
    viterbiChecks(vocab, maxlen, sentence, correct_path, -1);
    correct_path.clear();
    correct_path.push_back(str6);
    correct_path.push_back(str7);
    vocab[str8] = -6.0;
    viterbiChecks(vocab, maxlen, sentence, correct_path, -5.0);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x270, %rsp            # imm = 0x270
movq %rdi, -0x8(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x530a0
leaq -0x59(%rbp), %rdi
movq %rdi, -0x1d0(%rbp)
callq 0x67b0
movq -0x1d0(%rbp), %rdx
leaq 0x55674(%rip), %rsi     # 0xcbc3a
leaq -0x58(%rbp), %rdi
callq 0x65e0
jmp 0x765d1
leaq -0x59(%rbp), %rdi
callq 0x6470
leaq -0x91(%rbp), %rdi
movq %rdi, -0x1d8(%rbp)
callq 0x67b0
movq -0x1d8(%rbp), %rdx
leaq 0x5513d(%rip), %rsi     # 0xcb738
leaq -0x90(%rbp), %rdi
callq 0x65e0
jmp 0x76609
leaq -0x91(%rbp), %rdi
callq 0x6470
leaq -0xb9(%rbp), %rdi
movq %rdi, -0x1e0(%rbp)
callq 0x67b0
movq -0x1e0(%rbp), %rdx
leaq 0x549d8(%rip), %rsi     # 0xcb00e
leaq -0xb8(%rbp), %rdi
callq 0x65e0
jmp 0x76644
leaq -0xb9(%rbp), %rdi
callq 0x6470
leaq -0xe1(%rbp), %rdi
movq %rdi, -0x1e8(%rbp)
callq 0x67b0
movq -0x1e8(%rbp), %rdx
leaq 0x558a3(%rip), %rsi     # 0xcbf14
leaq -0xe0(%rbp), %rdi
callq 0x65e0
jmp 0x7667f
leaq -0xe1(%rbp), %rdi
callq 0x6470
leaq -0x109(%rbp), %rdi
movq %rdi, -0x1f0(%rbp)
callq 0x67b0
movq -0x1f0(%rbp), %rdx
leaq 0x55860(%rip), %rsi     # 0xcbf0c
leaq -0x108(%rbp), %rdi
callq 0x65e0
jmp 0x766ba
leaq -0x109(%rbp), %rdi
callq 0x6470
leaq -0x131(%rbp), %rdi
movq %rdi, -0x1f8(%rbp)
callq 0x67b0
movq -0x1f8(%rbp), %rdx
leaq 0x55555(%rip), %rsi     # 0xcbc3c
leaq -0x130(%rbp), %rdi
callq 0x65e0
jmp 0x766f5
leaq -0x131(%rbp), %rdi
callq 0x6470
leaq -0x159(%rbp), %rdi
movq %rdi, -0x200(%rbp)
callq 0x67b0
movq -0x200(%rbp), %rdx
leaq 0x55525(%rip), %rsi     # 0xcbc47
leaq -0x158(%rbp), %rdi
callq 0x65e0
jmp 0x76730
leaq -0x159(%rbp), %rdi
callq 0x6470
leaq -0x181(%rbp), %rdi
movq %rdi, -0x208(%rbp)
callq 0x67b0
movq -0x208(%rbp), %rdx
leaq 0x554e5(%rip), %rsi     # 0xcbc42
leaq -0x180(%rbp), %rdi
callq 0x65e0
jmp 0x7676b
leaq -0x181(%rbp), %rdi
callq 0x6470
leaq -0x38(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x4b030
movq %rax, -0x210(%rbp)
jmp 0x7678d
movq -0x210(%rbp), %rax
movabsq $-0x4010000000000000, %rcx # imm = 0xBFF0000000000000
movq %rcx, (%rax)
leaq -0x38(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x4b030
movq %rax, -0x218(%rbp)
jmp 0x767ba
movq -0x218(%rbp), %rax
movabsq $-0x4000000000000000, %rcx # imm = 0xC000000000000000
movq %rcx, (%rax)
leaq -0x38(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x4b030
movq %rax, -0x220(%rbp)
jmp 0x767e7
movq -0x220(%rbp), %rax
movabsq $-0x4008000000000000, %rcx # imm = 0xBFF8000000000000
movq %rcx, (%rax)
leaq -0x38(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x4b030
movq %rax, -0x228(%rbp)
jmp 0x76814
movq -0x228(%rbp), %rax
movabsq $-0x4000000000000000, %rcx # imm = 0xC000000000000000
movq %rcx, (%rax)
leaq -0x38(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0x4b030
movq %rax, -0x230(%rbp)
jmp 0x76841
movq -0x230(%rbp), %rax
movabsq $-0x3ff8000000000000, %rcx # imm = 0xC008000000000000
movq %rcx, (%rax)
leaq -0x38(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0x4b030
movq %rax, -0x238(%rbp)
jmp 0x7686e
movq -0x238(%rbp), %rax
movabsq $-0x3ff8000000000000, %rcx # imm = 0xC008000000000000
movq %rcx, (%rax)
leaq -0x38(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0x4b030
movq %rax, -0x240(%rbp)
jmp 0x7689b
movq -0x240(%rbp), %rax
movabsq $-0x4000000000000000, %rcx # imm = 0xC000000000000000
movq %rcx, (%rax)
leaq -0x38(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x4b030
movq %rax, -0x248(%rbp)
jmp 0x768c8
movq -0x248(%rbp), %rax
movabsq $-0x4010000000000000, %rcx # imm = 0xBFF0000000000000
movq %rcx, (%rax)
leaq -0x1a9(%rbp), %rdi
movq %rdi, -0x250(%rbp)
callq 0x67b0
movq -0x250(%rbp), %rdx
leaq 0x55345(%rip), %rsi     # 0xcbc42
leaq -0x1a8(%rbp), %rdi
callq 0x65e0
jmp 0x7690b
leaq -0x1a9(%rbp), %rdi
callq 0x6470
movl $0x8, -0x1b0(%rbp)
leaq -0x1c8(%rbp), %rdi
movq %rdi, -0x258(%rbp)
callq 0xc7d0
movq -0x258(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0xd310
jmp 0x76949
movl -0x1b0(%rbp), %esi
leaq -0x38(%rbp), %rdi
leaq -0x1a8(%rbp), %rdx
leaq -0x1c8(%rbp), %rcx
movsd 0x5519f(%rip), %xmm0    # 0xcbb08
movl $0x1, %r8d
callq 0x72320
jmp 0x76976
leaq -0x1c8(%rbp), %rdi
movq %rdi, -0x260(%rbp)
callq 0xdfd0
movq -0x260(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0xd310
jmp 0x7699e
leaq -0x1c8(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0xd310
jmp 0x769b3
leaq -0x38(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x4b030
movq %rax, -0x268(%rbp)
jmp 0x769cc
movq -0x268(%rbp), %rax
movabsq $-0x3fe8000000000000, %rcx # imm = 0xC018000000000000
movq %rcx, (%rax)
movl -0x1b0(%rbp), %esi
leaq -0x38(%rbp), %rdi
leaq -0x1a8(%rbp), %rdx
leaq -0x1c8(%rbp), %rcx
movsd 0x55110(%rip), %xmm0    # 0xcbb10
movl $0x1, %r8d
callq 0x72320
jmp 0x76a0d
leaq -0x1c8(%rbp), %rdi
callq 0xcfc0
leaq -0x1a8(%rbp), %rdi
callq 0x6908
leaq -0x180(%rbp), %rdi
callq 0x6908
leaq -0x158(%rbp), %rdi
callq 0x6908
leaq -0x130(%rbp), %rdi
callq 0x6908
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 $0x270, %rsp            # imm = 0x270
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x59(%rbp), %rdi
callq 0x6470
jmp 0x76c1c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x91(%rbp), %rdi
callq 0x6470
jmp 0x76c13
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xb9(%rbp), %rdi
callq 0x6470
jmp 0x76c07
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xe1(%rbp), %rdi
callq 0x6470
jmp 0x76bfb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x109(%rbp), %rdi
callq 0x6470
jmp 0x76bef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x131(%rbp), %rdi
callq 0x6470
jmp 0x76be3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x159(%rbp), %rdi
callq 0x6470
jmp 0x76bd7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x181(%rbp), %rdi
callq 0x6470
jmp 0x76bcb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x76bbf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x1a9(%rbp), %rdi
callq 0x6470
jmp 0x76bbf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0xcfc0
leaq -0x1a8(%rbp), %rdi
callq 0x6908
leaq -0x180(%rbp), %rdi
callq 0x6908
leaq -0x158(%rbp), %rdi
callq 0x6908
leaq -0x130(%rbp), %rdi
callq 0x6908
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
nop