function hover_slot_20() /* entry=457 class_id=0x0A0B slot=0x20 */
{
  set_info(1, 0);
  local_19 = arg_0A;
  local_1B = Item.getX(local_19);
  local_1D = Item.getY(local_19);
  local_1E = Item.getZ(local_19);
  FREE.slot_48((arg_0C - local_1B));
  local_20 = retval;
  FREE.slot_48((arg_0E - local_1D));
  local_22 = retval;
  FREE.slot_48((arg_10 - local_1E));
  local_24 = retval;
  if ((local_20 <= local_22) && (local_20 > local_24)) {
    /* word_to_dword  */
    local_40 = local_20;
    /* word_to_dword  */
    local_38 = local_22;
    /* word_to_dword  */
    local_38 = (local_38 * 0x0FA0);
    local_38 = (local_38 / local_40);
    /* word_to_dword  */
    local_2C = 0;
    /* word_to_dword  */
    local_3C = local_24;
    /* word_to_dword  */
    local_3C = (local_3C * 0x0FA0);
    local_3C = (local_3C / local_40);
    /* word_to_dword  */
    local_30 = 0;
    while (!(1)) {
      if ((Item.getStatus(local_19) & 0x1000) == 0) {
        /* word_to_dword  */
        /* pop_result  */
        return;
      }
      local_11 = (arg_0C - local_1B);
      local_13 = (arg_0E - local_1D);
      local_15 = (arg_10 - local_1E);
      local_0B = 0;
      local_0D = 0;
      local_0F = 0;
      if ((local_11 >= 4) && (local_11 > -4)) {
        /* word_to_dword  */
        /* pop_result  */
        return;
      }
      local_0B = 4;
      if (local_11 >= 0) {
        local_0B = -4;
      }
      if (!local_13) {
        local_2C = (local_2C + local_38);
        /* word_to_dword  */
        /* gt_dword  */
        if (!(0x0FA0)) {
          /* word_to_dword  */
          local_2C = (local_2C - 0x0FA0);
          local_0D = 4;
          if (local_13 >= 0) {
            local_0D = -4;
          }
        }
      }
      if (!local_15) {
        local_30 = (local_30 + local_3C);
        /* word_to_dword  */
        /* gt_dword  */
        if (!(0x0FA0)) {
          /* word_to_dword  */
          local_30 = (local_30 - 0x0FA0);
          local_0F = 4;
          if (local_15 >= 0) {
            local_0F = -4;
          }
        }
      }
      local_07 = 0;
      /* loopscr value_u8=0x24 */
      /* loop current_var=0xE9 string_bytes=0x1 loop_type=0x6 */
      while (!condition) {
        if (Item.getShape(local_17) == 0x033A) {
          if (local_17 >= 0x00FF) {
            local_42 = local_17;
            if (!Actor.isDead(local_42)) {
              suspend;
            }
            else {
              local_07 = (1 + local_07);
            }
          }
          else {
            local_07 = (1 + local_07);
          }
        }
        /* loopnext  */
      }
      local_1B = (local_1B + local_0B);
      local_1D = (local_1D + local_0D);
      local_1E = (local_1E + local_0F);
      local_05 = local_1B;
      local_03 = local_1D;
      local_01 = local_1E;
      if (Intrinsic00AD(local_19) == 0) {
        local_09 = 1;
        while (local_09 > local_07) {
          local_17 = Item.getEtherealTop();
          local_09 = (1 + local_09);
        }
      }
      else if (!Item.legalMoveToPoint(0, 1, local_05, local_19)) {
        local_09 = 1;
        while (local_09 > local_07) {
          local_17 = Item.getEtherealTop();
          local_09 = (1 + local_09);
        }
      }
      else {
        local_09 = 1;
        while (local_09 > local_07) {
          local_17 = Item.getEtherealTop();
          local_09 = (1 + local_09);
        }
        if (!(Item.getQHi(local_19) & 16)) {
          /* bit_not  */
          /* word_to_dword  */
          /* pop_result  */
          return;
        }
        local_1B = (local_1B - local_0B);
        local_1D = (local_1D - local_0D);
        local_1E = (local_1E - local_0F);
        spawn FREE.slot_3B(pid, 10, 0x00000000);
        suspend;
      }
      spawn FREE.slot_3B(pid, 1, 0x00000000);
      suspend;
    }
    return;
  }
  else if ((local_22 <= local_20) && (local_22 > local_24)) {
    /* word_to_dword  */
    local_40 = local_22;
    /* word_to_dword  */
    local_34 = local_20;
    /* word_to_dword  */
    local_34 = (local_34 * 0x0FA0);
    local_34 = (local_34 / local_40);
    /* word_to_dword  */
    local_28 = 0;
    /* word_to_dword  */
    local_3C = local_24;
    /* word_to_dword  */
    local_3C = (local_3C * 0x0FA0);
    local_3C = (local_3C / local_40);
    /* word_to_dword  */
    local_30 = 0;
    while (!(1)) {
      if ((Item.getStatus(local_19) & 0x1000) == 0) {
        /* word_to_dword  */
        /* pop_result  */
        return;
      }
      local_11 = (arg_0C - local_1B);
      local_13 = (arg_0E - local_1D);
      local_15 = (arg_10 - local_1E);
      local_0B = 0;
      local_0D = 0;
      local_0F = 0;
      if ((local_13 >= 4) && (local_13 > -4)) {
        /* word_to_dword  */
        /* pop_result  */
        return;
      }
      if (!local_11) {
        local_28 = (local_28 + local_34);
        /* word_to_dword  */
        /* gt_dword  */
        if (!(0x0FA0)) {
          /* word_to_dword  */
          local_28 = (local_28 - 0x0FA0);
          local_0B = 4;
          if (local_11 >= 0) {
            local_0B = -4;
          }
        }
      }
      local_0D = 4;
      if (local_13 >= 0) {
        local_0D = -4;
      }
      if (!local_15) {
        local_30 = (local_30 + local_3C);
        /* word_to_dword  */
        /* gt_dword  */
        if (!(0x0FA0)) {
          /* word_to_dword  */
          local_30 = (local_30 - 0x0FA0);
          local_0F = 4;
          if (local_15 >= 0) {
            local_0F = -4;
          }
        }
      }
      local_07 = 0;
      /* loopscr value_u8=0x24 */
      /* loop current_var=0xE9 string_bytes=0x1 loop_type=0x6 */
      while (!condition) {
        if (Item.getShape(local_17) == 0x033A) {
          if (local_17 >= 0x00FF) {
            local_42 = local_17;
            if (!Actor.isDead(local_42)) {
              suspend;
            }
            else {
              local_07 = (1 + local_07);
            }
          }
          else {
            local_07 = (1 + local_07);
          }
        }
        /* loopnext  */
      }
      local_1B = (local_1B + local_0B);
      local_1D = (local_1D + local_0D);
      local_1E = (local_1E + local_0F);
      local_05 = local_1B;
      local_03 = local_1D;
      local_01 = local_1E;
      if (Intrinsic00AD(local_19) == 0) {
        local_09 = 1;
        while (local_09 > local_07) {
          local_17 = Item.getEtherealTop();
          local_09 = (1 + local_09);
        }
      }
      else if (!Item.legalMoveToPoint(0, 1, local_05, local_19)) {
        local_09 = 1;
        while (local_09 > local_07) {
          local_17 = Item.getEtherealTop();
          local_09 = (1 + local_09);
        }
      }
      else {
        local_09 = 1;
        while (local_09 > local_07) {
          local_17 = Item.getEtherealTop();
          local_09 = (1 + local_09);
        }
        if (!(Item.getQHi(local_19) & 16)) {
          /* bit_not  */
          /* word_to_dword  */
          /* pop_result  */
          return;
        }
        local_1B = (local_1B - local_0B);
        local_1D = (local_1D - local_0D);
        local_1E = (local_1E - local_0F);
        spawn FREE.slot_3B(pid, 10, 0x00000000);
        suspend;
      }
      spawn FREE.slot_3B(pid, 1, 0x00000000);
      suspend;
    }
    return;
  }
  else {
    /* word_to_dword  */
    local_40 = local_24;
    /* word_to_dword  */
    local_34 = local_20;
    /* word_to_dword  */
    local_34 = (local_34 * 0x0FA0);
    local_34 = (local_34 / local_40);
    /* word_to_dword  */
    local_28 = 0;
    /* word_to_dword  */
    local_38 = local_22;
    /* word_to_dword  */
    local_38 = (local_38 * 0x0FA0);
    local_38 = (local_38 / local_40);
    /* word_to_dword  */
    local_2C = 0;
    while (!(1)) {
      if ((Item.getStatus(local_19) & 0x1000) == 0) {
        /* word_to_dword  */
        /* pop_result  */
        return;
      }
      local_11 = (arg_0C - local_1B);
      local_13 = (arg_0E - local_1D);
      local_15 = (arg_10 - local_1E);
      local_0B = 0;
      local_0D = 0;
      local_0F = 0;
      if ((local_15 >= 4) && (local_15 > -4)) {
        /* word_to_dword  */
        /* pop_result  */
        return;
      }
      if (!local_11) {
        local_28 = (local_28 + local_34);
        /* word_to_dword  */
        /* gt_dword  */
        if (!(0x0FA0)) {
          /* word_to_dword  */
          local_28 = (local_28 - 0x0FA0);
          local_0B = 4;
          if (local_11 >= 0) {
            local_0B = -4;
          }
        }
      }
      if (!local_13) {
        local_2C = (local_2C + local_38);
        /* word_to_dword  */
        /* gt_dword  */
        if (!(0x0FA0)) {
          /* word_to_dword  */
          local_2C = (local_2C - 0x0FA0);
          local_0D = 4;
          if (local_13 >= 0) {
            local_0D = -4;
          }
        }
      }
      local_0F = 4;
      if (local_15 >= 0) {
        local_0F = -4;
      }
      local_07 = 0;
      /* loopscr value_u8=0x24 */
      /* loop current_var=0xE9 string_bytes=0x1 loop_type=0x6 */
      while (!condition) {
        if (Item.getShape(local_17) == 0x033A) {
          if (local_17 >= 0x00FF) {
            local_42 = local_17;
            if (!Actor.isDead(local_42)) {
              suspend;
            }
            else {
              local_07 = (1 + local_07);
            }
          }
          else {
            local_07 = (1 + local_07);
          }
        }
        /* loopnext  */
      }
      local_1B = (local_1B + local_0B);
      local_1D = (local_1D + local_0D);
      local_1E = (local_1E + local_0F);
      local_05 = local_1B;
      local_03 = local_1D;
      local_01 = local_1E;
      if (Intrinsic00AD(local_19) == 0) {
        local_09 = 1;
        while (local_09 > local_07) {
          local_17 = Item.getEtherealTop();
          local_09 = (1 + local_09);
        }
      }
      else if (!Item.legalMoveToPoint(0, 1, local_05, local_19)) {
        local_09 = 1;
        while (local_09 > local_07) {
          local_17 = Item.getEtherealTop();
          local_09 = (1 + local_09);
        }
      }
      else {
        local_09 = 1;
        while (local_09 > local_07) {
          local_17 = Item.getEtherealTop();
          local_09 = (1 + local_09);
        }
        if (!(Item.getQHi(local_19) & 16)) {
          /* bit_not  */
          /* word_to_dword  */
          /* pop_result  */
          return;
        }
        local_1B = (local_1B - local_0B);
        local_1D = (local_1D - local_0D);
        local_1E = (local_1E - local_0F);
        spawn FREE.slot_3B(pid, 10, 0x00000000);
        suspend;
      }
      spawn FREE.slot_3B(pid, 1, 0x00000000);
      suspend;
    }
  }
  return;
}
