// File: Kei18[P]pibt/./src/solver/iecbs.cpp
// Function: iECBS::highwayCost(Node*, Node*)
float iECBS::highwayCost(Node* _s, Node* _g) {
  // ==== fast implementation ====
  if (_s == _g) return 0;

  // registered
  int dist = wdists(_s->getIndex(), _g->getIndex());
  if (dist != 0) return dist;
  // =============================

  float f, w, d;
  bool invalid = true;
  Nodes C;
  std::string keyW;

  // prepare node open hashtable
  boost::heap::fibonacci_heap<Fib_ANF> OPEN;
  std::unordered_map<int, boost::heap::fibonacci_heap<Fib_ANF>::handle_type> SEARCHED;
  std::unordered_set<int> CLOSE;
  ANF* n = new ANF { _s, 0, static_cast<float>(pathDist(_s, _g)), nullptr };
  auto handle = OPEN.push(Fib_ANF(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 ====
    dist = wdists(n->v->getIndex(), _g->getIndex());
    if (dist != 0) {
      d = dist;
      // register
      while (n->p != nullptr) {
        dist = wdists(n->v->getIndex(), _g->getIndex());
        keyW = std::to_string(n->p->v->getId()) + "-" + std::to_string(n->v->getId());
        w = highway.at(keyW);
        wdists(n->p->v->getIndex(), _g->getIndex()) = dist + w;
        n = n->p;
      }
      return d;
    }
    // =============================

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

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

    for (auto m : C) {
      if (CLOSE.find(m->getId()) != CLOSE.end()) continue;
      keyW = std::to_string(n->v->getId()) + "-" + std::to_string(m->getId());
      w = highway.at(keyW);
      f = n->g + w + pathDist(m, _g);

      // ==== fast implementation ====
      dist = wdists(m->getIndex(), _g->getIndex());
      if (dist != 0) f = n->g + w + dist;
      // =============================

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

  if (invalid) {
    std::cout << "error@iEPIBT::highwayCost, " << "cannot find a path : "
              << _s->getId() << " -> " << _g->getId() << "\n";
    std::exit(1);
  }

  // ==== fast implementation ====
  d = n->g;
  while (n != nullptr) {
    wdists(n->v->getIndex(), _g->getIndex()) = n->g;
    n = n->p;
  }
  // =============================
  return d;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x520, %rsp            # imm = 0x520
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x320(%rbp)
movq -0x18(%rbp), %rax
cmpq -0x20(%rbp), %rax
jne 0x7f749
xorps %xmm0, %xmm0
movss %xmm0, -0x4(%rbp)
jmp 0x80590
movq -0x320(%rbp), %rax
addq $0x148, %rax            # imm = 0x148
movq %rax, -0x330(%rbp)
movq -0x18(%rbp), %rdi
callq 0x3ebe0
cltq
movq %rax, -0x328(%rbp)
movq -0x20(%rbp), %rdi
callq 0x3ebe0
movq -0x330(%rbp), %rdi
movq -0x328(%rbp), %rsi
movslq %eax, %rdx
callq 0x81530
cvttss2si (%rax), %eax
movl %eax, -0x24(%rbp)
cmpl $0x0, -0x24(%rbp)
je 0x7f7aa
cvtsi2ssl -0x24(%rbp), %xmm0
movss %xmm0, -0x4(%rbp)
jmp 0x80590
movb $0x1, -0x31(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x3e880
leaq -0x70(%rbp), %rdi
callq 0x86b0
leaq -0x98(%rbp), %rdi
leaq -0x99(%rbp), %rsi
callq 0x815f0
jmp 0x7f7d5
leaq -0xe8(%rbp), %rdi
callq 0x81650
leaq -0x120(%rbp), %rdi
callq 0x3ef70
movl $0x18, %edi
callq 0x84e0
movq %rax, -0x338(%rbp)
jmp 0x7f800
movq -0x320(%rbp), %rdi
movq -0x338(%rbp), %rax
movq -0x18(%rbp), %rcx
movq %rcx, (%rax)
movl $0x0, 0x8(%rax)
addq $0xc, %rax
movq %rax, -0x348(%rbp)
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x9d410
movl %eax, -0x33c(%rbp)
jmp 0x7f83c
movq -0x338(%rbp), %rax
movq -0x348(%rbp), %rcx
movl -0x33c(%rbp), %edx
cvtsi2ss %edx, %xmm0
movss %xmm0, (%rcx)
movq $0x0, 0x10(%rax)
movq %rax, -0x128(%rbp)
movq -0x128(%rbp), %rsi
leaq -0x138(%rbp), %rdi
callq 0x81730
jmp 0x7f87c
leaq -0x98(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0x81670
movq %rax, -0x350(%rbp)
jmp 0x7f898
movq -0x350(%rbp), %rax
movq %rax, -0x130(%rbp)
movq -0x128(%rbp), %rax
movq (%rax), %rdi
callq 0x3ae00
movl %eax, -0x354(%rbp)
jmp 0x7f8bd
movl -0x354(%rbp), %eax
movl %eax, -0x13c(%rbp)
leaq -0xe8(%rbp), %rdi
leaq -0x13c(%rbp), %rsi
leaq -0x130(%rbp), %rdx
callq 0x81750
movb %dl, -0x361(%rbp)
movq %rax, -0x360(%rbp)
jmp 0x7f8f2
movb -0x361(%rbp), %al
movq -0x360(%rbp), %rcx
movq %rcx, -0x150(%rbp)
movb %al, -0x148(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x817a0
movb %al, -0x362(%rbp)
jmp 0x7f920
movb -0x362(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x7f931
jmp 0x80370
leaq -0x98(%rbp), %rdi
callq 0x817d0
movq %rax, -0x370(%rbp)
jmp 0x7f946
movq -0x370(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x128(%rbp)
movq -0x128(%rbp), %rax
movq (%rax), %rax
cmpq -0x20(%rbp), %rax
jne 0x7f9c6
movb $0x0, -0x31(%rbp)
jmp 0x80370
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x8057c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x80558
movq -0x338(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
movl $0x18, %esi
callq 0x84f0
jmp 0x80558
movq -0x320(%rbp), %rax
addq $0x148, %rax            # imm = 0x148
movq %rax, -0x380(%rbp)
movq -0x128(%rbp), %rax
movq (%rax), %rdi
callq 0x3ebe0
movl %eax, -0x374(%rbp)
jmp 0x7f9f1
movl -0x374(%rbp), %eax
cltq
movq %rax, -0x390(%rbp)
movq -0x20(%rbp), %rdi
callq 0x3ebe0
movl %eax, -0x384(%rbp)
jmp 0x7fa11
movq -0x390(%rbp), %rsi
movq -0x380(%rbp), %rdi
movl -0x384(%rbp), %eax
movslq %eax, %rdx
callq 0x81530
movq %rax, -0x398(%rbp)
jmp 0x7fa36
movq -0x398(%rbp), %rax
cvttss2si (%rax), %eax
movl %eax, -0x24(%rbp)
cmpl $0x0, -0x24(%rbp)
je 0x7fd2b
cvtsi2ssl -0x24(%rbp), %xmm0
movss %xmm0, -0x30(%rbp)
movq -0x128(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x7fd12
movq -0x320(%rbp), %rax
addq $0x148, %rax            # imm = 0x148
movq %rax, -0x3a8(%rbp)
movq -0x128(%rbp), %rax
movq (%rax), %rdi
callq 0x3ebe0
movl %eax, -0x39c(%rbp)
jmp 0x7fa95
movl -0x39c(%rbp), %eax
cltq
movq %rax, -0x3b8(%rbp)
movq -0x20(%rbp), %rdi
callq 0x3ebe0
movl %eax, -0x3ac(%rbp)
jmp 0x7fab5
movq -0x3b8(%rbp), %rsi
movq -0x3a8(%rbp), %rdi
movl -0x3ac(%rbp), %eax
movslq %eax, %rdx
callq 0x81530
movq %rax, -0x3c0(%rbp)
jmp 0x7fada
movq -0x3c0(%rbp), %rax
cvttss2si (%rax), %eax
movl %eax, -0x24(%rbp)
movq -0x128(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rdi
callq 0x3ae00
movl %eax, -0x3c4(%rbp)
jmp 0x7fb03
movl -0x3c4(%rbp), %esi
leaq -0x1b0(%rbp), %rdi
callq 0xdf50
jmp 0x7fb17
leaq 0x37dd5(%rip), %rdx     # 0xb78f3
leaq -0x190(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0xdeb0
jmp 0x7fb33
movq -0x128(%rbp), %rax
movq (%rax), %rdi
callq 0x3ae00
movl %eax, -0x3c8(%rbp)
jmp 0x7fb4a
movl -0x3c8(%rbp), %esi
leaq -0x1d0(%rbp), %rdi
callq 0xdf50
jmp 0x7fb5e
leaq -0x170(%rbp), %rdi
leaq -0x190(%rbp), %rsi
leaq -0x1d0(%rbp), %rdx
callq 0x63a80
jmp 0x7fb7a
leaq -0x70(%rbp), %rdi
movq %rdi, -0x3d8(%rbp)
leaq -0x170(%rbp), %rsi
movq %rsi, -0x3e0(%rbp)
callq 0x85f0
movq -0x3e0(%rbp), %rdi
callq 0x8330
leaq -0x1d0(%rbp), %rdi
callq 0x8330
leaq -0x190(%rbp), %rdi
callq 0x8330
leaq -0x1b0(%rbp), %rdi
callq 0x8330
movq -0x320(%rbp), %rdi
movq -0x3d8(%rbp), %rsi
addq $0x110, %rdi            # imm = 0x110
callq 0x81830
movq %rax, -0x3d0(%rbp)
jmp 0x7fbeb
movq -0x320(%rbp), %rax
movq -0x3d0(%rbp), %rcx
movss (%rcx), %xmm0
movss %xmm0, -0x2c(%rbp)
cvtsi2ssl -0x24(%rbp), %xmm0
movss -0x2c(%rbp), %xmm1
addss %xmm1, %xmm0
movss %xmm0, -0x3f4(%rbp)
addq $0x148, %rax            # imm = 0x148
movq %rax, -0x3f0(%rbp)
movq -0x128(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rdi
callq 0x3ebe0
movl %eax, -0x3e4(%rbp)
jmp 0x7fc40
movl -0x3e4(%rbp), %eax
cltq
movq %rax, -0x400(%rbp)
movq -0x20(%rbp), %rdi
callq 0x3ebe0
movl %eax, -0x3f8(%rbp)
jmp 0x7fc60
movq -0x400(%rbp), %rsi
movq -0x3f0(%rbp), %rdi
movl -0x3f8(%rbp), %eax
movslq %eax, %rdx
callq 0x81530
movq %rax, -0x408(%rbp)
jmp 0x7fc85
movq -0x408(%rbp), %rax
movss -0x3f4(%rbp), %xmm0
movss %xmm0, (%rax)
movq -0x128(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x128(%rbp)
jmp 0x7fa58
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x7fd01
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x7fcf5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0x8330
leaq -0x190(%rbp), %rdi
callq 0x8330
leaq -0x1b0(%rbp), %rdi
callq 0x8330
jmp 0x80558
movss -0x30(%rbp), %xmm0
movss %xmm0, -0x4(%rbp)
movl $0x1, -0x1d4(%rbp)
jmp 0x80520
leaq -0x98(%rbp), %rdi
callq 0x81860
jmp 0x7fd39
movq -0x128(%rbp), %rax
movq (%rax), %rdi
callq 0x3ae00
movl %eax, -0x40c(%rbp)
jmp 0x7fd50
movl -0x40c(%rbp), %eax
movl %eax, -0x1d8(%rbp)
leaq -0x120(%rbp), %rdi
leaq -0x1d8(%rbp), %rsi
callq 0x3f1f0
movb %dl, -0x419(%rbp)
movq %rax, -0x418(%rbp)
jmp 0x7fd7e
movq -0x320(%rbp), %rax
movb -0x419(%rbp), %cl
movq -0x418(%rbp), %rdx
movq %rdx, -0x1e8(%rbp)
movb %cl, -0x1e0(%rbp)
movq 0x38(%rax), %rsi
movq -0x128(%rbp), %rax
movq (%rax), %rdx
leaq -0x200(%rbp), %rdi
callq 0x3c8d0
jmp 0x7fdbb
leaq -0x50(%rbp), %rdi
leaq -0x200(%rbp), %rsi
callq 0x3f230
leaq -0x200(%rbp), %rdi
callq 0xd7d0
leaq -0x50(%rbp), %rax
movq %rax, -0x208(%rbp)
movq -0x208(%rbp), %rdi
callq 0x3b730
movq %rax, -0x210(%rbp)
movq -0x208(%rbp), %rdi
callq 0x3b760
movq %rax, -0x218(%rbp)
leaq -0x210(%rbp), %rdi
leaq -0x218(%rbp), %rsi
callq 0x3b790
testb $0x1, %al
jne 0x7fe24
jmp 0x8036b
leaq -0x210(%rbp), %rdi
callq 0x3bb00
movq (%rax), %rax
movq %rax, -0x220(%rbp)
movq -0x220(%rbp), %rdi
callq 0x3ae00
movl %eax, -0x420(%rbp)
jmp 0x7fe4e
movl -0x420(%rbp), %eax
movl %eax, -0x22c(%rbp)
leaq -0x120(%rbp), %rdi
leaq -0x22c(%rbp), %rsi
callq 0x3f290
movq %rax, -0x428(%rbp)
jmp 0x7fe76
movq -0x428(%rbp), %rax
movq %rax, -0x228(%rbp)
leaq -0x120(%rbp), %rdi
callq 0x3f2c0
movq %rax, -0x238(%rbp)
leaq -0x228(%rbp), %rdi
leaq -0x238(%rbp), %rsi
callq 0x3f260
testb $0x1, %al
jne 0x7feb0
jmp 0x7feb5
jmp 0x8035a
movq -0x128(%rbp), %rax
movq (%rax), %rdi
callq 0x3ae00
movl %eax, -0x42c(%rbp)
jmp 0x7fecc
movl -0x42c(%rbp), %esi
leaq -0x298(%rbp), %rdi
callq 0xdf50
jmp 0x7fee0
leaq 0x37a0c(%rip), %rdx     # 0xb78f3
leaq -0x278(%rbp), %rdi
leaq -0x298(%rbp), %rsi
callq 0xdeb0
jmp 0x7fefc
movq -0x220(%rbp), %rdi
callq 0x3ae00
movl %eax, -0x430(%rbp)
jmp 0x7ff10
movl -0x430(%rbp), %esi
leaq -0x2b8(%rbp), %rdi
callq 0xdf50
jmp 0x7ff24
leaq -0x258(%rbp), %rdi
leaq -0x278(%rbp), %rsi
leaq -0x2b8(%rbp), %rdx
callq 0x63a80
jmp 0x7ff40
leaq -0x70(%rbp), %rdi
movq %rdi, -0x440(%rbp)
leaq -0x258(%rbp), %rsi
movq %rsi, -0x448(%rbp)
callq 0x85f0
movq -0x448(%rbp), %rdi
callq 0x8330
leaq -0x2b8(%rbp), %rdi
callq 0x8330
leaq -0x278(%rbp), %rdi
callq 0x8330
leaq -0x298(%rbp), %rdi
callq 0x8330
movq -0x320(%rbp), %rdi
movq -0x440(%rbp), %rsi
addq $0x110, %rdi            # imm = 0x110
callq 0x81830
movq %rax, -0x438(%rbp)
jmp 0x7ffb1
movq -0x320(%rbp), %rdi
movq -0x438(%rbp), %rax
movss (%rax), %xmm0
movss %xmm0, -0x2c(%rbp)
movq -0x128(%rbp), %rax
movss 0x8(%rax), %xmm0
movss -0x2c(%rbp), %xmm1
addss %xmm1, %xmm0
movss %xmm0, -0x450(%rbp)
movq -0x220(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x9d410
movl %eax, -0x44c(%rbp)
jmp 0x7fffd
movq -0x320(%rbp), %rax
movss -0x450(%rbp), %xmm0
movl -0x44c(%rbp), %ecx
cvtsi2ss %ecx, %xmm1
addss %xmm1, %xmm0
movss %xmm0, -0x28(%rbp)
addq $0x148, %rax            # imm = 0x148
movq %rax, -0x460(%rbp)
movq -0x220(%rbp), %rdi
callq 0x3ebe0
movl %eax, -0x454(%rbp)
jmp 0x80040
movl -0x454(%rbp), %eax
cltq
movq %rax, -0x470(%rbp)
movq -0x20(%rbp), %rdi
callq 0x3ebe0
movl %eax, -0x464(%rbp)
jmp 0x80060
movq -0x470(%rbp), %rsi
movq -0x460(%rbp), %rdi
movl -0x464(%rbp), %eax
movslq %eax, %rdx
callq 0x81530
movq %rax, -0x478(%rbp)
jmp 0x80085
movq -0x478(%rbp), %rax
cvttss2si (%rax), %eax
movl %eax, -0x24(%rbp)
cmpl $0x0, -0x24(%rbp)
je 0x80121
movq -0x128(%rbp), %rax
movss 0x8(%rax), %xmm0
addss -0x2c(%rbp), %xmm0
cvtsi2ssl -0x24(%rbp), %xmm1
addss %xmm1, %xmm0
movss %xmm0, -0x28(%rbp)
jmp 0x80121
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x80110
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x80104
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x2b8(%rbp), %rdi
callq 0x8330
leaq -0x278(%rbp), %rdi
callq 0x8330
leaq -0x298(%rbp), %rdi
callq 0x8330
jmp 0x80558
movq -0x220(%rbp), %rdi
callq 0x3ae00
movl %eax, -0x47c(%rbp)
jmp 0x80135
movl -0x47c(%rbp), %eax
movl %eax, -0x2c4(%rbp)
leaq -0xe8(%rbp), %rdi
leaq -0x2c4(%rbp), %rsi
callq 0x81900
movq %rax, -0x488(%rbp)
jmp 0x8015d
movq -0x488(%rbp), %rax
movq %rax, -0x2c0(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0x81960
movq %rax, -0x2d0(%rbp)
leaq -0x2c0(%rbp), %rdi
leaq -0x2d0(%rbp), %rsi
callq 0x81930
testb $0x1, %al
jne 0x8019a
jmp 0x8029e
movl $0x18, %edi
callq 0x84e0
movq %rax, -0x490(%rbp)
jmp 0x801ad
movq -0x490(%rbp), %rax
movq -0x220(%rbp), %rcx
movq %rcx, (%rax)
movq -0x128(%rbp), %rcx
movss 0x8(%rcx), %xmm0
movss -0x2c(%rbp), %xmm1
addss %xmm1, %xmm0
movss %xmm0, 0x8(%rax)
movss -0x28(%rbp), %xmm0
movss %xmm0, 0xc(%rax)
movq -0x128(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq %rax, -0x2d8(%rbp)
movq -0x2d8(%rbp), %rsi
leaq -0x2e8(%rbp), %rdi
callq 0x81730
jmp 0x80209
leaq -0x98(%rbp), %rdi
leaq -0x2e8(%rbp), %rsi
callq 0x81670
movq %rax, -0x498(%rbp)
jmp 0x80225
movq -0x498(%rbp), %rax
movq %rax, -0x2e0(%rbp)
movq -0x2d8(%rbp), %rax
movq (%rax), %rdi
callq 0x3ae00
movl %eax, -0x49c(%rbp)
jmp 0x8024a
movl -0x49c(%rbp), %eax
movl %eax, -0x2ec(%rbp)
leaq -0xe8(%rbp), %rdi
leaq -0x2ec(%rbp), %rsi
leaq -0x2e0(%rbp), %rdx
callq 0x81750
movb %dl, -0x4a9(%rbp)
movq %rax, -0x4a8(%rbp)
jmp 0x8027f
movb -0x4a9(%rbp), %al
movq -0x4a8(%rbp), %rcx
movq %rcx, -0x300(%rbp)
movb %al, -0x2f8(%rbp)
jmp 0x80358
leaq -0x2c0(%rbp), %rdi
callq 0x81990
movq 0x8(%rax), %rax
movq %rax, -0x308(%rbp)
leaq -0x308(%rbp), %rdi
callq 0x819c0
movq %rax, -0x4b8(%rbp)
jmp 0x802ca
movq -0x4b8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x310(%rbp)
movq -0x310(%rbp), %rax
movss 0xc(%rax), %xmm0
ucomiss -0x28(%rbp), %xmm0
jbe 0x80356
movq -0x128(%rbp), %rax
movss 0x8(%rax), %xmm0
movss -0x2c(%rbp), %xmm1
addss %xmm1, %xmm0
movq -0x310(%rbp), %rax
movss %xmm0, 0x8(%rax)
movss -0x28(%rbp), %xmm0
movq -0x310(%rbp), %rax
movss %xmm0, 0xc(%rax)
movq -0x128(%rbp), %rcx
movq -0x310(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x308(%rbp), %rax
movq %rax, -0x318(%rbp)
movq -0x318(%rbp), %rsi
leaq -0x98(%rbp), %rdi
callq 0x819f0
jmp 0x80354
jmp 0x80356
jmp 0x80358
jmp 0x8035a
leaq -0x210(%rbp), %rdi
callq 0x3bad0
jmp 0x7fe08
jmp 0x7f90c
testb $0x1, -0x31(%rbp)
je 0x80445
movq 0x80c17(%rip), %rdi     # 0x100f98
leaq 0x35902(%rip), %rsi     # 0xb5c8a
callq 0x84d0
movq %rax, -0x4c0(%rbp)
jmp 0x80396
movq -0x4c0(%rbp), %rdi
leaq 0x35902(%rip), %rsi     # 0xb5ca6
callq 0x84d0
movq %rax, -0x4c8(%rbp)
jmp 0x803b2
movq -0x18(%rbp), %rdi
callq 0x3ae00
movl %eax, -0x4cc(%rbp)
jmp 0x803c3
movl -0x4cc(%rbp), %esi
movq -0x4c8(%rbp), %rdi
callq 0x8860
movq %rax, -0x4d8(%rbp)
jmp 0x803de
movq -0x4d8(%rbp), %rdi
leaq 0x358d0(%rip), %rsi     # 0xb5cbc
callq 0x84d0
movq %rax, -0x4e0(%rbp)
jmp 0x803fa
movq -0x20(%rbp), %rdi
callq 0x3ae00
movl %eax, -0x4e4(%rbp)
jmp 0x8040b
movl -0x4e4(%rbp), %esi
movq -0x4e0(%rbp), %rdi
callq 0x8860
movq %rax, -0x4f0(%rbp)
jmp 0x80426
movq -0x4f0(%rbp), %rdi
leaq 0x33183(%rip), %rsi     # 0xb35b7
callq 0x84d0
jmp 0x8043b
movl $0x1, %edi
callq 0x85d0
movq -0x128(%rbp), %rax
movss 0x8(%rax), %xmm0
movss %xmm0, -0x30(%rbp)
cmpq $0x0, -0x128(%rbp)
je 0x8050c
movq -0x320(%rbp), %rcx
movq -0x128(%rbp), %rax
movss 0x8(%rax), %xmm0
movss %xmm0, -0x504(%rbp)
addq $0x148, %rcx            # imm = 0x148
movq %rcx, -0x500(%rbp)
movq (%rax), %rdi
callq 0x3ebe0
movl %eax, -0x4f4(%rbp)
jmp 0x8049d
movl -0x4f4(%rbp), %eax
cltq
movq %rax, -0x510(%rbp)
movq -0x20(%rbp), %rdi
callq 0x3ebe0
movl %eax, -0x508(%rbp)
jmp 0x804bd
movq -0x510(%rbp), %rsi
movq -0x500(%rbp), %rdi
movl -0x508(%rbp), %eax
movslq %eax, %rdx
callq 0x81530
movq %rax, -0x518(%rbp)
jmp 0x804e2
movq -0x518(%rbp), %rax
movss -0x504(%rbp), %xmm0
movss %xmm0, (%rax)
movq -0x128(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x128(%rbp)
jmp 0x80456
movss -0x30(%rbp), %xmm0
movss %xmm0, -0x4(%rbp)
movl $0x1, -0x1d4(%rbp)
leaq -0x120(%rbp), %rdi
callq 0x3f540
leaq -0xe8(%rbp), %rdi
callq 0x81aa0
leaq -0x98(%rbp), %rdi
callq 0x81ac0
leaq -0x70(%rbp), %rdi
callq 0x8330
leaq -0x50(%rbp), %rdi
callq 0xd7d0
jmp 0x80590
leaq -0x120(%rbp), %rdi
callq 0x3f540
leaq -0xe8(%rbp), %rdi
callq 0x81aa0
leaq -0x98(%rbp), %rdi
callq 0x81ac0
leaq -0x70(%rbp), %rdi
callq 0x8330
leaq -0x50(%rbp), %rdi
callq 0xd7d0
jmp 0x8059e
movss -0x4(%rbp), %xmm0
addq $0x520, %rsp            # imm = 0x520
popq %rbp
retq
movq -0xa8(%rbp), %rdi
callq 0x8880
nopw (%rax,%rax)