// File: /workspace/github_c_makefile_star2_O0/Encryptr[P]O-plus-plus/opp/lexer/lexer.c
// Function: opp_lex_char
enum Opp_Token opp_lex_char(struct Opp_Scan* s)
{
	switch (*s->src)
	{
		case '(':  
			return TOPENP;

		case ')': 
			return TCLOSEP;

		case ',': 
			return TCOMMA; 

		case '[': 
			return TOPENB;
		
		case ']':
			return TCLOSEB;

		case ';': 
			return TSEMICOLON; 

		case '{': 
			return TOPENC;

		case '}': 
			return TCLOSEC;


		case ':': 
			return TCOLON;

		case '~':
			return TBITNOT;

		case '^':
			return TBITXOR;

		case '.': {
			INCR;
			if (*s->src == '.' && s->src[1] == '.') {
				INCR;
				return TVA_ARGS;
			}
			DECR;
			return TDOT;
		}

		case '-': {
			INCR;
			if (*s->src == '-') 
				return TDECR;
			DECR;
			return TMIN;
		}

		case '+': {
			INCR;
			if (*s->src == '+') 
				return TINCR;
			DECR;
			return TADD;
		}
			
		case '>': {
			INCR; 
			if (*s->src == '=') 
				return TGE;
			else if (*s->src == '>')
				return TSHR;
			DECR; 
			return TGT;
		}

		case '<': {
			INCR; 
			if (*s->src == '=') 
				return TLE;
			else if (*s->src == '<')
				return TSHL;
			DECR; 
			return TLT;
		}
		
		case '&': {
			INCR; 
			if (*s->src == '&') 
				return TAND; 
			DECR; 
			return TADDR;
		}

		case '|': {
			INCR; 
			if (*s->src == '|') 
				return TOR; 
			DECR; 
			return TBITOR;
		}

		case '=': {
			INCR; 
			if (*s->src == '=') 
				return TEQEQ; 
			DECR; 
			return TEQ;
		}

		case '!': {
			INCR; 
			if (*s->src == '=') 
				return TNOTEQ; 
			DECR; 
			return TNOT;
		}

		case '/': {
			INCR;
			 if (*s->src == '=') 
				return TDIVEQ; 
			DECR; 
			return TDIV;
		}

		case '*': {
			INCR; 
			if (*s->src == '=') 
				return TMULEQ; 
			DECR; 
			return TMUL;
		}

		case '%': {
			INCR; 
			if (*s->src == '=') 
				return TMODEQ; 
			DECR; 
			return TMOD;
		}

		case '\'': { 
			INCR;
			// add espcaps
			s->t.buffer.buf[0] = *s->src;
			s->t.buffer.buf[1] = 0;
			INCR;

			if (*s->src != '\'')
				opp_error(s, "Expected terminating ' next to '%s'",
					s->t.buffer.buf);

			return TCH;
		}

		default: break;
	}
	return INVALID;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
addl $-0x21, %eax
movl %eax, %ecx
movq %rcx, (%rsp)
subl $0x5d, %eax
ja 0x12697
movq (%rsp), %rax
leaq 0x2f73(%rip), %rcx      # 0x14fc4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0x22, 0x14(%rsp)
jmp 0x126a1
movl $0x23, 0x14(%rsp)
jmp 0x126a1
movl $0x24, 0x14(%rsp)
jmp 0x126a1
movl $0x25, 0x14(%rsp)
jmp 0x126a1
movl $0x26, 0x14(%rsp)
jmp 0x126a1
movl $0x2a, 0x14(%rsp)
jmp 0x126a1
movl $0x27, 0x14(%rsp)
jmp 0x126a1
movl $0x28, 0x14(%rsp)
jmp 0x126a1
movl $0x1b, 0x14(%rsp)
jmp 0x126a1
movl $0x2f, 0x14(%rsp)
jmp 0x126a1
movl $0x2d, 0x14(%rsp)
jmp 0x126a1
movq 0x8(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movq 0x8(%rsp), %rax
movl 0x2c(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x2c(%rax)
movq 0x8(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x2e, %eax
jne 0x12151
movq 0x8(%rsp), %rax
movq (%rax), %rax
movsbl 0x1(%rax), %eax
cmpl $0x2e, %eax
jne 0x12151
movq 0x8(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movq 0x8(%rsp), %rax
movl 0x2c(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x2c(%rax)
movl $0x1c, 0x14(%rsp)
jmp 0x126a1
movq 0x8(%rsp), %rax
movq (%rax), %rcx
addq $-0x1, %rcx
movq %rcx, (%rax)
movq 0x8(%rsp), %rax
movl 0x2c(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x2c(%rax)
movl $0x29, 0x14(%rsp)
jmp 0x126a1
movq 0x8(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movq 0x8(%rsp), %rax
movl 0x2c(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x2c(%rax)
movq 0x8(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0x121b5
movl $0x18, 0x14(%rsp)
jmp 0x126a1
movq 0x8(%rsp), %rax
movq (%rax), %rcx
addq $-0x1, %rcx
movq %rcx, (%rax)
movq 0x8(%rsp), %rax
movl 0x2c(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x2c(%rax)
movl $0x14, 0x14(%rsp)
jmp 0x126a1
movq 0x8(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movq 0x8(%rsp), %rax
movl 0x2c(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x2c(%rax)
movq 0x8(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x2b, %eax
jne 0x12219
movl $0x19, 0x14(%rsp)
jmp 0x126a1
movq 0x8(%rsp), %rax
movq (%rax), %rcx
addq $-0x1, %rcx
movq %rcx, (%rax)
movq 0x8(%rsp), %rax
movl 0x2c(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x2c(%rax)
movl $0x13, 0x14(%rsp)
jmp 0x126a1
movq 0x8(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movq 0x8(%rsp), %rax
movl 0x2c(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x2c(%rax)
movq 0x8(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x3d, %eax
jne 0x1227d
movl $0xc, 0x14(%rsp)
jmp 0x126a1
movq 0x8(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x3e, %eax
jne 0x1229a
movl $0x2c, 0x14(%rsp)
jmp 0x126a1
jmp 0x1229c
movq 0x8(%rsp), %rax
movq (%rax), %rcx
addq $-0x1, %rcx
movq %rcx, (%rax)
movq 0x8(%rsp), %rax
movl 0x2c(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x2c(%rax)
movl $0x9, 0x14(%rsp)
jmp 0x126a1
movq 0x8(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movq 0x8(%rsp), %rax
movl 0x2c(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x2c(%rax)
movq 0x8(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x3d, %eax
jne 0x12300
movl $0xa, 0x14(%rsp)
jmp 0x126a1
movq 0x8(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x3c, %eax
jne 0x1231d
movl $0x2b, 0x14(%rsp)
jmp 0x126a1
jmp 0x1231f
movq 0x8(%rsp), %rax
movq (%rax), %rcx
addq $-0x1, %rcx
movq %rcx, (%rax)
movq 0x8(%rsp), %rax
movl 0x2c(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x2c(%rax)
movl $0xb, 0x14(%rsp)
jmp 0x126a1
movq 0x8(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movq 0x8(%rsp), %rax
movl 0x2c(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x2c(%rax)
movq 0x8(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x26, %eax
jne 0x12383
movl $0x8, 0x14(%rsp)
jmp 0x126a1
movq 0x8(%rsp), %rax
movq (%rax), %rcx
addq $-0x1, %rcx
movq %rcx, (%rax)
movq 0x8(%rsp), %rax
movl 0x2c(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x2c(%rax)
movl $0x1a, 0x14(%rsp)
jmp 0x126a1
movq 0x8(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movq 0x8(%rsp), %rax
movl 0x2c(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x2c(%rax)
movq 0x8(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x7c, %eax
jne 0x123e7
movl $0x7, 0x14(%rsp)
jmp 0x126a1
movq 0x8(%rsp), %rax
movq (%rax), %rcx
addq $-0x1, %rcx
movq %rcx, (%rax)
movq 0x8(%rsp), %rax
movl 0x2c(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x2c(%rax)
movl $0x2e, 0x14(%rsp)
jmp 0x126a1
movq 0x8(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movq 0x8(%rsp), %rax
movl 0x2c(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x2c(%rax)
movq 0x8(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x3d, %eax
jne 0x1244b
movl $0xd, 0x14(%rsp)
jmp 0x126a1
movq 0x8(%rsp), %rax
movq (%rax), %rcx
addq $-0x1, %rcx
movq %rcx, (%rax)
movq 0x8(%rsp), %rax
movl 0x2c(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x2c(%rax)
movl $0xf, 0x14(%rsp)
jmp 0x126a1
movq 0x8(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movq 0x8(%rsp), %rax
movl 0x2c(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x2c(%rax)
movq 0x8(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x3d, %eax
jne 0x124af
movl $0xe, 0x14(%rsp)
jmp 0x126a1
movq 0x8(%rsp), %rax
movq (%rax), %rcx
addq $-0x1, %rcx
movq %rcx, (%rax)
movq 0x8(%rsp), %rax
movl 0x2c(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x2c(%rax)
movl $0x10, 0x14(%rsp)
jmp 0x126a1
movq 0x8(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movq 0x8(%rsp), %rax
movl 0x2c(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x2c(%rax)
movq 0x8(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x3d, %eax
jne 0x12513
movl $0x1f, 0x14(%rsp)
jmp 0x126a1
movq 0x8(%rsp), %rax
movq (%rax), %rcx
addq $-0x1, %rcx
movq %rcx, (%rax)
movq 0x8(%rsp), %rax
movl 0x2c(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x2c(%rax)
movl $0x15, 0x14(%rsp)
jmp 0x126a1
movq 0x8(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movq 0x8(%rsp), %rax
movl 0x2c(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x2c(%rax)
movq 0x8(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x3d, %eax
jne 0x12577
movl $0x20, 0x14(%rsp)
jmp 0x126a1
movq 0x8(%rsp), %rax
movq (%rax), %rcx
addq $-0x1, %rcx
movq %rcx, (%rax)
movq 0x8(%rsp), %rax
movl 0x2c(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x2c(%rax)
movl $0x16, 0x14(%rsp)
jmp 0x126a1
movq 0x8(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movq 0x8(%rsp), %rax
movl 0x2c(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x2c(%rax)
movq 0x8(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x3d, %eax
jne 0x125db
movl $0x21, 0x14(%rsp)
jmp 0x126a1
movq 0x8(%rsp), %rax
movq (%rax), %rcx
addq $-0x1, %rcx
movq %rcx, (%rax)
movq 0x8(%rsp), %rax
movl 0x2c(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x2c(%rax)
movl $0x17, 0x14(%rsp)
jmp 0x126a1
movq 0x8(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movq 0x8(%rsp), %rax
movl 0x2c(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x2c(%rax)
movq 0x8(%rsp), %rax
movq (%rax), %rax
movb (%rax), %cl
movq 0x8(%rsp), %rax
movq 0x38(%rax), %rax
movb %cl, (%rax)
movq 0x8(%rsp), %rax
movq 0x38(%rax), %rax
movb $0x0, 0x1(%rax)
movq 0x8(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movq 0x8(%rsp), %rax
movl 0x2c(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x2c(%rax)
movq 0x8(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x27, %eax
je 0x1268d
movq 0x8(%rsp), %rdi
movq 0x8(%rsp), %rax
movq 0x38(%rax), %rdx
leaq 0x2b55(%rip), %rsi      # 0x151db
movb $0x0, %al
callq 0x11370
movl $0x6, 0x14(%rsp)
jmp 0x126a1
jmp 0x12699
movl $0x0, 0x14(%rsp)
movl 0x14(%rsp), %eax
addq $0x18, %rsp
retq
nopw (%rax,%rax)