// File: /workspace/github_c_makefile_star2_O3/georgeweigt[P]sassafras/sassafras.c
// Function: scan1
int
scan1(void)
{
	int i, n;

	// skip spaces

	while (*inp && *inp <= ' ')
		inp++;

	token_str = inp;

	// end?

	if (*inp == '\0') {
		strbuf[0] = 0;
		return 0;
	}

	// name?

	if (isalpha(*inp) || *inp == '_') {
		for (i = 0; i < STRBUFLEN; i++) {
			if (isalnum(*inp) || *inp == '_')
				strbuf[i] = toupper(*inp++);
			else
				break;
		}
		if (i == STRBUFLEN)
			stop("Name too long");
		strbuf[i] = 0;
		return NAME;
	}

	// number?

	if (isdigit(*inp)
	|| (inp[0] == '.' && isdigit(inp[1]))
	|| ((*inp == '+' || *inp == '-')
	&& (isdigit(inp[1]) || (inp[1] == '.' && isdigit(inp[2]))))) {
		if (*inp == '+' || *inp == '-')
			inp++;
		while (isdigit(*inp))
			inp++;
		if (*inp == '.') {
			inp++;
			while (isdigit(*inp))
				inp++;
		}
		if (*inp == 'E' || *inp == 'e') {
			inp++;
			if (*inp == '+' || *inp == '-')
				inp++;
			while (isdigit(*inp))
				inp++;
		}
		n = (int) (inp - token_str);
		if (n >= STRBUFLEN)
			stop("Number format?");
		for (i = 0; i < n; i++)
			strbuf[i] = token_str[i];
		strbuf[i] = 0;
		n = sscanf(strbuf, "%lg", &token_num);
		if (n < 1)
			stop("Number format?");
		return NUMBER;
	}

	// string?

	if (*inp == '\'') {
		inp++;
		for (i = 0; i < STRBUFLEN; i++) {
			if (*inp == 0)
				break;
			if (*inp == '\r' || *inp == '\n')
				stop("Runaway string");
			if (inp[0] == '\'' && inp[1] == '\'') {
				strbuf[i] = *inp;
				inp += 2;
				continue;
			}
			if (*inp == '\'') {
				inp++;
				break;
			}
			strbuf[i] = *inp++;
		}
		if (i == STRBUFLEN)
			stop("String too long");
		strbuf[i] = 0;
		return STRING;
	}

	if (*inp == '"') {
		inp++;
		for (i = 0; i < STRBUFLEN; i++) {
			if (*inp == 0)
				break;
			if (*inp == '\r' || *inp == '\n')
				stop("Runaway string");
			if (inp[0] == '"' && inp[1] == '"') {
				strbuf[i] = *inp;
				inp += 2;
				continue;
			}
			if (*inp == '"') {
				inp++;
				break;
			}
			strbuf[i] = *inp++;
		}
		if (i == STRBUFLEN)
			stop("String too long");
		strbuf[i] = 0;
		return STRING;
	}

	// double at sign?

	if (inp[0] == '@' && inp[1] == '@') {
		strcpy(strbuf, "@@");
		inp += 2;
		return ATAT;
	}

	// double asterisk?

	if (inp[0] == '*' && inp[1] == '*') {
		strcpy(strbuf, "**");
		inp += 2;
		return STARSTAR;
	}

	// anything else is a single character token

	strbuf[0] = *inp;
	strbuf[1] = 0;

	return *inp++;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq 0x500b(%rip), %r14      # 0xf8a8
movb (%r14), %al
testb %al, %al
sete %cl
cmpb $0x21, %al
setge %al
orb %cl, %al
jne 0xa8c9
incq %r14
movq %r14, 0x4ff0(%rip)      # 0xf8a8
movb (%r14), %al
incq %r14
testb %al, %al
je 0xa8c6
cmpb $0x21, %al
jl 0xa8b1
decq %r14
movq %r14, 0xb3f8(%rip)      # 0x15cc8
movsbq (%r14), %r15
testq %r15, %r15
je 0xaa63
callq 0x2240
movq %rax, %rbx
cmpb $0x5f, %r15b
je 0xaa71
movq (%rbx), %rax
movzwl (%rax,%r15,2), %ecx
movzwl %cx, %edx
movl %edx, %esi
andl $0x400, %esi            # imm = 0x400
jne 0xaa71
movzbl %r15b, %esi
btl $0xb, %edx
jb 0xa953
leal -0x22(%rsi), %edx
cmpl $0xc, %edx
ja 0xab31
leaq 0x91f(%rip), %rdi       # 0xb244
movslq (%rdi,%rdx,4), %rdx
addq %rdi, %rdx
jmpq *%rdx
movsbq 0x1(%r14), %rdx
testb $0x8, 0x1(%rax,%rdx,2)
jne 0xa953
cmpb $0x2e, %dl
jne 0xaba5
movsbq 0x2(%r14), %rdx
testb $0x8, 0x1(%rax,%rdx,2)
je 0xaba5
cmpl $0x2d, %esi
je 0xa963
movl %r15d, %edx
movq %r14, %rax
cmpl $0x2b, %esi
jne 0xa97a
leaq 0x1(%r14), %rax
movq %rax, 0x4f3a(%rip)      # 0xf8a8
movq (%rbx), %rcx
movsbq 0x1(%r14), %rdx
movzwl (%rcx,%rdx,2), %ecx
btl $0xb, %ecx
jae 0xa99e
incq %rax
movq %rax, 0x4f1e(%rip)      # 0xf8a8
movq (%rbx), %rcx
movsbq (%rax), %rdx
incq %rax
testb $0x8, 0x1(%rcx,%rdx,2)
jne 0xa983
decq %rax
cmpb $0x2e, %dl
jne 0xa9c1
incq %rax
movq %rax, 0x4efb(%rip)      # 0xf8a8
movq (%rbx), %rcx
movsbq (%rax), %rdx
incq %rax
testb $0x8, 0x1(%rcx,%rdx,2)
jne 0xa9a6
decq %rax
movzbl %dl, %ecx
orl $0x20, %ecx
cmpl $0x65, %ecx
jne 0xaa22
leaq 0x1(%rax), %rcx
movq %rcx, 0x4ed1(%rip)      # 0xf8a8
movzbl 0x1(%rax), %edx
cmpl $0x2d, %edx
je 0xa9e5
cmpl $0x2b, %edx
jne 0xa9f3
leaq 0x2(%rax), %rcx
movq %rcx, 0x4eb8(%rip)      # 0xf8a8
movb 0x2(%rax), %dl
movq (%rbx), %rax
movsbq %dl, %rdx
testb $0x8, 0x1(%rax,%rdx,2)
je 0xaa1f
incq %rcx
movq %rcx, 0x4e9d(%rip)      # 0xf8a8
movq (%rbx), %rax
movsbq (%rcx), %rdx
incq %rcx
testb $0x8, 0x1(%rax,%rdx,2)
jne 0xaa04
decq %rcx
movq %rcx, %rax
subq %r14, %rax
cmpl $0x3e7, %eax            # imm = 0x3E7
jg 0xab23
testl %eax, %eax
jle 0xaaf2
movl %eax, %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
xorl %edx, %edx
leaq 0x5657(%rip), %rsi      # 0x100a0
movb (%r14,%rdx), %dil
movb %dil, (%rdx,%rsi)
incq %rdx
cmpq %rdx, %rcx
jne 0xaa49
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
jmp 0xaaf4
movb $0x0, 0x5636(%rip)      # 0x100a0
xorl %eax, %eax
jmp 0xacc6
xorl %r15d, %r15d
leaq 0x5625(%rip), %r12      # 0x100a0
movsbq (%r14,%r15), %rax
cmpq $0x5f, %rax
je 0xaa92
movq (%rbx), %rcx
movzwl (%rcx,%rax,2), %eax
andl $0x8, %eax
je 0xaae3
leaq (%r14,%r15), %r13
callq 0x2030
movq (%rax), %rax
leaq 0x1(%r13), %rcx
movq %rcx, 0x4dff(%rip)      # 0xf8a8
movsbq (%r13), %rcx
movb (%rax,%rcx,4), %al
movb %al, (%r15,%r12)
incq %r15
cmpq $0x3e8, %r15            # imm = 0x3E8
jne 0xaa7b
callq 0xa7e0
leaq 0x102e(%rip), %rdi      # 0xbafb
callq 0x4039
leaq 0xb117(%rip), %rdi      # 0x15bf0
movl $0x1, %esi
callq 0x21c0
movb $0x0, (%r15,%r12)
movl $0x3e9, %eax            # imm = 0x3E9
jmp 0xacc6
xorl %eax, %eax
leaq 0x55a5(%rip), %rdi      # 0x100a0
movb $0x0, (%rax,%rdi)
leaq 0x974(%rip), %rsi       # 0xb47a
leaq 0x93d3(%rip), %rdx      # 0x13ee0
xorl %eax, %eax
callq 0x21a0
movl %eax, %ecx
movl $0x3ea, %eax            # imm = 0x3EA
testl %ecx, %ecx
jg 0xacc6
callq 0xa7e0
leaq 0xfda(%rip), %rdi       # 0xbb09
jmp 0xaacd
cmpl $0x40, %esi
jne 0xaba5
cmpb $0x40, 0x1(%r14)
jne 0xaba5
movb $0x0, 0x555e(%rip)      # 0x100a2
movw $0x4040, 0x5553(%rip)   # imm = 0x4040
addq $0x2, %r14
movq %r14, 0x4d50(%rip)      # 0xf8a8
movl $0x3ec, %eax            # imm = 0x3EC
jmp 0xacc6
movsbq 0x1(%r14), %rsi
movb $0x2e, %dl
testb $0x8, 0x1(%rax,%rsi,2)
movq %r14, %rax
jne 0xa97a
jmp 0xaba5
cmpb $0x2a, 0x1(%r14)
jne 0xaba5
movb $0x0, 0x551b(%rip)      # 0x100a2
movw $0x2a2a, 0x5510(%rip)   # imm = 0x2A2A
addq $0x2, %r14
movq %r14, 0x4d0d(%rip)      # 0xf8a8
movl $0x3ed, %eax            # imm = 0x3ED
jmp 0xacc6
movb %r15b, 0x54f4(%rip)     # 0x100a0
movb $0x0, 0x54ee(%rip)      # 0x100a1
leaq 0x1(%r14), %rax
movq %rax, 0x4cea(%rip)      # 0xf8a8
movsbl (%r14), %eax
jmp 0xacc6
incq %r14
movq %r14, 0x4cd7(%rip)      # 0xf8a8
xorl %eax, %eax
leaq 0x54c6(%rip), %rcx      # 0x100a0
movzbl (%r14), %edx
cmpl $0x21, %edx
jle 0xac04
cmpl $0x22, %edx
jne 0xac1e
cmpb $0x22, 0x1(%r14)
jne 0xacb3
movb $0x22, (%rax,%rcx)
addq $0x2, %r14
movq %r14, 0x4ca6(%rip)      # 0xf8a8
jmp 0xac33
testl %edx, %edx
je 0xacbd
cmpl $0xa, %edx
je 0xacd5
cmpl $0xd, %edx
je 0xacd5
leaq 0x1(%r14), %rdx
movq %rdx, 0x4c7f(%rip)      # 0xf8a8
movb (%r14), %sil
movb %sil, (%rax,%rcx)
movq %rdx, %r14
incq %rax
cmpq $0x3e8, %rax            # imm = 0x3E8
jne 0xabda
jmp 0xaca7
incq %r14
movq %r14, 0x4c5e(%rip)      # 0xf8a8
xorl %eax, %eax
leaq 0x544d(%rip), %rcx      # 0x100a0
movzbl (%r14), %edx
cmpl $0x26, %edx
jle 0xac79
cmpl $0x27, %edx
jne 0xac87
cmpb $0x27, 0x1(%r14)
jne 0xacb3
movb $0x27, (%rax,%rcx)
addq $0x2, %r14
movq %r14, 0x4c31(%rip)      # 0xf8a8
jmp 0xac9c
testl %edx, %edx
je 0xacbd
cmpl $0xa, %edx
je 0xacd5
cmpl $0xd, %edx
je 0xacd5
leaq 0x1(%r14), %rdx
movq %rdx, 0x4c16(%rip)      # 0xf8a8
movb (%r14), %sil
movb %sil, (%rax,%rcx)
movq %rdx, %r14
incq %rax
cmpq $0x3e8, %rax            # imm = 0x3E8
jne 0xac53
leaq 0xe79(%rip), %rdi       # 0xbb27
callq 0x26fc
incq %r14
movq %r14, 0x4beb(%rip)      # 0xf8a8
movb $0x0, (%rax,%rcx)
movl $0x3eb, %eax            # imm = 0x3EB
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0xa7e0
leaq 0xe37(%rip), %rdi       # 0xbb18
jmp 0xaacd