// File: /workspace/github_cpp_makefile_star2_O2/WeihuaZhu[P]hpc_prog2/./gtest/gtest-all.cc
// Function: testing::internal::UnitTestOptions::FilterMatchesTest(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
bool UnitTestOptions::FilterMatchesTest(const std::string &test_case_name,
                                        const std::string &test_name) {
  const std::string& full_name = test_case_name + "." + test_name.c_str();

  // Split --gtest_filter at '-', if there is one, to separate into
  // positive filter and negative filter portions
  const char* const p = GTEST_FLAG(filter).c_str();
  const char* const dash = strchr(p, '-');
  std::string positive;
  std::string negative;
  if (dash == NULL) {
    positive = GTEST_FLAG(filter).c_str();  // Whole string is a positive filter
    negative = "";
  } else {
    positive = std::string(p, dash);   // Everything up to the dash
    negative = std::string(dash + 1);  // Everything after the dash
    if (positive.empty()) {
      // Treat '-test1' as the same as '*-test1'
      positive = kUniversalFilter;
    }
  }

  // A filter is a colon-separated list of patterns.  It matches a
  // test if any pattern in it matches the test.
  return (MatchesFilter(full_name, positive.c_str()) &&
          !MatchesFilter(full_name, negative.c_str()));
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x90, %rsp
movq %rsi, %rbx
movq %rdi, %rsi
leaq 0x15da0(%rip), %rdx     # 0x1e2bf
leaq 0x10(%rsp), %r14
movq %r14, %rdi
callq 0x154f6
movq (%rbx), %rdx
leaq 0x70(%rsp), %rdi
movq %r14, %rsi
callq 0x154d7
leaq 0x10(%rsp), %rdi
callq 0x6a28
movq 0x2603b(%rip), %rbx     # 0x2e588
pushq $0x2d
popq %rsi
movq %rbx, %rdi
callq 0x6190
movq %rax, %r14
leaq 0x20(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
leaq 0x40(%rsp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
xorl %edx, %edx
movb %dl, (%rax)
movb %dl, (%rcx)
testq %r14, %r14
je 0x85f8
leaq 0x60(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x50(%rsp), %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x1a50a
leaq 0x10(%rsp), %rbx
leaq 0x50(%rsp), %r15
movq %rbx, %rdi
movq %r15, %rsi
callq 0x65f0
movq %r15, %rdi
callq 0x6a28
incq %r14
leaq 0x50(%rsp), %rdi
leaq 0xf(%rsp), %rdx
movq %r14, %rsi
callq 0x1543a
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %r14
movq %r14, %rsi
callq 0x65f0
movq %r14, %rdi
callq 0x6a28
cmpq $0x0, 0x18(%rsp)
jne 0x8619
leaq 0x14e7a(%rip), %rsi     # 0x1d470
jmp 0x8611
leaq 0x10(%rsp), %rdi
movq %rbx, %rsi
callq 0x69c0
leaq 0x16499(%rip), %rsi     # 0x1eaa5
leaq 0x30(%rsp), %rbx
movq %rbx, %rdi
callq 0x69c0
movq 0x10(%rsp), %rsi
leaq 0x70(%rsp), %rdi
callq 0x84c2
testb %al, %al
je 0x8642
movq 0x30(%rsp), %rsi
leaq 0x70(%rsp), %rdi
callq 0x84c2
movl %eax, %ebx
xorb $0x1, %bl
jmp 0x8644
xorl %ebx, %ebx
leaq 0x30(%rsp), %rdi
callq 0x6a28
leaq 0x10(%rsp), %rdi
callq 0x6a28
leaq 0x70(%rsp), %rdi
callq 0x6a28
movl %ebx, %eax
addq $0x90, %rsp
popq %rbx
popq %r14
popq %r15
retq
jmp 0x8675
jmp 0x8675
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x6a28
leaq 0x10(%rsp), %rdi
callq 0x6a28
leaq 0x70(%rsp), %rdi
jmp 0x869b
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x6a28
movq %rbx, %rdi
callq 0x6900