// File: /workspace/github_c_makefile_star2_O3/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 0x387a
cmpl $0x2a, %eax
je 0x5371
movq 0x20(%rbx), %rdi
callq 0x387a
cmpl $0x32, %eax
jne 0x542f
movq 0x20(%rbx), %rdi
callq 0x32ce
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 0x387a
cmpl $0x2b, %eax
jne 0x5401
cmpq $0x2a, %r12
movq 0x20(%rbx), %rax
movslq 0x28(%rax), %rdi
leaq 0x5002(%rip), %rax      # 0xa3b3
leaq 0x4ff8(%rip), %rdx      # 0xa3b0
cmovneq %rax, %rdx
leaq 0x4fcf(%rip), %rsi      # 0xa392
xorl %eax, %eax
callq 0x22b9
movq 0x20(%rbx), %rdi
callq 0x32ce
xorl %r15d, %r15d
cmpq $0x3, %r14
jb 0x5517
movq 0x20(%rbx), %rax
movslq 0x28(%rax), %rdi
leaq 0x4fc7(%rip), %rsi      # 0xa3b6
xorl %eax, %eax
callq 0x3f24
movl $0xffffffff, %r15d      # imm = 0xFFFFFFFF
jmp 0x5517
movq %r15, -0x38(%rbp)
cmpq $0x3, %r14
setae %r15b
movq 0x20(%rbx), %rdi
callq 0x387a
cmpl $0x33, %eax
sete %cl
orb %r15b, %cl
cmpb $0x1, %cl
jne 0x547c
cmpl $0x33, %eax
je 0x539e
jmp 0x53d3
movq 0x20(%rbx), %rdi
callq 0x32ce
movq 0x20(%rbx), %rcx
movq 0x10(%rcx), %rcx
movq (%rcx), %rdx
movq %rbx, %rdi
movl %eax, %esi
callq 0x459f
movb $0x1, 0xd(%rax)
cmpl $0x28, 0x8(%rax)
jne 0x5509
movslq 0x18(%rax), %rcx
cmpq $-0x1, %rcx
je 0x5509
movq 0x10(%rbx), %rax
movq (%rax), %rax
movq (%rax,%rcx,8), %rsi
movq %r15, %rdi
jmp 0x550f
movb -0x29(%rbp), %al
movb %al, %r13b
movq %rbx, %rdi
movl $0x27, %esi
xorl %edx, %edx
callq 0x459f
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 0x54b0
movq 0x40(%rcx), %rcx
movq %rcx, 0x40(%r14)
incl %eax
cltq
movq %rax, 0x48(%r14)
movq 0x179cd(%rip), %rax     # 0x1ce90
incq %rax
movq %rax, 0x179c3(%rip)     # 0x1ce90
movq %rax, 0x50(%r14)
movq %r14, %rsi
callq 0x5799
movq %r14, %rdi
movq %rbx, %rsi
callq 0x5708
movq (%rax), %rcx
movq 0x30(%r14), %rdi
movl 0x4(%rdi), %eax
cmpq %rax, %rcx
jae 0x5529
movl $0x1, %eax
shlq %cl, %rax
movq 0x8(%rdi), %rdx
shrq $0x6, %rcx
orq %rax, (%rdx,%rcx,8)
jmp 0x5531
movq %r15, %rdi
movq %rax, %rsi
callq 0x5799
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 0x2570
movq (%rbx), %rax
movq 0x10(%rax), %r13
movq $0x0, 0x1794d(%rip) # 0x1ce90
movq %rbx, %rdi
movq %r14, %rsi
callq 0x5094
movl $0xffffffff, %r15d      # imm = 0xFFFFFFFF
cmpl $-0x1, %eax
je 0x5517
movq 0x20(%rbx), %rdi
callq 0x32ce
cmpq $0x2a, %r12
je 0x5608
movq 0x20(%rbx), %rdi
cmpq $0x33, %rax
jne 0x561e
callq 0x387a
movl $0x6c, %r12d
cmpl $0x2f, %eax
jne 0x55cf
movq 0x20(%rbx), %rdi
callq 0x32ce
movq 0x20(%rbx), %rdi
callq 0x32ce
movq 0x20(%rbx), %rdi
cmpq $0x34, %rax
jne 0x563c
callq 0x32ce
movq %rax, %r12
andq $-0x2, %rax
movq 0x20(%rbx), %rdi
cmpq $0x6c, %rax
jne 0x5645
callq 0x32ce
cmpq $0x35, %rax
jne 0x564e
movq (%rbx), %rax
cmpq %r13, 0x10(%rax)
jbe 0x560e
movq (%rax), %rax
movq (%rax,%r13,8), %rdi
cmpq %r14, 0x8(%rdi)
jne 0x55fa
movq %r14, %rsi
cmpq $0x6d, %r12
jne 0x55f5
callq 0x5799
jmp 0x55fa
callq 0x581b
incq %r13
movq (%rbx), %rax
cmpq 0x10(%rax), %r13
jb 0x55d8
jmp 0x560e
cmpq $0x2b, %rax
jne 0x562b
movq 0x50(%r14), %rax
movq %rax, 0x17877(%rip)     # 0x1ce90
jmp 0x5514
movslq 0x28(%rdi), %rdi
leaq 0x4de5(%rip), %rsi      # 0xa40e
jmp 0x565d
movq 0x20(%rbx), %rax
movslq 0x28(%rax), %rdi
leaq 0x4da1(%rip), %rsi      # 0xa3db
jmp 0x565d
leaq 0x4df8(%rip), %rsi      # 0xa43b
jmp 0x5659
leaq 0x4e2e(%rip), %rsi      # 0xa47a
jmp 0x5659
movq 0x20(%rbx), %rdi
leaq 0x4e3a(%rip), %rsi      # 0xa493
movslq 0x28(%rdi), %rdi
xorl %eax, %eax
callq 0x3f24
jmp 0x5517