// File: /workspace/github_c_makefile_star2_O0/nimble-code[P]Modex/Src/xtract.c
// Function: vis_flush
void
vis_flush(treenode *n)
{	char *w1, *w2, *p, *rd, *z;
	int realprint;

//fprintf(fp, " <<<VIS_FLUSH %d %d '%s'>>> ", visu, ByPass, OutBuf);

	if (!visu
	||  strlen(OutBuf) == 0)
	{	goto done;
	}
	if (ByPass)
	{	fprintf(fp, "%s", OutBuf);
		goto done;
	}

	act_prec();

	p  = vis_lookup(n);	/* does mapping through lut */
	rd = rm_decor(OutBuf);

	realprint = 0;
	if (strcmp(p, "warn") == 0)
	{	if (Warnings)
		fprintf(stderr, "%s: line %3d, warning, must abstract <%s>\n",
			progname, n->hdr.line, rd);
		p = "print";
	}

	if (strcmp(p, "print") == 0)
	{	realprint = 1;
anyway:		w1 = &rd[0];
		while ((w2 = strstr(w1, EnCode)) != NULL)
			*w2 = ':';
		w1 = &rd[0];
		while ((w2 = strchr(w1, '\"')) != NULL)
			*w2 = '\'';

		if (linenr)
			sprintf(tbuf, "printf(\"line %3d: %s\\n\"); ", n->hdr.line, rd);
		else
			sprintf(tbuf, "printf(\"%s\\n\"); ", rd);
		vis_direct(tbuf);
		if (realprint)
			modex_mark(n, HIDE);
		goto done;
	} else if (add_printfs && strncmp(rd, "D: ", 3) != 0)
	{	if (linenr)
			sprintf(tbuf, "printf(\"line %3d: %s\\n\"); ", n->hdr.line, rd);
		else
			sprintf(tbuf, "printf(\"%s\\n\"); ", rd);
		vis_direct(tbuf);
	}

	if (strncmp(p, "C_expr", strlen("C_expr")) == 0
	&& (strncmp(OutBuf, "A: ", strlen("A: ")) == 0
	||  strncmp(OutBuf, "F: ", strlen("F: ")) == 0))
	{	char *tag = "c_expr { ";
		if (strlen(PreBuf) > 0)	/* precondition [] */
		{	tag = (char *) e_malloc(strlen("c_expr [] { ")+strlen(PreBuf)+1);
			sprintf(tag, "c_expr [%s] { ", PreBuf);
		}
		p = form_c_tag(tag, strlen("A: "), "");
		goto mkstmnt;
	} else if (strncmp(p, "C_code", strlen("C_code")) == 0)
	{	p = do_ccode(n?n->hdr.line:0);
		goto mkstmnt;
	} else if (strncmp(p, "keep", strlen("keep")) == 0)
	{	if (allkeep && in_args)
		{	p = "comment";	/* override */
			goto mkinstead;
		}
		if (strncmp(rd, "case ", strlen("case ")) == 0)
		{	z = &rd[strlen("case ")];
			if (strstr(rd, ND_CHOICE))
			{	z = "true";	/* all cases become true */
			}
		} else if (strncmp(rd, "default:", strlen("default:")) == 0)
		{	z = do_difficult("else ->", 1);
			sawdefault = 1;
		} else if ((z = strchr(rd, ':')) != NULL)	/* A:, C:, etc. */
		{	z++;
		} else
		{	z = rd;
		}
		if (!strchr(z, ';') && !strstr(z, "->"))	/* new 12/18/00 */
		{	p = z;
			goto mkstmnt;
		}
		strcpy(tbuf, z); /* substitute happens in vis_lookup */
		goto mkafter;
	} else	if (strncmp(p, "hide", strlen("hide")) == 0
		||  strncmp(p, "comment", strlen("comment")) == 0)
	{
mkinstead:	modex_mark(n, HIDE);
	} else				/* mapped */
	{
mkstmnt:	sprintf(tbuf, "%s; ", p);
mkafter:	vis_direct(tbuf);
		modex_mark(n, 0);
	}

	if (linenr)
	{	if (extra_comment
		||  strcmp(p, "comment") == 0)
			sprintf(tbuf, "\t/* %d: %s */ ", linenr, rd);
		else
			sprintf(tbuf, "\t/* line %3d */ ", linenr);
	} else if (strcmp(p, "comment") == 0)
	{	sprintf(tbuf, "\t/* %s */ ", rd);
	}


	vis_direct(tbuf);
	if (printall && !in_pars && !in_args)
	{	goto anyway;
	}
done:
	zap_prec();
#if 0
 if (n)
 { sprintf(tbuf, "	/**** <%d> ****/\n", n->hdr.line);
   vis_direct(tbuf);
 }
#endif
	fflush(fp);
	return;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
leaq 0x32a7d(%rip), %rax     # 0x47ba0
cmpl $0x0, (%rax)
je 0x1513a
leaq 0x33421(%rip), %rdi     # 0x48550
callq 0x40f0
cmpq $0x0, %rax
jne 0x1513f
jmp 0x156d3
cmpl $0x0, 0x3cd9a(%rip)     # 0x51ee0
je 0x15169
movq 0x333f1(%rip), %rdi     # 0x48540
leaq 0x2066b(%rip), %rsi     # 0x357c1
leaq 0x333f3(%rip), %rdx     # 0x48550
movb $0x0, %al
callq 0x4190
jmp 0x156d3
callq 0x14ff0
movq -0x8(%rbp), %rdi
callq 0x149d0
movq %rax, -0x20(%rbp)
leaq 0x333ce(%rip), %rdi     # 0x48550
callq 0xc930
movq %rax, -0x28(%rbp)
movl $0x0, -0x34(%rbp)
movq -0x20(%rbp), %rdi
leaq 0x20e0e(%rip), %rsi     # 0x35fab
callq 0x4180
cmpl $0x0, %eax
jne 0x151eb
leaq 0x32aa2(%rip), %rax     # 0x47c50
cmpl $0x0, (%rax)
je 0x151e0
movq 0x2fe3e(%rip), %rax     # 0x44ff8
movq (%rax), %rdi
leaq 0x2ffac(%rip), %rax     # 0x45170
movq (%rax), %rdx
movq -0x8(%rbp), %rax
movl 0x10(%rax), %ecx
movq -0x28(%rbp), %r8
leaq 0x20dd7(%rip), %rsi     # 0x35fb0
movb $0x0, %al
callq 0x4190
leaq 0x2006f(%rip), %rax     # 0x35256
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
leaq 0x20060(%rip), %rsi     # 0x35256
callq 0x4180
cmpl $0x0, %eax
jne 0x152c8
movl $0x1, -0x34(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
leaq 0x20063(%rip), %rsi     # 0x35281
callq 0x4280
movq %rax, -0x18(%rbp)
cmpq $0x0, %rax
je 0x15236
movq -0x18(%rbp), %rax
movb $0x3a, (%rax)
jmp 0x15213
movq -0x28(%rbp), %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
movl $0x22, %esi
callq 0x4110
movq %rax, -0x18(%rbp)
cmpq $0x0, %rax
je 0x1525f
movq -0x18(%rbp), %rax
movb $0x27, (%rax)
jmp 0x1523e
cmpl $0x0, 0x3cc7e(%rip)     # 0x51ee4
je 0x1528a
movq -0x8(%rbp), %rax
movl 0x10(%rax), %edx
movq -0x28(%rbp), %rcx
leaq 0x37556(%rip), %rdi     # 0x4c7d0
leaq 0x20d5a(%rip), %rsi     # 0x35fdb
movb $0x0, %al
callq 0x4260
jmp 0x152a3
movq -0x28(%rbp), %rdx
leaq 0x3753b(%rip), %rdi     # 0x4c7d0
leaq 0x20d5a(%rip), %rsi     # 0x35ff6
movb $0x0, %al
callq 0x4260
leaq 0x37526(%rip), %rdi     # 0x4c7d0
callq 0x10b40
cmpl $0x0, -0x34(%rbp)
je 0x152c3
movq -0x8(%rbp), %rdi
movl $0x200, %esi            # imm = 0x200
callq 0x141c0
jmp 0x156d3
leaq 0x32961(%rip), %rax     # 0x47c30
cmpl $0x0, (%rax)
je 0x1533e
movq -0x28(%rbp), %rdi
leaq 0x221c7(%rip), %rsi     # 0x374a6
movl $0x3, %edx
callq 0x4090
cmpl $0x0, %eax
je 0x1533e
cmpl $0x0, 0x3cbef(%rip)     # 0x51ee4
je 0x15319
movq -0x8(%rbp), %rax
movl 0x10(%rax), %edx
movq -0x28(%rbp), %rcx
leaq 0x374c7(%rip), %rdi     # 0x4c7d0
leaq 0x20ccb(%rip), %rsi     # 0x35fdb
movb $0x0, %al
callq 0x4260
jmp 0x15332
movq -0x28(%rbp), %rdx
leaq 0x374ac(%rip), %rdi     # 0x4c7d0
leaq 0x20ccb(%rip), %rsi     # 0x35ff6
movb $0x0, %al
callq 0x4260
leaq 0x37497(%rip), %rdi     # 0x4c7d0
callq 0x10b40
jmp 0x15340
movq -0x20(%rbp), %rdi
leaq 0x20cbc(%rip), %rsi     # 0x36007
movl $0x6, %edx
callq 0x4090
cmpl $0x0, %eax
jne 0x1540b
leaq 0x331eb(%rip), %rdi     # 0x48550
leaq 0x1fede(%rip), %rsi     # 0x3524a
movl $0x3, %edx
callq 0x4090
cmpl $0x0, %eax
je 0x15398
leaq 0x331ce(%rip), %rdi     # 0x48550
leaq 0x1fec5(%rip), %rsi     # 0x3524e
movl $0x3, %edx
callq 0x4090
cmpl $0x0, %eax
jne 0x1540b
leaq 0x20af1(%rip), %rax     # 0x35e90
movq %rax, -0x40(%rbp)
leaq 0x38906(%rip), %rdi     # 0x4dcb0
callq 0x40f0
cmpq $0x0, %rax
jbe 0x153ed
leaq 0x388f4(%rip), %rdi     # 0x4dcb0
callq 0x40f0
addq $0xc, %rax
addq $0x1, %rax
movl %eax, %edi
callq 0x4a70
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rdi
leaq 0x20c2f(%rip), %rsi     # 0x3600e
leaq 0x388ca(%rip), %rdx     # 0x4dcb0
movb $0x0, %al
callq 0x4260
movq -0x40(%rbp), %rdi
movl $0x3, %esi
leaq 0x220c1(%rip), %rdx     # 0x374be
callq 0x14280
movq %rax, -0x20(%rbp)
jmp 0x155d7
movq -0x20(%rbp), %rdi
leaq 0x20c07(%rip), %rsi     # 0x3601d
movl $0x6, %edx
callq 0x4090
cmpl $0x0, %eax
jne 0x15450
cmpq $0x0, -0x8(%rbp)
je 0x15438
movq -0x8(%rbp), %rax
movl 0x10(%rax), %eax
movl %eax, -0x44(%rbp)
jmp 0x1543f
xorl %eax, %eax
movl %eax, -0x44(%rbp)
jmp 0x1543f
movl -0x44(%rbp), %edi
callq 0x144c0
movq %rax, -0x20(%rbp)
jmp 0x155d7
movq -0x20(%rbp), %rdi
leaq 0x1fdd3(%rip), %rsi     # 0x3522e
movl $0x4, %edx
callq 0x4090
cmpl $0x0, %eax
jne 0x1558f
leaq 0x32a03(%rip), %rax     # 0x47e78
cmpl $0x0, (%rax)
je 0x15493
cmpl $0x0, 0x3510f(%rip)     # 0x4a590
je 0x15493
leaq 0x25624(%rip), %rax     # 0x3aaae
movq %rax, -0x20(%rbp)
jmp 0x155c5
movq -0x28(%rbp), %rdi
leaq 0x1fd8a(%rip), %rsi     # 0x35228
movl $0x5, %edx
callq 0x4090
cmpl $0x0, %eax
jne 0x154dc
movq -0x28(%rbp), %rax
addq $0x5, %rax
movq %rax, -0x30(%rbp)
movq -0x28(%rbp), %rdi
leaq 0x21966(%rip), %rsi     # 0x36e2a
callq 0x4280
cmpq $0x0, %rax
je 0x154da
leaq 0x1fd6a(%rip), %rax     # 0x35240
movq %rax, -0x30(%rbp)
jmp 0x15549
movq -0x28(%rbp), %rdi
leaq 0x1fd4c(%rip), %rsi     # 0x35233
movl $0x8, %edx
callq 0x4090
cmpl $0x0, %eax
jne 0x15517
leaq 0x20b27(%rip), %rdi     # 0x36024
movl $0x1, %esi
callq 0x14f40
movq %rax, -0x30(%rbp)
movl $0x1, 0x3c9d3(%rip)     # 0x51ee8
jmp 0x15547
movq -0x28(%rbp), %rdi
movl $0x3a, %esi
callq 0x4110
movq %rax, -0x30(%rbp)
cmpq $0x0, %rax
je 0x1553d
movq -0x30(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x30(%rbp)
jmp 0x15545
movq -0x28(%rbp), %rax
movq %rax, -0x30(%rbp)
jmp 0x15547
jmp 0x15549
movq -0x30(%rbp), %rdi
movl $0x3b, %esi
callq 0x4110
cmpq $0x0, %rax
jne 0x1557d
movq -0x30(%rbp), %rdi
leaq 0x20ac1(%rip), %rsi     # 0x36029
callq 0x4280
cmpq $0x0, %rax
jne 0x1557d
movq -0x30(%rbp), %rax
movq %rax, -0x20(%rbp)
jmp 0x155d7
movq -0x30(%rbp), %rsi
leaq 0x37248(%rip), %rdi     # 0x4c7d0
callq 0x40a0
jmp 0x155f0
movq -0x20(%rbp), %rdi
leaq 0x1fcab(%rip), %rsi     # 0x35245
movl $0x4, %edx
callq 0x4090
cmpl $0x0, %eax
je 0x155c3
movq -0x20(%rbp), %rdi
leaq 0x254fa(%rip), %rsi     # 0x3aaae
movl $0x7, %edx
callq 0x4090
cmpl $0x0, %eax
jne 0x155d5
jmp 0x155c5
movq -0x8(%rbp), %rdi
movl $0x200, %esi            # imm = 0x200
callq 0x141c0
jmp 0x15607
jmp 0x155d7
movq -0x20(%rbp), %rdx
leaq 0x371ee(%rip), %rdi     # 0x4c7d0
leaq 0x20a43(%rip), %rsi     # 0x3602c
movb $0x0, %al
callq 0x4260
leaq 0x371d9(%rip), %rdi     # 0x4c7d0
callq 0x10b40
movq -0x8(%rbp), %rdi
xorl %esi, %esi
callq 0x141c0
jmp 0x15609
jmp 0x1560b
jmp 0x1560d
cmpl $0x0, 0x3c8d0(%rip)     # 0x51ee4
je 0x15672
cmpl $0x0, 0x38683(%rip)     # 0x4dca0
jne 0x15634
movq -0x20(%rbp), %rdi
leaq 0x25484(%rip), %rsi     # 0x3aaae
callq 0x4180
cmpl $0x0, %eax
jne 0x15655
movl 0x3c8aa(%rip), %edx     # 0x51ee4
movq -0x28(%rbp), %rcx
leaq 0x3718b(%rip), %rdi     # 0x4c7d0
leaq 0x209e5(%rip), %rsi     # 0x36031
movb $0x0, %al
callq 0x4260
jmp 0x15670
movl 0x3c889(%rip), %edx     # 0x51ee4
leaq 0x3716e(%rip), %rdi     # 0x4c7d0
leaq 0x209d7(%rip), %rsi     # 0x36040
movb $0x0, %al
callq 0x4260
jmp 0x156a2
movq -0x20(%rbp), %rdi
leaq 0x25431(%rip), %rsi     # 0x3aaae
callq 0x4180
cmpl $0x0, %eax
jne 0x156a0
movq -0x28(%rbp), %rdx
leaq 0x3713e(%rip), %rdi     # 0x4c7d0
leaq 0x209b8(%rip), %rsi     # 0x36051
movb $0x0, %al
callq 0x4260
jmp 0x156a2
leaq 0x37127(%rip), %rdi     # 0x4c7d0
callq 0x10b40
leaq 0x327bb(%rip), %rax     # 0x47e70
cmpl $0x0, (%rax)
je 0x156d1
cmpl $0x0, 0x385db(%rip)     # 0x4dc9c
jne 0x156d1
cmpl $0x0, 0x34ec6(%rip)     # 0x4a590
jne 0x156d1
jmp 0x1520b
jmp 0x156d3
callq 0x150e0
movq 0x32e61(%rip), %rdi     # 0x48540
callq 0x41f0
addq $0x50, %rsp
popq %rbp
retq
nopw (%rax,%rax)