// File: /workspace/github_c_makefile_star2_O0/nimble-code[P]Uno/Src/uno_generic.c
// Function: exec_step
static void
exec_step(treenode *n, treenode *m)
{	leafnode *leaf;

	switch (n->hdr.type) {
	case TN_FUNC_DECL:
	case TN_DECL:
	case TN_LABEL:
		break;

	case TN_FUNC_CALL:
		exec_fct(n, m);
		break;

	case TN_ASSIGN:
		if (n->lnode->hdr.type == TN_IDENT)
		{	leaf = (leafnode *) n->lnode;
			if (strcmp(leaf->data.sval->str, statename) == 0)
			{	nogood = 0;
				gen_stack->uno_state = eval_const_expr(n->rnode, m);
				if (nogood) goto bad;
			} else if (strcmp(leaf->data.sval->str, s_name) == 0)
			{	if (n->rnode->hdr.type == TN_STRING)
					user_name = ((leafnode *)n->rnode)->data.str;
				else if (n->rnode->hdr.type == TN_IDENT
				&& strcmp(((leafnode *)n->rnode)->data.sval->str, "MATCH") == 0)
					user_name = "_M_A_T_C_H_";
				else goto bad;
			} else if (strcmp(leaf->data.sval->str, s_val) == 0)
			{	nogood = 0;
				user_val = eval_const_expr(n->rnode, m);
				if (nogood) goto bad;
			}
		} else
		{
bad:			err_path++;
			printf("unrecognized assignment <%s>\n",
				x_stmnt(n->rnode));
			exit(1);
		}
		break;

	case TN_EXPR:	/* i++, i-- */
		switch (n->hdr.tok) {
		case INCR:
			if (!do_oper(n, 1)) goto bad;
			break;
		case DECR:
			if (!do_oper(n, -1)) goto bad;
			break;
		default:
			goto nogood;
		}
		break;

	default:
nogood:		err_path++;
		printf("\texec: unknown stmnt type '%s' <%s>\n",
			name_of_node(n->hdr.type),
			x_stmnt(n));
		if (n->lnode) printf("\t\tL = %s\n", name_of_node(n->lnode->hdr.type));
		if (n->rnode) printf("\t\tR = %s\n", name_of_node(n->rnode->hdr.type));
		exit(1);
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movl 0x1c(%rax), %eax
addl $-0x2, %eax
movl %eax, %ecx
movq %rcx, -0x20(%rbp)
subl $0x26, %eax
ja 0x32830
movq -0x20(%rbp), %rax
leaq 0x1470c(%rip), %rcx     # 0x46d30
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
jmp 0x328d1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x32d20
jmp 0x328d1
movq -0x8(%rbp), %rax
movq 0x40(%rax), %rax
cmpl $0x2d, 0x1c(%rax)
jne 0x3279b
movq -0x8(%rbp), %rax
movq 0x40(%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq 0x40(%rax), %rax
movq 0x8(%rax), %rdi
movq 0x1bb73(%rip), %rsi     # 0x4e1e8
callq 0x3160
cmpl $0x0, %eax
jne 0x326bf
leaq 0x64472(%rip), %rax     # 0x96af8
movl $0x0, (%rax)
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rdi
movq -0x10(%rbp), %rsi
callq 0x2b4f0
movl %eax, %ecx
movq 0x64532(%rip), %rax     # 0x96bd8
movl %ecx, 0x8(%rax)
leaq 0x64448(%rip), %rax     # 0x96af8
cmpl $0x0, (%rax)
je 0x326ba
jmp 0x3279d
jmp 0x32799
movq -0x18(%rbp), %rax
movq 0x40(%rax), %rax
movq 0x8(%rax), %rdi
movq 0x1bc16(%rip), %rsi     # 0x4e2e8
callq 0x3160
cmpl $0x0, %eax
jne 0x32744
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rax
cmpl $0x2f, 0x1c(%rax)
jne 0x326ff
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x40(%rax), %rax
movq %rax, 0x644f3(%rip)     # 0x96bf0
jmp 0x32742
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rax
cmpl $0x2d, 0x1c(%rax)
jne 0x3273e
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x40(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x14fcf(%rip), %rsi     # 0x476f3
callq 0x3160
cmpl $0x0, %eax
jne 0x3273e
leaq 0x14fc4(%rip), %rax     # 0x476f9
movq %rax, 0x644b4(%rip)     # 0x96bf0
jmp 0x32740
jmp 0x3279d
jmp 0x32742
jmp 0x32797
movq -0x18(%rbp), %rax
movq 0x40(%rax), %rax
movq 0x8(%rax), %rdi
movq 0x1bb99(%rip), %rsi     # 0x4e2f0
callq 0x3160
cmpl $0x0, %eax
jne 0x32795
leaq 0x64390(%rip), %rax     # 0x96af8
movl $0x0, (%rax)
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rdi
movq -0x10(%rbp), %rsi
callq 0x2b4f0
movl %eax, 0x64467(%rip)     # 0x96bec
leaq 0x6436c(%rip), %rax     # 0x96af8
cmpl $0x0, (%rax)
je 0x32793
jmp 0x3279d
jmp 0x32795
jmp 0x32797
jmp 0x32799
jmp 0x327d4
jmp 0x3279d
movl 0x6443d(%rip), %eax     # 0x96be0
addl $0x1, %eax
movl %eax, 0x64434(%rip)     # 0x96be0
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rdi
callq 0x4ec0
movq %rax, %rsi
leaq 0x14f42(%rip), %rdi     # 0x47705
movb $0x0, %al
callq 0x30f0
movl $0x1, %edi
callq 0x3230
jmp 0x328d1
movq -0x8(%rbp), %rax
movl 0x18(%rax), %eax
movl %eax, -0x24(%rbp)
subl $0x166, %eax            # imm = 0x166
je 0x327f8
jmp 0x327ec
movl -0x24(%rbp), %eax
subl $0x167, %eax            # imm = 0x167
je 0x3280f
jmp 0x32829
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x33300
cmpl $0x0, %eax
jne 0x3280d
jmp 0x3279d
jmp 0x3282b
movq -0x8(%rbp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x33300
cmpl $0x0, %eax
jne 0x32827
jmp 0x3279d
jmp 0x3282b
jmp 0x32832
jmp 0x328d1
jmp 0x32832
movl 0x643a8(%rip), %eax     # 0x96be0
addl $0x1, %eax
movl %eax, 0x6439f(%rip)     # 0x96be0
movq -0x8(%rbp), %rax
movl 0x1c(%rax), %edi
callq 0x8270
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rdi
callq 0x4ec0
movq -0x30(%rbp), %rsi
movq %rax, %rdx
leaq 0x14ebb(%rip), %rdi     # 0x47723
movb $0x0, %al
callq 0x30f0
movq -0x8(%rbp), %rax
cmpq $0x0, 0x40(%rax)
je 0x3289b
movq -0x8(%rbp), %rax
movq 0x40(%rax), %rax
movl 0x1c(%rax), %edi
callq 0x8270
movq %rax, %rsi
leaq 0x14eb4(%rip), %rdi     # 0x47748
movb $0x0, %al
callq 0x30f0
movq -0x8(%rbp), %rax
cmpq $0x0, 0x48(%rax)
je 0x328c7
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rax
movl 0x1c(%rax), %edi
callq 0x8270
movq %rax, %rsi
leaq 0x14e92(%rip), %rdi     # 0x47752
movb $0x0, %al
callq 0x30f0
movl $0x1, %edi
callq 0x3230
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)