// File: /workspace/github_c_makefile_star2_O0/markdryan[P]subtilis/common/lexer.c
// Function: prv_process_string
static void prv_process_string(subtilis_lexer_t *l, subtilis_token_t *t,
			       subtilis_error_t *err)
{
	const char *tbuf;

	l->index++;
	t->type = SUBTILIS_TOKEN_STRING;
	do {
		prv_ensure_input(l, err);
		if (err->type != SUBTILIS_ERROR_OK)
			return;
		if (l->index == l->buf_end)
			goto unterminated;

		while (l->index < l->buf_end) {
			prv_set_next_with_err(l, t, err);
			if (err->type != SUBTILIS_ERROR_OK)
				return;
			if (l->buffer[l->index - 1] != '"')
				continue;

			prv_ensure_input(l, err);
			if (err->type != SUBTILIS_ERROR_OK)
				goto done;
			if ((l->index == l->buf_end) ||
			    (l->buffer[l->index] != '"'))
				goto done;
			l->index++;
		}
	} while (l->index == l->buf_end);

done:

	subtilis_buffer_delete(&t->buf, subtilis_buffer_get_size(&t->buf) - 1,
			       1, err);

	return;

unterminated:
	tbuf = subtilis_token_get_text(t);
	subtilis_error_set_unterminated_string(err, tbuf, l->stream->name,
					       l->line);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq 0x40(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x40(%rax)
movq -0x10(%rbp), %rax
movl $0x3, (%rax)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x13890
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x13d89
jmp 0x13efe
movq -0x8(%rbp), %rax
movq 0x40(%rax), %rax
movq -0x8(%rbp), %rcx
cmpq 0x360(%rcx), %rax
jne 0x13da3
jmp 0x13eb5
jmp 0x13da5
movq -0x8(%rbp), %rax
movq 0x40(%rax), %rax
movq -0x8(%rbp), %rcx
cmpq 0x360(%rcx), %rax
jae 0x13e5f
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x14700
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x13ddd
jmp 0x13efe
movq -0x8(%rbp), %rax
movq 0x368(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x40(%rcx), %rcx
subq $0x1, %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x22, %eax
je 0x13dff
jmp 0x13da5
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x13890
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x13e17
jmp 0x13e7c
movq -0x8(%rbp), %rax
movq 0x40(%rax), %rax
movq -0x8(%rbp), %rcx
cmpq 0x360(%rcx), %rax
je 0x13e48
movq -0x8(%rbp), %rax
movq 0x368(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x40(%rcx), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x22, %eax
je 0x13e4a
jmp 0x13e7c
movq -0x8(%rbp), %rax
movq 0x40(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x40(%rax)
jmp 0x13da5
jmp 0x13e61
movq -0x8(%rbp), %rax
movq 0x40(%rax), %rax
movq -0x8(%rbp), %rcx
cmpq 0x360(%rcx), %rax
je 0x13d6e
jmp 0x13e7c
movq -0x10(%rbp), %rax
addq $0x158, %rax            # imm = 0x158
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
addq $0x158, %rdi            # imm = 0x158
callq 0x16270
movq -0x28(%rbp), %rdi
movq %rax, %rsi
subq $0x1, %rsi
movq -0x18(%rbp), %rcx
movl $0x1, %edx
callq 0x16450
jmp 0x13efe
movq -0x10(%rbp), %rdi
callq 0x12d70
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rdx
movq -0x8(%rbp), %rax
movq 0x30(%rax), %r8
movq -0x8(%rbp), %rax
movl 0x38(%rax), %r9d
movl $0x6, %esi
leaq 0x97390(%rip), %rcx     # 0xab276
leaq 0x95197(%rip), %rax     # 0xa9084
movq %rax, (%rsp)
movl $0x21f, 0x8(%rsp)       # imm = 0x21F
callq 0x156d0
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)