// File: /workspace/github_c_makefile_star2_O2/MaoKo[P]FGFX/fgfp/src/cfg.c
// Function: cfg_atom
int
cfg_atom(cfg_t* cfg, production_t* prod) {
	if ((peek_token(cfg->lex) == T_LBRACK)
								|| (peek_token(cfg->lex) == T_LBRACE)) {
		if (enclosed_element(cfg, prod) == ERROR)
			{ return (ERROR); }
	}
	else {
		symbol_t* atom_symbol = add_symbol_cfg(cfg,
					advance_token(cfg->lex), C_LEXEME(cfg->lex));

		atom_symbol->is_used = true;
		if ((atom_symbol->kind == T_LITERAL)
									&& (atom_symbol->terminal_alias != -1)) {
			add_symbol_rhs(prod, AT_VECTOR(cfg->terminal,
								atom_symbol->terminal_alias));
		}
		else
			{ add_symbol_rhs(prod, atom_symbol); }
	}
	return (DONE);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rsi, %r15
movq %rdi, %rbx
movq 0x20(%rdi), %rdi
callq 0x3519
cmpl $0x2a, %eax
je 0x5070
movq 0x20(%rbx), %rdi
callq 0x3519
cmpl $0x32, %eax
jne 0x512c
movq 0x20(%rbx), %rdi
callq 0x302d
movq %rax, %r12
xorl %r13d, %r13d
cmpq $0x2a, %rax
setne -0x29(%rbp)
movq 0x8(%r15), %rax
movq 0x48(%rax), %r14
movq 0x20(%rbx), %rdi
callq 0x3519
cmpl $0x2b, %eax
jne 0x50fe
cmpq $0x2a, %r12
movq 0x20(%rbx), %rax
movslq 0x28(%rax), %rdi
leaq 0x52ea(%rip), %rax      # 0xa39a
leaq 0x52e0(%rip), %rdx      # 0xa397
cmovneq %rax, %rdx
leaq 0x52b7(%rip), %rsi      # 0xa379
xorl %eax, %eax
callq 0x3d00
movq 0x20(%rbx), %rdi
callq 0x302d
xorl %r15d, %r15d
cmpq $0x3, %r14
jb 0x5210
movq 0x20(%rbx), %rax
movslq 0x28(%rax), %rdi
leaq 0x52af(%rip), %rsi      # 0xa39d
xorl %eax, %eax
callq 0x3b9c
pushq $-0x1
popq %r15
jmp 0x5210
movq %r15, -0x38(%rbp)
cmpq $0x3, %r14
setae %r15b
movq 0x20(%rbx), %rdi
callq 0x3519
cmpl $0x33, %eax
sete %cl
orb %r15b, %cl
cmpb $0x1, %cl
jne 0x5179
cmpl $0x33, %eax
je 0x509d
jmp 0x50d2
movq 0x20(%rbx), %rdi
callq 0x302d
movq 0x20(%rbx), %rcx
movq 0x10(%rcx), %rcx
movq (%rcx), %rdx
movq %rbx, %rdi
movl %eax, %esi
callq 0x435f
movb $0x1, 0xd(%rax)
cmpl $0x28, 0x8(%rax)
jne 0x5202
movslq 0x18(%rax), %rcx
cmpq $-0x1, %rcx
je 0x5202
movq 0x10(%rbx), %rax
movq (%rax), %rax
movq (%rax,%rcx,8), %rsi
movq %r15, %rdi
jmp 0x5208
movb -0x29(%rbp), %al
movb %al, %r13b
pushq $0x27
popq %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0x435f
movq %rax, %r14
movb $0x1, 0xc(%rax)
movl %r13d, 0x38(%rax)
movq -0x38(%rbp), %rdi
movq 0x8(%rdi), %rcx
movl 0x48(%rcx), %eax
testq %rax, %rax
je 0x51ab
movq 0x40(%rcx), %rcx
movq %rcx, 0x40(%r14)
incl %eax
cltq
movq %rax, 0x48(%r14)
movq 0x17ce2(%rip), %rax     # 0x1cea0
incq %rax
movq %rax, 0x17cd8(%rip)     # 0x1cea0
movq %rax, 0x50(%r14)
movq %r14, %rsi
callq 0x5468
movq %r14, %rdi
movq %rbx, %rsi
callq 0x53dc
movq (%rax), %rcx
movq 0x30(%r14), %rdi
movl 0x4(%rdi), %eax
cmpq %rax, %rcx
jae 0x5222
pushq $0x1
popq %rax
shlq %cl, %rax
movq 0x8(%rdi), %rdx
shrq $0x6, %rcx
orq %rax, (%rdx,%rcx,8)
jmp 0x522a
movq %r15, %rdi
movq %rax, %rsi
callq 0x5468
xorl %r15d, %r15d
movl %r15d, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rcx, %rsi
callq 0x23b9
movq (%rbx), %rax
movq 0x10(%rax), %r13
andq $0x0, 0x17c67(%rip)     # 0x1cea0
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4da7
pushq $-0x1
popq %r15
cmpl $-0x1, %eax
je 0x5210
movq 0x20(%rbx), %rdi
callq 0x302d
cmpq $0x2a, %r12
je 0x52c2
movq 0x20(%rbx), %rdi
cmpq $0x33, %rax
jne 0x52d9
callq 0x3519
cmpl $0x2f, %eax
jne 0x52e6
movq 0x20(%rbx), %rdi
callq 0x302d
movq 0x20(%rbx), %rdi
callq 0x302d
movq 0x20(%rbx), %rdi
cmpq $0x34, %rax
jne 0x532a
callq 0x302d
movq %rax, %r12
andq $-0x2, %rax
movq 0x20(%rbx), %rdi
cmpq $0x6c, %rax
jne 0x5333
callq 0x302d
cmpq $0x35, %rax
je 0x5311
movq 0x20(%rbx), %rdi
leaq 0x51ba(%rip), %rsi      # 0xa47a
jmp 0x533a
cmpq $0x2b, %rax
je 0x531a
movq 0x20(%rbx), %rax
movslq 0x28(%rax), %rdi
leaq 0x50eb(%rip), %rsi      # 0xa3c2
jmp 0x533e
movslq 0x28(%rdi), %rdi
leaq 0x5111(%rip), %rsi      # 0xa3f5
jmp 0x533e
pushq $0x6c
popq %r12
jmp 0x5311
movq (%rax), %rax
movq (%rax,%r13,8), %rdi
cmpq %r14, 0x8(%rdi)
jne 0x530e
movq %r14, %rsi
cmpq $0x6d, %r12
jne 0x5309
callq 0x5468
jmp 0x530e
callq 0x54d6
incq %r13
movq (%rbx), %rax
cmpq 0x10(%rax), %r13
jb 0x52ec
movq 0x50(%r14), %rax
movq %rax, 0x17b7b(%rip)     # 0x1cea0
jmp 0x520d
leaq 0x50f1(%rip), %rsi      # 0xa422
jmp 0x533a
leaq 0x5127(%rip), %rsi      # 0xa461
movslq 0x28(%rdi), %rdi
xorl %eax, %eax
callq 0x3b9c
jmp 0x5210