// File: /workspace/github_c_makefile_star2_O0/Encryptr[P]O-plus-plus/opp/lexer/lexer.c
// Function: opp_lex_str
void opp_lex_str(struct Opp_Scan* s)
{
	INCR;
	unsigned int idx = 0;
	while (*s->src != '"') {
		if (idx >= s->t.buffer.len)
			realloc_buf(s);

		if (*s->src == EOF || *s->src == '\n')
			opp_error(s, "Expected terminating '\"' in string");
		else if (*s->src == '\\') {
			INCR;
			switch (*s->src) {
				case 'n': 
					s->t.buffer.buf[idx] = '\n';
					break;

				case 't':
					s->t.buffer.buf[idx] = '\t';
					break;

				case '\\':
					s->t.buffer.buf[idx] = '\\';
					break;

				case '"':
					s->t.buffer.buf[idx] = '\"';
					break;

				default:
					opp_error(s, "Invalid escape character '%c'", *s->src);
			}
		}
		else
			s->t.buffer.buf[idx] = *s->src;
		idx++;
		s->src++;
		s->colum++;
	}
	INCR;
	s->t.buffer.buf[idx] = '\0';
	s->t.id = TSTR;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
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)
movl $0x0, 0xc(%rsp)
movq 0x10(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x22, %eax
je 0x11fde
movl 0xc(%rsp), %eax
movq 0x10(%rsp), %rcx
cmpq 0x40(%rcx), %rax
jb 0x11e8b
movq 0x10(%rsp), %rdi
callq 0x11580
movq 0x10(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $-0x1, %eax
je 0x11eab
movq 0x10(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0xa, %eax
jne 0x11ec3
movq 0x10(%rsp), %rdi
leaq 0x32e3(%rip), %rsi      # 0x1519a
movb $0x0, %al
callq 0x11370
jmp 0x11fb1
movq 0x10(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x5c, %eax
jne 0x11f95
movq 0x10(%rsp), %rax
movq (%rax), %rcx
incq %rcx
movq %rcx, (%rax)
movq 0x10(%rsp), %rax
movl 0x2c(%rax), %ecx
incl %ecx
movl %ecx, 0x2c(%rax)
movq 0x10(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
movl %eax, 0x8(%rsp)
subl $0x22, %eax
je 0x11f62
jmp 0x11f08
movl 0x8(%rsp), %eax
subl $0x5c, %eax
je 0x11f4f
jmp 0x11f13
movl 0x8(%rsp), %eax
subl $0x6e, %eax
je 0x11f29
jmp 0x11f1e
movl 0x8(%rsp), %eax
subl $0x74, %eax
je 0x11f3c
jmp 0x11f75
movq 0x10(%rsp), %rax
movq 0x38(%rax), %rax
movl 0xc(%rsp), %ecx
movb $0xa, (%rax,%rcx)
jmp 0x11f93
movq 0x10(%rsp), %rax
movq 0x38(%rax), %rax
movl 0xc(%rsp), %ecx
movb $0x9, (%rax,%rcx)
jmp 0x11f93
movq 0x10(%rsp), %rax
movq 0x38(%rax), %rax
movl 0xc(%rsp), %ecx
movb $0x5c, (%rax,%rcx)
jmp 0x11f93
movq 0x10(%rsp), %rax
movq 0x38(%rax), %rax
movl 0xc(%rsp), %ecx
movb $0x22, (%rax,%rcx)
jmp 0x11f93
movq 0x10(%rsp), %rdi
movq 0x10(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %edx
leaq 0x3231(%rip), %rsi      # 0x151bd
movb $0x0, %al
callq 0x11370
jmp 0x11faf
movq 0x10(%rsp), %rax
movq (%rax), %rax
movb (%rax), %dl
movq 0x10(%rsp), %rax
movq 0x38(%rax), %rax
movl 0xc(%rsp), %ecx
movb %dl, (%rax,%rcx)
jmp 0x11fb1
movl 0xc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xc(%rsp)
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 0x11e5e
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 0x38(%rax), %rax
movl 0xc(%rsp), %ecx
movb $0x0, (%rax,%rcx)
movq 0x10(%rsp), %rax
movl $0x5, 0x30(%rax)
addq $0x18, %rsp
retq
nopl (%rax)