// File: WeihuaZhu[P]hpc_prog2/./gtest/gtest-all.cc
// Function: testing::Test::HasSameFixtureClass()
bool Test::HasSameFixtureClass() {
  internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
  const TestCase* const test_case = impl->current_test_case();

  // Info about the first test in the current test case.
  const TestInfo* const first_test_info = test_case->test_info_list()[0];
  const internal::TypeId first_fixture_id = first_test_info->fixture_class_id_;
  const char* const first_test_name = first_test_info->name();

  // Info about the current test.
  const TestInfo* const this_test_info = impl->current_test_info();
  const internal::TypeId this_fixture_id = this_test_info->fixture_class_id_;
  const char* const this_test_name = this_test_info->name();

  if (this_fixture_id != first_fixture_id) {
    // Is the first test defined using TEST?
    const bool first_is_TEST = first_fixture_id == internal::GetTestTypeId();
    // Is this test defined using TEST?
    const bool this_is_TEST = this_fixture_id == internal::GetTestTypeId();

    if (first_is_TEST || this_is_TEST) {
      // The user mixed TEST and TEST_F in this test case - we'll tell
      // him/her how to fix it.

      // Gets the name of the TEST and the name of the TEST_F.  Note
      // that first_is_TEST and this_is_TEST cannot both be true, as
      // the fixture IDs are different for the two tests.
      const char* const TEST_name =
          first_is_TEST ? first_test_name : this_test_name;
      const char* const TEST_F_name =
          first_is_TEST ? this_test_name : first_test_name;

      ADD_FAILURE()
          << "All tests in the same test case must use the same test fixture\n"
          << "class, so mixing TEST_F and TEST in the same test case is\n"
          << "illegal.  In test case " << this_test_info->test_case_name()
          << ",\n"
          << "test " << TEST_F_name << " is defined using TEST_F but\n"
          << "test " << TEST_name << " is defined using TEST.  You probably\n"
          << "want to change the TEST to TEST_F or move it to another test\n"
          << "case.";
    } else {
      // The user defined two fixture classes with the same name in
      // two namespaces - we'll tell him/her how to fix it.
      ADD_FAILURE()
          << "All tests in the same test case must use the same test fixture\n"
          << "class.  However, in test case "
          << this_test_info->test_case_name() << ",\n"
          << "you defined test " << first_test_name
          << " and test " << this_test_name << "\n"
          << "using two different test fixture classes.  This can happen if\n"
          << "the two classes are from different namespaces or translation\n"
          << "units and have the same name.  You should probably rename one\n"
          << "of the classes to put the tests into different test cases.";
    }
    return false;
  }

  return true;
}

// Assembly:
subq $0x1b8, %rsp            # imm = 0x1B8
callq 0x32df0
movq %rax, 0x1a8(%rsp)
movq 0x1a8(%rsp), %rdi
callq 0x354c0
movq %rax, 0x1a0(%rsp)
movq 0x1a0(%rsp), %rdi
callq 0x354e0
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x354f0
movq (%rax), %rax
movq %rax, 0x198(%rsp)
movq 0x198(%rsp), %rax
movq 0x50(%rax), %rax
movq %rax, 0x190(%rsp)
movq 0x198(%rsp), %rdi
callq 0x35510
movq %rax, 0x188(%rsp)
movq 0x1a8(%rsp), %rdi
callq 0x35530
movq %rax, 0x180(%rsp)
movq 0x180(%rsp), %rax
movq 0x50(%rax), %rax
movq %rax, 0x178(%rsp)
movq 0x180(%rsp), %rdi
callq 0x35510
movq %rax, 0x170(%rsp)
movq 0x178(%rsp), %rax
cmpq 0x190(%rsp), %rax
je 0x1e378
movq 0x190(%rsp), %rax
movq %rax, 0x108(%rsp)
callq 0x183b0
movq %rax, %rcx
movq 0x108(%rsp), %rax
cmpq %rcx, %rax
sete %al
andb $0x1, %al
movb %al, 0x16f(%rsp)
movq 0x178(%rsp), %rax
movq %rax, 0x110(%rsp)
callq 0x183b0
movq %rax, %rcx
movq 0x110(%rsp), %rax
cmpq %rcx, %rax
sete %al
andb $0x1, %al
movb %al, 0x16e(%rsp)
testb $0x1, 0x16f(%rsp)
jne 0x1de80
testb $0x1, 0x16e(%rsp)
je 0x1e163
testb $0x1, 0x16f(%rsp)
je 0x1de9c
movq 0x188(%rsp), %rax
movq %rax, 0x100(%rsp)
jmp 0x1deac
movq 0x170(%rsp), %rax
movq %rax, 0x100(%rsp)
movq 0x100(%rsp), %rax
movq %rax, 0x160(%rsp)
testb $0x1, 0x16f(%rsp)
je 0x1ded8
movq 0x170(%rsp), %rax
movq %rax, 0xf8(%rsp)
jmp 0x1dee8
movq 0x188(%rsp), %rax
movq %rax, 0xf8(%rsp)
movq 0xf8(%rsp), %rax
movq %rax, 0x158(%rsp)
leaq 0x150(%rsp), %rdi
movq %rdi, 0xe8(%rsp)
callq 0x192e0
movq 0xe8(%rsp), %rdi
leaq 0x2ec87(%rip), %rsi     # 0x4cba3
callq 0x35550
movq %rax, 0xf0(%rsp)
jmp 0x1df2b
movq 0xf0(%rsp), %rdi
leaq 0x2eca9(%rip), %rsi     # 0x4cbe3
callq 0x35590
movq %rax, 0xe0(%rsp)
jmp 0x1df49
movq 0xe0(%rsp), %rdi
leaq 0x2ecc6(%rip), %rsi     # 0x4cc1e
callq 0x355d0
movq %rax, 0xd8(%rsp)
jmp 0x1df67
movq 0x180(%rsp), %rdi
callq 0x35610
movq %rax, 0xd0(%rsp)
jmp 0x1df7e
movq 0xd8(%rsp), %rdi
movq 0xd0(%rsp), %rax
movq %rax, 0x138(%rsp)
leaq 0x138(%rsp), %rsi
callq 0x33560
movq %rax, 0xc8(%rsp)
jmp 0x1dfad
movq 0xc8(%rsp), %rdi
leaq 0x2eb10(%rip), %rsi     # 0x4cacc
callq 0x33640
movq %rax, 0xc0(%rsp)
jmp 0x1dfcb
movq 0xc0(%rsp), %rdi
leaq 0x2ed10(%rip), %rsi     # 0x4ccea
callq 0x35620
movq %rax, 0xb8(%rsp)
jmp 0x1dfe9
movq 0xb8(%rsp), %rdi
leaq 0x158(%rsp), %rsi
callq 0x33560
movq %rax, 0xb0(%rsp)
jmp 0x1e008
movq 0xb0(%rsp), %rdi
leaq 0x2ec1f(%rip), %rsi     # 0x4cc36
callq 0x35660
movq %rax, 0xa8(%rsp)
jmp 0x1e026
movq 0xa8(%rsp), %rdi
leaq 0x2ecb5(%rip), %rsi     # 0x4ccea
callq 0x35620
movq %rax, 0xa0(%rsp)
jmp 0x1e044
movq 0xa0(%rsp), %rdi
leaq 0x160(%rsp), %rsi
callq 0x33560
movq %rax, 0x98(%rsp)
jmp 0x1e063
movq 0x98(%rsp), %rdi
leaq 0x2ebe2(%rip), %rsi     # 0x4cc54
callq 0x356a0
movq %rax, 0x90(%rsp)
jmp 0x1e081
movq 0x90(%rsp), %rdi
leaq 0x2ebeb(%rip), %rsi     # 0x4cc7b
callq 0x356e0
movq %rax, 0x88(%rsp)
jmp 0x1e09f
movq 0x88(%rsp), %rdi
leaq 0x2ec0b(%rip), %rsi     # 0x4ccb9
callq 0x35620
movq %rax, 0x80(%rsp)
jmp 0x1e0bd
leaq 0x2e83b(%rip), %rdx     # 0x4c8ff
leaq 0x2ead1(%rip), %r8      # 0x4cb9c
leaq 0x130(%rsp), %rdi
movl $0x1, %esi
movl $0xd85, %ecx            # imm = 0xD85
callq 0x16410
jmp 0x1e0e4
movq 0x80(%rsp), %rsi
leaq 0x130(%rsp), %rdi
callq 0x164e0
jmp 0x1e0fb
leaq 0x130(%rsp), %rdi
callq 0x164a0
leaq 0x150(%rsp), %rdi
callq 0x105d0
jmp 0x1e36e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x148(%rsp)
movl %eax, 0x144(%rsp)
jmp 0x1e151
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x148(%rsp)
movl %eax, 0x144(%rsp)
leaq 0x130(%rsp), %rdi
callq 0x164a0
leaq 0x150(%rsp), %rdi
callq 0x105d0
jmp 0x1e391
leaq 0x128(%rsp), %rdi
movq %rdi, 0x70(%rsp)
callq 0x192e0
movq 0x70(%rsp), %rdi
leaq 0x2ea22(%rip), %rsi     # 0x4cba3
callq 0x35550
movq %rax, 0x78(%rsp)
jmp 0x1e18d
movq 0x78(%rsp), %rdi
leaq 0x2eb26(%rip), %rsi     # 0x4ccbf
callq 0x35720
movq %rax, 0x68(%rsp)
jmp 0x1e1a5
movq 0x180(%rsp), %rdi
callq 0x35610
movq %rax, 0x60(%rsp)
jmp 0x1e1b9
movq 0x68(%rsp), %rdi
movq 0x60(%rsp), %rax
movq %rax, 0x120(%rsp)
leaq 0x120(%rsp), %rsi
callq 0x33560
movq %rax, 0x58(%rsp)
jmp 0x1e1df
movq 0x58(%rsp), %rdi
leaq 0x2e8e1(%rip), %rsi     # 0x4cacc
callq 0x33640
movq %rax, 0x50(%rsp)
jmp 0x1e1f7
movq 0x50(%rsp), %rdi
leaq 0x2eadb(%rip), %rsi     # 0x4ccde
callq 0x34f80
movq %rax, 0x48(%rsp)
jmp 0x1e20f
movq 0x48(%rsp), %rdi
leaq 0x188(%rsp), %rsi
callq 0x33560
movq %rax, 0x40(%rsp)
jmp 0x1e228
movq 0x40(%rsp), %rdi
leaq 0x2eabc(%rip), %rsi     # 0x4ccf0
callq 0x10580
movq %rax, 0x38(%rsp)
jmp 0x1e240
movq 0x38(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x33560
movq %rax, 0x30(%rsp)
jmp 0x1e259
movq 0x30(%rsp), %rdi
leaq 0x2ef10(%rip), %rsi     # 0x4d175
callq 0x32e50
movq %rax, 0x28(%rsp)
jmp 0x1e271
movq 0x28(%rsp), %rdi
leaq 0x2ea7e(%rip), %rsi     # 0x4ccfb
callq 0x35760
movq %rax, 0x20(%rsp)
jmp 0x1e289
movq 0x20(%rsp), %rdi
leaq 0x2eaa5(%rip), %rsi     # 0x4cd3a
callq 0x356e0
movq %rax, 0x18(%rsp)
jmp 0x1e2a1
movq 0x18(%rsp), %rdi
leaq 0x2eacb(%rip), %rsi     # 0x4cd78
callq 0x35760
movq %rax, 0x10(%rsp)
jmp 0x1e2b9
movq 0x10(%rsp), %rdi
leaq 0x2eaf2(%rip), %rsi     # 0x4cdb7
callq 0x35590
movq %rax, 0x8(%rsp)
jmp 0x1e2d1
leaq 0x2e627(%rip), %rdx     # 0x4c8ff
leaq 0x2e8bd(%rip), %r8      # 0x4cb9c
leaq 0x118(%rsp), %rdi
movl $0x1, %esi
movl $0xd91, %ecx            # imm = 0xD91
callq 0x16410
jmp 0x1e2f8
movq 0x8(%rsp), %rsi
leaq 0x118(%rsp), %rdi
callq 0x164e0
jmp 0x1e30c
leaq 0x118(%rsp), %rdi
callq 0x164a0
leaq 0x128(%rsp), %rdi
callq 0x105d0
jmp 0x1e36e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x148(%rsp)
movl %eax, 0x144(%rsp)
jmp 0x1e35f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x148(%rsp)
movl %eax, 0x144(%rsp)
leaq 0x118(%rsp), %rdi
callq 0x164a0
leaq 0x128(%rsp), %rdi
callq 0x105d0
jmp 0x1e391
movb $0x0, 0x1b7(%rsp)
jmp 0x1e380
movb $0x1, 0x1b7(%rsp)
movb 0x1b7(%rsp), %al
andb $0x1, %al
addq $0x1b8, %rsp            # imm = 0x1B8
retq
movq 0x148(%rsp), %rdi
callq 0xf410
nop