// File: /workspace/github_c_makefile_star2_O0/Encryptr[P]O-plus-plus/opp/lexer/lexer.c
// Function: opp_next
void opp_next(struct Opp_Scan* s)
{
	memset(s->t.buffer.buf, 0, s->t.buffer.len);
	while (*s->src)
	{
		if (*s->src == '\n') {
			s->line++;
			s->colum = 0;
		}
		else if (ignore(*s->src)) {}
		else if (*s->src == '/') {
			INCR;
			if (*s->src == '/') {
				while (*s->src != '\n' && *s->src) {
					s->src++;
				}
				s->colum = 0;
				s->line++;
			}
			else if (*s->src == '*') {
				opp_long_comment(s);
			}
			else {
				s->t.id = TDIV;
				return;
			}
		}
		else if (isletter(*s->src)) {
			opp_lex_identifier(s); 
			return;
		}
		else if (*s->src == '\"') {
			opp_lex_str(s);
			return;
		}
		else if (isnum(*s->src)) {
			opp_lex_numeral(s);
			return;
		}
		else {
			enum Opp_Token res = opp_lex_char(s);
			if (res == INVALID) 
				opp_error(s, "Invalid token found '%c'", *s->src);
			s->t.id = res;
			INCR;
			return;
		}

		s->colum++;
		s->src++;
	}
	s->t.id = FEND;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq 0x10(%rsp), %rax
movq 0x38(%rax), %rdi
movq 0x10(%rsp), %rax
movq 0x40(%rax), %rdx
xorl %esi, %esi
callq 0x10f0
movq 0x10(%rsp), %rax
movq (%rax), %rax
cmpb $0x0, (%rax)
je 0x11e13
movq 0x10(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0xa, %eax
jne 0x11c32
movq 0x10(%rsp), %rax
movl 0x28(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x28(%rax)
movq 0x10(%rsp), %rax
movl $0x0, 0x2c(%rax)
jmp 0x11df1
movq 0x10(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %edi
callq 0x126b0
testb $0x1, %al
jne 0x11c48
jmp 0x11c4d
jmp 0x11def
movq 0x10(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x2f, %eax
jne 0x11d26
movq 0x10(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movq 0x10(%rsp), %rax
movl 0x2c(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x2c(%rax)
movq 0x10(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x2f, %eax
jne 0x11cf2
jmp 0x11c90
movq 0x10(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %ecx
xorl %eax, %eax
cmpl $0xa, %ecx
movb %al, 0xb(%rsp)
je 0x11cbb
movq 0x10(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
setne %al
movb %al, 0xb(%rsp)
movb 0xb(%rsp), %al
testb $0x1, %al
jne 0x11cc5
jmp 0x11cd6
movq 0x10(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
jmp 0x11c90
movq 0x10(%rsp), %rax
movl $0x0, 0x2c(%rax)
movq 0x10(%rsp), %rax
movl 0x28(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x28(%rax)
jmp 0x11d21
movq 0x10(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x2a, %eax
jne 0x11d0e
movq 0x10(%rsp), %rdi
callq 0x126f0
jmp 0x11d1f
movq 0x10(%rsp), %rax
movl $0x15, 0x30(%rax)
jmp 0x11e1f
jmp 0x11d21
jmp 0x11ded
movq 0x10(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %edi
callq 0x11820
testb $0x1, %al
jne 0x11d3c
jmp 0x11d4b
movq 0x10(%rsp), %rdi
callq 0x11740
jmp 0x11e1f
movq 0x10(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x22, %eax
jne 0x11d6a
movq 0x10(%rsp), %rdi
callq 0x11e30
jmp 0x11e1f
movq 0x10(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %edi
callq 0x11880
testb $0x1, %al
jne 0x11d80
jmp 0x11d8f
movq 0x10(%rsp), %rdi
callq 0x119a0
jmp 0x11e1f
movq 0x10(%rsp), %rdi
callq 0x12020
movl %eax, 0xc(%rsp)
cmpl $0x0, 0xc(%rsp)
jne 0x11dc2
movq 0x10(%rsp), %rdi
movq 0x10(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %edx
leaq 0x3444(%rip), %rsi      # 0x151ff
movb $0x0, %al
callq 0x11370
movl 0xc(%rsp), %ecx
movq 0x10(%rsp), %rax
movl %ecx, 0x30(%rax)
movq 0x10(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movq 0x10(%rsp), %rax
movl 0x2c(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x2c(%rax)
jmp 0x11e1f
jmp 0x11def
jmp 0x11df1
movq 0x10(%rsp), %rax
movl 0x2c(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x2c(%rax)
movq 0x10(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
jmp 0x11bf2
movq 0x10(%rsp), %rax
movl $0x40, 0x30(%rax)
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)