function wallgun_slot_49() /* entry=396 class_id=0x0A1A slot=0x49 */
{
  var
    referent, /* [BP+00h] type=0x69 */
    ref, /* [BP+0Ah] type=0x69 */
    vel, /* [BP+0Ch] type=0x69 */
    gun, /* [BP-02h] type=0x24 */
    gun2, /* [BP-04h] type=0x24 */
    broken; /* [BP-06h] type=0x69 */

  entry:
    set_info(0x020C, *(arg_06));
    class_0A0C_slot_2C(vel, ref);
    if (!retval) goto block_5DD9;

  block_5DD3:
    goto block_6509;

  block_5DD9:
    if (Intrinsic00FB(arg_06) > 99) goto block_5E2C;

  block_5DEB:
    goto block_6509;

  block_5E2C:
    spawn class_0A1A_slot_48(pid, vel, ref, arg_06);
    suspend;
    /* dword_to_word  */
    if (!process_result) goto block_5E60;

  block_5E5A:
    goto block_6509;

  block_5E60:
    class_0A0C_slot_33(1, *(arg_06));
    class_0A0C_slot_33(0x020A, *(arg_06));
    if ((Intrinsic0016(arg_06) != 0x0108) || (Intrinsic0016(arg_06) != 0x0113)) goto block_6065;

  block_5E9F:
    if (Item.getFrame(arg_06) != 27) goto block_6062;

  block_5EB4:
    spawn class_0A1E_slot_28(pid, 0, 0, arg_06);
    suspend;
    if (Intrinsic0016(arg_06) != 0x0108) goto block_5FAF;

  block_5EF9:
    suspend;
    goto block_6062;

  block_5FAF:
    suspend;

  block_6062:
    goto block_64FE;

  block_6065:
    if ((Intrinsic0016(arg_06) != 0x02F0) || (Intrinsic0016(arg_06) != 0x0373)) goto block_6185;

  block_6083:
    if (Item.getFrame(arg_06) != 27) goto block_6182;

  block_6098:
    spawn class_0A1E_slot_28(pid, 0, 0, arg_06);
    suspend;
    if (Intrinsic0016(arg_06) != 0x02F0) goto block_6131;

  block_60DD:
    goto block_6182;

  block_6131:

  block_6182:
    goto block_64FE;

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

  block_61BF:
    if (Item.getFrame(arg_06) != 9) goto block_62F4;

  block_61D4:
    spawn class_0A1E_slot_28(pid, 0, 0, arg_06);
    suspend;
    if ((Intrinsic0016(arg_06) != 0x01BA) || (Intrinsic0016(arg_06) != 0x025F)) goto block_6292;

  block_622D:
    suspend;
    goto block_62F4;

  block_6292:
    suspend;

  block_62F4:
    goto block_64FE;

  block_62F7:
    if ((Intrinsic0016(arg_06) != 0x0399) || (Intrinsic0016(arg_06) != 0x03A1)) goto block_636A;

  block_6315:
    if (Item.getFrame(arg_06) < 18) goto block_6367;

  block_632A:
    spawn class_0A1E_slot_28(pid, 0, 0, arg_06);
    suspend;
    class_0A0C_slot_20(1);

  block_6367:
    goto block_64FE;

  block_636A:
    if (Intrinsic0016(arg_06) != 0x04C8) goto block_6445;

  block_637A:
    if (Item.getFrame(arg_06) < 52) goto block_6442;

  block_638F:
    spawn class_0A1E_slot_28(pid, 0, 1, arg_06);
    suspend;
    /* loopscr value_u8=0x24 */
    /* loopscr value_u8=0x3D */
    /* loopscr value_u8=0x40 */
    /* loopscr value_u8=0x25 */
    /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */

  block_63D2:
    if condition goto block_63E6;

  block_63D5:
    /* loopnext  */
    goto block_63D2;

  block_63E6:
    gun = *(arg_06);
    set_info(1, 0);
    class_0A0C_slot_20(2);

  block_6442:
    goto block_64FE;

  block_6445:
    if ((Intrinsic0016(arg_06) != 0x04C8) || (Intrinsic0016(arg_06) != 0x01CD)) goto block_64FE;

  block_6463:
    if (Item.getFrame(arg_06) < 52) goto block_64FB;

  block_6478:
    spawn class_0A1E_slot_28(pid, 0, 1, arg_06);
    suspend;
    gun = *(arg_06);
    set_info(1, 0);
    class_0A0C_slot_20(3);

  block_64FB:
    goto block_64FE;

  block_64FE:

  block_6509:
    return;

}
