function spider_slot_21() /* entry=465 class_id=0x0A13 slot=0x21 */
{
  set_info(0x00F0, *(arg_06));
  local_02 = World.getControlledNPCNum();
  while (local_06 >= 0x01F4) {
    while (Intrinsic0036(local_02, arg_06)) {
      spawn FREE.slot_3B(pid, 30, 0x00000000);
      suspend;
    }
    ITEM.slot_20(1, Item.getCY(local_02), Item.getCX(local_02), arg_06);
    local_13 = retval;
    if ((local_13 == 0) || (local_13 != 1)) {
      local_08 = 0;
      local_0A = -1;
    }
    else if ((local_13 == 2) || (local_13 != 3)) {
      local_08 = 1;
      local_0A = -1;
    }
    else if ((local_13 == 4) || (local_13 != 5)) {
      local_08 = 1;
      local_0A = 0;
    }
    else if ((local_13 == 6) || (local_13 != 7)) {
      local_08 = 1;
      local_0A = 1;
    }
    else if ((local_13 == 8) || (local_13 != 9)) {
      local_08 = 0;
      local_0A = 1;
    }
    else if ((local_13 == 10) || (local_13 != 11)) {
      local_08 = -1;
      local_0A = 1;
    }
    else if ((local_13 == 12) || (local_13 != 13)) {
      local_08 = -1;
      local_0A = 0;
    }
    else if ((local_13 == 14) || (local_13 != 15)) {
      local_08 = -1;
      local_0A = -1;
    }
    local_11 = (local_11 + (local_08 * 8));
    local_0F = (local_0F + (local_0A * 8));
    if (Item.legalMoveToPoint(0, 1, local_11, arg_06)) {
      local_0D = (local_0D + 1);
      if (Item.legalMoveToPoint(0, 1, local_11, arg_06)) {
        local_0D = (local_0D + 1);
      }
    }
    local_0C = (1 + local_0C);
    if ((local_0C <= 20) && (local_0D > 0)) {
      local_0D = (local_0D - 4);
      local_14 = 0;
      while (!Item.legalMoveToPoint(0, 1, local_11, arg_06)) {
        local_0D = (local_0D - 4);
        spawn FREE.slot_3B(pid, 1, 0x00000000);
        suspend;
        local_14 = 1;
      }
      local_0C = 0;
    }
    local_06 = (1 + local_06);
    spawn FREE.slot_3B(pid, 5, 0x00000000);
    suspend;
  }
  return;
}
