// File: /workspace/github_c_makefile_star2_O0/lucvoo[P]sparse-dev/memops.c
// Function: kill_dominated_stores
static void kill_dominated_stores(struct basic_block *bb)
{
	struct instruction *insn;

	FOR_EACH_PTR_REVERSE(bb->insns, insn) {
		if (!insn->bb)
			continue;
		if (insn->opcode == OP_STORE) {
			struct basic_block *par;
			struct instruction *dom;
			pseudo_t pseudo = insn->src;
			int local;

			if (!insn->type)
				continue;
			if (insn->is_volatile)
				continue;

			local = local_pseudo(pseudo);
			RECURSE_PTR_REVERSE(insn, dom) {
				if (!dom->bb)
					continue;
				if (!try_to_kill_store(insn, dom, local))
					goto next_store;
			} END_FOR_EACH_PTR_REVERSE(dom);

			/* OK, we should check the parents now */
			FOR_EACH_PTR(bb->parents, par) {

				if (bb_list_size(par->children) != 1)
					goto next_parent;
				FOR_EACH_PTR(par->insns, dom) {
					if (!dom->bb)
						continue;
					if (dom == insn)
						goto next_parent;
					if (!try_to_kill_store(insn, dom, local))
						goto next_parent;
				} END_FOR_EACH_PTR(dom);
next_parent:
				;
			} END_FOR_EACH_PTR(par);
		}
next_store:
		/* Do the next one */;
	} END_FOR_EACH_PTR_REVERSE(insn);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb0, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rax
cmpq $0x0, 0x28(%rax)
jne 0x5f94b
jmp 0x5fc8e
jmp 0x5f94d
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movw (%rax), %ax
shlw $0x8, %ax
sarw $0x8, %ax
cwtl
movl %eax, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x2c(%rbp)
cmpl $0x0, %eax
jl 0x5fc7e
movq -0x20(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movq 0x18(%rax,%rcx,8), %rax
movq %rax, -0x10(%rbp)
movq -0x20(%rbp), %rax
movw (%rax), %ax
sarw $0x8, %ax
cwtl
cmpl $0x0, %eax
je 0x5f9a9
cmpq $0x0, -0x10(%rbp)
jne 0x5f9a9
jmp 0x5f96c
movq -0x10(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jne 0x5f9b6
jmp 0x5f96c
movq -0x10(%rbp), %rax
movl (%rax), %eax
andl $0x7f, %eax
cmpl $0x44, %eax
jne 0x5fc77
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x48(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x18(%rax)
jne 0x5f9e1
jmp 0x5f96c
movq -0x10(%rbp), %rax
movb 0x40(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0x5f9f7
jmp 0x5f96c
movq -0x48(%rbp), %rdi
callq 0x5fca0
movl %eax, -0x4c(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x68(%rbp)
movl -0x2c(%rbp), %eax
movl %eax, -0x6c(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x40(%rbp)
jmp 0x5fa4a
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
movw (%rax), %ax
shlw $0x8, %ax
sarw $0x8, %ax
cwtl
movl %eax, -0x6c(%rbp)
jmp 0x5fa4c
movl -0x6c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x6c(%rbp)
cmpl $0x0, %eax
jl 0x5fa97
movq -0x60(%rbp), %rax
movslq -0x6c(%rbp), %rcx
movq 0x18(%rax,%rcx,8), %rax
andq $-0x4, %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jne 0x5fa7c
jmp 0x5fa4c
movq -0x10(%rbp), %rdi
movq -0x40(%rbp), %rsi
movl -0x4c(%rbp), %edx
callq 0x60570
testb $0x1, %al
jne 0x5fa95
jmp 0x5fc79
jmp 0x5fa4c
jmp 0x5fa99
movq -0x60(%rbp), %rax
cmpq -0x58(%rbp), %rax
jne 0x5fa2b
jmp 0x5faa5
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x78(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0x88(%rbp)
cmpq $0x0, -0x78(%rbp)
jne 0x5fad0
jmp 0x5fc75
jmp 0x5fad2
movl $0x0, -0x8c(%rbp)
movl -0x8c(%rbp), %eax
movq -0x80(%rbp), %rcx
movw (%rcx), %cx
shlw $0x8, %cx
sarw $0x8, %cx
movswl %cx, %ecx
cmpl %ecx, %eax
jge 0x5fc5d
movq -0x80(%rbp), %rax
movslq -0x8c(%rbp), %rcx
movq 0x18(%rax,%rcx,8), %rax
movq %rax, -0x38(%rbp)
movq -0x80(%rbp), %rax
movw (%rax), %ax
sarw $0x8, %ax
cwtl
cmpl $0x0, %eax
je 0x5fb2d
cmpq $0x0, -0x38(%rbp)
jne 0x5fb2d
jmp 0x5fc49
movq -0x38(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x60620
cmpl $0x1, %eax
je 0x5fb44
jmp 0x5fc47
jmp 0x5fb46
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x98(%rbp)
movq -0x98(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq -0x98(%rbp), %rax
movq %rax, -0xa8(%rbp)
cmpq $0x0, -0x98(%rbp)
jne 0x5fb80
jmp 0x5fc45
jmp 0x5fb82
movl $0x0, -0xac(%rbp)
movl -0xac(%rbp), %eax
movq -0xa0(%rbp), %rcx
movw (%rcx), %cx
shlw $0x8, %cx
sarw $0x8, %cx
movswl %cx, %ecx
cmpl %ecx, %eax
jge 0x5fc24
movq -0xa0(%rbp), %rax
movslq -0xac(%rbp), %rcx
movq 0x18(%rax,%rcx,8), %rax
movq %rax, -0x40(%rbp)
movq -0xa0(%rbp), %rax
movw (%rax), %ax
sarw $0x8, %ax
cwtl
cmpl $0x0, %eax
je 0x5fbdf
cmpq $0x0, -0x40(%rbp)
jne 0x5fbdf
jmp 0x5fc10
movq -0x40(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jne 0x5fbec
jmp 0x5fc10
movq -0x40(%rbp), %rax
cmpq -0x10(%rbp), %rax
jne 0x5fbf8
jmp 0x5fc47
movq -0x10(%rbp), %rdi
movq -0x40(%rbp), %rsi
movl -0x4c(%rbp), %edx
callq 0x60570
testb $0x1, %al
jne 0x5fc0e
jmp 0x5fc47
jmp 0x5fc10
movl -0xac(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xac(%rbp)
jmp 0x5fb8c
jmp 0x5fc26
movq -0xa0(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0xa0(%rbp)
cmpq -0x98(%rbp), %rax
jne 0x5fb82
jmp 0x5fc47
jmp 0x5fc49
movl -0x8c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x8c(%rbp)
jmp 0x5fadc
jmp 0x5fc5f
movq -0x80(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x80(%rbp)
cmpq -0x78(%rbp), %rax
jne 0x5fad2
jmp 0x5fc77
jmp 0x5fc79
jmp 0x5f96c
jmp 0x5fc80
movq -0x20(%rbp), %rax
cmpq -0x18(%rbp), %rax
jne 0x5f94d
addq $0xb0, %rsp
popq %rbp
retq
nopw (%rax,%rax)