// File: /workspace/github_c_makefile_star2_O2/ArtifexSoftware[P]mujs/./regexp.c
// Function: nextrune
static int nextrune(struct cstate *g)
{
	if (!*g->source) {
		g->yychar = EOF;
		return 0;
	}
	g->source += chartorune(&g->yychar, g->source);
	if (g->yychar == '\\') {
		if (!*g->source)
			die(g, "unterminated escape sequence");
		g->source += chartorune(&g->yychar, g->source);
		switch (g->yychar) {
		case 'f': g->yychar = '\f'; return 0;
		case 'n': g->yychar = '\n'; return 0;
		case 'r': g->yychar = '\r'; return 0;
		case 't': g->yychar = '\t'; return 0;
		case 'v': g->yychar = '\v'; return 0;
		case 'c':
			if (!g->source[0])
				die(g, "unterminated escape sequence");
			g->yychar = (*g->source++) & 31;
			return 0;
		case 'x':
			if (!g->source[0] || !g->source[1])
				die(g, "unterminated escape sequence");
			g->yychar = hex(g, *g->source++) << 4;
			g->yychar += hex(g, *g->source++);
			if (g->yychar == 0) {
				g->yychar = '0';
				return 1;
			}
			return 1;
		case 'u':
			if (!g->source[0] || !g->source[1] || !g->source[2] || !g->source[3])
				die(g, "unterminated escape sequence");
			g->yychar = hex(g, *g->source++) << 12;
			g->yychar += hex(g, *g->source++) << 8;
			g->yychar += hex(g, *g->source++) << 4;
			g->yychar += hex(g, *g->source++);
			if (g->yychar == 0) {
				g->yychar = '0';
				return 1;
			}
			return 1;
		case 0:
			g->yychar = '0';
			return 1;
		}
		if (strchr(ESCAPES, g->yychar))
			return 1;
		if (isunicodeletter(g->yychar) || g->yychar == '_') /* check identity escape */
			die(g, "invalid escape character");
		return 0;
	}
	return 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq 0x18(%rdi), %rsi
leaq 0xac(%rdi), %rbx
cmpb $0x0, (%rsi)
je 0x1e6eb
movq %rdi, %r14
movq %rbx, %rdi
callq 0x1241b
movl %eax, %esi
addq 0x18(%r14), %rsi
movq %rsi, 0x18(%r14)
cmpl $0x5c, 0xac(%r14)
jne 0x1e86f
cmpb $0x0, (%rsi)
je 0x1e877
movq %rbx, %rdi
callq 0x1241b
movl %eax, %ecx
addq 0x18(%r14), %rcx
movq %rcx, 0x18(%r14)
movl 0xac(%r14), %r15d
xorl %eax, %eax
leal -0x6e(%r15), %edx
cmpl $0xa, %edx
ja 0x1e6f7
leaq 0x2746(%rip), %rsi      # 0x20e24
movslq (%rsi,%rdx,4), %rdx
addq %rsi, %rdx
jmpq *%rdx
pushq $0xa
jmp 0x1e6ef
xorl %eax, %eax
pushq $-0x1
popq %rcx
movl %ecx, (%rbx)
jmp 0x1e871
testl %r15d, %r15d
je 0x1e845
cmpl $0x63, %r15d
je 0x1e82d
cmpl $0x66, %r15d
jne 0x1e714
pushq $0xc
jmp 0x1e6ef
leaq 0xbb37(%rip), %rdi      # 0x2a252
pushq $0x22
popq %rdx
movl %r15d, %esi
callq 0x30c0
testq %rax, %rax
je 0x1e84f
pushq $0x1
popq %rax
jmp 0x1e871
pushq $0xb
jmp 0x1e6ef
cmpb $0x0, (%rcx)
je 0x1e877
cmpb $0x0, 0x1(%rcx)
je 0x1e877
cmpb $0x0, 0x2(%rcx)
je 0x1e877
cmpb $0x0, 0x3(%rcx)
je 0x1e877
leaq 0x1(%rcx), %rax
movq %rax, 0x18(%r14)
movsbl (%rcx), %esi
movq %r14, %rdi
callq 0x1e966
shll $0xc, %eax
movl %eax, 0xac(%r14)
movq 0x18(%r14), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x18(%r14)
movsbl (%rax), %esi
movq %r14, %rdi
callq 0x1e966
shll $0x8, %eax
addl %eax, 0xac(%r14)
movq 0x18(%r14), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x18(%r14)
movsbl (%rax), %esi
movq %r14, %rdi
callq 0x1e966
shll $0x4, %eax
addl %eax, 0xac(%r14)
jmp 0x1e801
pushq $0x9
jmp 0x1e6ef
pushq $0xd
jmp 0x1e6ef
cmpb $0x0, (%rcx)
je 0x1e877
cmpb $0x0, 0x1(%rcx)
je 0x1e877
leaq 0x1(%rcx), %rax
movq %rax, 0x18(%r14)
movsbl (%rcx), %esi
movq %r14, %rdi
callq 0x1e966
shll $0x4, %eax
movl %eax, 0xac(%r14)
movq 0x18(%r14), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x18(%r14)
movsbl (%rax), %esi
movq %r14, %rdi
callq 0x1e966
addl 0xac(%r14), %eax
pushq $0x30
popq %rcx
cmovnel %eax, %ecx
pushq $0x1
popq %rax
jmp 0x1e6f0
cmpb $0x0, (%rcx)
je 0x1e877
leaq 0x1(%rcx), %rdx
movq %rdx, 0x18(%r14)
movzbl (%rcx), %ecx
andl $0x1f, %ecx
jmp 0x1e6f0
pushq $0x1
popq %rax
pushq $0x30
jmp 0x1e6ef
movl %r15d, %eax
andl $-0x21, %eax
addl $-0x41, %eax
cmpl $0x1a, %eax
jb 0x1e886
movl %r15d, %edi
callq 0x153b4
cmpl $0x5f, %r15d
je 0x1e886
testl %eax, %eax
jne 0x1e886
xorl %eax, %eax
popq %rbx
popq %r14
popq %r15
retq
leaq 0xb016(%rip), %rsi      # 0x29894
movq %r14, %rdi
callq 0x14129
leaq 0xb9e7(%rip), %rsi      # 0x2a274
jmp 0x1e87e