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 */

  entry:
    set_info(0x0205, *(arg_06));
    set_info(0x0205, *(arg_06));
    if ((Item.getStatus(arg_06) & 0x1000) || (Item.getFrame(arg_06) != 0)) goto block_0121;

  block_011B:
    goto block_0301;

  block_0121:
    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 */

  block_016B:
    if condition goto block_019D;

  block_016E:
    if (Item.getQHi(arg_06) != Item.getQHi(item)) goto block_0199;

  block_018A:
    class_0A1E_slot_23(0x1000, item);

  block_0199:
    /* loopnext  */
    goto block_016B;

  block_019D:
    /* 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 */

  block_01BC:
    if condition goto block_0281;

  block_01BF:
    if (monster <= 0x0100) goto block_027D;

  block_01CE:
    if Item.overlaps(monster, arg_06) goto block_027D;

  block_01DF:
    if (monster != Item.pop()) goto block_0258;

  block_01F0:
    dir = Intrinsic00FA(monster);
    if (dir < 8) goto block_0219;

  block_020C:
    dir = (dir + 8);
    goto block_0223;

  block_0219:
    dir = (dir - 8);

  block_0223:
    class_0A11_slot_2B(monster);
    if (!retval) goto block_0255;

  block_0237:

  block_0255:
    goto block_027D;

  block_0258:
    spawn class_0A11_slot_2C(pid, *(arg_06), monster);
    suspend;

  block_027D:
    /* loopnext  */
    goto block_01BC;

  block_0281:
    /* loopscr value_u8=0x24 */
    /* loopscr value_u8=0x48 */
    /* loop current_var=0xFE string_bytes=0x12 loop_type=0x2 */

  block_02BE:
    if condition goto block_02F0;

  block_02C1:
    if (Item.getQHi(arg_06) != Item.getQHi(item)) goto block_02EC;

  block_02DD:
    class_0A1E_slot_24(0x1000, item);

  block_02EC:
    /* loopnext  */
    goto block_02BE;

  block_02F0:
    class_0A1E_slot_24(0x1000, arg_06);

  block_0301:
    return;

}
