// File: /workspace/github_c_makefile_star2_O0/nimble-code[P]Modex/Src/xtract.c
// Function: modex_for
static void
modex_for(for_node *forn, int tabs)
{	char oO[1024], *rev;
	int xtmp;

	if (!forn) return;

	if (forn->hdr.type == TN_FUNC_DEF)
	{	if (forn->test)
		{	if (forn->test->hdr.which != NODE_T)
			{	fprintf(stderr, "%s: cannot happen fct decl1\n", progname);
				exit(1);
			}

			rev = print2buf(forn->init);
			if (strlen(rev) >= sizeof(fct_type))
			{	fprintf(stderr, "%s:%d: type '%s' too long\n",
					forn->hdr.fnm, forn->hdr.line, rev);
			} else
			{	strcpy(fct_type, rev);
			}
			*rev = '\0';

			if (forn->test->hdr.type == TN_FUNC_DECL)	/* void fct(...) */
			{
				modex_any(forn->test, 0);
			} else if (forn->test->hdr.type == TN_DECL)	/* float *fct(...) */
			{
				rev = print2buf(forn->test->lnode);
				if (strlen(rev) + strlen(fct_type) >= sizeof(fct_type))
				{	fprintf(stderr, "%s:%d: type '%s %s' too long\n",
						forn->hdr.fnm, forn->hdr.line, fct_type, rev);
				} else
				{	strcat(fct_type, rev);
				}
				*rev = '\0';

				if (forn->test->rnode
				&&  forn->test->rnode->hdr.which == NODE_T
				&&  forn->test->rnode->hdr.type == TN_FUNC_DECL)
				{	modex_any(forn->test->rnode, 0);
				} else
				{	fprintf(stderr, "%s: unexpected fct decl2\n", progname);
					exit(1);
				}
			} else
			{	fprintf(stderr, "%s: cannot happen fct decl3\n", progname);
				exit(1);
			}

			if (strcmp(wanttype, "body") != 0)
			{	did_parameters = 0;
				if (strcmp(wanttype, "proctype") == 0
				||  strcmp(wanttype, "inline") == 0)
				{	do_parameters();
				}
				vis_direct(")\n{");
			}
			vis_flush((treenode *)forn);
		}
		do_locals(0);			/* prepare include file */
		ini_formals();
		modex_any(forn->stemnt,tabs+1);	/* Fct Body: */
	} else	/* FOR */
	{	linenr = forn->hdr.line;
		vis_indent(tabs, "/* for-loop: */\n");
		modex_any(forn->init,tabs);
		push_dostack(forn->incr);

		xtmp = handle_cond(forn->test, forn->stemnt, forn->incr, oO, tabs, "do\n");
		switch (xtmp) {
		case 2:
			vis_indent(tabs, "od;\n");
			break;
		case 1:
			if (forn->test)
				handle_neg(forn->test, oO, " -> break\n", ZN, tabs, "od;\n");
			else
				vis_indent(tabs, "od;\n");
			/* fall thru */
		case 0:
			break;
		}
		pop_dostack();
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x430, %rsp            # imm = 0x430
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
cmpq $0x0, -0x8(%rbp)
jne 0x1a34e
jmp 0x1a71b
movq -0x8(%rbp), %rax
cmpl $0x1, 0x1c(%rax)
jne 0x1a629
movq -0x8(%rbp), %rax
cmpq $0x0, 0x38(%rax)
je 0x1a605
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
cmpl $0x4, (%rax)
je 0x1a3a4
movq 0x2ac79(%rip), %rax     # 0x44ff8
movq (%rax), %rdi
leaq 0x2ade7(%rip), %rax     # 0x45170
movq (%rax), %rdx
leaq 0x1d2b2(%rip), %rsi     # 0x37645
movb $0x0, %al
callq 0x4190
movl $0x1, %edi
callq 0x4270
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x31740
movq %rax, -0x418(%rbp)
movq -0x418(%rbp), %rdi
callq 0x40f0
cmpq $0x200, %rax            # imm = 0x200
jb 0x1a3fc
movq 0x2ac25(%rip), %rax     # 0x44ff8
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdx
movq -0x8(%rbp), %rax
movl 0x10(%rax), %ecx
movq -0x418(%rbp), %r8
leaq 0x1d26f(%rip), %rsi     # 0x37662
movb $0x0, %al
callq 0x4190
jmp 0x1a40f
movq -0x418(%rbp), %rsi
leaq 0x2b4e6(%rip), %rdi     # 0x458f0
callq 0x40a0
movq -0x418(%rbp), %rax
movb $0x0, (%rax)
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
cmpl $0x2, 0x1c(%rax)
jne 0x1a43b
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rdi
xorl %esi, %esi
callq 0x15ad0
jmp 0x1a590
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
cmpl $0x5, 0x1c(%rax)
jne 0x1a562
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x30(%rax), %rdi
callq 0x31740
movq %rax, -0x418(%rbp)
movq -0x418(%rbp), %rdi
callq 0x40f0
movq %rax, -0x428(%rbp)
leaq 0x2b471(%rip), %rdi     # 0x458f0
callq 0x40f0
movq %rax, %rcx
movq -0x428(%rbp), %rax
addq %rcx, %rax
cmpq $0x200, %rax            # imm = 0x200
jb 0x1a4d0
movq 0x2ab58(%rip), %rax     # 0x44ff8
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdx
movq -0x8(%rbp), %rax
movl 0x10(%rax), %ecx
movq -0x418(%rbp), %r9
leaq 0x1d1bd(%rip), %rsi     # 0x3767d
leaq 0x2b429(%rip), %r8      # 0x458f0
movb $0x0, %al
callq 0x4190
jmp 0x1a4e3
movq -0x418(%rbp), %rsi
leaq 0x2b412(%rip), %rdi     # 0x458f0
callq 0x4250
movq -0x418(%rbp), %rax
movb $0x0, (%rax)
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
cmpq $0x0, 0x38(%rax)
je 0x1a534
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x38(%rax), %rax
cmpl $0x4, (%rax)
jne 0x1a534
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x38(%rax), %rax
cmpl $0x2, 0x1c(%rax)
jne 0x1a534
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x38(%rax), %rdi
xorl %esi, %esi
callq 0x15ad0
jmp 0x1a560
movq 0x2aabd(%rip), %rax     # 0x44ff8
movq (%rax), %rdi
leaq 0x2ac2b(%rip), %rax     # 0x45170
movq (%rax), %rdx
leaq 0x1d14c(%rip), %rsi     # 0x3769b
movb $0x0, %al
callq 0x4190
movl $0x1, %edi
callq 0x4270
jmp 0x1a58e
movq 0x2aa8f(%rip), %rax     # 0x44ff8
movq (%rax), %rdi
leaq 0x2abfd(%rip), %rax     # 0x45170
movq (%rax), %rdx
leaq 0x1d138(%rip), %rsi     # 0x376b5
movb $0x0, %al
callq 0x4190
movl $0x1, %edi
callq 0x4270
jmp 0x1a590
leaq 0x2abf1(%rip), %rax     # 0x45188
movq (%rax), %rdi
leaq 0x19e54(%rip), %rsi     # 0x343f5
callq 0x4180
cmpl $0x0, %eax
je 0x1a5fc
movl $0x0, 0x336ab(%rip)     # 0x4dc60
leaq 0x2abcc(%rip), %rax     # 0x45188
movq (%rax), %rdi
leaq 0x19e1f(%rip), %rsi     # 0x343e5
callq 0x4180
cmpl $0x0, %eax
je 0x1a5eb
leaq 0x2abb1(%rip), %rax     # 0x45188
movq (%rax), %rdi
leaq 0x19e0d(%rip), %rsi     # 0x343ee
callq 0x4180
cmpl $0x0, %eax
jne 0x1a5f0
callq 0x11890
leaq 0x1d0db(%rip), %rdi     # 0x376d2
callq 0x10b40
movq -0x8(%rbp), %rdi
callq 0x15110
xorl %edi, %edi
callq 0x11b50
callq 0x110a0
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rdi
movl -0xc(%rbp), %esi
addl $0x1, %esi
callq 0x15ad0
jmp 0x1a71b
movq -0x8(%rbp), %rax
movl 0x10(%rax), %eax
movl %eax, 0x378ae(%rip)     # 0x51ee4
movl -0xc(%rbp), %edi
leaq 0x1d096(%rip), %rsi     # 0x376d6
callq 0x15880
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
movl -0xc(%rbp), %esi
callq 0x15ad0
movq -0x8(%rbp), %rax
movq 0x40(%rax), %rdi
callq 0x15960
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rsi
movq 0x38(%rax), %rdi
movq 0x40(%rax), %rdx
movl -0xc(%rbp), %r8d
leaq 0x1c0a9(%rip), %r9      # 0x36726
leaq -0x410(%rbp), %rcx
callq 0x19250
movl %eax, -0x41c(%rbp)
movl -0x41c(%rbp), %eax
movl %eax, -0x42c(%rbp)
testl %eax, %eax
je 0x1a714
jmp 0x1a6a1
movl -0x42c(%rbp), %eax
subl $0x1, %eax
je 0x1a6cc
jmp 0x1a6ae
movl -0x42c(%rbp), %eax
subl $0x2, %eax
jne 0x1a716
jmp 0x1a6bb
movl -0xc(%rbp), %edi
leaq 0x1c0a2(%rip), %rsi     # 0x36767
callq 0x15880
jmp 0x1a716
movq -0x8(%rbp), %rax
cmpq $0x0, 0x38(%rax)
je 0x1a703
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rdi
leaq -0x410(%rbp), %rsi
movl -0xc(%rbp), %r8d
leaq 0x1c060(%rip), %rdx     # 0x36751
xorl %eax, %eax
movl %eax, %ecx
leaq 0x1c06b(%rip), %r9      # 0x36767
callq 0x19610
jmp 0x1a712
movl -0xc(%rbp), %edi
leaq 0x1c05a(%rip), %rsi     # 0x36767
callq 0x15880
jmp 0x1a714
jmp 0x1a716
callq 0x15b80
addq $0x430, %rsp            # imm = 0x430
popq %rbp
retq
nopw %cs:(%rax,%rax)