// File: Kei18[P]pibt/./src/graph/graph.cpp
// Function: Graph::getPath(Node*, Node*, std::vector<Node*, std::allocator<Node*>>&, int (*)(Node*, Node*))
Nodes Graph::getPath(Node* _s, Node* _g,
                     Nodes &prohibitedNodes, int (*dist) (Node*, Node*))
{
  bool prohibited = !prohibitedNodes.empty();
  Nodes path, C;
  std::string key;

  // ==== fast implementation ====
  if (regFlg && !prohibited) {
    key = getKey(_s, _g);
    auto itrK = knownPaths.find(key);
    if (itrK != knownPaths.end()) {  // known
      path = itrK->second->path;
      return path;
    }
  }
  // =============================

  int f;
  bool invalid = true;

  // prepare node open hashtable
  boost::heap::fibonacci_heap<Fib_AN> OPEN;
  std::unordered_map<int, boost::heap::fibonacci_heap<Fib_AN>::handle_type> SEARCHED;
  std::unordered_set<int> CLOSE;
  AN* n = new AN { _s, 0, dist(_s, _g), nullptr };
  auto handle = OPEN.push(Fib_AN(n));
  SEARCHED.emplace(n->v->getId(), handle);

  while (!OPEN.empty()) {
    // argmin
    n = OPEN.top().node;

    // check goal condition
    if (n->v == _g) {
      invalid = false;
      break;
    }

    // ==== fast implementation ====
    key = getKey(n->v, _g);
    auto itrK = knownPaths.find(key);
    if (itrK != knownPaths.end()) {  // known
      Nodes kPath = itrK->second->path;
      bool valid = true;
      if (prohibited) {
        for (auto v : kPath) {
          if (inArray(v, prohibitedNodes)) {
            valid = false;
            break;
          }
        }
      }
      if (valid) {
        for (int i = 1; i < kPath.size(); ++i) {
          n = new AN { kPath[i], 0, 0, n };
        }
        invalid = false;
        break;
      }
    }
    // =============================

    // update list
    OPEN.pop();
    CLOSE.emplace(n->v->getId());

    // search neighbor
    C = neighbor(n->v);

    for (auto m : C) {
      if (prohibited && inArray(m, prohibitedNodes)) continue;
      if (CLOSE.find(m->getId()) != CLOSE.end()) continue;
      f = n->g + 1 + dist(m, _g);

      // ==== fast implementation ====
      if (regFlg) {
        key = getKey(m, _g);
        auto itrK = knownPaths.find(key);
        if (itrK != knownPaths.end()) {
          f = n->g + 1 + itrK->second->path.size() - 1;
        }
      }
      // =============================

      auto itrS = SEARCHED.find(m->getId());
      if (itrS == SEARCHED.end()) {  // new node
        AN* l = new AN { m, n->g + 1, f, n };
        auto handle = OPEN.push(Fib_AN(l));
        SEARCHED.emplace(l->v->getId(), handle);
      } else {
        auto handle = itrS->second;
        AN* l = (*handle).node;
        if (l->f > f) {
          l->g = n->g + 1;
          l->f = f;
          l->p = n;
          OPEN.increase(handle);
        }
      }
    }
  }

  if (invalid) return path;

  // back tracking
  while (n != nullptr) {
    path.push_back(n->v);
    n = n->p;
  }
  std::reverse(path.begin(), path.end());

  // register path
  if (regFlg && !prohibited) registerPath(path);

  return path;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x430, %rsp            # imm = 0x430
movq %rdi, -0x318(%rbp)
movq %rdi, %rax
movq %rax, -0x320(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x310(%rbp)
movq -0x28(%rbp), %rdi
callq 0x3ec00
movq -0x318(%rbp), %rdi
xorb $-0x1, %al
andb $0x1, %al
movb %al, -0x31(%rbp)
movb $0x0, -0x32(%rbp)
callq 0x3e880
leaq -0x50(%rbp), %rdi
callq 0x3e880
leaq -0x70(%rbp), %rdi
callq 0x86b0
movq -0x310(%rbp), %rax
testb $0x1, 0x9(%rax)
je 0x3cb0f
testb $0x1, -0x31(%rbp)
jne 0x3cb0f
movq -0x310(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
leaq -0x90(%rbp), %rdi
callq 0x3d630
jmp 0x3ca39
leaq -0x70(%rbp), %rdi
movq %rdi, -0x330(%rbp)
leaq -0x90(%rbp), %rsi
movq %rsi, -0x338(%rbp)
callq 0x85f0
movq -0x338(%rbp), %rdi
callq 0x8330
movq -0x310(%rbp), %rdi
movq -0x330(%rbp), %rsi
addq $0x28, %rdi
callq 0x3ec40
movq %rax, -0x328(%rbp)
jmp 0x3ca83
movq -0x310(%rbp), %rdi
movq -0x328(%rbp), %rax
movq %rax, -0xa8(%rbp)
addq $0x28, %rdi
callq 0x3ea40
movq %rax, -0xb0(%rbp)
leaq -0xa8(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x3ea70
testb $0x1, %al
jne 0x3cac1
jmp 0x3cb0d
leaq -0xa8(%rbp), %rdi
callq 0x3ec70
movq -0x318(%rbp), %rdi
movq 0x20(%rax), %rsi
addq $0x10, %rsi
callq 0x3eca0
jmp 0x3cae3
movb $0x1, -0x32(%rbp)
movl $0x1, -0xb4(%rbp)
jmp 0x3d5c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0x3d5e1
jmp 0x3cb0f
movb $0x1, -0xb9(%rbp)
leaq -0xe8(%rbp), %rdi
leaq -0xe9(%rbp), %rsi
callq 0x3eef0
jmp 0x3cb2b
leaq -0x128(%rbp), %rdi
callq 0x3ef50
leaq -0x160(%rbp), %rdi
callq 0x3ef70
movl $0x18, %edi
callq 0x84e0
movq %rax, -0x340(%rbp)
jmp 0x3cb56
movq -0x340(%rbp), %rax
movq -0x18(%rbp), %rcx
movq %rcx, (%rax)
movl $0x0, 0x8(%rax)
addq $0xc, %rax
movq %rax, -0x350(%rbp)
movq -0x30(%rbp), %rax
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq *%rax
movl %eax, -0x344(%rbp)
jmp 0x3cb8c
movq -0x340(%rbp), %rax
movq -0x350(%rbp), %rcx
movl -0x344(%rbp), %edx
movl %edx, (%rcx)
movq $0x0, 0x10(%rax)
movq %rax, -0x168(%rbp)
movq -0x168(%rbp), %rsi
leaq -0x178(%rbp), %rdi
callq 0x3f050
jmp 0x3cbc6
leaq -0xe8(%rbp), %rdi
leaq -0x178(%rbp), %rsi
callq 0x3ef90
movq %rax, -0x358(%rbp)
jmp 0x3cbe2
movq -0x358(%rbp), %rax
movq %rax, -0x170(%rbp)
movq -0x168(%rbp), %rax
movq (%rax), %rdi
callq 0x3ae00
movl %eax, -0x35c(%rbp)
jmp 0x3cc07
movl -0x35c(%rbp), %eax
movl %eax, -0x17c(%rbp)
leaq -0x128(%rbp), %rdi
leaq -0x17c(%rbp), %rsi
leaq -0x170(%rbp), %rdx
callq 0x3f070
movb %dl, -0x369(%rbp)
movq %rax, -0x368(%rbp)
jmp 0x3cc3c
movb -0x369(%rbp), %al
movq -0x368(%rbp), %rcx
movq %rcx, -0x190(%rbp)
movb %al, -0x188(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0x3f0c0
movb %al, -0x36a(%rbp)
jmp 0x3cc6a
movb -0x36a(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x3cc7b
jmp 0x3d4b7
leaq -0xe8(%rbp), %rdi
callq 0x3f0f0
movq %rax, -0x378(%rbp)
jmp 0x3cc90
movq -0x378(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x168(%rbp)
movq -0x168(%rbp), %rax
movq (%rax), %rax
cmpq -0x20(%rbp), %rax
jne 0x3ccfc
movb $0x0, -0xb9(%rbp)
jmp 0x3d4b7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0x3d5a1
movq -0x340(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
movl $0x18, %esi
callq 0x84f0
jmp 0x3d5a1
movq -0x310(%rbp), %rsi
movq -0x168(%rbp), %rax
movq (%rax), %rdx
movq -0x20(%rbp), %rcx
leaq -0x1b0(%rbp), %rdi
callq 0x3d630
jmp 0x3cd1f
leaq -0x70(%rbp), %rdi
movq %rdi, -0x388(%rbp)
leaq -0x1b0(%rbp), %rsi
movq %rsi, -0x390(%rbp)
callq 0x85f0
movq -0x390(%rbp), %rdi
callq 0x8330
movq -0x310(%rbp), %rdi
movq -0x388(%rbp), %rsi
addq $0x28, %rdi
callq 0x3ec40
movq %rax, -0x380(%rbp)
jmp 0x3cd69
movq -0x310(%rbp), %rdi
movq -0x380(%rbp), %rax
movq %rax, -0x1b8(%rbp)
addq $0x28, %rdi
callq 0x3ea40
movq %rax, -0x1c0(%rbp)
leaq -0x1b8(%rbp), %rdi
leaq -0x1c0(%rbp), %rsi
callq 0x3ea70
testb $0x1, %al
jne 0x3cdaa
jmp 0x3cf8b
leaq -0x1b8(%rbp), %rdi
callq 0x3ec70
movq 0x20(%rax), %rsi
addq $0x10, %rsi
leaq -0x1d8(%rbp), %rdi
callq 0x3aff0
jmp 0x3cdcc
movb $0x1, -0x1d9(%rbp)
testb $0x1, -0x31(%rbp)
je 0x3cea5
leaq -0x1d8(%rbp), %rax
movq %rax, -0x1e8(%rbp)
movq -0x1e8(%rbp), %rdi
callq 0x3b730
movq %rax, -0x1f0(%rbp)
movq -0x1e8(%rbp), %rdi
callq 0x3b760
movq %rax, -0x1f8(%rbp)
leaq -0x1f0(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
callq 0x3b790
testb $0x1, %al
jne 0x3ce2a
jmp 0x3cea3
leaq -0x1f0(%rbp), %rdi
callq 0x3bb00
movq (%rax), %rax
movq %rax, -0x200(%rbp)
movq -0x200(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x3d7c0
movb %al, -0x391(%rbp)
jmp 0x3ce58
movb -0x391(%rbp), %al
testb $0x1, %al
jne 0x3ce64
jmp 0x3ce90
movb $0x0, -0x1d9(%rbp)
jmp 0x3cea3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x1d8(%rbp), %rdi
callq 0xd7d0
jmp 0x3d5a1
jmp 0x3ce92
leaq -0x1f0(%rbp), %rdi
callq 0x3bad0
jmp 0x3ce11
jmp 0x3cea5
testb $0x1, -0x1d9(%rbp)
je 0x3cf62
movl $0x1, -0x204(%rbp)
movslq -0x204(%rbp), %rax
movq %rax, -0x3a0(%rbp)
leaq -0x1d8(%rbp), %rdi
callq 0x3b0e0
movq %rax, %rcx
movq -0x3a0(%rbp), %rax
cmpq %rcx, %rax
jae 0x3cf4f
movl $0x18, %edi
callq 0x84e0
movq %rax, -0x3a8(%rbp)
jmp 0x3cef8
movslq -0x204(%rbp), %rsi
leaq -0x1d8(%rbp), %rdi
callq 0xda90
movq %rax, %rcx
movq -0x3a8(%rbp), %rax
movq (%rcx), %rcx
movq %rcx, (%rax)
movl $0x0, 0x8(%rax)
movl $0x0, 0xc(%rax)
movq -0x168(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq %rax, -0x168(%rbp)
movl -0x204(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x204(%rbp)
jmp 0x3cebc
movb $0x0, -0xb9(%rbp)
movl $0x3, -0xb4(%rbp)
jmp 0x3cf6c
movl $0x0, -0xb4(%rbp)
leaq -0x1d8(%rbp), %rdi
callq 0xd7d0
movl -0xb4(%rbp), %eax
testl %eax, %eax
je 0x3cf89
jmp 0x3cf84
jmp 0x3d4b7
jmp 0x3cf8b
leaq -0xe8(%rbp), %rdi
callq 0x3f150
jmp 0x3cf99
movq -0x168(%rbp), %rax
movq (%rax), %rdi
callq 0x3ae00
movl %eax, -0x3ac(%rbp)
jmp 0x3cfb0
movl -0x3ac(%rbp), %eax
movl %eax, -0x208(%rbp)
leaq -0x160(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x3f1f0
movb %dl, -0x3b9(%rbp)
movq %rax, -0x3b8(%rbp)
jmp 0x3cfde
movq -0x310(%rbp), %rsi
movb -0x3b9(%rbp), %al
movq -0x3b8(%rbp), %rcx
movq %rcx, -0x218(%rbp)
movb %al, -0x210(%rbp)
movq -0x168(%rbp), %rax
movq (%rax), %rdx
leaq -0x230(%rbp), %rdi
callq 0x3c8d0
jmp 0x3d017
leaq -0x50(%rbp), %rdi
leaq -0x230(%rbp), %rsi
callq 0x3f230
leaq -0x230(%rbp), %rdi
callq 0xd7d0
leaq -0x50(%rbp), %rax
movq %rax, -0x238(%rbp)
movq -0x238(%rbp), %rdi
callq 0x3b730
movq %rax, -0x240(%rbp)
movq -0x238(%rbp), %rdi
callq 0x3b760
movq %rax, -0x248(%rbp)
leaq -0x240(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0x3b790
testb $0x1, %al
jne 0x3d080
jmp 0x3d4b2
leaq -0x240(%rbp), %rdi
callq 0x3bb00
movq (%rax), %rax
movq %rax, -0x250(%rbp)
testb $0x1, -0x31(%rbp)
je 0x3d0c5
movq -0x250(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x3d7c0
movb %al, -0x3ba(%rbp)
jmp 0x3d0b4
movb -0x3ba(%rbp), %al
testb $0x1, %al
jne 0x3d0c0
jmp 0x3d0c5
jmp 0x3d4a1
movq -0x250(%rbp), %rdi
callq 0x3ae00
movl %eax, -0x3c0(%rbp)
jmp 0x3d0d9
movl -0x3c0(%rbp), %eax
movl %eax, -0x25c(%rbp)
leaq -0x160(%rbp), %rdi
leaq -0x25c(%rbp), %rsi
callq 0x3f290
movq %rax, -0x3c8(%rbp)
jmp 0x3d101
movq -0x3c8(%rbp), %rax
movq %rax, -0x258(%rbp)
leaq -0x160(%rbp), %rdi
callq 0x3f2c0
movq %rax, -0x268(%rbp)
leaq -0x258(%rbp), %rdi
leaq -0x268(%rbp), %rsi
callq 0x3f260
testb $0x1, %al
jne 0x3d13b
jmp 0x3d140
jmp 0x3d4a1
movq -0x168(%rbp), %rax
movl 0x8(%rax), %eax
incl %eax
movl %eax, -0x3d0(%rbp)
movq -0x30(%rbp), %rax
movq -0x250(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq *%rax
movl %eax, -0x3cc(%rbp)
jmp 0x3d16b
movq -0x310(%rbp), %rax
movl -0x3cc(%rbp), %edx
movl -0x3d0(%rbp), %ecx
addl %edx, %ecx
movl %ecx, -0xb8(%rbp)
testb $0x1, 0x9(%rax)
je 0x3d280
movq -0x310(%rbp), %rsi
movq -0x250(%rbp), %rdx
movq -0x20(%rbp), %rcx
leaq -0x288(%rbp), %rdi
callq 0x3d630
jmp 0x3d1b0
leaq -0x70(%rbp), %rdi
movq %rdi, -0x3e0(%rbp)
leaq -0x288(%rbp), %rsi
movq %rsi, -0x3e8(%rbp)
callq 0x85f0
movq -0x3e8(%rbp), %rdi
callq 0x8330
movq -0x310(%rbp), %rdi
movq -0x3e0(%rbp), %rsi
addq $0x28, %rdi
callq 0x3ec40
movq %rax, -0x3d8(%rbp)
jmp 0x3d1fa
movq -0x310(%rbp), %rdi
movq -0x3d8(%rbp), %rax
movq %rax, -0x290(%rbp)
addq $0x28, %rdi
callq 0x3ea40
movq %rax, -0x298(%rbp)
leaq -0x290(%rbp), %rdi
leaq -0x298(%rbp), %rsi
callq 0x3ea70
testb $0x1, %al
jne 0x3d238
jmp 0x3d27e
movq -0x168(%rbp), %rax
movl 0x8(%rax), %eax
addl $0x1, %eax
cltq
movq %rax, -0x3f0(%rbp)
leaq -0x290(%rbp), %rdi
callq 0x3ec70
movq 0x20(%rax), %rdi
addq $0x10, %rdi
callq 0x3b0e0
movq %rax, %rcx
movq -0x3f0(%rbp), %rax
addq %rcx, %rax
subq $0x1, %rax
movl %eax, -0xb8(%rbp)
jmp 0x3d280
movq -0x250(%rbp), %rdi
callq 0x3ae00
movl %eax, -0x3f4(%rbp)
jmp 0x3d294
movl -0x3f4(%rbp), %eax
movl %eax, -0x2a4(%rbp)
leaq -0x128(%rbp), %rdi
leaq -0x2a4(%rbp), %rsi
callq 0x3f2f0
movq %rax, -0x400(%rbp)
jmp 0x3d2bc
movq -0x400(%rbp), %rax
movq %rax, -0x2a0(%rbp)
leaq -0x128(%rbp), %rdi
callq 0x3f350
movq %rax, -0x2b0(%rbp)
leaq -0x2a0(%rbp), %rdi
leaq -0x2b0(%rbp), %rsi
callq 0x3f320
testb $0x1, %al
jne 0x3d2f9
jmp 0x3d3f1
movl $0x18, %edi
callq 0x84e0
movq %rax, -0x408(%rbp)
jmp 0x3d30c
movq -0x408(%rbp), %rax
movq -0x250(%rbp), %rcx
movq %rcx, (%rax)
movq -0x168(%rbp), %rcx
movl 0x8(%rcx), %ecx
incl %ecx
movl %ecx, 0x8(%rax)
movl -0xb8(%rbp), %ecx
movl %ecx, 0xc(%rax)
movq -0x168(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq %rax, -0x2b8(%rbp)
movq -0x2b8(%rbp), %rsi
leaq -0x2c8(%rbp), %rdi
callq 0x3f050
jmp 0x3d35c
leaq -0xe8(%rbp), %rdi
leaq -0x2c8(%rbp), %rsi
callq 0x3ef90
movq %rax, -0x410(%rbp)
jmp 0x3d378
movq -0x410(%rbp), %rax
movq %rax, -0x2c0(%rbp)
movq -0x2b8(%rbp), %rax
movq (%rax), %rdi
callq 0x3ae00
movl %eax, -0x414(%rbp)
jmp 0x3d39d
movl -0x414(%rbp), %eax
movl %eax, -0x2cc(%rbp)
leaq -0x128(%rbp), %rdi
leaq -0x2cc(%rbp), %rsi
leaq -0x2c0(%rbp), %rdx
callq 0x3f070
movb %dl, -0x421(%rbp)
movq %rax, -0x420(%rbp)
jmp 0x3d3d2
movb -0x421(%rbp), %al
movq -0x420(%rbp), %rcx
movq %rcx, -0x2e0(%rbp)
movb %al, -0x2d8(%rbp)
jmp 0x3d49f
leaq -0x2a0(%rbp), %rdi
callq 0x3f380
movq 0x8(%rax), %rax
movq %rax, -0x2e8(%rbp)
leaq -0x2e8(%rbp), %rdi
callq 0x3f3b0
movq %rax, -0x430(%rbp)
jmp 0x3d41d
movq -0x430(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x2f0(%rbp)
movq -0x2f0(%rbp), %rax
movl 0xc(%rax), %eax
cmpl -0xb8(%rbp), %eax
jle 0x3d49d
movq -0x168(%rbp), %rax
movl 0x8(%rax), %ecx
incl %ecx
movq -0x2f0(%rbp), %rax
movl %ecx, 0x8(%rax)
movl -0xb8(%rbp), %ecx
movq -0x2f0(%rbp), %rax
movl %ecx, 0xc(%rax)
movq -0x168(%rbp), %rcx
movq -0x2f0(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x2e8(%rbp), %rax
movq %rax, -0x2f8(%rbp)
movq -0x2f8(%rbp), %rsi
leaq -0xe8(%rbp), %rdi
callq 0x3f3e0
jmp 0x3d49b
jmp 0x3d49d
jmp 0x3d49f
jmp 0x3d4a1
leaq -0x240(%rbp), %rdi
callq 0x3bad0
jmp 0x3d064
jmp 0x3cc56
testb $0x1, -0xb9(%rbp)
je 0x3d4d3
movb $0x1, -0x32(%rbp)
movl $0x1, -0xb4(%rbp)
jmp 0x3d57b
jmp 0x3d4d5
cmpq $0x0, -0x168(%rbp)
je 0x3d508
movq -0x318(%rbp), %rdi
movq -0x168(%rbp), %rsi
callq 0x3f490
jmp 0x3d4f4
movq -0x168(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x168(%rbp)
jmp 0x3d4d5
movq -0x318(%rbp), %rdi
callq 0x3b730
movq -0x318(%rbp), %rdi
movq %rax, -0x300(%rbp)
callq 0x3b760
movq %rax, -0x308(%rbp)
movq -0x300(%rbp), %rdi
movq -0x308(%rbp), %rsi
callq 0x3f500
jmp 0x3d543
movq -0x310(%rbp), %rax
testb $0x1, 0x9(%rax)
je 0x3d56d
testb $0x1, -0x31(%rbp)
jne 0x3d56d
movq -0x318(%rbp), %rsi
movq -0x310(%rbp), %rdi
callq 0x3d830
jmp 0x3d56b
jmp 0x3d56d
movb $0x1, -0x32(%rbp)
movl $0x1, -0xb4(%rbp)
leaq -0x160(%rbp), %rdi
callq 0x3f540
leaq -0x128(%rbp), %rdi
callq 0x3f560
leaq -0xe8(%rbp), %rdi
callq 0x3f580
jmp 0x3d5c7
leaq -0x160(%rbp), %rdi
callq 0x3f540
leaq -0x128(%rbp), %rdi
callq 0x3f560
leaq -0xe8(%rbp), %rdi
callq 0x3f580
jmp 0x3d5e1
leaq -0x70(%rbp), %rdi
callq 0x8330
leaq -0x50(%rbp), %rdi
callq 0xd7d0
testb $0x1, -0x32(%rbp)
jne 0x3d60d
jmp 0x3d601
leaq -0x70(%rbp), %rdi
callq 0x8330
leaq -0x50(%rbp), %rdi
callq 0xd7d0
movq -0x318(%rbp), %rdi
callq 0xd7d0
jmp 0x3d61d
movq -0x318(%rbp), %rdi
callq 0xd7d0
movq -0x320(%rbp), %rax
addq $0x430, %rsp            # imm = 0x430
popq %rbp
retq
movq -0x98(%rbp), %rdi
callq 0x8880
nopl (%rax)