// File: /workspace/github_c_makefile_star2_O2/Oric4ever[P]lcc65/6502/build/../src/lex.c
// Function: fcon
static Symbol fcon() {
	char *s = token;
	int n = 0;

	while (s < (char *)cp)
		n += *s++ - '0';
	if (*cp == '.')
		for (cp++; map[*cp]&DIGIT; cp++)
			n += *cp - '0';
	if (*cp == 'e' || *cp == 'E') {
		if (*++cp == '-' || *cp == '+')
			cp++;
		if (map[*cp]&DIGIT)
			do cp++; while (map[*cp]&DIGIT);
		else
			error("invalid floating constant\n");
	}
	if (n == 0)
		tval.u.c.v.d = 0.0;
	else {
		char c = *cp;
		*cp = 0;
		errno = 0;
		tval.u.c.v.d = strtod(token, (char **)0);
		if (errno == ERANGE)
			warning("overflow in floating constant `%s'\n", token);
		*cp = c;
	}
	if (*cp == 'f' || *cp == 'F') {
		char c = *++cp;
		*cp = 0;
		if (tval.u.c.v.d > FLT_MAX)
			warning("overflow in floating constant `%s'\n", token);
		tval.type = floattype;
		tval.u.c.v.f = tval.u.c.v.d;
		*cp = c;
	} else if (*cp == 'l' || *cp == 'L') {
		cp++;
		tval.type = longdouble;
	} else
		tval.type = doubletype;
	return &tval;
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movq 0x1cf1e(%rip), %rcx     # 0x2b948
leaq 0x1bec7(%rip), %r14     # 0x2a8f8
movq (%r14), %rax
xorl %ebx, %ebx
cmpq %rax, %rcx
jae 0xea48
movsbl (%rcx), %edx
incq %rcx
addl %edx, %ebx
addl $-0x30, %ebx
jmp 0xea36
movb (%rax), %cl
cmpb $0x2e, %cl
jne 0xea69
incq %rax
movq %rax, (%r14)
movzbl (%rax), %ecx
leaq -0x3a(%rcx), %rdx
cmpq $-0xa, %rdx
jb 0xea69
addl %ecx, %ebx
addl $-0x30, %ebx
jmp 0xea4f
movzbl %cl, %ecx
orl $0x20, %ecx
cmpl $0x65, %ecx
jne 0xeac6
leaq 0x1(%rax), %rcx
movq %rcx, (%r14)
movzbl 0x1(%rax), %edx
cmpl $0x2d, %edx
je 0xea89
cmpl $0x2b, %edx
jne 0xea93
leaq 0x2(%rax), %rcx
movq %rcx, (%r14)
movb 0x2(%rax), %dl
movzbl %dl, %eax
addq $-0x3a, %rax
cmpq $-0xa, %rax
jae 0xeab0
leaq 0xf139(%rip), %rdi      # 0x1dbe0
xorl %eax, %eax
callq 0x8dd4
jmp 0xeac6
incq %rcx
movq %rcx, (%r14)
movzbl (%rcx), %eax
addq $-0x3a, %rax
incq %rcx
cmpq $-0xa, %rax
jae 0xeab3
testl %ebx, %ebx
je 0xeb16
movq (%r14), %rax
movb (%rax), %bpl
movb $0x0, (%rax)
callq 0x3030
movq %rax, %rbx
andl $0x0, (%rax)
movq 0x1ce63(%rip), %rdi     # 0x2b948
xorl %esi, %esi
callq 0x3080
movsd %xmm0, 0x1ceac(%rip)    # 0x2b9a0
cmpl $0x22, (%rbx)
jne 0xeb0e
movq 0x1ce48(%rip), %rsi     # 0x2b948
leaq 0xf0f4(%rip), %rdi      # 0x1dbfb
xorl %eax, %eax
callq 0x9239
movq (%r14), %rax
movb %bpl, (%rax)
jmp 0xeb1e
andq $0x0, 0x1ce82(%rip)     # 0x2b9a0
movq (%r14), %rax
movzbl (%rax), %ecx
cmpl $0x46, %ecx
je 0xeb38
cmpl $0x4c, %ecx
je 0xeb85
cmpl $0x6c, %ecx
je 0xeb85
cmpl $0x66, %ecx
jne 0xeb94
leaq 0x1(%rax), %rcx
movq %rcx, (%r14)
movb 0x1(%rax), %bl
movb $0x0, 0x1(%rax)
movsd 0x1ce52(%rip), %xmm0    # 0x2b9a0
ucomisd 0xeefa(%rip), %xmm0     # 0x1da50
jbe 0xeb6d
movq 0x1cde9(%rip), %rsi     # 0x2b948
leaq 0xf095(%rip), %rdi      # 0x1dbfb
xorl %eax, %eax
callq 0x9239
leaq 0x2341c(%rip), %rax     # 0x31f90
movq (%rax), %rax
movq %rax, 0x1cdfa(%rip)     # 0x2b978
movq (%r14), %rax
movb %bl, (%rax)
jmp 0xeba5
incq %rax
movq %rax, (%r14)
leaq 0x2340e(%rip), %rax     # 0x31fa0
jmp 0xeb9b
leaq 0x233ed(%rip), %rax     # 0x31f88
movq (%rax), %rax
movq %rax, 0x1cdd3(%rip)     # 0x2b978
popq %rbx
popq %r14
popq %rbp
retq