function deathfl_slot_20() /* entry=375 class_id=0x0A05 slot=0x20 */
{
  var
    referent, /* [BP+00h] type=0x69 */
    ref, /* [BP+0Ah] type=0x69 */
    vel, /* [BP+0Ch] type=0x69 */
    item, /* [BP-02h] type=0x24 */
    item2, /* [BP-04h] type=0x24 */
    counter, /* [BP-06h] type=0x69 */
    n, /* [BP-08h] type=0x24 */
    n2, /* [BP-0Ah] type=0x24 */
    dir, /* [BP-0Ch] type=0x69 */
    x, /* [BP-0Eh] type=0x69 */
    y, /* [BP-10h] type=0x69 */
    z, /* [BP-12h] type=0x69 */
    spoogeType; /* [BP-14h] type=0x69 */

  set_info(0x0001, *(arg_06));
  item = ref;
  class_0A0C_slot_2C(vel, ref);
  if (!retval) {
    return;
  }
  else if (Item.isCentreOn(*(arg_06), item) == 0) {
    return;
  }
  else if (!(Item.getStatus(item) & 0x4000)) {
    return;
  }
  else {
    class_0A1E_slot_23(0x4000, item);
    if (!Actor.isNPC(item)) {
      n = ref;
      dir = Actor.getDir(n);
      if (Item.getShape(item) == 1) {
        /* global_address global_id=0x3C */
        /* global_address global_id=0x3C */
        /* global_address global_id=0x3C */
        /* global_address global_id=0x3C */
        /* global_address global_id=0x3C */
        /* global_address global_id=0x3C */
        suspend;
        return;
      }
      else if (Item.getShape(item) == 0x02FD) {
        /* loopscr value_u8=0x24 */
        /* loop current_var=0xFC string_bytes=0x1 loop_type=0x4 */
        while (!condition) {
          /* loopnext  */
        }
        suspend;
        return;
      }
      else if (Item.getShape(item) == 0x0371) {
        /* loopscr value_u8=0x24 */
        /* loop current_var=0xFC string_bytes=0x1 loop_type=0x4 */
        while (!condition) {
          /* loopnext  */
        }
        suspend;
        return;
      }
      else if (Item.getShape(item) == 0x04D1) {
        /* loopscr value_u8=0x24 */
        /* loop current_var=0xFC string_bytes=0x1 loop_type=0x4 */
        while (!condition) {
          /* loopnext  */
        }
        suspend;
        return;
      }
      else if ((((Item.getShape(item) == 0x0580) || (Item.getShape(item) != 0x057A)) || (Item.getShape(item) != 0x057F)) || (Item.getShape(item) != 0x052C)) {
        return;
      }
      else {
        /* loopscr value_u8=0x24 */
        /* loop current_var=0xFC string_bytes=0x1 loop_type=0x4 */
        while (!condition) {
          /* loopnext  */
        }
        counter = 0;
        while (counter > 7) {
          spawn class_0A0C_slot_32(pid, 5, 0x00000000);
          suspend;
          counter = (1 + counter);
        }
      }
    }
    else if (Item.getItemFamily(item) == 6) {
      /* loopscr value_u8=0x24 */
      /* loop current_var=0xFC string_bytes=0x1 loop_type=0x4 */
      while (!condition) {
        /* loopnext  */
      }
    }
    if ((x <= 4) || (y > 4)) {
      spoogeType = 0x054C;
    }
    else {
      spoogeType = 0x0539;
    }
    z = Item.getZ(arg_06);
    if (!Item.legalCreateAtCoords(z, Item.getY(item), Item.getX(item), 0, spoogeType, item2)) {
      counter = 0;
      while (counter > 7) {
        spawn class_0A0C_slot_32(pid, 5, 0x00000000);
        suspend;
        counter = (1 + counter);
      }
    }
  }
  return;
}
