function spider_slot_22() /* entry=390 class_id=0x0A14 slot=0x22 */
{
  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(0x00F0, *(arg_06));
    x = Intrinsic0013(arg_06);
    y = Item.legal_create(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_0652;

  block_064B:
    axis = 0;

  block_0652:
    if (axis != 0) goto block_06BD;

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

  block_068F:
    ovel = (-1 * vel);

  block_0699:
    if (h < 0) goto block_06AB;

  block_06A4:
    minor = -1;

  block_06AB:
    class_0A0C_slot_3F(w);
    oabs = retval;
    goto block_071A;

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

  block_06EF:
    ovel = (-1 * vel);

  block_06F9:
    if (w < 0) goto block_070B;

  block_0704:
    minor = -1;

  block_070B:
    class_0A0C_slot_3F(h);
    oabs = retval;

  block_071A:
    suspend;
    spawn class_0A0C_slot_32(pid, 2, 0x00000000);
    suspend;
    zcur = (z & 0x00FF);
    ztarg = (destZ & 0x00FF);
    if (zcur != ztarg) goto block_07C2;

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

  block_0791:
    dif = 1;

  block_0795:
    if (zcur < ztarg) goto block_07AD;

  block_07A0:
    z = (z + dif);
    goto block_07C2;

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

  block_07C2:
    if (c >= oabs) goto block_083A;

  block_07D3:
    if (zcur > (ztarg - 2)) goto block_07FF;

  block_07E4:
    if (zcur < (ztarg + 2)) goto block_07FF;

  block_07F5:
    /* word_to_dword  */
    /* pop_result  */
    goto block_096F;

  block_07FF:
    currentP = x;
    local_03 = y;
    local_01 = z;
    if (!Item.pop(0, 1, currentP, arg_06)) goto block_0837;

  block_082D:
    /* word_to_dword  */
    /* pop_result  */
    goto block_096F;

  block_0837:
    goto block_096C;

  block_083A:
    c = (c + vel);
    if (axis != 0) goto block_08E2;

  block_0855:
    currentP = x;
    local_03 = y;
    local_01 = z;
    if (!Item.pop(0, 1, currentP, arg_06)) goto block_088D;

  block_0883:
    /* word_to_dword  */
    /* pop_result  */
    goto block_096F;

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

  block_089E:
    if (v <= vel) goto block_08DF;

  block_08A6:
    counter = (counter + (r + q));
    if (counter >= oabs) goto block_08D2;

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

  block_08D2:
    v = (1 + v);
    goto block_089E;

  block_08DF:
    goto block_096C;

  block_08E2:
    currentP = x;
    local_03 = y;
    local_01 = z;
    if (!Item.pop(0, 1, currentP, arg_06)) goto block_091A;

  block_0910:
    /* word_to_dword  */
    /* pop_result  */
    goto block_096F;

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

  block_092B:
    if (v <= vel) goto block_096C;

  block_0933:
    counter = (counter + (r + q));
    if (counter >= oabs) goto block_095F;

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

  block_095F:
    v = (1 + v);
    goto block_092B;

  block_096C:
    goto block_071A;

  block_096F:
    return;

}
