// File: /workspace/github_c_makefile_star2_O3/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:
leaq 0x24b03(%rip), %rax     # 0x389d8
cmpl $0x0, (%rax)
je 0x14110
pushq %r14
pushq %rbx
subq $0x808, %rsp            # imm = 0x808
movl $0x1, %edi
callq 0xf663
leaq 0x10871(%rip), %rdi     # 0x2476a
callq 0xeab6
incl 0x3129c(%rip)           # 0x451a0
cmpl $0x0, 0x31299(%rip)     # 0x451a4
setne %al
cmpl $0x0, 0x31293(%rip)     # 0x451a8
setne %cl
leaq 0x24d75(%rip), %r14     # 0x38c94
testb %cl, %al
jne 0x13f2d
cmpl $0x0, (%r14)
je 0x14075
leaq 0x10c63(%rip), %rdi     # 0x24b97
callq 0xeab6
movl 0x31261(%rip), %edx     # 0x451a0
cmpl $0x2, %edx
jl 0x13f60
leaq 0x197cc(%rip), %rsi     # 0x2d717
movq %rsp, %rbx
movq %rbx, %rdi
xorl %eax, %eax
callq 0x42a0
movq %rbx, %rdi
callq 0xeab6
leaq 0x11102(%rip), %rdi     # 0x25069
callq 0xeab6
cmpl $0x0, (%r14)
je 0x13faf
movl $0x6e69616d, %eax       # imm = 0x6E69616D
xorl 0x22413(%rip), %eax     # 0x36390
movzbl 0x22410(%rip), %ecx     # 0x36394
orl %eax, %ecx
je 0x13faf
movabsq $0x616d5f7865646f6d, %rax # imm = 0x616D5F7865646F6D
xorq 0x223f7(%rip), %rax     # 0x36390
movabsq $0x6e69616d5f7865, %rcx # imm = 0x6E69616D5F7865
xorq 0x223e9(%rip), %rcx     # 0x36393
orq %rax, %rcx
jne 0x13fbb
leaq 0x105fb(%rip), %rdi     # 0x245b1
callq 0xeab6
leaq 0x110b0(%rip), %rsi     # 0x25072
leaq 0x223c7(%rip), %rdx     # 0x36390
movq %rsp, %rbx
movq %rbx, %rdi
xorl %eax, %eax
callq 0x42a0
movq %rbx, %rdi
callq 0xeab6
leaq 0x24a4b(%rip), %rax     # 0x38a30
cmpl $0x0, (%rax)
jne 0x13ff6
leaq 0x11094(%rip), %rdi     # 0x25085
callq 0xeab6
leaq 0x24c93(%rip), %rax     # 0x38c90
cmpl $0x0, (%rax)
jne 0x1401a
leaq 0x22387(%rip), %rdi     # 0x36390
leaq 0x121a8(%rip), %rsi     # 0x261b8
callq 0x42d0
testq %rax, %rax
je 0x14026
leaq 0x11076(%rip), %rdi     # 0x25097
callq 0xeab6
cmpl $0x0, (%r14)
je 0x14069
movl $0x6e69616d, %eax       # imm = 0x6E69616D
xorl 0x22359(%rip), %eax     # 0x36390
movzbl 0x22356(%rip), %ecx     # 0x36394
orl %eax, %ecx
je 0x14069
movabsq $0x616d5f7865646f6d, %rax # imm = 0x616D5F7865646F6D
xorq 0x2233d(%rip), %rax     # 0x36390
movabsq $0x6e69616d5f7865, %rcx # imm = 0x6E69616D5F7865
xorq 0x2232f(%rip), %rcx     # 0x36393
orq %rax, %rcx
jne 0x14075
leaq 0x106b2(%rip), %rdi     # 0x24722
callq 0xeab6
movq 0x252f4(%rip), %rcx     # 0x39370
testq %rcx, %rcx
je 0x140c0
leaq 0x11027(%rip), %rdi     # 0x250af
movl $0x13, %esi
movl $0x1, %edx
callq 0x42c0
movq 0x252d2(%rip), %rdi     # 0x39370
callq 0x1e9c9
movq 0x252c6(%rip), %rcx     # 0x39370
leaq 0x11287(%rip), %rdi     # 0x25338
movl $0x3, %esi
movl $0x1, %edx
callq 0x42c0
leaq 0x220f1(%rip), %rax     # 0x361b8
movq (%rax), %rdi
leaq 0xf1f0(%rip), %rsi      # 0x232c1
callq 0x41c0
testl %eax, %eax
leaq 0x11c14(%rip), %rax     # 0x25cf3
leaq 0x11bb9(%rip), %rdi     # 0x25c9f
cmoveq %rax, %rdi
callq 0xeab6
xorl %eax, %eax
movb %al, 0x2229b(%rip)      # 0x36392
movw $0x2d2d, 0x22290(%rip)  # imm = 0x2D2D
movb %al, 0x2527a(%rip)      # 0x39380
addq $0x808, %rsp            # imm = 0x808
popq %rbx
popq %r14
retq