function lazer_slot_20() /* entry=385 class_id=0x0A0F slot=0x20 */
{
  var
    referent, /* [BP+00h] type=0x69 */
    item, /* [BP-02h] type=0x24 */
    monster, /* [BP-04h] type=0x24 */
    dir; /* [BP-06h] type=0x69 */

  set_info(0x0205, *(arg_06));
  set_info(0x0205, *(arg_06));
  if ((Item.getStatus(arg_06) & 0x1000) || (Item.getFrame(arg_06) == 0)) {
    return;
  }
  else {
    class_0A1E_slot_23(0x1000, arg_06);
    /* loopscr value_u8=0x24 */
    /* loopscr value_u8=0x48 */
    /* loop current_var=0xFE string_bytes=0x12 loop_type=0x2 */
    while (!condition) {
      if (Item.getQLo(arg_06) == Item.getQLo(item)) {
        class_0A1E_slot_23(0x1000, item);
      }
      /* loopnext  */
    }
    /* loopscr value_u8=0x24 */
    /* loopscr value_u8=0x3D */
    /* loopscr value_u8=0x3A */
    /* loopscr value_u8=0x25 */
    /* loop current_var=0xFC string_bytes=0x6 loop_type=0x2 */
    while (!condition) {
      if (monster > 0x0100) {
        if (!Item.overlaps(monster, arg_06)) {
          if (monster == getTargetNPCNumMaybe()) {
            dir = Actor.getDir(monster);
            if (dir >= 8) {
              dir = (dir + 8);
            }
            else {
              dir = (dir - 8);
            }
            class_0A11_slot_2B(monster);
          }
          else {
            spawn class_0A11_slot_2C(pid, *(arg_06), monster);
            suspend;
          }
        }
      }
      /* loopnext  */
    }
    /* loopscr value_u8=0x24 */
    /* loopscr value_u8=0x48 */
    /* loop current_var=0xFE string_bytes=0x12 loop_type=0x2 */
    while (!condition) {
      if (Item.getQLo(arg_06) == Item.getQLo(item)) {
        class_0A1E_slot_24(0x1000, item);
      }
      /* loopnext  */
    }
    class_0A1E_slot_24(0x1000, arg_06);
  }
  return;
}
