// File: /workspace/github_c_makefile_star2_O0/nimble-code[P]Uno/Src/uno_generic.c
// Function: basiczero
static int
basiczero(treenode *n, SymList *r)	/* 1 = zero, -1 = nonzero, 0 = don't know */
{
	if (n->hdr.type == TN_IDENT
	||  n->hdr.type == TN_ASSIGN
	||  n->hdr.type == TN_FUNC_CALL)
		return -1;		/* implicit ZERO_TEST - nonzero if true */

	if (n->hdr.type != TN_EXPR)
	{	if (debug) printf("basiczero: not an expr\n");
		return 0;		/* don't know */
	}

	if (n->hdr.tok == NOT
	&&  (n->rnode->hdr.type == TN_IDENT
	||   n->rnode->hdr.type == TN_ASSIGN))
		return 1;		/* implicit NONZERO_TEST - zero if true */

	if (n->hdr.tok == EQUAL)
	{	if ((n->rnode && n->rnode->hdr.type == TN_INT
		&&   ((leafnode *)n->rnode)->data.ival == 0
		&&     good_target(n->lnode, r))	/* new */
		||  (n->lnode && n->lnode->hdr.type == TN_INT
		&&   ((leafnode *)n->lnode)->data.ival == 0
		&&     good_target(n->rnode, r)))	/* new */
			return 1;	/* explicit ZERO_TEST - zero if true */

		if (debug) printf("basiczero: equal fail\n");
		return 0;		/* don't know */
	}
	if (n->hdr.tok == NOT_EQ)
	{	if ((n->rnode && n->rnode->hdr.type == TN_INT
		&&   ((leafnode *)n->rnode)->data.ival == 0
		&&     good_target(n->lnode, r))	/* new */
		||  (n->lnode && n->lnode->hdr.type == TN_INT
		&&   ((leafnode *)n->lnode)->data.ival == 0
		&&     good_target(n->rnode, r)))	/* new */
			return -1;	/* explicit NONZERO_TEST - nonzero if true */
		if (debug) printf("basiczero: not_equal fail\n");
		return 0;		/* don't know */
	}

	if (debug) printf("basiczero: other fail\n");
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x2d, 0x1c(%rax)
je 0x31cee
movq -0x10(%rbp), %rax
cmpl $0x1c, 0x1c(%rax)
je 0x31cee
movq -0x10(%rbp), %rax
cmpl $0x3, 0x1c(%rax)
jne 0x31cfa
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x31ee8
movq -0x10(%rbp), %rax
cmpl $0x28, 0x1c(%rax)
je 0x31d27
cmpl $0x0, 0x64edd(%rip)     # 0x96be8
je 0x31d1b
leaq 0x155d6(%rip), %rdi     # 0x472ea
movb $0x0, %al
callq 0x30f0
movl $0x0, -0x4(%rbp)
jmp 0x31ee8
movq -0x10(%rbp), %rax
cmpl $0x162, 0x18(%rax)      # imm = 0x162
jne 0x31d5c
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
cmpl $0x2d, 0x1c(%rax)
je 0x31d50
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
cmpl $0x1c, 0x1c(%rax)
jne 0x31d5c
movl $0x1, -0x4(%rbp)
jmp 0x31ee8
movq -0x10(%rbp), %rax
cmpl $0x137, 0x18(%rax)      # imm = 0x137
jne 0x31e16
movq -0x10(%rbp), %rax
cmpq $0x0, 0x48(%rax)
je 0x31daa
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
cmpl $0x30, 0x1c(%rax)
jne 0x31daa
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
cmpl $0x0, 0x40(%rax)
jne 0x31daa
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0x31f00
cmpl $0x0, %eax
jne 0x31de7
movq -0x10(%rbp), %rax
cmpq $0x0, 0x40(%rax)
je 0x31df3
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rax
cmpl $0x30, 0x1c(%rax)
jne 0x31df3
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rax
cmpl $0x0, 0x40(%rax)
jne 0x31df3
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0x31f00
cmpl $0x0, %eax
je 0x31df3
movl $0x1, -0x4(%rbp)
jmp 0x31ee8
cmpl $0x0, 0x64dee(%rip)     # 0x96be8
je 0x31e0a
leaq 0x154ff(%rip), %rdi     # 0x47302
movb $0x0, %al
callq 0x30f0
movl $0x0, -0x4(%rbp)
jmp 0x31ee8
movq -0x10(%rbp), %rax
cmpl $0x13a, 0x18(%rax)      # imm = 0x13A
jne 0x31eca
movq -0x10(%rbp), %rax
cmpq $0x0, 0x48(%rax)
je 0x31e64
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
cmpl $0x30, 0x1c(%rax)
jne 0x31e64
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
cmpl $0x0, 0x40(%rax)
jne 0x31e64
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0x31f00
cmpl $0x0, %eax
jne 0x31ea1
movq -0x10(%rbp), %rax
cmpq $0x0, 0x40(%rax)
je 0x31eaa
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rax
cmpl $0x30, 0x1c(%rax)
jne 0x31eaa
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rax
cmpl $0x0, 0x40(%rax)
jne 0x31eaa
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0x31f00
cmpl $0x0, %eax
je 0x31eaa
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x31ee8
cmpl $0x0, 0x64d37(%rip)     # 0x96be8
je 0x31ec1
leaq 0x1545f(%rip), %rdi     # 0x47319
movb $0x0, %al
callq 0x30f0
movl $0x0, -0x4(%rbp)
jmp 0x31ee8
cmpl $0x0, 0x64d17(%rip)     # 0x96be8
je 0x31ee1
leaq 0x1545a(%rip), %rdi     # 0x47334
movb $0x0, %al
callq 0x30f0
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)