// File: /workspace/github_c_makefile_star2_O0/nimble-code[P]Uno/Src/uno_fcts.c
// Function: act_cond
static int
act_cond(Label *m, int t)	/* match or non_zero -- conditionals indep of sys labels */
{	int ret = 0;
	int x, y, z;
	int truth = t;

	if (strncmp((char *) m->label, "!match(", strlen("!match(")) == 0)
	{	truth = (truth == 1) ? -1 : 1;
		x = strlen("!match(,");
		goto n_ref;
	}
	if (strncmp((char *) m->label, "!known_nonzero()", strlen("!known_nonzero()")) == 0)
	{	truth = (truth == 1) ? -1 : 1;
		goto n_nz;
	}

	if (strncmp((char *) m->label, "match(", strlen("match(")) == 0)
	{	x = strlen("match(");		/* match(mark, domatch, nomatch) */
n_ref:		if (!isdigit(m->label[x])
		||  sscanf((char *) &(m->label[x]), "%d,%d,%d", &z, &x, &y) != 3)
			notyet(m, "args to match");

		if ((x|y) & ~(DEF|USE|DEREF))	/* only D, U, or R marks matter */
			notyet(m, "2nd or 3rd arg to match");

		ret = has_ref_match(z, x, y);
		if (truth == -1) ret = 1 - ret;

		if (debug) printf("ac: %s -- returns %d\n", m->label, ret);
	} else if (strncmp((char *) m->label, "known_nonzero()", strlen("known_nonzero()")) == 0)
	{
n_nz:		ret = known_nz();
		if (truth == -1) ret = 1 - ret;

		if (debug) printf("ac: %s -- returns %d\n", m->label, ret);
	}

	return ret;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl $0x0, -0x10(%rbp)
movl -0xc(%rbp), %eax
movl %eax, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rdi
leaq 0x22ad(%rip), %rsi      # 0x7f57
movl $0x7, %edx
callq 0x1030
cmpl $0x0, %eax
jne 0x5cd8
movl -0x20(%rbp), %edx
movl $0x1, %eax
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
cmpl $0x1, %edx
cmovel %ecx, %eax
movl %eax, -0x20(%rbp)
movl $0x8, -0x14(%rbp)
jmp 0x5d38
movq -0x8(%rbp), %rax
movq (%rax), %rdi
leaq 0x2279(%rip), %rsi      # 0x7f5f
movl $0x10, %edx
callq 0x1030
cmpl $0x0, %eax
jne 0x5d10
movl -0x20(%rbp), %edx
movl $0x1, %eax
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
cmpl $0x1, %edx
cmovel %ecx, %eax
movl %eax, -0x20(%rbp)
jmp 0x5e1f
movq -0x8(%rbp), %rax
movq (%rax), %rdi
leaq 0x223a(%rip), %rsi      # 0x7f58
movl $0x6, %edx
callq 0x1030
cmpl $0x0, %eax
jne 0x5e00
movl $0x6, -0x14(%rbp)
callq 0x1160
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movq (%rcx), %rcx
movslq -0x14(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x800, %eax            # imm = 0x800
cmpl $0x0, %eax
je 0x5d8d
movq -0x8(%rbp), %rax
movq (%rax), %rdi
movslq -0x14(%rbp), %rax
addq %rax, %rdi
leaq 0x21fb(%rip), %rsi      # 0x7f70
leaq -0x1c(%rbp), %rdx
leaq -0x14(%rbp), %rcx
leaq -0x18(%rbp), %r8
movb $0x0, %al
callq 0x1100
cmpl $0x3, %eax
je 0x5d9d
movq -0x8(%rbp), %rdi
leaq 0x21e1(%rip), %rsi      # 0x7f79
callq 0x55f0
movl -0x14(%rbp), %eax
orl -0x18(%rbp), %eax
andl $-0x46, %eax
cmpl $0x0, %eax
je 0x5dbb
movq -0x8(%rbp), %rdi
leaq 0x21d1(%rip), %rsi      # 0x7f87
callq 0x55f0
movl -0x1c(%rbp), %edi
movl -0x14(%rbp), %esi
movl -0x18(%rbp), %edx
callq 0x68b0
movl %eax, -0x10(%rbp)
cmpl $-0x1, -0x20(%rbp)
jne 0x5ddd
movl $0x1, %eax
subl -0x10(%rbp), %eax
movl %eax, -0x10(%rbp)
cmpl $0x0, 0x55dc(%rip)      # 0xb3c0
je 0x5dfe
movq -0x8(%rbp), %rax
movq (%rax), %rsi
movl -0x10(%rbp), %edx
leaq 0x21a8(%rip), %rdi      # 0x7f9f
movb $0x0, %al
callq 0x1080
jmp 0x5e5d
movq -0x8(%rbp), %rax
movq (%rax), %rdi
leaq 0x2152(%rip), %rsi      # 0x7f60
movl $0xf, %edx
callq 0x1030
cmpl $0x0, %eax
jne 0x5e5b
jmp 0x5e1f
callq 0x6a10
movl %eax, -0x10(%rbp)
cmpl $-0x1, -0x20(%rbp)
jne 0x5e38
movl $0x1, %eax
subl -0x10(%rbp), %eax
movl %eax, -0x10(%rbp)
cmpl $0x0, 0x5581(%rip)      # 0xb3c0
je 0x5e59
movq -0x8(%rbp), %rax
movq (%rax), %rsi
movl -0x10(%rbp), %edx
leaq 0x214d(%rip), %rdi      # 0x7f9f
movb $0x0, %al
callq 0x1080
jmp 0x5e5b
jmp 0x5e5d
movl -0x10(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)