// File: /workspace/github_c_makefile_star2_O0/nimble-code[P]Modex/Src/xtract.c
// Function: doreturn
void
doreturn(int fromwhere)
{	char sbuf[2048];

	if (!visu) return;

	do_locals(1);	/* write local decls of last procedure */

	vis_direct("\n");

	nreturns++;
	if ((sawreturn && needreturn) || extended)
	{	vis_direct("Return");
		if (nreturns > 1)
		{	sprintf(sbuf, "%d", nreturns);
			vis_direct(sbuf);
		}
		vis_direct(":	skip;\n");
		if (!extended
		|| strcmp(fct_name, "main") == 0
		|| strcmp(fct_name, "modex_main") == 0)
			vis_direct("#if 0\n");
		sprintf(sbuf, "\tret_p_%s!lck_id;\n", fct_name);
		vis_direct(sbuf);
		
		if (!dynamic)
		{	vis_direct("\tgoto endRestart\n");
		}
		if (flike
#ifdef SV_COMP
		||  strstr(fct_name, "_atomic_")
#endif
		   )
		{	vis_direct(" } /* function like */\n");
		}
		if (!extended
		|| strcmp(fct_name, "main") == 0
		|| strcmp(fct_name, "modex_main") == 0)
			vis_direct("#endif\n");
	}
	if (fp)
	{	fprintf(fp, "\n/* function-calls:");
		show_fbase(fp);
		fprintf(fp, "*/\n");
	}

	if (strcmp(wanttype, "body") != 0)
		vis_direct("}\n");
	else
		vis_direct(";\n");

	if (0) { 
		sprintf(sbuf, "/* from %d */\n", fromwhere);
		vis_direct(sbuf);
	}

	strcpy(fct_name, "--");
	vis_start();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x810, %rsp            # imm = 0x810
movl %edi, -0x4(%rbp)
leaq 0x30afb(%rip), %rax     # 0x47ba0
cmpl $0x0, (%rax)
jne 0x170af
jmp 0x172ce
movl $0x1, %edi
callq 0x11b50
leaq 0x1e997(%rip), %rdi     # 0x35a57
callq 0x10b40
movl 0x3d2a5(%rip), %eax     # 0x54370
addl $0x1, %eax
movl %eax, 0x3d29c(%rip)     # 0x54370
cmpl $0x0, 0x3d299(%rip)     # 0x54374
je 0x170e6
cmpl $0x0, 0x3d294(%rip)     # 0x54378
jne 0x170f6
leaq 0x30d77(%rip), %rax     # 0x47e64
cmpl $0x0, (%rax)
je 0x17241
leaq 0x1eda2(%rip), %rdi     # 0x35e9f
callq 0x10b40
cmpl $0x1, 0x3d267(%rip)     # 0x54370
jle 0x17132
leaq -0x810(%rbp), %rdi
movl 0x3d258(%rip), %edx     # 0x54370
leaq 0x27b81(%rip), %rsi     # 0x3eca0
movb $0x0, %al
callq 0x4260
leaq -0x810(%rbp), %rdi
callq 0x10b40
leaq 0x1f308(%rip), %rdi     # 0x36441
callq 0x10b40
leaq 0x30d1f(%rip), %rax     # 0x47e64
cmpl $0x0, (%rax)
je 0x1717a
leaq 0x2e20f(%rip), %rdi     # 0x45360
leaq 0x1e740(%rip), %rsi     # 0x35898
callq 0x4180
cmpl $0x0, %eax
je 0x1717a
leaq 0x2e1f7(%rip), %rdi     # 0x45360
leaq 0x1e722(%rip), %rsi     # 0x35892
callq 0x4180
cmpl $0x0, %eax
jne 0x17186
leaq 0x1e71d(%rip), %rdi     # 0x3589e
callq 0x10b40
leaq -0x810(%rbp), %rdi
leaq 0x1f2b6(%rip), %rsi     # 0x3644a
leaq 0x2e1c5(%rip), %rdx     # 0x45360
movb $0x0, %al
callq 0x4260
leaq -0x810(%rbp), %rdi
callq 0x10b40
leaq 0x30a4b(%rip), %rax     # 0x47c00
cmpl $0x0, (%rax)
jne 0x171c6
leaq 0x1f29c(%rip), %rdi     # 0x3645d
callq 0x10b40
leaq 0x30c93(%rip), %rax     # 0x47e60
cmpl $0x0, (%rax)
jne 0x171eb
leaq 0x2e187(%rip), %rdi     # 0x45360
leaq 0x2040a(%rip), %rsi     # 0x375ea
callq 0x4280
cmpq $0x0, %rax
je 0x171f7
leaq 0x1f27d(%rip), %rdi     # 0x3646f
callq 0x10b40
leaq 0x30c66(%rip), %rax     # 0x47e64
cmpl $0x0, (%rax)
je 0x17233
leaq 0x2e156(%rip), %rdi     # 0x45360
leaq 0x1e687(%rip), %rsi     # 0x35898
callq 0x4180
cmpl $0x0, %eax
je 0x17233
leaq 0x2e13e(%rip), %rdi     # 0x45360
leaq 0x1e669(%rip), %rsi     # 0x35892
callq 0x4180
cmpl $0x0, %eax
jne 0x1723f
leaq 0x1e7d5(%rip), %rdi     # 0x35a0f
callq 0x10b40
jmp 0x17241
cmpq $0x0, 0x312f7(%rip)     # 0x48540
je 0x17281
movq 0x312ee(%rip), %rdi     # 0x48540
leaq 0x1f22e(%rip), %rsi     # 0x36487
movb $0x0, %al
callq 0x4190
movq 0x312d9(%rip), %rdi     # 0x48540
callq 0x2e3d0
movq 0x312cd(%rip), %rdi     # 0x48540
leaq 0x1f4a7(%rip), %rsi     # 0x36721
movb $0x0, %al
callq 0x4190
leaq 0x2df00(%rip), %rax     # 0x45188
movq (%rax), %rdi
leaq 0x1d163(%rip), %rsi     # 0x343f5
callq 0x4180
cmpl $0x0, %eax
je 0x172aa
leaq 0x1fe17(%rip), %rdi     # 0x370ba
callq 0x10b40
jmp 0x172b6
leaq 0x1fe5d(%rip), %rdi     # 0x3710e
callq 0x10b40
leaq 0x2e0a3(%rip), %rdi     # 0x45360
leaq 0x1d98f(%rip), %rsi     # 0x34c53
callq 0x40a0
callq 0x141b0
addq $0x810, %rsp            # imm = 0x810
popq %rbp
retq
nopw (%rax,%rax)