// File: /workspace/github_c_makefile_star2_O2/michaelforney[P]cproc/pp.c
// Function: expand
static bool
expand(struct token *t)
{
	struct macro *m;
	bool space;

	if (t->kind != TIDENT)
		return false;
	m = macroget(t->lit);
	if (!m || m->hide)
		t->hide = true;
	if (t->hide)
		return false;
	space = t->space;
	if (m->kind == MACROFUNC) {
		if (!peekparen())
			return false;
		expandfunc(m);
	}
	ctxpush(m->token, m->ntoken, m, space);
	m->hide = true;
	++macrodepth;
	return true;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x98, %rsp
cmpl $0x4, (%rdi)
jne 0x9d62
movq %rdi, %rbx
movq 0x20(%rdi), %r14
movq %r14, %rdi
callq 0x3090
leaq 0x60(%rsp), %r15
movq %r15, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x995c
leaq 0x12280(%rip), %rdi     # 0x1bfc8
movq %r15, %rsi
callq 0x9be1
testq %rax, %rax
je 0x9d5e
movq %rax, %r13
cmpb $0x1, 0x10(%rax)
jne 0x9d78
movb $0x1, 0x4(%rbx)
xorl %ebx, %ebx
movl %ebx, %eax
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
testb $0x1, 0x4(%rbx)
jne 0x9d62
movb 0x5(%rbx), %bpl
cmpl $0x1, (%r13)
jne 0xa13b
callq 0xa2b0
testq %rax, %rax
je 0x9db5
cmpl $0x42, (%rax)
je 0x9def
leaq 0x12275(%rip), %rdi     # 0x1c018
pushq $0x18
popq %rsi
callq 0xd1dc
addq $-0x28, (%rax)
incq 0x8(%rax)
jmp 0x9d62
andq $0x0, 0x12283(%rip)     # 0x1c040
leaq 0x12274(%rip), %rbx     # 0x1c038
pushq $0x28
popq %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0xd12f
movq %rax, %r15
movq %rax, %rdi
callq 0xa44a
movl (%r15), %eax
cmpl $0x2, %eax
je 0x9dc8
cmpl $0x42, %eax
jne 0xa162
movb %bpl, 0xf(%rsp)
movq 0x12235(%rip), %rbp     # 0x1c030
xorps %xmm0, %xmm0
leaq 0x80(%rsp), %rax
movaps %xmm0, (%rax)
andq $0x0, 0x10(%rax)
movq 0x20(%r13), %rsi
pushq $0x38
popq %rdx
xorl %edi, %edi
callq 0xd0af
movq %rax, 0x18(%rsp)
callq 0x9ce7
movq %rax, %r15
leaq 0x40(%rsp), %r14
pushq $0x1
popq %rbx
leaq 0x9c62(%rip), %r12      # 0x13a9a
xorl %ecx, %ecx
movq %r13, 0x28(%rsp)
movq 0x20(%r13), %rax
cmpq %rax, %rcx
jae 0xa0c4
movq 0x18(%r13), %rax
movq %rcx, %r13
shlq $0x4, %r13
testb $0x2, 0x8(%rax,%r13)
movq %rcx, 0x20(%rsp)
je 0x9e93
xorps %xmm0, %xmm0
movaps %xmm0, 0x40(%rsp)
andq $0x0, 0x50(%rsp)
movq %r14, %rdi
leaq 0x9bb4(%rip), %rsi      # 0x13a30
movq %rbx, %rdx
movq %rax, 0x10(%rsp)
callq 0xd1b5
movq 0x10(%rsp), %rax
movq 0x20(%rsp), %rcx
addq %r13, %rax
addq $0x8, %rax
movq %rax, 0x10(%rsp)
imulq $0x38, %rcx, %rax
movq 0x18(%rsp), %rcx
leaq (%rcx,%rax), %rdx
movq %rdx, 0x30(%rsp)
andq $0x0, 0x8(%rcx,%rax)
movq $0x0, 0x38(%rsp)
cmpl $0x1, (%r15)
jne 0x9ed8
leaq 0x8(%r15), %rdi
leaq 0x9b61(%rip), %rsi      # 0x13a32
xorl %eax, %eax
callq 0xc536
movq 0x12151(%rip), %r13     # 0x1c030
cmpq %rbp, %r13
ja 0x9fe2
movl (%r15), %eax
movq 0x38(%rsp), %rdx
testq %rdx, %rdx
je 0x9f01
cmpl $0x43, %eax
je 0x9f20
cmpl $0x42, %eax
je 0x9f19
jmp 0x9f26
cmpl $0x42, %eax
je 0x9f19
cmpl $0x6e, %eax
je 0xa021
cmpl $0x43, %eax
jne 0x9f26
jmp 0xa037
incq %rdx
pushq $0x42
jmp 0x9f25
decq %rdx
pushq $0x43
popq %rax
movq 0x10(%rsp), %rcx
testb $0x2, (%rcx)
movq %rdx, 0x38(%rsp)
je 0x9fdf
cmpl $0x2, %eax
je 0x9f45
cmpb $0x0, 0x5(%r15)
je 0x9f71
movq 0x48(%rsp), %rcx
cmpq $0x2, %rcx
jb 0x9f71
movq 0x40(%rsp), %rdx
cmpb $0x20, -0x1(%rdx,%rcx)
je 0x9f71
movq %r14, %rdi
leaq 0xb337(%rip), %rsi      # 0x1529d
movq %rbx, %rdx
callq 0xd1b5
movl (%r15), %eax
movq 0x20(%r15), %rbp
testq %rbp, %rbp
jne 0x9f87
movl %eax, %ecx
leaq 0x1168d(%rip), %rdx     # 0x1b610
movq (%rdx,%rcx,8), %rbp
andl $-0x2, %eax
cmpl $0x6, %eax
jne 0x9fc4
movzbl (%rbp), %eax
cmpl $0x22, %eax
je 0x9fa3
cmpl $0x5c, %eax
je 0x9fa3
testl %eax, %eax
jne 0x9fb1
jmp 0x9fdf
movq %r14, %rdi
movq %r12, %rsi
movq %rbx, %rdx
callq 0xd1b5
movq %r14, %rdi
movq %rbp, %rsi
movq %rbx, %rdx
callq 0xd1b5
incq %rbp
jmp 0x9f8f
testq %rbp, %rbp
je 0x9fdf
movq %rbp, %rdi
callq 0x3090
movq %r14, %rdi
movq %rbp, %rsi
movq %rax, %rdx
callq 0xd1b5
movq %r13, %rbp
movq 0x10(%rsp), %rax
testb $0x1, (%rax)
je 0xa014
movq %r15, %rdi
callq 0x9d09
testb %al, %al
jne 0xa014
leaq 0x80(%rsp), %rdi
movq %r15, %rsi
pushq $0x28
popq %rdx
callq 0xd1b5
movq 0x30(%rsp), %rax
incq 0x8(%rax)
callq 0x9ce7
movq %rax, %r15
jmp 0x9ec0
movq 0x10(%rsp), %rcx
movl (%rcx), %ecx
testb $0x4, %cl
je 0xa03e
pushq $0x6e
popq %rax
xorl %edx, %edx
jmp 0x9f26
movq 0x10(%rsp), %rcx
movl (%rcx), %ecx
testb $0x2, %cl
je 0xa094
movq %r14, %rdi
leaq 0x99e3(%rip), %rsi      # 0x13a30
pushq $0x2
popq %rdx
callq 0xd1b5
xorps %xmm0, %xmm0
leaq 0x62(%rsp), %rax
movups %xmm0, (%rax)
andq $0x0, 0x10(%rax)
movq 0x40(%rsp), %rax
movq 0x30(%rsp), %rcx
movl $0x7, 0x10(%rcx)
andw $0x0, 0x14(%rcx)
movups 0x60(%rsp), %xmm0
movups 0x6a(%rsp), %xmm1
movups %xmm0, 0x16(%rcx)
movups %xmm1, 0x20(%rcx)
movq %rax, 0x30(%rcx)
movl (%r15), %eax
cmpl $0x43, %eax
je 0xa0b6
callq 0x9ce7
movq %rax, %r15
movq 0x20(%rsp), %rcx
incq %rcx
movq %r13, %rbp
movq 0x28(%rsp), %r13
jmp 0x9e3f
movq 0x28(%rsp), %r13
movq 0x20(%r13), %rax
movq 0x20(%rsp), %rcx
incq %rcx
cmpq %rax, %rcx
movb 0xf(%rsp), %bpl
jae 0xa0e7
leaq 0x8(%r15), %rdi
movq 0x8(%r13), %rdx
leaq 0x9974(%rip), %rsi      # 0x13a54
xorl %eax, %eax
callq 0xc536
cmpl $0x43, (%r15)
je 0xa106
addq $0x8, %r15
movq 0x8(%r13), %rdx
leaq 0x997c(%rip), %rsi      # 0x13a78
movq %r15, %rdi
xorl %eax, %eax
callq 0xc536
movq 0x80(%rsp), %rax
movq 0x20(%r13), %rcx
movq 0x18(%rsp), %rdx
addq $0x8, %rdx
subq $0x1, %rcx
jb 0xa132
movq %rax, -0x8(%rdx)
imulq $0x28, (%rdx), %rsi
addq %rsi, %rax
addq $0x38, %rdx
jmp 0xa11b
movq 0x18(%rsp), %rax
movq %rax, 0x28(%r13)
movq 0x30(%r13), %rdi
movq 0x38(%r13), %rsi
movzbl %bpl, %ecx
movq %r13, %rdx
callq 0xa22c
movb $0x1, 0x10(%r13)
incq 0x11ed5(%rip)           # 0x1c030
movb $0x1, %bl
jmp 0x9d64
movq 0x11ecf(%rip), %rdi     # 0x1c038
movq 0x11ed0(%rip), %rax     # 0x1c040
xorl %ebx, %ebx
xorl %edx, %edx
divq %r14
movzbl 0x5(%rdi), %ecx
movq %rax, %rsi
xorl %edx, %edx
callq 0xa22c
jmp 0x9d64