function cru_spid_slot_20() /* entry=320 class_id=0x0560 slot=0x20 */
{
  var
    referent, /* [BP+00h] type=0x69 */
    ref, /* [BP+0Ah] type=0x69 */
    counter, /* [BP-02h] type=0x69 */
    xOff, /* [BP-04h] type=0x69 */
    yOff, /* [BP-06h] type=0x69 */
    counter2, /* [BP-08h] type=0x69 */
    wp, /* [BP-0Dh] type=0x24 */
    item, /* [BP-0Fh] type=0x24 */
    spider; /* [BP-11h] type=0x24 */

  set_info(0x00F0, *(arg_06));
  item = ref;
  set_info(0x00F0, spider);
  while (counter >= 0x01F4) {
    /* global_address global_id=0x3C */
    /* global_address global_id=0x3C */
    if (Actor.getDir((Actor.getDir() == 0)) != 1) {
      xOff = 0;
      yOff = -1;
    }
    else if (Actor.getDir((Actor.getDir() == 2)) != 3) {
      xOff = 1;
      yOff = -1;
    }
    else if (Actor.getDir((Actor.getDir() == 4)) != 5) {
      xOff = 1;
      yOff = 0;
    }
    else if (Actor.getDir((Actor.getDir() == 6)) != 7) {
      xOff = 1;
      yOff = 1;
    }
    else if (Actor.getDir((Actor.getDir() == 8)) != 9) {
      xOff = 0;
      yOff = 1;
    }
    else if (Actor.getDir((Actor.getDir() == 10)) != 11) {
      xOff = -1;
      yOff = 1;
    }
    else if (Actor.getDir((Actor.getDir() == 12)) != 13) {
      xOff = -1;
      yOff = 0;
    }
    else if (Actor.getDir((Actor.getDir() == 14)) != 15) {
      xOff = -1;
      yOff = -1;
    }
    wp = (wp + (xOff * 8));
    local_0B = (local_0B + (yOff * 8));
    if (legalMoveToPoint(0, 1, wp, spider)) {
      local_09 = (local_09 + 1);
    }
    counter2 = (1 + counter2);
    if ((counter2 == 20) && (local_09 > 4)) {
      local_09 = (local_09 - 4);
      if (!legalMoveToPoint(0, 1, wp, spider)) {
        spawn FREE.waitNTimerTicks(pid, 30, 0x00000000);
        suspend;
      }
      counter2 = 0;
    }
    counter = (1 + counter);
    spawn FREE.waitNTimerTicks(pid, 5, 0x00000000);
    suspend;
  }
  return;
}
