// File: /workspace/github_cpp_makefile_star2_O2/xelia-it[P]mustache/third-party/catch2/single_include/catch2/catch.hpp
// Function: Catch::clara::detail::Opt::parse(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Catch::clara::detail::TokenStream const&) const
auto parse( std::string const&, TokenStream const &tokens ) const -> InternalParseResult override {
            auto validationResult = validate();
            if( !validationResult )
                return InternalParseResult( validationResult );

            auto remainingTokens = tokens;
            if( remainingTokens && remainingTokens->type == TokenType::Option ) {
                auto const &token = *remainingTokens;
                if( isMatch(token.token ) ) {
                    if( m_ref->isFlag() ) {
                        auto flagRef = static_cast<detail::BoundFlagRefBase*>( m_ref.get() );
                        auto result = flagRef->setFlag( true );
                        if( !result )
                            return InternalParseResult( result );
                        if( result.value() == ParseResultType::ShortCircuitAll )
                            return InternalParseResult::ok( ParseState( result.value(), remainingTokens ) );
                    } else {
                        auto valueRef = static_cast<detail::BoundValueRefBase*>( m_ref.get() );
                        ++remainingTokens;
                        if( !remainingTokens )
                            return InternalParseResult::runtimeError( "Expected argument following " + token.token );
                        auto const &argToken = *remainingTokens;
                        if( argToken.type != TokenType::Argument )
                            return InternalParseResult::runtimeError( "Expected argument following " + token.token );
                        auto result = valueRef->setValue( argToken.token );
                        if( !result )
                            return InternalParseResult( result );
                        if( result.value() == ParseResultType::ShortCircuitAll )
                            return InternalParseResult::ok( ParseState( result.value(), remainingTokens ) );
                    }
                    return InternalParseResult::ok( ParseState( ParseResultType::Matched, ++remainingTokens ) );
                }
            }
            return InternalParseResult::ok( ParseState( ParseResultType::NoMatch, remainingTokens ) );
        }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x108, %rsp            # imm = 0x108
movq %rcx, %rbx
movq %rsi, %r12
movq %rdi, %r15
movq (%rsi), %rax
leaq -0x108(%rbp), %r14
movq %r14, %rdi
callq *0x10(%rax)
cmpl $0x0, 0x8(%r14)
je 0x42636
leaq -0x108(%rbp), %rsi
movq %r15, %rdi
callq 0x42d16
jmp 0x4270e
leaq -0x80(%rbp), %rdi
movq %rbx, %rsi
callq 0x41f20
leaq -0x70(%rbp), %rbx
movq (%rbx), %rax
cmpq 0x8(%rbx), %rax
jne 0x4265d
movq -0x78(%rbp), %rax
cmpq %rax, -0x80(%rbp)
je 0x426dd
leaq -0x80(%rbp), %rdi
callq 0x42d7e
cmpl $0x0, (%rax)
jne 0x426dd
leaq -0x130(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x42dac
leaq -0x128(%rbp), %r14
movq %r12, %rdi
movq %r14, %rsi
callq 0x42df0
testb %al, %al
je 0x426d5
movq 0x10(%r12), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movq 0x10(%r12), %r13
testb %al, %al
je 0x4272f
movq (%r13), %rax
leaq -0x58(%rbp), %rdi
pushq $0x1
popq %rdx
movq %r13, %rsi
callq *0x20(%rax)
cmpl $0x0, -0x50(%rbp)
je 0x427c4
leaq -0x58(%rbp), %rsi
movq %r15, %rdi
callq 0x42e82
jmp 0x4280f
movq %r14, %rdi
callq 0x24ad8
leaq -0x50(%rbp), %rdi
movl $0x1, -0x8(%rdi)
leaq -0x80(%rbp), %rsi
callq 0x41f20
leaq -0x58(%rbp), %rsi
movq %r15, %rdi
callq 0x41df4
leaq -0x40(%rbp), %rdi
callq 0x420d0
movq %rbx, %rdi
callq 0x420d0
leaq -0x108(%rbp), %rdi
callq 0x41d62
movq %r15, %rax
addq $0x108, %rsp            # imm = 0x108
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq -0x80(%rbp), %rdi
callq 0x42eea
movq -0x70(%rbp), %rax
cmpq -0x68(%rbp), %rax
jne 0x42774
movq -0x78(%rbp), %rax
cmpq %rax, -0x80(%rbp)
jne 0x42774
leaq 0x32a61(%rip), %rsi     # 0x751b4
leaq -0x58(%rbp), %rdi
movq %r14, %rdx
callq 0x3e5a5
leaq -0x58(%rbp), %rsi
movq %r15, %rdi
callq 0x42f3a
leaq -0x58(%rbp), %rdi
jmp 0x428e1
leaq -0xd8(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x42dac
cmpl $0x1, -0xd8(%rbp)
jne 0x4281d
leaq -0xd0(%rbp), %r12
movq (%r13), %rax
leaq -0x58(%rbp), %rdi
movq %r13, %rsi
movq %r12, %rdx
callq *0x20(%rax)
cmpl $0x0, -0x50(%rbp)
je 0x4288a
leaq -0x58(%rbp), %rsi
movq %r15, %rdi
callq 0x42e82
jmp 0x428d5
leaq -0x58(%rbp), %rdi
movq (%rdi), %rax
callq *0x10(%rax)
cmpl $0x2, -0x4c(%rbp)
jne 0x42851
leaq -0x58(%rbp), %rdi
movq (%rdi), %rax
callq *0x10(%rax)
movl -0x4c(%rbp), %eax
leaq -0xa8(%rbp), %rdi
movl %eax, -0x8(%rdi)
leaq -0x80(%rbp), %rsi
callq 0x41f20
leaq -0xb0(%rbp), %rsi
movq %r15, %rdi
callq 0x41df4
leaq -0x98(%rbp), %rdi
callq 0x420d0
leaq -0x58(%rbp), %rdi
callq 0x422de
jmp 0x428e6
leaq 0x32990(%rip), %rsi     # 0x751b4
leaq -0x58(%rbp), %rdi
movq %r14, %rdx
callq 0x3e5a5
leaq -0x58(%rbp), %rsi
movq %r15, %rdi
callq 0x42f3a
leaq -0x58(%rbp), %rdi
callq 0x24ad8
leaq -0xd0(%rbp), %rdi
jmp 0x428e1
leaq -0x58(%rbp), %rdi
callq 0x422de
leaq -0x80(%rbp), %rdi
callq 0x42eea
leaq -0x50(%rbp), %rdi
andl $0x0, -0x8(%rdi)
movq %rax, %rsi
callq 0x41f20
leaq -0x58(%rbp), %rsi
movq %r15, %rdi
callq 0x41df4
leaq -0x40(%rbp), %rdi
callq 0x420d0
jmp 0x428e6
leaq -0x58(%rbp), %rdi
movq (%rdi), %rax
callq *0x10(%rax)
cmpl $0x2, -0x4c(%rbp)
jne 0x428f3
leaq -0x58(%rbp), %rdi
movq (%rdi), %rax
callq *0x10(%rax)
movl -0x4c(%rbp), %eax
leaq -0xa8(%rbp), %rdi
movl %eax, -0x8(%rdi)
leaq -0x80(%rbp), %rsi
callq 0x41f20
leaq -0xb0(%rbp), %rsi
movq %r15, %rdi
callq 0x41df4
leaq -0x98(%rbp), %rdi
callq 0x420d0
leaq -0x58(%rbp), %rdi
callq 0x422de
movq %r12, %rdi
callq 0x24ad8
movq %r14, %rdi
callq 0x24ad8
jmp 0x42706
leaq -0x58(%rbp), %rdi
callq 0x422de
movq %r12, %rdi
callq 0x24ad8
jmp 0x4285a
movq %rax, %r15
leaq -0x98(%rbp), %rdi
callq 0x420d0
jmp 0x4293e
jmp 0x4293b
movq %rax, %r15
leaq -0x98(%rbp), %rdi
callq 0x420d0
jmp 0x4297e
movq %rax, %r15
leaq -0x40(%rbp), %rdi
callq 0x420d0
jmp 0x42992
movq %rax, %r15
leaq -0x58(%rbp), %rdi
callq 0x422de
jmp 0x4295c
movq %rax, %r15
leaq -0x58(%rbp), %rdi
callq 0x24ad8
jmp 0x4295c
jmp 0x42959
movq %rax, %r15
leaq -0xd0(%rbp), %rdi
jmp 0x42970
jmp 0x4297b
jmp 0x4298f
movq %rax, %r15
leaq -0x58(%rbp), %rdi
callq 0x24ad8
jmp 0x42992
jmp 0x4298f
jmp 0x4298f
movq %rax, %r15
leaq -0x58(%rbp), %rdi
callq 0x422de
jmp 0x42992
jmp 0x4298f
jmp 0x4298f
jmp 0x429aa
movq %rax, %r15
movq %r14, %rdi
callq 0x24ad8
jmp 0x429ad
movq %rax, %r15
leaq -0x40(%rbp), %rdi
callq 0x420d0
jmp 0x429ad
movq %rax, %r15
movq %rbx, %rdi
callq 0x420d0
jmp 0x429bc
jmp 0x429b9
movq %rax, %r15
leaq -0x108(%rbp), %rdi
callq 0x41d62
movq %r15, %rdi
callq 0x24950