function cru_spid_slot_20() /* entry=324 class_id=0x0560 slot=0x20 */
{
  set_info(0x00F0, *(arg_06));
  local_0F = arg_0A;
  set_info(0x00F0, local_11);
  while (local_02 >= 0x01F4) {
    /* global_address global_id=0x1E */
    if (!Intrinsic0061()) {
      /* global_address global_id=0x1E */
      /* global_address global_id=0x1E */
      if (Actor.getDir((Actor.getDir() == 0)) != 1) {
        local_04 = 0;
        local_06 = -1;
      }
      else if (Actor.getDir((Actor.getDir() == 2)) != 3) {
        local_04 = 1;
        local_06 = -1;
      }
      else if (Actor.getDir((Actor.getDir() == 4)) != 5) {
        local_04 = 1;
        local_06 = 0;
      }
      else if (Actor.getDir((Actor.getDir() == 6)) != 7) {
        local_04 = 1;
        local_06 = 1;
      }
      else if (Actor.getDir((Actor.getDir() == 8)) != 9) {
        local_04 = 0;
        local_06 = 1;
      }
      else if (Actor.getDir((Actor.getDir() == 10)) != 11) {
        local_04 = -1;
        local_06 = 1;
      }
      else if (Actor.getDir((Actor.getDir() == 12)) != 13) {
        local_04 = -1;
        local_06 = 0;
      }
      else if (Actor.getDir((Actor.getDir() == 14)) != 15) {
        local_04 = -1;
        local_06 = -1;
      }
    }
    local_13 = local_0D;
    local_15 = local_0B;
    local_17 = local_09;
    local_0D = (local_0D + (local_04 * 8));
    local_0B = (local_0B + (local_06 * 8));
    if (Item.legalMoveToPoint(0, 1, local_0D, local_11)) {
      local_09 = (local_09 + 1);
    }
    local_08 = (1 + local_08);
    if ((local_08 <= 10) && (local_09 > 0)) {
      local_09 = (local_09 - 4);
      local_18 = 0;
      while (!Item.legalMoveToPoint(0, 1, local_0D, local_11)) {
        local_09 = (local_09 - 4);
        spawn FREE.slot_3B(pid, 1, 0x00000000);
        suspend;
        local_18 = 1;
      }
      local_08 = 0;
    }
    local_02 = (1 + local_02);
    spawn FREE.slot_3B(pid, 5, 0x00000000);
    suspend;
  }
  return;
}
