// File: /workspace/github_cpp_makefile_star2_O3/Se6[P]CmdLineArgs/./CmdLineArgs.h
// Function: int CmdLineArgs::getParam<int>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, char, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
T CmdLineArgs::getParam(const std::string &long_name, char short_name, T default_value, const std::string &desc)
{
    T val;
    std::ostringstream oss;
    oss << default_value;
    addUsage(long_name, short_name, oss.str(), desc);

    // 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);

    } else {

        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;
            }
        }
    }

    if ( pos != args_.end() ) {

        std::istringstream ss(*pos);
        ss >> val;

        if( ss.fail() )
            throw std::runtime_error("\nError: parameter --" + long_name + " is not followed by a correct value");

        if( !ss.eof() ) {
            std::stringstream sshex;
            sshex << std::hex << *pos;
            sshex >> val;

            if(sshex.fail())
                throw std::runtime_error("\nError: parameter --" + long_name + " is not followed by a correct value");

            if(!sshex.eof())
                throw std::runtime_error("\nError: parameter --" + long_name + " has an incorrect value");
        }

        args_.erase(pos);
        return val;

    } else
        return default_value;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x4c8, %rsp            # imm = 0x4C8
movq %r8, %r15
movl %ecx, %ebp
movl %edx, %r12d
movq %rsi, %rbx
movq %rdi, %r14
leaq 0x350(%rsp), %r13
movq %r13, %rdi
callq 0x32a0
movq %r13, %rdi
movl %ebp, %esi
callq 0x3390
leaq 0x358(%rsp), %rsi
leaq 0x48(%rsp), %rdi
callq 0x3300
movsbl %r12b, %r12d
leaq 0x48(%rsp), %rcx
movq %r14, %rdi
movq %rbx, %rsi
movl %r12d, %edx
movq %r15, %r8
callq 0x3be6
leaq 0x58(%rsp), %r13
movq -0x10(%r13), %rdi
cmpq %r13, %rdi
je 0x686a
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3220
movq %r14, %rdi
movq %rbx, %rsi
callq 0x38ec
movq 0x8(%r14), %rcx
cmpq %rcx, %rax
je 0x69cc
leaq 0x40(%rax), %rdx
cmpq %rcx, %rdx
ja 0x6a34
movq %r14, %rdi
movq %rax, %rsi
callq 0x7a8c
movq %rax, %r15
cmpq 0x8(%r14), %r15
je 0x6997
leaq 0x1d0(%rsp), %rdi
movq %r15, %rsi
movl $0x8, %edx
callq 0x3360
leaq 0x1d0(%rsp), %rdi
leaq 0x24(%rsp), %rsi
callq 0x3130
movq 0x1d0(%rsp), %rax
movq -0x18(%rax), %rax
movl 0x1f0(%rsp,%rax), %eax
testb $0x5, %al
jne 0x6a91
testb $0x2, %al
jne 0x6967
leaq 0x48(%rsp), %rdi
callq 0x3160
leaq 0x58(%rsp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
movl 0x70(%rsp,%rax), %ecx
andl $-0x4b, %ecx
orl $0x8, %ecx
movl %ecx, 0x70(%rsp,%rax)
movq (%r15), %rsi
movq 0x8(%r15), %rdx
callq 0x3260
leaq 0x48(%rsp), %rdi
leaq 0x24(%rsp), %rsi
callq 0x3130
movq 0x48(%rsp), %rax
movq -0x18(%rax), %rax
movl 0x68(%rsp,%rax), %eax
testb $0x5, %al
jne 0x6ae4
testb $0x2, %al
je 0x6b3e
movq 0x7648(%rip), %rsi      # 0xdf98
leaq 0x48(%rsp), %rdi
callq 0x31a0
leaq 0xc8(%rsp), %rdi
callq 0x3090
movq %r14, %rdi
movq %r15, %rsi
callq 0x7a8c
movl 0x24(%rsp), %ebp
movq 0x7633(%rip), %rsi      # 0xdfb0
leaq 0x1d0(%rsp), %rdi
callq 0x32b0
leaq 0x248(%rsp), %rdi
callq 0x3090
movq 0x7622(%rip), %rsi      # 0xdfc0
leaq 0x350(%rsp), %rdi
callq 0x3110
leaq 0x3c0(%rsp), %rdi
callq 0x3090
movl %ebp, %eax
addq $0x4c8, %rsp            # imm = 0x4C8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %r14, %rdi
movl %r12d, %esi
callq 0x3a52
movq %rax, %r15
movq 0x8(%r14), %rax
cmpq %rax, %r15
je 0x689d
leaq 0x40(%r15), %rcx
cmpq %rax, %rcx
ja 0x6b98
cmpq $0x2, 0x8(%r15)
jne 0x6a0b
movq %r14, %rdi
movq %r15, %rsi
callq 0x7a8c
jmp 0x689a
movl $0x1, %edx
movq %r15, %rdi
movl %r12d, %esi
callq 0x3290
movl $0x1, %edx
movq %r15, %rdi
movq %rax, %rsi
callq 0x3050
addq $0x20, %r15
jmp 0x689d
movl $0x10, %edi
callq 0x30f0
movq %rax, %r14
leaq 0x35ec(%rip), %rsi      # 0xa034
leaq 0x1d0(%rsp), %rdi
movq %rbx, %rdx
callq 0x64c9
leaq 0x35ea(%rip), %rsi      # 0xa049
leaq 0x1d0(%rsp), %rdi
callq 0x33e0
movq %r13, 0x48(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x6c0e
movups (%rcx), %xmm0
movups %xmm0, (%r13)
jmp 0x6c1b
movl $0x10, %edi
callq 0x30f0
movq %rax, %r14
leaq 0x358f(%rip), %rsi      # 0xa034
movq %rsp, %rdi
movq %rbx, %rdx
callq 0x64c9
leaq 0x3836(%rip), %rsi      # 0xa2ed
movq %rsp, %rdi
callq 0x33e0
movq %r13, 0x48(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x6c5f
movups (%rcx), %xmm0
movups %xmm0, (%r13)
jmp 0x6c6c
movl $0x10, %edi
callq 0x30f0
movq %rax, %r14
leaq 0x353c(%rip), %rsi      # 0xa034
leaq 0x28(%rsp), %rdi
movq %rbx, %rdx
callq 0x64c9
leaq 0x37e1(%rip), %rsi      # 0xa2ed
leaq 0x28(%rsp), %rdi
callq 0x33e0
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x6cb0
movups (%rcx), %xmm0
movups %xmm0, (%r15)
jmp 0x6cbc
movl $0x10, %edi
callq 0x30f0
movq %rax, %r14
leaq 0x34e2(%rip), %rsi      # 0xa034
leaq 0x28(%rsp), %rdi
movq %rbx, %rdx
callq 0x64c9
leaq 0x376e(%rip), %rsi      # 0xa2d4
leaq 0x28(%rsp), %rdi
callq 0x33e0
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x6cfe
movups (%rcx), %xmm0
movups %xmm0, (%r15)
jmp 0x6d0a
movl $0x10, %edi
callq 0x30f0
movq %rax, %r14
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movq %rsp, %rdi
movl $0x1, %esi
movl %r12d, %edx
callq 0x3270
leaq 0x34a0(%rip), %rsi      # 0xa065
leaq 0x1d0(%rsp), %rdi
movq %rsp, %rdx
callq 0x6551
leaq 0x346d(%rip), %rsi      # 0xa049
leaq 0x1d0(%rsp), %rdi
callq 0x33e0
movq %r13, 0x48(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x6d49
movups (%rcx), %xmm0
movups %xmm0, (%r13)
jmp 0x6d56
movq %rdx, 0x48(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x58(%rsp)
movq 0x8(%rax), %rdx
leaq 0x48(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movb $0x1, %bpl
movq %r14, %rdi
callq 0x3330
xorl %ebp, %ebp
movq 0x73a5(%rip), %rsi      # 0xdff0
movq 0x7366(%rip), %rdx      # 0xdfb8
movq %r14, %rdi
callq 0x3380
jmp 0x6d95
movq %rdx, 0x48(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x58(%rsp)
movq 0x8(%rax), %rdx
leaq 0x48(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movb $0x1, %bpl
movq %r14, %rdi
callq 0x3330
xorl %ebp, %ebp
movq 0x7354(%rip), %rsi      # 0xdff0
movq 0x7315(%rip), %rdx      # 0xdfb8
movq %r14, %rdi
callq 0x3380
jmp 0x6d95
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
movq 0x8(%rax), %rdx
movq %rsp, %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movb $0x1, %bpl
movq %r14, %rdi
callq 0x3330
xorl %ebp, %ebp
movq 0x7306(%rip), %rsi      # 0xdff0
movq 0x72c7(%rip), %rdx      # 0xdfb8
movq %r14, %rdi
callq 0x3380
jmp 0x6d95
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
movq 0x8(%rax), %rdx
movq %rsp, %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movb $0x1, %bpl
movq %r14, %rdi
callq 0x3330
xorl %ebp, %ebp
movq 0x72b8(%rip), %rsi      # 0xdff0
movq 0x7279(%rip), %rdx      # 0xdfb8
movq %r14, %rdi
callq 0x3380
jmp 0x6d95
movq %rdx, 0x48(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x58(%rsp)
movq 0x8(%rax), %rdx
leaq 0x48(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movb $0x1, %bpl
movq %r14, %rdi
callq 0x3330
xorl %ebp, %ebp
movq 0x726a(%rip), %rsi      # 0xdff0
movq 0x722b(%rip), %rdx      # 0xdfb8
movq %r14, %rdi
callq 0x3380
movq %rax, %rbx
movq 0x48(%rsp), %rdi
cmpq %r13, %rdi
je 0x6db7
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3220
jmp 0x6db7
movq %rax, %rbx
movb $0x1, %bpl
leaq 0x1e0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6dd8
movq 0x1e0(%rsp), %rsi
incq %rsi
callq 0x3220
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x6f25
movq 0x10(%rsp), %rsi
jmp 0x6f1d
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x6f67
movq 0x10(%rsp), %rsi
jmp 0x6f4b
jmp 0x6e0d
jmp 0x6e4b
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x6e26
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3220
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6e41
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3220
testb %bpl, %bpl
jne 0x6e7a
jmp 0x6f74
movq %rax, %rbx
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6e7a
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3220
jmp 0x6e7a
jmp 0x6fbc
jmp 0x6f64
jmp 0x6e77
movq %rax, %rbx
movq %r14, %rdi
callq 0x3190
jmp 0x6f74
movq %rax, %rbx
movq 0x48(%rsp), %rdi
cmpq %r13, %rdi
je 0x6ea1
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3220
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6ebc
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3220
testb %bpl, %bpl
jne 0x6f5a
jmp 0x6fc4
movq %rax, %rbx
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6f5a
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3220
jmp 0x6f5a
movq %rax, %rbx
movq 0x48(%rsp), %rdi
cmpq %r13, %rdi
je 0x6f04
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3220
leaq 0x1e0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6f25
movq 0x1e0(%rsp), %rsi
incq %rsi
callq 0x3220
testb %bpl, %bpl
jne 0x6f67
jmp 0x6fe5
movq %rax, %rbx
leaq 0x1e0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6f67
movq 0x1e0(%rsp), %rsi
incq %rsi
callq 0x3220
jmp 0x6f67
jmp 0x6fc1
movq %rax, %rbx
movq %r14, %rdi
callq 0x3190
jmp 0x6fc4
movq %rax, %rbx
movq %r14, %rdi
callq 0x3190
jmp 0x6fe5
movq %rax, %rbx
movq 0x701d(%rip), %rsi      # 0xdf98
leaq 0x48(%rsp), %rdi
callq 0x31a0
leaq 0xc8(%rsp), %rdi
callq 0x3090
jmp 0x6fc4
jmp 0x6fbc
jmp 0x6fbc
movq %rax, %rbx
leaq 0x58(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6fe5
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3220
jmp 0x6fe5
jmp 0x6fbc
jmp 0x6fbc
movq %rax, %rbx
jmp 0x6fe5
movq %rax, %rbx
movq 0x6fe5(%rip), %rsi      # 0xdfb0
leaq 0x1d0(%rsp), %rdi
callq 0x32b0
leaq 0x248(%rsp), %rdi
callq 0x3090
movq 0x6fd4(%rip), %rsi      # 0xdfc0
leaq 0x350(%rsp), %rdi
callq 0x3110
leaq 0x3c0(%rsp), %rdi
callq 0x3090
movq %rbx, %rdi
callq 0x33a0