// File: /workspace/github_c_makefile_star2_O1/lucvoo[P]sparse-dev/expand.c
// Function: expand_preop
static int expand_preop(struct expression *expr)
{
	int cost;

	switch (expr->op) {
	case '*':
		return expand_dereference(expr);

	case '&':
		return expand_addressof(expr);

	case SPECIAL_INCREMENT:
	case SPECIAL_DECREMENT:
		/*
		 * From a type evaluation standpoint the preops are
		 * the same as the postops
		 */
		return expand_postop(expr);

	default:
		break;
	}
	cost = expand_expression(expr->unop);

	if (simplify_preop(expr))
		return 0;
	if (simplify_float_preop(expr))
		return 0;
	return cost + 1;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
movl 0x4(%rdi), %eax
cmpl $0x100, %eax            # imm = 0x100
jg 0xfe89
cmpl $0x26, %eax
je 0xfeeb
cmpl $0x2a, %eax
jne 0xfeaa
movq 0x20(%rbx), %r14
movq %r14, %rdi
callq 0xed5f
movq 0x10(%rbx), %rax
testb $0x8, 0x6b(%rax)
je 0xfdab
movq 0x8(%r14), %rdi
leaq 0x31518(%rip), %rsi     # 0x412bc
xorl %eax, %eax
callq 0x118b4
xorl %esi, %esi
cmpb $0x5, (%r14)
jne 0xfdd2
cmpl $0x2b, 0x4(%r14)
jne 0xfdd2
movq 0x28(%r14), %rcx
movzbl (%rcx), %eax
cmpl $0x1, %eax
jne 0xfdcd
addl 0x20(%rcx), %esi
movq 0x20(%r14), %r14
cmpl $0x1, %eax
je 0xfdad
movl $0x64, %eax
cmpb $0x3, (%r14)
jne 0x10046
movq 0x20(%r14), %rdx
movq 0x10(%rbx), %rcx
movzwl 0x68(%rdx), %edi
testl $0x180, %edi            # imm = 0x180
je 0xff91
xorl %r8d, %r8d
testq %r8, %r8
je 0xff02
movq 0x10(%r8), %rsi
testq %rsi, %rsi
je 0xff02
movl 0x50(%rcx), %edi
cmpl 0x50(%rsi), %edi
jne 0x10046
movzbl (%r8), %edi
cmpl $0x1c, %edi
je 0x10055
cmpl $0x1, %edi
jne 0xff02
cmpb $0x3, (%rcx)
jne 0xfe3d
movq 0x60(%rcx), %rcx
movzbl (%rcx), %edx
cmpl $0xe, %edx
ja 0x10181
movl $0x6210, %edi           # imm = 0x6210
btl %edx, %edi
jae 0x10181
cmpb $0x3, (%rsi)
jne 0xfe60
movq 0x60(%rsi), %rsi
cmpb $0x9, (%rsi)
jne 0xfe69
movq 0x60(%rsi), %rsi
cmpb $0xb, (%rsi)
je 0x10046
movb $0x1, (%rbx)
movq 0x20(%r8), %rax
movq %rax, 0x20(%rbx)
movl $0x0, 0x28(%rbx)
jmp 0x10044
cmpl $0x101, %eax            # imm = 0x101
je 0xfe97
cmpl $0x103, %eax            # imm = 0x103
jne 0xfeaa
movq 0x20(%rbx), %rdi
callq 0xed5f
movl $0x2710, %eax           # imm = 0x2710
jmp 0x10046
movq 0x20(%rbx), %rdi
callq 0xed5f
movl %eax, %ebp
movq 0x20(%rbx), %rdx
cmpb $0x1, (%rdx)
jne 0xff5a
movq 0x10(%rbx), %rax
movl 0x50(%rax), %ecx
decl %ecx
movq 0x20(%rdx), %rsi
movl 0x4(%rbx), %edi
cmpl $0x2c, %edi
jg 0xff16
cmpl $0x21, %edi
je 0x10016
cmpl $0x2b, %edi
je 0x1002b
jmp 0xff5a
movq 0x20(%rbx), %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xed5f
movb 0x68(%rdx), %al
andb $0xc, %al
cmpb $0x1, %al
movl $0x2, %eax
sbbl $0x0, %eax
jmp 0x10046
cmpl $0x7e, %edi
je 0x10023
cmpl $0x2d, %edi
jne 0xff5a
movl $0x1, %edi
shlq %cl, %rdi
cmpq %rdi, %rsi
jne 0x10028
testb $0x40, 0x69(%rax)
jne 0x10028
cmpb $0x0, 0x5653a(%rip)     # 0x66480
jne 0xff5a
movq 0x8(%rbx), %rdi
leaq 0x31345(%rip), %rsi     # 0x41298
xorl %eax, %eax
callq 0x118b4
movq 0x20(%rbx), %rax
movb $0x1, %cl
cmpb $0x1c, (%rax)
jne 0xff7f
fldt 0x20(%rax)
movl 0x4(%rbx), %eax
cmpl $0x2b, %eax
je 0xff77
cmpl $0x2d, %eax
jne 0xff81
fchs
fstpt 0x20(%rbx)
movb $0x1c, (%rbx)
xorl %ecx, %ecx
fldz
fstp %st(0)
incl %ebp
xorl %eax, %eax
testb %cl, %cl
cmovnel %ebp, %eax
jmp 0x10046
movq 0xb0(%rdx), %r8
testq %r8, %r8
je 0xfdf9
cmpb $0x18, (%r8)
jne 0xfdfc
movq 0x20(%r8), %r9
testq %r9, %r9
je 0x10077
movq %r9, %r10
movzwl (%r10), %edi
movsbl %dil, %r11d
testw %r11w, %r11w
jle 0xfffd
movzwl %r11w, %r11d
movzwl %di, %ebp
xorl %r14d, %r14d
movq 0x18(%r10,%r14,8), %rdi
cmpl $0x100, %ebp            # imm = 0x100
jb 0xffe5
testq %rdi, %rdi
je 0xfff5
cmpb $0x1b, (%rdi)
jne 0xfff1
cmpl %esi, 0x20(%rdi)
jb 0xfff5
jmp 0x10008
testl %esi, %esi
je 0x1000e
incq %r14
cmpq %r14, %r11
jne 0xffd3
movq 0x10(%r10), %r10
cmpq %r9, %r10
jne 0xffbb
jmp 0x1007f
ja 0xfffd
movq 0x28(%rdi), %rdi
movl $0x1, %r10d
jmp 0x10082
xorl %eax, %eax
testq %rsi, %rsi
sete %al
movq %rax, %rsi
jmp 0x1002b
notq %rsi
jmp 0x1002b
negq %rsi
movb $0x3f, %al
subb %cl, %al
movl %eax, %ecx
shlq %cl, %rsi
shrq %cl, %rsi
movq %rsi, 0x20(%rbx)
movb $0x1, (%rbx)
movl 0x28(%rdx), %eax
movl %eax, 0x28(%rbx)
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
cmpb $0x3, (%rcx)
jne 0x1005e
movq 0x60(%rcx), %rcx
movq 0x60(%rcx), %rcx
cmpq 0x50ed7(%rip), %rcx     # 0x60f40
jne 0x10046
movb $0x1c, (%rbx)
fldt 0x20(%r8)
fstpt 0x20(%rbx)
jmp 0x10044
movl $0x2, %r10d
jmp 0x10082
xorl %r10d, %r10d
testb $0x1, %r10b
jne 0x101c3
movq %rdx, %r8
movzbl (%r8), %r9d
cmpl $0x3, %r9d
jne 0x1009f
movq 0x60(%r8), %r8
jmp 0x1008f
cmpl $0x6, %r9d
je 0x10138
cmpl $0x7, %r9d
jne 0x101bd
movq 0x98(%r8), %r8
xorl %r10d, %r10d
testq %r8, %r8
je 0x1012b
xorl %r11d, %r11d
movq %r8, %r14
movsbl (%r14), %r15d
testw %r15w, %r15w
setg %bpl
jle 0x1011d
movq 0x18(%r14), %r12
movb $0x1, %bpl
cmpl 0x48(%r12), %esi
cmovlq %r11, %r9
cmoveq %r12, %r9
jle 0x1011d
movzwl %r15w, %r15d
leaq -0x1(%r15), %r13
xorl %r12d, %r12d
cmpq %r12, %r13
je 0x10113
movq 0x20(%r14,%r12,8), %rbp
incq %r12
cmpl 0x48(%rbp), %esi
cmovlq %r11, %r9
cmoveq %rbp, %r9
jg 0x100f7
jmp 0x10116
movq %r15, %r12
cmpq %r15, %r12
setb %bpl
testb %bpl, %bpl
jne 0x1012e
movq 0x10(%r14), %r14
cmpq %r8, %r14
jne 0x100c8
xorl %r9d, %r9d
testq %r9, %r9
jne 0x1013c
jmp 0x101c0
movq 0x60(%r8), %r9
movzbl (%r9), %esi
movq %r9, %r8
cmpl $0x3, %esi
jne 0x1014c
movq 0x60(%r9), %r8
movzbl (%r8), %r11d
movl $0x1, %r10d
cmpl $0xe, %r11d
ja 0x10197
movl $0x6210, %ebp           # imm = 0x6210
btl %r11d, %ebp
jae 0x10197
leaq 0x56322(%rip), %r8      # 0x66490
movb %r10b, 0x5631b(%rip)    # 0x66490
movq %r9, 0x56324(%rip)      # 0x664a0
xorl %r10d, %r10d
jmp 0x101c3
movq 0x60(%rcx), %rcx
cmpq 0x50df4(%rip), %rcx     # 0x60f80
jne 0x10046
jmp 0xfe57
movq 0x60(%r8), %r8
cmpq 0x50dde(%rip), %r8      # 0x60f80
je 0x10167
movq %r9, %r8
cmpl $0x3, %esi
jne 0x101b0
movq 0x60(%r9), %r8
movq 0x60(%r8), %rsi
cmpq 0x50d85(%rip), %rsi     # 0x60f40
je 0x101cf
xorl %r10d, %r10d
xorl %r8d, %r8d
testl %r10d, %r10d
cmovneq %rdi, %r8
jmp 0xfdfc
movl $0x1c, %r10d
jmp 0x10167