// File: /workspace/github_cpp_makefile_star2_O1/travisdowns[P]avx-turbo/./args.hxx
// Function: bool args::ArgumentParser::ParseArgsValues<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>>(args::FlagBase&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, __gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>&, __gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>, bool, bool, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>&)
bool ParseArgsValues(FlagBase &flag, const std::string &arg, It &it, It end,
                                 const bool allowSeparate, const bool allowJoined,
                                 const bool hasJoined, const std::string &joinedArg,
                                 const bool canDiscardJoined, std::vector<std::string> &values)
            {
                values.clear();

                Nargs nargs = flag.NumberOfArguments();

                if (hasJoined && !allowJoined && nargs.min != 0)
                {
                    return RaiseParseError("Flag '" + arg + "' was passed a joined argument, but these are disallowed");
                }

                if (hasJoined)
                {
                    if (!canDiscardJoined || nargs.max != 0)
                    {
                        values.push_back(joinedArg);
                    }
                } else if (!allowSeparate)
                {
                    if (nargs.min != 0)
                    {
                        return RaiseParseError("Flag '" + arg + "' was passed a separate argument, but these are disallowed");
                    }
                } else
                {
                    auto valueIt = it;
                    ++valueIt;

                    while (valueIt != end &&
                           values.size() < nargs.max &&
                           (nargs.min == nargs.max || ParseOption(*valueIt) == OptionType::Positional))
                    {

                        values.push_back(*valueIt);
                        ++it;
                        ++valueIt;
                    }
                }

                if (values.size() > nargs.max)
                {
                    return RaiseParseError("Passed an argument into a non-argument flag: " + arg);
                } else if (values.size() < nargs.min)
                {
                    if (nargs.min == 1 && nargs.max == 1)
                    {
                        return RaiseParseError("Flag '" + arg + "' requires an argument but received none");
                    } else if (nargs.min == 1)
                    {
                        return RaiseParseError("Flag '" + arg + "' requires at least one argument but received none");
                    } else if (nargs.min != nargs.max)
                    {
                        return RaiseParseError("Flag '" + arg + "' requires at least " + std::to_string(nargs.min) +
                                               " arguments but received " + std::to_string(values.size()));
                    } else
                    {
                        return RaiseParseError("Flag '" + arg + "' requires " + std::to_string(nargs.min) +
                                               " arguments but received " + std::to_string(values.size()));
                    }
                }

                return true;
            }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xf8, %rsp
movl %r9d, %r14d
movq %r8, 0x70(%rsp)
movq %rcx, %rbx
movq %rdx, 0x28(%rsp)
movq %rsi, %r15
movq %rdi, %rbp
movq 0x150(%rsp), %rdi
movb 0x138(%rsp), %r12b
callq 0x107e4
movq (%r15), %rax
movq %r15, %rdi
callq *0x48(%rax)
movq %rax, %r15
movq %rdx, %r13
testb %r12b, %r12b
je 0x100fd
cmpb $0x0, 0x130(%rsp)
jne 0x100fd
testq %r15, %r15
je 0x100fd
leaq 0xe992(%rip), %rsi      # 0x1ea40
leaq 0x30(%rsp), %rbx
movq %rbx, %rdi
movq 0x28(%rsp), %rdx
callq 0xae4a
leaq 0xf4a7(%rip), %rsi      # 0x1f56e
movq %rbx, %rdi
callq 0x6630
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x101a8
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x101af
testb %r12b, %r12b
je 0x10135
cmpb $0x0, 0x148(%rsp)
movq %rbp, %r12
movq 0x150(%rsp), %rbp
je 0x10120
testq %r13, %r13
je 0x10251
movq 0x140(%rsp), %rsi
movq %rbp, %rdi
callq 0x1082a
jmp 0x10251
testb %r14b, %r14b
movq %rbp, %r12
je 0x101ee
movq (%rbx), %r14
addq $0x20, %r14
cmpq 0x70(%rsp), %r14
movq 0x150(%rsp), %rbp
je 0x10251
movq 0x8(%rbp), %rax
subq (%rbp), %rax
sarq $0x5, %rax
cmpq %r13, %rax
jae 0x10251
cmpq %r13, %r15
je 0x10189
movq %r12, %rdi
movq %r14, %rsi
callq 0xf7e8
cmpl $0x2, %eax
jne 0x10251
movq %rbp, %rdi
movq %r14, %rsi
callq 0x1082a
addq $0x20, (%rbx)
addq $0x20, %r14
cmpq 0x70(%rsp), %r14
jne 0x1015b
jmp 0x10251
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
leaq 0x8(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq %rbp, %rdi
callq 0xff34
movl %eax, %ebp
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x101e4
callq 0x6320
leaq 0x40(%rsp), %rax
jmp 0x1028d
testq %r15, %r15
movq 0x150(%rsp), %rbp
je 0x10251
leaq 0xe83e(%rip), %rsi      # 0x1ea40
leaq 0x30(%rsp), %rbx
movq %rbx, %rdi
movq 0x28(%rsp), %rdx
callq 0xae4a
leaq 0xf38c(%rip), %rsi      # 0x1f5a7
movq %rbx, %rdi
callq 0x6630
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x10375
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x1037c
movq 0x8(%rbp), %rax
subq (%rbp), %rax
sarq $0x5, %rax
cmpq %r13, %rax
jbe 0x102af
leaq 0xf379(%rip), %rsi      # 0x1f5e2
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
movq 0x28(%rsp), %rdx
callq 0xae4a
movq %r12, %rdi
movq %rbx, %rsi
callq 0xff34
movl %eax, %ebp
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1029b
callq 0x6320
movl %ebp, %eax
addq $0xf8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movb $0x1, %bpl
cmpq %r15, %rax
jae 0x1029b
movq %r15, %rax
xorq $0x1, %rax
movq %r13, %rcx
xorq $0x1, %rcx
leaq 0xe774(%rip), %rsi      # 0x1ea40
orq %rax, %rcx
jne 0x10320
leaq 0x30(%rsp), %rbx
movq %rbx, %rdi
movq 0x28(%rsp), %rdx
callq 0xae4a
leaq 0xf326(%rip), %rsi      # 0x1f610
movq %rbx, %rdi
callq 0x6630
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x10404
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x1040b
cmpq $0x1, %r15
jne 0x103a5
leaq 0x30(%rsp), %rbx
movq %rbx, %rdi
movq 0x28(%rsp), %rdx
callq 0xae4a
leaq 0xf2fa(%rip), %rsi      # 0x1f639
movq %rbx, %rdi
callq 0x6630
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x10483
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x1048a
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
leaq 0x8(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq %r12, %rdi
callq 0xff34
jmp 0x101d3
leaq 0xd8(%rsp), %rbx
movq %rbx, %rdi
cmpq %r13, %r15
jne 0x10434
movq 0x28(%rsp), %rdx
callq 0xae4a
leaq 0xf2d4(%rip), %rsi      # 0x1f69a
movq %rbx, %rdi
callq 0x6630
movq 0x150(%rsp), %rbx
leaq 0x60(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x104b3
movq %rdx, 0x50(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x60(%rsp)
jmp 0x104ba
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
leaq 0x8(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq %r12, %rdi
callq 0xff34
jmp 0x101d3
movq 0x28(%rsp), %rdx
callq 0xae4a
leaq 0xf227(%rip), %rsi      # 0x1f66c
movq %rbx, %rdi
callq 0x6630
movq 0x150(%rsp), %rbx
leaq 0x60(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1053e
movq %rdx, 0x50(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x60(%rsp)
jmp 0x10545
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
leaq 0x8(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq %r12, %rdi
callq 0xff34
jmp 0x101d3
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, 0x58(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x98(%rsp), %rdi
movq %r15, %rsi
callq 0x1090f
leaq 0xb8(%rsp), %rdi
leaq 0x50(%rsp), %rsi
leaq 0x98(%rsp), %rdx
callq 0x10867
leaq 0xf17e(%rip), %rsi      # 0x1f681
leaq 0xb8(%rsp), %rdi
callq 0x6630
leaq 0x40(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x105c2
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x105c9
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, 0x58(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x98(%rsp), %rdi
movq %r15, %rsi
callq 0x1090f
leaq 0xb8(%rsp), %rdi
leaq 0x50(%rsp), %rsi
leaq 0x98(%rsp), %rdx
callq 0x10867
leaq 0xf0f3(%rip), %rsi      # 0x1f681
leaq 0xb8(%rsp), %rdi
callq 0x6630
leaq 0x40(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x10619
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x10620
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, 0x38(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x8(%rbx), %rsi
subq (%rbx), %rsi
sarq $0x5, %rsi
leaq 0x78(%rsp), %rdi
callq 0x1090f
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rsi
leaq 0x78(%rsp), %rdx
callq 0x10867
leaq 0x8(%rsp), %rsi
movq %r12, %rdi
callq 0xff34
jmp 0x1066e
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, 0x38(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x8(%rbx), %rsi
subq (%rbx), %rsi
sarq $0x5, %rsi
leaq 0x78(%rsp), %rdi
callq 0x1090f
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rsi
leaq 0x78(%rsp), %rdx
callq 0x10867
leaq 0x8(%rsp), %rsi
movq %r12, %rdi
callq 0xff34
movl %eax, %ebp
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10683
callq 0x6320
leaq 0x88(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10699
callq 0x6320
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x106a8
callq 0x6320
leaq 0xc8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x106be
callq 0x6320
leaq 0xa8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x106d4
callq 0x6320
movq 0x50(%rsp), %rdi
cmpq %r14, %rdi
je 0x106e3
callq 0x6320
leaq 0xe8(%rsp), %rax
jmp 0x1028d
jmp 0x106f2
movq %rax, %rbx
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1070f
callq 0x6320
jmp 0x1070f
jmp 0x1070c
movq %rax, %rbx
leaq 0x88(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1072c
callq 0x6320
jmp 0x1072c
jmp 0x10729
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x10742
callq 0x6320
jmp 0x10742
jmp 0x1073f
movq %rax, %rbx
leaq 0xc8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1075f
callq 0x6320
jmp 0x1075f
jmp 0x1075c
movq %rax, %rbx
leaq 0xa8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1077c
callq 0x6320
jmp 0x1077c
jmp 0x10779
movq %rax, %rbx
movq 0x50(%rsp), %rdi
cmpq %r14, %rdi
je 0x10792
callq 0x6320
jmp 0x10792
jmp 0x1078f
movq %rax, %rbx
leaq 0xe8(%rsp), %rax
jmp 0x107ce
jmp 0x107b2
jmp 0x107c6
jmp 0x107b2
jmp 0x107c6
jmp 0x107b2
jmp 0x107c6
movq %rax, %rbx
leaq 0x18(%rsp), %rax
jmp 0x107ce
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x107c9
callq 0x6320
jmp 0x107c9
movq %rax, %rbx
leaq 0x40(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x107dc
callq 0x6320
movq %rbx, %rdi
callq 0x65f0