// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./regexp.c
// Function: parseatom
static Renode *parseatom(struct cstate *g)
{
	Renode *atom;
	if (g->lookahead == L_CHAR) {
		atom = newnode(g, P_CHAR);
		atom->c = g->yychar;
		next(g);
		return atom;
	}
	if (g->lookahead == L_CCLASS) {
		atom = newnode(g, P_CCLASS);
		atom->cc = g->yycc - g->cclass;
		next(g);
		return atom;
	}
	if (g->lookahead == L_NCCLASS) {
		atom = newnode(g, P_NCCLASS);
		atom->cc = g->yycc - g->cclass;
		next(g);
		return atom;
	}
	if (g->lookahead == L_REF) {
		atom = newnode(g, P_REF);
		if (g->yychar == 0 || g->yychar >= g->nsub || !g->sub[g->yychar])
			die(g, "invalid back-reference");
		atom->n = g->yychar;
		atom->x = g->sub[g->yychar];
		next(g);
		return atom;
	}
	if (accept(g, '.'))
		return newnode(g, P_ANY);
	if (accept(g, '(')) {
		atom = newnode(g, P_PAR);
		if (g->nsub == REG_MAXSUB)
			die(g, "too many captures");
		atom->n = g->nsub++;
		atom->x = parsealt(g);
		g->sub[atom->n] = atom;
		if (!accept(g, ')'))
			die(g, "unmatched '('");
		return atom;
	}
	if (accept(g, L_NC)) {
		atom = parsealt(g);
		if (!accept(g, ')'))
			die(g, "unmatched '('");
		return atom;
	}
	if (accept(g, L_PLA)) {
		atom = newnode(g, P_PLA);
		atom->x = parsealt(g);
		if (!accept(g, ')'))
			die(g, "unmatched '('");
		return atom;
	}
	if (accept(g, L_NLA)) {
		atom = newnode(g, P_NLA);
		atom->x = parsealt(g);
		if (!accept(g, ')'))
			die(g, "unmatched '('");
		return atom;
	}
	die(g, "syntax error");
	return NULL;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x100, 0xa8(%rax)      # imm = 0x100
jne 0x32235
movq -0x10(%rbp), %rdi
movl $0xb, %esi
callq 0x31f10
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
movl 0xac(%rax), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x10(%rbp), %rdi
callq 0x1c7f0
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x325c1
movq -0x10(%rbp), %rax
cmpl $0x101, 0xa8(%rax)      # imm = 0x101
jne 0x32299
movq -0x10(%rbp), %rdi
movl $0xc, %esi
callq 0x31f10
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq 0xb0(%rax), %rax
movq -0x10(%rbp), %rcx
addq $0x190, %rcx            # imm = 0x190
subq %rcx, %rax
movl $0x108, %ecx            # imm = 0x108
cqto
idivq %rcx
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x10(%rbp), %rdi
callq 0x1c7f0
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x325c1
movq -0x10(%rbp), %rax
cmpl $0x102, 0xa8(%rax)      # imm = 0x102
jne 0x322fd
movq -0x10(%rbp), %rdi
movl $0xd, %esi
callq 0x31f10
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq 0xb0(%rax), %rax
movq -0x10(%rbp), %rcx
addq $0x190, %rcx            # imm = 0x190
subq %rcx, %rax
movl $0x108, %ecx            # imm = 0x108
cqto
idivq %rcx
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x10(%rbp), %rdi
callq 0x1c7f0
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x325c1
movq -0x10(%rbp), %rax
cmpl $0x108, 0xa8(%rax)      # imm = 0x108
jne 0x323af
movq -0x10(%rbp), %rdi
movl $0xe, %esi
callq 0x31f10
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x0, 0xac(%rax)
je 0x3235a
movq -0x10(%rbp), %rax
movl 0xac(%rax), %eax
movq -0x10(%rbp), %rcx
cmpl 0x24(%rcx), %eax
jge 0x3235a
movq -0x10(%rbp), %rax
movq -0x10(%rbp), %rcx
movslq 0xac(%rcx), %rcx
cmpq $0x0, 0x28(%rax,%rcx,8)
jne 0x3236a
movq -0x10(%rbp), %rdi
leaq 0xb696(%rip), %rsi      # 0x3d9fb
callq 0x1c7b0
movq -0x10(%rbp), %rax
movl 0xac(%rax), %eax
movb %al, %cl
movq -0x18(%rbp), %rax
movb %cl, 0x3(%rax)
movq -0x10(%rbp), %rax
movq -0x10(%rbp), %rcx
movslq 0xac(%rcx), %rcx
movq 0x28(%rax,%rcx,8), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x10(%rbp), %rdi
callq 0x1c7f0
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x325c1
movq -0x10(%rbp), %rdi
movl $0x2e, %esi
callq 0x31ed0
cmpl $0x0, %eax
je 0x323d9
movq -0x10(%rbp), %rdi
movl $0xa, %esi
callq 0x31f10
movq %rax, -0x8(%rbp)
jmp 0x325c1
movq -0x10(%rbp), %rdi
movl $0x28, %esi
callq 0x31ed0
cmpl $0x0, %eax
je 0x3248d
movq -0x10(%rbp), %rdi
movl $0x7, %esi
callq 0x31f10
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x10, 0x24(%rax)
jne 0x3241c
movq -0x10(%rbp), %rdi
leaq 0xb5fb(%rip), %rsi      # 0x3da12
callq 0x1c7b0
movq -0x10(%rbp), %rcx
movl 0x24(%rcx), %eax
movl %eax, %edx
addl $0x1, %edx
movl %edx, 0x24(%rcx)
movb %al, %cl
movq -0x18(%rbp), %rax
movb %cl, 0x3(%rax)
movq -0x10(%rbp), %rdi
callq 0x1c820
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x18(%rbp), %rdx
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x3(%rcx), %ecx
movq %rdx, 0x28(%rax,%rcx,8)
movq -0x10(%rbp), %rdi
movl $0x29, %esi
callq 0x31ed0
cmpl $0x0, %eax
jne 0x32480
movq -0x10(%rbp), %rdi
leaq 0xb5a9(%rip), %rsi      # 0x3da24
callq 0x1c7b0
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x325c1
movq -0x10(%rbp), %rdi
movl $0x103, %esi            # imm = 0x103
callq 0x31ed0
cmpl $0x0, %eax
je 0x324dd
movq -0x10(%rbp), %rdi
callq 0x1c820
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rdi
movl $0x29, %esi
callq 0x31ed0
cmpl $0x0, %eax
jne 0x324d0
movq -0x10(%rbp), %rdi
leaq 0xb559(%rip), %rsi      # 0x3da24
callq 0x1c7b0
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x325c1
movq -0x10(%rbp), %rdi
movl $0x104, %esi            # imm = 0x104
callq 0x31ed0
cmpl $0x0, %eax
je 0x32543
movq -0x10(%rbp), %rdi
movl $0x8, %esi
callq 0x31f10
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rdi
callq 0x1c820
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x10(%rbp), %rdi
movl $0x29, %esi
callq 0x31ed0
cmpl $0x0, %eax
jne 0x32539
movq -0x10(%rbp), %rdi
leaq 0xb4f0(%rip), %rsi      # 0x3da24
callq 0x1c7b0
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x325c1
movq -0x10(%rbp), %rdi
movl $0x105, %esi            # imm = 0x105
callq 0x31ed0
cmpl $0x0, %eax
je 0x325a9
movq -0x10(%rbp), %rdi
movl $0x9, %esi
callq 0x31f10
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rdi
callq 0x1c820
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x10(%rbp), %rdi
movl $0x29, %esi
callq 0x31ed0
cmpl $0x0, %eax
jne 0x3259f
movq -0x10(%rbp), %rdi
leaq 0xb48a(%rip), %rsi      # 0x3da24
callq 0x1c7b0
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x325c1
movq -0x10(%rbp), %rdi
leaq 0x9ca7(%rip), %rsi      # 0x3c25b
callq 0x1c7b0
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax,%rax)