// File: /workspace/github_cpp_makefile_star2_O2/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 %r12
pushq %rbx
subq $0x20, %rsp
movq %rsi, %r14
movq %rdi, %rbx
xorps %xmm0, %xmm0
movq %rsp, %rsi
movaps %xmm0, 0x10(%rsi)
movaps %xmm0, (%rsi)
leaq 0x2cd22(%rip), %rdx     # 0x4d940
xorl %ecx, %ecx
callq 0x1dcef
movq %rsp, %rdi
xorl %esi, %esi
callq 0x20dd6
testq %rax, %rax
je 0x20d7d
movq %rsp, %rdi
pushq $0x4
popq %rsi
callq 0x20dd6
xorl %ecx, %ecx
testq %rax, %rax
jg 0x20d21
movq %rsp, %rdi
pushq $0x1
popq %rsi
callq 0x20dd6
movq %rax, %r15
movq %rsp, %rdi
pushq $0x2
popq %rsi
callq 0x20dd6
movq %rax, %rcx
movq (%rsp), %rdi
movq 0x8(%rsp), %rsi
subq %rdi, %rsi
je 0x20c94
pushq $0x18
popq %r8
movq %rsi, %rax
cqto
idivq %r8
addq $-0x7, %rax
cmpq $-0x5, %rax
ja 0x20c94
addq $0x48, %rdi
jmp 0x20c9b
addq %rsi, %rdi
addq $-0x48, %rdi
testq %rcx, %rcx
movq (%rdi), %rax
movq 0x8(%rdi), %rdx
pushq $0x10
popq %rdi
pushq $0xa
popq %rsi
cmovgl %edi, %esi
xorl %ebp, %ebp
pushq $-0x30
popq %rdi
pushq $-0x57
popq %r8
pushq $-0x37
popq %r9
cmpq %rdx, %rax
je 0x20d04
movzbl (%rax), %r10d
leal -0x30(%r10), %r12d
movl %edi, %r11d
cmpb $0xa, %r12b
jb 0x20cf4
testq %rcx, %rcx
jle 0x20d51
cmpb $0x61, %r10b
jl 0x20ce7
movl %r8d, %r11d
cmpb $0x67, %r10b
jb 0x20cf4
jmp 0x20d51
leal -0x41(%r10), %r12d
movl %r9d, %r11d
cmpb $0x6, %r12b
jae 0x20d51
addl %r10d, %r11d
imull %esi, %ebp
addl %r11d, %ebp
jb 0x20d39
incq %rax
jmp 0x20cbb
xorl %edi, %edi
testq %r15, %r15
setg %dil
movl %ebp, %esi
movq %rbx, %rdx
callq 0x20e27
movl %ebp, %ecx
negl %ecx
testq %r15, %r15
cmovlel %ebp, %ecx
movl %ecx, (%r14)
movq %rsp, %rdi
callq 0x1e2b0
addq $0x20, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
pushq $0x28
popq %rdi
callq 0x8210
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x1dd0a
jmp 0x20d67
pushq $0x28
popq %rdi
callq 0x8210
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x1dd0a
leaq 0x2bb52(%rip), %rsi     # 0x4c8c0
leaq -0x2f7b(%rip), %rdx     # 0x1ddfa
movq %r14, %rdi
callq 0x8730
pushq $0x28
popq %rdi
callq 0x8210
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x1dd0a
leaq 0x2bb26(%rip), %rsi     # 0x4c8c0
leaq -0x2fa7(%rip), %rdx     # 0x1ddfa
movq %r14, %rdi
callq 0x8730
jmp 0x20dc2
jmp 0x20dc2
jmp 0x20dc2
jmp 0x20db5
jmp 0x20dc2
jmp 0x20db5
movq %rax, %rbx
movq %r14, %rdi
callq 0x8350
jmp 0x20dc5
movq %rax, %rbx
movq %rsp, %rdi
callq 0x1e2b0
movq %rbx, %rdi
callq 0x8770
nop