// File: /workspace/github_cpp_makefile_star2_O3/xelia-it[P]mustache/third-party/catch2/single_include/catch2/catch.hpp
// Function: Catch::TestSpecParser::addTagPattern()
void TestSpecParser::addTagPattern() {
        auto token = preprocessPattern();

        if (!token.empty()) {
            // If the tag pattern is the "hide and tag" shorthand (e.g. [.foo])
            // we have to create a separate hide tag and shorten the real one
            if (token.size() > 1 && token[0] == '.') {
                token.erase(token.begin());
                TestSpec::PatternPtr pattern = std::make_shared<TestSpec::TagPattern>(".", m_substring);
                if (m_exclusion) {
                    pattern = std::make_shared<TestSpec::ExcludedPattern>(pattern);
                }
                m_currentFilter.m_patterns.push_back(pattern);
            }

            TestSpec::PatternPtr pattern = std::make_shared<TestSpec::TagPattern>(token, m_substring);

            if (m_exclusion) {
                pattern = std::make_shared<TestSpec::ExcludedPattern>(pattern);
            }
            m_currentFilter.m_patterns.push_back(pattern);
        }
        m_substring.clear();
        m_exclusion = false;
        m_mode = None;
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x50, %rsp
movq %rdi, %rbx
leaq -0x60(%rbp), %r14
movq %r14, %rdi
movq %rbx, %rsi
callq 0x30db4
movq 0x8(%r14), %rax
testq %rax, %rax
je 0x30d2e
cmpq $0x1, %rax
je 0x30c99
movq -0x60(%rbp), %rax
cmpb $0x2e, (%rax)
jne 0x30c99
leaq -0x60(%rbp), %rdi
movl $0x1, %edx
xorl %esi, %esi
callq 0x1b620
leaq 0x40(%rbx), %r8
leaq -0x28(%rbp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x4c206(%rip), %rcx     # 0x7ce1e
leaq -0x30(%rbp), %rsi
leaq -0x11(%rbp), %rdx
callq 0x60364
movups -0x30(%rbp), %xmm0
movups %xmm0, -0x40(%rbp)
cmpb $0x1, 0x8(%rbx)
jne 0x30c7b
leaq -0x28(%rbp), %rdi
movq $0x0, -0x8(%rdi)
leaq -0x30(%rbp), %rsi
leaq -0x11(%rbp), %rdx
leaq -0x40(%rbp), %rcx
callq 0x6010e
movaps -0x30(%rbp), %xmm0
xorps %xmm1, %xmm1
movaps %xmm1, -0x30(%rbp)
movq -0x38(%rbp), %rdi
movups %xmm0, -0x40(%rbp)
testq %rdi, %rdi
je 0x30c7b
callq 0x43a1a
movq -0x28(%rbp), %rdi
testq %rdi, %rdi
je 0x30c7b
callq 0x43a1a
leaq 0x98(%rbx), %rdi
leaq -0x40(%rbp), %rsi
callq 0x4036c
movq -0x38(%rbp), %rdi
testq %rdi, %rdi
je 0x30c99
callq 0x43a1a
leaq 0x40(%rbx), %r8
leaq -0x28(%rbp), %rdi
movq $0x0, -0x8(%rdi)
leaq -0x30(%rbp), %rsi
leaq -0x11(%rbp), %rdx
leaq -0x60(%rbp), %rcx
callq 0x604e0
movups -0x30(%rbp), %xmm0
movups %xmm0, -0x40(%rbp)
cmpb $0x1, 0x8(%rbx)
jne 0x30d10
leaq -0x28(%rbp), %rdi
movq $0x0, -0x8(%rdi)
leaq -0x30(%rbp), %rsi
leaq -0x11(%rbp), %rdx
leaq -0x40(%rbp), %rcx
callq 0x6010e
movaps -0x30(%rbp), %xmm0
xorps %xmm1, %xmm1
movaps %xmm1, -0x30(%rbp)
movq -0x38(%rbp), %rdi
movups %xmm0, -0x40(%rbp)
testq %rdi, %rdi
je 0x30d10
callq 0x43a1a
movq -0x28(%rbp), %rdi
testq %rdi, %rdi
je 0x30d10
callq 0x43a1a
leaq 0x98(%rbx), %rdi
leaq -0x40(%rbp), %rsi
callq 0x4036c
movq -0x38(%rbp), %rdi
testq %rdi, %rdi
je 0x30d2e
callq 0x43a1a
movq $0x0, 0x48(%rbx)
movq 0x40(%rbx), %rax
xorl %ecx, %ecx
movb %cl, (%rax)
movb %cl, 0x8(%rbx)
movl $0x0, (%rbx)
leaq -0x50(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x30d59
callq 0x1b4d0
addq $0x50, %rsp
popq %rbx
popq %r14
popq %rbp
retq
jmp 0x30d6c
jmp 0x30d6c
jmp 0x30d7f
jmp 0x30d7f
jmp 0x30d6c
movq %rax, %rbx
movq -0x38(%rbp), %rdi
testq %rdi, %rdi
je 0x30d82
callq 0x43a1a
jmp 0x30d82
movq %rax, %rbx
leaq -0x50(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x30d94
callq 0x1b4d0
movq %rbx, %rdi
callq 0x1b910