// File: /workspace/github_c_makefile_star2_O3/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 %r13
pushq %r12
pushq %rbx
pushq %rax
movq 0xed628(%rip), %rbx     # 0x1168e8
incq %rbx
movl $0x2401, %eax           # imm = 0x2401
movzbl -0x1(%rbx), %ecx
cmpl $0xd, %ecx
ja 0x292d6
btl %ecx, %eax
jb 0x292ea
addb $-0x7f, %cl
cmpb $-0x5f, %cl
ja 0x292ea
movq %rbx, 0xed603(%rip)     # 0x1168e8
incq %rbx
jmp 0x292c8
leaq -0x1(%rbx), %r14
movq %r14, 0xed60b(%rip)     # 0x116900
movb -0x1(%rbx), %r15b
movzbl %r15b, %r12d
cmpl $0xc, %r12d
jle 0x2933e
cmpl $0xd, %r12d
je 0x2934d
cmpl $0x23, %r12d
je 0x29337
cmpl $0x2d, %r12d
jne 0x29360
cmpb $0x2d, (%rbx)
je 0x29337
jmp 0x29360
movzbl %r15b, %eax
cmpl $0xa, %eax
je 0x2934d
cmpl $0xd, %eax
je 0x2934d
movq %rbx, 0xed5b7(%rip)     # 0x1168e8
movb (%rbx), %r15b
incq %rbx
testb %r15b, %r15b
jne 0x2931c
jmp 0x29354
testl %r12d, %r12d
je 0x293c8
cmpl $0xa, %r12d
jne 0x29360
movq %rbx, 0xed594(%rip)     # 0x1168e8
movl $0x3ee, 0xed596(%rip)   # imm = 0x3EE
jmp 0x293d2
movsbq %r15b, %r13
callq 0x7390
movq (%rax), %rcx
movzwl (%rcx,%r13,2), %ecx
cmpb $0x2e, %r15b
je 0x293e1
movl %ecx, %edx
andl $0x800, %edx            # imm = 0x800
jne 0x293e1
btl $0xa, %ecx
jb 0x2944c
cmpl $0x3c, %r12d
jg 0x2949c
cmpl $0x22, %r12d
je 0x294c6
cmpl $0x3c, %r12d
jne 0x29524
cmpb $0x3d, (%rbx)
jne 0x29524
incq %rbx
movq %rbx, 0xed52c(%rip)     # 0x1168e8
movl $0x3f1, 0xed52e(%rip)   # imm = 0x3F1
jmp 0x293d2
movl $0x3f3, 0xed522(%rip)   # imm = 0x3F3
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
btl $0xb, %ecx
movq %r14, %rsi
jae 0x29409
movq %rbx, 0xed4f7(%rip)     # 0x1168e8
movq (%rax), %rcx
movsbq (%rbx), %r15
incq %rbx
testb $0x8, 0x1(%rcx,%r15,2)
jne 0x293ea
decq %rbx
movq %rbx, %rsi
movl $0x3e9, %ecx            # imm = 0x3E9
cmpb $0x2e, %r15b
jne 0x29444
incq %rsi
movq %rsi, 0xed4ca(%rip)     # 0x1168e8
movq (%rax), %rcx
movsbq (%rsi), %rdx
incq %rsi
testb $0x8, 0x1(%rcx,%rdx,2)
jne 0x29417
leaq -0x2(%rsi), %rax
decq %rsi
movl $0x3ea, %ecx            # imm = 0x3EA
cmpq %rax, %r14
je 0x29556
movl %ecx, 0xed4aa(%rip)     # 0x1168f4
jmp 0x29486
movq %r14, %rsi
testb $0x8, %cl
je 0x29472
movq %rbx, 0xed48d(%rip)     # 0x1168e8
movq (%rax), %rcx
movsbq (%rbx), %r15
incq %rbx
testb $0x8, (%rcx,%r15,2)
jne 0x29454
decq %rbx
movq %rbx, %rsi
xorl %eax, %eax
cmpb $0x28, %r15b
sete %al
addl $0x3eb, %eax            # imm = 0x3EB
movl %eax, 0xed46e(%rip)     # 0x1168f4
movq %r14, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x29569
cmpl $0x3d, %r12d
je 0x29506
cmpl $0x3e, %r12d
jne 0x29524
cmpb $0x3d, (%rbx)
jne 0x29524
incq %rbx
movq %rbx, 0xed431(%rip)     # 0x1168e8
movl $0x3f0, 0xed433(%rip)   # imm = 0x3F0
jmp 0x293d2
movq %rbx, %rsi
movq %rsi, 0xed418(%rip)     # 0x1168e8
movzbl (%rsi), %eax
incq %rsi
cmpl $0x21, %eax
jle 0x294e2
cmpl $0x22, %eax
jne 0x294c9
jmp 0x2953a
testl %eax, %eax
je 0x294f0
cmpl $0xa, %eax
je 0x294f0
cmpl $0xd, %eax
jne 0x294c9
decq %rsi
movq %rsi, 0xed3de(%rip)     # 0x1168d8
leaq 0x5a31(%rip), %rdi      # 0x2ef32
callq 0x780b
cmpb $0x3d, (%rbx)
jne 0x29524
incq %rbx
movq %rbx, 0xed3d3(%rip)     # 0x1168e8
movl $0x3f2, 0xed3d5(%rip)   # imm = 0x3F2
jmp 0x293d2
movq %rbx, 0xed3bd(%rip)     # 0x1168e8
movsbl -0x1(%rbx), %eax
movl %eax, 0xed3bf(%rip)     # 0x1168f4
jmp 0x293d2
movq %rsi, 0xed3a7(%rip)     # 0x1168e8
movl $0x3ef, 0xed3a9(%rip)   # imm = 0x3EF
decq %rsi
movq %rbx, %rdi
jmp 0x29489
movq %rsi, 0xed37b(%rip)     # 0x1168d8
leaq 0x59b7(%rip), %rdi      # 0x2ef1b
callq 0x780b