// File: /workspace/github_c_makefile_star2_O1/ccxvii[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
cmpl $0x5e, 0xa8(%rdi)
jne 0x2a4e0
movq %r14, %rdi
callq 0x1b447
movq 0x10(%r14), %rbx
leaq 0x20(%rbx), %rax
movq %rax, 0x10(%r14)
movb $0x3, (%rbx)
jmp 0x2a54d
cmpl $0x24, 0xa8(%r14)
jne 0x2a503
movq %r14, %rdi
callq 0x1b447
movq 0x10(%r14), %rbx
leaq 0x20(%rbx), %rax
movq %rax, 0x10(%r14)
movb $0x4, (%rbx)
jmp 0x2a54d
cmpl $0x106, 0xa8(%r14) # imm = 0x106
jne 0x2a529
movq %r14, %rdi
callq 0x1b447
movq 0x10(%r14), %rbx
leaq 0x20(%rbx), %rax
movq %rax, 0x10(%r14)
movb $0x5, (%rbx)
jmp 0x2a54d
cmpl $0x107, 0xa8(%r14) # imm = 0x107
jne 0x2a577
movq %r14, %rdi
callq 0x1b447
movq 0x10(%r14), %rbx
leaq 0x20(%rbx), %rax
movq %rax, 0x10(%r14)
movb $0x6, (%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
movq %r14, %rdi
callq 0x2a6e0
movq %rax, %rbx
movl 0xa8(%r14), %eax
cmpl $0x2a, %eax
je 0x2a5da
cmpl $0x109, %eax            # imm = 0x109
jne 0x2a605
movl 0xb8(%r14), %ebp
movl 0xbc(%r14), %r15d
movq %r14, %rdi
callq 0x1b447
cmpl %ebp, %r15d
jl 0x2a6be
xorl %edx, %edx
cmpl $0x3f, 0xa8(%r14)
jne 0x2a5cd
movq %r14, %rdi
callq 0x1b447
movl $0x1, %edx
movq %r14, %rdi
movq %rbx, %rsi
movl %ebp, %ecx
movl %r15d, %r8d
jmp 0x2a641
movq %r14, %rdi
callq 0x1b447
xorl %edx, %edx
cmpl $0x3f, 0xa8(%r14)
jne 0x2a5fb
movq %r14, %rdi
callq 0x1b447
movl $0x1, %edx
movq %r14, %rdi
movq %rbx, %rsi
xorl %ecx, %ecx
jmp 0x2a63b
cmpl $0x2b, 0xa8(%r14)
jne 0x2a650
movq %r14, %rdi
callq 0x1b447
xorl %edx, %edx
cmpl $0x3f, 0xa8(%r14)
jne 0x2a630
movq %r14, %rdi
callq 0x1b447
movl $0x1, %edx
movq %r14, %rdi
movq %rbx, %rsi
movl $0x1, %ecx
movl $0xff, %r8d
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x2a9b9
cmpl $0x3f, 0xa8(%r14)
jne 0x2a569
movq %r14, %rdi
callq 0x1b447
cmpl $0x3f, 0xa8(%r14)
jne 0x2a67c
movq %r14, %rdi
callq 0x1b447
movb $0x1, %al
jmp 0x2a67e
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)
movl $0x0, 0x1(%rcx)
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rcx)
movb %al, 0x1(%rcx)
movw $0x100, 0x2(%rcx)       # imm = 0x100
movq %rbx, 0x10(%rcx)
movq %rcx, %rbx
jmp 0x2a569
leaq 0xac27(%rip), %rax      # 0x352ec
movq %rax, 0xc0(%r14)
addq $0xc8, %r14
movq %r14, %rdi
movl $0x1, %esi
callq 0x3320