// File: /workspace/github_c_makefile_star2_O2/lucvoo[P]sparse-dev/example.c
// Function: generate_output_storage
static void generate_output_storage(struct bb_state *state)
{
	struct storage_hash *entry;

	/* Go through the fixed outputs, making sure we have those regs free */
	FOR_EACH_PTR(state->outputs, entry) {
		struct storage *out = entry->storage;
		if (out->type == REG_REG) {
			struct hardreg *reg = hardregs + out->regno;
			pseudo_t p;
			int flushme = 0;

			reg->busy = REG_FIXED;
			FOR_EACH_PTR_TAG(reg->contains, p) {
				if (p == entry->pseudo) {
					flushme = -100;
					continue;
				}
				if (CURRENT_TAG(p) & TAG_DEAD)
					continue;

				/* Try to write back the pseudo to where it should go ... */
				if (final_pseudo_flush(state, p, reg)) {
					DELETE_CURRENT_PTR(p);
					continue;
				}
				flushme++;
			} END_FOR_EACH_PTR(p);
			PACK_PTR_LIST(&reg->contains);
			if (flushme > 0)
				flush_reg(state, reg);
		}
	} END_FOR_EACH_PTR(entry);

	FOR_EACH_PTR(state->outputs, entry) {
		fill_output(state, entry->pseudo, entry->storage);
	} END_FOR_EACH_PTR(entry);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movq %rdi, (%rsp)
movq 0x10(%rdi), %rax
testq %rax, %rax
je 0x1229f
leaq 0x4e477(%rip), %rbx     # 0x601b0
movq %rax, %r15
movq (%rsp), %r14
movq %rax, 0x30(%rsp)
xorl %r12d, %r12d
movq %r15, 0x38(%rsp)
movl (%r15), %eax
movsbq %al, %rcx
cmpq %rcx, %r12
jge 0x11fdf
movq 0x18(%r15,%r12,8), %rcx
cmpw $0x100, %ax             # imm = 0x100
jb 0x11d71
testq %rcx, %rcx
je 0x11fd7
movq 0x18(%rcx), %rax
cmpl $0x1, (%rax)
jne 0x11fd7
movslq 0x10(%rax), %rax
imulq $0x18, %rax, %rax
leaq (%rax,%rbx), %rdi
addq $0x8, %rdi
movw $0x7d0, 0x8(%rdi)       # imm = 0x7D0
movq (%rdi), %rdx
testq %rdx, %rdx
je 0x11fd2
movq %r12, 0x40(%rsp)
addq %rbx, %rax
movq %rax, 0x10(%rsp)
movl $0x0, 0x8(%rsp)
movq %rdx, %rax
movq %rcx, 0x20(%rsp)
movq %rdi, 0x18(%rsp)
movq %rdx, 0x48(%rsp)
leaq 0x18(%rax), %r15
leaq 0x10(%rax), %rdx
movq %rdx, 0x28(%rsp)
movq %rax, 0x50(%rsp)
movzwl (%rax), %r12d
xorl %ebx, %ebx
movsbl %r12b, %eax
cmpl %eax, %ebx
jge 0x11f90
movslq %ebx, %r13
movq (%r15,%r13,8), %rax
movq %rax, %rbp
andq $-0x4, %rbp
cmpw $0x100, %r12w           # imm = 0x100
jb 0x11e0a
testq %rbp, %rbp
je 0x11f75
cmpq %rbp, 0x8(%rcx)
je 0x11e79
testb $0x1, %al
jne 0x11f75
movq 0x10(%r14), %rsi
movq %rbp, %rdi
callq 0x112e7
testq %rax, %rax
je 0x11f20
movq 0x18(%rax), %r14
movl (%r14), %eax
testl %eax, %eax
je 0x11e85
cmpl $0x1, %eax
jne 0x11ef1
movslq 0x10(%r14), %rax
imulq $0x18, %rax, %rax
leaq 0x4e360(%rip), %rcx     # 0x601b0
leaq (%rcx,%rax), %rsi
cmpq $0x0, 0x8(%rax,%rcx)
je 0x11eb3
movzwl 0x10(%rsi), %eax
cmpl $0x3e8, %eax            # imm = 0x3E8
ja 0x11eb3
callq 0x110f6
movq %rax, %rsi
testq %rax, %rax
jne 0x11eb3
jmp 0x11f7c
pushq $-0x64
popq %rax
movl %eax, 0x8(%rsp)
jmp 0x11f75
callq 0x110f6
testq %rax, %rax
je 0x11f7c
movq %rax, %rsi
movl $0x1, (%r14)
leaq 0x4e30c(%rip), %rcx     # 0x601b0
subq %rcx, %rax
cqto
pushq $0x18
popq %rcx
idivq %rcx
movl %eax, 0x10(%r14)
cmpq 0x10(%rsp), %rsi
movq (%rsp), %r14
je 0x11f20
movq 0x10(%rsp), %rax
movq (%rax), %rdx
movq (%rsi), %rcx
movq %rsi, %r12
leaq 0x2b462(%rip), %rsi     # 0x3d335
leaq 0x2b815(%rip), %r8      # 0x3d6ef
xorl %eax, %eax
callq 0x10bf5
movq %r14, %rdi
movq %rbp, %rsi
movq %r12, %rdx
callq 0x10a7d
jmp 0x11f20
movq 0x10(%rsp), %rax
movq (%rax), %r12
movq %r14, %rdi
callq 0x11398
leaq 0x2b42d(%rip), %rsi     # 0x3d335
movq %r12, %rdx
movq %rax, %rcx
leaq 0x2b7da(%rip), %r8      # 0x3d6ef
xorl %eax, %eax
callq 0x10bf5
movq (%rsp), %r14
leaq (%r15,%r13,8), %rax
movq 0x50(%rsp), %rsi
movsbq (%rsi), %rcx
movq 0x28(%rsp), %rdx
leaq (%rdx,%rcx,8), %rcx
movq 0x18(%rsp), %rdi
cmpq %rcx, %rax
jae 0x11f4d
movq 0x8(%rax), %rdx
movq %rdx, (%rax)
addq $0x8, %rax
jmp 0x11f3b
movl $0xf0f0f0f0, %ecx       # imm = 0xF0F0F0F0
movq %rcx, (%rax)
movl (%rsi), %r12d
leal -0x1(%r12), %eax
movzbl %al, %eax
andl $0xffffff00, %r12d      # imm = 0xFFFFFF00
orl %eax, %r12d
movw %r12w, (%rsi)
decl %ebx
movq 0x20(%rsp), %rcx
incl %ebx
jmp 0x11ddf
incl 0x8(%rsp)
movq (%rsp), %r14
movq 0x20(%rsp), %rcx
movq 0x18(%rsp), %rdi
jmp 0x11f75
movq 0x28(%rsp), %rax
movq (%rax), %rax
movq 0x48(%rsp), %rdx
cmpq %rdx, %rax
jne 0x11dc7
callq 0x2530c
cmpl $0x0, 0x8(%rsp)
leaq 0x4e1f9(%rip), %rbx     # 0x601b0
movq 0x38(%rsp), %r15
movq 0x40(%rsp), %r12
jle 0x11fd7
movq %r14, %rdi
movq 0x10(%rsp), %rsi
callq 0x1111e
jmp 0x11fd7
callq 0x2530c
incq %r12
jmp 0x11d4d
movq 0x10(%r15), %r15
movq 0x30(%rsp), %rax
cmpq %rax, %r15
jne 0x11d45
movq 0x10(%r14), %rax
movq %rax, 0x8(%rsp)
testq %rax, %rax
je 0x1229f
leaq 0x2b32b(%rip), %r14     # 0x3d335
movq 0x8(%rsp), %r15
xorl %r12d, %r12d
movl (%r15), %ecx
movsbq %cl, %rax
cmpq %rax, %r12
jge 0x12290
movq 0x18(%r15,%r12,8), %rax
cmpw $0x100, %cx             # imm = 0x100
jb 0x12037
testq %rax, %rax
je 0x121b5
movq 0x8(%rax), %rbp
movq 0x18(%rax), %r13
movl 0x4(%rbp), %eax
cmpl $0x3, %eax
je 0x1204e
cmpl $0x6, %eax
je 0x12064
jmp 0x12078
movq 0x18(%rbp), %rax
testq %rax, %rax
je 0x12078
movl (%rax), %eax
andl $0x7f, %eax
addl $-0x47, %eax
cmpl $0x1, %eax
ja 0x12078
movq (%rsp), %rdi
movq %rbp, %rsi
movq %r13, %rdx
callq 0x122ae
jmp 0x121b5
xorl %ecx, %ecx
cmpq $0x6, %rcx
je 0x121e8
imulq $0x18, %rcx, %rax
leaq 0x4e121(%rip), %rdx     # 0x601b0
movq 0x8(%rax,%rdx), %rdx
testq %rdx, %rdx
je 0x120f7
leaq 0x4e110(%rip), %rsi     # 0x601b0
addq %rsi, %rax
movq %rdx, %rsi
movzwl (%rsi), %edi
movsbl %dil, %r8d
testw %r8w, %r8w
movl $0x0, %r9d
cmovgl %r8d, %r9d
movzwl %r9w, %r8d
xorl %r9d, %r9d
cmpq %r9, %r8
je 0x120ee
cmpw $0x100, %di             # imm = 0x100
setb %r11b
movq 0x18(%rsi,%r9,8), %r10
andq $-0x4, %r10
setne %bl
orb %r11b, %bl
incq %r9
cmpb $0x1, %bl
jne 0x120c2
cmpq %r10, %rbp
jne 0x120c2
jmp 0x120ff
movq 0x10(%rsi), %rsi
cmpq %rdx, %rsi
jne 0x120a6
incq %rcx
jmp 0x1207a
movl (%r13), %edx
testl %edx, %edx
je 0x12133
cmpl $0x1, %edx
jne 0x12193
movslq 0x10(%r13), %rdx
cmpl %ecx, %edx
je 0x121b5
imulq $0x18, %rdx, %rcx
movq (%rax), %rdx
leaq 0x4e086(%rip), %rax     # 0x601b0
movq (%rcx,%rax), %rcx
movq %r14, %rsi
jmp 0x121a7
movl 0x10(%rax), %edx
movl $0xfff8, %esi           # imm = 0xFFF8
andl %esi, %edx
cmpl $0x3e8, %edx            # imm = 0x3E8
jae 0x12159
movl $0x1, (%r13)
movl %ecx, 0x10(%r13)
movw $0x7d0, 0x10(%rax)      # imm = 0x7D0
jmp 0x121b5
leaq 0x4e060(%rip), %rbx     # 0x601c0
xorl %ebp, %ebp
cmpq $0x6, %rbp
je 0x12178
cmpq $0x0, -0x8(%rbx)
je 0x121bd
incq %rbp
addq $0x18, %rbx
jmp 0x12162
movl $0x2, (%r13)
movl 0x5343e(%rip), %ecx     # 0x655c4
leal 0x4(%rcx), %edx
movl %edx, 0x53435(%rip)     # 0x655c4
movl %ecx, 0x10(%r13)
movq (%rax), %rbp
movq %r13, %rdi
callq 0x11398
movq %r14, %rsi
movq %rbp, %rdx
movq %rax, %rcx
leaq 0x2b575(%rip), %r8      # 0x3d723
xorl %eax, %eax
callq 0x10bf5
incq %r12
jmp 0x12012
movq (%rax), %rdx
movq -0x10(%rbx), %rcx
movq %r14, %rsi
leaq 0x2b555(%rip), %r8      # 0x3d723
xorl %eax, %eax
callq 0x10bf5
movl $0x1, (%r13)
movl %ebp, 0x10(%r13)
movw $0x7d0, (%rbx)          # imm = 0x7D0
jmp 0x121b5
movq (%rsp), %rbx
movq 0x18(%rbx), %rsi
movq %rbp, %rdi
callq 0x112e7
testq %rax, %rax
jne 0x1220e
movq 0x8(%rbx), %rsi
movq %rbp, %rdi
callq 0x112e7
testq %rax, %rax
je 0x121b5
movl (%r13), %ecx
movq 0x18(%rax), %rdi
cmpl $0x1, %ecx
je 0x12231
testl %ecx, %ecx
jne 0x12251
movq 0x10(%rdi), %rax
movq %rax, 0x10(%r13)
movups (%rdi), %xmm0
movups %xmm0, (%r13)
jmp 0x121b5
callq 0x11398
movslq 0x10(%r13), %rcx
imulq $0x18, %rcx, %rcx
leaq 0x4df6b(%rip), %rdx     # 0x601b0
movq (%rcx,%rdx), %rcx
movq %r14, %rsi
movq %rax, %rdx
jmp 0x12284
cmpq %r13, %rdi
je 0x121b5
cmpl (%rdi), %ecx
jne 0x1226b
movl 0x10(%r13), %eax
cmpl 0x10(%rdi), %eax
je 0x121b5
callq 0x11398
movq %rax, %rbp
movq %r13, %rdi
callq 0x11398
movq %r14, %rsi
movq %rbp, %rdx
movq %rax, %rcx
leaq 0x2b477(%rip), %r8      # 0x3d702
jmp 0x121ae
movq 0x10(%r15), %r15
cmpq 0x8(%rsp), %r15
jne 0x1200f
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq