// File: /workspace/github_cpp_makefile_star2_O1/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, -0x50(%rbp)
movq %rdi, %r12
movq %rsi, -0x88(%rbp)
movq %rdx, -0x80(%rbp)
movl %r8d, -0x3c(%rbp)
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movq %rdi, -0x48(%rbp)
callq 0x1d1d6
movq %rax, 0x18(%r12)
movq $0x0, 0x20(%r12)
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 0x5ac9a
leaq 0x10(%rbp), %rcx
movq 0x8(%rcx), %rax
movq %rax, -0x38(%rbp)
testq %rax, %rax
je 0x28738
movq (%rcx), %r14
leaq -0x60(%rbp), %r13
xorl %ebx, %ebx
xorl %r15d, %r15d
movb (%r14,%rbx), %al
movb %al, -0x29(%rbp)
movzbl %al, %ecx
cmpl $0x5a, %ecx
jg 0x28566
addl $-0x22, %ecx
cmpl $0xa, %ecx
ja 0x28729
leaq 0x51bf2(%rip), %rdx     # 0x7a10c
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
leaq 0x1(%rbx), %rcx
cmpq -0x38(%rbp), %rcx
jae 0x28857
movb (%r14,%rcx), %sil
movb $0x1, %dl
cmpb %al, %sil
je 0x285c4
cmpb $0x5c, %sil
je 0x2854b
movq %rcx, %rbx
jmp 0x2854f
addq $0x2, %rbx
leaq 0x1(%rbx), %rcx
cmpq -0x38(%rbp), %rcx
setb %dl
jae 0x28857
movb (%r14,%rcx), %sil
jmp 0x28537
cmpl $0x7a, %ecx
jg 0x2857a
cmpl $0x5b, %ecx
je 0x28588
cmpl $0x5d, %ecx
je 0x285ac
jmp 0x28729
cmpl $0x7d, %ecx
je 0x285ac
cmpl $0x7b, %ecx
jne 0x28729
movq -0xc0(%rbp), %rcx
movq -0xb0(%rbp), %rdx
decq %rdx
cmpq %rdx, %rcx
je 0x28616
movb %al, (%rcx)
incq -0xc0(%rbp)
jmp 0x28729
movq -0xc0(%rbp), %rax
movq -0xb8(%rbp), %rdi
cmpq %rdi, %rax
je 0x285d4
decq %rax
jmp 0x2860a
movq %rcx, %rbx
testb %dl, %dl
jne 0x28729
jmp 0x28857
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)
jmp 0x28729
leaq -0xf0(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x5ae16
jmp 0x28729
cmpq %rbx, %r15
je 0x28729
movq -0xc0(%rbp), %rax
cmpq -0xe0(%rbp), %rax
jne 0x28729
movq %r12, %rdi
leaq -0x88(%rbp), %rsi
movq -0x50(%rbp), %rdx
leaq -0x3c(%rbp), %rcx
callq 0x3f6b8
cmpq %r15, -0x38(%rbp)
jbe 0x287bf
movq %rbx, %r13
subq %r15, %r13
incq %r13
movzbl (%r14,%r15), %edi
cmpl $0x2c, %edi
je 0x28685
callq 0x1b0a0
testl %eax, %eax
je 0x28696
incq %r15
decq %r13
cmpq -0x38(%rbp), %r15
jne 0x28672
jmp 0x287bf
leaq (%r14,%r15), %rax
movq %rax, -0x78(%rbp)
movq %rbx, %r12
movzbl (%r14,%r12), %edi
cmpl $0x2c, %edi
je 0x286b4
callq 0x1b0a0
testl %eax, %eax
je 0x286c5
decq %r12
decq %r13
cmpq %r12, -0x38(%rbp)
ja 0x286a1
jmp 0x287bf
movq -0x38(%rbp), %rdx
subq %r15, %rdx
cmpq %r13, %rdx
cmovaeq %r13, %rdx
leaq -0x60(%rbp), %r13
movq %r13, -0x70(%rbp)
movq -0x78(%rbp), %rsi
addq %rsi, %rdx
leaq -0x70(%rbp), %r15
movq %r15, %rdi
callq 0x43438
movq -0x48(%rbp), %r12
movq 0x8(%r12), %rdi
addq $-0x38, %rdi
movq %r15, %rsi
callq 0x1b640
movq -0x70(%rbp), %rdi
cmpq %r13, %rdi
je 0x28711
callq 0x1b4d0
movq 0x8(%r12), %rdi
addq $-0x38, %rdi
leaq 0x53bcc(%rip), %rsi     # 0x7c2ed
callq 0x1b9d0
movq %rbx, %r15
incq %rbx
cmpq -0x38(%rbp), %rbx
jb 0x284f8
jmp 0x2873b
xorl %r15d, %r15d
movq -0xc0(%rbp), %rax
cmpq -0xe0(%rbp), %rax
jne 0x288d5
leaq -0x88(%rbp), %rsi
leaq -0x3c(%rbp), %rcx
movq %r12, %rdi
movq -0x50(%rbp), %rdx
callq 0x3f6b8
movq -0x38(%rbp), %rbx
subq %r15, %rbx
jbe 0x287bf
movq -0x38(%rbp), %rax
leaq -0x1(%rax), %r13
leaq 0x10(%rbp), %rax
movq (%rax), %r12
addq %r12, %r15
movzbl (%r15), %edi
cmpl $0x2c, %edi
je 0x28793
callq 0x1b0a0
testl %eax, %eax
je 0x2879d
incq %r15
decq %rbx
jne 0x28781
jmp 0x287bf
movq %rbx, %r14
movzbl (%r12,%r13), %edi
cmpl $0x2c, %edi
je 0x287b3
callq 0x1b0a0
testl %eax, %eax
je 0x287de
decq %r13
decq %r14
cmpq %r13, -0x38(%rbp)
ja 0x287a0
leaq 0x551e6(%rip), %rdi     # 0x7d9ac
leaq 0x53708(%rip), %rsi     # 0x7bed5
leaq 0x551e7(%rip), %rcx     # 0x7d9bb
movl $0x283, %edx            # imm = 0x283
callq 0x1b320
leaq -0x60(%rbp), %r12
movq %r12, -0x10(%r12)
cmpq %r14, %rbx
cmovbq %rbx, %r14
addq %r15, %r14
leaq -0x70(%rbp), %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x43438
movq -0x48(%rbp), %rbx
movq 0x8(%rbx), %rdi
addq $-0x38, %rdi
leaq -0x70(%rbp), %r14
movq %r14, %rsi
callq 0x1b640
movq (%r14), %rdi
cmpq %r12, %rdi
je 0x28825
callq 0x1b4d0
movq 0x8(%rbx), %rdi
addq $-0x38, %rdi
leaq 0x53ab9(%rip), %rsi     # 0x7c2ed
callq 0x1b9d0
leaq -0xf0(%rbp), %rdi
callq 0x47770
addq $0xd8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq -0xa0(%rbp), %rdi
callq 0x2d4f4
leaq 0x5366b(%rip), %rax     # 0x7bed5
leaq -0x100(%rbp), %rsi
movq %rax, (%rsi)
movq $0x2e6b, 0x8(%rsi)      # imm = 0x2E6B
movq -0x90(%rbp), %rdi
callq 0x22e23
movq -0x90(%rbp), %rdi
leaq 0x538d5(%rip), %rsi     # 0x7c16b
movl $0x19, %edx
callq 0x1b5e0
movq -0x90(%rbp), %rdi
leaq 0x55140(%rip), %rsi     # 0x7d9ee
movl $0x2b, %edx
callq 0x1b5e0
movq -0x90(%rbp), %rsi
addq $0x8, %rsi
leaq -0x70(%rbp), %rdi
callq 0x1b7f0
leaq -0x70(%rbp), %rdi
callq 0x23e3c
leaq 0x53a16(%rip), %rdi     # 0x7c2f2
leaq 0x535f2(%rip), %rsi     # 0x7bed5
leaq 0x53a32(%rip), %rcx     # 0x7c31c
movl $0x2e8e, %edx           # imm = 0x2E8E
callq 0x1b320
jmp 0x28927
jmp 0x28927
jmp 0x288fa
movq %rax, %r14
jmp 0x28936
jmp 0x28927
movq %rax, %r14
movq -0x70(%rbp), %rdi
cmpq %r13, %rdi
je 0x28919
callq 0x1b4d0
jmp 0x28919
jmp 0x28927
movq %rax, %r14
leaq -0xa0(%rbp), %rdi
callq 0x2d53a
jmp 0x2892a
movq %rax, %r14
leaq -0xf0(%rbp), %rdi
callq 0x47770
movq -0x48(%rbp), %rdi
callq 0x3f03c
movq %r14, %rdi
callq 0x1b910
nop