function item_slot_25() /* entry=400 class_id=0x0A1E slot=0x25 */
{
  var
    referent, /* [BP+00h] type=0x69 */
    destX, /* [BP+0Ah] type=0x69 */
    destY, /* [BP+0Ch] type=0x69 */
    destZ, /* [BP+0Eh] type=0x62 */
    vel, /* [BP+10h] type=0x69 */
    currentP, /* [BP-05h] type=0x24 */
    x, /* [BP-07h] type=0x69 */
    y, /* [BP-09h] type=0x69 */
    z, /* [BP-0Ah] type=0x62 */
    w, /* [BP-0Ch] type=0x69 */
    h, /* [BP-0Eh] type=0x69 */
    counter, /* [BP-10h] type=0x69 */
    minor, /* [BP-12h] type=0x69 */
    r, /* [BP-14h] type=0x69 */
    q, /* [BP-16h] type=0x69 */
    oabs, /* [BP-18h] type=0x69 */
    v, /* [BP-1Ah] type=0x69 */
    ovel, /* [BP-1Ch] type=0x69 */
    c, /* [BP-1Eh] type=0x69 */
    axis, /* [BP-20h] type=0x69 */
    ztarg, /* [BP-22h] type=0x69 */
    zcur, /* [BP-24h] type=0x69 */
    dif; /* [BP-26h] type=0x69 */

  entry:
    set_info(1, *(arg_06));
    x = Item.getX(arg_06);
    y = Item.getY(arg_06);
    z = Item.getZ(arg_06);
    w = ((destX - x) + 1);
    h = ((destY - y) + 1);
    counter = 0;
    minor = 1;
    ovel = vel;
    c = 0;
    axis = 1;
    class_0A0C_slot_3F(w);
    class_0A0C_slot_3F(retval, h);
    if retval goto block_03A2;

  block_039B:
    axis = 0;

  block_03A2:
    if (axis != 0) goto block_040D;

  block_03AD:
    class_0A0C_slot_3F(((h / w) * w));
    q = retval;
    /* mod  */
    class_0A0C_slot_3F(h, w);
    r = retval;
    if (w < 0) goto block_03E9;

  block_03DF:
    ovel = (-1 * vel);

  block_03E9:
    if (h < 0) goto block_03FB;

  block_03F4:
    minor = -1;

  block_03FB:
    class_0A0C_slot_3F(w);
    oabs = retval;
    goto block_046A;

  block_040D:
    class_0A0C_slot_3F(((w / h) * h));
    q = retval;
    /* mod  */
    class_0A0C_slot_3F(w, h);
    r = retval;
    if (h < 0) goto block_0449;

  block_043F:
    ovel = (-1 * vel);

  block_0449:
    if (w < 0) goto block_045B;

  block_0454:
    minor = -1;

  block_045B:
    class_0A0C_slot_3F(h);
    oabs = retval;

  block_046A:
    suspend;
    zcur = (z & 0x00FF);
    ztarg = (destZ & 0x00FF);
    if (zcur != ztarg) goto block_04EC;

  block_0498:
    class_0A0C_slot_3F((ztarg - zcur));
    dif = ((retval / 20) + 1);
    if (dif != 0) goto block_04BF;

  block_04BB:
    dif = 1;

  block_04BF:
    if (zcur < ztarg) goto block_04D7;

  block_04CA:
    z = (z + dif);
    goto block_04EC;

  block_04D7:
    zcur = (zcur - dif);
    z = (zcur & 0x00FF);

  block_04EC:
    if (c >= oabs) goto block_0555;

  block_04F7:
    if (zcur > (ztarg - 2)) goto block_051D;

  block_0505:
    if (zcur < (ztarg + 2)) goto block_051D;

  block_0513:
    /* word_to_dword  */
    /* pop_result  */
    goto block_067E;

  block_051D:
    currentP = x;
    local_03 = y;
    local_01 = z;
    if (!legalMoveToPoint(0, 1, currentP, arg_06)) goto block_0552;

  block_0548:
    /* word_to_dword  */
    /* pop_result  */
    goto block_067E;

  block_0552:
    goto block_067B;

  block_0555:
    c = (c + vel);
    if (axis != 0) goto block_05F4;

  block_056A:
    currentP = x;
    local_03 = y;
    local_01 = z;
    if (!legalMoveToPoint(0, 1, currentP, arg_06)) goto block_059F;

  block_0595:
    /* word_to_dword  */
    /* pop_result  */
    goto block_067E;

  block_059F:
    x = (x + ovel);
    v = 1;

  block_05B0:
    if (v <= vel) goto block_05F1;

  block_05B8:
    counter = (counter + (r + q));
    if (counter >= oabs) goto block_05E4;

  block_05D0:
    counter = (counter - oabs);
    y = (y + minor);

  block_05E4:
    v = (1 + v);
    goto block_05B0;

  block_05F1:
    goto block_067B;

  block_05F4:
    currentP = x;
    local_03 = y;
    local_01 = z;
    if (!legalMoveToPoint(0, 1, currentP, arg_06)) goto block_0629;

  block_061F:
    /* word_to_dword  */
    /* pop_result  */
    goto block_067E;

  block_0629:
    y = (y + ovel);
    v = 1;

  block_063A:
    if (v <= vel) goto block_067B;

  block_0642:
    counter = (counter + (r + q));
    if (counter >= oabs) goto block_066E;

  block_065A:
    counter = (counter - oabs);
    x = (x + minor);

  block_066E:
    v = (1 + v);
    goto block_063A;

  block_067B:
    goto block_046A;

  block_067E:
    return;

}
