// File: /workspace/github_c_makefile_star2_O0/nimble-code[P]Uno/Src/uno_generic.c
// Function: exec_fct
static void
exec_fct(treenode *n, treenode *m)
{	SymRef *s;
	leafnode *leaf;
	int i, val1, val2;

	if (!n) return;

	if (n->lnode->hdr.type != TN_IDENT)
	{	err_path++;
		printf("exec_fct:\n\t%s:%d: expect ident for fctname, got %s in %s\n",
			n->hdr.fnm,
			n->hdr.line,
			name_of_node(n->lnode->hdr.type),
			x_stmnt(n));
		exit(1);
	}

	leaf = (leafnode *) n->lnode;

	for (i = 0; i < (int) (sizeof(cmds)/sizeof(struct Cmd)); i++)
		if (strcmp(leaf->data.sval->str, cmds[i].cmd) == 0)
		{
			if (strcmp(leaf->data.sval->str, Skip_name) == 0
			||  strcmp(leaf->data.sval->str, List_select) == 0)
			{	if (debug)
				printf("\tsaw: %s\n", leaf->data.sval->str);

				if (n->rnode
				&&  n->rnode->hdr.type == TN_STRING)
					printf("%s(\"%s\")\n",
						leaf->data.sval->str,
						((leafnode *) n->rnode)->data.str);

				hit_cmds[i]++;
				cmds[i].fn(m, 0, 0);
				return;
			}

			if (strcmp(leaf->data.sval->str, Unmark) == 0)
			{	nogood = val1 = val2 = 0;
				goto doit;	/* 'unmark()' means 'mark(0)' */
			}

			if (strcmp(cmds[i].cmd, Update) == 0)	/* one arg */
			{	nogood = val2 = 0;
				val1 = eval_const_expr(n->rnode, m);
				if (nogood)
				{	fprintf(stderr, "uno: expecting mark(const)\n");
					exit(1);
				}
				goto doit;
			}

			if (!n->rnode
			||   n->rnode->hdr.type != TN_EXPR_LIST)
			{
bad:				fprintf(stderr, "uno: expecting %s(const_expr, const_expr), saw %s(%s)\n",
					cmds[i].cmd, cmds[i].cmd,
					n->rnode?name_of_node(n->rnode->hdr.type):"");
				exit(1);
			}
			nogood = 0;
			val1 = eval_const_expr(n->rnode->lnode, m);
			val2 = eval_const_expr(n->rnode->rnode, m);
			if (nogood) goto bad;

doit:			cmds[i].fn(m, val1, val2);
			hit_cmds[i]++;

			if (debug)
			{	printf("\tgen_stack %s(", cmds[i].cmd);
				if (i < 2) dflow_mark(stdout, val1); else printf("%d", val1);
				printf(", ");
				if (i < 2) dflow_mark(stdout, val2); else printf("%d", val2);
				printf(") <%s>:\n", x_stmnt(m));
				for (s = gen_stack->symrefs; s; s = s->nxt)
				{	printf("\t%s\t(", s->sm->nme->str);
					dflow_mark(stdout, (s->status & ANY));
					printf(")\n");
				}
			}
			return;
		}

	if (strcmp(leaf->data.sval->str, errname) != 0
	||  n->rnode->hdr.type != TN_STRING)
	{	printf("\t\texpect '%s(\"...\")', saw '%s(%s)'\n",
			errname, leaf->data.sval->str,
			name_of_node(n->rnode->hdr.type));
		exit(1);
	}

	leaf = (leafnode *) n->rnode;

	if (debug) printf("<<%s>>\n", leaf->data.str);

	if (err_report(leaf->data.str, m))
	{	fflush(stdout);
		fflush(stderr);
		if (0) exit(1);
	}
	witness = ZT;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpq $0x0, -0x8(%rbp)
jne 0x32d3f
jmp 0x332f3
movq -0x8(%rbp), %rax
movq 0x40(%rax), %rax
cmpl $0x2d, 0x1c(%rax)
je 0x32db5
movl 0x63e8d(%rip), %eax     # 0x96be0
addl $0x1, %eax
movl %eax, 0x63e84(%rip)     # 0x96be0
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x48(%rbp)
movq -0x8(%rbp), %rax
movl 0x10(%rax), %eax
movl %eax, -0x3c(%rbp)
movq -0x8(%rbp), %rax
movq 0x40(%rax), %rax
movl 0x1c(%rax), %edi
callq 0x8270
movq %rax, -0x38(%rbp)
movq -0x8(%rbp), %rdi
callq 0x4ec0
movq -0x48(%rbp), %rsi
movl -0x3c(%rbp), %edx
movq -0x38(%rbp), %rcx
movq %rax, %r8
leaq 0x149b8(%rip), %rdi     # 0x4775c
movb $0x0, %al
callq 0x30f0
movl $0x1, %edi
callq 0x3230
movq -0x8(%rbp), %rax
movq 0x40(%rax), %rax
movq %rax, -0x20(%rbp)
movl $0x0, -0x24(%rbp)
cmpl $0x7, -0x24(%rbp)
jge 0x33210
movq -0x20(%rbp), %rax
movq 0x40(%rax), %rax
movq 0x8(%rax), %rdi
movslq -0x24(%rbp), %rcx
leaq 0x1b407(%rip), %rax     # 0x4e1f0
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rsi
callq 0x3160
cmpl $0x0, %eax
jne 0x33200
movq -0x20(%rbp), %rax
movq 0x40(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x1417d(%rip), %rsi     # 0x46f91
callq 0x3160
cmpl $0x0, %eax
je 0x32e3f
movq -0x20(%rbp), %rax
movq 0x40(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x12185(%rip), %rsi     # 0x44fb6
callq 0x3160
cmpl $0x0, %eax
jne 0x32ee1
cmpl $0x0, 0x63da2(%rip)     # 0x96be8
je 0x32e62
movq -0x20(%rbp), %rax
movq 0x40(%rax), %rax
movq 0x8(%rax), %rsi
leaq 0x1493b(%rip), %rdi     # 0x47796
movb $0x0, %al
callq 0x30f0
movq -0x8(%rbp), %rax
cmpq $0x0, 0x48(%rax)
je 0x32ea1
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rax
cmpl $0x2f, 0x1c(%rax)
jne 0x32ea1
movq -0x20(%rbp), %rax
movq 0x40(%rax), %rax
movq 0x8(%rax), %rsi
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x40(%rax), %rdx
leaq 0x14906(%rip), %rdi     # 0x477a0
movb $0x0, %al
callq 0x30f0
movslq -0x24(%rbp), %rcx
leaq 0x63ce4(%rip), %rax     # 0x96b90
movl (%rax,%rcx,4), %edx
addl $0x1, %edx
leaq 0x63cd7(%rip), %rax     # 0x96b90
movl %edx, (%rax,%rcx,4)
movslq -0x24(%rbp), %rcx
leaq 0x1b329(%rip), %rax     # 0x4e1f0
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movq -0x10(%rbp), %rdi
xorl %edx, %edx
movl %edx, %esi
callq *%rax
jmp 0x332f3
movq -0x20(%rbp), %rax
movq 0x40(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x140a6(%rip), %rsi     # 0x46f9a
callq 0x3160
cmpl $0x0, %eax
jne 0x32f1e
movl $0x0, -0x2c(%rbp)
movl $0x0, -0x28(%rbp)
leaq 0x63be5(%rip), %rax     # 0x96af8
movl $0x0, (%rax)
jmp 0x330a4
movslq -0x24(%rbp), %rcx
leaq 0x1b2c7(%rip), %rax     # 0x4e1f0
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rdi
leaq 0x14a44(%rip), %rsi     # 0x4797e
callq 0x3160
cmpl $0x0, %eax
jne 0x32f9f
movl $0x0, -0x2c(%rbp)
leaq 0x63ba6(%rip), %rax     # 0x96af8
movl $0x0, (%rax)
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rdi
movq -0x10(%rbp), %rsi
callq 0x2b4f0
movl %eax, -0x28(%rbp)
leaq 0x63b85(%rip), %rax     # 0x96af8
cmpl $0x0, (%rax)
je 0x32f9a
movq 0x1b079(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
leaq 0x14821(%rip), %rsi     # 0x477aa
movb $0x0, %al
callq 0x3170
movl $0x1, %edi
callq 0x3230
jmp 0x330a4
movq -0x8(%rbp), %rax
cmpq $0x0, 0x48(%rax)
je 0x32fbc
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rax
cmpl $0xa, 0x1c(%rax)
je 0x33054
jmp 0x32fbe
movq 0x1b033(%rip), %rax     # 0x4dff8
movq (%rax), %rax
movq %rax, -0x60(%rbp)
movslq -0x24(%rbp), %rcx
leaq 0x1b219(%rip), %rax     # 0x4e1f0
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq %rax, -0x58(%rbp)
movslq -0x24(%rbp), %rcx
leaq 0x1b200(%rip), %rax     # 0x4e1f0
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq %rax, -0x50(%rbp)
movq -0x8(%rbp), %rax
cmpq $0x0, 0x48(%rax)
je 0x3301f
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rax
movl 0x1c(%rax), %edi
callq 0x8270
movq %rax, -0x68(%rbp)
jmp 0x3302c
leaq 0x1d8f(%rip), %rax      # 0x34db5
movq %rax, -0x68(%rbp)
jmp 0x3302c
movq -0x50(%rbp), %rcx
movq -0x58(%rbp), %rdx
movq -0x60(%rbp), %rdi
movq -0x68(%rbp), %r8
leaq 0x14783(%rip), %rsi     # 0x477c6
movb $0x0, %al
callq 0x3170
movl $0x1, %edi
callq 0x3230
leaq 0x63a9d(%rip), %rax     # 0x96af8
movl $0x0, (%rax)
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x40(%rax), %rdi
movq -0x10(%rbp), %rsi
callq 0x2b4f0
movl %eax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x48(%rax), %rdi
movq -0x10(%rbp), %rsi
callq 0x2b4f0
movl %eax, -0x2c(%rbp)
leaq 0x63a60(%rip), %rax     # 0x96af8
cmpl $0x0, (%rax)
je 0x330a2
jmp 0x32fbe
jmp 0x330a4
movslq -0x24(%rbp), %rcx
leaq 0x1b141(%rip), %rax     # 0x4e1f0
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movq -0x10(%rbp), %rdi
movl -0x28(%rbp), %esi
movl -0x2c(%rbp), %edx
callq *%rax
movslq -0x24(%rbp), %rcx
leaq 0x63abf(%rip), %rax     # 0x96b90
movl (%rax,%rcx,4), %edx
addl $0x1, %edx
leaq 0x63ab2(%rip), %rax     # 0x96b90
movl %edx, (%rax,%rcx,4)
cmpl $0x0, 0x63b00(%rip)     # 0x96be8
je 0x331fb
movslq -0x24(%rbp), %rcx
leaq 0x1b0f7(%rip), %rax     # 0x4e1f0
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rsi
leaq 0x146f3(%rip), %rdi     # 0x477fd
movb $0x0, %al
callq 0x30f0
cmpl $0x2, -0x24(%rbp)
jge 0x3312b
movq 0x1aeb2(%rip), %rax     # 0x4dfd0
movq (%rax), %rdi
movl -0x28(%rbp), %esi
callq 0x1b330
jmp 0x3313c
movl -0x28(%rbp), %esi
leaq 0x11815(%rip), %rdi     # 0x4494a
movb $0x0, %al
callq 0x30f0
leaq 0x128b5(%rip), %rdi     # 0x459f8
movb $0x0, %al
callq 0x30f0
cmpl $0x2, -0x24(%rbp)
jge 0x33164
movq 0x1ae79(%rip), %rax     # 0x4dfd0
movq (%rax), %rdi
movl -0x2c(%rbp), %esi
callq 0x1b330
jmp 0x33175
movl -0x2c(%rbp), %esi
leaq 0x117dc(%rip), %rdi     # 0x4494a
movb $0x0, %al
callq 0x30f0
movq -0x10(%rbp), %rdi
callq 0x4ec0
movq %rax, %rsi
leaq 0x14101(%rip), %rdi     # 0x47289
movb $0x0, %al
callq 0x30f0
movq 0x63a42(%rip), %rax     # 0x96bd8
movq (%rax), %rax
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x331f9
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rsi
leaq 0x14652(%rip), %rdi     # 0x4780c
movb $0x0, %al
callq 0x30f0
movq 0x1ae08(%rip), %rax     # 0x4dfd0
movq (%rax), %rdi
movq -0x18(%rbp), %rax
movl 0x10(%rax), %esi
andl $0xfffff, %esi          # imm = 0xFFFFF
callq 0x1b330
leaq 0x145c3(%rip), %rdi     # 0x477a7
movb $0x0, %al
callq 0x30f0
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x3319d
jmp 0x331fb
jmp 0x332f3
jmp 0x33202
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x32dc8
movq -0x20(%rbp), %rax
movq 0x40(%rax), %rax
movq 0x8(%rax), %rdi
movq 0x1b0d5(%rip), %rsi     # 0x4e2f8
callq 0x3160
cmpl $0x0, %eax
jne 0x3323b
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rax
cmpl $0x2f, 0x1c(%rax)
je 0x33289
movq 0x1b0b6(%rip), %rax     # 0x4e2f8
movq %rax, -0x78(%rbp)
movq -0x20(%rbp), %rax
movq 0x40(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, -0x70(%rbp)
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rax
movl 0x1c(%rax), %edi
callq 0x8270
movq -0x78(%rbp), %rsi
movq -0x70(%rbp), %rdx
movq %rax, %rcx
leaq 0x1459a(%rip), %rdi     # 0x47812
movb $0x0, %al
callq 0x30f0
movl $0x1, %edi
callq 0x3230
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rax
movq %rax, -0x20(%rbp)
cmpl $0x0, 0x6394c(%rip)     # 0x96be8
je 0x332b4
movq -0x20(%rbp), %rax
movq 0x40(%rax), %rsi
leaq 0xd86b(%rip), %rdi      # 0x40b18
movb $0x0, %al
callq 0x30f0
movq -0x20(%rbp), %rax
movq 0x40(%rax), %rdi
movq -0x10(%rbp), %rsi
callq 0x33390
cmpl $0x0, %eax
je 0x332e8
movq 0x1acff(%rip), %rax     # 0x4dfd0
movq (%rax), %rdi
callq 0x31b0
movq 0x1ad18(%rip), %rax     # 0x4dff8
movq (%rax), %rdi
callq 0x31b0
movq $0x0, 0x63905(%rip) # 0x96bf8
addq $0x80, %rsp
popq %rbp
retq
nopl (%rax)