// File: /workspace/github_c_makefile_star2_O0/nimble-code[P]gh_cpp/Src/gh_cpp1.c
// Function: purge_body
static void
purge_body(TS *s, TS *x, MD *m, TS *b)
{	TS *aa;
	ML *ml;
	ARL *ap;	/* actual parameter - could be list */
	int w, original;
	char nm[MAXIN];	/* scratch */

	if (!b) return;

	purge_body(s, x, m, b->nxt);

	switch (b->tok) {
	case ARG:
		if (!saa)
		{	fprintf(stderr, "%s,%d: cannot find argument for %s\n",
				filename, lineno, b->name);
			break;
		}
		original = ((b->nxt
		&&   b->nxt->nxt
		&&   b->nxt->tok == CHAR && b->nxt->val == '#'
		&&   b->nxt->nxt->tok == CHAR && b->nxt->val == '#')
		||  (b->prv
		&&   b->prv->prv
		&&   b->prv->tok == CHAR && b->prv->val == '#'
		&&   b->prv->prv->tok == CHAR && b->prv->val == '#'));

		ap = hunt_param(m, b);

		w = 1;
more1:
		if (original) aa = ap->oal; else aa = ap->al;

		original = 0; /* reuse as counter */
		for ( ; aa; aa = aa->nxt)
		{	if (original) w = aa->space;
			add_inl(aa->tok, aa->val, aa->name, w, 1);
			for (ml = aa->ml; ml; ml = ml->nxt)
				add_tag(lst, ml->m);
			original++;
		}
		if (strcmp(b->name, "__VA_ARGS__") == 0)
		{	ap = ap->nxt;
			if (ap)
			{	add_inl(CHAR, ',', "", 1, 1);
				w = 1;
				goto more1;
		}	}
		break;
	case ARGSTRING:
		if (!saa)
		{	fprintf(stderr, "%s,%d: cannot find arg for %s\n",
				filename, lineno, b->name);
			break;
		}
		ap = hunt_param(m, b);
		strcpy(nm, "\"");
more2:		for (aa = ap->oal; aa; aa = aa->nxt)
			strcat(nm, stringify(aa, ap->oal));

		if (strcmp(b->name, "__VA_ARGS__") == 0)
		{	ap = ap->nxt;
			if (ap)
			{	strcat(nm, ", ");
				goto more2;
		}	}

		strcat(nm, "\"");
		add_inl(NAME, 0, nm, b->space, 0);

		break;
	case PLAINSTRING:
		sprintf(nm, "#%s", b->name);
		add_inl(NAME, 0, nm, b->space, 0);
		break;
	case ECHAR:
	case CHAR:
	default:
		if (debugging)
		{	nested("ADD NORMAL: ");
			tokfull(b, stdout);
			printf(" (space %d)\n", b->space);
		}
		add_inl(b->tok, b->val, b->name, b->space, 1);
		break;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1060, %rsp           # imm = 0x1060
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
jne 0x8967
jmp 0x8de1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rcx
callq 0x8940
movq -0x20(%rbp), %rax
movl (%rax), %eax
addl $-0x2, %eax
movl %eax, %ecx
movq %rcx, -0x1048(%rbp)
subl $0x5, %eax
ja 0x8d7d
movq -0x1048(%rbp), %rax
leaq 0x4a37(%rip), %rcx      # 0xd3e0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
cmpq $0x0, 0xea8e(%rip)      # 0x17448
jne 0x89ee
movq 0xb635(%rip), %rax      # 0x13ff8
movq (%rax), %rdi
movq 0xb723(%rip), %rdx      # 0x140f0
movl 0xc5bd(%rip), %ecx      # 0x14f90
movq -0x20(%rbp), %rax
movq 0x8(%rax), %r8
leaq 0x87af(%rip), %rsi      # 0x11191
movb $0x0, %al
callq 0x4110
jmp 0x8de1
movq -0x20(%rbp), %rax
cmpq $0x0, 0x28(%rax)
je 0x8a4e
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rax
cmpq $0x0, 0x28(%rax)
je 0x8a4e
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rax
cmpl $0x2, (%rax)
jne 0x8a4e
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rax
cmpl $0x23, 0x4(%rax)
jne 0x8a4e
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x28(%rax), %rax
cmpl $0x2, (%rax)
jne 0x8a4e
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rcx
movb $0x1, %al
cmpl $0x23, 0x4(%rcx)
movb %al, -0x1049(%rbp)
je 0x8add
movq -0x20(%rbp), %rcx
xorl %eax, %eax
cmpq $0x0, 0x20(%rcx)
movb %al, -0x104a(%rbp)
je 0x8ad1
movq -0x20(%rbp), %rax
movq 0x20(%rax), %rcx
xorl %eax, %eax
cmpq $0x0, 0x20(%rcx)
movb %al, -0x104a(%rbp)
je 0x8ad1
movq -0x20(%rbp), %rax
movq 0x20(%rax), %rcx
xorl %eax, %eax
cmpl $0x2, (%rcx)
movb %al, -0x104a(%rbp)
jne 0x8ad1
movq -0x20(%rbp), %rax
movq 0x20(%rax), %rcx
xorl %eax, %eax
cmpl $0x23, 0x4(%rcx)
movb %al, -0x104a(%rbp)
jne 0x8ad1
movq -0x20(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x20(%rax), %rcx
xorl %eax, %eax
cmpl $0x2, (%rcx)
movb %al, -0x104a(%rbp)
jne 0x8ad1
movq -0x20(%rbp), %rax
movq 0x20(%rax), %rax
cmpl $0x23, 0x4(%rax)
sete %al
movb %al, -0x104a(%rbp)
movb -0x104a(%rbp), %al
movb %al, -0x1049(%rbp)
movb -0x1049(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x40(%rbp)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x98f0
movq %rax, -0x38(%rbp)
movl $0x1, -0x3c(%rbp)
cmpl $0x0, -0x40(%rbp)
je 0x8b17
movq -0x38(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x28(%rbp)
jmp 0x8b22
movq -0x38(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x28(%rbp)
movl $0x0, -0x40(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x8bb5
cmpl $0x0, -0x40(%rbp)
je 0x8b44
movq -0x28(%rbp), %rax
movl 0x10(%rax), %eax
movl %eax, -0x3c(%rbp)
movq -0x28(%rbp), %rax
movl (%rax), %edi
movq -0x28(%rbp), %rax
movl 0x4(%rax), %esi
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rdx
movl -0x3c(%rbp), %ecx
movl $0x1, %r8d
callq 0x99f0
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x30(%rbp)
je 0x8b9b
movq 0xe8d7(%rip), %rdi      # 0x17458
movq -0x30(%rbp), %rax
movq (%rax), %rsi
callq 0x7190
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x30(%rbp)
jmp 0x8b73
movl -0x40(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x40(%rbp)
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x28(%rbp)
jmp 0x8b29
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0x81cd(%rip), %rsi      # 0x10d91
callq 0x4100
cmpl $0x0, %eax
jne 0x8c0e
movq -0x38(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x38(%rbp)
je 0x8c0c
movl $0x2, %edi
movl $0x2c, %esi
leaq 0x8c29(%rip), %rdx      # 0x1181b
movl $0x1, %r8d
movl %r8d, %ecx
callq 0x99f0
movl $0x1, -0x3c(%rbp)
jmp 0x8b03
jmp 0x8c0e
jmp 0x8de1
cmpq $0x0, 0xe82d(%rip)      # 0x17448
jne 0x8c4f
movq 0xb3d4(%rip), %rax      # 0x13ff8
movq (%rax), %rdi
movq 0xb4c2(%rip), %rdx      # 0x140f0
movl 0xc35c(%rip), %ecx      # 0x14f90
movq -0x20(%rbp), %rax
movq 0x8(%rax), %r8
leaq 0x8572(%rip), %rsi      # 0x111b5
movb $0x0, %al
callq 0x4110
jmp 0x8de1
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x98f0
movq %rax, -0x38(%rbp)
leaq -0x1040(%rbp), %rdi
leaq 0x78bd(%rip), %rsi      # 0x1052b
callq 0x4060
movq -0x38(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x8cc2
leaq -0x1040(%rbp), %rax
movq %rax, -0x1058(%rbp)
movq -0x28(%rbp), %rdi
movq -0x38(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x9ac0
movq -0x1058(%rbp), %rdi
movq %rax, %rsi
callq 0x4160
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x28(%rbp)
jmp 0x8c7f
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0x80c0(%rip), %rsi      # 0x10d91
callq 0x4100
cmpl $0x0, %eax
jne 0x8d08
movq -0x38(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x38(%rbp)
je 0x8d06
leaq -0x1040(%rbp), %rdi
leaq 0x8d4c(%rip), %rsi      # 0x11a48
callq 0x4160
jmp 0x8c73
jmp 0x8d08
leaq -0x1040(%rbp), %rdi
leaq 0x7815(%rip), %rsi      # 0x1052b
callq 0x4160
leaq -0x1040(%rbp), %rdx
movq -0x20(%rbp), %rax
movl 0x10(%rax), %ecx
movl $0x1, %edi
xorl %r8d, %r8d
movl %r8d, %esi
callq 0x99f0
jmp 0x8de1
leaq -0x1040(%rbp), %rdi
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdx
leaq 0x8480(%rip), %rsi      # 0x111d4
movb $0x0, %al
callq 0x4170
leaq -0x1040(%rbp), %rdx
movq -0x20(%rbp), %rax
movl 0x10(%rax), %ecx
movl $0x1, %edi
xorl %r8d, %r8d
movl %r8d, %esi
callq 0x99f0
jmp 0x8de1
jmp 0x8d7d
cmpl $0x0, 0xd65c(%rip)      # 0x163e0
je 0x8dba
leaq 0x844b(%rip), %rdi      # 0x111d8
callq 0x8840
movq -0x20(%rbp), %rdi
movq 0xb233(%rip), %rax      # 0x13fd0
movq (%rax), %rsi
callq 0x57e0
movq -0x20(%rbp), %rax
movl 0x10(%rax), %esi
leaq 0x8432(%rip), %rdi      # 0x111e5
movb $0x0, %al
callq 0x40a0
movq -0x20(%rbp), %rax
movl (%rax), %edi
movq -0x20(%rbp), %rax
movl 0x4(%rax), %esi
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdx
movq -0x20(%rbp), %rax
movl 0x10(%rax), %ecx
movl $0x1, %r8d
callq 0x99f0
addq $0x1060, %rsp           # imm = 0x1060
popq %rbp
retq
nopw (%rax,%rax)