// File: aalto-speech[P]ftk/test/emtest.cc
// Function: FactorGraphTest2::test_method()
BOOST_AUTO_TEST_CASE(FactorGraphTest2)
{
    map<std::string, flt_type> vocab;
    vocab.insert(make_pair("hal", 0.0));
    vocab.insert(make_pair("halojaa", 0.0));
    vocab.insert(make_pair("ojaa", 0.0));
    vocab.insert(make_pair("oj", 0.0));

    FactorGraph fg("halojaa", start_end, vocab, 7);
    BOOST_CHECK_EQUAL(5, (int)fg.nodes.size());

    StringSet ssvocab(vocab);
    FactorGraph ssfg("halojaa", start_end, ssvocab);
    BOOST_CHECK(fg.assert_equal(ssfg));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x500, %rsp            # imm = 0x500
movq %rdi, -0x8(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x530a0
movq $0x0, -0x50(%rbp)
leaq 0x483b3(%rip), %rdi     # 0xcbf0a
leaq -0x50(%rbp), %rsi
callq 0xbfc00
movsd %xmm0, -0x430(%rbp)
movq %rax, -0x428(%rbp)
jmp 0x83b71
movsd -0x430(%rbp), %xmm0
movq -0x428(%rbp), %rax
movq %rax, -0x48(%rbp)
movsd %xmm0, -0x40(%rbp)
leaq -0x38(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0xbfbc0
movb %dl, -0x439(%rbp)
movq %rax, -0x438(%rbp)
jmp 0x83ba5
movb -0x439(%rbp), %al
movq -0x438(%rbp), %rcx
movq %rcx, -0x70(%rbp)
movb %al, -0x68(%rbp)
movq $0x0, -0x88(%rbp)
leaq 0x48343(%rip), %rdi     # 0xcbf0e
leaq -0x88(%rbp), %rsi
callq 0xbfc40
movsd %xmm0, -0x450(%rbp)
movq %rax, -0x448(%rbp)
jmp 0x83be8
movsd -0x450(%rbp), %xmm0
movq -0x448(%rbp), %rax
movq %rax, -0x80(%rbp)
movsd %xmm0, -0x78(%rbp)
leaq -0x38(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0xbfbc0
movb %dl, -0x459(%rbp)
movq %rax, -0x458(%rbp)
jmp 0x83c1c
movb -0x459(%rbp), %al
movq -0x458(%rbp), %rcx
movq %rcx, -0x98(%rbp)
movb %al, -0x90(%rbp)
movq $0x0, -0xb0(%rbp)
leaq 0x482c9(%rip), %rdi     # 0xcbf11
leaq -0xb0(%rbp), %rsi
callq 0xbfc80
movsd %xmm0, -0x470(%rbp)
movq %rax, -0x468(%rbp)
jmp 0x83c65
movsd -0x470(%rbp), %xmm0
movq -0x468(%rbp), %rax
movq %rax, -0xa8(%rbp)
movsd %xmm0, -0xa0(%rbp)
leaq -0x38(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0xbfbc0
movb %dl, -0x479(%rbp)
movq %rax, -0x478(%rbp)
jmp 0x83ca2
movb -0x479(%rbp), %al
movq -0x478(%rbp), %rcx
movq %rcx, -0xc0(%rbp)
movb %al, -0xb8(%rbp)
movq $0x0, -0xd8(%rbp)
leaq 0x48273(%rip), %rdi     # 0xcbf41
leaq -0xd8(%rbp), %rsi
callq 0xbfcc0
movsd %xmm0, -0x490(%rbp)
movq %rax, -0x488(%rbp)
jmp 0x83ceb
movsd -0x490(%rbp), %xmm0
movq -0x488(%rbp), %rax
movq %rax, -0xd0(%rbp)
movsd %xmm0, -0xc8(%rbp)
leaq -0x38(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0xbfbc0
movb %dl, -0x499(%rbp)
movq %rax, -0x498(%rbp)
jmp 0x83d28
movb -0x499(%rbp), %al
movq -0x498(%rbp), %rcx
movq %rcx, -0xe8(%rbp)
movb %al, -0xe0(%rbp)
leaq -0x181(%rbp), %rdi
movq %rdi, -0x4a8(%rbp)
callq 0x67b0
movq -0x4a8(%rbp), %rdx
leaq 0x481ab(%rip), %rsi     # 0xcbf0e
leaq -0x180(%rbp), %rdi
callq 0x65e0
jmp 0x83d71
leaq 0x838c0(%rip), %rdx     # 0x107638
leaq -0x160(%rbp), %rdi
leaq -0x180(%rbp), %rsi
leaq -0x38(%rbp), %rcx
movl $0x7, %r8d
xorl %r9d, %r9d
callq 0x23750
jmp 0x83d9a
leaq -0x180(%rbp), %rdi
callq 0x6908
leaq -0x181(%rbp), %rdi
callq 0x6470
movq 0x83837(%rip), %rax     # 0x1075f0
movq %rax, -0x4b0(%rbp)
leaq 0x47da1(%rip), %rsi     # 0xcbb68
leaq -0x198(%rbp), %rdi
movl $0xe, %edx
callq 0x70bd0
jmp 0x83dda
leaq -0x1a8(%rbp), %rdi
callq 0x70c00
jmp 0x83de8
movq -0x4b0(%rbp), %rdi
leaq -0x198(%rbp), %rsi
movl $0x195, %edx            # imm = 0x195
leaq -0x1a8(%rbp), %rcx
callq 0x6840
jmp 0x83e09
callq 0x70e90
movq %rax, -0x4b8(%rbp)
jmp 0x83e17
movq -0x4b8(%rbp), %rsi
leaq 0x47505(%rip), %rdx     # 0xcb32a
leaq -0x1d0(%rbp), %rdi
callq 0x70e50
jmp 0x83e33
leaq 0x47d2e(%rip), %rsi     # 0xcbb68
leaq -0x1e0(%rbp), %rdi
movl $0xe, %edx
callq 0x70bd0
jmp 0x83e4d
movl $0x5, -0x1e4(%rbp)
leaq -0x120(%rbp), %rdi
callq 0x26b90
movl %eax, -0x1e8(%rbp)
leaq 0x480a6(%rip), %rcx     # 0xcbf16
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x1e8(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x47f44(%rip), %rcx     # 0xcbdcd
movq %rcx, (%rax)
leaq -0x1d0(%rbp), %rdi
leaq -0x1e0(%rbp), %rsi
movl $0x195, %edx            # imm = 0x195
movl $0x1, %ecx
movl $0x2, %r8d
leaq -0x1e4(%rbp), %r9
callq 0xbf480
jmp 0x83eb8
leaq -0x1d0(%rbp), %rdi
callq 0x70ea0
callq 0x70ec0
movb %al, -0x4b9(%rbp)
jmp 0x83ed1
movb -0x4b9(%rbp), %al
testb $0x1, %al
jne 0x83db2
jmp 0x83ee1
leaq -0x308(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x1ce60
jmp 0x83ef3
leaq -0x3a1(%rbp), %rdi
movq %rdi, -0x4c8(%rbp)
callq 0x67b0
movq -0x4c8(%rbp), %rdx
leaq 0x47ffa(%rip), %rsi     # 0xcbf0e
leaq -0x3a0(%rbp), %rdi
callq 0x65e0
jmp 0x83f22
leaq 0x8370f(%rip), %rdx     # 0x107638
leaq -0x380(%rbp), %rdi
leaq -0x3a0(%rbp), %rsi
leaq -0x308(%rbp), %rcx
xorl %r8d, %r8d
callq 0x23c10
jmp 0x83f48
leaq -0x3a0(%rbp), %rdi
callq 0x6908
leaq -0x3a1(%rbp), %rdi
callq 0x6470
movq 0x83689(%rip), %rax     # 0x1075f0
movq %rax, -0x4d0(%rbp)
leaq 0x47bf3(%rip), %rsi     # 0xcbb68
leaq -0x3b8(%rbp), %rdi
movl $0xe, %edx
callq 0x70bd0
jmp 0x83f88
leaq -0x3c8(%rbp), %rdi
callq 0x70c00
jmp 0x83f96
movq -0x4d0(%rbp), %rdi
leaq -0x3b8(%rbp), %rsi
movl $0x199, %edx            # imm = 0x199
leaq -0x3c8(%rbp), %rcx
callq 0x6840
jmp 0x83fb7
leaq -0x160(%rbp), %rdi
leaq -0x380(%rbp), %rsi
callq 0x250b0
movb %al, -0x4d1(%rbp)
jmp 0x83fd2
movb -0x4d1(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0x3e0(%rbp), %rdi
callq 0x70ed0
jmp 0x83fec
callq 0x70e90
movq %rax, -0x4e0(%rbp)
jmp 0x83ffa
leaq 0x47f2a(%rip), %rsi     # 0xcbf2b
leaq -0x410(%rbp), %rdi
movl $0x15, %edx
callq 0x70bd0
jmp 0x84014
movq -0x4e0(%rbp), %rsi
leaq -0x400(%rbp), %rdi
leaq -0x410(%rbp), %rdx
callq 0x70f10
jmp 0x84030
leaq 0x47b31(%rip), %rsi     # 0xcbb68
leaq -0x420(%rbp), %rdi
movl $0xe, %edx
callq 0x70bd0
jmp 0x8404a
movq %rsp, %rax
movq $0x0, (%rax)
xorl %r9d, %r9d
movb %r9b, %al
leaq -0x3e0(%rbp), %rdi
leaq -0x400(%rbp), %rsi
leaq -0x420(%rbp), %rdx
movl $0x199, %ecx            # imm = 0x199
movl $0x1, %r8d
callq 0x6810
jmp 0x84081
leaq -0x400(%rbp), %rdi
callq 0x70f50
leaq -0x3e0(%rbp), %rdi
callq 0x70f70
callq 0x70ec0
movb %al, -0x4e1(%rbp)
jmp 0x840a6
movb -0x4e1(%rbp), %al
testb $0x1, %al
jne 0x83f60
jmp 0x840b6
leaq -0x380(%rbp), %rdi
callq 0x26180
leaq -0x308(%rbp), %rdi
callq 0x1d3d0
leaq -0x160(%rbp), %rdi
callq 0x26180
leaq -0x38(%rbp), %rdi
callq 0x4cf70
addq $0x500, %rsp            # imm = 0x500
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x841fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x84123
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x180(%rbp), %rdi
callq 0x6908
leaq -0x181(%rbp), %rdi
callq 0x6470
jmp 0x841fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x841ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0x70ea0
jmp 0x841ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x84188
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x3a0(%rbp), %rdi
callq 0x6908
leaq -0x3a1(%rbp), %rdi
callq 0x6470
jmp 0x841e2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x841d6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x841ca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x400(%rbp), %rdi
callq 0x70f50
leaq -0x3e0(%rbp), %rdi
callq 0x70f70
leaq -0x380(%rbp), %rdi
callq 0x26180
leaq -0x308(%rbp), %rdi
callq 0x1d3d0
leaq -0x160(%rbp), %rdi
callq 0x26180
leaq -0x38(%rbp), %rdi
callq 0x4cf70
movq -0x58(%rbp), %rdi
callq 0x67a0
nopl (%rax)