// File: luooofan[P]hblzbd_compiler/src/Pass/reach_define.cpp
// Function: print_use_def_chain(IRModule*)
void print_use_def_chain(IRModule *m) {
  for (auto func : m->func_list_) {
    for (auto bb : func->bb_list_) {
      for (auto map_ir : bb->use_def_chains_) {
        for (auto map_opn : map_ir) {
          auto opn = map_opn.first;

          std::cout << "变量：" << opn->name_ + "_#" + std::to_string(opn->scope_id_) << "的使用-定值链" << std::endl;

          for (auto ir : map_opn.second) {
            ir->PrintIR();
          }
        }
        std::cout << "\n";
      }
    }
  }
}

// Assembly:
subq $0x1a8, %rsp            # imm = 0x1A8
movq %rdi, 0x1a0(%rsp)
movq 0x1a0(%rsp), %rax
addq $0x28, %rax
movq %rax, 0x198(%rsp)
movq 0x198(%rsp), %rdi
callq 0x1d3c0
movq %rax, 0x190(%rsp)
movq 0x198(%rsp), %rdi
callq 0x1d240
movq %rax, 0x188(%rsp)
leaq 0x190(%rsp), %rdi
leaq 0x188(%rsp), %rsi
callq 0x49210
testb $0x1, %al
jne 0xef27b
jmp 0xef67f
leaq 0x190(%rsp), %rdi
callq 0x49250
movq (%rax), %rax
movq %rax, 0x180(%rsp)
movq 0x180(%rsp), %rax
addq $0x30, %rax
movq %rax, 0x178(%rsp)
movq 0x178(%rsp), %rdi
callq 0x1cc40
movq %rax, 0x170(%rsp)
movq 0x178(%rsp), %rdi
callq 0x1cac0
movq %rax, 0x168(%rsp)
leaq 0x170(%rsp), %rdi
leaq 0x168(%rsp), %rsi
callq 0x492e0
testb $0x1, %al
jne 0xef2ef
jmp 0xef66b
leaq 0x170(%rsp), %rdi
callq 0x49320
movq (%rax), %rax
movq %rax, 0x160(%rsp)
movq 0x160(%rsp), %rax
addq $0x218, %rax            # imm = 0x218
movq %rax, 0x158(%rsp)
movq 0x158(%rsp), %rdi
callq 0xf2540
movq %rax, 0x150(%rsp)
movq 0x158(%rsp), %rdi
callq 0xf2570
movq %rax, 0x148(%rsp)
leaq 0x150(%rsp), %rdi
leaq 0x148(%rsp), %rsi
callq 0xf25a0
testb $0x1, %al
jne 0xef365
jmp 0xef657
leaq 0x150(%rsp), %rdi
callq 0xf25e0
movq %rax, %rsi
leaq 0x110(%rsp), %rdi
callq 0x83050
leaq 0x110(%rsp), %rax
movq %rax, 0x108(%rsp)
movq 0x108(%rsp), %rdi
callq 0xf25f0
movq %rax, 0x100(%rsp)
movq 0x108(%rsp), %rdi
callq 0xf2620
movq %rax, 0xf8(%rsp)
leaq 0x100(%rsp), %rdi
leaq 0xf8(%rsp), %rsi
callq 0xf2650
testb $0x1, %al
jne 0xef3da
jmp 0xef614
leaq 0x100(%rsp), %rdi
callq 0xf2670
movq %rax, %rsi
leaq 0xb8(%rsp), %rdi
callq 0x83920
jmp 0xef3f9
movq 0xb8(%rsp), %rax
movq %rax, 0xa0(%rsp)
movq 0x5cba0(%rip), %rdi     # 0x14bfb0
leaq 0xe726(%rip), %rsi      # 0xfdb3d
callq 0x8330
movq %rax, 0x18(%rsp)
jmp 0xef423
movq 0xa0(%rsp), %rsi
addq $0x8, %rsi
leaq 0xe6ac(%rip), %rdx      # 0xfdae2
leaq 0x60(%rsp), %rdi
callq 0xc720
jmp 0xef442
movq 0xa0(%rsp), %rax
movl 0x28(%rax), %esi
leaq 0x40(%rsp), %rdi
callq 0xc7b0
jmp 0xef459
leaq 0x80(%rsp), %rdi
leaq 0x60(%rsp), %rsi
leaq 0x40(%rsp), %rdx
callq 0xc630
jmp 0xef472
movq 0x18(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0x8310
movq %rax, 0x10(%rsp)
jmp 0xef48b
movq 0x10(%rsp), %rdi
leaq 0xe6b0(%rip), %rsi      # 0xfdb47
callq 0x8330
movq %rax, 0x8(%rsp)
jmp 0xef4a3
movq 0x8(%rsp), %rdi
movq 0x5cad1(%rip), %rsi     # 0x14bf80
callq 0x8380
jmp 0xef4b6
leaq 0x80(%rsp), %rdi
callq 0x8728
leaq 0x40(%rsp), %rdi
callq 0x8728
leaq 0x60(%rsp), %rdi
callq 0x8728
leaq 0xb8(%rsp), %rax
addq $0x8, %rax
movq %rax, 0x38(%rsp)
movq 0x38(%rsp), %rdi
callq 0x845a0
movq %rax, 0x30(%rsp)
movq 0x38(%rsp), %rdi
callq 0xf2490
movq %rax, 0x28(%rsp)
leaq 0x30(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0xf24c0
testb $0x1, %al
jne 0xef51e
jmp 0xef5e6
leaq 0x30(%rsp), %rdi
callq 0x845d0
movq (%rax), %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rdi
movq 0x5ca34(%rip), %rsi     # 0x14bf70
callq 0x441d0
jmp 0xef543
jmp 0xef545
leaq 0x30(%rsp), %rdi
callq 0xf24e0
jmp 0xef506
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xb0(%rsp)
movl %eax, 0xac(%rsp)
jmp 0xef648
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xb0(%rsp)
movl %eax, 0xac(%rsp)
jmp 0xef605
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xb0(%rsp)
movl %eax, 0xac(%rsp)
jmp 0xef5da
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xb0(%rsp)
movl %eax, 0xac(%rsp)
jmp 0xef5d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xb0(%rsp)
movl %eax, 0xac(%rsp)
leaq 0x80(%rsp), %rdi
callq 0x8728
leaq 0x40(%rsp), %rdi
callq 0x8728
leaq 0x60(%rsp), %rdi
callq 0x8728
jmp 0xef605
leaq 0xb8(%rsp), %rdi
callq 0x4a9b0
leaq 0x100(%rsp), %rdi
callq 0xf2690
jmp 0xef3bc
leaq 0xb8(%rsp), %rdi
callq 0x4a9b0
jmp 0xef648
movq 0x5c995(%rip), %rdi     # 0x14bfb0
leaq 0xe570(%rip), %rsi      # 0xfdb92
callq 0x8330
jmp 0xef629
leaq 0x110(%rsp), %rdi
callq 0x4a730
leaq 0x150(%rsp), %rdi
callq 0xf26c0
jmp 0xef347
leaq 0x110(%rsp), %rdi
callq 0x4a730
jmp 0xef687
jmp 0xef659
leaq 0x170(%rsp), %rdi
callq 0x49330
jmp 0xef2d1
jmp 0xef66d
leaq 0x190(%rsp), %rdi
callq 0x49260
jmp 0xef25d
addq $0x1a8, %rsp            # imm = 0x1A8
retq
movq 0xb0(%rsp), %rdi
callq 0x8670
nopw %cs:(%rax,%rax)