// File: /workspace/github_c_makefile_star2_O2/georgeweigt[P]eigenmath/eigenmath.c
// Function: get_token_nib
void
get_token_nib(void)
{
	// skip spaces

	while (*scan_str != '\0' && *scan_str != '\n' && *scan_str != '\r' && (*scan_str < 33 || *scan_str > 126))
		scan_str++;

	token_str = scan_str;

	// end of input?

	if (*scan_str == '\0') {
		token = T_END;
		return;
	}

	// newline?

	if (*scan_str == '\n' || *scan_str == '\r') {
		scan_str++;
		token = T_NEWLINE;
		return;
	}

	// comment?

	if (*scan_str == '#' || (scan_str[0] == '-' && scan_str[1] == '-')) {
		while (*scan_str && *scan_str != '\n' && *scan_str != '\r')
			scan_str++;
		if (*scan_str)
			scan_str++;
		token = T_NEWLINE;
		return;
	}

	// number?

	if (isdigit(*scan_str) || *scan_str == '.') {
		while (isdigit(*scan_str))
			scan_str++;
		if (*scan_str == '.') {
			scan_str++;
			while (isdigit(*scan_str))
				scan_str++;
			if (token_str + 1 == scan_str)
				scan_error("expected decimal digit"); // only a decimal point
			token = T_DOUBLE;
		} else
			token = T_INTEGER;
		update_token_buf(token_str, scan_str);
		return;
	}

	// symbol?

	if (isalpha(*scan_str)) {
		while (isalnum(*scan_str))
			scan_str++;
		if (*scan_str == '(')
			token = T_FUNCTION;
		else
			token = T_SYMBOL;
		update_token_buf(token_str, scan_str);
		return;
	}

	// string?

	if (*scan_str == '"') {
		scan_str++;
		while (*scan_str && *scan_str != '"' && *scan_str != '\n' && *scan_str != '\r')
			scan_str++;
		if (*scan_str != '"')
			scan_error("runaway string");
		scan_str++;
		token = T_STRING;
		update_token_buf(token_str + 1, scan_str - 1); // don't include quote chars
		return;
	}

	// relational operator?

	if (*scan_str == '=' && scan_str[1] == '=') {
		scan_str += 2;
		token = T_EQ;
		return;
	}

	if (*scan_str == '<' && scan_str[1] == '=') {
		scan_str += 2;
		token = T_LTEQ;
		return;
	}

	if (*scan_str == '>' && scan_str[1] == '=') {
		scan_str += 2;
		token = T_GTEQ;
		return;
	}

	// single char token

	token = *scan_str++;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq 0xedb02(%rip), %rbx     # 0x10f8d8
incq %rbx
movl $0x2401, %eax           # imm = 0x2401
movzbl -0x1(%rbx), %ecx
cmpl $0xd, %ecx
ja 0x21dec
btl %ecx, %eax
jb 0x21e00
addb $-0x7f, %cl
cmpb $-0x5f, %cl
ja 0x21e00
movq %rbx, 0xedadd(%rip)     # 0x10f8d8
incq %rbx
jmp 0x21dde
leaq -0x1(%rbx), %r14
movq %r14, 0xedae5(%rip)     # 0x10f8f0
movsbq -0x1(%rbx), %r15
movzbl %r15b, %r12d
cmpq $0x2d, %r15
je 0x21e4c
cmpl $0xa, %r12d
je 0x21f21
cmpl $0xd, %r12d
je 0x21f21
cmpl $0x23, %r12d
je 0x21ef9
testl %r12d, %r12d
jne 0x21e55
movl $0x3f3, 0xeda9d(%rip)   # imm = 0x3F3
jmp 0x21f32
cmpb $0x2d, (%rbx)
je 0x21ef9
callq 0x7380
movq (%rax), %rcx
movzwl (%rcx,%r15,2), %ecx
cmpb $0x2e, %r15b
je 0x21f3b
movzwl %cx, %edx
movl %edx, %esi
andl $0x800, %esi            # imm = 0x800
jne 0x21f3b
btl $0xa, %edx
jb 0x21f00
cmpl $0x3e, %r12d
je 0x22009
cmpl $0x3c, %r12d
je 0x21fcd
cmpl $0x3d, %r12d
je 0x21feb
cmpl $0x22, %r12d
jne 0x22027
movq %rbx, %rsi
movq %rsi, 0xeda23(%rip)     # 0x10f8d8
movzbl (%rsi), %eax
incq %rsi
cmpl $0x22, %eax
je 0x2203d
testl %eax, %eax
je 0x21ed2
cmpl $0xd, %eax
je 0x21ed2
cmpl $0xa, %eax
jne 0x21eae
leaq 0x6091(%rip), %rdi      # 0x27f6a
callq 0x21492
movzbl %r15b, %eax
cmpl $0xa, %eax
je 0x21f21
cmpl $0xd, %eax
je 0x21f21
movq %rbx, 0xed9e5(%rip)     # 0x10f8d8
movb (%rbx), %r15b
incq %rbx
testb %r15b, %r15b
jne 0x21ede
jmp 0x21f28
testb $0x8, %cl
je 0x21fa3
movq %rbx, 0xed9c8(%rip)     # 0x10f8d8
movq (%rax), %rcx
movsbq (%rbx), %r15
movzwl (%rcx,%r15,2), %ecx
incq %rbx
jmp 0x21f00
movq %rbx, 0xed9b0(%rip)     # 0x10f8d8
movl $0x3ee, 0xed9b2(%rip)   # imm = 0x3EE
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
pushq $0x1
popq %rdx
btl $0xb, %ecx
jae 0x21f5f
movq %rbx, 0xed98d(%rip)     # 0x10f8d8
movq (%rax), %rcx
movsbq (%rbx), %r15
movzwl (%rcx,%r15,2), %ecx
decq %rdx
incq %rbx
jmp 0x21f3e
cmpb $0x2e, %r15b
jne 0x21f93
movq %rbx, 0xed96c(%rip)     # 0x10f8d8
movq (%rax), %rcx
movsbq (%rbx), %rsi
decq %rdx
incq %rbx
testb $0x8, 0x1(%rcx,%rsi,2)
jne 0x21f65
testq %rdx, %rdx
je 0x22059
decq %rbx
movl $0x3ea, %eax            # imm = 0x3EA
jmp 0x21f9b
decq %rbx
movl $0x3e9, %eax            # imm = 0x3E9
movl %eax, 0xed943(%rip)     # 0x10f8e4
jmp 0x21fba
xorl %eax, %eax
cmpb $0x28, %r15b
sete %al
addl $0x3eb, %eax            # imm = 0x3EB
movl %eax, 0xed92d(%rip)     # 0x10f8e4
decq %rbx
movq %r14, %rdi
movq %rbx, %rsi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x22065
cmpb $0x3d, (%rbx)
jne 0x22027
incq %rbx
movq %rbx, 0xed8fc(%rip)     # 0x10f8d8
movl $0x3f1, 0xed8fe(%rip)   # imm = 0x3F1
jmp 0x21f32
cmpb $0x3d, (%rbx)
jne 0x22027
incq %rbx
movq %rbx, 0xed8de(%rip)     # 0x10f8d8
movl $0x3f2, 0xed8e0(%rip)   # imm = 0x3F2
jmp 0x21f32
cmpb $0x3d, (%rbx)
jne 0x22027
incq %rbx
movq %rbx, 0xed8c0(%rip)     # 0x10f8d8
movl $0x3f0, 0xed8c2(%rip)   # imm = 0x3F0
jmp 0x21f32
movq %rbx, 0xed8aa(%rip)     # 0x10f8d8
movsbl -0x1(%rbx), %eax
movl %eax, 0xed8ac(%rip)     # 0x10f8e4
jmp 0x21f32
movq %rsi, 0xed894(%rip)     # 0x10f8d8
movl $0x3ef, 0xed896(%rip)   # imm = 0x3EF
decq %rsi
movq %rbx, %rdi
jmp 0x21fc0
leaq 0x5ef3(%rip), %rdi      # 0x27f53
callq 0x21492