// File: /workspace/github_cpp_makefile_star2_O3/xelia-it[P]mustache/third-party/catch2/single_include/catch2/catch.hpp
// Function: Catch::Capturer::Capturer(Catch::StringRef, Catch::SourceLineInfo const&, Catch::ResultWas::OfType, Catch::StringRef)
Capturer::Capturer( StringRef macroName, SourceLineInfo const& lineInfo, ResultWas::OfType resultType, StringRef names ) {
        auto trimmed = [&] (size_t start, size_t end) {
            while (names[start] == ',' || isspace(static_cast<unsigned char>(names[start]))) {
                ++start;
            }
            while (names[end] == ',' || isspace(static_cast<unsigned char>(names[end]))) {
                --end;
            }
            return names.substr(start, end - start + 1);
        };
        auto skipq = [&] (size_t start, char quote) {
            for (auto i = start + 1; i < names.size() ; ++i) {
                if (names[i] == quote)
                    return i;
                if (names[i] == '\\')
                    ++i;
            }
            CATCH_INTERNAL_ERROR("CAPTURE parsing encountered unmatched quote");
        };

        size_t start = 0;
        std::stack<char> openings;
        for (size_t pos = 0; pos < names.size(); ++pos) {
            char c = names[pos];
            switch (c) {
            case '[':
            case '{':
            case '(':
            // It is basically impossible to disambiguate between
            // comparison and start of template args in this context
//            case '<':
                openings.push(c);
                break;
            case ']':
            case '}':
            case ')':
//           case '>':
                openings.pop();
                break;
            case '"':
            case '\'':
                pos = skipq(pos, c);
                break;
            case ',':
                if (start != pos && openings.empty()) {
                    m_messages.emplace_back(macroName, lineInfo, resultType);
                    m_messages.back().message = static_cast<std::string>(trimmed(start, pos));
                    m_messages.back().message += " := ";
                    start = pos;
                }
            }
        }
        assert(openings.empty() && "Mismatched openings");
        m_messages.emplace_back(macroName, lineInfo, resultType);
        m_messages.back().message = static_cast<std::string>(trimmed(start, names.size() - 1));
        m_messages.back().message += " := ";
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xd8, %rsp
movq %rcx, -0x48(%rbp)
movq %rdi, %r13
movq %rsi, -0x80(%rbp)
movq %rdx, -0x78(%rbp)
movl %r8d, -0x30(%rbp)
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
callq 0x1d1b6
movq %rax, 0x18(%r13)
movq $0x0, 0x20(%r13)
leaq -0xf0(%rbp), %rdi
xorps %xmm0, %xmm0
movaps %xmm0, 0x40(%rdi)
movaps %xmm0, 0x30(%rdi)
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
xorl %esi, %esi
callq 0x5a7de
leaq 0x10(%rbp), %rax
movq 0x8(%rax), %r12
testq %r12, %r12
movq %r13, -0x38(%rbp)
movq %r12, -0x40(%rbp)
je 0x2868e
movq (%rax), %r14
xorl %ebx, %ebx
xorl %r15d, %r15d
movb (%r14,%rbx), %al
movb %al, -0x29(%rbp)
movzbl %al, %ecx
cmpl $0x5a, %ecx
jg 0x284cf
addl $-0x22, %ecx
cmpl $0xa, %ecx
ja 0x2856b
leaq 0x50c6b(%rip), %rdx     # 0x7910c
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
leaq 0x1(%rbx), %rcx
cmpq %r12, %rcx
jae 0x287a9
movb (%r14,%rcx), %dl
cmpb %al, %dl
je 0x28529
cmpb $0x5c, %dl
je 0x284c9
movq %rcx, %rbx
jmp 0x284aa
addq $0x2, %rbx
jmp 0x284aa
cmpl $0x7a, %ecx
jg 0x284e3
cmpl $0x5b, %ecx
je 0x28505
cmpl $0x5d, %ecx
je 0x284ed
jmp 0x2856b
cmpl $0x7b, %ecx
je 0x28505
cmpl $0x7d, %ecx
jne 0x2856b
movq -0xc0(%rbp), %rax
movq -0xb8(%rbp), %rdi
cmpq %rdi, %rax
je 0x2852e
decq %rax
jmp 0x28564
movq -0xc0(%rbp), %rcx
movq -0xb0(%rbp), %rdx
decq %rdx
cmpq %rdx, %rcx
je 0x2857c
movb %al, (%rcx)
movq -0xc0(%rbp), %rax
incq %rax
jmp 0x28564
movq %rcx, %rbx
jmp 0x2856b
callq 0x1b4d0
movq -0xa8(%rbp), %rax
leaq -0x8(%rax), %rcx
movq %rcx, -0xa8(%rbp)
movq -0x8(%rax), %rax
movq %rax, -0xb8(%rbp)
leaq 0x200(%rax), %rcx
movq %rcx, -0xb0(%rbp)
addq $0x1ff, %rax            # imm = 0x1FF
movq %rax, -0xc0(%rbp)
incq %rbx
cmpq %r12, %rbx
jb 0x2847f
jmp 0x28691
leaq -0xf0(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x5a95a
jmp 0x2856b
cmpq %rbx, %r15
jne 0x28598
movq %rbx, %r15
jmp 0x2856b
movq -0xc0(%rbp), %rax
cmpq -0xe0(%rbp), %rax
jne 0x2856b
movq %r13, %rdi
leaq -0x80(%rbp), %rsi
movq -0x48(%rbp), %rdx
leaq -0x30(%rbp), %rcx
callq 0x3f3b0
cmpq %r15, %r12
jbe 0x28711
movq %rbx, %r13
subq %r15, %r13
incq %r13
movzbl (%r14,%r15), %edi
cmpl $0x2c, %edi
je 0x285e1
callq 0x1b0a0
testl %eax, %eax
je 0x285f1
incq %r15
decq %r13
cmpq %r12, %r15
jne 0x285ce
jmp 0x28711
leaq (%r14,%r15), %rax
movq %rax, -0x70(%rbp)
movq %rbx, %r12
movzbl (%r14,%r12), %edi
cmpl $0x2c, %edi
je 0x2860f
callq 0x1b0a0
testl %eax, %eax
je 0x28620
decq %r12
decq %r13
cmpq %r12, -0x40(%rbp)
ja 0x285fc
jmp 0x28711
movq -0x40(%rbp), %r12
movq %r12, %rdx
subq %r15, %rdx
cmpq %r13, %rdx
cmovaeq %r13, %rdx
leaq -0x58(%rbp), %r15
movq %r15, -0x68(%rbp)
movq -0x70(%rbp), %rsi
addq %rsi, %rdx
leaq -0x68(%rbp), %r15
movq %r15, %rdi
callq 0x431c8
movq -0x38(%rbp), %r13
movq 0x8(%r13), %rdi
addq $-0x38, %rdi
movq %r15, %rsi
callq 0x1b640
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x28672
callq 0x1b4d0
movq 0x8(%r13), %rdi
addq $-0x38, %rdi
leaq 0x52c6c(%rip), %rsi     # 0x7b2ed
callq 0x1b9d0
movq %rbx, %r15
jmp 0x2856b
xorl %r15d, %r15d
movq -0xc0(%rbp), %rax
cmpq -0xe0(%rbp), %rax
jne 0x28827
leaq -0x80(%rbp), %rsi
leaq -0x30(%rbp), %rcx
movq %r13, %rdi
movq -0x48(%rbp), %rdx
callq 0x3f3b0
movq %r12, %rbx
subq %r15, %rbx
jbe 0x28711
movq -0x40(%rbp), %rax
leaq -0x1(%rax), %r13
leaq 0x10(%rbp), %rax
movq (%rax), %r12
addq %r12, %r15
movzbl (%r15), %edi
cmpl $0x2c, %edi
je 0x286e5
callq 0x1b0a0
testl %eax, %eax
je 0x286ef
incq %r15
decq %rbx
jne 0x286d3
jmp 0x28711
movq %rbx, %r14
movzbl (%r12,%r13), %edi
cmpl $0x2c, %edi
je 0x28705
callq 0x1b0a0
testl %eax, %eax
je 0x28730
decq %r13
decq %r14
cmpq %r13, -0x40(%rbp)
ja 0x286f2
leaq 0x54294(%rip), %rdi     # 0x7c9ac
leaq 0x527b6(%rip), %rsi     # 0x7aed5
leaq 0x54295(%rip), %rcx     # 0x7c9bb
movl $0x283, %edx            # imm = 0x283
callq 0x1b320
leaq -0x58(%rbp), %r12
movq %r12, -0x10(%r12)
cmpq %r14, %rbx
cmovbq %rbx, %r14
addq %r15, %r14
leaq -0x68(%rbp), %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x431c8
movq -0x38(%rbp), %r13
movq 0x8(%r13), %rdi
addq $-0x38, %rdi
leaq -0x68(%rbp), %r14
movq %r14, %rsi
callq 0x1b640
movq (%r14), %rdi
cmpq %r12, %rdi
je 0x28777
callq 0x1b4d0
movq 0x8(%r13), %rdi
addq $-0x38, %rdi
leaq 0x52b67(%rip), %rsi     # 0x7b2ed
callq 0x1b9d0
leaq -0xf0(%rbp), %rdi
callq 0x472a0
addq $0xd8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq -0x98(%rbp), %rdi
callq 0x2d4e2
leaq 0x52719(%rip), %rax     # 0x7aed5
leaq -0x100(%rbp), %rsi
movq %rax, (%rsi)
movq $0x2e6b, 0x8(%rsi)      # imm = 0x2E6B
movq -0x88(%rbp), %rdi
callq 0x22e17
movq -0x88(%rbp), %rdi
leaq 0x52983(%rip), %rsi     # 0x7b16b
movl $0x19, %edx
callq 0x1b5e0
movq -0x88(%rbp), %rdi
leaq 0x541ee(%rip), %rsi     # 0x7c9ee
movl $0x2b, %edx
callq 0x1b5e0
movq -0x88(%rbp), %rsi
addq $0x8, %rsi
leaq -0x68(%rbp), %rdi
callq 0x1b7f0
leaq -0x68(%rbp), %rdi
callq 0x23e01
leaq 0x52ac4(%rip), %rdi     # 0x7b2f2
leaq 0x526a0(%rip), %rsi     # 0x7aed5
leaq 0x52ae0(%rip), %rcx     # 0x7b31c
movl $0x2e8e, %edx           # imm = 0x2E8E
callq 0x1b320
jmp 0x28848
movq %rax, %r14
movq -0x38(%rbp), %r13
jmp 0x28887
jmp 0x28853
movq %rax, %r14
jmp 0x28893
jmp 0x28884
jmp 0x28884
movq %rax, %r14
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x28876
callq 0x1b4d0
jmp 0x28876
movq %rax, %r14
leaq -0x98(%rbp), %rdi
callq 0x2d528
jmp 0x28887
movq %rax, %r14
leaq -0xf0(%rbp), %rdi
callq 0x472a0
movq %r13, %rdi
callq 0x3ed30
movq %r14, %rdi
callq 0x1b910
nop