// File: luooofan[P]hblzbd_compiler/src/Pass/ir_liveness_analysis.cpp
// Function: IRLivenessAnalysis::GetDefUse4Func(IRFunction*, bool)
void IRLivenessAnalysis::GetDefUse4Func(IRFunction *f, bool consider) {
  for (auto bb : f->bb_list_) {
    // bb->livein_.clear();
    // bb->liveout_.clear();
    bb->def_.clear();
    bb->use_.clear();

    for (auto ir : bb->ir_list_) {
      auto [def, use] = GetDefUse(ir, consider);

      for (auto &u : use) {
        bb->use_.insert(u);
      }

      for (auto &d : def) {
        bb->def_.insert(d);
      }
    }
    // bb->livein_ = bb->use_;
  }  // for bb
}

// Assembly:
subq $0x128, %rsp            # imm = 0x128
movb %sil, %al
movq %rdi, 0x120(%rsp)
andb $0x1, %al
movb %al, 0x11f(%rsp)
movq 0x120(%rsp), %rax
addq $0x30, %rax
movq %rax, 0x110(%rsp)
movq 0x110(%rsp), %rdi
callq 0x1cc40
movq %rax, 0x108(%rsp)
movq 0x110(%rsp), %rdi
callq 0x1cac0
movq %rax, 0x100(%rsp)
leaq 0x108(%rsp), %rdi
leaq 0x100(%rsp), %rsi
callq 0x492e0
testb $0x1, %al
jne 0xc9317
jmp 0xc95a0
leaq 0x108(%rsp), %rdi
callq 0x49320
movq (%rax), %rax
movq %rax, 0xf8(%rsp)
movq 0xf8(%rsp), %rdi
addq $0x58, %rdi
callq 0xca080
movq 0xf8(%rsp), %rdi
addq $0x90, %rdi
callq 0xca080
movq 0xf8(%rsp), %rax
addq $0x8, %rax
movq %rax, 0xf0(%rsp)
movq 0xf0(%rsp), %rdi
callq 0x1b070
movq %rax, 0xe8(%rsp)
movq 0xf0(%rsp), %rdi
callq 0x1aeb0
movq %rax, 0xe0(%rsp)
leaq 0xe8(%rsp), %rdi
leaq 0xe0(%rsp), %rsi
callq 0x493c0
testb $0x1, %al
jne 0xc93b0
jmp 0xc958c
leaq 0xe8(%rsp), %rdi
callq 0x1b4d0
movq (%rax), %rax
movq %rax, 0xd8(%rsp)
movq 0xd8(%rsp), %rsi
movb 0x11f(%rsp), %al
leaq 0xa8(%rsp), %rdi
andb $0x1, %al
movzbl %al, %edx
callq 0xc83e0
leaq 0xa8(%rsp), %rdi
callq 0x8f320
movq %rax, 0xa0(%rsp)
leaq 0xa8(%rsp), %rdi
callq 0x8f330
movq %rax, 0x98(%rsp)
movq 0x98(%rsp), %rax
movq %rax, 0x90(%rsp)
movq 0x90(%rsp), %rdi
callq 0xa3ec0
movq %rax, 0x88(%rsp)
movq 0x90(%rsp), %rdi
callq 0xa3ef0
movq %rax, 0x80(%rsp)
leaq 0x88(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0xa3e20
testb $0x1, %al
jne 0xc9468
jmp 0xc94df
leaq 0x88(%rsp), %rdi
callq 0xa4c00
movq %rax, 0x78(%rsp)
movq 0xf8(%rsp), %rdi
addq $0x90, %rdi
movq 0x78(%rsp), %rsi
callq 0x8fa20
movb %dl, 0x1f(%rsp)
movq %rax, 0x20(%rsp)
jmp 0xc949e
movb 0x1f(%rsp), %al
movq 0x20(%rsp), %rcx
movq %rcx, 0x58(%rsp)
movb %al, 0x60(%rsp)
leaq 0x88(%rsp), %rdi
callq 0xa4bd0
jmp 0xc944d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x70(%rsp)
movl %eax, 0x6c(%rsp)
leaq 0xa8(%rsp), %rdi
callq 0x8f530
jmp 0xc95a8
movq 0xa0(%rsp), %rax
movq %rax, 0x50(%rsp)
movq 0x50(%rsp), %rdi
callq 0xa3ec0
movq %rax, 0x48(%rsp)
movq 0x50(%rsp), %rdi
callq 0xa3ef0
movq %rax, 0x40(%rsp)
leaq 0x48(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0xa3e20
testb $0x1, %al
jne 0xc951f
jmp 0xc956d
leaq 0x48(%rsp), %rdi
callq 0xa4c00
movq %rax, 0x38(%rsp)
movq 0xf8(%rsp), %rdi
addq $0x58, %rdi
movq 0x38(%rsp), %rsi
callq 0x8fa20
movb %dl, 0xf(%rsp)
movq %rax, 0x10(%rsp)
jmp 0xc954f
movb 0xf(%rsp), %al
movq 0x10(%rsp), %rcx
movq %rcx, 0x28(%rsp)
movb %al, 0x30(%rsp)
leaq 0x48(%rsp), %rdi
callq 0xa4bd0
jmp 0xc950a
leaq 0xa8(%rsp), %rdi
callq 0x8f530
leaq 0xe8(%rsp), %rdi
callq 0x49460
jmp 0xc9392
jmp 0xc958e
leaq 0x108(%rsp), %rdi
callq 0x49330
jmp 0xc92f9
addq $0x128, %rsp            # imm = 0x128
retq
movq 0x70(%rsp), %rdi
callq 0x8670
nopw %cs:(%rax,%rax)