// File: /workspace/github_c_makefile_star2_O2/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 0x244bd(%rip), %rax     # 0x369d8
cmpl $0x0, (%rax)
je 0x1273d
pushq %r14
pushq %rbx
subq $0x808, %rsp            # imm = 0x808
pushq $0x1
popq %rdi
callq 0xdc29
leaq 0x1012d(%rip), %rdi     # 0x2266a
callq 0xd07c
incl 0x30c58(%rip)           # 0x431a0
cmpl $0x0, 0x30c55(%rip)     # 0x431a4
setne %al
cmpl $0x0, 0x30c4f(%rip)     # 0x431a8
setne %cl
leaq 0x24731(%rip), %r14     # 0x36c94
testb %cl, %al
jne 0x12571
cmpl $0x0, (%r14)
je 0x126a7
leaq 0x1051f(%rip), %rdi     # 0x22a97
callq 0xd07c
movl 0x30c1d(%rip), %edx     # 0x431a0
cmpl $0x2, %edx
jl 0x125a4
leaq 0x190a8(%rip), %rsi     # 0x2b637
movq %rsp, %rbx
movq %rbx, %rdi
xorl %eax, %eax
callq 0x42a0
movq %rbx, %rdi
callq 0xd07c
leaq 0x109be(%rip), %rdi     # 0x22f69
callq 0xd07c
cmpl $0x0, (%r14)
je 0x125ea
leaq 0x21dd3(%rip), %rdi     # 0x34390
leaq 0xfee7(%rip), %rsi      # 0x224ab
pushq $0x5
popq %rdx
callq 0x4250
testl %eax, %eax
je 0x125ea
leaq 0x21db9(%rip), %rdi     # 0x34390
leaq 0xfec7(%rip), %rsi      # 0x224a5
pushq $0xb
popq %rdx
callq 0x4250
testl %eax, %eax
jne 0x125f6
leaq 0xfec0(%rip), %rdi      # 0x224b1
callq 0xd07c
leaq 0x10975(%rip), %rsi     # 0x22f72
leaq 0x21d8c(%rip), %rdx     # 0x34390
movq %rsp, %rbx
movq %rbx, %rdi
xorl %eax, %eax
callq 0x42a0
movq %rbx, %rdi
callq 0xd07c
leaq 0x24410(%rip), %rax     # 0x36a30
cmpl $0x0, (%rax)
jne 0x12631
leaq 0x10959(%rip), %rdi     # 0x22f85
callq 0xd07c
leaq 0x24658(%rip), %rax     # 0x36c90
cmpl $0x0, (%rax)
jne 0x12655
leaq 0x21d4c(%rip), %rdi     # 0x34390
leaq 0x11a6d(%rip), %rsi     # 0x240b8
callq 0x42d0
testq %rax, %rax
je 0x12661
leaq 0x1093b(%rip), %rdi     # 0x22f97
callq 0xd07c
cmpl $0x0, (%r14)
je 0x1269b
leaq 0x21d22(%rip), %rdi     # 0x34390
leaq 0xfe36(%rip), %rsi      # 0x224ab
pushq $0x5
popq %rdx
callq 0x4250
testl %eax, %eax
je 0x1269b
leaq 0x21d08(%rip), %rdi     # 0x34390
leaq 0xfe16(%rip), %rsi      # 0x224a5
pushq $0xb
popq %rdx
callq 0x4250
testl %eax, %eax
jne 0x126a7
leaq 0xff80(%rip), %rdi      # 0x22622
callq 0xd07c
movq 0x24cc2(%rip), %rcx     # 0x37370
testq %rcx, %rcx
je 0x126ed
leaq 0x108f5(%rip), %rdi     # 0x22faf
pushq $0x13
popq %rsi
pushq $0x1
popq %rbx
movq %rbx, %rdx
callq 0x42c0
movq 0x24ca1(%rip), %rdi     # 0x37370
callq 0x1ce25
movq 0x24c95(%rip), %rcx     # 0x37370
leaq 0x10b56(%rip), %rdi     # 0x23238
pushq $0x3
popq %rsi
movq %rbx, %rdx
callq 0x42c0
leaq 0x21ac4(%rip), %rax     # 0x341b8
movq (%rax), %rdi
leaq 0xebc3(%rip), %rsi      # 0x212c1
callq 0x41b0
testl %eax, %eax
leaq 0x114e7(%rip), %rax     # 0x23bf3
leaq 0x1148c(%rip), %rdi     # 0x23b9f
cmoveq %rax, %rdi
callq 0xd07c
xorl %eax, %eax
movb %al, 0x21c6e(%rip)      # 0x34392
movw $0x2d2d, 0x21c63(%rip)  # imm = 0x2D2D
movb %al, 0x24c4d(%rip)      # 0x37380
addq $0x808, %rsp            # imm = 0x808
popq %rbx
popq %r14
retq