// File: /workspace/github_c_makefile_star2_O2/deplinenoise[P]tundra/unittest/googletest/googletest/src/gtest.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 0x32efd(%rip), %rdx     # 0x44046
leaq 0x10(%rsp), %r14
movq %r14, %rdi
callq 0x1f530
movq (%rbx), %rdx
leaq 0x70(%rsp), %rdi
movq %r14, %rsi
callq 0x1f511
leaq 0x10(%rsp), %rdi
callq 0xdd68
movq 0x585c9(%rip), %rbx     # 0x69740
pushq $0x2d
popq %rsi
movq %rbx, %rdi
callq 0xd230
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 0x11222
leaq 0x60(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x50(%rsp), %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x24510
leaq 0x10(%rsp), %rbx
leaq 0x50(%rsp), %r15
movq %rbx, %rdi
movq %r15, %rsi
callq 0xd7f0
movq %r15, %rdi
callq 0xdd68
incq %r14
leaq 0x50(%rsp), %rdi
leaq 0xf(%rsp), %rdx
movq %r14, %rsi
callq 0x1f4d6
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %r14
movq %r14, %rsi
callq 0xd7f0
movq %r14, %rdi
callq 0xdd68
cmpq $0x0, 0x18(%rsp)
jne 0x11243
leaq 0x31fc0(%rip), %rsi     # 0x431e0
jmp 0x1123b
leaq 0x10(%rsp), %rdi
movq %rbx, %rsi
callq 0xdce0
leaq 0x38c71(%rip), %rsi     # 0x49ea7
leaq 0x30(%rsp), %rbx
movq %rbx, %rdi
callq 0xdce0
movq 0x10(%rsp), %rsi
leaq 0x70(%rsp), %rdi
callq 0x110ec
testb %al, %al
je 0x1126c
movq 0x30(%rsp), %rsi
leaq 0x70(%rsp), %rdi
callq 0x110ec
movl %eax, %ebx
xorb $0x1, %bl
jmp 0x1126e
xorl %ebx, %ebx
leaq 0x30(%rsp), %rdi
callq 0xdd68
leaq 0x10(%rsp), %rdi
callq 0xdd68
leaq 0x70(%rsp), %rdi
callq 0xdd68
movl %ebx, %eax
addq $0x90, %rsp
popq %rbx
popq %r14
popq %r15
retq
jmp 0x1129f
jmp 0x1129f
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xdd68
leaq 0x10(%rsp), %rdi
callq 0xdd68
leaq 0x70(%rsp), %rdi
jmp 0x112c5
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xdd68
movq %rbx, %rdi
callq 0xdbf0