// File: /workspace/github_c_makefile_star2_O1/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
pushq %rax
movq %rsi, %r15
movq %rdi, %rbx
movq 0x20(%rdi), %rdi
callq 0x3974
cmpl $0x2a, %eax
je 0x54fb
movq 0x20(%rbx), %rdi
callq 0x3974
cmpl $0x32, %eax
jne 0x5638
movq 0x20(%rbx), %rdi
callq 0x32da
xorl %r13d, %r13d
movq %rax, -0x30(%rbp)
cmpq $0x2a, %rax
setne %r12b
movq 0x8(%r15), %rax
movq 0x48(%rax), %r14
movq 0x20(%rbx), %rdi
callq 0x3974
movb $0x1, %cl
cmpl $0x2b, %eax
je 0x553a
movq 0x20(%rbx), %rdi
callq 0x3974
cmpl $0x33, %eax
sete %cl
cmpq $0x3, %r14
setae %al
orb %cl, %al
testb $0x1, %al
je 0x55af
testb %cl, %cl
je 0x5581
cmpq $0x2a, -0x30(%rbp)
movq 0x20(%rbx), %rax
movslq 0x28(%rax), %rdi
leaq 0x4e67(%rip), %rax      # 0xa3c6
leaq 0x4e5d(%rip), %rdx      # 0xa3c3
cmovneq %rax, %rdx
leaq 0x4e34(%rip), %rsi      # 0xa3a5
xorl %eax, %eax
callq 0x22b9
movq 0x20(%rbx), %rdi
callq 0x32da
xorl %r15d, %r15d
cmpq $0x3, %r14
jb 0x57c4
movq 0x20(%rbx), %rax
movslq 0x28(%rax), %rdi
leaq 0x4e2c(%rip), %rsi      # 0xa3c9
xorl %eax, %eax
callq 0x4020
movl $0xffffffff, %r15d      # imm = 0xFFFFFFFF
jmp 0x57c4
movb %r12b, %r13b
movq %rbx, %rdi
movl $0x27, %esi
xorl %edx, %edx
callq 0x4702
movq %rax, %r14
movb $0x1, 0xc(%rax)
movl %r13d, 0x38(%rax)
movq 0x8(%r15), %rcx
movl 0x48(%rcx), %eax
testq %rax, %rax
je 0x55dc
movq 0x40(%rcx), %rcx
movq %rcx, 0x40(%r14)
incl %eax
cltq
movq %rax, 0x48(%r14)
movq 0x178a1(%rip), %rax     # 0x1ce90
incq %rax
movq %rax, 0x17897(%rip)     # 0x1ce90
movq %rax, 0x50(%r14)
movq %r15, %rdi
movq %r14, %rsi
callq 0x5935
movq %r14, %rdi
movq %rbx, %rsi
callq 0x58a0
movq (%rax), %rcx
movq 0x30(%r14), %rdi
movl 0x4(%rdi), %eax
cmpq %rax, %rcx
jae 0x5685
movl $0x1, %eax
shlq %cl, %rax
movq 0x8(%rdi), %rdx
shrq $0x6, %rcx
orq %rax, (%rdx,%rcx,8)
jmp 0x568d
movq 0x20(%rbx), %rdi
callq 0x32da
movq 0x20(%rbx), %rcx
movq 0x10(%rcx), %rcx
movq (%rcx), %rdx
movq %rbx, %rdi
movl %eax, %esi
callq 0x4702
movb $0x1, 0xd(%rax)
cmpl $0x28, 0x8(%rax)
jne 0x577a
movslq 0x18(%rax), %rcx
cmpq $-0x1, %rcx
je 0x577a
movq 0x10(%rbx), %rax
movq (%rax), %rax
movq (%rax,%rcx,8), %rsi
movq %r15, %rdi
jmp 0x5780
movq %rcx, %rsi
callq 0x2568
movq (%rbx), %rax
movq 0x10(%rax), %r13
movq $0x0, 0x177f1(%rip) # 0x1ce90
movq %rbx, %rdi
movq %r14, %rsi
callq 0x5221
movl $0xffffffff, %r15d      # imm = 0xFFFFFFFF
cmpl $-0x1, %eax
je 0x57c4
movq 0x20(%rbx), %rdi
callq 0x32da
movq -0x30(%rbp), %rcx
cmpq $0x2a, %rcx
je 0x5787
cmpq $0x33, %rax
jne 0x579d
cmpq $0x2a, %rcx
je 0x578d
movq 0x20(%rbx), %rdi
callq 0x3974
movl $0x6c, %r12d
cmpl $0x2f, %eax
jne 0x5741
movq 0x20(%rbx), %rdi
callq 0x32da
movq 0x20(%rbx), %rdi
callq 0x32da
movq 0x20(%rbx), %rdi
cmpq $0x34, %rax
jne 0x57d6
callq 0x32da
movq %rax, %r12
andq $-0x2, %rax
movq 0x20(%rbx), %rdi
cmpq $0x6c, %rax
jne 0x57e3
callq 0x32da
cmpq $0x35, %rax
jne 0x57f0
movq (%rbx), %rax
cmpq %r13, 0x10(%rax)
jbe 0x578d
movq (%rax), %rax
movq (%rax,%r13,8), %rdi
cmpq %r14, 0x8(%rdi)
jne 0x576c
movq %r14, %rsi
cmpq $0x6d, %r12
jne 0x5767
callq 0x5935
jmp 0x576c
callq 0x59b5
incq %r13
movq (%rbx), %rax
cmpq 0x10(%rax), %r13
jb 0x574a
jmp 0x578d
movq %r15, %rdi
movq %rax, %rsi
callq 0x5935
jmp 0x5798
cmpq $0x2b, %rax
jne 0x57ae
movq 0x50(%r14), %rax
movq %rax, 0x176f8(%rip)     # 0x1ce90
xorl %r15d, %r15d
jmp 0x57c4
movq 0x20(%rbx), %rax
movslq 0x28(%rax), %rdi
leaq 0x4c75(%rip), %rsi      # 0xa421
jmp 0x57bd
movq 0x20(%rbx), %rax
movslq 0x28(%rax), %rdi
leaq 0x4c31(%rip), %rsi      # 0xa3ee
xorl %eax, %eax
callq 0x4020
movl %r15d, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movslq 0x28(%rdi), %rdi
leaq 0x4c6d(%rip), %rsi      # 0xa44e
jmp 0x57bd
movslq 0x28(%rdi), %rdi
leaq 0x4c9f(%rip), %rsi      # 0xa48d
jmp 0x57bd
movq 0x20(%rbx), %rax
movslq 0x28(%rax), %rdi
leaq 0x4ca7(%rip), %rsi      # 0xa4a6
jmp 0x57bd