// File: aalto-speech[P]ftk/test/emtest.cc
// Function: FactorGraphTest1::test_method()
BOOST_AUTO_TEST_CASE(FactorGraphTest1)
{
    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("jaa", 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 0x49093(%rip), %rdi     # 0xcbf0a
leaq -0x50(%rbp), %rsi
callq 0xbfc00
movsd %xmm0, -0x430(%rbp)
movq %rax, -0x428(%rbp)
jmp 0x82e91
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 0x82ec5
movb -0x439(%rbp), %al
movq -0x438(%rbp), %rcx
movq %rcx, -0x70(%rbp)
movb %al, -0x68(%rbp)
movq $0x0, -0x88(%rbp)
leaq 0x49023(%rip), %rdi     # 0xcbf0e
leaq -0x88(%rbp), %rsi
callq 0xbfc40
movsd %xmm0, -0x450(%rbp)
movq %rax, -0x448(%rbp)
jmp 0x82f08
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 0x82f3c
movb -0x459(%rbp), %al
movq -0x458(%rbp), %rcx
movq %rcx, -0x98(%rbp)
movb %al, -0x90(%rbp)
movq $0x0, -0xb0(%rbp)
leaq 0x48fa9(%rip), %rdi     # 0xcbf11
leaq -0xb0(%rbp), %rsi
callq 0xbfc80
movsd %xmm0, -0x470(%rbp)
movq %rax, -0x468(%rbp)
jmp 0x82f85
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 0x82fc2
movb -0x479(%rbp), %al
movq -0x478(%rbp), %rcx
movq %rcx, -0xc0(%rbp)
movb %al, -0xb8(%rbp)
movq $0x0, -0xd8(%rbp)
leaq 0x48f24(%rip), %rdi     # 0xcbf12
leaq -0xd8(%rbp), %rsi
callq 0xbfc00
movsd %xmm0, -0x490(%rbp)
movq %rax, -0x488(%rbp)
jmp 0x8300b
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 0x83048
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 0x48e8b(%rip), %rsi     # 0xcbf0e
leaq -0x180(%rbp), %rdi
callq 0x65e0
jmp 0x83091
leaq 0x845a0(%rip), %rdx     # 0x107638
leaq -0x160(%rbp), %rdi
leaq -0x180(%rbp), %rsi
leaq -0x38(%rbp), %rcx
movl $0x7, %r8d
xorl %r9d, %r9d
callq 0x23750
jmp 0x830ba
leaq -0x180(%rbp), %rdi
callq 0x6908
leaq -0x181(%rbp), %rdi
callq 0x6470
movq 0x84517(%rip), %rax     # 0x1075f0
movq %rax, -0x4b0(%rbp)
leaq 0x48a81(%rip), %rsi     # 0xcbb68
leaq -0x198(%rbp), %rdi
movl $0xe, %edx
callq 0x70bd0
jmp 0x830fa
leaq -0x1a8(%rbp), %rdi
callq 0x70c00
jmp 0x83108
movq -0x4b0(%rbp), %rdi
leaq -0x198(%rbp), %rsi
movl $0x183, %edx            # imm = 0x183
leaq -0x1a8(%rbp), %rcx
callq 0x6840
jmp 0x83129
callq 0x70e90
movq %rax, -0x4b8(%rbp)
jmp 0x83137
movq -0x4b8(%rbp), %rsi
leaq 0x481e5(%rip), %rdx     # 0xcb32a
leaq -0x1d0(%rbp), %rdi
callq 0x70e50
jmp 0x83153
leaq 0x48a0e(%rip), %rsi     # 0xcbb68
leaq -0x1e0(%rbp), %rdi
movl $0xe, %edx
callq 0x70bd0
jmp 0x8316d
movl $0x5, -0x1e4(%rbp)
leaq -0x120(%rbp), %rdi
callq 0x26b90
movl %eax, -0x1e8(%rbp)
leaq 0x48d86(%rip), %rcx     # 0xcbf16
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x1e8(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x48c24(%rip), %rcx     # 0xcbdcd
movq %rcx, (%rax)
leaq -0x1d0(%rbp), %rdi
leaq -0x1e0(%rbp), %rsi
movl $0x183, %edx            # imm = 0x183
movl $0x1, %ecx
movl $0x2, %r8d
leaq -0x1e4(%rbp), %r9
callq 0xbf480
jmp 0x831d8
leaq -0x1d0(%rbp), %rdi
callq 0x70ea0
callq 0x70ec0
movb %al, -0x4b9(%rbp)
jmp 0x831f1
movb -0x4b9(%rbp), %al
testb $0x1, %al
jne 0x830d2
jmp 0x83201
leaq -0x308(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x1ce60
jmp 0x83213
leaq -0x3a1(%rbp), %rdi
movq %rdi, -0x4c8(%rbp)
callq 0x67b0
movq -0x4c8(%rbp), %rdx
leaq 0x48cda(%rip), %rsi     # 0xcbf0e
leaq -0x3a0(%rbp), %rdi
callq 0x65e0
jmp 0x83242
leaq 0x843ef(%rip), %rdx     # 0x107638
leaq -0x380(%rbp), %rdi
leaq -0x3a0(%rbp), %rsi
leaq -0x308(%rbp), %rcx
xorl %r8d, %r8d
callq 0x23c10
jmp 0x83268
leaq -0x3a0(%rbp), %rdi
callq 0x6908
leaq -0x3a1(%rbp), %rdi
callq 0x6470
movq 0x84369(%rip), %rax     # 0x1075f0
movq %rax, -0x4d0(%rbp)
leaq 0x488d3(%rip), %rsi     # 0xcbb68
leaq -0x3b8(%rbp), %rdi
movl $0xe, %edx
callq 0x70bd0
jmp 0x832a8
leaq -0x3c8(%rbp), %rdi
callq 0x70c00
jmp 0x832b6
movq -0x4d0(%rbp), %rdi
leaq -0x3b8(%rbp), %rsi
movl $0x187, %edx            # imm = 0x187
leaq -0x3c8(%rbp), %rcx
callq 0x6840
jmp 0x832d7
leaq -0x160(%rbp), %rdi
leaq -0x380(%rbp), %rsi
callq 0x250b0
movb %al, -0x4d1(%rbp)
jmp 0x832f2
movb -0x4d1(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0x3e0(%rbp), %rdi
callq 0x70ed0
jmp 0x8330c
callq 0x70e90
movq %rax, -0x4e0(%rbp)
jmp 0x8331a
leaq 0x48c0a(%rip), %rsi     # 0xcbf2b
leaq -0x410(%rbp), %rdi
movl $0x15, %edx
callq 0x70bd0
jmp 0x83334
movq -0x4e0(%rbp), %rsi
leaq -0x400(%rbp), %rdi
leaq -0x410(%rbp), %rdx
callq 0x70f10
jmp 0x83350
leaq 0x48811(%rip), %rsi     # 0xcbb68
leaq -0x420(%rbp), %rdi
movl $0xe, %edx
callq 0x70bd0
jmp 0x8336a
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 $0x187, %ecx            # imm = 0x187
movl $0x1, %r8d
callq 0x6810
jmp 0x833a1
leaq -0x400(%rbp), %rdi
callq 0x70f50
leaq -0x3e0(%rbp), %rdi
callq 0x70f70
callq 0x70ec0
movb %al, -0x4e1(%rbp)
jmp 0x833c6
movb -0x4e1(%rbp), %al
testb $0x1, %al
jne 0x83280
jmp 0x833d6
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 0x8351a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x83443
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 0x8351a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x8350e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0x70ea0
jmp 0x8350e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x834a8
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 0x83502
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x834f6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x834ea
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)