function wallgun_slot_45() /* entry=396 class_id=0x0A1A slot=0x45 */
{
  var
    referent, /* [BP+00h] type=0x69 */
    target, /* [BP+0Ah] type=0x69 */
    brain, /* [BP+0Ch] type=0x69 */
    dir, /* [BP-01h] type=0x62 */
    dist, /* [BP-03h] type=0x69 */
    t, /* [BP-05h] type=0x69 */
    del, /* [BP-07h] type=0x69 */
    old, /* [BP-09h] type=0x69 */
    new; /* [BP-0Bh] type=0x69 */

  entry:
    set_info(0x0001, *(arg_06));
    spawn class_0A0C_slot_32(pid, 1, 0x00000000);
    suspend;
    class_0A1A_slot_2C(arg_06);
    dir = retval;
    del = 3;
    old = Item.getFrame(arg_06);
    new = (Item.getFrame(arg_06) * 2);
    class_0A1A_slot_29(arg_06);
    if retval goto block_4E4C;

  block_4E42:
    new = (new + 20);
    goto block_4E56;

  block_4E4C:
    new = (new + 9);

  block_4E56:
    if 1 goto block_537F;

  block_4E5E:
    spawn class_0A1A_slot_26(pid, arg_06);
    suspend;
    class_0A0C_slot_29(*(arg_06), target);
    dist = retval;
    class_0A1A_slot_2E(target, arg_06);
    if (retval != 0) goto block_4EAB;

  block_4EA5:
    goto block_537F;

  block_4EAB:
    if (dist > 20) goto block_4ED8;

  block_4EB6:
    if (brain != 4) goto block_4EC7;

  block_4EC1:
    goto block_537F;

  block_4EC7:
    if (dist > 46) goto block_4ED8;

  block_4ED2:
    goto block_537F;

  block_4ED8:
    if ((Intrinsic0016(arg_06) != 0x0113) || (Intrinsic0016(arg_06) != 0x0108)) goto block_507F;

  block_4EF6:
    spawn class_0A1A_slot_47(dir, arg_06);
    spawn class_0A0C_slot_32(pid, 5, 0x00000000);
    suspend;
    spawn class_0A0C_slot_32(pid, 5, 0x00000000);
    suspend;
    spawn class_0A1A_slot_47(dir, arg_06);
    spawn class_0A0C_slot_32(pid, 5, 0x00000000);
    suspend;
    spawn class_0A0C_slot_32(pid, 5, 0x00000000);
    suspend;
    spawn class_0A1A_slot_47(dir, arg_06);
    spawn class_0A0C_slot_32(pid, 5, 0x00000000);
    suspend;
    spawn class_0A0C_slot_32(pid, 5, 0x00000000);
    suspend;
    goto block_5350;

  block_507F:
    if ((((Intrinsic0016(arg_06) != 0x025F) || (Intrinsic0016(arg_06) != 0x0260)) || (Intrinsic0016(arg_06) != 0x01B9)) || (Intrinsic0016(arg_06) != 0x01BA)) goto block_50CE;

  block_50B9:
    spawn class_0A1A_slot_47(dir, arg_06);
    goto block_5350;

  block_50CE:
    if ((Intrinsic0016(arg_06) != 0x0373) || (Intrinsic0016(arg_06) != 0x02F0)) goto block_514B;

  block_50EC:
    spawn class_0A1A_slot_47(dir, arg_06);
    spawn class_0A0C_slot_32(pid, 5, 0x00000000);
    suspend;
    goto block_5350;

  block_514B:
    if ((Intrinsic0016(arg_06) != 0x04C8) || (Intrinsic0016(arg_06) != 0x01CD)) goto block_52E0;

  block_5169:
    spawn class_0A0C_slot_32(pid, 5, 0x00000000);
    suspend;
    spawn class_0A1A_slot_47(dir, arg_06);
    spawn class_0A0C_slot_32(pid, 5, 0x00000000);
    suspend;
    spawn class_0A0C_slot_32(pid, 5, 0x00000000);
    suspend;
    spawn class_0A1A_slot_47(dir, arg_06);
    spawn class_0A0C_slot_32(pid, 5, 0x00000000);
    suspend;
    spawn class_0A0C_slot_32(pid, 5, 0x00000000);
    suspend;
    spawn class_0A0C_slot_32(pid, 5, 0x00000000);
    suspend;
    goto block_5350;

  block_52E0:
    if ((Intrinsic0016(arg_06) != 0x03A1) || (Intrinsic0016(arg_06) != 0x0399)) goto block_5350;

  block_52FE:
    spawn class_0A1A_slot_47(dir, arg_06);
    spawn class_0A0C_slot_32(pid, 5, 0x00000000);
    suspend;
    goto block_5350;

  block_5350:
    spawn class_0A1A_slot_30(pid, arg_06);
    suspend;
    goto block_4E56;

  block_537F:
    return;

}
