// File: aalto-speech[P]ftk/test/emtest.cc
// Function: FactorGraphTestNumPaths::test_method()
BOOST_AUTO_TEST_CASE(FactorGraphTestNumPaths)
{
    set<string> vocab = {"k","i","s","a","sa","ki","kis","kissa"};
    string sentence("kissa");
    FactorGraph fg(sentence, start_end, vocab, 5);
    BOOST_CHECK_EQUAL( 7, fg.num_paths() );
    fg.remove_arcs(string("kissa"));
    BOOST_CHECK_EQUAL( 6, fg.num_paths() );
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x420, %rsp            # imm = 0x420
movq %rdi, -0x8(%rbp)
movb $0x1, -0x16c(%rbp)
leaq -0x148(%rbp), %rax
movq %rax, -0x308(%rbp)
movq %rax, -0x150(%rbp)
leaq -0x151(%rbp), %rdi
movq %rdi, -0x300(%rbp)
callq 0x67b0
movq -0x308(%rbp), %rdi
movq -0x300(%rbp), %rdx
leaq 0x42ce7(%rip), %rsi     # 0xcbc3a
callq 0x65e0
jmp 0x88f5a
leaq -0x128(%rbp), %rax
movq %rax, -0x318(%rbp)
movq %rax, -0x150(%rbp)
leaq -0x165(%rbp), %rdi
movq %rdi, -0x310(%rbp)
callq 0x67b0
movq -0x318(%rbp), %rdi
movq -0x310(%rbp), %rdx
leaq 0x427a1(%rip), %rsi     # 0xcb738
callq 0x65e0
jmp 0x88f9e
leaq -0x108(%rbp), %rax
movq %rax, -0x328(%rbp)
movq %rax, -0x150(%rbp)
leaq -0x166(%rbp), %rdi
movq %rdi, -0x320(%rbp)
callq 0x67b0
movq -0x328(%rbp), %rdi
movq -0x320(%rbp), %rdx
leaq 0x42033(%rip), %rsi     # 0xcb00e
callq 0x65e0
jmp 0x88fe2
leaq -0xe8(%rbp), %rax
movq %rax, -0x338(%rbp)
movq %rax, -0x150(%rbp)
leaq -0x167(%rbp), %rdi
movq %rdi, -0x330(%rbp)
callq 0x67b0
movq -0x338(%rbp), %rdi
movq -0x330(%rbp), %rdx
leaq 0x42ef5(%rip), %rsi     # 0xcbf14
callq 0x65e0
jmp 0x89026
leaq -0xc8(%rbp), %rax
movq %rax, -0x348(%rbp)
movq %rax, -0x150(%rbp)
leaq -0x168(%rbp), %rdi
movq %rdi, -0x340(%rbp)
callq 0x67b0
movq -0x348(%rbp), %rdi
movq -0x340(%rbp), %rdx
leaq 0x43745(%rip), %rsi     # 0xcc7a8
callq 0x65e0
jmp 0x8906a
leaq -0xa8(%rbp), %rax
movq %rax, -0x358(%rbp)
movq %rax, -0x150(%rbp)
leaq -0x169(%rbp), %rdi
movq %rdi, -0x350(%rbp)
callq 0x67b0
movq -0x358(%rbp), %rdi
movq -0x350(%rbp), %rdx
leaq 0x42cc5(%rip), %rsi     # 0xcbd6c
callq 0x65e0
jmp 0x890ae
leaq -0x88(%rbp), %rax
movq %rax, -0x368(%rbp)
movq %rax, -0x150(%rbp)
leaq -0x16a(%rbp), %rdi
movq %rdi, -0x360(%rbp)
callq 0x67b0
movq -0x368(%rbp), %rdi
movq -0x360(%rbp), %rdx
leaq 0x42c84(%rip), %rsi     # 0xcbd6f
callq 0x65e0
jmp 0x890f2
leaq -0x68(%rbp), %rax
movq %rax, -0x378(%rbp)
movq %rax, -0x150(%rbp)
leaq -0x16b(%rbp), %rdi
movq %rdi, -0x370(%rbp)
callq 0x67b0
movq -0x378(%rbp), %rdi
movq -0x370(%rbp), %rdx
leaq 0x42b10(%rip), %rsi     # 0xcbc3c
callq 0x65e0
jmp 0x89133
movb $0x0, -0x16c(%rbp)
leaq -0x148(%rbp), %rax
movq %rax, -0x48(%rbp)
movq $0x8, -0x40(%rbp)
leaq -0x16e(%rbp), %rdi
movq %rdi, -0x380(%rbp)
callq 0xdab0
movq -0x380(%rbp), %r8
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
leaq -0x38(%rbp), %rdi
leaq -0x16d(%rbp), %rcx
callq 0xbfde0
jmp 0x89181
leaq -0x16e(%rbp), %rdi
callq 0xdb50
leaq -0x148(%rbp), %rax
movq %rax, -0x390(%rbp)
addq $0x100, %rax            # imm = 0x100
movq %rax, -0x388(%rbp)
movq -0x388(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x398(%rbp)
callq 0x6908
movq -0x390(%rbp), %rcx
movq -0x398(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x388(%rbp)
jne 0x891a8
leaq -0x16b(%rbp), %rdi
callq 0x6470
leaq -0x16a(%rbp), %rdi
callq 0x6470
leaq -0x169(%rbp), %rdi
callq 0x6470
leaq -0x168(%rbp), %rdi
callq 0x6470
leaq -0x167(%rbp), %rdi
callq 0x6470
leaq -0x166(%rbp), %rdi
callq 0x6470
leaq -0x165(%rbp), %rdi
callq 0x6470
leaq -0x151(%rbp), %rdi
callq 0x6470
leaq -0x191(%rbp), %rdi
movq %rdi, -0x3a0(%rbp)
callq 0x67b0
movq -0x3a0(%rbp), %rdx
leaq 0x429e2(%rip), %rsi     # 0xcbc3c
leaq -0x190(%rbp), %rdi
callq 0x65e0
jmp 0x89268
leaq -0x191(%rbp), %rdi
callq 0x6470
leaq 0x7e3bd(%rip), %rdx     # 0x107638
leaq -0x210(%rbp), %rdi
leaq -0x190(%rbp), %rsi
leaq -0x38(%rbp), %rcx
movl $0x5, %r8d
xorl %r9d, %r9d
callq 0x239b0
jmp 0x8929d
jmp 0x8929f
movq 0x7e34a(%rip), %rax     # 0x1075f0
movq %rax, -0x3a8(%rbp)
leaq 0x428b4(%rip), %rsi     # 0xcbb68
leaq -0x220(%rbp), %rdi
movl $0xe, %edx
callq 0x70bd0
jmp 0x892c7
leaq -0x230(%rbp), %rdi
callq 0x70c00
jmp 0x892d5
movq -0x3a8(%rbp), %rdi
leaq -0x220(%rbp), %rsi
movl $0x21d, %edx            # imm = 0x21D
leaq -0x230(%rbp), %rcx
callq 0x6840
jmp 0x892f6
callq 0x70e90
movq %rax, -0x3b0(%rbp)
jmp 0x89304
movq -0x3b0(%rbp), %rsi
leaq 0x42018(%rip), %rdx     # 0xcb32a
leaq -0x258(%rbp), %rdi
callq 0x70e50
jmp 0x89320
leaq 0x42841(%rip), %rsi     # 0xcbb68
leaq -0x268(%rbp), %rdi
movl $0xe, %edx
callq 0x70bd0
jmp 0x8933a
movl $0x7, -0x26c(%rbp)
leaq -0x210(%rbp), %rdi
callq 0x25390
movl %eax, -0x3b4(%rbp)
jmp 0x89358
movl -0x3b4(%rbp), %eax
movl %eax, -0x270(%rbp)
leaq 0x42c32(%rip), %rcx     # 0xcbf9d
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x270(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x431bc(%rip), %rcx     # 0xcc540
movq %rcx, (%rax)
leaq -0x258(%rbp), %rdi
leaq -0x268(%rbp), %rsi
movl $0x21d, %edx            # imm = 0x21D
movl $0x1, %ecx
movl $0x2, %r8d
leaq -0x26c(%rbp), %r9
callq 0xbf480
jmp 0x893b3
leaq -0x258(%rbp), %rdi
callq 0x70ea0
callq 0x70ec0
movb %al, -0x3b5(%rbp)
jmp 0x893cc
movb -0x3b5(%rbp), %al
testb $0x1, %al
jne 0x8929f
jmp 0x893dc
leaq -0x291(%rbp), %rdi
movq %rdi, -0x3c0(%rbp)
callq 0x67b0
movq -0x3c0(%rbp), %rdx
leaq 0x4283f(%rip), %rsi     # 0xcbc3c
leaq -0x290(%rbp), %rdi
callq 0x65e0
jmp 0x8940b
leaq -0x210(%rbp), %rdi
leaq -0x290(%rbp), %rsi
callq 0x25be0
jmp 0x89420
leaq -0x290(%rbp), %rdi
callq 0x6908
leaq -0x291(%rbp), %rdi
callq 0x6470
movq 0x7e1b1(%rip), %rax     # 0x1075f0
movq %rax, -0x3c8(%rbp)
leaq 0x4271b(%rip), %rsi     # 0xcbb68
leaq -0x2a8(%rbp), %rdi
movl $0xe, %edx
callq 0x70bd0
jmp 0x89460
leaq -0x2b8(%rbp), %rdi
callq 0x70c00
jmp 0x8946e
movq -0x3c8(%rbp), %rdi
leaq -0x2a8(%rbp), %rsi
movl $0x21f, %edx            # imm = 0x21F
leaq -0x2b8(%rbp), %rcx
callq 0x6840
jmp 0x8948f
callq 0x70e90
movq %rax, -0x3d0(%rbp)
jmp 0x8949d
movq -0x3d0(%rbp), %rsi
leaq 0x41e7f(%rip), %rdx     # 0xcb32a
leaq -0x2e0(%rbp), %rdi
callq 0x70e50
jmp 0x894b9
leaq 0x426a8(%rip), %rsi     # 0xcbb68
leaq -0x2f0(%rbp), %rdi
movl $0xe, %edx
callq 0x70bd0
jmp 0x894d3
movl $0x6, -0x2f4(%rbp)
leaq -0x210(%rbp), %rdi
callq 0x25390
movl %eax, -0x3d4(%rbp)
jmp 0x894f1
movl -0x3d4(%rbp), %eax
movl %eax, -0x2f8(%rbp)
leaq 0x42a99(%rip), %rcx     # 0xcbf9d
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x2f8(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x431a0(%rip), %rcx     # 0xcc6bd
movq %rcx, (%rax)
leaq -0x2e0(%rbp), %rdi
leaq -0x2f0(%rbp), %rsi
movl $0x21f, %edx            # imm = 0x21F
movl $0x1, %ecx
movl $0x2, %r8d
leaq -0x2f4(%rbp), %r9
callq 0xbf480
jmp 0x8954c
leaq -0x2e0(%rbp), %rdi
callq 0x70ea0
callq 0x70ec0
movb %al, -0x3d5(%rbp)
jmp 0x89565
movb -0x3d5(%rbp), %al
testb $0x1, %al
jne 0x89438
jmp 0x89575
leaq -0x210(%rbp), %rdi
callq 0x26180
leaq -0x190(%rbp), %rdi
callq 0x6908
leaq -0x38(%rbp), %rdi
callq 0x5c1b0
addq $0x420, %rsp            # imm = 0x420
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x160(%rbp)
movl %eax, -0x164(%rbp)
jmp 0x89714
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x160(%rbp)
movl %eax, -0x164(%rbp)
jmp 0x89708
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x160(%rbp)
movl %eax, -0x164(%rbp)
jmp 0x896fc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x160(%rbp)
movl %eax, -0x164(%rbp)
jmp 0x896f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x160(%rbp)
movl %eax, -0x164(%rbp)
jmp 0x896e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x160(%rbp)
movl %eax, -0x164(%rbp)
jmp 0x896d8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x160(%rbp)
movl %eax, -0x164(%rbp)
jmp 0x896cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x160(%rbp)
movl %eax, -0x164(%rbp)
jmp 0x896c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x160(%rbp)
movl %eax, -0x164(%rbp)
leaq -0x16e(%rbp), %rdi
callq 0xdb50
leaq -0x148(%rbp), %rax
movq %rax, -0x3e8(%rbp)
addq $0x100, %rax            # imm = 0x100
movq %rax, -0x3e0(%rbp)
movq -0x3e0(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x3f0(%rbp)
callq 0x6908
movq -0x3e8(%rbp), %rcx
movq -0x3f0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x3e0(%rbp)
jne 0x8968d
jmp 0x896c0
leaq -0x16b(%rbp), %rdi
callq 0x6470
leaq -0x16a(%rbp), %rdi
callq 0x6470
leaq -0x169(%rbp), %rdi
callq 0x6470
leaq -0x168(%rbp), %rdi
callq 0x6470
leaq -0x167(%rbp), %rdi
callq 0x6470
leaq -0x166(%rbp), %rdi
callq 0x6470
leaq -0x165(%rbp), %rdi
callq 0x6470
leaq -0x151(%rbp), %rdi
callq 0x6470
testb $0x1, -0x16c(%rbp)
jne 0x8972b
jmp 0x89778
movq -0x150(%rbp), %rax
leaq -0x148(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x3f8(%rbp)
je 0x89776
movq -0x3f8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x400(%rbp)
callq 0x6908
movq -0x400(%rbp), %rax
leaq -0x148(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x3f8(%rbp)
jne 0x89745
jmp 0x89778
jmp 0x8986a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x160(%rbp)
movl %eax, -0x164(%rbp)
leaq -0x191(%rbp), %rdi
callq 0x6470
jmp 0x89861
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x160(%rbp)
movl %eax, -0x164(%rbp)
jmp 0x89855
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x160(%rbp)
movl %eax, -0x164(%rbp)
jmp 0x89849
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x160(%rbp)
movl %eax, -0x164(%rbp)
leaq -0x258(%rbp), %rdi
callq 0x70ea0
jmp 0x89849
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x160(%rbp)
movl %eax, -0x164(%rbp)
jmp 0x8981d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x160(%rbp)
movl %eax, -0x164(%rbp)
leaq -0x290(%rbp), %rdi
callq 0x6908
leaq -0x291(%rbp), %rdi
callq 0x6470
jmp 0x89849
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x160(%rbp)
movl %eax, -0x164(%rbp)
leaq -0x2e0(%rbp), %rdi
callq 0x70ea0
leaq -0x210(%rbp), %rdi
callq 0x26180
leaq -0x190(%rbp), %rdi
callq 0x6908
leaq -0x38(%rbp), %rdi
callq 0x5c1b0
movq -0x160(%rbp), %rdi
callq 0x67a0
nopw %cs:(%rax,%rax)