// File: /workspace/github_c_makefile_star2_O0/lucvoo[P]sparse-dev/liveness.c
// Function: track_pseudo_death_bb
static void track_pseudo_death_bb(struct basic_block *bb)
{
	struct pseudo_list *live = NULL;
	struct basic_block *child;
	struct instruction *insn;

	FOR_EACH_PTR(bb->children, child) {
		merge_pseudo_list(child->needs, &live);
	} END_FOR_EACH_PTR(child);

	live_list = &live;
	FOR_EACH_PTR_REVERSE(bb->insns, insn) {
		if (!insn->bb)
			continue;

		dead_list = NULL;
		track_instruction_usage(bb, insn, death_def, death_use);
		if (dead_list) {
			pseudo_t dead;
			FOR_EACH_PTR(dead_list, dead) {
				struct instruction *deathnote = __alloc_instruction(0);
				deathnote->bb = bb;
				deathnote->opcode = OP_DEATHNOTE;
				deathnote->target = dead;
				INSERT_CURRENT(deathnote, insn);
			} END_FOR_EACH_PTR(dead);
			free_ptr_list(&dead_list);
		}
	} END_FOR_EACH_PTR_REVERSE(insn);
	free_ptr_list(&live);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movq %rdi, -0x8(%rbp)
movq $0x0, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x5e93c
jmp 0x5e9b9
jmp 0x5e93e
movl $0x0, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
movq -0x30(%rbp), %rcx
movw (%rcx), %cx
shlw $0x8, %cx
sarw $0x8, %cx
movswl %cx, %ecx
cmpl %ecx, %eax
jge 0x5e9a5
movq -0x30(%rbp), %rax
movslq -0x3c(%rbp), %rcx
movq 0x18(%rax,%rcx,8), %rax
movq %rax, -0x18(%rbp)
movq -0x30(%rbp), %rax
movw (%rax), %ax
sarw $0x8, %ax
cwtl
cmpl $0x0, %eax
je 0x5e989
cmpq $0x0, -0x18(%rbp)
jne 0x5e989
jmp 0x5e99a
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rdi
leaq -0x10(%rbp), %rsi
callq 0x5f170
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x5e945
jmp 0x5e9a7
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x30(%rbp)
cmpq -0x28(%rbp), %rax
jne 0x5e93e
leaq -0x10(%rbp), %rax
movq %rax, 0x579a4(%rip)     # 0xb6368
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x48(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x8(%rbp), %rax
cmpq $0x0, 0x28(%rax)
jne 0x5e9f0
jmp 0x5ecc2
jmp 0x5e9f2
movq -0x50(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
movw (%rax), %ax
shlw $0x8, %ax
sarw $0x8, %ax
cwtl
movl %eax, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x5c(%rbp)
cmpl $0x0, %eax
jl 0x5ecb2
movq -0x50(%rbp), %rax
movslq -0x5c(%rbp), %rcx
movq 0x18(%rax,%rcx,8), %rax
movq %rax, -0x20(%rbp)
movq -0x50(%rbp), %rax
movw (%rax), %ax
sarw $0x8, %ax
cwtl
cmpl $0x0, %eax
je 0x5ea4e
cmpq $0x0, -0x20(%rbp)
jne 0x5ea4e
jmp 0x5ea11
movq -0x20(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jne 0x5ea5b
jmp 0x5ea11
movq $0x0, 0x5790a(%rip) # 0xb6370
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
leaq 0x7ab(%rip), %rdx       # 0x5f220
leaq 0x7b4(%rip), %rcx       # 0x5f230
callq 0x5e190
cmpq $0x0, 0x578e7(%rip)     # 0xb6370
je 0x5ecad
jmp 0x5ea91
movq 0x578d8(%rip), %rax     # 0xb6370
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x70(%rbp), %rax
movq %rax, -0x80(%rbp)
cmpq $0x0, -0x70(%rbp)
jne 0x5eab8
jmp 0x5ec9d
jmp 0x5eaba
movl $0x0, -0x84(%rbp)
movl -0x84(%rbp), %eax
movq -0x78(%rbp), %rcx
movw (%rcx), %cx
shlw $0x8, %cx
sarw $0x8, %cx
movswl %cx, %ecx
cmpl %ecx, %eax
jge 0x5ec85
movq -0x78(%rbp), %rax
movslq -0x84(%rbp), %rcx
movq 0x18(%rax,%rcx,8), %rax
movq %rax, -0x68(%rbp)
movq -0x78(%rbp), %rax
movw (%rax), %ax
sarw $0x8, %ax
cwtl
cmpl $0x0, %eax
je 0x5eb15
cmpq $0x0, -0x68(%rbp)
jne 0x5eb15
jmp 0x5ec71
xorl %edi, %edi
callq 0x473d0
movq %rax, -0x90(%rbp)
movq -0x8(%rbp), %rcx
movq -0x90(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x90(%rbp), %rax
movl (%rax), %ecx
andl $-0x80, %ecx
orl $0x4d, %ecx
movl %ecx, (%rax)
movq -0x68(%rbp), %rcx
movq -0x90(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x50(%rbp), %rax
movw (%rax), %ax
shlw $0x8, %ax
sarw $0x8, %ax
cwtl
cmpl $0xd, %eax
jne 0x5ebb1
movq -0x50(%rbp), %rdi
callq 0x31260
movl -0x5c(%rbp), %eax
movq -0x50(%rbp), %rcx
movw (%rcx), %cx
shlw $0x8, %cx
sarw $0x8, %cx
movswl %cx, %ecx
cmpl %ecx, %eax
jl 0x5ebaf
movq -0x50(%rbp), %rax
movw (%rax), %ax
shlw $0x8, %ax
sarw $0x8, %ax
movswl %ax, %ecx
movl -0x5c(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x5c(%rbp)
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x50(%rbp)
jmp 0x5ebb1
movq -0x50(%rbp), %rax
addq $0x18, %rax
movslq -0x5c(%rbp), %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x98(%rbp)
movq -0x50(%rbp), %rax
addq $0x18, %rax
movq -0x50(%rbp), %rcx
movw (%rcx), %cx
shlw $0x8, %cx
sarw $0x8, %cx
movswl %cx, %ecx
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
addq $-0x8, %rax
movq %rax, -0xa0(%rbp)
movq -0xa0(%rbp), %rax
cmpq -0x98(%rbp), %rax
jb 0x5ec33
movq -0xa0(%rbp), %rax
movq (%rax), %rcx
movq -0xa0(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0xa0(%rbp), %rax
addq $-0x8, %rax
movq %rax, -0xa0(%rbp)
jmp 0x5ebfa
movq -0x90(%rbp), %rcx
movq -0x98(%rbp), %rax
movq %rcx, (%rax)
movq -0x50(%rbp), %rax
movw (%rax), %cx
shlw $0x8, %cx
sarw $0x8, %cx
movswl %cx, %ecx
addl $0x1, %ecx
movw %cx, %dx
movw (%rax), %cx
andw $0xff, %dx
andw $0xff00, %cx            # imm = 0xFF00
orw %dx, %cx
movw %cx, (%rax)
jmp 0x5ec71
movl -0x84(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x84(%rbp)
jmp 0x5eac4
jmp 0x5ec87
movq -0x78(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x78(%rbp)
cmpq -0x70(%rbp), %rax
jne 0x5eaba
jmp 0x5ec9f
leaq 0x576ca(%rip), %rdi     # 0xb6370
callq 0x31cd0
jmp 0x5ecad
jmp 0x5ea11
jmp 0x5ecb4
movq -0x50(%rbp), %rax
cmpq -0x48(%rbp), %rax
jne 0x5e9f2
jmp 0x5ecc4
leaq -0x10(%rbp), %rdi
callq 0x31cd0
addq $0xa0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)