// File: /workspace/github_c_makefile_star2_O0/MaoKo[P]FGFX/fgfp/src/cfg_production.c
// Function: nter_not_derive
static bool
nter_not_derive(cfg_t const* cfg, symbol_t* symbol, bitset_t* nter_seen) {
	if (IS_PRESENT(nter_seen, GET_INDEX(symbol)) || symbol->realizable)
		{ return (symbol->realizable);  }

	ADD_BITSET(nter_seen, GET_INDEX(symbol));

	vector_t* stack_prod = stack_production_lhs(cfg, symbol);
	for (size_t i = 0; i < SIZE_VECTOR(stack_prod); ++i) {
		production_t* crt_prod = (production_t*)AT_VECTOR(stack_prod, i);
		list_rhs_t* list = crt_prod->rhs_element;

		bool seq_real = true;
		while (list) {
			symbol_t* crt_symbol = list->symbol_rhs;
			if (IS_NON_TERMINAL(crt_symbol))
				{ seq_real &= nter_not_derive(cfg, crt_symbol, nter_seen); }
			list = list->next;
		}

		if (seq_real) {
			symbol->realizable = seq_real;
			break;
		}
	}
	del_vector(stack_prod);
	return (symbol->realizable);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
je 0x774e
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq -0x20(%rbp), %rcx
movl 0x4(%rcx), %ecx
cmpq %rcx, %rax
jb 0x7756
xorl %eax, %eax
testb $0x1, %al
jne 0x7796
jmp 0x778c
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x18(%rbp), %rcx
movq (%rcx), %rcx
shrq $0x6, %rcx
movq (%rax,%rcx,8), %rax
movq -0x18(%rbp), %rcx
movq (%rcx), %rcx
andq $0x3f, %rcx
movl $0x1, %edx
shlq %cl, %rdx
movq %rdx, %rcx
andq %rcx, %rax
cmpq $0x0, %rax
jne 0x7796
movq -0x18(%rbp), %rax
testb $0x1, 0x19(%rax)
je 0x77a7
movq -0x18(%rbp), %rax
movb 0x19(%rax), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x78da
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq -0x20(%rbp), %rcx
movl 0x4(%rcx), %ecx
cmpq %rcx, %rax
jb 0x77cc
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rax
movq (%rax), %rsi
callq 0x1420
jmp 0x77fa
movq -0x18(%rbp), %rax
movq (%rax), %rcx
andq $0x3f, %rcx
movl $0x1, %edx
shlq %cl, %rdx
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x18(%rbp), %rcx
movq (%rcx), %rcx
shrq $0x6, %rcx
orq (%rax,%rcx,8), %rdx
movq %rdx, (%rax,%rcx,8)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x70d0
movq %rax, -0x28(%rbp)
movq $0x0, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq -0x28(%rbp), %rcx
cmpq 0x10(%rcx), %rax
jae 0x78c5
movq -0x28(%rbp), %rax
movq (%rax), %rax
movq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x40(%rbp)
movb $0x1, -0x41(%rbp)
cmpq $0x0, -0x40(%rbp)
je 0x789d
movq -0x40(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
cmpl $0x27, 0x8(%rax)
jne 0x7890
movq -0x10(%rbp), %rdi
movq -0x50(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x7720
andb $0x1, %al
movzbl %al, %ecx
movb -0x41(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
andl %ecx, %eax
cmpl $0x0, %eax
setne %al
andb $0x1, %al
movb %al, -0x41(%rbp)
movq -0x40(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x40(%rbp)
jmp 0x7848
testb $0x1, -0x41(%rbp)
je 0x78b2
movb -0x41(%rbp), %cl
movq -0x18(%rbp), %rax
andb $0x1, %cl
movb %cl, 0x19(%rax)
jmp 0x78c5
jmp 0x78b4
movq -0x30(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x30(%rbp)
jmp 0x7813
movq -0x28(%rbp), %rdi
callq 0x1ff0
movq -0x18(%rbp), %rax
movb 0x19(%rax), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)