// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jslex.c
// Function: lexjsonnumber
static int lexjsonnumber(js_State *J)
{
	const char *s = J->source - 1;

	if (J->lexchar == '-')
		jsY_next(J);

	if (J->lexchar == '0')
		jsY_next(J);
	else if (J->lexchar >= '1' && J->lexchar <= '9')
		while (isdigit(J->lexchar))
			jsY_next(J);
	else
		jsY_error(J, "unexpected non-digit");

	if (jsY_accept(J, '.')) {
		if (isdigit(J->lexchar))
			while (isdigit(J->lexchar))
				jsY_next(J);
		else
			jsY_error(J, "missing digits after decimal point");
	}

	if (jsY_accept(J, 'e') || jsY_accept(J, 'E')) {
		if (J->lexchar == '-' || J->lexchar == '+')
			jsY_next(J);
		if (isdigit(J->lexchar))
			while (isdigit(J->lexchar))
				jsY_next(J);
		else
			jsY_error(J, "missing digits after exponent indicator");
	}

	J->number = js_strtod(s, NULL);
	return TK_NUMBER;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x40(%rax), %rax
addq $-0x1, %rax
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rax
cmpl $0x2d, 0x64(%rax)
jne 0xef4f
movq -0x8(%rbp), %rdi
callq 0xe0a0
movq -0x8(%rbp), %rax
cmpl $0x30, 0x64(%rax)
jne 0xef64
movq -0x8(%rbp), %rdi
callq 0xe0a0
jmp 0xefc1
movq -0x8(%rbp), %rax
cmpl $0x31, 0x64(%rax)
jl 0xefad
movq -0x8(%rbp), %rax
cmpl $0x39, 0x64(%rax)
jg 0xefad
jmp 0xef7a
movq -0x8(%rbp), %rcx
xorl %eax, %eax
cmpl $0x30, 0x64(%rcx)
movb %al, -0x11(%rbp)
jl 0xef97
movq -0x8(%rbp), %rax
cmpl $0x39, 0x64(%rax)
setle %al
movb %al, -0x11(%rbp)
movb -0x11(%rbp), %al
testb $0x1, %al
jne 0xefa0
jmp 0xefab
movq -0x8(%rbp), %rdi
callq 0xe0a0
jmp 0xef7a
jmp 0xefbf
movq -0x8(%rbp), %rdi
leaq 0x2e048(%rip), %rsi     # 0x3d000
movb $0x0, %al
callq 0xf250
jmp 0xefc1
movq -0x8(%rbp), %rax
cmpl $0x2e, 0x64(%rax)
jne 0xefdc
movq -0x8(%rbp), %rdi
callq 0xe0a0
movb $0x1, %al
testb $0x1, %al
jne 0xefe4
jmp 0xf041
xorl %eax, %eax
testb $0x1, %al
jne 0xefe4
jmp 0xf041
movq -0x8(%rbp), %rax
cmpl $0x30, 0x64(%rax)
jl 0xf02d
movq -0x8(%rbp), %rax
cmpl $0x39, 0x64(%rax)
jg 0xf02d
jmp 0xeffa
movq -0x8(%rbp), %rcx
xorl %eax, %eax
cmpl $0x30, 0x64(%rcx)
movb %al, -0x12(%rbp)
jl 0xf017
movq -0x8(%rbp), %rax
cmpl $0x39, 0x64(%rax)
setle %al
movb %al, -0x12(%rbp)
movb -0x12(%rbp), %al
testb $0x1, %al
jne 0xf020
jmp 0xf02b
movq -0x8(%rbp), %rdi
callq 0xe0a0
jmp 0xeffa
jmp 0xf03f
movq -0x8(%rbp), %rdi
leaq 0x2dfdd(%rip), %rsi     # 0x3d015
movb $0x0, %al
callq 0xf250
jmp 0xf041
movq -0x8(%rbp), %rax
cmpl $0x65, 0x64(%rax)
jne 0xf05c
movq -0x8(%rbp), %rdi
callq 0xe0a0
movb $0x1, %al
testb $0x1, %al
jne 0xf08a
jmp 0xf064
xorl %eax, %eax
testb $0x1, %al
jne 0xf08a
jmp 0xf064
movq -0x8(%rbp), %rax
cmpl $0x45, 0x64(%rax)
jne 0xf082
movq -0x8(%rbp), %rdi
callq 0xe0a0
movb $0x1, %al
testb $0x1, %al
jne 0xf08a
jmp 0xf104
xorl %eax, %eax
testb $0x1, %al
jne 0xf08a
jmp 0xf104
movq -0x8(%rbp), %rax
cmpl $0x2d, 0x64(%rax)
je 0xf09e
movq -0x8(%rbp), %rax
cmpl $0x2b, 0x64(%rax)
jne 0xf0a7
movq -0x8(%rbp), %rdi
callq 0xe0a0
movq -0x8(%rbp), %rax
cmpl $0x30, 0x64(%rax)
jl 0xf0f0
movq -0x8(%rbp), %rax
cmpl $0x39, 0x64(%rax)
jg 0xf0f0
jmp 0xf0bd
movq -0x8(%rbp), %rcx
xorl %eax, %eax
cmpl $0x30, 0x64(%rcx)
movb %al, -0x13(%rbp)
jl 0xf0da
movq -0x8(%rbp), %rax
cmpl $0x39, 0x64(%rax)
setle %al
movb %al, -0x13(%rbp)
movb -0x13(%rbp), %al
testb $0x1, %al
jne 0xf0e3
jmp 0xf0ee
movq -0x8(%rbp), %rdi
callq 0xe0a0
jmp 0xf0bd
jmp 0xf102
movq -0x8(%rbp), %rdi
leaq 0x2df3d(%rip), %rsi     # 0x3d038
movb $0x0, %al
callq 0xf250
jmp 0xf104
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xb590
movq -0x8(%rbp), %rax
movsd %xmm0, 0x80(%rax)
movl $0x101, %eax            # imm = 0x101
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax,%rax)