// File: minimind[P]simple-graph/unittest/graphvisitorignorekeytest.cpp
// Function: (anonymous namespace)::runTest((anonymous namespace)::NodeVisitor&, unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, SimpleGraph::NodeIterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, SimpleGraph::NodeIterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>> const&)
void runTest( struct NodeVisitor&                                                              nodeVisitor,
              const unsigned long                                                              nodeNo,
              const std::string&                                                               nodeToIgnore,
              const std::map< std::string, Graph< std::string, std::string >::node_iterator >& stringToIterators )
{
  std::stringstream nodeName;
  nodeName << "node " << nodeNo;

  std::map< std::string, Graph< std::string, std::string >::node_iterator >::const_iterator k = stringToIterators.find( nodeName.str() );
  REQUIRE( k != stringToIterators.end() );

  std::map< std::string, Graph< std::string, std::string >::node_iterator >::const_iterator m = stringToIterators.find( nodeToIgnore );
  REQUIRE( m != stringToIterators.end() );

  visit_edges_depth_first_ignore_key( k->second, nodeVisitor, m->second.key() );

  /*{ // DEBUG block
    std::set< std::string >::const_iterator j;
    for ( j = nodeVisitor.m_nodesVisited.begin(); j != nodeVisitor.m_nodesVisited.end(); ++j )
    {
      fprintf( stderr, "%s\n", j->c_str() );
    }
  }*/
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x820, %rsp            # imm = 0x820
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0xb3d0
leaq -0x198(%rbp), %rdi
leaq 0xa426(%rip), %rsi      # 0x7b6eb
callq 0xb520
movq %rax, -0x7b8(%rbp)
jmp 0x712d3
movq -0x7b8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0xb0f0
jmp 0x712e5
movq -0x20(%rbp), %rax
movq %rax, -0x7c0(%rbp)
leaq -0x1e0(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0xb510
jmp 0x71305
movq -0x7c0(%rbp), %rdi
leaq -0x1e0(%rbp), %rsi
callq 0x72820
movq %rax, -0x7c8(%rbp)
jmp 0x71321
movq -0x7c8(%rbp), %rax
movq %rax, -0x1c0(%rbp)
leaq -0x1e0(%rbp), %rdi
callq 0xb330
leaq 0xa0fa(%rip), %rsi      # 0x7b43c
leaq -0x4a8(%rbp), %rdi
movl $0x38, %edx
callq 0xf230
jmp 0x71355
leaq 0x8e90(%rip), %rsi      # 0x7a1ec
leaq 0xa38e(%rip), %rcx      # 0x7b6f1
leaq -0x480(%rbp), %rdi
leaq -0x4a8(%rbp), %rdx
xorl %r8d, %r8d
callq 0x104e0
jmp 0x7137b
leaq -0x4a8(%rbp), %rdi
callq 0x135e0
leaq -0x480(%rbp), %rdi
leaq -0x1c0(%rbp), %rsi
callq 0x72850
movq %rdx, -0x7d8(%rbp)
movq %rax, -0x7d0(%rbp)
jmp 0x713aa
movq -0x7d8(%rbp), %rax
movq -0x7d0(%rbp), %rcx
movq %rcx, -0x4b8(%rbp)
movq %rax, -0x4b0(%rbp)
movq -0x20(%rbp), %rdi
callq 0x728b0
movq %rax, -0x4c0(%rbp)
leaq -0x4b8(%rbp), %rdi
leaq -0x4c0(%rbp), %rsi
callq 0x72880
movq %rax, -0x7e0(%rbp)
jmp 0x713f2
movq -0x7e0(%rbp), %rdi
callq 0x107d0
jmp 0x71400
jmp 0x71499
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b0(%rbp)
movl %eax, -0x1b4(%rbp)
jmp 0x7176c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b0(%rbp)
movl %eax, -0x1b4(%rbp)
leaq -0x1e0(%rbp), %rdi
callq 0xb330
jmp 0x7176c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b0(%rbp)
movl %eax, -0x1b4(%rbp)
leaq -0x4a8(%rbp), %rdi
callq 0x135e0
jmp 0x7176c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b0(%rbp)
movl %eax, -0x1b4(%rbp)
movq -0x1b0(%rbp), %rdi
callq 0xb1e0
leaq -0x480(%rbp), %rdi
xorl %esi, %esi
callq 0x109d0
jmp 0x71490
callq 0xb870
jmp 0x71497
jmp 0x71499
leaq -0x480(%rbp), %rdi
callq 0x10ac0
movb %al, -0x7e1(%rbp)
jmp 0x714ad
movb -0x7e1(%rbp), %al
testb $0x1, %al
jne 0x714b9
jmp 0x714f5
callq 0x14760
jmp 0x714f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b0(%rbp)
movl %eax, -0x1b4(%rbp)
callq 0xb870
jmp 0x714f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b0(%rbp)
movl %eax, -0x1b4(%rbp)
jmp 0x71609
jmp 0x71609
leaq -0x480(%rbp), %rdi
callq 0x10a80
jmp 0x71503
leaq -0x480(%rbp), %rdi
callq 0x14670
xorl %edi, %edi
callq 0x55470
testb $0x1, %al
jne 0x7133b
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x72820
movq %rax, -0x7f0(%rbp)
jmp 0x71534
movq -0x7f0(%rbp), %rax
movq %rax, -0x4c8(%rbp)
leaq 0x9ef3(%rip), %rsi      # 0x7b43c
leaq -0x790(%rbp), %rdi
movl $0x3b, %edx
callq 0xf230
jmp 0x7155c
leaq 0x8c89(%rip), %rsi      # 0x7a1ec
leaq 0xa1a4(%rip), %rcx      # 0x7b70e
leaq -0x768(%rbp), %rdi
leaq -0x790(%rbp), %rdx
xorl %r8d, %r8d
callq 0x104e0
jmp 0x71582
leaq -0x790(%rbp), %rdi
callq 0x135e0
leaq -0x768(%rbp), %rdi
leaq -0x4c8(%rbp), %rsi
callq 0x72850
movq %rdx, -0x800(%rbp)
movq %rax, -0x7f8(%rbp)
jmp 0x715b1
movq -0x800(%rbp), %rax
movq -0x7f8(%rbp), %rcx
movq %rcx, -0x7a0(%rbp)
movq %rax, -0x798(%rbp)
movq -0x20(%rbp), %rdi
callq 0x728b0
movq %rax, -0x7a8(%rbp)
leaq -0x7a0(%rbp), %rdi
leaq -0x7a8(%rbp), %rsi
callq 0x72880
movq %rax, -0x808(%rbp)
jmp 0x715f9
movq -0x808(%rbp), %rdi
callq 0x107d0
jmp 0x71607
jmp 0x71674
leaq -0x480(%rbp), %rdi
callq 0x14670
jmp 0x7176c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b0(%rbp)
movl %eax, -0x1b4(%rbp)
leaq -0x790(%rbp), %rdi
callq 0x135e0
jmp 0x7176c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b0(%rbp)
movl %eax, -0x1b4(%rbp)
movq -0x1b0(%rbp), %rdi
callq 0xb1e0
leaq -0x768(%rbp), %rdi
xorl %esi, %esi
callq 0x109d0
jmp 0x7166b
callq 0xb870
jmp 0x71672
jmp 0x71674
leaq -0x768(%rbp), %rdi
callq 0x10ac0
movb %al, -0x809(%rbp)
jmp 0x71688
movb -0x809(%rbp), %al
testb $0x1, %al
jne 0x71694
jmp 0x716d0
callq 0x14760
jmp 0x716d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b0(%rbp)
movl %eax, -0x1b4(%rbp)
callq 0xb870
jmp 0x716cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b0(%rbp)
movl %eax, -0x1b4(%rbp)
jmp 0x71760
jmp 0x71760
leaq -0x768(%rbp), %rdi
callq 0x10a80
jmp 0x716de
leaq -0x768(%rbp), %rdi
callq 0x14670
xorl %edi, %edi
callq 0x55470
testb $0x1, %al
jne 0x71542
leaq -0x1c0(%rbp), %rdi
callq 0x728e0
movq 0x20(%rax), %rax
movq %rax, -0x7b0(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x818(%rbp)
leaq -0x4c8(%rbp), %rdi
callq 0x728e0
movq %rax, %rdi
addq $0x20, %rdi
callq 0x55570
movq -0x818(%rbp), %rsi
movq %rax, %rdx
movq -0x7b0(%rbp), %rdi
callq 0x717b0
jmp 0x7174b
leaq -0x1a8(%rbp), %rdi
callq 0xb430
addq $0x820, %rsp            # imm = 0x820
popq %rbp
retq
leaq -0x768(%rbp), %rdi
callq 0x14670
leaq -0x1a8(%rbp), %rdi
callq 0xb430
movq -0x1b0(%rbp), %rdi
callq 0xb920
movq %rax, %rdi
callq 0x13830
nopl (%rax)