// File: /workspace/github_c_makefile_star2_O0/lucvoo[P]sparse-dev/tokenize.c
// Function: get_one_special
static int get_one_special(int c, stream_t *stream)
{
	struct token *token;
	int next, value, i;

	next = nextchar(stream);

	/*
	 * Check for numbers, strings, character constants, and comments
	 */
	switch (c) {
	case '.':
		if (next >= '0' && next <= '9')
			return get_one_number(c, next, stream);
		break;
	case '"':
		return eat_string(next, stream, TOKEN_STRING);
	case '\'':
		return eat_string(next, stream, TOKEN_CHAR);
	case '/':
		if (next == '/')
			return drop_stream_eoln(stream);
		if (next == '*')
			return drop_stream_comment(stream);
	}

	/*
	 * Check for combinations
	 */
	value = c;
	if (cclass[next + 1] & ValidSecond) {
		i = special_hash(c, next);
		if (hash_results[i][0] == c && hash_results[i][1] == next) {
			value = code[i];
			next = nextchar(stream);
			if (value >= SPECIAL_LEFTSHIFT &&
			    next == "==."[value - SPECIAL_LEFTSHIFT]) {
				value += 3;
				next = nextchar(stream);
			}
		}
	}

	/* Pass it on.. */
	token = stream->token;
	token_type(token) = TOKEN_SPECIAL;
	token->special = value;
	add_token(stream);
	return next;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x454d0
movl %eax, -0x1c(%rbp)
movl -0x8(%rbp), %eax
addl $-0x22, %eax
movl %eax, %ecx
movq %rcx, -0x30(%rbp)
subl $0xd, %eax
ja 0x45cfb
movq -0x30(%rbp), %rax
leaq 0x24209(%rip), %rcx     # 0x69e74
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
cmpl $0x30, -0x1c(%rbp)
jl 0x45c97
cmpl $0x39, -0x1c(%rbp)
jg 0x45c97
movl -0x8(%rbp), %edi
movl -0x1c(%rbp), %esi
movq -0x10(%rbp), %rdx
callq 0x458f0
movl %eax, -0x4(%rbp)
jmp 0x45e03
jmp 0x45cfb
movl -0x1c(%rbp), %edi
movq -0x10(%rbp), %rsi
movl $0x10, %edx
callq 0x45e60
movl %eax, -0x4(%rbp)
jmp 0x45e03
movl -0x1c(%rbp), %edi
movq -0x10(%rbp), %rsi
movl $0x6, %edx
callq 0x45e60
movl %eax, -0x4(%rbp)
jmp 0x45e03
cmpl $0x2f, -0x1c(%rbp)
jne 0x45ce2
movq -0x10(%rbp), %rdi
callq 0x46140
movl %eax, -0x4(%rbp)
jmp 0x45e03
cmpl $0x2a, -0x1c(%rbp)
jne 0x45cf9
movq -0x10(%rbp), %rdi
callq 0x461a0
movl %eax, -0x4(%rbp)
jmp 0x45e03
jmp 0x45cfb
movl -0x8(%rbp), %eax
movl %eax, -0x20(%rbp)
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rcx
leaq 0x2429f(%rip), %rax     # 0x69fb0
movsbl (%rax,%rcx), %eax
andl $0x20, %eax
cmpl $0x0, %eax
je 0x45dcc
movl -0x8(%rbp), %eax
shll $0x3, %eax
movl -0x1c(%rbp), %ecx
shll %ecx
addl %ecx, %eax
movl -0x8(%rbp), %ecx
shll $0x3, %ecx
movl -0x1c(%rbp), %edx
shll %edx
addl %edx, %ecx
sarl $0x5, %ecx
addl %ecx, %eax
andl $0x1f, %eax
movl %eax, -0x24(%rbp)
movslq -0x24(%rbp), %rcx
leaq 0x44daf(%rip), %rax     # 0x8ab00
movzbl (%rax,%rcx,2), %eax
cmpl -0x8(%rbp), %eax
jne 0x45dca
movslq -0x24(%rbp), %rcx
leaq 0x44d9b(%rip), %rax     # 0x8ab00
movzbl 0x1(%rax,%rcx,2), %eax
cmpl -0x1c(%rbp), %eax
jne 0x45dca
movslq -0x24(%rbp), %rcx
leaq 0x44dc6(%rip), %rax     # 0x8ab40
movl (%rax,%rcx,4), %eax
movl %eax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
callq 0x454d0
movl %eax, -0x1c(%rbp)
cmpl $0x112, -0x20(%rbp)     # imm = 0x112
jl 0x45dc8
movl -0x1c(%rbp), %eax
movl -0x20(%rbp), %ecx
subl $0x112, %ecx            # imm = 0x112
movslq %ecx, %rdx
leaq 0x244ed(%rip), %rcx     # 0x6a298
movsbl (%rcx,%rdx), %ecx
cmpl %ecx, %eax
jne 0x45dc8
movl -0x20(%rbp), %eax
addl $0x3, %eax
movl %eax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
callq 0x454d0
movl %eax, -0x1c(%rbp)
jmp 0x45dca
jmp 0x45dcc
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq (%rax), %rcx
andq $-0x40, %rcx
orq $0x12, %rcx
movq %rcx, (%rax)
movl -0x20(%rbp), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x10(%rax)
movq -0x10(%rbp), %rdi
callq 0x45e10
movl -0x1c(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)