// File: /workspace/github_cpp_makefile_star2_O3/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 0x105e0
movq (%r15), %rax
movq %r15, %rdi
callq *0x48(%rax)
movq %rax, %r15
movq %rdx, %r13
testb %r12b, %r12b
je 0xfef9
cmpb $0x0, 0x130(%rsp)
jne 0xfef9
testq %r15, %r15
je 0xfef9
leaq 0xeba6(%rip), %rsi      # 0x1ea50
leaq 0x30(%rsp), %rbx
movq %rbx, %rdi
movq 0x28(%rsp), %rdx
callq 0xae00
leaq 0xf6bb(%rip), %rsi      # 0x1f57e
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 0xffa4
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0xffab
testb %r12b, %r12b
je 0xff31
cmpb $0x0, 0x148(%rsp)
movq %rbp, %r12
movq 0x150(%rsp), %rbp
je 0xff1c
testq %r13, %r13
je 0x1004d
movq 0x140(%rsp), %rsi
movq %rbp, %rdi
callq 0x10626
jmp 0x1004d
testb %r14b, %r14b
movq %rbp, %r12
je 0xffea
movq (%rbx), %r14
addq $0x20, %r14
cmpq 0x70(%rsp), %r14
movq 0x150(%rsp), %rbp
je 0x1004d
movq 0x8(%rbp), %rax
subq (%rbp), %rax
sarq $0x5, %rax
cmpq %r13, %rax
jae 0x1004d
cmpq %r13, %r15
je 0xff85
movq %r12, %rdi
movq %r14, %rsi
callq 0xf64a
cmpl $0x2, %eax
jne 0x1004d
movq %rbp, %rdi
movq %r14, %rsi
callq 0x10626
addq $0x20, (%rbx)
addq $0x20, %r14
cmpq 0x70(%rsp), %r14
jne 0xff57
jmp 0x1004d
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 0xfd64
movl %eax, %ebp
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0xffe0
callq 0x6320
leaq 0x40(%rsp), %rax
jmp 0x10089
testq %r15, %r15
movq 0x150(%rsp), %rbp
je 0x1004d
leaq 0xea52(%rip), %rsi      # 0x1ea50
leaq 0x30(%rsp), %rbx
movq %rbx, %rdi
movq 0x28(%rsp), %rdx
callq 0xae00
leaq 0xf5a0(%rip), %rsi      # 0x1f5b7
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 0x10171
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x10178
movq 0x8(%rbp), %rax
subq (%rbp), %rax
sarq $0x5, %rax
cmpq %r13, %rax
jbe 0x100ab
leaq 0xf58d(%rip), %rsi      # 0x1f5f2
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
movq 0x28(%rsp), %rdx
callq 0xae00
movq %r12, %rdi
movq %rbx, %rsi
callq 0xfd64
movl %eax, %ebp
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10097
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 0x10097
movq %r15, %rax
xorq $0x1, %rax
movq %r13, %rcx
xorq $0x1, %rcx
leaq 0xe988(%rip), %rsi      # 0x1ea50
orq %rax, %rcx
jne 0x1011c
leaq 0x30(%rsp), %rbx
movq %rbx, %rdi
movq 0x28(%rsp), %rdx
callq 0xae00
leaq 0xf53a(%rip), %rsi      # 0x1f620
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 0x10200
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x10207
cmpq $0x1, %r15
jne 0x101a1
leaq 0x30(%rsp), %rbx
movq %rbx, %rdi
movq 0x28(%rsp), %rdx
callq 0xae00
leaq 0xf50e(%rip), %rsi      # 0x1f649
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 0x1027f
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x10286
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 0xfd64
jmp 0xffcf
leaq 0xd8(%rsp), %rbx
movq %rbx, %rdi
cmpq %r13, %r15
jne 0x10230
movq 0x28(%rsp), %rdx
callq 0xae00
leaq 0xf4e8(%rip), %rsi      # 0x1f6aa
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 0x102af
movq %rdx, 0x50(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x60(%rsp)
jmp 0x102b6
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 0xfd64
jmp 0xffcf
movq 0x28(%rsp), %rdx
callq 0xae00
leaq 0xf43b(%rip), %rsi      # 0x1f67c
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 0x1033a
movq %rdx, 0x50(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x60(%rsp)
jmp 0x10341
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 0xfd64
jmp 0xffcf
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 0x1070b
leaq 0xb8(%rsp), %rdi
leaq 0x50(%rsp), %rsi
leaq 0x98(%rsp), %rdx
callq 0x10663
leaq 0xf392(%rip), %rsi      # 0x1f691
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 0x103be
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x103c5
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 0x1070b
leaq 0xb8(%rsp), %rdi
leaq 0x50(%rsp), %rsi
leaq 0x98(%rsp), %rdx
callq 0x10663
leaq 0xf307(%rip), %rsi      # 0x1f691
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 0x10415
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x1041c
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 0x1070b
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rsi
leaq 0x78(%rsp), %rdx
callq 0x10663
leaq 0x8(%rsp), %rsi
movq %r12, %rdi
callq 0xfd64
jmp 0x1046a
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 0x1070b
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rsi
leaq 0x78(%rsp), %rdx
callq 0x10663
leaq 0x8(%rsp), %rsi
movq %r12, %rdi
callq 0xfd64
movl %eax, %ebp
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1047f
callq 0x6320
leaq 0x88(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10495
callq 0x6320
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x104a4
callq 0x6320
leaq 0xc8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x104ba
callq 0x6320
leaq 0xa8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x104d0
callq 0x6320
movq 0x50(%rsp), %rdi
cmpq %r14, %rdi
je 0x104df
callq 0x6320
leaq 0xe8(%rsp), %rax
jmp 0x10089
jmp 0x104ee
movq %rax, %rbx
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1050b
callq 0x6320
jmp 0x1050b
jmp 0x10508
movq %rax, %rbx
leaq 0x88(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10528
callq 0x6320
jmp 0x10528
jmp 0x10525
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x1053e
callq 0x6320
jmp 0x1053e
jmp 0x1053b
movq %rax, %rbx
leaq 0xc8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1055b
callq 0x6320
jmp 0x1055b
jmp 0x10558
movq %rax, %rbx
leaq 0xa8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10578
callq 0x6320
jmp 0x10578
jmp 0x10575
movq %rax, %rbx
movq 0x50(%rsp), %rdi
cmpq %r14, %rdi
je 0x1058e
callq 0x6320
jmp 0x1058e
jmp 0x1058b
movq %rax, %rbx
leaq 0xe8(%rsp), %rax
jmp 0x105ca
jmp 0x105ae
jmp 0x105c2
jmp 0x105ae
jmp 0x105c2
jmp 0x105ae
jmp 0x105c2
movq %rax, %rbx
leaq 0x18(%rsp), %rax
jmp 0x105ca
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x105c5
callq 0x6320
jmp 0x105c5
movq %rax, %rbx
leaq 0x40(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x105d8
callq 0x6320
movq %rbx, %rdi
callq 0x65f0