// File: /workspace/github_c_makefile_star2_O1/lucvoo[P]sparse-dev/pre-process.c
// Function: do_handle_define
static int do_handle_define(struct stream *stream, struct token **line, struct token *token, int attr)
{
	struct token *arglist, *expansion;
	struct token *left = token->next;
	struct ident *name;

	if (token_type(left) != TOKEN_IDENT) {
		sparse_error(token->pos, "expected identifier to 'define'");
		return 1;
	}

	name = left->ident;

	arglist = NULL;
	expansion = left->next;
	if (!expansion->pos.whitespace) {
		if (match_op(expansion, '(')) {
			arglist = expansion;
			expansion = parse_arguments(expansion);
			if (!expansion)
				return 1;
		} else if (!eof_token(expansion)) {
			warning(expansion->pos,
				"no whitespace before object-like macro body");
		}
	}

	return do_define(left->pos, token, name, arglist, expansion, attr);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %r14
movq 0x8(%rdi), %rbp
movl (%rbp), %eax
andl $0x3f, %eax
cmpl $0x3, %eax
jne 0x208b9
movl %esi, %ebx
movq 0x8(%rbp), %r12
movq 0x10(%rbp), %r15
movq (%r12), %rdi
btl $0x15, %edi
jb 0x208f8
movl %edi, %eax
andl $0x3f, %eax
cmpl $0x12, %eax
jne 0x208de
cmpl $0x28, 0x10(%r12)
jne 0x208de
movq 0x8(%r12), %rax
orq $0x1b, %rdi
movq %rdi, (%r12)
andl $0x80000000, 0x10(%r12) # imm = 0x80000000
movq (%rax), %rdi
movl %edi, %edx
andl $0x3f, %edx
cmpq $0x12, %rdx
je 0x209f0
cmpl $0x3, %edx
jne 0x20924
movq 0x10(%rax), %rcx
cmpq 0x40788(%rip), %rcx     # 0x60fb8
je 0x208ad
leaq 0x44bef(%rip), %rcx     # 0x65428
movl 0x10(%r12), %edx
leal 0x1(%rdx), %esi
andl $0x3ff, %esi            # imm = 0x3FF
andl $0xfffffc00, %edx       # imm = 0xFFFFFC00
orl %esi, %edx
movl %edx, 0x10(%r12)
testl %esi, %esi
je 0x20af8
movq 0x8(%rax), %r13
movq (%r13), %rsi
movl %esi, %edx
andl $0x3f, %edx
cmpl $0x12, %edx
jne 0x20a73
movl 0x10(%r13), %edx
cmpl $0x2c, %edx
jne 0x20a0f
orq $0x1b, %rsi
movq %rsi, (%r13)
andl $0x80000000, %edx       # imm = 0x80000000
movl %edx, 0x10(%r13)
movq 0x8(%r13), %rax
movq (%rax), %rdi
movl %edi, %edx
andl $0x3f, %edx
cmpq $0x3, %rdx
jne 0x20ac5
cmpq %rcx, 0x10(%rax)
jne 0x20839
leaq 0x26841(%rip), %rsi     # 0x470f5
jmp 0x20add
movq (%r14), %rdi
leaq 0x2677f(%rip), %rsi     # 0x47042
xorl %eax, %eax
callq 0x11a38
movl $0x1, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x66cfb(%rip), %r13     # 0x875e0
cmpq %r13, %r12
je 0x208fb
leaq 0x26771(%rip), %rsi     # 0x47062
xorl %eax, %eax
callq 0x118b4
movq %r12, %r13
xorl %r12d, %r12d
movq (%rbp), %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
movq %r13, %r8
movl %ebx, %r9d
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x1eef7
movq %rax, %rcx
movq %r12, %rax
cmpl $0x12, %edx
jne 0x209c1
cmpl $0x117, 0x10(%rcx)      # imm = 0x117
jne 0x209c1
movq 0x8(%rcx), %rax
andq $-0x40, %rdi
orq $0x3, %rdi
movq %rdi, (%rcx)
leaq 0x44ad2(%rip), %rdx     # 0x65428
movq %rdx, 0x10(%rcx)
movl (%rax), %edx
andl $0x3f, %edx
cmpl $0x12, %edx
jne 0x20a6e
cmpl $0x29, 0x10(%rax)
jne 0x20a6e
movl 0x10(%r12), %edx
leal 0x1(%rdx), %esi
andl $0x3ff, %esi            # imm = 0x3FF
andl $0xfffffc00, %edx       # imm = 0xFFFFFC00
orl %esi, %edx
movl %edx, 0x10(%r12)
testl %esi, %esi
je 0x20af5
movq (%rax), %rdx
movq 0x8(%rax), %r13
andq $-0x40, %rdx
orq $0x1b, %rdx
movq %rdx, (%rax)
movl $0x80000000, %edx       # imm = 0x80000000
andl 0x10(%rax), %edx
orl $0x40000000, %edx       # imm = 0x40000000
movl %edx, 0x10(%rax)
movq 0x8(%rcx), %rax
jmp 0x20ab8
cmpq 0x40510(%rip), %rcx     # 0x60ed8
je 0x20ad3
cmpl $0x12, %edx
jne 0x20a69
cmpl $0x2c, 0x10(%rcx)
movq %rcx, %r13
jne 0x20a7c
leaq 0x266a3(%rip), %rsi     # 0x4708e
jmp 0x20add
cmpl $0x29, 0x10(%rax)
jne 0x2081c
movq 0x8(%rax), %r13
leaq 0x66bdb(%rip), %rax     # 0x875e0
movq %rax, 0x8(%r12)
jmp 0x20ae7
cmpl $0x29, %edx
je 0x20a9e
cmpl $0x117, %edx            # imm = 0x117
jne 0x20a73
movq 0x8(%r13), %rcx
movl (%rcx), %edi
andl $0x3f, %edi
cmpl $0x12, %edi
jne 0x20ad0
cmpl $0x29, 0x10(%rcx)
jne 0x20ad0
orq $0x1b, %rsi
movq %rsi, (%r13)
andl $0x80000000, %edx       # imm = 0x80000000
orl $0x40000000, %edx       # imm = 0x40000000
movl %edx, 0x10(%r13)
movq 0x8(%rax), %rax
leaq 0x66b81(%rip), %rdx     # 0x875e0
movq %rdx, 0x8(%rax)
movq 0x8(%rcx), %r13
jmp 0x20ae7
movq %rcx, %r13
jmp 0x20a7c
movq %rcx, %rax
jmp 0x20ad3
cmpq 0x4045e(%rip), %r13     # 0x60ed8
je 0x20ad3
movq %r13, %rdi
callq 0x2e5c0
movq (%r13), %rdi
leaq 0x26616(%rip), %rsi     # 0x470a5
xorl %r13d, %r13d
movq %rax, %rdx
xorl %eax, %eax
callq 0x11a38
jmp 0x20ae7
orq $0x1b, %rsi
movq %rsi, (%r13)
andl $0x80000000, %edx       # imm = 0x80000000
movl %edx, 0x10(%r13)
movq 0x8(%r13), %r13
movq 0x8(%rax), %rax
leaq 0x66b21(%rip), %rcx     # 0x875e0
movq %rcx, 0x8(%rax)
jmp 0x20ae7
movq %rax, %rcx
movq %r13, %rax
jmp 0x2092a
movq %r13, %rax
movq (%rax), %rdi
leaq 0x265f4(%rip), %rsi     # 0x470d1
xorl %r13d, %r13d
xorl %eax, %eax
callq 0x11a38
testq %r13, %r13
jne 0x208fe
jmp 0x208ca
movq %rcx, %rax
movq (%rax), %rdi
leaq 0x26638(%rip), %rsi     # 0x4713a
jmp 0x20add