// File: /workspace/github_c_makefile_star2_O1/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 %rbx
pushq %rax
movq 0xebce5(%rip), %rbx     # 0x1118e8
incq %rbx
movl $0x2401, %eax           # imm = 0x2401
movzbl -0x1(%rbx), %ecx
cmpl $0xd, %ecx
ja 0x25c19
btl %ecx, %eax
jb 0x25c2d
addb $-0x7f, %cl
cmpb $-0x5f, %cl
ja 0x25c2d
movq %rbx, 0xebcc0(%rip)     # 0x1118e8
incq %rbx
jmp 0x25c0b
leaq -0x1(%rbx), %r14
movq %r14, 0xebcc8(%rip)     # 0x111900
movzbl -0x1(%rbx), %r15d
cmpl $0xc, %r15d
jle 0x25c8b
cmpl $0xd, %r15d
je 0x25c96
cmpl $0x23, %r15d
je 0x25c5a
cmpl $0x2d, %r15d
jne 0x25c9f
cmpb $0x2d, (%rbx)
jne 0x25c9f
movq 0xebc87(%rip), %rax     # 0x1118e8
incq %rax
movzbl -0x1(%rax), %ecx
testl %ecx, %ecx
je 0x25d1d
cmpl $0xa, %ecx
je 0x25d16
cmpl $0xd, %ecx
je 0x25d16
movq %rax, 0xebc5f(%rip)     # 0x1118e8
jmp 0x25c61
testl %r15d, %r15d
je 0x25d0a
cmpl $0xa, %r15d
jne 0x25c9f
movq %rbx, 0xebc4b(%rip)     # 0x1118e8
jmp 0x25d1d
callq 0x73a0
cmpb $0x2e, %r15b
je 0x25d32
movsbq %r15b, %rcx
movq (%rax), %rdx
movzwl (%rdx,%rcx,2), %edx
movl %edx, %esi
andl $0x800, %esi            # imm = 0x800
jne 0x25d32
btl $0xa, %edx
jb 0x25dab
movzbl %cl, %eax
cmpl $0x3c, %eax
jg 0x25e01
cmpl $0x22, %eax
je 0x25e14
cmpl $0x3c, %eax
jne 0x25ec2
cmpb $0x3d, (%rbx)
jne 0x25e8e
incq %rbx
movq %rbx, 0xebbea(%rip)     # 0x1118e8
movl $0x3f1, 0xebbec(%rip)   # imm = 0x3F1
jmp 0x25d27
movl $0x3f3, 0xebbe0(%rip)   # imm = 0x3F3
jmp 0x25d27
movq %rax, 0xebbcb(%rip)     # 0x1118e8
movl $0x3ee, 0xebbcd(%rip)   # imm = 0x3EE
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq (%rax), %rsi
movq 0xebbac(%rip), %rcx     # 0x1118e8
movsbq (%rcx), %rdx
testb $0x8, 0x1(%rsi,%rdx,2)
je 0x25d65
incq %rcx
movq %rcx, 0xebb97(%rip)     # 0x1118e8
movq (%rax), %rsi
movsbq (%rcx), %rdx
incq %rcx
testb $0x8, 0x1(%rsi,%rdx,2)
jne 0x25d4a
decq %rcx
movl $0x3e9, %esi            # imm = 0x3E9
cmpb $0x2e, %dl
jne 0x25d9c
incq %rcx
movq %rcx, 0xebb6f(%rip)     # 0x1118e8
movq (%rax), %rdx
movsbq (%rcx), %rsi
incq %rcx
testb $0x8, 0x1(%rdx,%rsi,2)
jne 0x25d72
leaq -0x2(%rcx), %rax
movl $0x3ea, %esi            # imm = 0x3EA
cmpq %rax, %r14
je 0x25ed8
movl %esi, 0xebb52(%rip)     # 0x1118f4
movq 0xebb3f(%rip), %rsi     # 0x1118e8
jmp 0x25def
movq (%rax), %rdx
movq 0xebb33(%rip), %rsi     # 0x1118e8
movsbq (%rsi), %rcx
testb $0x8, (%rdx,%rcx,2)
je 0x25ddc
incq %rsi
movq %rsi, 0xebb1f(%rip)     # 0x1118e8
movq (%rax), %rdx
movsbq (%rsi), %rcx
incq %rsi
testb $0x8, (%rdx,%rcx,2)
jne 0x25dc2
decq %rsi
xorl %eax, %eax
cmpb $0x28, %cl
sete %al
addl $0x3eb, %eax            # imm = 0x3EB
movl %eax, 0xebb05(%rip)     # 0x1118f4
movq %r14, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x25eee
cmpl $0x3d, %eax
je 0x25e54
cmpl $0x3e, %eax
je 0x25ea4
jmp 0x25ec2
movq %rbx, %rsi
movq %rsi, 0xebaca(%rip)     # 0x1118e8
movzbl (%rsi), %eax
incq %rsi
cmpl $0x21, %eax
jle 0x25e30
cmpl $0x22, %eax
jne 0x25e17
jmp 0x25e72
testl %eax, %eax
je 0x25e3e
cmpl $0xa, %eax
je 0x25e3e
cmpl $0xd, %eax
jne 0x25e17
decq %rsi
movq %rsi, 0xeba90(%rip)     # 0x1118d8
leaq 0x50c3(%rip), %rdi      # 0x2af12
callq 0x77c8
cmpb $0x3d, (%rbx)
jne 0x25e96
incq %rbx
movq %rbx, 0xeba85(%rip)     # 0x1118e8
movl $0x3f2, 0xeba87(%rip)   # imm = 0x3F2
jmp 0x25d27
movq %rsi, 0xeba6f(%rip)     # 0x1118e8
movl $0x3ef, 0xeba71(%rip)   # imm = 0x3EF
decq %rsi
movq %rbx, %rdi
jmp 0x25df2
cmpb $0x3e, %r15b
je 0x25ea4
jmp 0x25ec2
cmpb $0x3e, %r15b
je 0x25ea4
movzbl %cl, %eax
jmp 0x25ce2
cmpb $0x3d, (%rbx)
jne 0x25ec2
incq %rbx
movq %rbx, 0xeba35(%rip)     # 0x1118e8
movl $0x3f0, 0xeba37(%rip)   # imm = 0x3F0
jmp 0x25d27
movq %rbx, 0xeba1f(%rip)     # 0x1118e8
movsbl -0x1(%rbx), %eax
movl %eax, 0xeba21(%rip)     # 0x1118f4
jmp 0x25d27
decq %rcx
movq %rcx, 0xeb9f6(%rip)     # 0x1118d8
leaq 0x5012(%rip), %rdi      # 0x2aefb
callq 0x77c8