// File: /workspace/github_c_makefile_star2_O0/lucvoo[P]sparse-dev/tokenize.c
// Function: nextchar_slow
static int nextchar_slow(stream_t *stream)
{
	int offset = stream->offset;
	int size = stream->size;
	int c;
	int spliced = 0, had_cr, had_backslash;

restart:
	had_cr = had_backslash = 0;

repeat:
	if (offset >= size) {
		if (stream->fd < 0)
			goto got_eof;
		size = read(stream->fd, stream->buffer, BUFSIZE);
		if (size <= 0)
			goto got_eof;
		stream->size = size;
		stream->offset = offset = 0;
	}

	c = stream->buffer[offset++];
	if (had_cr)
		goto check_lf;

	if (c == '\r') {
		had_cr = 1;
		goto repeat;
	}

norm:
	if (!had_backslash) {
		switch (c) {
		case '\t':
			stream->pos += tabstop - stream->pos % tabstop;
			break;
		case '\n':
			stream->line++;
			stream->pos = 0;
			stream->newline = 1;
			break;
		case '\\':
			had_backslash = 1;
			stream->pos++;
			goto repeat;
		default:
			stream->pos++;
		}
	} else {
		if (c == '\n') {
			stream->line++;
			stream->pos = 0;
			spliced = 1;
			goto restart;
		}
		offset--;
		c = '\\';
	}
out:
	stream->offset = offset;

	return c;

check_lf:
	if (c != '\n')
		offset--;
	c = '\n';
	goto norm;

got_eof:
	if (had_backslash) {
		c = '\\';
		goto out;
	}
	if (stream->pos & Wnewline_eof)
		warning(stream_pos(stream), "no newline at end of file");
	else if (spliced)
		warning(stream_pos(stream), "backslash-newline at end of file");
	return EOF;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movl 0x4(%rax), %eax
movl %eax, -0x14(%rbp)
movq -0x10(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x18(%rbp)
movl $0x0, -0x20(%rbp)
movl $0x0, -0x28(%rbp)
movl $0x0, -0x24(%rbp)
movl -0x14(%rbp), %eax
cmpl -0x18(%rbp), %eax
jl 0x4572d
movq -0x10(%rbp), %rax
cmpl $0x0, (%rax)
jge 0x456eb
jmp 0x45870
movq -0x10(%rbp), %rax
movl (%rax), %edi
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rsi
movl $0x2000, %edx           # imm = 0x2000
callq 0x11170
movl %eax, -0x18(%rbp)
cmpl $0x0, -0x18(%rbp)
jg 0x45711
jmp 0x45870
movl -0x18(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x8(%rax)
movl $0x0, -0x14(%rbp)
movq -0x10(%rbp), %rax
movl $0x0, 0x4(%rax)
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x14(%rbp), %ecx
movl %ecx, %edx
addl $0x1, %edx
movl %edx, -0x14(%rbp)
movslq %ecx, %rcx
movzbl (%rax,%rcx), %eax
movl %eax, -0x1c(%rbp)
cmpl $0x0, -0x24(%rbp)
je 0x45755
jmp 0x45855
cmpl $0xd, -0x1c(%rbp)
jne 0x45767
movl $0x1, -0x24(%rbp)
jmp 0x456d5
jmp 0x45769
cmpl $0x0, -0x28(%rbp)
jne 0x45804
movl -0x1c(%rbp), %eax
movl %eax, -0x3c(%rbp)
subl $0x9, %eax
je 0x45794
jmp 0x45780
movl -0x3c(%rbp), %eax
subl $0xa, %eax
je 0x457b7
jmp 0x4578a
movl -0x3c(%rbp), %eax
subl $0x5c, %eax
je 0x457dc
jmp 0x457f5
movl 0x451d6(%rip), %ecx     # 0x8a970
movq -0x10(%rbp), %rax
movl 0xc(%rax), %eax
xorl %edx, %edx
divl 0x451c7(%rip)           # 0x8a970
subl %edx, %ecx
movq -0x10(%rbp), %rax
addl 0xc(%rax), %ecx
movl %ecx, 0xc(%rax)
jmp 0x45802
movq -0x10(%rbp), %rax
movl 0x10(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x10(%rax)
movq -0x10(%rbp), %rax
movl $0x0, 0xc(%rax)
movq -0x10(%rbp), %rax
movl $0x1, 0x18(%rax)
jmp 0x45802
movl $0x1, -0x28(%rbp)
movq -0x10(%rbp), %rax
movl 0xc(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rax)
jmp 0x456d5
movq -0x10(%rbp), %rax
movl 0xc(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rax)
jmp 0x4583e
cmpl $0xa, -0x1c(%rbp)
jne 0x4582e
movq -0x10(%rbp), %rax
movl 0x10(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x10(%rax)
movq -0x10(%rbp), %rax
movl $0x0, 0xc(%rax)
movl $0x1, -0x20(%rbp)
jmp 0x456c7
movl -0x14(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x14(%rbp)
movl $0x5c, -0x1c(%rbp)
jmp 0x45840
movl -0x14(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x4(%rax)
movl -0x1c(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x458e3
cmpl $0xa, -0x1c(%rbp)
je 0x45864
movl -0x14(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x14(%rbp)
movl $0xa, -0x1c(%rbp)
jmp 0x45769
cmpl $0x0, -0x28(%rbp)
je 0x4587f
movl $0x5c, -0x1c(%rbp)
jmp 0x45840
movq -0x10(%rbp), %rax
movl 0xc(%rax), %eax
leaq 0x3efaf(%rip), %rcx     # 0x8483c
andl (%rcx), %eax
cmpl $0x0, %eax
je 0x458b5
movq -0x10(%rbp), %rdi
callq 0x453d0
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
leaq 0x248fe(%rip), %rsi     # 0x6a1aa
movb $0x0, %al
callq 0x16d80
jmp 0x458dc
cmpl $0x0, -0x20(%rbp)
je 0x458da
movq -0x10(%rbp), %rdi
callq 0x453d0
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rdi
leaq 0x248f1(%rip), %rsi     # 0x6a1c4
movb $0x0, %al
callq 0x16d80
jmp 0x458dc
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
movl -0x4(%rbp), %eax
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax)