// File: tomfunkhouser[P]gaps/pkgs/RNBasics/json.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:
movq %rdi, -0x8(%rsp)
movq -0x8(%rsp), %rax
movq %rax, -0x20(%rsp)
movq 0xd0(%rax), %rax
movq %rax, -0x10(%rsp)
movb $0x30, -0x11(%rsp)
movsbl -0x11(%rsp), %ecx
xorl %eax, %eax
cmpl $0x30, %ecx
movb %al, -0x21(%rsp)
jl 0xe1f8f
movsbl -0x11(%rsp), %eax
cmpl $0x39, %eax
setle %al
movb %al, -0x21(%rsp)
movb -0x21(%rsp), %al
testb $0x1, %al
jne 0xe1f99
jmp 0xe1fdf
movq -0x20(%rsp), %rcx
movq -0x10(%rsp), %rax
movq %rax, 0xd0(%rcx)
cmpq 0xc8(%rcx), %rax
jae 0xe1fcd
movq -0x10(%rsp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x10(%rsp)
movsbl (%rax), %eax
movl %eax, -0x28(%rsp)
jmp 0xe1fd5
xorl %eax, %eax
movl %eax, -0x28(%rsp)
jmp 0xe1fd5
movl -0x28(%rsp), %eax
movb %al, -0x11(%rsp)
jmp 0xe1f70
movsbl -0x11(%rsp), %eax
cmpl $0x2e, %eax
jne 0xe20a2
movq -0x20(%rsp), %rcx
movq -0x10(%rsp), %rax
movq %rax, 0xd0(%rcx)
cmpq 0xc8(%rcx), %rax
jae 0xe2021
movq -0x10(%rsp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x10(%rsp)
movsbl (%rax), %eax
movl %eax, -0x2c(%rsp)
jmp 0xe2029
xorl %eax, %eax
movl %eax, -0x2c(%rsp)
jmp 0xe2029
movl -0x2c(%rsp), %eax
movb %al, -0x11(%rsp)
movsbl -0x11(%rsp), %ecx
xorl %eax, %eax
cmpl $0x30, %ecx
movb %al, -0x2d(%rsp)
jl 0xe2050
movsbl -0x11(%rsp), %eax
cmpl $0x39, %eax
setle %al
movb %al, -0x2d(%rsp)
movb -0x2d(%rsp), %al
testb $0x1, %al
jne 0xe205a
jmp 0xe20a0
movq -0x20(%rsp), %rcx
movq -0x10(%rsp), %rax
movq %rax, 0xd0(%rcx)
cmpq 0xc8(%rcx), %rax
jae 0xe208e
movq -0x10(%rsp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x10(%rsp)
movsbl (%rax), %eax
movl %eax, -0x34(%rsp)
jmp 0xe2096
xorl %eax, %eax
movl %eax, -0x34(%rsp)
jmp 0xe2096
movl -0x34(%rsp), %eax
movb %al, -0x11(%rsp)
jmp 0xe2031
jmp 0xe20a2
movsbl -0x11(%rsp), %eax
cmpl $0x65, %eax
je 0xe20ba
movsbl -0x11(%rsp), %eax
cmpl $0x45, %eax
jne 0xe21c9
movq -0x20(%rsp), %rcx
movq -0x10(%rsp), %rax
movq %rax, 0xd0(%rcx)
cmpq 0xc8(%rcx), %rax
jae 0xe20ee
movq -0x10(%rsp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x10(%rsp)
movsbl (%rax), %eax
movl %eax, -0x38(%rsp)
jmp 0xe20f6
xorl %eax, %eax
movl %eax, -0x38(%rsp)
jmp 0xe20f6
movl -0x38(%rsp), %eax
movb %al, -0x11(%rsp)
movsbl -0x11(%rsp), %eax
cmpl $0x2b, %eax
je 0xe2112
movsbl -0x11(%rsp), %eax
cmpl $0x2d, %eax
jne 0xe2156
movq -0x20(%rsp), %rcx
movq -0x10(%rsp), %rax
movq %rax, 0xd0(%rcx)
cmpq 0xc8(%rcx), %rax
jae 0xe2146
movq -0x10(%rsp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x10(%rsp)
movsbl (%rax), %eax
movl %eax, -0x3c(%rsp)
jmp 0xe214e
xorl %eax, %eax
movl %eax, -0x3c(%rsp)
jmp 0xe214e
movl -0x3c(%rsp), %eax
movb %al, -0x11(%rsp)
jmp 0xe2158
movsbl -0x11(%rsp), %ecx
xorl %eax, %eax
cmpl $0x30, %ecx
movb %al, -0x3d(%rsp)
jl 0xe2177
movsbl -0x11(%rsp), %eax
cmpl $0x39, %eax
setle %al
movb %al, -0x3d(%rsp)
movb -0x3d(%rsp), %al
testb $0x1, %al
jne 0xe2181
jmp 0xe21c7
movq -0x20(%rsp), %rcx
movq -0x10(%rsp), %rax
movq %rax, 0xd0(%rcx)
cmpq 0xc8(%rcx), %rax
jae 0xe21b5
movq -0x10(%rsp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x10(%rsp)
movsbl (%rax), %eax
movl %eax, -0x44(%rsp)
jmp 0xe21bd
xorl %eax, %eax
movl %eax, -0x44(%rsp)
jmp 0xe21bd
movl -0x44(%rsp), %eax
movb %al, -0x11(%rsp)
jmp 0xe2158
jmp 0xe21c9
retq
nopw (%rax,%rax)