// File: /workspace/github_c_makefile_star2_O3/ArtifexSoftware[P]mujs/./regexp.c
// Function: parserep
static Renode *parserep(struct cstate *g)
{
	Renode *atom;

	if (accept(g, '^')) return newnode(g, P_BOL);
	if (accept(g, '$')) return newnode(g, P_EOL);
	if (accept(g, L_WORD)) return newnode(g, P_WORD);
	if (accept(g, L_NWORD)) return newnode(g, P_NWORD);

	atom = parseatom(g);
	if (g->lookahead == L_COUNT) {
		int min = g->yymin, max = g->yymax;
		next(g);
		if (max < min)
			die(g, "invalid quantifier");
		return newrep(g, atom, accept(g, '?'), min, max);
	}
	if (accept(g, '*')) return newrep(g, atom, accept(g, '?'), 0, REPINF);
	if (accept(g, '+')) return newrep(g, atom, accept(g, '?'), 1, REPINF);
	if (accept(g, '?')) return newrep(g, atom, accept(g, '?'), 0, 1);
	return atom;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %r14
movl 0xa8(%rdi), %eax
cmpl $0x105, %eax            # imm = 0x105
jg 0x2a0d5
cmpl $0x24, %eax
je 0x2a15d
cmpl $0x5e, %eax
jne 0x2a103
movq %r14, %rdi
callq 0x1af6c
movq 0x10(%r14), %rbx
leaq 0x20(%rbx), %rax
movq %rax, 0x10(%r14)
movb $0x3, (%rbx)
jmp 0x2a18d
cmpl $0x106, %eax            # imm = 0x106
je 0x2a176
cmpl $0x107, %eax            # imm = 0x107
jne 0x2a103
movq %r14, %rdi
callq 0x1af6c
movq 0x10(%r14), %rbx
leaq 0x20(%rbx), %rax
movq %rax, 0x10(%r14)
movb $0x6, (%rbx)
jmp 0x2a18d
movq %r14, %rdi
callq 0x2a2c6
movq %rax, %rbx
movl 0xa8(%r14), %eax
cmpl $0x3e, %eax
jg 0x2a1b7
cmpl $0x2a, %eax
je 0x2a20c
cmpl $0x2b, %eax
jne 0x2a1a9
movq %r14, %rdi
callq 0x1af6c
xorl %edx, %edx
cmpl $0x3f, 0xa8(%r14)
jne 0x2a14d
movq %r14, %rdi
callq 0x1af6c
movl $0x1, %edx
movq %r14, %rdi
movq %rbx, %rsi
movl $0x1, %ecx
jmp 0x2a235
movq %r14, %rdi
callq 0x1af6c
movq 0x10(%r14), %rbx
leaq 0x20(%rbx), %rax
movq %rax, 0x10(%r14)
movb $0x4, (%rbx)
jmp 0x2a18d
movq %r14, %rdi
callq 0x1af6c
movq 0x10(%r14), %rbx
leaq 0x20(%rbx), %rax
movq %rax, 0x10(%r14)
movb $0x5, (%rbx)
movabsq $-0x100000000, %rax     # imm = 0xFFFFFFFF00000000
movq %rax, 0x4(%rbx)
movl $0x0, 0x1(%rbx)
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rbx)
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
cmpl $0x3f, %eax
je 0x2a24a
cmpl $0x109, %eax            # imm = 0x109
jne 0x2a1a9
movl 0xb8(%r14), %ebp
movl 0xbc(%r14), %r15d
movq %r14, %rdi
callq 0x1af6c
cmpl %ebp, %r15d
jl 0x2a2a4
xorl %edx, %edx
cmpl $0x3f, 0xa8(%r14)
jne 0x2a1ff
movq %r14, %rdi
callq 0x1af6c
movl $0x1, %edx
movq %r14, %rdi
movq %rbx, %rsi
movl %ebp, %ecx
movl %r15d, %r8d
jmp 0x2a23b
movq %r14, %rdi
callq 0x1af6c
xorl %edx, %edx
cmpl $0x3f, 0xa8(%r14)
jne 0x2a22d
movq %r14, %rdi
callq 0x1af6c
movl $0x1, %edx
movq %r14, %rdi
movq %rbx, %rsi
xorl %ecx, %ecx
movl $0xff, %r8d
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x2a56e
movq %r14, %rdi
callq 0x1af6c
cmpl $0x3f, 0xa8(%r14)
jne 0x2a268
movq %r14, %rdi
callq 0x1af6c
movb $0x1, %al
jmp 0x2a26a
xorl %eax, %eax
movq 0x10(%r14), %rcx
leaq 0x20(%rcx), %rdx
movq %rdx, 0x10(%r14)
movb $0x2, (%rcx)
movabsq $-0x100000000, %rdx     # imm = 0xFFFFFFFF00000000
movq %rdx, 0x4(%rcx)
movq $0x0, 0x18(%rcx)
movb %al, 0x1(%rcx)
movw $0x100, 0x2(%rcx)       # imm = 0x100
movq %rbx, 0x10(%rcx)
movq %rcx, %rbx
jmp 0x2a1a9
leaq 0xb071(%rip), %rax      # 0x3531c
movq %rax, 0xc0(%r14)
addq $0xc8, %r14
movq %r14, %rdi
movl $0x1, %esi
callq 0x3320