// File: Kei18[P]pibt/./src/solver/pps.cpp
// Function: PPS::CLEAR(S*)
bool PPS::CLEAR(S* s) {
  Agent* aH = s->agents[0];
  Agent* aL = s->agents[1];
  Node* target = s->esv[0];

  // error check
  if (s->phase != SWAPPHASE::GO_TARGET) {
    std::cout << "error@PPS::CLEAR, phase is invalid" << "\n";
    std::exit(1);
  }
  if (s->agents.size() != 2) {
    std::cout << "error@PPS::CLEAR, the number of agent is not two" << "\n";
    std::exit(1);
  }
  if (aH->getNode() != target) {
    std::cout << "error@PPS::CLEAR, "
              << "agent " << aH->getId() << " is not on node "
              << target->getId() << "\n";
    std::exit(1);
  }

  Nodes neighbor = G->neighbor(target);
  Node* evacH = nullptr;
  Node* evacL = nullptr;
  Node* aLPos = aL->getNode();

  // case 1. free nodes
  for (auto v : neighbor) {
    if (v == aLPos) continue;
    if (!isFree(v)) continue;

    if (!evacH) {
      evacH = v;
    } else if (!evacL) {
      evacL = v;
      s->phase = SWAPPHASE::EVAC_H;
      break;
    }
  }

  // case 2. try push
  if (!evacL) {
    for (auto v : neighbor) {
      if (inArray(v, L)) continue;
      if (v == aLPos) continue;
      if (evacH && v == evacH) continue;

      Agent* a = *std::find_if(A.begin(), A.end(),
                               [v](Agent* a) { return a->getNode() == v; });
      H.push_back(aH);
      H.push_back(aL);
      Nodes T = { evacH };
      RES attempt = PUSH(a, T, true);

      if (attempt != RES::SUCCESS) continue;

      if (!evacH) {
        evacH = v;
      } else {
        evacL = v;
        s->phase = SWAPPHASE::EVAC_H;
        break;
      }
    }
  }

  // case 3. evac
  if (evacH && !evacL) {
    for (auto v : neighbor) {
      if (inArray(v, L)) continue;
      if (v == aLPos) continue;

      // occuping agents
      auto itrU = std::find_if(A.begin(), A.end(),
                               [v](Agent* a) { return a->getNode() == v; });
      if (itrU == A.end()) continue;
      Agent* a3 = *itrU;

      if (inArray(a3, M)) continue;
      if (inS(a3)) {
        if (CHECK_PRIORITY(s, a3) == CHECK::INVALID) {
          continue;
        }
      }

      Node* a3target = nullptr;
      Nodes evacHneighbor = G->neighbor(evacH);
      for (auto u : evacHneighbor) {
        if (u == target) continue;
        if (u == a3->getNode()) continue;
        a3target = u;
        break;
      }
      if (!a3target) continue;

      Nodes pi = SHORTEST_PATH(evacH, a3target, { aLPos });
      if (pi.size() < 2) continue;  // there is no path

      // temporary change goal node
      aH->setGoal(aL->getNode());

      for (auto u : G->neighbor(aLPos)) {
        if (u == a3target) continue;
        if (u == target) continue;
        // temporary change goal node
        aL->setGoal(u);

        Nodes prohibited = { a3target, target, evacH };
        RES attempt = PUSH(aL, prohibited, true);

        if (attempt != RES::SUCCESS) continue;

        // resolve swap target
        if (inS(a3)) {
          S* t = getS(a3);
          doneSwapers.push_back(t);
          for (auto b : t->agents) {
            b->setGoal(goals[b->getId()]);
            isTmpGoals[b->getId()] = false;
            if (b != a3) pushers.push_back(b);
          }
        }

        auto itrU = std::find(U.begin(), U.end(), a3);
        if (itrU != U.end()) U.erase(itrU);

        PUSH(aH, true);  // to aLPos

        a3->setGoal(pi[1]);
        isTmpGoals[a3->getId()] = true;
        pusherToSwaper.push_back(a3);
        s->agents.push_back(a3);
        s->phase = SWAPPHASE::CLEARING;
        PUSH(a3, true);  // to target

        evacL = a3->getNode();

        break;
      }

      // resolve
      aL->setGoal(goals[aL->getId()]);
      aH->setGoal(goals[aH->getId()]);

      if (evacL) break;
    }
  }

  // CLEAR is success
  if (s->phase == SWAPPHASE::EVAC_H) {
    s->target = aH->getNode();
    s->origin = aL->getNode();
    s->evacH = evacH;
    s->evacL = evacL;

    L.push_back(s->target);
    L.push_back(s->origin);
    L.push_back(s->evacH);
    L.push_back(s->evacL);

    return true;

  } else if (s->phase == SWAPPHASE::CLEARING) {

    s->area = { aH->getNode(), aL->getNode(), evacL };
    return true;

  }

  return false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x4c0, %rsp            # imm = 0x4C0
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x320(%rbp)
movq -0x18(%rbp), %rdi
addq $0x8, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x53720
movq (%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
addq $0x8, %rdi
movl $0x1, %esi
callq 0x53720
movq (%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rdi
addq $0x28, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xda90
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x0, 0x78(%rax)
je 0x9214d
movq 0x6ee70(%rip), %rdi     # 0x100f98
leaq 0x24c48(%rip), %rsi     # 0xb6d77
callq 0x84d0
movq %rax, %rdi
leaq 0x21479(%rip), %rsi     # 0xb35b7
callq 0x84d0
movl $0x1, %edi
callq 0x85d0
movq -0x18(%rbp), %rdi
addq $0x8, %rdi
callq 0x383b0
cmpq $0x2, %rax
je 0x9218c
movq 0x6ee31(%rip), %rdi     # 0x100f98
leaq 0x24c2c(%rip), %rsi     # 0xb6d9a
callq 0x84d0
movq %rax, %rdi
leaq 0x2143a(%rip), %rsi     # 0xb35b7
callq 0x84d0
movl $0x1, %edi
callq 0x85d0
movq -0x20(%rbp), %rdi
callq 0x51cb0
cmpq -0x30(%rbp), %rax
je 0x92225
movq 0x6edf2(%rip), %rdi     # 0x100f98
leaq 0x24c1e(%rip), %rsi     # 0xb6dcb
callq 0x84d0
movq %rax, %rdi
leaq 0x24c22(%rip), %rsi     # 0xb6dde
callq 0x84d0
movq %rax, -0x330(%rbp)
movq -0x20(%rbp), %rdi
callq 0x63b50
movq -0x330(%rbp), %rdi
movl %eax, %esi
callq 0x8860
movq %rax, %rdi
leaq 0x24bfc(%rip), %rsi     # 0xb6de5
callq 0x84d0
movq %rax, -0x328(%rbp)
movq -0x30(%rbp), %rdi
callq 0x3ae00
movq -0x328(%rbp), %rdi
movl %eax, %esi
callq 0x8860
movq %rax, %rdi
leaq 0x213a1(%rip), %rsi     # 0xb35b7
callq 0x84d0
movl $0x1, %edi
callq 0x85d0
movq -0x320(%rbp), %rax
movq 0x38(%rax), %rsi
movq -0x30(%rbp), %rdx
leaq -0x48(%rbp), %rdi
callq 0x3c8d0
movq $0x0, -0x50(%rbp)
movq $0x0, -0x58(%rbp)
movq -0x28(%rbp), %rdi
callq 0x51cb0
movq %rax, -0x338(%rbp)
jmp 0x9225f
movq -0x338(%rbp), %rax
movq %rax, -0x60(%rbp)
leaq -0x48(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x78(%rbp), %rdi
callq 0x3b730
movq %rax, -0x80(%rbp)
movq -0x78(%rbp), %rdi
callq 0x3b760
movq %rax, -0x88(%rbp)
leaq -0x80(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x3b790
testb $0x1, %al
jne 0x922a8
jmp 0x92349
leaq -0x80(%rbp), %rdi
callq 0x3bb00
movq (%rax), %rax
movq %rax, -0x90(%rbp)
movq -0x90(%rbp), %rax
cmpq -0x60(%rbp), %rax
jne 0x922db
jmp 0x9233b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x933d2
movq -0x320(%rbp), %rdi
movq -0x90(%rbp), %rsi
callq 0x93bc0
movb %al, -0x339(%rbp)
jmp 0x922f6
movb -0x339(%rbp), %al
testb $0x1, %al
jne 0x92304
jmp 0x92302
jmp 0x9233b
cmpq $0x0, -0x50(%rbp)
jne 0x92318
movq -0x90(%rbp), %rax
movq %rax, -0x50(%rbp)
jmp 0x92339
cmpq $0x0, -0x58(%rbp)
jne 0x92337
movq -0x90(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x18(%rbp), %rax
movl $0x2, 0x78(%rax)
jmp 0x92349
jmp 0x92339
jmp 0x9233b
leaq -0x80(%rbp), %rdi
callq 0x3bad0
jmp 0x9228f
cmpq $0x0, -0x58(%rbp)
jne 0x92637
leaq -0x48(%rbp), %rax
movq %rax, -0x98(%rbp)
movq -0x98(%rbp), %rdi
callq 0x3b730
movq %rax, -0xa0(%rbp)
movq -0x98(%rbp), %rdi
callq 0x3b760
movq %rax, -0xa8(%rbp)
leaq -0xa0(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x3b790
testb $0x1, %al
jne 0x923a1
jmp 0x92635
leaq -0xa0(%rbp), %rdi
callq 0x3bb00
movq -0x320(%rbp), %rsi
movq (%rax), %rax
movq %rax, -0xb0(%rbp)
movq -0xb0(%rbp), %rdi
addq $0x110, %rsi            # imm = 0x110
callq 0x91410
movb %al, -0x33a(%rbp)
jmp 0x923d9
movb -0x33a(%rbp), %al
testb $0x1, %al
jne 0x923e5
jmp 0x923ea
jmp 0x92624
movq -0xb0(%rbp), %rax
cmpq -0x60(%rbp), %rax
jne 0x923fc
jmp 0x92624
cmpq $0x0, -0x50(%rbp)
je 0x92415
movq -0xb0(%rbp), %rax
cmpq -0x50(%rbp), %rax
jne 0x92415
jmp 0x92624
movq -0x320(%rbp), %rdi
addq $0x20, %rdi
movq %rdi, -0x350(%rbp)
callq 0x39b60
movq -0x350(%rbp), %rdi
movq %rax, -0xc8(%rbp)
callq 0x399f0
movq %rax, -0xd0(%rbp)
movq -0xb0(%rbp), %rax
movq %rax, -0xd8(%rbp)
movq -0xc8(%rbp), %rdi
movq -0xd0(%rbp), %rsi
movq -0xd8(%rbp), %rdx
callq 0x93c50
movq %rax, -0x348(%rbp)
jmp 0x92477
movq -0x348(%rbp), %rax
movq %rax, -0xc0(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0x51c10
movq -0x320(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0xb8(%rbp)
addq $0x128, %rdi            # imm = 0x128
leaq -0x20(%rbp), %rsi
callq 0xdab0
jmp 0x924b4
movq -0x320(%rbp), %rdi
addq $0x128, %rdi            # imm = 0x128
leaq -0x28(%rbp), %rsi
callq 0xdab0
jmp 0x924cd
movq -0x50(%rbp), %rax
movq %rax, -0x108(%rbp)
leaq -0x108(%rbp), %rax
movq %rax, -0x100(%rbp)
movq $0x1, -0xf8(%rbp)
leaq -0x109(%rbp), %rdi
movq %rdi, -0x358(%rbp)
callq 0xd730
movq -0x358(%rbp), %rcx
movq -0x100(%rbp), %rsi
movq -0xf8(%rbp), %rdx
leaq -0xf0(%rbp), %rdi
callq 0xd750
jmp 0x92527
leaq -0x109(%rbp), %rdi
callq 0xd830
movq -0x320(%rbp), %rdi
movq -0xb8(%rbp), %rsi
leaq -0xf0(%rbp), %rdx
movl $0x1, %ecx
callq 0x8f5d0
movl %eax, -0x35c(%rbp)
jmp 0x9255a
movl -0x35c(%rbp), %eax
movl %eax, -0x110(%rbp)
cmpl $0x0, -0x110(%rbp)
je 0x925b5
movl $0x5, -0x114(%rbp)
jmp 0x925f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x109(%rbp), %rdi
callq 0xd830
jmp 0x933d2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0xd7d0
jmp 0x933d2
cmpq $0x0, -0x50(%rbp)
jne 0x925c9
movq -0xb0(%rbp), %rax
movq %rax, -0x50(%rbp)
jmp 0x925eb
movq -0xb0(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x18(%rbp), %rax
movl $0x2, 0x78(%rax)
movl $0x4, -0x114(%rbp)
jmp 0x925f5
movl $0x0, -0x114(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0xd7d0
movl -0x114(%rbp), %eax
movl %eax, -0x360(%rbp)
testl %eax, %eax
je 0x92622
jmp 0x92613
movl -0x360(%rbp), %eax
subl $0x4, %eax
je 0x92635
jmp 0x92620
jmp 0x92624
jmp 0x92624
leaq -0xa0(%rbp), %rdi
callq 0x3bad0
jmp 0x92385
jmp 0x92637
cmpq $0x0, -0x50(%rbp)
je 0x9320c
cmpq $0x0, -0x58(%rbp)
jne 0x9320c
leaq -0x48(%rbp), %rax
movq %rax, -0x120(%rbp)
movq -0x120(%rbp), %rdi
callq 0x3b730
movq %rax, -0x128(%rbp)
movq -0x120(%rbp), %rdi
callq 0x3b760
movq %rax, -0x130(%rbp)
leaq -0x128(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0x3b790
testb $0x1, %al
jne 0x9269a
jmp 0x9320a
leaq -0x128(%rbp), %rdi
callq 0x3bb00
movq -0x320(%rbp), %rsi
movq (%rax), %rax
movq %rax, -0x138(%rbp)
movq -0x138(%rbp), %rdi
addq $0x110, %rsi            # imm = 0x110
callq 0x91410
movb %al, -0x361(%rbp)
jmp 0x926d2
movb -0x361(%rbp), %al
testb $0x1, %al
jne 0x926de
jmp 0x926e3
jmp 0x931dc
movq -0x138(%rbp), %rax
cmpq -0x60(%rbp), %rax
jne 0x926f5
jmp 0x931dc
movq -0x320(%rbp), %rdi
addq $0x20, %rdi
movq %rdi, -0x378(%rbp)
callq 0x39b60
movq -0x378(%rbp), %rdi
movq %rax, -0x148(%rbp)
callq 0x399f0
movq %rax, -0x150(%rbp)
movq -0x138(%rbp), %rax
movq %rax, -0x158(%rbp)
movq -0x148(%rbp), %rdi
movq -0x150(%rbp), %rsi
movq -0x158(%rbp), %rdx
callq 0x93cb0
movq %rax, -0x370(%rbp)
jmp 0x92757
movq -0x320(%rbp), %rdi
movq -0x370(%rbp), %rax
movq %rax, -0x140(%rbp)
addq $0x20, %rdi
callq 0x399f0
movq %rax, -0x160(%rbp)
leaq -0x140(%rbp), %rdi
leaq -0x160(%rbp), %rsi
callq 0x55800
testb $0x1, %al
jne 0x92795
jmp 0x9279a
jmp 0x931dc
leaq -0x140(%rbp), %rdi
callq 0x51c10
movq -0x320(%rbp), %rsi
movq (%rax), %rax
movq %rax, -0x168(%rbp)
movq -0x168(%rbp), %rdi
addq $0xe0, %rsi
callq 0x8f430
movb %al, -0x379(%rbp)
jmp 0x927d2
movb -0x379(%rbp), %al
testb $0x1, %al
jne 0x927de
jmp 0x927e3
jmp 0x931dc
movq -0x320(%rbp), %rdi
movq -0x168(%rbp), %rsi
callq 0x8f510
movb %al, -0x37a(%rbp)
jmp 0x927fe
movb -0x37a(%rbp), %al
testb $0x1, %al
jne 0x9280a
jmp 0x9283b
movq -0x320(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x168(%rbp), %rdx
callq 0x919d0
movl %eax, -0x380(%rbp)
jmp 0x92829
movl -0x380(%rbp), %eax
cmpl $0x1, %eax
jne 0x92839
jmp 0x931dc
jmp 0x9283b
movq -0x320(%rbp), %rax
movq $0x0, -0x170(%rbp)
movq 0x38(%rax), %rsi
movq -0x50(%rbp), %rdx
leaq -0x188(%rbp), %rdi
callq 0x3c8d0
jmp 0x92863
leaq -0x188(%rbp), %rax
movq %rax, -0x190(%rbp)
movq -0x190(%rbp), %rdi
callq 0x3b730
movq %rax, -0x198(%rbp)
movq -0x190(%rbp), %rdi
callq 0x3b760
movq %rax, -0x1a0(%rbp)
leaq -0x198(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
callq 0x3b790
testb $0x1, %al
jne 0x928b3
jmp 0x92942
leaq -0x198(%rbp), %rdi
callq 0x3bb00
movq (%rax), %rax
movq %rax, -0x1a8(%rbp)
movq -0x1a8(%rbp), %rax
cmpq -0x30(%rbp), %rax
jne 0x928d8
jmp 0x92931
movq -0x1a8(%rbp), %rax
movq %rax, -0x390(%rbp)
movq -0x168(%rbp), %rdi
callq 0x51cb0
movq %rax, -0x388(%rbp)
jmp 0x928fb
movq -0x390(%rbp), %rax
movq -0x388(%rbp), %rcx
cmpq %rcx, %rax
jne 0x92921
jmp 0x92931
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x931f9
movq -0x1a8(%rbp), %rax
movq %rax, -0x170(%rbp)
jmp 0x92942
leaq -0x198(%rbp), %rdi
callq 0x3bad0
jmp 0x92897
cmpq $0x0, -0x170(%rbp)
jne 0x9295b
movl $0x7, -0x114(%rbp)
jmp 0x931ad
movq -0x50(%rbp), %rax
movq %rax, -0x3a8(%rbp)
movq -0x170(%rbp), %rax
movq %rax, -0x3a0(%rbp)
movq -0x60(%rbp), %rax
movq %rax, -0x1f0(%rbp)
leaq -0x1f0(%rbp), %rax
movq %rax, -0x1e8(%rbp)
movq $0x1, -0x1e0(%rbp)
leaq -0x1f1(%rbp), %rdi
movq %rdi, -0x398(%rbp)
callq 0xd730
movq -0x398(%rbp), %rcx
movq -0x1e8(%rbp), %rsi
movq -0x1e0(%rbp), %rdx
leaq -0x1d8(%rbp), %rdi
callq 0xd750
jmp 0x929ce
movq -0x3a0(%rbp), %rcx
movq -0x3a8(%rbp), %rdx
movq -0x320(%rbp), %rsi
leaq -0x1c0(%rbp), %rdi
leaq -0x1d8(%rbp), %r8
callq 0x8fe00
jmp 0x929f8
leaq -0x1d8(%rbp), %rdi
callq 0xd7d0
leaq -0x1f1(%rbp), %rdi
callq 0xd830
leaq -0x1c0(%rbp), %rdi
callq 0x3b0e0
cmpq $0x2, %rax
jae 0x92a68
movl $0x7, -0x114(%rbp)
jmp 0x931a1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x92a57
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x1d8(%rbp), %rdi
callq 0xd7d0
leaq -0x1f1(%rbp), %rdi
callq 0xd830
jmp 0x931f9
movq -0x20(%rbp), %rax
movq %rax, -0x3b8(%rbp)
movq -0x28(%rbp), %rdi
callq 0x51cb0
movq %rax, -0x3b0(%rbp)
jmp 0x92a85
movq -0x3b0(%rbp), %rsi
movq -0x3b8(%rbp), %rdi
callq 0x51d10
jmp 0x92a9a
movq -0x320(%rbp), %rax
movq 0x38(%rax), %rsi
movq -0x60(%rbp), %rdx
leaq -0x218(%rbp), %rdi
callq 0x3c8d0
jmp 0x92ab7
leaq -0x218(%rbp), %rax
movq %rax, -0x200(%rbp)
movq -0x200(%rbp), %rdi
callq 0x3b730
movq %rax, -0x220(%rbp)
movq -0x200(%rbp), %rdi
callq 0x3b760
movq %rax, -0x228(%rbp)
leaq -0x220(%rbp), %rdi
leaq -0x228(%rbp), %rsi
callq 0x3b790
testb $0x1, %al
jne 0x92b22
movl $0xa, -0x114(%rbp)
jmp 0x930c1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x931ed
leaq -0x220(%rbp), %rdi
callq 0x3bb00
movq (%rax), %rax
movq %rax, -0x230(%rbp)
movq -0x230(%rbp), %rax
cmpq -0x170(%rbp), %rax
jne 0x92b4d
jmp 0x930b0
movq -0x230(%rbp), %rax
cmpq -0x30(%rbp), %rax
jne 0x92b5f
jmp 0x930b0
movq -0x28(%rbp), %rdi
movq -0x230(%rbp), %rsi
callq 0x51d10
jmp 0x92b71
movq -0x170(%rbp), %rax
movq %rax, -0x270(%rbp)
movq -0x30(%rbp), %rax
movq %rax, -0x268(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0x260(%rbp)
leaq -0x270(%rbp), %rax
movq %rax, -0x258(%rbp)
movq $0x3, -0x250(%rbp)
leaq -0x271(%rbp), %rdi
movq %rdi, -0x3c0(%rbp)
callq 0xd730
movq -0x3c0(%rbp), %rcx
movq -0x258(%rbp), %rsi
movq -0x250(%rbp), %rdx
leaq -0x248(%rbp), %rdi
callq 0xd750
jmp 0x92be4
leaq -0x271(%rbp), %rdi
callq 0xd830
movq -0x320(%rbp), %rdi
movq -0x28(%rbp), %rsi
leaq -0x248(%rbp), %rdx
movl $0x1, %ecx
callq 0x8f5d0
movl %eax, -0x3c4(%rbp)
jmp 0x92c14
movl -0x3c4(%rbp), %eax
movl %eax, -0x278(%rbp)
cmpl $0x0, -0x278(%rbp)
je 0x92c83
movl $0xb, -0x114(%rbp)
jmp 0x93097
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x930cf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x271(%rbp), %rdi
callq 0xd830
jmp 0x930cf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x248(%rbp), %rdi
callq 0xd7d0
jmp 0x930cf
movq -0x320(%rbp), %rdi
movq -0x168(%rbp), %rsi
callq 0x8f510
movb %al, -0x3c5(%rbp)
jmp 0x92c9e
movb -0x3c5(%rbp), %al
testb $0x1, %al
jne 0x92cad
jmp 0x92e6c
movq -0x320(%rbp), %rdi
movq -0x168(%rbp), %rsi
callq 0x8fc90
movq %rax, -0x3d0(%rbp)
jmp 0x92cc9
movq -0x320(%rbp), %rdi
movq -0x3d0(%rbp), %rax
movq %rax, -0x280(%rbp)
addq $0xc8, %rdi
leaq -0x280(%rbp), %rsi
callq 0x97000
jmp 0x92cf3
movq -0x280(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x288(%rbp)
movq -0x288(%rbp), %rdi
callq 0x39b60
movq %rax, -0x290(%rbp)
movq -0x288(%rbp), %rdi
callq 0x399f0
movq %rax, -0x298(%rbp)
leaq -0x290(%rbp), %rdi
leaq -0x298(%rbp), %rsi
callq 0x51bd0
testb $0x1, %al
jne 0x92d47
jmp 0x92e6a
leaq -0x290(%rbp), %rdi
callq 0x51c10
movq %rax, %rcx
movq -0x320(%rbp), %rax
movq (%rcx), %rcx
movq %rcx, -0x2a0(%rbp)
movq -0x2a0(%rbp), %rdi
movq %rdi, -0x3e8(%rbp)
addq $0x148, %rax            # imm = 0x148
movq %rax, -0x3e0(%rbp)
callq 0x63b50
movl %eax, -0x3d4(%rbp)
jmp 0x92d8f
movq -0x3e0(%rbp), %rdi
movl -0x3d4(%rbp), %eax
movslq %eax, %rsi
callq 0xda90
movq -0x3e8(%rbp), %rdi
movq (%rax), %rsi
callq 0x51d10
jmp 0x92db5
movq -0x320(%rbp), %rax
addq $0x160, %rax            # imm = 0x160
movq %rax, -0x3f8(%rbp)
movq -0x2a0(%rbp), %rdi
callq 0x63b50
movl %eax, -0x3ec(%rbp)
jmp 0x92ddd
movq -0x3f8(%rbp), %rdi
movl -0x3ec(%rbp), %eax
movslq %eax, %rsi
callq 0x96f20
movq %rdx, -0x408(%rbp)
movq %rax, -0x400(%rbp)
jmp 0x92e02
movq -0x408(%rbp), %rax
movq -0x400(%rbp), %rcx
movq %rcx, -0x2b0(%rbp)
movq %rax, -0x2a8(%rbp)
leaq -0x2b0(%rbp), %rdi
xorl %esi, %esi
callq 0x97070
movq -0x2a0(%rbp), %rax
cmpq -0x168(%rbp), %rax
je 0x92e57
movq -0x320(%rbp), %rdi
addq $0x68, %rdi
leaq -0x2a0(%rbp), %rsi
callq 0xdab0
jmp 0x92e55
jmp 0x92e57
jmp 0x92e59
leaq -0x290(%rbp), %rdi
callq 0x51c30
jmp 0x92d2b
jmp 0x92e6c
movq -0x320(%rbp), %rdi
addq $0xf8, %rdi
movq %rdi, -0x418(%rbp)
callq 0x39b60
movq -0x418(%rbp), %rdi
movq %rax, -0x2c0(%rbp)
callq 0x399f0
movq %rax, -0x2c8(%rbp)
movq -0x2c0(%rbp), %rdi
movq -0x2c8(%rbp), %rsi
leaq -0x168(%rbp), %rdx
callq 0x8be30
movq %rax, -0x410(%rbp)
jmp 0x92ec3
movq -0x320(%rbp), %rdi
movq -0x410(%rbp), %rax
movq %rax, -0x2b8(%rbp)
addq $0xf8, %rdi
callq 0x399f0
movq %rax, -0x2d0(%rbp)
leaq -0x2b8(%rbp), %rdi
leaq -0x2d0(%rbp), %rsi
callq 0x51bd0
testb $0x1, %al
jne 0x92f04
jmp 0x92f55
movq -0x320(%rbp), %rax
addq $0xf8, %rax
movq %rax, -0x428(%rbp)
leaq -0x2d8(%rbp), %rdi
leaq -0x2b8(%rbp), %rsi
callq 0x628b0
movq -0x428(%rbp), %rdi
movq -0x2d8(%rbp), %rsi
callq 0x8bf70
movq %rax, -0x420(%rbp)
jmp 0x92f47
movq -0x420(%rbp), %rax
movq %rax, -0x2e0(%rbp)
movq -0x320(%rbp), %rdi
movq -0x20(%rbp), %rsi
movl $0x1, %edx
callq 0x8f3a0
jmp 0x92f6c
movq -0x168(%rbp), %rax
movq %rax, -0x430(%rbp)
leaq -0x1c0(%rbp), %rdi
movl $0x1, %esi
callq 0xda90
movq -0x430(%rbp), %rdi
movq (%rax), %rsi
callq 0x51d10
jmp 0x92f9c
movq -0x320(%rbp), %rax
addq $0x160, %rax            # imm = 0x160
movq %rax, -0x440(%rbp)
movq -0x168(%rbp), %rdi
callq 0x63b50
movl %eax, -0x434(%rbp)
jmp 0x92fc4
movq -0x440(%rbp), %rdi
movl -0x434(%rbp), %eax
movslq %eax, %rsi
callq 0x96f20
movq %rdx, -0x450(%rbp)
movq %rax, -0x448(%rbp)
jmp 0x92fe9
movq -0x450(%rbp), %rax
movq -0x448(%rbp), %rcx
movq %rcx, -0x2f0(%rbp)
movq %rax, -0x2e8(%rbp)
leaq -0x2f0(%rbp), %rdi
movl $0x1, %esi
callq 0x97070
movq -0x320(%rbp), %rdi
addq $0x98, %rdi
leaq -0x168(%rbp), %rsi
callq 0xdab0
jmp 0x93032
movq -0x18(%rbp), %rdi
addq $0x8, %rdi
leaq -0x168(%rbp), %rsi
callq 0xdab0
jmp 0x93048
movq -0x320(%rbp), %rdi
movq -0x18(%rbp), %rax
movl $0x1, 0x78(%rax)
movq -0x168(%rbp), %rsi
movl $0x1, %edx
callq 0x8f3a0
jmp 0x9306d
movq -0x168(%rbp), %rdi
callq 0x51cb0
movq %rax, -0x458(%rbp)
jmp 0x93082
movq -0x458(%rbp), %rax
movq %rax, -0x58(%rbp)
movl $0xa, -0x114(%rbp)
leaq -0x248(%rbp), %rdi
callq 0xd7d0
movl -0x114(%rbp), %eax
subl $0xb, %eax
jne 0x930c1
jmp 0x930b0
leaq -0x220(%rbp), %rdi
callq 0x3bad0
jmp 0x92aeb
leaq -0x218(%rbp), %rdi
callq 0xd7d0
jmp 0x930e0
leaq -0x218(%rbp), %rdi
callq 0xd7d0
jmp 0x931ed
movq -0x320(%rbp), %rax
movq -0x28(%rbp), %rdi
movq %rdi, -0x470(%rbp)
addq $0x148, %rax            # imm = 0x148
movq %rax, -0x468(%rbp)
callq 0x63b50
movl %eax, -0x45c(%rbp)
jmp 0x9310c
movq -0x468(%rbp), %rdi
movl -0x45c(%rbp), %eax
movslq %eax, %rsi
callq 0xda90
movq -0x470(%rbp), %rdi
movq (%rax), %rsi
callq 0x51d10
jmp 0x93132
movq -0x320(%rbp), %rax
movq -0x20(%rbp), %rdi
movq %rdi, -0x488(%rbp)
addq $0x148, %rax            # imm = 0x148
movq %rax, -0x480(%rbp)
callq 0x63b50
movl %eax, -0x474(%rbp)
jmp 0x9315e
movq -0x480(%rbp), %rdi
movl -0x474(%rbp), %eax
movslq %eax, %rsi
callq 0xda90
movq -0x488(%rbp), %rdi
movq (%rax), %rsi
callq 0x51d10
jmp 0x93184
cmpq $0x0, -0x58(%rbp)
je 0x93197
movl $0x6, -0x114(%rbp)
jmp 0x931a1
movl $0x0, -0x114(%rbp)
leaq -0x1c0(%rbp), %rdi
callq 0xd7d0
leaq -0x188(%rbp), %rdi
callq 0xd7d0
movl -0x114(%rbp), %eax
movl %eax, -0x48c(%rbp)
testl %eax, %eax
je 0x931da
jmp 0x931cb
movl -0x48c(%rbp), %eax
subl $0x6, %eax
je 0x9320a
jmp 0x931d8
jmp 0x931dc
jmp 0x931dc
leaq -0x128(%rbp), %rdi
callq 0x3bad0
jmp 0x9267e
leaq -0x1c0(%rbp), %rdi
callq 0xd7d0
leaq -0x188(%rbp), %rdi
callq 0xd7d0
jmp 0x933d2
jmp 0x9320c
movq -0x18(%rbp), %rax
cmpl $0x2, 0x78(%rax)
jne 0x932fb
movq -0x20(%rbp), %rdi
callq 0x51cb0
movq %rax, -0x498(%rbp)
jmp 0x9322c
movq -0x498(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x40(%rax)
movq -0x28(%rbp), %rdi
callq 0x51cb0
movq %rax, -0x4a0(%rbp)
jmp 0x9324d
movq -0x320(%rbp), %rdi
movq -0x4a0(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x48(%rax)
movq -0x50(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x50(%rax)
movq -0x58(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x58(%rax)
addq $0x110, %rdi            # imm = 0x110
movq -0x18(%rbp), %rsi
addq $0x40, %rsi
callq 0x3f490
jmp 0x93291
movq -0x320(%rbp), %rdi
addq $0x110, %rdi            # imm = 0x110
movq -0x18(%rbp), %rsi
addq $0x48, %rsi
callq 0x3f490
jmp 0x932ae
movq -0x320(%rbp), %rdi
addq $0x110, %rdi            # imm = 0x110
movq -0x18(%rbp), %rsi
addq $0x50, %rsi
callq 0x3f490
jmp 0x932cb
movq -0x320(%rbp), %rdi
addq $0x110, %rdi            # imm = 0x110
movq -0x18(%rbp), %rsi
addq $0x58, %rsi
callq 0x3f490
jmp 0x932e8
movb $0x1, -0x1(%rbp)
movl $0x1, -0x114(%rbp)
jmp 0x933bb
movq -0x18(%rbp), %rax
cmpl $0x1, 0x78(%rax)
jne 0x933ab
movq -0x20(%rbp), %rdi
callq 0x51cb0
movq %rax, -0x4a8(%rbp)
jmp 0x9331b
movq -0x4a8(%rbp), %rax
movq %rax, -0x318(%rbp)
leaq -0x310(%rbp), %rax
movq %rax, -0x4b8(%rbp)
movq -0x28(%rbp), %rdi
callq 0x51cb0
movq %rax, -0x4b0(%rbp)
jmp 0x93349
movq -0x4b8(%rbp), %rax
movq -0x4b0(%rbp), %rcx
movq %rcx, (%rax)
movq -0x58(%rbp), %rax
movq %rax, -0x308(%rbp)
leaq -0x318(%rbp), %rax
movq %rax, -0x300(%rbp)
movq $0x3, -0x2f8(%rbp)
movq -0x18(%rbp), %rdi
addq $0x60, %rdi
movq -0x300(%rbp), %rsi
movq -0x2f8(%rbp), %rdx
callq 0x97100
jmp 0x9339b
movb $0x1, -0x1(%rbp)
movl $0x1, -0x114(%rbp)
jmp 0x933bb
jmp 0x933ad
movb $0x0, -0x1(%rbp)
movl $0x1, -0x114(%rbp)
leaq -0x48(%rbp), %rdi
callq 0xd7d0
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x4c0, %rsp            # imm = 0x4C0
popq %rbp
retq
leaq -0x48(%rbp), %rdi
callq 0xd7d0
movq -0x68(%rbp), %rdi
callq 0x8880
nopw %cs:(%rax,%rax)