// File: /workspace/github_c_makefile_star2_O3/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 %r14
pushq %rbx
movq %rdi, %rbx
movl 0x4(%rdi), %eax
cmpl $0x100, %eax            # imm = 0x100
jg 0xff54
cmpl $0x26, %eax
je 0xffbd
cmpl $0x2a, %eax
jne 0xff75
movq 0x20(%rbx), %r14
movq %r14, %rdi
callq 0xed77
movq 0x10(%rbx), %rax
testb $0x8, 0x6b(%rax)
je 0xfeeb
movq 0x8(%r14), %rdi
leaq 0x303d8(%rip), %rsi     # 0x402bc
xorl %eax, %eax
callq 0x118fc
movzbl (%r14), %eax
xorl %edx, %edx
cmpl $0x5, %eax
jne 0xff1f
cmpl $0x2b, 0x4(%r14)
jne 0xff1f
xorl %edx, %edx
movq 0x28(%r14), %rcx
cmpb $0x1, (%rcx)
jne 0xff1f
addl 0x20(%rcx), %edx
movq 0x20(%r14), %r14
movzbl (%r14), %eax
cmpl $0x5, %eax
jne 0xff1f
cmpl $0x2b, 0x4(%r14)
je 0xfeff
movl $0x64, %ebp
cmpb $0x3, %al
jne 0x1016e
movq 0x20(%r14), %rdi
movq 0x68(%rdi), %rcx
testl $0x180, %ecx            # imm = 0x180
je 0x10047
andl $0xc, %ecx
cmpq $0x1, %rcx
movl $0x2, %ebp
sbbl $0x0, %ebp
jmp 0x1016e
cmpl $0x101, %eax            # imm = 0x101
je 0xff62
cmpl $0x103, %eax            # imm = 0x103
jne 0xff75
movq 0x20(%rbx), %rdi
callq 0xed77
movl $0x2710, %ebp           # imm = 0x2710
jmp 0x1016e
movq 0x20(%rbx), %rdi
callq 0xed77
movl %eax, %ebp
movq 0x20(%rbx), %rdx
movzbl (%rdx), %eax
cmpl $0x1, %eax
jne 0x10018
movq 0x10(%rbx), %rdi
movl 0x50(%rdi), %ecx
decl %ecx
movq 0x20(%rdx), %rsi
movl 0x4(%rbx), %r8d
cmpl $0x2c, %r8d
jg 0xffca
cmpl $0x21, %r8d
je 0x1013e
cmpl $0x2b, %r8d
je 0x10153
jmp 0x10018
movq 0x20(%rbx), %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0xed77
cmpl $0x7e, %r8d
je 0x1014b
cmpl $0x2d, %r8d
jne 0x10018
movl $0x1, %r8d
shlq %cl, %r8
cmpq %r8, %rsi
jne 0x10150
testb $0x40, 0x69(%rdi)
jne 0x10150
cmpb $0x0, 0x55483(%rip)     # 0x65480
jne 0x10018
movq 0x8(%rbx), %rdi
leaq 0x3028e(%rip), %rsi     # 0x40298
xorl %eax, %eax
callq 0x118fc
movq 0x20(%rbx), %rdx
movzbl (%rdx), %eax
cmpl $0x1c, %eax
fldz
jne 0x1003e
fstp %st(0)
fldt 0x20(%rdx)
movl 0x4(%rbx), %eax
cmpl $0x2b, %eax
je 0x10033
cmpl $0x2d, %eax
jne 0x1003e
fchs
fstpt 0x20(%rbx)
movb $0x1c, (%rbx)
jmp 0x1016c
fstp %st(0)
incl %ebp
jmp 0x1016e
movq 0xb0(%rdi), %rsi
testq %rsi, %rsi
je 0xff40
movq 0x10(%rbx), %rax
cmpb $0x18, (%rsi)
jne 0x101c7
movq 0x20(%rsi), %r8
testq %r8, %r8
je 0x100db
movq %r8, %r9
movzwl (%r9), %esi
movsbl %sil, %r10d
testw %r10w, %r10w
jle 0x100b8
movzwl %r10w, %r10d
movzwl %si, %r11d
xorl %r14d, %r14d
movq 0x18(%r9,%r14,8), %rsi
cmpl $0x100, %r11d           # imm = 0x100
jb 0x1009c
testq %rsi, %rsi
je 0x100b0
cmpb $0x1b, (%rsi)
jne 0x100a8
cmpl %edx, 0x20(%rsi)
jb 0x100b0
jmp 0x100c3
testl %edx, %edx
je 0x101c7
incq %r14
cmpq %r14, %r10
jne 0x10089
movq 0x10(%r9), %r9
cmpq %r8, %r9
jne 0x10070
jmp 0x100db
ja 0x100b8
movq 0x28(%rsi), %rsi
testq %rsi, %rsi
jne 0x101c7
jmp 0xff40
movq 0x60(%rdi), %rdi
movzbl (%rdi), %esi
cmpl $0x3, %esi
je 0x100d7
cmpl $0x6, %esi
je 0x10175
cmpl $0x7, %esi
jne 0xff40
movq 0x98(%rdi), %rsi
testq %rsi, %rsi
je 0xff40
movq %rsi, %r8
movsbl (%r8), %edi
testw %di, %di
jle 0x10130
movzwl %di, %r9d
xorl %r10d, %r10d
movq 0x18(%r8,%r10,8), %rdi
cmpl 0x48(%rdi), %edx
je 0x10179
jl 0xff40
incq %r10
cmpq %r10, %r9
jne 0x10118
movq 0x10(%r8), %r8
cmpq %rsi, %r8
jne 0x10108
jmp 0xff40
xorl %eax, %eax
testq %rsi, %rsi
sete %al
movq %rax, %rsi
jmp 0x10153
notq %rsi
jmp 0x10153
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 %ebp, %ebp
movl %ebp, %eax
popq %rbx
popq %r14
popq %rbp
retq
movq 0x60(%rdi), %rdi
movzbl (%rdi), %edx
movl %edx, %r9d
movq %rdi, %rsi
cmpl $0x3, %edx
jne 0x1018e
movq 0x60(%rdi), %rsi
movl (%rsi), %r9d
movl $0x1, %r8d
cmpb $0xe, %r9b
ja 0x10278
movzbl %r9b, %r9d
movl $0x6210, %r10d          # imm = 0x6210
btl %r9d, %r10d
jae 0x10278
leaq 0x552d7(%rip), %rsi     # 0x65490
movb %r8b, 0x552d0(%rip)     # 0x65490
movq %rdi, 0x552d9(%rip)     # 0x654a0
movq 0x10(%rsi), %rdx
testq %rdx, %rdx
je 0xff40
movl 0x50(%rax), %edi
cmpl 0x50(%rdx), %edi
jne 0x1016e
movzbl (%rsi), %edi
cmpl $0x1c, %edi
je 0x10250
cmpl $0x1, %edi
jne 0xff40
movzbl (%rax), %ecx
cmpl $0x3, %ecx
jne 0x101fb
movq 0x60(%rax), %rax
movl (%rax), %ecx
cmpb $0xe, %cl
ja 0x102b1
movzbl %cl, %ecx
movl $0x6210, %edi           # imm = 0x6210
btl %ecx, %edi
jae 0x102b1
movzbl (%rdx), %eax
cmpl $0x3, %eax
jne 0x10224
movq 0x60(%rdx), %rdx
movzbl (%rdx), %eax
cmpl $0x9, %eax
jne 0x10230
movq 0x60(%rdx), %rax
movzbl (%rax), %eax
cmpl $0xb, %eax
je 0x1016e
movb $0x1, (%rbx)
movq 0x20(%rsi), %rax
movq %rax, 0x20(%rbx)
movl $0x0, 0x28(%rbx)
jmp 0x1016c
cmpb $0x3, (%rax)
jne 0x10259
movq 0x60(%rax), %rax
movq 0x60(%rax), %rax
cmpq 0x4fcec(%rip), %rax     # 0x5ff50
jne 0x1016e
movb $0x1c, (%rbx)
fldt 0x20(%rsi)
fstpt 0x20(%rbx)
jmp 0x1016c
movq 0x60(%rsi), %rsi
cmpq 0x4fd05(%rip), %rsi     # 0x5ff88
je 0x101b2
movq %rdi, %rsi
cmpl $0x3, %edx
jne 0x10295
movq 0x60(%rdi), %rsi
movq 0x60(%rsi), %rdx
cmpq 0x4fcb0(%rip), %rdx     # 0x5ff50
jne 0xff40
movl $0x1c, %r8d
jmp 0x101b2
movq 0x60(%rax), %rax
cmpq 0x4fccc(%rip), %rax     # 0x5ff88
jne 0x1016e
jmp 0x10215