// File: /workspace/github_cpp_makefile_star2_O2/halfflat[P]tinyopt/test/googletest/googletest/src/gtest.cc
// Function: testing::Test::HasSameFixtureClass()
bool Test::HasSameFixtureClass() {
  internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
  const TestSuite* const test_suite = impl->current_test_suite();

  // Info about the first test in the current test suite.
  const TestInfo* const first_test_info = test_suite->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) {
      // Both TEST and TEST_F appear in same test suite, which is incorrect.
      // Tell the user how to fix this.

      // 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 suite must use the same test fixture\n"
          << "class, so mixing TEST_F and TEST in the same test suite is\n"
          << "illegal.  In test suite " << this_test_info->test_suite_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 {
      // Two fixture classes with the same name appear in two different
      // namespaces, which is not allowed. Tell the user how to fix this.
      ADD_FAILURE()
          << "All tests in the same test suite must use the same test fixture\n"
          << "class.  However, in test suite "
          << this_test_info->test_suite_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 suites.";
    }
    return false;
  }

  return true;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x40, %rsp
callq 0x4c032
movq 0x168(%rax), %rcx
movq 0x30(%rcx), %rcx
movq (%rcx), %rcx
movq 0x78(%rcx), %r15
movq 0x20(%rcx), %rcx
movq %rcx, 0x30(%rsp)
movq 0x170(%rax), %r13
movq 0x78(%r13), %r12
movq 0x20(%r13), %rax
movq %rax, 0x28(%rsp)
cmpq %r15, %r12
je 0x404e1
leaq 0x447cc(%rip), %rdx     # 0x84a41
cmpq %rdx, %r15
je 0x403a5
cmpq %rdx, %r12
je 0x403a5
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
callq 0x3d5f6
movq (%rbx), %r14
leaq 0x10(%r14), %rbx
leaq 0x1ba62(%rip), %rsi     # 0x5bd04
movq %rbx, %rdi
callq 0xd550
leaq 0x1bb79(%rip), %rsi     # 0x5be2a
movq %rbx, %rdi
callq 0xd550
movq (%r13), %rax
leaq 0x20(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x4c162
leaq 0x1c3dd(%rip), %rsi     # 0x5c6b3
movq %rax, %rdi
callq 0x4cb70
leaq 0x1bb65(%rip), %rsi     # 0x5be4a
movq %rax, %rdi
callq 0x4defe
leaq 0x30(%rsp), %rsi
movq %rax, %rdi
callq 0x4c162
leaq 0x1bb5b(%rip), %rsi     # 0x5be5c
movq %rax, %rdi
callq 0x4ce28
leaq 0x28(%rsp), %rsi
movq %rax, %rdi
callq 0x4c162
leaq 0x18e3c(%rip), %rsi     # 0x59159
movq %rax, %rdi
callq 0x4c188
leaq 0x1bb3b(%rip), %rsi     # 0x5be67
movq %rax, %rdi
callq 0x4df14
leaq 0x1bb6b(%rip), %rsi     # 0x5bea6
movq %rax, %rdi
callq 0x4ded2
leaq 0x1bb9a(%rip), %rsi     # 0x5bee4
movq %rax, %rdi
callq 0x4df14
leaq 0x1bbca(%rip), %rsi     # 0x5bf23
movq %rax, %rdi
callq 0x4de90
movq %rax, %rbx
leaq 0x1b390(%rip), %rdx     # 0x5b6fb
leaq 0x1bab1(%rip), %r8      # 0x5be23
leaq 0x8(%rsp), %rdi
pushq $0x1
popq %rsi
movl $0xa0b, %ecx            # imm = 0xA0B
callq 0x3b5b6
leaq 0x8(%rsp), %rdi
movq %rbx, %rsi
callq 0x39b08
leaq 0x8(%rsp), %rdi
callq 0x3b616
movq 0x10(%rsp), %rdi
jmp 0x404d6
cmpq %rdx, %r15
movq %rax, %rdx
cmoveq %rcx, %rdx
movq %rdx, 0x10(%rsp)
cmoveq %rax, %rcx
movq %rcx, 0x20(%rsp)
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
callq 0x3d5f6
movq (%rbx), %r14
leaq 0x10(%r14), %rbx
leaq 0x1b92c(%rip), %rsi     # 0x5bd04
movq %rbx, %rdi
callq 0xd550
leaq 0x1b95e(%rip), %rsi     # 0x5bd45
movq %rbx, %rdi
callq 0xd550
leaq 0x1b98b(%rip), %rsi     # 0x5bd81
movq %rbx, %rdi
callq 0xd550
movq (%r13), %rax
leaq 0x38(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x8(%rsp), %rdi
callq 0x4c162
leaq 0x1c298(%rip), %rsi     # 0x5c6b3
movq %rax, %rdi
callq 0x4cb70
leaq 0x1ba2c(%rip), %rsi     # 0x5be56
movq %rax, %rdi
callq 0x4c542
leaq 0x20(%rsp), %rsi
movq %rax, %rdi
callq 0x4c162
leaq 0x1b954(%rip), %rsi     # 0x5bd9a
movq %rax, %rdi
callq 0x4dea6
leaq 0x1ba01(%rip), %rsi     # 0x5be56
movq %rax, %rdi
callq 0x4c542
leaq 0x10(%rsp), %rsi
movq %rax, %rdi
callq 0x4c162
leaq 0x1b947(%rip), %rsi     # 0x5bdb8
movq %rax, %rdi
callq 0x4debc
leaq 0x1b95f(%rip), %rsi     # 0x5bddf
movq %rax, %rdi
callq 0x4ded2
leaq 0x1b98e(%rip), %rsi     # 0x5be1d
movq %rax, %rdi
callq 0x4c542
movq %rax, %rbx
leaq 0x1b25a(%rip), %rdx     # 0x5b6fb
leaq 0x1b97b(%rip), %r8      # 0x5be23
leaq 0x18(%rsp), %rdi
pushq $0x1
popq %rsi
movl $0x9ff, %ecx            # imm = 0x9FF
callq 0x3b5b6
leaq 0x18(%rsp), %rdi
movq %rbx, %rsi
callq 0x39b08
leaq 0x18(%rsp), %rdi
callq 0x3b616
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x404e1
movq (%rdi), %rax
callq *0x8(%rax)
cmpq %r15, %r12
sete %al
addq $0x40, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x3b616
jmp 0x4052b
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x3b616
jmp 0x40521
jmp 0x40528
jmp 0x4051e
jmp 0x40519
movq %rax, %rbx
jmp 0x40530
movq %rax, %rbx
movq 0x8(%rsp), %r14
jmp 0x40530
movq %rax, %rbx
movq 0x10(%rsp), %r14
testq %r14, %r14
je 0x4053e
movq (%r14), %rax
movq %r14, %rdi
callq *0x8(%rax)
movq %rbx, %rdi
callq 0xdaa0