// File: dadocolussi[P]gdc-circular_queue/tests/catch.hpp
// Function: Catch::Clara::CommandLine<Catch::ConfigData>::populateOptions(std::vector<Catch::Clara::Parser::Token, std::allocator<Catch::Clara::Parser::Token>> const&, Catch::ConfigData&) const
std::vector<Parser::Token> populateOptions( std::vector<Parser::Token> const& tokens, ConfigT& config ) const {
            std::vector<Parser::Token> unusedTokens;
            std::vector<std::string> errors;
            for( std::size_t i = 0; i < tokens.size(); ++i ) {
                Parser::Token const& token = tokens[i];
                typename std::vector<Arg>::const_iterator it = m_options.begin(), itEnd = m_options.end();
                for(; it != itEnd; ++it ) {
                    Arg const& arg = *it;

                    try {
                        if( ( token.type == Parser::Token::ShortOpt && arg.hasShortName( token.data ) ) ||
                            ( token.type == Parser::Token::LongOpt && arg.hasLongName( token.data ) ) ) {
                            if( arg.takesArg() ) {
                                if( i == tokens.size()-1 || tokens[i+1].type != Parser::Token::Positional )
                                    errors.push_back( "Expected argument to option: " + token.data );
                                else
                                    arg.boundField.set( config, tokens[++i].data );
                            }
                            else {
                                arg.boundField.setFlag( config );
                            }
                            break;
                        }
                    }
                    catch( std::exception& ex ) {
                        errors.push_back( std::string( ex.what() ) + "\n- while parsing: (" + arg.commands() + ")" );
                    }
                }
                if( it == itEnd ) {
                    if( token.type == Parser::Token::Positional || !m_throwOnUnrecognisedTokens )
                        unusedTokens.push_back( token );
                    else if( errors.empty() && m_throwOnUnrecognisedTokens )
                        errors.push_back( "unrecognised option: " + token.data );
                }
            }
            if( !errors.empty() ) {
                std::ostringstream oss;
                for( std::vector<std::string>::const_iterator it = errors.begin(), itEnd = errors.end();
                        it != itEnd;
                        ++it ) {
                    if( it != errors.begin() )
                        oss << "\n";
                    oss << *it;
                }
                throw std::runtime_error( oss.str() );
            }
            return unusedTokens;
        }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x390, %rsp            # imm = 0x390
movq %rdi, -0x348(%rbp)
movq %rdi, %rax
movq %rax, -0x340(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x338(%rbp)
movb $0x0, -0x21(%rbp)
callq 0x39fc0
leaq -0x40(%rbp), %rdi
callq 0x3d1f0
movq $0x0, -0x48(%rbp)
movq -0x48(%rbp), %rax
movq %rax, -0x350(%rbp)
movq -0x18(%rbp), %rdi
callq 0x412b0
movq %rax, %rcx
movq -0x350(%rbp), %rax
cmpq %rcx, %rax
jae 0x41c7e
movq -0x18(%rbp), %rdi
movq -0x48(%rbp), %rsi
callq 0x42380
movq -0x338(%rbp), %rdi
movq %rax, -0x50(%rbp)
addq $0x8, %rdi
callq 0x42170
movq -0x338(%rbp), %rdi
movq %rax, -0x58(%rbp)
addq $0x8, %rdi
callq 0x421a0
movq %rax, -0x60(%rbp)
leaq -0x58(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x421d0
testb $0x1, %al
jne 0x41817
jmp 0x41bb1
leaq -0x58(%rbp), %rdi
callq 0x423a0
movq %rax, -0x68(%rbp)
movq -0x50(%rbp), %rax
cmpl $0x1, (%rax)
jne 0x41856
movq -0x68(%rbp), %rdi
addq $0x68, %rdi
movq -0x50(%rbp), %rsi
addq $0x8, %rsi
callq 0x423c0
movb %al, -0x351(%rbp)
jmp 0x4184a
movb -0x351(%rbp), %al
testb $0x1, %al
jne 0x4188f
jmp 0x41856
movq -0x50(%rbp), %rax
cmpl $0x2, (%rax)
jne 0x41af5
movq -0x68(%rbp), %rdi
addq $0x68, %rdi
movq -0x50(%rbp), %rsi
addq $0x8, %rsi
callq 0x42430
movb %al, -0x352(%rbp)
jmp 0x41880
movb -0x352(%rbp), %al
testb $0x1, %al
jne 0x4188f
jmp 0x41af5
movq -0x68(%rbp), %rdi
callq 0x42460
movb %al, -0x353(%rbp)
jmp 0x418a0
movb -0x353(%rbp), %al
testb $0x1, %al
jne 0x418af
jmp 0x41adf
movq -0x48(%rbp), %rax
movq %rax, -0x360(%rbp)
movq -0x18(%rbp), %rdi
callq 0x412b0
movq %rax, %rcx
movq -0x360(%rbp), %rax
subq $0x1, %rcx
cmpq %rcx, %rax
je 0x418f0
movq -0x18(%rbp), %rdi
movq -0x48(%rbp), %rsi
addq $0x1, %rsi
callq 0x42380
cmpl $0x0, (%rax)
je 0x41a95
movq -0x50(%rbp), %rdx
addq $0x8, %rdx
leaq 0x3cb00(%rip), %rsi     # 0x7e3ff
leaq -0x98(%rbp), %rdi
callq 0x1a170
jmp 0x4190d
leaq -0x40(%rbp), %rdi
leaq -0x98(%rbp), %rsi
callq 0x18c50
jmp 0x4191f
leaq -0x98(%rbp), %rdi
callq 0xecd8
jmp 0x41add
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x41956
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x98(%rbp), %rdi
callq 0xecd8
movl -0x74(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x41e4a
movq -0x70(%rbp), %rdi
callq 0xe240
movq %rax, -0xa0(%rbp)
movq -0xa0(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq %rax, -0x370(%rbp)
leaq -0x121(%rbp), %rdi
movq %rdi, -0x368(%rbp)
callq 0xeb70
movq -0x370(%rbp), %rsi
movq -0x368(%rbp), %rdx
leaq -0x120(%rbp), %rdi
callq 0x18c80
jmp 0x419bc
leaq 0x3ca5a(%rip), %rdx     # 0x7e41d
leaq -0x100(%rbp), %rdi
leaq -0x120(%rbp), %rsi
callq 0x1ad20
jmp 0x419d8
movq -0x68(%rbp), %rsi
leaq -0x148(%rbp), %rdi
callq 0x424c0
jmp 0x419ea
leaq -0xe0(%rbp), %rdi
leaq -0x100(%rbp), %rsi
leaq -0x148(%rbp), %rdx
callq 0x1b990
jmp 0x41a06
leaq 0x3bfbe(%rip), %rdx     # 0x7d9cb
leaq -0xc0(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x1ad20
jmp 0x41a22
leaq -0x40(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x18c50
jmp 0x41a34
leaq -0xc0(%rbp), %rdi
callq 0xecd8
leaq -0xe0(%rbp), %rdi
callq 0xecd8
leaq -0x148(%rbp), %rdi
callq 0xecd8
leaq -0x100(%rbp), %rdi
callq 0xecd8
leaq -0x120(%rbp), %rdi
callq 0xecd8
leaq -0x121(%rbp), %rdi
callq 0xe710
callq 0xea70
jmp 0x41a83
jmp 0x41a85
jmp 0x41a87
leaq -0x58(%rbp), %rdi
callq 0x422b0
jmp 0x41801
movq -0x68(%rbp), %rax
movq %rax, -0x380(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x378(%rbp)
movq -0x18(%rbp), %rdi
movq -0x48(%rbp), %rsi
incq %rsi
movq %rsi, -0x48(%rbp)
callq 0x42380
movq -0x380(%rbp), %rdi
movq -0x378(%rbp), %rsi
movq %rax, %rdx
addq $0x8, %rdx
callq 0x40440
jmp 0x41adb
jmp 0x41add
jmp 0x41af0
movq -0x68(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x42490
jmp 0x41aee
jmp 0x41af0
jmp 0x41bb1
jmp 0x41a85
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x41b88
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x41b7c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x41b70
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x41b64
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x41b58
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0xecd8
leaq -0xe0(%rbp), %rdi
callq 0xecd8
leaq -0x148(%rbp), %rdi
callq 0xecd8
leaq -0x100(%rbp), %rdi
callq 0xecd8
leaq -0x120(%rbp), %rdi
callq 0xecd8
leaq -0x121(%rbp), %rdi
callq 0xe710
callq 0xea70
jmp 0x41bac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x41e4a
jmp 0x41e4a
leaq -0x58(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x422d0
testb $0x1, %al
jne 0x41bc7
jmp 0x41c6b
movq -0x50(%rbp), %rax
cmpl $0x0, (%rax)
je 0x41bdd
movq -0x338(%rbp), %rax
testb $0x1, 0x5c(%rax)
jne 0x41bf1
movq -0x348(%rbp), %rdi
movq -0x50(%rbp), %rsi
callq 0x40cc0
jmp 0x41bef
jmp 0x41c69
leaq -0x40(%rbp), %rdi
callq 0x18c10
testb $0x1, %al
jne 0x41c00
jmp 0x41c67
movq -0x338(%rbp), %rax
testb $0x1, 0x5c(%rax)
je 0x41c67
movq -0x50(%rbp), %rdx
addq $0x8, %rdx
leaq 0x3c815(%rip), %rsi     # 0x7e431
leaq -0x168(%rbp), %rdi
callq 0x1a170
jmp 0x41c2a
leaq -0x40(%rbp), %rdi
leaq -0x168(%rbp), %rsi
callq 0x18c50
jmp 0x41c3c
leaq -0x168(%rbp), %rdi
callq 0xecd8
jmp 0x41c67
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x168(%rbp), %rdi
callq 0xecd8
jmp 0x41e4a
jmp 0x41c69
jmp 0x41c6b
jmp 0x41c6d
movq -0x48(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
jmp 0x417a1
leaq -0x40(%rbp), %rdi
callq 0x18c10
testb $0x1, %al
jne 0x41e35
leaq -0x2e0(%rbp), %rdi
callq 0xe8d0
jmp 0x41c9d
leaq -0x40(%rbp), %rdi
callq 0x18d50
movq %rax, -0x2f0(%rbp)
leaq -0x2e8(%rbp), %rdi
leaq -0x2f0(%rbp), %rsi
callq 0x18d80
leaq -0x40(%rbp), %rdi
callq 0x18dc0
movq %rax, -0x300(%rbp)
leaq -0x2f8(%rbp), %rdi
leaq -0x300(%rbp), %rsi
callq 0x18d80
leaq -0x2e8(%rbp), %rdi
leaq -0x2f8(%rbp), %rsi
callq 0x18df0
testb $0x1, %al
jne 0x41cff
jmp 0x41d80
leaq -0x40(%rbp), %rdi
callq 0x18d50
movq %rax, -0x308(%rbp)
leaq -0x2e8(%rbp), %rdi
leaq -0x308(%rbp), %rsi
callq 0x42700
testb $0x1, %al
jne 0x41d28
jmp 0x41d50
leaq 0x3ccfa(%rip), %rsi     # 0x7ea29
leaq -0x2e0(%rbp), %rdi
callq 0xe670
jmp 0x41d3d
jmp 0x41d50
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x41e27
leaq -0x2e8(%rbp), %rdi
callq 0x18e30
movq %rax, %rsi
leaq -0x2e0(%rbp), %rdi
callq 0xe5a0
jmp 0x41d6d
jmp 0x41d6f
leaq -0x2e8(%rbp), %rdi
callq 0x18ec0
jmp 0x41ce3
movb $0x1, -0x329(%rbp)
movl $0x10, %edi
callq 0xe310
movq %rax, -0x388(%rbp)
leaq -0x328(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0xe6b0
jmp 0x41dad
movq -0x388(%rbp), %rdi
leaq -0x328(%rbp), %rsi
callq 0xea50
jmp 0x41dc2
movq -0x388(%rbp), %rdi
movb $0x0, -0x329(%rbp)
movq 0x73219(%rip), %rsi     # 0xb4ff0
movq 0x7319a(%rip), %rdx     # 0xb4f78
callq 0xeb10
jmp 0x41e8e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x41e0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x328(%rbp), %rdi
callq 0xecd8
testb $0x1, -0x329(%rbp)
jne 0x41e19
jmp 0x41e25
movq -0x388(%rbp), %rdi
callq 0xe4c0
jmp 0x41e27
leaq -0x2e0(%rbp), %rdi
callq 0xe130
jmp 0x41e4a
movb $0x1, -0x21(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x18ee0
testb $0x1, -0x21(%rbp)
jne 0x41e6d
jmp 0x41e61
leaq -0x40(%rbp), %rdi
callq 0x18ee0
movq -0x348(%rbp), %rdi
callq 0x3a160
jmp 0x41e7d
movq -0x348(%rbp), %rdi
callq 0x3a160
movq -0x340(%rbp), %rax
addq $0x390, %rsp            # imm = 0x390
popq %rbp
retq
movq -0x70(%rbp), %rdi
callq 0xeb60
movq %rax, %rdi
callq 0x1aa10
nop