// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
movl $0x5e, %esi
callq 0x31ed0
cmpl $0x0, %eax
je 0x31fc6
movq -0x10(%rbp), %rdi
movl $0x3, %esi
callq 0x31f10
movq %rax, -0x8(%rbp)
jmp 0x321d1
movq -0x10(%rbp), %rdi
movl $0x24, %esi
callq 0x31ed0
cmpl $0x0, %eax
je 0x31ff0
movq -0x10(%rbp), %rdi
movl $0x4, %esi
callq 0x31f10
movq %rax, -0x8(%rbp)
jmp 0x321d1
movq -0x10(%rbp), %rdi
movl $0x106, %esi            # imm = 0x106
callq 0x31ed0
cmpl $0x0, %eax
je 0x3201a
movq -0x10(%rbp), %rdi
movl $0x5, %esi
callq 0x31f10
movq %rax, -0x8(%rbp)
jmp 0x321d1
movq -0x10(%rbp), %rdi
movl $0x107, %esi            # imm = 0x107
callq 0x31ed0
cmpl $0x0, %eax
je 0x32044
movq -0x10(%rbp), %rdi
movl $0x6, %esi
callq 0x31f10
movq %rax, -0x8(%rbp)
jmp 0x321d1
movq -0x10(%rbp), %rdi
callq 0x321e0
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x109, 0xa8(%rax)      # imm = 0x109
jne 0x320d9
movq -0x10(%rbp), %rax
movl 0xb8(%rax), %eax
movl %eax, -0x1c(%rbp)
movq -0x10(%rbp), %rax
movl 0xbc(%rax), %eax
movl %eax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
callq 0x1c7f0
movl -0x20(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jge 0x3209c
movq -0x10(%rbp), %rdi
leaq 0xb92d(%rip), %rsi      # 0x3d9c4
callq 0x1c7b0
movq -0x10(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
movl $0x3f, %esi
callq 0x31ed0
movq -0x30(%rbp), %rdi
movq -0x28(%rbp), %rsi
movl %eax, %edx
movl -0x1c(%rbp), %ecx
movl -0x20(%rbp), %r8d
callq 0x325d0
movq %rax, -0x8(%rbp)
jmp 0x321d1
movq -0x10(%rbp), %rdi
movl $0x2a, %esi
callq 0x31ed0
cmpl $0x0, %eax
je 0x3212a
movq -0x10(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rdi
movl $0x3f, %esi
callq 0x31ed0
movq -0x40(%rbp), %rdi
movq -0x38(%rbp), %rsi
movl %eax, %edx
xorl %ecx, %ecx
movl $0xff, %r8d
callq 0x325d0
movq %rax, -0x8(%rbp)
jmp 0x321d1
movq -0x10(%rbp), %rdi
movl $0x2b, %esi
callq 0x31ed0
cmpl $0x0, %eax
je 0x3217b
movq -0x10(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x10(%rbp), %rdi
movl $0x3f, %esi
callq 0x31ed0
movq -0x50(%rbp), %rdi
movq -0x48(%rbp), %rsi
movl %eax, %edx
movl $0x1, %ecx
movl $0xff, %r8d
callq 0x325d0
movq %rax, -0x8(%rbp)
jmp 0x321d1
movq -0x10(%rbp), %rdi
movl $0x3f, %esi
callq 0x31ed0
cmpl $0x0, %eax
je 0x321c9
movq -0x10(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x10(%rbp), %rdi
movl $0x3f, %esi
callq 0x31ed0
movq -0x60(%rbp), %rdi
movq -0x58(%rbp), %rsi
movl %eax, %edx
xorl %ecx, %ecx
movl $0x1, %r8d
callq 0x325d0
movq %rax, -0x8(%rbp)
jmp 0x321d1
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x60, %rsp
popq %rbp
retq
nopl (%rax,%rax)