// File: Se6[P]CmdLineArgs/./CmdLineArgs.h
// Function: CmdLineArgs::getParams(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, char, 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>>>> const&, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, char)
std::vector<std::string> CmdLineArgs::getParams(const std::string &long_name, char short_name,
                                                const std::vector<std::string> &default_vals, bool enforce_default_size,
                                                const std::string &desc, char separator)
{
    // Join the default values with the separator for the usage
    //
    std::ostringstream oss;
    for(unsigned int i=0; i!=default_vals.size(); i++){
        if(i>0)
            oss << ",";
        oss << default_vals[i];
    }
    addUsage(long_name,short_name,oss.str(),desc);

    std::string val;
    std::vector<std::string> vec;

    // First search the long names:
    //
    auto pos = findLongName(long_name);
    if( pos != args_.end() ) {

        if( pos+2  > args_.end() )
            throw std::runtime_error("\nError: parameter --" + long_name + " is not followed by a value");

        pos = args_.erase(pos);
        val = *pos;
        args_.erase(pos);

        vec = split(val, separator);
    }

    // Then search the short names:
    //
    pos = findShortName(short_name);
    if( pos != args_.end() ) {

        if( pos+2 > args_.end() )
            throw std::runtime_error("\nError: parameter -" + std::string(1,short_name) + " is not followed by a value");

        if( pos->size() == 2 )
            pos = args_.erase(pos);
        else {
            pos->erase(pos->find(short_name, 1), 1);
            ++pos;
        }
        val = *pos;
        vec = split(val, separator);
    }

    if (vec.empty())
        return default_vals;

    if ( enforce_default_size && vec.size() == 1 )
        for( unsigned i=1; i<default_vals.size(); ++i)
            vec.push_back(vec[0]);

    if ( enforce_default_size && vec.size() != default_vals.size() ) {
        std::ostringstream oss;
        oss << "\nError: parameter --" << long_name;
        if ( short_name != ' ' )
            oss << " (-" << std::string(1,short_name) << ")";
        oss << " is not followed by " << default_vals.size() << " values as expected.";
        throw std::runtime_error(oss.str());
    }

    return vec;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x620, %rsp            # imm = 0x620
movq %rdi, -0x550(%rbp)
movb %r9b, %al
movq %rdi, %r9
movq %r9, -0x548(%rbp)
movb 0x18(%rbp), %r9b
movq 0x10(%rbp), %r9
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movb %cl, -0x19(%rbp)
movq %r8, -0x28(%rbp)
andb $0x1, %al
movb %al, -0x29(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x540(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0x33f0
movl $0x0, -0x1ac(%rbp)
movl -0x1ac(%rbp), %eax
movq %rax, -0x558(%rbp)
movq -0x28(%rbp), %rdi
callq 0x78e0
movq %rax, %rcx
movq -0x558(%rbp), %rax
cmpq %rcx, %rax
je 0x4e44
cmpl $0x0, -0x1ac(%rbp)
jbe 0x4e0c
leaq 0xb278(%rip), %rsi      # 0x1005d
leaq -0x1a8(%rbp), %rdi
callq 0x32d0
jmp 0x4df3
jmp 0x4e0c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b8(%rbp)
movl %eax, -0x1bc(%rbp)
jmp 0x5842
movq -0x28(%rbp), %rdi
movl -0x1ac(%rbp), %eax
movl %eax, %esi
callq 0x7f70
movq %rax, %rsi
leaq -0x1a8(%rbp), %rdi
callq 0x32b0
jmp 0x4e2e
jmp 0x4e30
movl -0x1ac(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1ac(%rbp)
jmp 0x4db0
movq -0x18(%rbp), %rax
movq %rax, -0x568(%rbp)
movb -0x19(%rbp), %al
movb %al, -0x559(%rbp)
leaq -0x1e0(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0x3300
jmp 0x4e6d
movq -0x568(%rbp), %rsi
movq -0x540(%rbp), %rdi
movb -0x559(%rbp), %al
movq 0x10(%rbp), %r8
movsbl %al, %edx
leaq -0x1e0(%rbp), %rcx
callq 0x4190
jmp 0x4e96
leaq -0x1e0(%rbp), %rdi
callq 0x31d0
leaq -0x200(%rbp), %rdi
callq 0x3400
leaq -0x218(%rbp), %rdi
callq 0x7600
movq -0x540(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x3b90
movq %rax, -0x570(%rbp)
jmp 0x4ed3
movq -0x540(%rbp), %rdi
movq -0x570(%rbp), %rax
movq %rax, -0x220(%rbp)
callq 0x79b0
movq %rax, -0x228(%rbp)
leaq -0x220(%rbp), %rdi
leaq -0x228(%rbp), %rsi
callq 0x7b00
testb $0x1, %al
jne 0x4f10
jmp 0x5164
leaq -0x220(%rbp), %rdi
movl $0x2, %esi
callq 0x7e70
movq -0x540(%rbp), %rdi
movq %rax, -0x230(%rbp)
callq 0x79b0
movq %rax, -0x238(%rbp)
leaq -0x230(%rbp), %rdi
leaq -0x238(%rbp), %rsi
callq 0x7e30
testb $0x1, %al
jne 0x4f57
jmp 0x5087
movb $0x1, -0x279(%rbp)
movl $0x10, %edi
callq 0x3180
movq %rax, -0x578(%rbp)
movq -0x18(%rbp), %rdx
leaq 0xb09e(%rip), %rsi      # 0x10018
leaq -0x278(%rbp), %rdi
callq 0x7d20
jmp 0x4f88
leaq 0xb09e(%rip), %rdx      # 0x1002d
leaq -0x258(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x7cd0
jmp 0x4fa4
movq -0x578(%rbp), %rdi
leaq -0x258(%rbp), %rsi
callq 0x3460
jmp 0x4fb9
movq -0x578(%rbp), %rdi
movb $0x0, -0x279(%rbp)
movq 0x11022(%rip), %rsi     # 0x15ff0
movq 0x10feb(%rip), %rdx     # 0x15fc0
callq 0x34b0
jmp 0x585a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b8(%rbp)
movl %eax, -0x1bc(%rbp)
leaq -0x1e0(%rbp), %rdi
callq 0x31d0
jmp 0x5842
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b8(%rbp)
movl %eax, -0x1bc(%rbp)
jmp 0x582a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b8(%rbp)
movl %eax, -0x1bc(%rbp)
jmp 0x506b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b8(%rbp)
movl %eax, -0x1bc(%rbp)
jmp 0x505f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b8(%rbp)
movl %eax, -0x1bc(%rbp)
leaq -0x258(%rbp), %rdi
callq 0x31d0
leaq -0x278(%rbp), %rdi
callq 0x31d0
testb $0x1, -0x279(%rbp)
jne 0x5076
jmp 0x5082
movq -0x578(%rbp), %rdi
callq 0x3240
jmp 0x582a
leaq -0x290(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x79e0
movq -0x540(%rbp), %rdi
movq -0x290(%rbp), %rsi
callq 0x7c60
movq %rax, -0x580(%rbp)
jmp 0x50b6
movq -0x580(%rbp), %rax
movq %rax, -0x288(%rbp)
movq -0x288(%rbp), %rax
movq %rax, -0x220(%rbp)
leaq -0x220(%rbp), %rdi
callq 0x7c40
movq %rax, %rsi
leaq -0x200(%rbp), %rdi
callq 0x3050
jmp 0x50ef
leaq -0x298(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x79e0
movq -0x540(%rbp), %rdi
movq -0x298(%rbp), %rsi
callq 0x7c60
movq %rax, -0x588(%rbp)
jmp 0x511e
movq -0x588(%rbp), %rax
movq %rax, -0x2a0(%rbp)
movsbl 0x18(%rbp), %edx
leaq -0x2b8(%rbp), %rdi
leaq -0x200(%rbp), %rsi
callq 0x36c0
jmp 0x5145
leaq -0x218(%rbp), %rdi
leaq -0x2b8(%rbp), %rsi
callq 0x7f90
leaq -0x2b8(%rbp), %rdi
callq 0x76b0
movq -0x540(%rbp), %rdi
movsbl -0x19(%rbp), %esi
callq 0x3dd0
movq %rax, -0x590(%rbp)
jmp 0x517d
movq -0x540(%rbp), %rdi
movq -0x590(%rbp), %rax
movq %rax, -0x2c0(%rbp)
movq -0x2c0(%rbp), %rax
movq %rax, -0x220(%rbp)
callq 0x79b0
movq %rax, -0x2c8(%rbp)
leaq -0x220(%rbp), %rdi
leaq -0x2c8(%rbp), %rsi
callq 0x7b00
testb $0x1, %al
jne 0x51c8
jmp 0x548f
leaq -0x220(%rbp), %rdi
movl $0x2, %esi
callq 0x7e70
movq -0x540(%rbp), %rdi
movq %rax, -0x2d0(%rbp)
callq 0x79b0
movq %rax, -0x2d8(%rbp)
leaq -0x2d0(%rbp), %rdi
leaq -0x2d8(%rbp), %rsi
callq 0x7e30
testb $0x1, %al
jne 0x520f
jmp 0x5371
movb $0x1, -0x33a(%rbp)
movl $0x10, %edi
callq 0x3180
movq %rax, -0x5a8(%rbp)
movsbl -0x19(%rbp), %eax
movl %eax, -0x59c(%rbp)
leaq -0x339(%rbp), %rdi
movq %rdi, -0x598(%rbp)
callq 0x34f0
movl -0x59c(%rbp), %edx
movq -0x598(%rbp), %rcx
leaq -0x338(%rbp), %rdi
movl $0x1, %esi
callq 0x7f00
jmp 0x5264
leaq 0xadde(%rip), %rsi      # 0x10049
leaq -0x318(%rbp), %rdi
leaq -0x338(%rbp), %rdx
callq 0x7eb0
jmp 0x5280
leaq 0xada6(%rip), %rdx      # 0x1002d
leaq -0x2f8(%rbp), %rdi
leaq -0x318(%rbp), %rsi
callq 0x7cd0
jmp 0x529c
movq -0x5a8(%rbp), %rdi
leaq -0x2f8(%rbp), %rsi
callq 0x3460
jmp 0x52b1
movq -0x5a8(%rbp), %rdi
movb $0x0, -0x33a(%rbp)
movq 0x10d2a(%rip), %rsi     # 0x15ff0
movq 0x10cf3(%rip), %rdx     # 0x15fc0
callq 0x34b0
jmp 0x585a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b8(%rbp)
movl %eax, -0x1bc(%rbp)
jmp 0x5349
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b8(%rbp)
movl %eax, -0x1bc(%rbp)
jmp 0x533d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b8(%rbp)
movl %eax, -0x1bc(%rbp)
jmp 0x5331
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b8(%rbp)
movl %eax, -0x1bc(%rbp)
leaq -0x2f8(%rbp), %rdi
callq 0x31d0
leaq -0x318(%rbp), %rdi
callq 0x31d0
leaq -0x338(%rbp), %rdi
callq 0x31d0
leaq -0x339(%rbp), %rdi
callq 0x3340
testb $0x1, -0x33a(%rbp)
jne 0x5360
jmp 0x536c
movq -0x5a8(%rbp), %rdi
callq 0x3240
jmp 0x582a
leaq -0x220(%rbp), %rdi
callq 0x7b40
movq %rax, %rdi
callq 0x3200
cmpq $0x2, %rax
jne 0x53d8
leaq -0x350(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x79e0
movq -0x540(%rbp), %rdi
movq -0x350(%rbp), %rsi
callq 0x7c60
movq %rax, -0x5b0(%rbp)
jmp 0x53ba
movq -0x5b0(%rbp), %rax
movq %rax, -0x348(%rbp)
movq -0x348(%rbp), %rax
movq %rax, -0x220(%rbp)
jmp 0x543a
leaq -0x220(%rbp), %rdi
movq %rdi, -0x5c8(%rbp)
callq 0x7b40
movq -0x5c8(%rbp), %rdi
movq %rax, -0x5c0(%rbp)
callq 0x7b40
movq %rax, %rdi
movsbl -0x19(%rbp), %esi
movl $0x1, %edx
movq %rdx, -0x5b8(%rbp)
callq 0x33e0
movq -0x5c0(%rbp), %rdi
movq -0x5b8(%rbp), %rdx
movq %rax, %rsi
callq 0x3090
jmp 0x542e
leaq -0x220(%rbp), %rdi
callq 0x7c20
leaq -0x220(%rbp), %rdi
callq 0x7c40
movq %rax, %rsi
leaq -0x200(%rbp), %rdi
callq 0x3050
jmp 0x5457
movsbl 0x18(%rbp), %edx
leaq -0x368(%rbp), %rdi
leaq -0x200(%rbp), %rsi
callq 0x36c0
jmp 0x5470
leaq -0x218(%rbp), %rdi
leaq -0x368(%rbp), %rsi
callq 0x7f90
leaq -0x368(%rbp), %rdi
callq 0x76b0
leaq -0x218(%rbp), %rdi
callq 0x7fc0
testb $0x1, %al
jne 0x54a1
jmp 0x54c2
movq -0x550(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x8000
jmp 0x54b3
movl $0x1, -0x36c(%rbp)
jmp 0x57f6
testb $0x1, -0x29(%rbp)
je 0x5546
leaq -0x218(%rbp), %rdi
callq 0x78e0
cmpq $0x1, %rax
jne 0x5546
movl $0x1, -0x370(%rbp)
movl -0x370(%rbp), %eax
movq %rax, -0x5d0(%rbp)
movq -0x28(%rbp), %rdi
callq 0x78e0
movq %rax, %rcx
movq -0x5d0(%rbp), %rax
cmpq %rcx, %rax
jae 0x5544
xorl %eax, %eax
movl %eax, %esi
leaq -0x218(%rbp), %rdi
movq %rdi, -0x5d8(%rbp)
callq 0x80f0
movq -0x5d8(%rbp), %rdi
movq %rax, %rsi
callq 0x7640
jmp 0x5531
jmp 0x5533
movl -0x370(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x370(%rbp)
jmp 0x54e4
jmp 0x5546
testb $0x1, -0x29(%rbp)
je 0x57d9
leaq -0x218(%rbp), %rdi
callq 0x78e0
movq %rax, -0x5e0(%rbp)
movq -0x28(%rbp), %rdi
callq 0x78e0
movq %rax, %rcx
movq -0x5e0(%rbp), %rax
cmpq %rcx, %rax
je 0x57d9
leaq -0x4e8(%rbp), %rdi
callq 0x33f0
jmp 0x558d
leaq 0xaa84(%rip), %rsi      # 0x10018
leaq -0x4e8(%rbp), %rdi
callq 0x32d0
movq %rax, -0x5e8(%rbp)
jmp 0x55a9
movq -0x5e8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x32b0
jmp 0x55bb
movsbl -0x19(%rbp), %eax
cmpl $0x20, %eax
je 0x56c6
leaq 0xaa90(%rip), %rsi      # 0x1005f
leaq -0x4e8(%rbp), %rdi
callq 0x32d0
movq %rax, -0x5f0(%rbp)
jmp 0x55e4
movsbl -0x19(%rbp), %eax
movl %eax, -0x5fc(%rbp)
leaq -0x509(%rbp), %rdi
movq %rdi, -0x5f8(%rbp)
callq 0x34f0
movl -0x5fc(%rbp), %edx
movq -0x5f8(%rbp), %rcx
leaq -0x508(%rbp), %rdi
movl $0x1, %esi
callq 0x7f00
jmp 0x5621
movq -0x5f0(%rbp), %rdi
leaq -0x508(%rbp), %rsi
callq 0x32b0
movq %rax, -0x608(%rbp)
jmp 0x563d
movq -0x608(%rbp), %rdi
leaq 0xac6b(%rip), %rsi      # 0x102b6
callq 0x32d0
jmp 0x5652
leaq -0x508(%rbp), %rdi
callq 0x31d0
leaq -0x509(%rbp), %rdi
callq 0x3340
jmp 0x56c6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b8(%rbp)
movl %eax, -0x1bc(%rbp)
jmp 0x57cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b8(%rbp)
movl %eax, -0x1bc(%rbp)
jmp 0x56b5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b8(%rbp)
movl %eax, -0x1bc(%rbp)
leaq -0x508(%rbp), %rdi
callq 0x31d0
leaq -0x509(%rbp), %rdi
callq 0x3340
jmp 0x57cb
leaq 0xa996(%rip), %rsi      # 0x10063
leaq -0x4e8(%rbp), %rdi
callq 0x32d0
movq %rax, -0x610(%rbp)
jmp 0x56e2
movq -0x28(%rbp), %rdi
callq 0x78e0
movq -0x610(%rbp), %rdi
movq %rax, %rsi
callq 0x30a0
movq %rax, -0x618(%rbp)
jmp 0x5703
movq -0x618(%rbp), %rdi
leaq 0xa967(%rip), %rsi      # 0x10078
callq 0x32d0
jmp 0x5718
movb $0x1, -0x531(%rbp)
movl $0x10, %edi
callq 0x3180
movq %rax, -0x620(%rbp)
leaq -0x530(%rbp), %rdi
leaq -0x4e8(%rbp), %rsi
callq 0x3300
jmp 0x5745
movq -0x620(%rbp), %rdi
leaq -0x530(%rbp), %rsi
callq 0x3460
jmp 0x575a
movq -0x620(%rbp), %rdi
movb $0x0, -0x531(%rbp)
movq 0x10881(%rip), %rsi     # 0x15ff0
movq 0x1084a(%rip), %rdx     # 0x15fc0
callq 0x34b0
jmp 0x585a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b8(%rbp)
movl %eax, -0x1bc(%rbp)
jmp 0x57b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b8(%rbp)
movl %eax, -0x1bc(%rbp)
leaq -0x530(%rbp), %rdi
callq 0x31d0
testb $0x1, -0x531(%rbp)
jne 0x57bd
jmp 0x57c9
movq -0x620(%rbp), %rdi
callq 0x3240
jmp 0x57cb
leaq -0x4e8(%rbp), %rdi
callq 0x30b0
jmp 0x582a
movq -0x550(%rbp), %rdi
leaq -0x218(%rbp), %rsi
callq 0x8110
movl $0x1, -0x36c(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x76b0
leaq -0x200(%rbp), %rdi
callq 0x31d0
leaq -0x1a8(%rbp), %rdi
callq 0x30b0
movq -0x548(%rbp), %rax
addq $0x620, %rsp            # imm = 0x620
popq %rbp
retq
leaq -0x218(%rbp), %rdi
callq 0x76b0
leaq -0x200(%rbp), %rdi
callq 0x31d0
leaq -0x1a8(%rbp), %rdi
callq 0x30b0
movq -0x1b8(%rbp), %rdi
callq 0x34e0
nopw (%rax,%rax)