// File: /workspace/github_c_makefile_star2_O1/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 0x1c1b2(%rip), %rcx     # 0x2b948
leaq 0x1b15b(%rip), %r14     # 0x2a8f8
movq (%r14), %rax
xorl %ebx, %ebx
cmpq %rax, %rcx
jae 0xf7b9
xorl %ebx, %ebx
movsbl (%rcx), %edx
incq %rcx
addl %edx, %ebx
addl $-0x30, %ebx
cmpq %rax, %rcx
jne 0xf7a9
cmpb $0x2e, (%rax)
jne 0xf7f5
leaq 0x1(%rax), %rcx
movq %rcx, (%r14)
movzbl 0x1(%rax), %ecx
leaq -0x3a(%rcx), %rdx
cmpq $-0xa, %rdx
jb 0xf7f5
addq $0x2, %rax
movzbl %cl, %ecx
addl %ecx, %ebx
addl $-0x30, %ebx
movq %rax, (%r14)
movzbl (%rax), %ecx
movq %rcx, %rdx
addq $-0x3a, %rdx
incq %rax
cmpq $-0xb, %rdx
ja 0xf7d7
movq (%r14), %rax
movzbl (%rax), %ecx
orl $0x20, %ecx
cmpl $0x65, %ecx
jne 0xf858
leaq 0x1(%rax), %rcx
movq %rcx, (%r14)
movzbl 0x1(%rax), %ecx
cmpl $0x2d, %ecx
je 0xf818
cmpl $0x2b, %ecx
jne 0xf81f
addq $0x2, %rax
movq %rax, (%r14)
movq (%r14), %rax
movzbl (%rax), %eax
addq $-0x3a, %rax
cmpq $-0xa, %rax
jae 0xf83f
leaq 0x1035a(%rip), %rdi     # 0x1fb90
xorl %eax, %eax
callq 0x9720
jmp 0xf858
movq (%r14), %rax
incq %rax
movq %rax, (%r14)
movzbl (%rax), %ecx
addq $-0x3a, %rcx
incq %rax
cmpq $-0xa, %rcx
jae 0xf845
testl %ebx, %ebx
je 0xf8ab
movq (%r14), %rax
movb (%rax), %bpl
movb $0x0, (%rax)
callq 0x3030
movq %rax, %rbx
movl $0x0, (%rax)
movq 0x1c0ce(%rip), %rdi     # 0x2b948
xorl %esi, %esi
callq 0x3080
movsd %xmm0, 0x1c117(%rip)    # 0x2b9a0
cmpl $0x22, (%rbx)
jne 0xf8a3
movq 0x1c0b3(%rip), %rsi     # 0x2b948
leaq 0x1030f(%rip), %rdi     # 0x1fbab
xorl %eax, %eax
callq 0x9be3
movq (%r14), %rax
movb %bpl, (%rax)
jmp 0xf8b6
movq $0x0, 0x1c0ea(%rip) # 0x2b9a0
movq (%r14), %rax
movzbl (%rax), %ecx
cmpl $0x65, %ecx
jg 0xf8cd
cmpl $0x46, %ecx
je 0xf8d7
cmpl $0x4c, %ecx
je 0xf924
jmp 0xf933
cmpl $0x6c, %ecx
je 0xf924
cmpl $0x66, %ecx
jne 0xf933
leaq 0x1(%rax), %rcx
movq %rcx, (%r14)
movb 0x1(%rax), %bl
movb $0x0, 0x1(%rax)
movsd 0x1c0b3(%rip), %xmm0    # 0x2b9a0
ucomisd 0x1010b(%rip), %xmm0    # 0x1fa00
jbe 0xf90c
movq 0x1c04a(%rip), %rsi     # 0x2b948
leaq 0x102a6(%rip), %rdi     # 0x1fbab
xorl %eax, %eax
callq 0x9be3
leaq 0x2267d(%rip), %rax     # 0x31f90
movq (%rax), %rax
movq %rax, 0x1c05b(%rip)     # 0x2b978
movq (%r14), %rax
movb %bl, (%rax)
jmp 0xf944
incq %rax
movq %rax, (%r14)
leaq 0x2266f(%rip), %rax     # 0x31fa0
jmp 0xf93a
leaq 0x2264e(%rip), %rax     # 0x31f88
movq (%rax), %rax
movq %rax, 0x1c034(%rip)     # 0x2b978
popq %rbx
popq %r14
popq %rbp
retq