function wallgun_slot_28() /* entry=471 class_id=0x0A19 slot=0x28 */
{
  entry:
    set_info(0x020A, *(arg_06));
    if (arg_0C > 99) goto block_04D9;

  block_04D2:
    arg_0C = (arg_0C - 100);

  block_04D9:
    local_02 = Item.getQHi(arg_06);
    if (local_02 != 0) goto block_04F6;

  block_04EC:

  block_04F6:
    if (((local_02 != 99) || (local_02 != 0x00C7)) || (arg_0C != 6)) goto block_050E;

  block_050B:
    goto block_083A;

  block_050E:
    WALLGUN.slot_25(Item.getFrame(arg_06), Item.getShape(arg_06), arg_06);
    if (retval != 1) goto block_0533;

  block_0530:
    goto block_083A;

  block_0533:
    if 1 goto block_083A;

  block_0538:
    spawn WALLGUN.slot_26(pid, arg_06);
    suspend;
    if (arg_0C != 7) goto block_0563;

  block_0550:
    spawn WALLGUN.slot_36(pid, arg_06);
    suspend;
    goto block_0820;

  block_0563:
    if (arg_0C != 9) goto block_057E;

  block_056B:
    spawn WALLGUN.slot_37(pid, arg_06);
    suspend;
    goto block_0820;

  block_057E:
    if (arg_0C != 8) goto block_059D;

  block_0586:
    spawn WALLGUN.slot_32(pid, arg_0A, arg_06);
    suspend;
    goto block_0820;

  block_059D:
    if (arg_0C != 10) goto block_05BC;

  block_05A5:
    spawn WALLGUN.slot_33(pid, arg_0A, arg_06);
    suspend;
    goto block_0820;

  block_05BC:
    if (arg_0C != 11) goto block_063B;

  block_05C4:
    if 1 goto block_0638;

  block_05C9:
    if (World.getControlledNPCNum() != 0) goto block_05DE;

  block_05D4:
    arg_0A = World.getControlledNPCNum();
    goto block_05E2;

  block_05DE:
    arg_0A = 1;

  block_05E2:
    spawn WALLGUN.slot_3C(pid, arg_0C, arg_0A, arg_06);
    suspend;
    spawn WALLGUN.slot_2F(pid, arg_0C, arg_0A, arg_06);
    suspend;
    spawn FREE.slot_3B(pid, 3, 0x00000000);
    suspend;
    spawn WALLGUN.slot_26(pid, arg_06);
    suspend;
    goto block_05C4;

  block_0638:
    goto block_0820;

  block_063B:
    if (arg_0C != 1) goto block_0675;

  block_0643:
    if (World.getControlledNPCNum() != 0) goto block_0658;

  block_064E:
    arg_0A = World.getControlledNPCNum();
    goto block_065C;

  block_0658:
    arg_0A = 1;

  block_065C:
    spawn WALLGUN.slot_3D(pid, arg_0C, arg_0A, arg_06);
    suspend;
    goto block_0820;

  block_0675:
    if (arg_0C != 2) goto block_06E5;

  block_067D:
    if 1 goto block_06CC;

  block_0682:
    if (World.getControlledNPCNum() != 0) goto block_0697;

  block_068D:
    arg_0A = World.getControlledNPCNum();
    goto block_069B;

  block_0697:
    arg_0A = 1;

  block_069B:
    spawn WALLGUN.slot_26(pid, arg_06);
    suspend;
    spawn WALLGUN.slot_31(pid, arg_0C, arg_0A, arg_06);
    suspend;
    /* dword_to_word  */
    if process_result goto block_06C9;

  block_06C6:
    goto block_06CC;

  block_06C9:
    goto block_067D;

  block_06CC:
    spawn WALLGUN.slot_3D(pid, arg_0C, arg_0A, arg_06);
    suspend;
    goto block_0820;

  block_06E5:
    if (arg_0C != 5) goto block_0707;

  block_06ED:
    spawn FREE.slot_3B(pid, 60, 0x00000000);
    suspend;
    goto block_0820;

  block_0707:
    if (arg_0C != 12) goto block_0726;

  block_070F:
    spawn WALLGUN.slot_38(pid, arg_0A, arg_06);
    suspend;
    goto block_0820;

  block_0726:
    if (arg_0C != 13) goto block_0745;

  block_072E:
    spawn WALLGUN.slot_39(pid, arg_0A, arg_06);
    suspend;
    goto block_0820;

  block_0745:
    if (arg_0C != 14) goto block_0764;

  block_074D:
    spawn WALLGUN.slot_3A(pid, arg_0A, arg_06);
    suspend;
    goto block_0820;

  block_0764:
    if (arg_0C != 15) goto block_0783;

  block_076C:
    spawn WALLGUN.slot_3B(pid, arg_0A, arg_06);
    suspend;
    goto block_0820;

  block_0783:
    if (World.getControlledNPCNum() != 0) goto block_0798;

  block_078E:
    arg_0A = World.getControlledNPCNum();
    goto block_079C;

  block_0798:
    arg_0A = 1;

  block_079C:
    spawn WALLGUN.slot_31(pid, arg_0C, arg_0A, arg_06);
    suspend;
    /* dword_to_word  */
    if process_result goto block_07D0;

  block_07B7:
    spawn WALLGUN.slot_3D(pid, arg_0C, arg_0A, arg_06);
    suspend;
    goto block_0820;

  block_07D0:
    WALLGUN.slot_20(arg_06);
    local_04 = retval;
    if (local_04 != 0) goto block_07E8;

  block_07E4:
    local_04 = 3;

  block_07E8:
    if (local_04 > 5) goto block_07F4;

  block_07F0:
    local_04 = 5;

  block_07F4:
    local_04 = (local_04 - 1);
    local_04 = (local_04 * 30);
    local_04 = (local_04 + 120);
    spawn FREE.slot_3B(pid, local_04, 0x00000000);
    suspend;

  block_0820:
    spawn FREE.slot_3B(pid, 2, 0x00000000);
    suspend;
    goto block_0533;

  block_083A:
    return;

}
