// File: luooofan[P]hblzbd_compiler/src/Pass/reach_define.cpp
// Function: ReachDefine::GetGenKill(ir::IR*, IRFunction*)
std::pair<std::unordered_set<ir::IR *>, std::unordered_set<ir::IR *>> ReachDefine::GetGenKill(ir::IR *ir,
                                                                                              IRFunction *func) {
  std::unordered_set<ir::IR *> gen;
  std::unordered_set<ir::IR *> kill;

  if (ir->res_.scope_id_ == 0) return {gen, kill};

  if (ir::IR::OpKind::ADD == ir->op_ || ir::IR::OpKind::SUB == ir->op_ || ir::IR::OpKind::MUL == ir->op_ ||
      ir::IR::OpKind::DIV == ir->op_ || ir::IR::OpKind::MOD == ir->op_) {
    gen.insert(ir);

    std::string res_str = ir->res_.name_ + "_#" + std::to_string(ir->res_.scope_id_);
    for (auto m : func->def_pre_var_[res_str]) {
      if (ir != m) {
        kill.insert(m);
      }
    }
  } else if (ir::IR::OpKind::NOT == ir->op_ || ir::IR::OpKind::NEG == ir->op_) {
    gen.insert(ir);

    std::string res_str = ir->res_.name_ + "_#" + std::to_string(ir->res_.scope_id_);

    for (auto m : func->def_pre_var_[res_str]) {
      if (ir != m) {
        kill.insert(m);
      }
    }
  } else if (ir::IR::OpKind::LABEL == ir->op_) {
    return {gen, kill};
  } else if (ir::IR::OpKind::PARAM == ir->op_) {
    return {gen, kill};
  } else if (ir::IR::OpKind::CALL == ir->op_) {
    return {gen, kill};
  } else if (ir::IR::OpKind::RET == ir->op_) {
    return {gen, kill};
  } else if (ir::IR::OpKind::GOTO == ir->op_) {
    return {gen, kill};
  } else if (ir::IR::OpKind::ASSIGN == ir->op_) {
    gen.insert(ir);
    std::string res_str = ir->res_.name_ + "_#" + std::to_string(ir->res_.scope_id_);

    for (auto m : func->def_pre_var_[res_str]) {
      if (ir != m) {
        kill.insert(m);
      }
    }
  } else if (ir::IR::OpKind::JEQ == ir->op_ || ir::IR::OpKind::JNE == ir->op_ || ir::IR::OpKind::JLT == ir->op_ ||
             ir::IR::OpKind::JLE == ir->op_ || ir::IR::OpKind::JGT == ir->op_ || ir::IR::OpKind::JGE == ir->op_) {
    return {gen, kill};
  } else if (ir::IR::OpKind::VOID == ir->op_) {
    return {gen, kill};
  } else if (ir::IR::OpKind::ASSIGN_OFFSET == ir->op_) {
    gen.insert(ir);
    std::string res_str = ir->res_.name_ + "_#" + std::to_string(ir->res_.scope_id_);

    for (auto m : func->def_pre_var_[res_str]) {
      if (ir != m) {
        kill.insert(m);
      }
    }
  } else if (ir::IR::OpKind::PHI == ir->op_) {
    printf("我就不信我这个pass会有PHI\n");
  } else if (ir::IR::OpKind::ALLOCA == ir->op_) {
    return {gen, kill};
  } else if (ir::IR::OpKind::DECLARE == ir->op_) {
    return {gen, kill};
  } else {
    MyAssert(0);
  }

  return {gen, kill};
}

// Assembly:
subq $0x3f8, %rsp            # imm = 0x3F8
movq %rdi, 0xc8(%rsp)
movq %rdi, %rax
movq %rax, 0xd0(%rsp)
movq %rdi, 0x3f0(%rsp)
movq %rsi, 0x3e8(%rsp)
movq %rdx, 0x3e0(%rsp)
movq %rcx, 0x3d8(%rsp)
leaq 0x3a0(%rsp), %rdi
callq 0x18d90
leaq 0x368(%rsp), %rdi
callq 0x18d90
movq 0x3e0(%rsp), %rax
cmpl $0x0, 0xb0(%rax)
jne 0xf164d
movq 0xc8(%rsp), %rdi
leaq 0x3a0(%rsp), %rsi
leaq 0x368(%rsp), %rdx
callq 0xf2a90
jmp 0xf1624
movl $0x1, 0x358(%rsp)
jmp 0xf2335
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x360(%rsp)
movl %eax, 0x35c(%rsp)
jmp 0xf235f
movq 0x3e0(%rsp), %rcx
xorl %eax, %eax
cmpl (%rcx), %eax
je 0xf16a3
movq 0x3e0(%rsp), %rcx
movl $0x1, %eax
cmpl (%rcx), %eax
je 0xf16a3
movq 0x3e0(%rsp), %rcx
movl $0x2, %eax
cmpl (%rcx), %eax
je 0xf16a3
movq 0x3e0(%rsp), %rcx
movl $0x3, %eax
cmpl (%rcx), %eax
je 0xf16a3
movq 0x3e0(%rsp), %rcx
movl $0x4, %eax
cmpl (%rcx), %eax
jne 0xf18e6
leaq 0x3a0(%rsp), %rdi
leaq 0x3e0(%rsp), %rsi
callq 0xf2710
movb %dl, 0xbf(%rsp)
movq %rax, 0xc0(%rsp)
jmp 0xf16c9
movb 0xbf(%rsp), %al
movq 0xc0(%rsp), %rcx
movq %rcx, 0x348(%rsp)
movb %al, 0x350(%rsp)
movq 0x3e0(%rsp), %rsi
addq $0x90, %rsi
leaq 0xc3e5(%rip), %rdx      # 0xfdae2
leaq 0x308(%rsp), %rdi
callq 0xc720
jmp 0xf170c
movq 0x3e0(%rsp), %rax
movl 0xb0(%rax), %esi
leaq 0x2e8(%rsp), %rdi
callq 0xc7b0
jmp 0xf1729
leaq 0x328(%rsp), %rdi
leaq 0x308(%rsp), %rsi
leaq 0x2e8(%rsp), %rdx
callq 0xc630
jmp 0xf1748
leaq 0x2e8(%rsp), %rdi
callq 0x8728
leaq 0x308(%rsp), %rdi
callq 0x8728
movq 0x3d8(%rsp), %rdi
addq $0x60, %rdi
leaq 0x328(%rsp), %rsi
callq 0xf27b0
movq %rax, 0xb0(%rsp)
jmp 0xf1785
movq 0xb0(%rsp), %rax
movq %rax, 0x2e0(%rsp)
movq 0x2e0(%rsp), %rdi
callq 0x845a0
movq %rax, 0x2d8(%rsp)
movq 0x2e0(%rsp), %rdi
callq 0xf2490
movq %rax, 0x2d0(%rsp)
leaq 0x2d8(%rsp), %rdi
leaq 0x2d0(%rsp), %rsi
callq 0xf24c0
testb $0x1, %al
jne 0xf17dd
jmp 0xf18d4
leaq 0x2d8(%rsp), %rdi
callq 0x845d0
movq (%rax), %rax
movq %rax, 0x2c8(%rsp)
movq 0x3e0(%rsp), %rax
cmpq 0x2c8(%rsp), %rax
je 0xf18c0
leaq 0x368(%rsp), %rdi
leaq 0x2c8(%rsp), %rsi
callq 0xf2710
movb %dl, 0xa7(%rsp)
movq %rax, 0xa8(%rsp)
jmp 0xf1831
movb 0xa7(%rsp), %al
movq 0xa8(%rsp), %rcx
movq %rcx, 0x2b8(%rsp)
movb %al, 0x2c0(%rsp)
jmp 0xf18c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x360(%rsp)
movl %eax, 0x35c(%rsp)
jmp 0xf1888
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x360(%rsp)
movl %eax, 0x35c(%rsp)
leaq 0x2e8(%rsp), %rdi
callq 0x8728
leaq 0x308(%rsp), %rdi
callq 0x8728
jmp 0xf235f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x360(%rsp)
movl %eax, 0x35c(%rsp)
leaq 0x328(%rsp), %rdi
callq 0x8728
jmp 0xf235f
jmp 0xf18c2
leaq 0x2d8(%rsp), %rdi
callq 0xf24e0
jmp 0xf17bf
leaq 0x328(%rsp), %rdi
callq 0x8728
jmp 0xf230b
movq 0x3e0(%rsp), %rcx
movl $0x5, %eax
cmpl (%rcx), %eax
je 0xf190c
movq 0x3e0(%rsp), %rcx
movl $0x6, %eax
cmpl (%rcx), %eax
jne 0xf1b49
leaq 0x3a0(%rsp), %rdi
leaq 0x3e0(%rsp), %rsi
callq 0xf2710
movb %dl, 0x97(%rsp)
movq %rax, 0x98(%rsp)
jmp 0xf1932
movb 0x97(%rsp), %al
movq 0x98(%rsp), %rcx
movq %rcx, 0x2a8(%rsp)
movb %al, 0x2b0(%rsp)
movq 0x3e0(%rsp), %rsi
addq $0x90, %rsi
leaq 0xc17c(%rip), %rdx      # 0xfdae2
leaq 0x268(%rsp), %rdi
callq 0xc720
jmp 0xf1975
movq 0x3e0(%rsp), %rax
movl 0xb0(%rax), %esi
leaq 0x248(%rsp), %rdi
callq 0xc7b0
jmp 0xf1992
leaq 0x288(%rsp), %rdi
leaq 0x268(%rsp), %rsi
leaq 0x248(%rsp), %rdx
callq 0xc630
jmp 0xf19b1
leaq 0x248(%rsp), %rdi
callq 0x8728
leaq 0x268(%rsp), %rdi
callq 0x8728
movq 0x3d8(%rsp), %rdi
addq $0x60, %rdi
leaq 0x288(%rsp), %rsi
callq 0xf27b0
movq %rax, 0x88(%rsp)
jmp 0xf19ee
movq 0x88(%rsp), %rax
movq %rax, 0x240(%rsp)
movq 0x240(%rsp), %rdi
callq 0x845a0
movq %rax, 0x238(%rsp)
movq 0x240(%rsp), %rdi
callq 0xf2490
movq %rax, 0x230(%rsp)
leaq 0x238(%rsp), %rdi
leaq 0x230(%rsp), %rsi
callq 0xf24c0
testb $0x1, %al
jne 0xf1a46
jmp 0xf1b37
leaq 0x238(%rsp), %rdi
callq 0x845d0
movq (%rax), %rax
movq %rax, 0x228(%rsp)
movq 0x3e0(%rsp), %rax
cmpq 0x228(%rsp), %rax
je 0xf1b23
leaq 0x368(%rsp), %rdi
leaq 0x228(%rsp), %rsi
callq 0xf2710
movb %dl, 0x7f(%rsp)
movq %rax, 0x80(%rsp)
jmp 0xf1a97
movb 0x7f(%rsp), %al
movq 0x80(%rsp), %rcx
movq %rcx, 0x218(%rsp)
movb %al, 0x220(%rsp)
jmp 0xf1b23
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x360(%rsp)
movl %eax, 0x35c(%rsp)
jmp 0xf1aeb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x360(%rsp)
movl %eax, 0x35c(%rsp)
leaq 0x248(%rsp), %rdi
callq 0x8728
leaq 0x268(%rsp), %rdi
callq 0x8728
jmp 0xf235f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x360(%rsp)
movl %eax, 0x35c(%rsp)
leaq 0x288(%rsp), %rdi
callq 0x8728
jmp 0xf235f
jmp 0xf1b25
leaq 0x238(%rsp), %rdi
callq 0xf24e0
jmp 0xf1a28
leaq 0x288(%rsp), %rdi
callq 0x8728
jmp 0xf2309
movq 0x3e0(%rsp), %rcx
movl $0x7, %eax
cmpl (%rcx), %eax
jne 0xf1b89
movq 0xc8(%rsp), %rdi
leaq 0x3a0(%rsp), %rsi
leaq 0x368(%rsp), %rdx
callq 0xf2a90
jmp 0xf1b79
movl $0x1, 0x358(%rsp)
jmp 0xf2335
movq 0x3e0(%rsp), %rcx
movl $0x8, %eax
cmpl (%rcx), %eax
jne 0xf1bc9
movq 0xc8(%rsp), %rdi
leaq 0x3a0(%rsp), %rsi
leaq 0x368(%rsp), %rdx
callq 0xf2a90
jmp 0xf1bb9
movl $0x1, 0x358(%rsp)
jmp 0xf2335
movq 0x3e0(%rsp), %rcx
movl $0x9, %eax
cmpl (%rcx), %eax
jne 0xf1c09
movq 0xc8(%rsp), %rdi
leaq 0x3a0(%rsp), %rsi
leaq 0x368(%rsp), %rdx
callq 0xf2a90
jmp 0xf1bf9
movl $0x1, 0x358(%rsp)
jmp 0xf2335
movq 0x3e0(%rsp), %rcx
movl $0xa, %eax
cmpl (%rcx), %eax
jne 0xf1c49
movq 0xc8(%rsp), %rdi
leaq 0x3a0(%rsp), %rsi
leaq 0x368(%rsp), %rdx
callq 0xf2a90
jmp 0xf1c39
movl $0x1, 0x358(%rsp)
jmp 0xf2335
movq 0x3e0(%rsp), %rcx
movl $0xb, %eax
cmpl (%rcx), %eax
jne 0xf1c89
movq 0xc8(%rsp), %rdi
leaq 0x3a0(%rsp), %rsi
leaq 0x368(%rsp), %rdx
callq 0xf2a90
jmp 0xf1c79
movl $0x1, 0x358(%rsp)
jmp 0xf2335
movq 0x3e0(%rsp), %rcx
movl $0xc, %eax
cmpl (%rcx), %eax
jne 0xf1ec3
leaq 0x3a0(%rsp), %rdi
leaq 0x3e0(%rsp), %rsi
callq 0xf2710
movb %dl, 0x6f(%rsp)
movq %rax, 0x70(%rsp)
jmp 0xf1cbe
movb 0x6f(%rsp), %al
movq 0x70(%rsp), %rcx
movq %rcx, 0x208(%rsp)
movb %al, 0x210(%rsp)
movq 0x3e0(%rsp), %rsi
addq $0x90, %rsi
leaq 0xbdf6(%rip), %rdx      # 0xfdae2
leaq 0x1c8(%rsp), %rdi
callq 0xc720
jmp 0xf1cfb
movq 0x3e0(%rsp), %rax
movl 0xb0(%rax), %esi
leaq 0x1a8(%rsp), %rdi
callq 0xc7b0
jmp 0xf1d18
leaq 0x1e8(%rsp), %rdi
leaq 0x1c8(%rsp), %rsi
leaq 0x1a8(%rsp), %rdx
callq 0xc630
jmp 0xf1d37
leaq 0x1a8(%rsp), %rdi
callq 0x8728
leaq 0x1c8(%rsp), %rdi
callq 0x8728
movq 0x3d8(%rsp), %rdi
addq $0x60, %rdi
leaq 0x1e8(%rsp), %rsi
callq 0xf27b0
movq %rax, 0x60(%rsp)
jmp 0xf1d71
movq 0x60(%rsp), %rax
movq %rax, 0x1a0(%rsp)
movq 0x1a0(%rsp), %rdi
callq 0x845a0
movq %rax, 0x198(%rsp)
movq 0x1a0(%rsp), %rdi
callq 0xf2490
movq %rax, 0x190(%rsp)
leaq 0x198(%rsp), %rdi
leaq 0x190(%rsp), %rsi
callq 0xf24c0
testb $0x1, %al
jne 0xf1dc6
jmp 0xf1eb1
leaq 0x198(%rsp), %rdi
callq 0x845d0
movq (%rax), %rax
movq %rax, 0x188(%rsp)
movq 0x3e0(%rsp), %rax
cmpq 0x188(%rsp), %rax
je 0xf1e9d
leaq 0x368(%rsp), %rdi
leaq 0x188(%rsp), %rsi
callq 0xf2710
movb %dl, 0x57(%rsp)
movq %rax, 0x58(%rsp)
jmp 0xf1e14
movb 0x57(%rsp), %al
movq 0x58(%rsp), %rcx
movq %rcx, 0x178(%rsp)
movb %al, 0x180(%rsp)
jmp 0xf1e9d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x360(%rsp)
movl %eax, 0x35c(%rsp)
jmp 0xf1e65
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x360(%rsp)
movl %eax, 0x35c(%rsp)
leaq 0x1a8(%rsp), %rdi
callq 0x8728
leaq 0x1c8(%rsp), %rdi
callq 0x8728
jmp 0xf235f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x360(%rsp)
movl %eax, 0x35c(%rsp)
leaq 0x1e8(%rsp), %rdi
callq 0x8728
jmp 0xf235f
jmp 0xf1e9f
leaq 0x198(%rsp), %rdi
callq 0xf24e0
jmp 0xf1da8
leaq 0x1e8(%rsp), %rdi
callq 0x8728
jmp 0xf22fd
movq 0x3e0(%rsp), %rcx
movl $0xd, %eax
cmpl (%rcx), %eax
je 0xf1f29
movq 0x3e0(%rsp), %rcx
movl $0xe, %eax
cmpl (%rcx), %eax
je 0xf1f29
movq 0x3e0(%rsp), %rcx
movl $0xf, %eax
cmpl (%rcx), %eax
je 0xf1f29
movq 0x3e0(%rsp), %rcx
movl $0x10, %eax
cmpl (%rcx), %eax
je 0xf1f29
movq 0x3e0(%rsp), %rcx
movl $0x11, %eax
cmpl (%rcx), %eax
je 0xf1f29
movq 0x3e0(%rsp), %rcx
movl $0x12, %eax
cmpl (%rcx), %eax
jne 0xf1f58
movq 0xc8(%rsp), %rdi
leaq 0x3a0(%rsp), %rsi
leaq 0x368(%rsp), %rdx
callq 0xf2a90
jmp 0xf1f48
movl $0x1, 0x358(%rsp)
jmp 0xf2335
movq 0x3e0(%rsp), %rcx
movl $0x13, %eax
cmpl (%rcx), %eax
jne 0xf1f98
movq 0xc8(%rsp), %rdi
leaq 0x3a0(%rsp), %rsi
leaq 0x368(%rsp), %rdx
callq 0xf2a90
jmp 0xf1f88
movl $0x1, 0x358(%rsp)
jmp 0xf2335
movq 0x3e0(%rsp), %rcx
movl $0x14, %eax
cmpl (%rcx), %eax
jne 0xf21d2
leaq 0x3a0(%rsp), %rdi
leaq 0x3e0(%rsp), %rsi
callq 0xf2710
movb %dl, 0x47(%rsp)
movq %rax, 0x48(%rsp)
jmp 0xf1fcd
movb 0x47(%rsp), %al
movq 0x48(%rsp), %rcx
movq %rcx, 0x168(%rsp)
movb %al, 0x170(%rsp)
movq 0x3e0(%rsp), %rsi
addq $0x90, %rsi
leaq 0xbae7(%rip), %rdx      # 0xfdae2
leaq 0x128(%rsp), %rdi
callq 0xc720
jmp 0xf200a
movq 0x3e0(%rsp), %rax
movl 0xb0(%rax), %esi
leaq 0x108(%rsp), %rdi
callq 0xc7b0
jmp 0xf2027
leaq 0x148(%rsp), %rdi
leaq 0x128(%rsp), %rsi
leaq 0x108(%rsp), %rdx
callq 0xc630
jmp 0xf2046
leaq 0x108(%rsp), %rdi
callq 0x8728
leaq 0x128(%rsp), %rdi
callq 0x8728
movq 0x3d8(%rsp), %rdi
addq $0x60, %rdi
leaq 0x148(%rsp), %rsi
callq 0xf27b0
movq %rax, 0x38(%rsp)
jmp 0xf2080
movq 0x38(%rsp), %rax
movq %rax, 0x100(%rsp)
movq 0x100(%rsp), %rdi
callq 0x845a0
movq %rax, 0xf8(%rsp)
movq 0x100(%rsp), %rdi
callq 0xf2490
movq %rax, 0xf0(%rsp)
leaq 0xf8(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
callq 0xf24c0
testb $0x1, %al
jne 0xf20d5
jmp 0xf21c0
leaq 0xf8(%rsp), %rdi
callq 0x845d0
movq (%rax), %rax
movq %rax, 0xe8(%rsp)
movq 0x3e0(%rsp), %rax
cmpq 0xe8(%rsp), %rax
je 0xf21ac
leaq 0x368(%rsp), %rdi
leaq 0xe8(%rsp), %rsi
callq 0xf2710
movb %dl, 0x2f(%rsp)
movq %rax, 0x30(%rsp)
jmp 0xf2123
movb 0x2f(%rsp), %al
movq 0x30(%rsp), %rcx
movq %rcx, 0xd8(%rsp)
movb %al, 0xe0(%rsp)
jmp 0xf21ac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x360(%rsp)
movl %eax, 0x35c(%rsp)
jmp 0xf2174
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x360(%rsp)
movl %eax, 0x35c(%rsp)
leaq 0x108(%rsp), %rdi
callq 0x8728
leaq 0x128(%rsp), %rdi
callq 0x8728
jmp 0xf235f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x360(%rsp)
movl %eax, 0x35c(%rsp)
leaq 0x148(%rsp), %rdi
callq 0x8728
jmp 0xf235f
jmp 0xf21ae
leaq 0xf8(%rsp), %rdi
callq 0xf24e0
jmp 0xf20b7
leaq 0x148(%rsp), %rdi
callq 0x8728
jmp 0xf22f7
movq 0x3e0(%rsp), %rcx
movl $0x15, %eax
cmpl (%rcx), %eax
jne 0xf21f8
leaq 0xb9c4(%rip), %rdi      # 0xfdbae
xorl %eax, %eax
callq 0x8070
jmp 0xf21f3
jmp 0xf22f5
movq 0x3e0(%rsp), %rcx
movl $0x16, %eax
cmpl (%rcx), %eax
jne 0xf2238
movq 0xc8(%rsp), %rdi
leaq 0x3a0(%rsp), %rsi
leaq 0x368(%rsp), %rdx
callq 0xf2a90
jmp 0xf2228
movl $0x1, 0x358(%rsp)
jmp 0xf2335
movq 0x3e0(%rsp), %rcx
movl $0x17, %eax
cmpl (%rcx), %eax
jne 0xf2278
movq 0xc8(%rsp), %rdi
leaq 0x3a0(%rsp), %rsi
leaq 0x368(%rsp), %rdx
callq 0xf2a90
jmp 0xf2268
movl $0x1, 0x358(%rsp)
jmp 0xf2335
movq 0x59d69(%rip), %rdi     # 0x14bfe8
leaq 0x7e72(%rip), %rsi      # 0xfa0f8
callq 0x8330
movq %rax, 0x20(%rsp)
jmp 0xf2292
movq 0x20(%rsp), %rdi
leaq 0xb8f6(%rip), %rsi      # 0xfdb94
callq 0x8330
movq %rax, 0x18(%rsp)
jmp 0xf22aa
movq 0x18(%rsp), %rdi
leaq 0x9134(%rip), %rsi      # 0xfb3ea
callq 0x8330
movq %rax, 0x10(%rsp)
jmp 0xf22c2
movq 0x10(%rsp), %rdi
movl $0x15e, %esi            # imm = 0x15E
callq 0x8650
movq %rax, 0x8(%rsp)
jmp 0xf22d8
movq 0x8(%rsp), %rdi
movq 0x59c9c(%rip), %rsi     # 0x14bf80
callq 0x8380
jmp 0xf22eb
movl $0xff, %edi
callq 0x8460
jmp 0xf22f7
jmp 0xf22f9
jmp 0xf22fb
jmp 0xf22fd
jmp 0xf22ff
jmp 0xf2301
jmp 0xf2303
jmp 0xf2305
jmp 0xf2307
jmp 0xf2309
jmp 0xf230b
movq 0xc8(%rsp), %rdi
leaq 0x3a0(%rsp), %rsi
leaq 0x368(%rsp), %rdx
callq 0xf2a90
jmp 0xf232a
movl $0x1, 0x358(%rsp)
leaq 0x368(%rsp), %rdi
callq 0x494f0
leaq 0x3a0(%rsp), %rdi
callq 0x494f0
movq 0xd0(%rsp), %rax
addq $0x3f8, %rsp            # imm = 0x3F8
retq
leaq 0x368(%rsp), %rdi
callq 0x494f0
leaq 0x3a0(%rsp), %rdi
callq 0x494f0
movq 0x360(%rsp), %rdi
callq 0x8670
nopw %cs:(%rax,%rax)