// File: DoubleString[P]RtConverter/src/Json/json_reader.cpp
// Function: Json::Reader::readNumber()
void Reader::readNumber() {
  const char* p = current_;
  char c = '0'; // stopgap for already consumed character
  // integral part
  while (c >= '0' && c <= '9')
    c = (current_ = p) < end_ ? *p++ : '\0';
  // fractional part
  if (c == '.') {
    c = (current_ = p) < end_ ? *p++ : '\0';
    while (c >= '0' && c <= '9')
      c = (current_ = p) < end_ ? *p++ : '\0';
  }
  // exponential part
  if (c == 'e' || c == 'E') {
    c = (current_ = p) < end_ ? *p++ : '\0';
    if (c == '+' || c == '-')
      c = (current_ = p) < end_ ? *p++ : '\0';
    while (c >= '0' && c <= '9')
      c = (current_ = p) < end_ ? *p++ : '\0';
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x20(%rbp)
movq 0xd0(%rax), %rax
movq %rax, -0x10(%rbp)
movb $0x30, -0x11(%rbp)
movsbl -0x11(%rbp), %ecx
xorl %eax, %eax
cmpl $0x30, %ecx
movb %al, -0x21(%rbp)
jl 0xc41a
movsbl -0x11(%rbp), %eax
cmpl $0x39, %eax
setle %al
movb %al, -0x21(%rbp)
movb -0x21(%rbp), %al
testb $0x1, %al
jne 0xc423
jmp 0xc460
movq -0x20(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rax, 0xd0(%rcx)
cmpq 0xc8(%rcx), %rax
jae 0xc451
movq -0x10(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x10(%rbp)
movb (%rax), %al
movb %al, -0x22(%rbp)
jmp 0xc458
xorl %eax, %eax
movb %al, -0x22(%rbp)
jmp 0xc458
movb -0x22(%rbp), %al
movb %al, -0x11(%rbp)
jmp 0xc3ff
movsbl -0x11(%rbp), %eax
cmpl $0x2e, %eax
jne 0xc50b
movq -0x20(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rax, 0xd0(%rcx)
cmpq 0xc8(%rcx), %rax
jae 0xc49b
movq -0x10(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x10(%rbp)
movb (%rax), %al
movb %al, -0x23(%rbp)
jmp 0xc4a2
xorl %eax, %eax
movb %al, -0x23(%rbp)
jmp 0xc4a2
movb -0x23(%rbp), %al
movb %al, -0x11(%rbp)
movsbl -0x11(%rbp), %ecx
xorl %eax, %eax
cmpl $0x30, %ecx
movb %al, -0x24(%rbp)
jl 0xc4c3
movsbl -0x11(%rbp), %eax
cmpl $0x39, %eax
setle %al
movb %al, -0x24(%rbp)
movb -0x24(%rbp), %al
testb $0x1, %al
jne 0xc4cc
jmp 0xc509
movq -0x20(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rax, 0xd0(%rcx)
cmpq 0xc8(%rcx), %rax
jae 0xc4fa
movq -0x10(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x10(%rbp)
movb (%rax), %al
movb %al, -0x25(%rbp)
jmp 0xc501
xorl %eax, %eax
movb %al, -0x25(%rbp)
jmp 0xc501
movb -0x25(%rbp), %al
movb %al, -0x11(%rbp)
jmp 0xc4a8
jmp 0xc50b
movsbl -0x11(%rbp), %eax
cmpl $0x65, %eax
je 0xc521
movsbl -0x11(%rbp), %eax
cmpl $0x45, %eax
jne 0xc60e
movq -0x20(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rax, 0xd0(%rcx)
cmpq 0xc8(%rcx), %rax
jae 0xc54f
movq -0x10(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x10(%rbp)
movb (%rax), %al
movb %al, -0x26(%rbp)
jmp 0xc556
xorl %eax, %eax
movb %al, -0x26(%rbp)
jmp 0xc556
movb -0x26(%rbp), %al
movb %al, -0x11(%rbp)
movsbl -0x11(%rbp), %eax
cmpl $0x2b, %eax
je 0xc56e
movsbl -0x11(%rbp), %eax
cmpl $0x2d, %eax
jne 0xc5a9
movq -0x20(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rax, 0xd0(%rcx)
cmpq 0xc8(%rcx), %rax
jae 0xc59c
movq -0x10(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x10(%rbp)
movb (%rax), %al
movb %al, -0x27(%rbp)
jmp 0xc5a3
xorl %eax, %eax
movb %al, -0x27(%rbp)
jmp 0xc5a3
movb -0x27(%rbp), %al
movb %al, -0x11(%rbp)
jmp 0xc5ab
movsbl -0x11(%rbp), %ecx
xorl %eax, %eax
cmpl $0x30, %ecx
movb %al, -0x28(%rbp)
jl 0xc5c6
movsbl -0x11(%rbp), %eax
cmpl $0x39, %eax
setle %al
movb %al, -0x28(%rbp)
movb -0x28(%rbp), %al
testb $0x1, %al
jne 0xc5cf
jmp 0xc60c
movq -0x20(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rax, 0xd0(%rcx)
cmpq 0xc8(%rcx), %rax
jae 0xc5fd
movq -0x10(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x10(%rbp)
movb (%rax), %al
movb %al, -0x29(%rbp)
jmp 0xc604
xorl %eax, %eax
movb %al, -0x29(%rbp)
jmp 0xc604
movb -0x29(%rbp), %al
movb %al, -0x11(%rbp)
jmp 0xc5ab
jmp 0xc60e
popq %rbp
retq