// File: aalto-speech[P]ftk/test/msfgtest.cc
// Function: MultiStringFactorGraphTest3::test_method()
BOOST_AUTO_TEST_CASE(MultiStringFactorGraphTest3)
{
    MultiStringFactorGraph msfg(start_end_symbol);
    set<string> vocab = {"k", "i", "s", "a", "sa", "ki", "la", "kis", "kissa",
                         "lle", "kin", "kala"};
    string sentence("kissa");
    FactorGraph fg(sentence, start_end_symbol, vocab, 5);
    string sentence2("kala");
    FactorGraph fg2(sentence2, start_end_symbol, vocab, 5);
    string sentence3("kissakala");
    FactorGraph fg3(sentence3, start_end_symbol, vocab, 5);
    msfg.add(fg);
    msfg.add(fg2);
    msfg.add(fg3);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x5f0, %rsp            # imm = 0x5F0
movq %rdi, -0x8(%rbp)
leaq 0x3ef92(%rip), %rsi     # 0x107688
leaq -0x100(%rbp), %rdi
callq 0xc0180
movb $0x1, -0x2e8(%rbp)
leaq -0x2c0(%rbp), %rax
movq %rax, -0x4e0(%rbp)
movq %rax, -0x2c8(%rbp)
leaq -0x2c9(%rbp), %rdi
movq %rdi, -0x4d8(%rbp)
callq 0x67b0
movq -0x4e0(%rbp), %rdi
movq -0x4d8(%rbp), %rdx
leaq 0x34f4(%rip), %rsi      # 0xcbc3a
callq 0x65e0
jmp 0xc874d
leaq -0x2a0(%rbp), %rax
movq %rax, -0x4f0(%rbp)
movq %rax, -0x2c8(%rbp)
leaq -0x2dd(%rbp), %rdi
movq %rdi, -0x4e8(%rbp)
callq 0x67b0
movq -0x4f0(%rbp), %rdi
movq -0x4e8(%rbp), %rdx
leaq 0x2fae(%rip), %rsi      # 0xcb738
callq 0x65e0
jmp 0xc8791
leaq -0x280(%rbp), %rax
movq %rax, -0x500(%rbp)
movq %rax, -0x2c8(%rbp)
leaq -0x2de(%rbp), %rdi
movq %rdi, -0x4f8(%rbp)
callq 0x67b0
movq -0x500(%rbp), %rdi
movq -0x4f8(%rbp), %rdx
leaq 0x2840(%rip), %rsi      # 0xcb00e
callq 0x65e0
jmp 0xc87d5
leaq -0x260(%rbp), %rax
movq %rax, -0x510(%rbp)
movq %rax, -0x2c8(%rbp)
leaq -0x2df(%rbp), %rdi
movq %rdi, -0x508(%rbp)
callq 0x67b0
movq -0x510(%rbp), %rdi
movq -0x508(%rbp), %rdx
leaq 0x3702(%rip), %rsi      # 0xcbf14
callq 0x65e0
jmp 0xc8819
leaq -0x240(%rbp), %rax
movq %rax, -0x520(%rbp)
movq %rax, -0x2c8(%rbp)
leaq -0x2e0(%rbp), %rdi
movq %rdi, -0x518(%rbp)
callq 0x67b0
movq -0x520(%rbp), %rdi
movq -0x518(%rbp), %rdx
leaq 0x3f52(%rip), %rsi      # 0xcc7a8
callq 0x65e0
jmp 0xc885d
leaq -0x220(%rbp), %rax
movq %rax, -0x530(%rbp)
movq %rax, -0x2c8(%rbp)
leaq -0x2e1(%rbp), %rdi
movq %rdi, -0x528(%rbp)
callq 0x67b0
movq -0x530(%rbp), %rdi
movq -0x528(%rbp), %rdx
leaq 0x34d2(%rip), %rsi      # 0xcbd6c
callq 0x65e0
jmp 0xc88a1
leaq -0x200(%rbp), %rax
movq %rax, -0x540(%rbp)
movq %rax, -0x2c8(%rbp)
leaq -0x2e2(%rbp), %rdi
movq %rdi, -0x538(%rbp)
callq 0x67b0
movq -0x540(%rbp), %rdi
movq -0x538(%rbp), %rdx
leaq 0x459c(%rip), %rsi      # 0xcce7a
callq 0x65e0
jmp 0xc88e5
leaq -0x1e0(%rbp), %rax
movq %rax, -0x550(%rbp)
movq %rax, -0x2c8(%rbp)
leaq -0x2e3(%rbp), %rdi
movq %rdi, -0x548(%rbp)
callq 0x67b0
movq -0x550(%rbp), %rdi
movq -0x548(%rbp), %rdx
leaq 0x344d(%rip), %rsi      # 0xcbd6f
callq 0x65e0
jmp 0xc8929
leaq -0x1c0(%rbp), %rax
movq %rax, -0x560(%rbp)
movq %rax, -0x2c8(%rbp)
leaq -0x2e4(%rbp), %rdi
movq %rdi, -0x558(%rbp)
callq 0x67b0
movq -0x560(%rbp), %rdi
movq -0x558(%rbp), %rdx
leaq 0x32d6(%rip), %rsi      # 0xcbc3c
callq 0x65e0
jmp 0xc896d
leaq -0x1a0(%rbp), %rax
movq %rax, -0x570(%rbp)
movq %rax, -0x2c8(%rbp)
leaq -0x2e5(%rbp), %rdi
movq %rdi, -0x568(%rbp)
callq 0x67b0
movq -0x570(%rbp), %rdi
movq -0x568(%rbp), %rdx
leaq 0x44b9(%rip), %rsi      # 0xcce63
callq 0x65e0
jmp 0xc89b1
leaq -0x180(%rbp), %rax
movq %rax, -0x580(%rbp)
movq %rax, -0x2c8(%rbp)
leaq -0x2e6(%rbp), %rdi
movq %rdi, -0x578(%rbp)
callq 0x67b0
movq -0x580(%rbp), %rdi
movq -0x578(%rbp), %rdx
leaq 0x4481(%rip), %rsi      # 0xcce6f
callq 0x65e0
jmp 0xc89f5
leaq -0x160(%rbp), %rax
movq %rax, -0x590(%rbp)
movq %rax, -0x2c8(%rbp)
leaq -0x2e7(%rbp), %rdi
movq %rdi, -0x588(%rbp)
callq 0x67b0
movq -0x590(%rbp), %rdi
movq -0x588(%rbp), %rdx
leaq 0x4446(%rip), %rsi      # 0xcce78
callq 0x65e0
jmp 0xc8a39
movb $0x0, -0x2e8(%rbp)
leaq -0x2c0(%rbp), %rax
movq %rax, -0x140(%rbp)
movq $0xc, -0x138(%rbp)
leaq -0x2ea(%rbp), %rdi
movq %rdi, -0x598(%rbp)
callq 0xdab0
movq -0x598(%rbp), %r8
movq -0x140(%rbp), %rsi
movq -0x138(%rbp), %rdx
leaq -0x130(%rbp), %rdi
leaq -0x2e9(%rbp), %rcx
callq 0xbfde0
jmp 0xc8a96
leaq -0x2ea(%rbp), %rdi
callq 0xdb50
leaq -0x2c0(%rbp), %rax
movq %rax, -0x5a8(%rbp)
addq $0x180, %rax            # imm = 0x180
movq %rax, -0x5a0(%rbp)
movq -0x5a0(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x5b0(%rbp)
callq 0x6908
movq -0x5a8(%rbp), %rcx
movq -0x5b0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x5a0(%rbp)
jne 0xc8abd
leaq -0x2e7(%rbp), %rdi
callq 0x6470
leaq -0x2e6(%rbp), %rdi
callq 0x6470
leaq -0x2e5(%rbp), %rdi
callq 0x6470
leaq -0x2e4(%rbp), %rdi
callq 0x6470
leaq -0x2e3(%rbp), %rdi
callq 0x6470
leaq -0x2e2(%rbp), %rdi
callq 0x6470
leaq -0x2e1(%rbp), %rdi
callq 0x6470
leaq -0x2e0(%rbp), %rdi
callq 0x6470
leaq -0x2df(%rbp), %rdi
callq 0x6470
leaq -0x2de(%rbp), %rdi
callq 0x6470
leaq -0x2dd(%rbp), %rdi
callq 0x6470
leaq -0x2c9(%rbp), %rdi
callq 0x6470
leaq -0x311(%rbp), %rdi
movq %rdi, -0x5b8(%rbp)
callq 0x67b0
movq -0x5b8(%rbp), %rdx
leaq 0x309d(%rip), %rsi      # 0xcbc3c
leaq -0x310(%rbp), %rdi
callq 0x65e0
jmp 0xc8bad
leaq -0x311(%rbp), %rdi
callq 0x6470
leaq 0x3eac8(%rip), %rdx     # 0x107688
leaq -0x390(%rbp), %rdi
leaq -0x310(%rbp), %rsi
leaq -0x130(%rbp), %rcx
movl $0x5, %r8d
xorl %r9d, %r9d
callq 0x239b0
jmp 0xc8be5
leaq -0x3b1(%rbp), %rdi
movq %rdi, -0x5c0(%rbp)
callq 0x67b0
movq -0x5c0(%rbp), %rdx
leaq 0x4272(%rip), %rsi      # 0xcce78
leaq -0x3b0(%rbp), %rdi
callq 0x65e0
jmp 0xc8c14
leaq -0x3b1(%rbp), %rdi
callq 0x6470
leaq 0x3ea61(%rip), %rdx     # 0x107688
leaq -0x430(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
leaq -0x130(%rbp), %rcx
movl $0x5, %r8d
xorl %r9d, %r9d
callq 0x239b0
jmp 0xc8c4c
leaq -0x451(%rbp), %rdi
movq %rdi, -0x5c8(%rbp)
callq 0x67b0
movq -0x5c8(%rbp), %rdx
leaq 0x4206(%rip), %rsi      # 0xcce73
leaq -0x450(%rbp), %rdi
callq 0x65e0
jmp 0xc8c7b
leaq -0x451(%rbp), %rdi
callq 0x6470
leaq 0x3e9fa(%rip), %rdx     # 0x107688
leaq -0x4d0(%rbp), %rdi
leaq -0x450(%rbp), %rsi
leaq -0x130(%rbp), %rcx
movl $0x5, %r8d
xorl %r9d, %r9d
callq 0x239b0
jmp 0xc8cb3
leaq -0x100(%rbp), %rdi
leaq -0x390(%rbp), %rsi
movl $0x1, %edx
callq 0x2fff0
jmp 0xc8ccd
leaq -0x100(%rbp), %rdi
leaq -0x430(%rbp), %rsi
movl $0x1, %edx
callq 0x2fff0
jmp 0xc8ce7
leaq -0x100(%rbp), %rdi
leaq -0x4d0(%rbp), %rsi
movl $0x1, %edx
callq 0x2fff0
jmp 0xc8d01
leaq -0x4d0(%rbp), %rdi
callq 0x26180
leaq -0x450(%rbp), %rdi
callq 0x6908
leaq -0x430(%rbp), %rdi
callq 0x26180
leaq -0x3b0(%rbp), %rdi
callq 0x6908
leaq -0x390(%rbp), %rdi
callq 0x26180
leaq -0x310(%rbp), %rdi
callq 0x6908
leaq -0x130(%rbp), %rdi
callq 0x5c1b0
leaq -0x100(%rbp), %rdi
callq 0x2fe10
addq $0x5f0, %rsp            # imm = 0x5F0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2d8(%rbp)
movl %eax, -0x2dc(%rbp)
jmp 0xc8f6b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2d8(%rbp)
movl %eax, -0x2dc(%rbp)
jmp 0xc8f5f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2d8(%rbp)
movl %eax, -0x2dc(%rbp)
jmp 0xc8f53
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2d8(%rbp)
movl %eax, -0x2dc(%rbp)
jmp 0xc8f47
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2d8(%rbp)
movl %eax, -0x2dc(%rbp)
jmp 0xc8f3b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2d8(%rbp)
movl %eax, -0x2dc(%rbp)
jmp 0xc8f2f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2d8(%rbp)
movl %eax, -0x2dc(%rbp)
jmp 0xc8f23
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2d8(%rbp)
movl %eax, -0x2dc(%rbp)
jmp 0xc8f17
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2d8(%rbp)
movl %eax, -0x2dc(%rbp)
jmp 0xc8f0b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2d8(%rbp)
movl %eax, -0x2dc(%rbp)
jmp 0xc8eff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2d8(%rbp)
movl %eax, -0x2dc(%rbp)
jmp 0xc8ef3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2d8(%rbp)
movl %eax, -0x2dc(%rbp)
jmp 0xc8ee7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2d8(%rbp)
movl %eax, -0x2dc(%rbp)
leaq -0x2ea(%rbp), %rdi
callq 0xdb50
leaq -0x2c0(%rbp), %rax
movq %rax, -0x5d8(%rbp)
addq $0x180, %rax            # imm = 0x180
movq %rax, -0x5d0(%rbp)
movq -0x5d0(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x5e0(%rbp)
callq 0x6908
movq -0x5d8(%rbp), %rcx
movq -0x5e0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x5d0(%rbp)
jne 0xc8eb4
jmp 0xc8ee7
leaq -0x2e7(%rbp), %rdi
callq 0x6470
leaq -0x2e6(%rbp), %rdi
callq 0x6470
leaq -0x2e5(%rbp), %rdi
callq 0x6470
leaq -0x2e4(%rbp), %rdi
callq 0x6470
leaq -0x2e3(%rbp), %rdi
callq 0x6470
leaq -0x2e2(%rbp), %rdi
callq 0x6470
leaq -0x2e1(%rbp), %rdi
callq 0x6470
leaq -0x2e0(%rbp), %rdi
callq 0x6470
leaq -0x2df(%rbp), %rdi
callq 0x6470
leaq -0x2de(%rbp), %rdi
callq 0x6470
leaq -0x2dd(%rbp), %rdi
callq 0x6470
leaq -0x2c9(%rbp), %rdi
callq 0x6470
testb $0x1, -0x2e8(%rbp)
jne 0xc8f82
jmp 0xc8fcf
movq -0x2c8(%rbp), %rax
leaq -0x2c0(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x5e8(%rbp)
je 0xc8fcd
movq -0x5e8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x5f0(%rbp)
callq 0x6908
movq -0x5f0(%rbp), %rax
leaq -0x2c0(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x5e8(%rbp)
jne 0xc8f9c
jmp 0xc8fcf
jmp 0xc90df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2d8(%rbp)
movl %eax, -0x2dc(%rbp)
leaq -0x311(%rbp), %rdi
callq 0x6470
jmp 0xc90d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2d8(%rbp)
movl %eax, -0x2dc(%rbp)
jmp 0xc90c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2d8(%rbp)
movl %eax, -0x2dc(%rbp)
leaq -0x3b1(%rbp), %rdi
callq 0x6470
jmp 0xc90bb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2d8(%rbp)
movl %eax, -0x2dc(%rbp)
jmp 0xc90af
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2d8(%rbp)
movl %eax, -0x2dc(%rbp)
leaq -0x451(%rbp), %rdi
callq 0x6470
jmp 0xc90a3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2d8(%rbp)
movl %eax, -0x2dc(%rbp)
jmp 0xc9097
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2d8(%rbp)
movl %eax, -0x2dc(%rbp)
leaq -0x4d0(%rbp), %rdi
callq 0x26180
leaq -0x450(%rbp), %rdi
callq 0x6908
leaq -0x430(%rbp), %rdi
callq 0x26180
leaq -0x3b0(%rbp), %rdi
callq 0x6908
leaq -0x390(%rbp), %rdi
callq 0x26180
leaq -0x310(%rbp), %rdi
callq 0x6908
leaq -0x130(%rbp), %rdi
callq 0x5c1b0
leaq -0x100(%rbp), %rdi
callq 0x2fe10
movq -0x2d8(%rbp), %rdi
callq 0x67a0
nopw (%rax,%rax)