// File: halfflat[P]tinyopt/test/googletest/googletest/src/gtest.cc
// Function: testing::internal::(anonymous namespace)::PositiveAndNegativeUnitTestFilter::PositiveAndNegativeUnitTestFilter(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
explicit PositiveAndNegativeUnitTestFilter(const std::string& filter) {
    std::vector<std::string> positive_and_negative_filters;

    // NOTE: `SplitString` always returns a non-empty container.
    SplitString(filter, '-', &positive_and_negative_filters);
    const auto& positive_filter = positive_and_negative_filters.front();

    if (positive_and_negative_filters.size() > 1) {
      positive_filter_ = UnitTestFilter(
          positive_filter.empty() ? kUniversalFilter : positive_filter);

      // TODO(b/214626361): Fail on multiple '-' characters
      // For the moment to preserve old behavior we concatenate the rest of the
      // string parts with `-` as separator to generate the negative filter.
      auto negative_filter_string = positive_and_negative_filters[1];
      for (std::size_t i = 2; i < positive_and_negative_filters.size(); i++)
        negative_filter_string =
            negative_filter_string + '-' + positive_and_negative_filters[i];
      negative_filter_ = UnitTestFilter(negative_filter_string);
    } else {
      // In case we don't have a negative filter and positive filter is ""
      // we do not use kUniversalFilter by design as opposed to when we have a
      // negative filter.
      positive_filter_ = UnitTestFilter(positive_filter);
    }
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1f0, %rsp            # imm = 0x1F0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x1d8(%rbp)
movq %rdi, %rax
movq %rax, -0x1e0(%rbp)
callq 0x9e930
movq -0x1d8(%rbp), %rdi
addq $0x50, %rdi
movq %rdi, -0x1d0(%rbp)
callq 0x9e930
leaq -0x28(%rbp), %rdi
movq %rdi, -0x1c8(%rbp)
callq 0x39120
movq -0x1c8(%rbp), %rdx
movq -0x10(%rbp), %rdi
movl $0x2d, %esi
callq 0x7af20
jmp 0x82c5b
leaq -0x28(%rbp), %rdi
callq 0xb0e40
movq %rax, -0x40(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x3bb30
cmpq $0x1, %rax
jbe 0x82edb
movq -0x40(%rbp), %rdi
callq 0x10d70
movb $0x0, -0xb2(%rbp)
testb $0x1, %al
jne 0x82c91
jmp 0x82cc9
leaq -0xb1(%rbp), %rdi
movq %rdi, -0x1e8(%rbp)
callq 0x10e10
movq -0x1e8(%rbp), %rdx
movb $0x1, -0xb2(%rbp)
leaq 0x49b77(%rip), %rsi     # 0xcc830
leaq -0xb0(%rbp), %rdi
callq 0x1d070
jmp 0x82cc7
jmp 0x82cdd
movq -0x40(%rbp), %rsi
leaq -0xb0(%rbp), %rdi
callq 0x102f0
jmp 0x82cdb
jmp 0x82cdd
leaq -0x90(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x827f0
jmp 0x82cf2
movq -0x1e0(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x9e960
leaq -0x90(%rbp), %rdi
callq 0x82b30
leaq -0xb0(%rbp), %rdi
callq 0x10fc8
testb $0x1, -0xb2(%rbp)
jne 0x82d28
jmp 0x82d34
leaq -0xb1(%rbp), %rdi
callq 0x10810
leaq -0x28(%rbp), %rdi
movl $0x1, %esi
callq 0xa37a0
movq %rax, %rsi
leaq -0xd8(%rbp), %rdi
callq 0x102f0
jmp 0x82d53
movq $0x2, -0xe0(%rbp)
movq -0xe0(%rbp), %rax
movq %rax, -0x1f0(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x3bb30
movq %rax, %rcx
movq -0x1f0(%rbp), %rax
cmpq %rcx, %rax
jae 0x82e87
leaq -0x120(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
movl $0x2d, %edx
callq 0xa3940
jmp 0x82da2
movq -0xe0(%rbp), %rsi
leaq -0x28(%rbp), %rdi
callq 0xa37a0
movq %rax, %rdx
leaq -0x100(%rbp), %rdi
leaq -0x120(%rbp), %rsi
callq 0x3c8a0
jmp 0x82dca
leaq -0xd8(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0x109b0
leaq -0x100(%rbp), %rdi
callq 0x10fc8
leaq -0x120(%rbp), %rdi
callq 0x10fc8
movq -0xe0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xe0(%rbp)
jmp 0x82d5e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x82f1e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x82e43
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x10fc8
testb $0x1, -0xb2(%rbp)
jne 0x82e4e
jmp 0x82e5a
leaq -0xb1(%rbp), %rdi
callq 0x10810
jmp 0x82f1e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x82ecd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x120(%rbp), %rdi
callq 0x10fc8
jmp 0x82ecd
leaq -0x170(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x827f0
jmp 0x82e9c
movq -0x1e0(%rbp), %rdi
addq $0x50, %rdi
leaq -0x170(%rbp), %rsi
callq 0x9e960
leaq -0x170(%rbp), %rdi
callq 0x82b30
leaq -0xd8(%rbp), %rdi
callq 0x10fc8
jmp 0x82f0c
leaq -0xd8(%rbp), %rdi
callq 0x10fc8
jmp 0x82f1e
movq -0x40(%rbp), %rsi
leaq -0x1c0(%rbp), %rdi
callq 0x827f0
jmp 0x82eed
movq -0x1e0(%rbp), %rdi
leaq -0x1c0(%rbp), %rsi
callq 0x9e960
leaq -0x1c0(%rbp), %rdi
callq 0x82b30
leaq -0x28(%rbp), %rdi
callq 0x390a0
addq $0x1f0, %rsp            # imm = 0x1F0
popq %rbp
retq
leaq -0x28(%rbp), %rdi
callq 0x390a0
movq -0x1d0(%rbp), %rdi
callq 0x82b30
movq -0x1d8(%rbp), %rdi
callq 0x82b30
movq -0x30(%rbp), %rdi
callq 0x10e00
nopl (%rax,%rax)