// File: /workspace/github_cpp_makefile_star2_O1/thierry7100[P]CutOptim/include/cxxopts.hpp
// Function: void cxxopts::values::integer_parser<int>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, int&)
void
    integer_parser(const std::string& text, T& value)
    {
      std::smatch match;
      std::regex_match(text, match, integer_pattern);

      if (match.length() == 0)
      {
        throw argument_incorrect_type(text);
      }

      if (match.length(4) > 0)
      {
        value = 0;
        return;
      }

      using US = typename std::make_unsigned<T>::type;

      constexpr auto umax = (std::numeric_limits<US>::max)();
      constexpr bool is_signed = std::numeric_limits<T>::is_signed;
      const bool negative = match.length(1) > 0;
      const uint8_t base = match.length(2) > 0 ? 16 : 10;

      auto value_match = match[3];

      US result = 0;

      for (auto iter = value_match.first; iter != value_match.second; ++iter)
      {
        US digit = 0;

        if (*iter >= '0' && *iter <= '9')
        {
          digit = *iter - '0';
        }
        else if (base == 16 && *iter >= 'a' && *iter <= 'f')
        {
          digit = *iter - 'a' + 10;
        }
        else if (base == 16 && *iter >= 'A' && *iter <= 'F')
        {
          digit = *iter - 'A' + 10;
        }
        else
        {
          throw argument_incorrect_type(text);
        }

        if (umax - digit < result * base)
        {
          throw argument_incorrect_type(text);
        }

        result = result * base + digit;
      }

      detail::check_signed_range<T>(negative, result, text);

      if (negative)
      {
        value = checked_negate<T>(result,
          text,
          std::integral_constant<bool, is_signed>());
      }
      else
      {
        value = result;
      }
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x38, %rsp
movq %rsi, %r14
movq %rdi, %rbx
xorps %xmm0, %xmm0
leaq 0x10(%rsp), %rdx
movaps %xmm0, 0x10(%rdx)
movaps %xmm0, (%rdx)
movq (%rdi), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
leaq 0x2d859(%rip), %rcx     # 0x52910
xorl %r8d, %r8d
callq 0x22461
movq 0x10(%rsp), %rax
movq 0x18(%rsp), %rdx
movq %rdx, %rsi
subq %rax, %rsi
leaq -0x48(%rdx), %rcx
cmpq $0x48, %rsi
movq %rax, %rdi
cmoveq %rcx, %rdi
movq %rdx, %rsi
subq %rax, %rsi
cmoveq %rcx, %rdi
cmpb $0x1, 0x10(%rdi)
jne 0x25302
movq (%rdi), %r8
cmpq %r8, 0x8(%rdi)
je 0x25302
xorl %edi, %edi
cmpq %rdx, %rax
je 0x25129
movq %rsi, %r8
sarq $0x3, %r8
movabsq $-0x5555555555555555, %r9 # imm = 0xAAAAAAAAAAAAAAAB
imulq %r8, %r9
addq $-0x8, %r9
cmpq $-0x5, %r9
setb %r9b
jmp 0x2512c
xorl %r9d, %r9d
leaq 0x60(%rax), %r8
testb %r9b, %r9b
cmoveq %rcx, %r8
cmpb $0x1, 0x10(%r8)
jne 0x2514e
movq 0x8(%r8), %r9
subq (%r8), %r9
testq %r9, %r9
jg 0x25295
cmpq %rdx, %rax
je 0x25176
movq %rsi, %rdi
sarq $0x3, %rdi
movabsq $-0x5555555555555555, %r8 # imm = 0xAAAAAAAAAAAAAAAB
imulq %rdi, %r8
addq $-0x5, %r8
cmpq $-0x2, %r8
setb %dil
jmp 0x25178
xorl %edi, %edi
leaq 0x18(%rax), %r8
testb %dil, %dil
cmoveq %rcx, %r8
movq 0x8(%r8), %rdi
subq (%r8), %rdi
testq %rdi, %rdi
setg %r15b
cmpq %rdx, %rax
je 0x251b9
movq %rsi, %rdi
sarq $0x3, %rdi
movabsq $-0x5555555555555555, %r9 # imm = 0xAAAAAAAAAAAAAAAB
imulq %rdi, %r9
addq $-0x6, %r9
cmpq $-0x3, %r9
setb %dil
jmp 0x251bb
xorl %edi, %edi
leaq 0x30(%rax), %r9
testb %dil, %dil
cmoveq %rcx, %r9
movq 0x8(%r9), %rdi
subq (%r9), %rdi
testq %rdi, %rdi
setg %dil
xorl %ebp, %ebp
cmpq %rdx, %rax
je 0x251fa
sarq $0x3, %rsi
movabsq $-0x5555555555555555, %rdx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rsi, %rdx
addq $-0x7, %rdx
cmpq $-0x4, %rdx
setb %dl
jmp 0x251fc
xorl %edx, %edx
andb 0x10(%r8), %r15b
addq $0x48, %rax
testb %dl, %dl
cmovneq %rax, %rcx
movq (%rcx), %rax
movq 0x8(%rcx), %rcx
cmpq %rax, %rcx
je 0x25278
andb 0x10(%r9), %dil
movl $0x10, %esi
movl $0xa, %edx
cmovnel %esi, %edx
xorl %ebp, %ebp
movzbl (%rax), %esi
leal -0x30(%rsi), %r9d
movl $0xffffffd0, %r8d       # imm = 0xFFFFFFD0
cmpb $0xa, %r9b
jb 0x25265
testb %dil, %dil
je 0x252d4
leal -0x61(%rsi), %r9d
movl $0xffffffa9, %r8d       # imm = 0xFFFFFFA9
cmpb $0x6, %r9b
jb 0x25265
leal -0x41(%rsi), %r9d
movl $0xffffffc9, %r8d       # imm = 0xFFFFFFC9
cmpb $0x6, %r9b
jae 0x252d4
addl %esi, %r8d
imull %edx, %ebp
addl %r8d, %ebp
jb 0x252ba
incq %rax
cmpq %rcx, %rax
jne 0x25229
movzbl %r15b, %esi
leaq 0xf(%rsp), %rdi
movl %ebp, %edx
movq %rbx, %rcx
callq 0x25368
movl %ebp, %edi
negl %edi
testb %r15b, %r15b
cmovel %ebp, %edi
movl %edi, (%r14)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x252af
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x7440
addq $0x38, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movl $0x28, %edi
callq 0x7210
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x221f0
jmp 0x252ec
movl $0x28, %edi
callq 0x7210
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x221f0
leaq 0x2c5ad(%rip), %rsi     # 0x518a0
leaq -0x2ec8(%rip), %rdx     # 0x22432
movq %r14, %rdi
callq 0x7700
movl $0x28, %edi
callq 0x7210
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x221f0
leaq 0x2c57f(%rip), %rsi     # 0x518a0
leaq -0x2ef6(%rip), %rdx     # 0x22432
movq %r14, %rdi
callq 0x7700
jmp 0x25345
jmp 0x25338
jmp 0x25345
jmp 0x25338
movq %rax, %rbx
movq %r14, %rdi
callq 0x7330
jmp 0x25348
movq %rax, %rbx
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x2535f
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x7440
movq %rbx, %rdi
callq 0x7730
nop