// File: WeihuaZhu[P]hpc_prog2/./gtest/gtest-all.cc
// Function: testing::internal::TypedTestCasePState::VerifyRegisteredTestNames(char const*, int, char const*)
const char* TypedTestCasePState::VerifyRegisteredTestNames(
    const char* file, int line, const char* registered_tests) {
  typedef ::std::set<const char*>::const_iterator DefinedTestIter;
  registered_ = true;

  // Skip initial whitespace in registered_tests since some
  // preprocessors prefix stringizied literals with whitespace.
  registered_tests = SkipSpaces(registered_tests);

  Message errors;
  ::std::set<std::string> tests;
  for (const char* names = registered_tests; names != NULL;
       names = SkipComma(names)) {
    const std::string name = GetPrefixUntilComma(names);
    if (tests.count(name) != 0) {
      errors << "Test " << name << " is listed more than once.\n";
      continue;
    }

    bool found = false;
    for (DefinedTestIter it = defined_test_names_.begin();
         it != defined_test_names_.end();
         ++it) {
      if (name == *it) {
        found = true;
        break;
      }
    }

    if (found) {
      tests.insert(name);
    } else {
      errors << "No test named " << name
             << " can be found in this test case.\n";
    }
  }

  for (DefinedTestIter it = defined_test_names_.begin();
       it != defined_test_names_.end();
       ++it) {
    if (tests.count(*it) == 0) {
      errors << "You forgot to list test " << *it << ".\n";
    }
  }

  const std::string& errors_str = errors.GetString();
  if (errors_str != "") {
    fprintf(stderr, "%s %s", FormatFileLocation(file, line).c_str(),
            errors_str.c_str());
    fflush(stderr);
    posix::Abort();
  }

  return registered_tests;
}

// Assembly:
subq $0x1d8, %rsp            # imm = 0x1D8
movq %rdi, 0x1d0(%rsp)
movq %rsi, 0x1c8(%rsp)
movl %edx, 0x1c4(%rsp)
movq %rcx, 0x1b8(%rsp)
movq 0x1d0(%rsp), %rax
movq %rax, 0x98(%rsp)
movb $0x1, (%rax)
movq 0x1b8(%rsp), %rdi
callq 0x314c0
movq %rax, 0x1b8(%rsp)
leaq 0x1b0(%rsp), %rdi
callq 0x192e0
leaq 0x180(%rsp), %rdi
callq 0x3b090
movq 0x1b8(%rsp), %rax
movq %rax, 0x178(%rsp)
cmpq $0x0, 0x178(%rsp)
je 0x311ca
movq 0x178(%rsp), %rsi
leaq 0x158(%rsp), %rdi
callq 0x3b0a0
jmp 0x30f7e
leaq 0x180(%rsp), %rdi
leaq 0x158(%rsp), %rsi
callq 0x3b1e0
movq %rax, 0x90(%rsp)
jmp 0x30f9d
movq 0x90(%rsp), %rax
cmpq $0x0, %rax
je 0x31051
leaq 0x1cd05(%rip), %rsi     # 0x4dcbb
leaq 0x1b0(%rsp), %rdi
callq 0x35620
movq %rax, 0x88(%rsp)
jmp 0x30fcd
movq 0x88(%rsp), %rdi
leaq 0x158(%rsp), %rsi
callq 0x32e10
movq %rax, 0x80(%rsp)
jmp 0x30fec
movq 0x80(%rsp), %rdi
leaq 0x1ccc6(%rip), %rsi     # 0x4dcc1
callq 0x39f50
jmp 0x31002
movl $0x4, 0x148(%rsp)
jmp 0x31186
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x150(%rsp)
movl %eax, 0x14c(%rsp)
jmp 0x31498
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x150(%rsp)
movl %eax, 0x14c(%rsp)
leaq 0x158(%rsp), %rdi
callq 0xf698
jmp 0x31498
movq 0x98(%rsp), %rdi
movb $0x0, 0x147(%rsp)
addq $0x8, %rdi
callq 0x3b240
movq %rax, 0x138(%rsp)
movq 0x98(%rsp), %rdi
addq $0x8, %rdi
callq 0x3b290
movq %rax, 0x130(%rsp)
leaq 0x138(%rsp), %rdi
leaq 0x130(%rsp), %rsi
callq 0x3b270
testb $0x1, %al
jne 0x310a6
jmp 0x310ee
leaq 0x138(%rsp), %rdi
callq 0x3b2c0
movq (%rax), %rsi
leaq 0x158(%rsp), %rdi
callq 0x38240
movb %al, 0x7f(%rsp)
jmp 0x310c9
movb 0x7f(%rsp), %al
testb $0x1, %al
jne 0x310d3
jmp 0x310dd
movb $0x1, 0x147(%rsp)
jmp 0x310ee
jmp 0x310df
leaq 0x138(%rsp), %rdi
callq 0x3b2f0
jmp 0x31072
testb $0x1, 0x147(%rsp)
je 0x31132
leaq 0x180(%rsp), %rdi
leaq 0x158(%rsp), %rsi
callq 0x3b320
movb %dl, 0x6f(%rsp)
movq %rax, 0x70(%rsp)
jmp 0x31118
movb 0x6f(%rsp), %al
movq 0x70(%rsp), %rcx
movq %rcx, 0x120(%rsp)
movb %al, 0x128(%rsp)
jmp 0x3117b
leaq 0x1cba4(%rip), %rsi     # 0x4dcdd
leaq 0x1b0(%rsp), %rdi
callq 0x375c0
movq %rax, 0x60(%rsp)
jmp 0x3114d
movq 0x60(%rsp), %rdi
leaq 0x158(%rsp), %rsi
callq 0x32e10
movq %rax, 0x58(%rsp)
jmp 0x31166
movq 0x58(%rsp), %rdi
leaq 0x1cb7a(%rip), %rsi     # 0x4dcec
callq 0x3b380
jmp 0x31179
jmp 0x3117b
movl $0x0, 0x148(%rsp)
leaq 0x158(%rsp), %rdi
callq 0xf698
movl 0x148(%rsp), %eax
testl %eax, %eax
je 0x311a2
jmp 0x311a0
jmp 0x311a4
jmp 0x311a4
movq 0x178(%rsp), %rdi
callq 0x3b3c0
movq %rax, 0x50(%rsp)
jmp 0x311b8
movq 0x50(%rsp), %rax
movq %rax, 0x178(%rsp)
jmp 0x30f58
movq 0x98(%rsp), %rdi
addq $0x8, %rdi
callq 0x3b240
movq %rax, 0x118(%rsp)
movq 0x98(%rsp), %rdi
addq $0x8, %rdi
callq 0x3b290
movq %rax, 0x110(%rsp)
leaq 0x118(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x3b270
testb $0x1, %al
jne 0x3121a
jmp 0x3134d
leaq 0x118(%rsp), %rdi
callq 0x3b2c0
movq (%rax), %rax
movq %rax, 0x40(%rsp)
leaq 0xef(%rsp), %rdi
movq %rdi, 0x48(%rsp)
callq 0xf420
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
leaq 0xf0(%rsp), %rdi
callq 0x32980
jmp 0x3125a
leaq 0x180(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
callq 0x3b1e0
movq %rax, 0x38(%rsp)
jmp 0x31276
leaq 0xf0(%rsp), %rdi
callq 0xf698
leaq 0xef(%rsp), %rdi
callq 0xeb40
movq 0x38(%rsp), %rax
cmpq $0x0, %rax
jne 0x31339
leaq 0x1ca68(%rip), %rsi     # 0x4dd0e
leaq 0x1b0(%rsp), %rdi
callq 0x3b430
movq %rax, 0x30(%rsp)
jmp 0x312ba
leaq 0x118(%rsp), %rdi
callq 0x3b2c0
movq 0x30(%rsp), %rdi
movq %rax, %rsi
callq 0x33560
movq %rax, 0x28(%rsp)
jmp 0x312db
movq 0x28(%rsp), %rdi
leaq 0x1bdd0(%rip), %rsi     # 0x4d0b7
callq 0x33640
jmp 0x312ee
jmp 0x31339
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x150(%rsp)
movl %eax, 0x14c(%rsp)
jmp 0x31327
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x150(%rsp)
movl %eax, 0x14c(%rsp)
leaq 0xf0(%rsp), %rdi
callq 0xf698
leaq 0xef(%rsp), %rdi
callq 0xeb40
jmp 0x31498
jmp 0x3133b
leaq 0x118(%rsp), %rdi
callq 0x3b2f0
jmp 0x311e3
leaq 0xc0(%rsp), %rdi
leaq 0x1b0(%rsp), %rsi
callq 0x196c0
jmp 0x31364
leaq 0xc0(%rsp), %rax
movq %rax, 0xe0(%rsp)
movq 0xe0(%rsp), %rdi
leaq 0x1bdf3(%rip), %rsi     # 0x4d176
callq 0x335d0
movb %al, 0x27(%rsp)
jmp 0x3138e
movb 0x27(%rsp), %al
testb $0x1, %al
jne 0x3139b
jmp 0x3144e
movq 0x33c1e(%rip), %rax     # 0x64fc0
movq (%rax), %rax
movq %rax, 0x18(%rsp)
movq 0x1c8(%rsp), %rsi
movl 0x1c4(%rsp), %edx
leaq 0xa0(%rsp), %rdi
callq 0x1ef80
jmp 0x313c8
leaq 0xa0(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0xe370
movq %rax, 0x8(%rsp)
movq 0xe0(%rsp), %rdi
callq 0xe370
movq 0x18(%rsp), %rdi
movq 0x8(%rsp), %rdx
movq %rax, %rcx
leaq 0x1bb44(%rip), %rsi     # 0x4cf44
xorl %eax, %eax
callq 0xf070
movq 0x10(%rsp), %rdi
callq 0xf698
movq 0x33ba8(%rip), %rax     # 0x64fc0
movq (%rax), %rdi
callq 0xecc0
jmp 0x31422
callq 0x34a70
jmp 0x31429
jmp 0x3144e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x150(%rsp)
movl %eax, 0x14c(%rsp)
leaq 0xc0(%rsp), %rdi
callq 0xf698
jmp 0x31498
movq 0x1b8(%rsp), %rax
movq %rax, (%rsp)
movl $0x1, 0x148(%rsp)
leaq 0xc0(%rsp), %rdi
callq 0xf698
leaq 0x180(%rsp), %rdi
callq 0x3b470
leaq 0x1b0(%rsp), %rdi
callq 0x105d0
movq (%rsp), %rax
addq $0x1d8, %rsp            # imm = 0x1D8
retq
leaq 0x180(%rsp), %rdi
callq 0x3b470
leaq 0x1b0(%rsp), %rdi
callq 0x105d0
movq 0x150(%rsp), %rdi
callq 0xf410
nop