// File: /workspace/github_c_makefile_star2_O3/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 0x1d1ce(%rip), %rcx     # 0x2c948
leaq 0x1c177(%rip), %r14     # 0x2b8f8
movq (%r14), %rax
xorl %ebx, %ebx
cmpq %rax, %rcx
jae 0xf79d
xorl %ebx, %ebx
movsbl (%rcx), %edx
incq %rcx
addl %edx, %ebx
addl $-0x30, %ebx
cmpq %rax, %rcx
jne 0xf78d
movb (%rax), %cl
cmpb $0x2e, %cl
jne 0xf7e1
leaq 0x1(%rax), %rdx
movq %rdx, (%r14)
movzbl 0x1(%rax), %ecx
movq %rcx, %rsi
addq $-0x3a, %rsi
cmpq $-0xa, %rsi
jb 0xf7e4
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 0xf7c0
decq %rax
movq %rax, %rdx
movzbl %cl, %eax
orl $0x20, %eax
cmpl $0x65, %eax
jne 0xf841
leaq 0x1(%rdx), %rax
movq %rax, (%r14)
movzbl 0x1(%rdx), %ecx
cmpl $0x2d, %ecx
je 0xf804
cmpl $0x2b, %ecx
jne 0xf80e
leaq 0x2(%rdx), %rax
movq %rax, (%r14)
movb 0x2(%rdx), %cl
movzbl %cl, %ecx
addq $-0x3a, %rcx
cmpq $-0xa, %rcx
jae 0xf82b
leaq 0x103be(%rip), %rdi     # 0x1fbe0
xorl %eax, %eax
callq 0x974c
jmp 0xf841
incq %rax
movq %rax, (%r14)
movzbl (%rax), %ecx
addq $-0x3a, %rcx
incq %rax
cmpq $-0xa, %rcx
jae 0xf82e
testl %ebx, %ebx
je 0xf894
movq (%r14), %rax
movb (%rax), %bpl
movb $0x0, (%rax)
callq 0x3030
movq %rax, %rbx
movl $0x0, (%rax)
movq 0x1d0e5(%rip), %rdi     # 0x2c948
xorl %esi, %esi
callq 0x3080
movsd %xmm0, 0x1d12e(%rip)    # 0x2c9a0
cmpl $0x22, (%rbx)
jne 0xf88c
movq 0x1d0ca(%rip), %rsi     # 0x2c948
leaq 0x10376(%rip), %rdi     # 0x1fbfb
xorl %eax, %eax
callq 0x9bfd
movq (%r14), %rax
movb %bpl, (%rax)
jmp 0xf89f
movq $0x0, 0x1d101(%rip) # 0x2c9a0
movq (%r14), %rax
movzbl (%rax), %ecx
cmpl $0x65, %ecx
jg 0xf8b6
cmpl $0x46, %ecx
je 0xf8c0
cmpl $0x4c, %ecx
je 0xf90d
jmp 0xf91c
cmpl $0x6c, %ecx
je 0xf90d
cmpl $0x66, %ecx
jne 0xf91c
leaq 0x1(%rax), %rcx
movq %rcx, (%r14)
movb 0x1(%rax), %bl
movb $0x0, 0x1(%rax)
movsd 0x1d0ca(%rip), %xmm0    # 0x2c9a0
ucomisd 0x10172(%rip), %xmm0    # 0x1fa50
jbe 0xf8f5
movq 0x1d061(%rip), %rsi     # 0x2c948
leaq 0x1030d(%rip), %rdi     # 0x1fbfb
xorl %eax, %eax
callq 0x9bfd
leaq 0x23694(%rip), %rax     # 0x32f90
movq (%rax), %rax
movq %rax, 0x1d072(%rip)     # 0x2c978
movq (%r14), %rax
movb %bl, (%rax)
jmp 0xf92d
incq %rax
movq %rax, (%r14)
leaq 0x23686(%rip), %rax     # 0x32fa0
jmp 0xf923
leaq 0x23665(%rip), %rax     # 0x32f88
movq (%rax), %rax
movq %rax, 0x1d04b(%rip)     # 0x2c978
popq %rbx
popq %r14
popq %rbp
retq