// File: /workspace/github_c_makefile_star2_O0/nimble-code[P]Uno/Src/dflow.c
// Function: check_else
void
check_else(treenode *p, treenode *n, int depth)	/* check that any if-then-else-if-then chain ends with and else block */
{	if_node *ifn;

	if (Verbose)
	{	if (p)
			printf("%d	B %s:%d -> %d (if=%d) %d\n",
			depth, p->hdr.fnm, p->hdr.line, (n)?n->hdr.which:0, IF_T, (n)?n->hdr.type:0);
		if (n)
			printf("%d	C %s:%d \n", depth, n->hdr.fnm, n->hdr.line);
	}

	if (n)
	{	switch (n->hdr.which) {
		case IF_T:	/* 2	-- if or a cond-expr */
			ifn = (if_node *) n;
			if (ifn->hdr.type == TN_IF)	/* 27 */
			{	if (ifn->else_n == NULL && depth > 0)
				{	printf("uno: %s:%d: missing else\n",
						n->hdr.fnm, n->hdr.line);
				} else
				{	check_else(p, (treenode *) ifn->else_n, depth+1);
				}
			}
			break;
		case NODE_T:	/* 4 */
			if (n->hdr.type == TN_STEMNT	/* 35 */
			||  n->hdr.type == TN_BLOCK)	/* 4 */
			{	check_else(p, n->lnode, depth+1);
				check_else(p, n->rnode, depth+1);
			}
			break;
		default:
			break;
	}	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
leaq 0x32d1e(%rip), %rax     # 0x4e378
cmpl $0x0, (%rax)
je 0x1b710
cmpq $0x0, -0x8(%rbp)
je 0x1b6e7
movl -0x14(%rbp), %eax
movl %eax, -0x34(%rbp)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rax
movl 0x10(%rax), %eax
movl %eax, -0x24(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x1b698
movq -0x10(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x38(%rbp)
jmp 0x1b69f
xorl %eax, %eax
movl %eax, -0x38(%rbp)
jmp 0x1b69f
movl -0x38(%rbp), %eax
movl %eax, -0x3c(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x1b6b8
movq -0x10(%rbp), %rax
movl 0x1c(%rax), %eax
movl %eax, -0x40(%rbp)
jmp 0x1b6bf
xorl %eax, %eax
movl %eax, -0x40(%rbp)
jmp 0x1b6bf
movl -0x3c(%rbp), %r8d
movl -0x24(%rbp), %ecx
movq -0x30(%rbp), %rdx
movl -0x34(%rbp), %esi
movl -0x40(%rbp), %eax
leaq 0x29040(%rip), %rdi     # 0x44717
movl $0x2, %r9d
movl %eax, (%rsp)
movb $0x0, %al
callq 0x30f0
cmpq $0x0, -0x10(%rbp)
je 0x1b70e
movl -0x14(%rbp), %esi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdx
movq -0x10(%rbp), %rax
movl 0x10(%rax), %ecx
leaq 0x2902d(%rip), %rdi     # 0x44734
movb $0x0, %al
callq 0x30f0
jmp 0x1b710
cmpq $0x0, -0x10(%rbp)
je 0x1b7dd
movq -0x10(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x44(%rbp)
subl $0x2, %eax
je 0x1b738
jmp 0x1b72b
movl -0x44(%rbp), %eax
subl $0x4, %eax
je 0x1b795
jmp 0x1b7d9
movq -0x10(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
cmpl $0x1b, 0x1c(%rax)
jne 0x1b793
movq -0x20(%rbp), %rax
cmpq $0x0, 0x50(%rax)
jne 0x1b77a
cmpl $0x0, -0x14(%rbp)
jle 0x1b77a
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x10(%rbp), %rax
movl 0x10(%rax), %edx
leaq 0x28fd0(%rip), %rdi     # 0x44741
movb $0x0, %al
callq 0x30f0
jmp 0x1b791
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rax
movq 0x50(%rax), %rsi
movl -0x14(%rbp), %edx
addl $0x1, %edx
callq 0x1b640
jmp 0x1b793
jmp 0x1b7db
movq -0x10(%rbp), %rax
cmpl $0x23, 0x1c(%rax)
je 0x1b7a9
movq -0x10(%rbp), %rax
cmpl $0x4, 0x1c(%rax)
jne 0x1b7d7
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rsi
movl -0x14(%rbp), %edx
addl $0x1, %edx
callq 0x1b640
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rsi
movl -0x14(%rbp), %edx
addl $0x1, %edx
callq 0x1b640
jmp 0x1b7db
jmp 0x1b7db
jmp 0x1b7dd
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)