function cru_spid_use() /* entry=320 class_id=0x0560 slot=0x01 */
{
  var
    referent, /* [BP+00h] type=0x69 */
    mine, /* [BP-02h] type=0x24 */
    InCrouch, /* [BP-03h] type=0x62 */
    Cru_Spider, /* [BP-05h] type=0x24 */
    target, /* [BP-07h] type=0x24 */
    item, /* [BP-09h] type=0x24 */
    counter, /* [BP-0Bh] type=0x69 */
    lastAnim, /* [BP-0Dh] type=0x69 */
    xOff, /* [BP-0Fh] type=0x69 */
    yOff, /* [BP-11h] type=0x69 */
    wp; /* [BP-16h] type=0x24 */

  set_info(0x0207, *(arg_06));
  process_exclude();
  /* global_address global_id=0x3C */
  if (Actor.getMap() == 40) {
    return;
  }
  else {
    Cru_Spider = *(arg_06);
    set_info(0x00F0, 0);
    /* global_address global_id=0x3C */
    lastAnim = Actor.getLastAnimSet();
    /* global_address global_id=0x3C */
    while (!Actor.isBusy()) {
      spawn FREE.waitNTimerTicks(pid, 2, 0x00000000);
      suspend;
    }
    /* global_address global_id=0x3C */
    if (Actor.getDir() == 0) {
      xOff = -1;
      yOff = -3;
    }
    else if (Actor.getDir() == 1) {
      xOff = 0;
      yOff = -3;
    }
    else if (Actor.getDir() == 2) {
      xOff = 1;
      yOff = -3;
    }
    else if (Actor.getDir() == 3) {
      xOff = 2;
      yOff = -2;
    }
    else if (Actor.getDir() == 4) {
      xOff = 2;
      yOff = -1;
    }
    else if (Actor.getDir() == 5) {
      xOff = 2;
      yOff = 0;
    }
    else if (Actor.getDir() == 6) {
      xOff = 2;
      yOff = 2;
    }
    else if (Actor.getDir() == 7) {
      xOff = 0;
      yOff = 2;
    }
    else if (Actor.getDir() == 8) {
      xOff = -1;
      yOff = 2;
    }
    else if (Actor.getDir() == 9) {
      xOff = -2;
      yOff = 2;
    }
    else if (Actor.getDir() == 10) {
      xOff = -3;
      yOff = 2;
    }
    else if (Actor.getDir() == 11) {
      xOff = -3;
      yOff = 1;
    }
    else if (Actor.getDir() == 12) {
      xOff = -3;
      yOff = 0;
    }
    else if (Actor.getDir() == 13) {
      xOff = -3;
      yOff = -1;
    }
    else if (Actor.getDir() == 14) {
      xOff = -3;
      yOff = -2;
    }
    else if (Actor.getDir() == 15) {
      xOff = -3;
      yOff = -3;
    }
    /* global_address global_id=0x3C */
    if (!Actor.getSomeFlagProbablyCrouch()) {
      InCrouch = 1;
    }
    else {
      InCrouch = 0;
      /* global_address global_id=0x3C */
      /* global_address global_id=0x3C */
      suspend;
    }
    /* global_address global_id=0x3C */
    wp = (Item.getX() + (xOff * 16));
    /* global_address global_id=0x3C */
    local_14 = (Item.getY() + (yOff * 16));
    /* global_address global_id=0x3C */
    local_12 = Item.getZ();
    if (Item.legalCreateAtPoint(wp, 0, 0x0560, mine)) {
      if (InCrouch) {
        /* global_address global_id=0x3C */
        /* global_address global_id=0x3C */
        suspend;
      }
      return;
    }
    else {
      counter = 1;
      while (counter > 9) {
        spawn FREE.waitNTimerTicks(pid, 3, 0x00000000);
        suspend;
        counter = (1 + counter);
      }
      spawn CRU_SPID.slot_20(mine, arg_06);
    }
  }
  return;
}
