function wallgun_slot_28() /* entry=396 class_id=0x0A1A slot=0x28 */
{
  var
    referent, /* [BP+00h] type=0x69 */
    target, /* [BP+0Ah] type=0x69 */
    brain, /* [BP+0Ch] type=0x69 */
    h, /* [BP-02h] type=0x69 */
    delay; /* [BP-04h] type=0x69 */

  entry:
    set_info(0x020A, *(arg_06));
    if (brain > 99) goto block_06ED;

  block_06E3:
    brain = (brain - 100);

  block_06ED:
    h = Intrinsic00FB(arg_06);
    if (h != 0) goto block_0713;

  block_0706:

  block_0713:
    if (((h != 99) || (h != 0x00C7)) || (brain != 6)) goto block_0734;

  block_072E:
    goto block_0BFE;

  block_0734:
    class_0A1A_slot_25(Item.getFrame(arg_06), Intrinsic0016(arg_06), arg_06);
    if (retval != 1) goto block_075F;

  block_0759:
    goto block_0BFE;

  block_075F:
    if 1 goto block_0BFE;

  block_0767:
    spawn class_0A1A_slot_26(pid, arg_06);
    suspend;
    if (brain != 7) goto block_07B0;

  block_078E:
    spawn class_0A1A_slot_36(pid, arg_06);
    suspend;
    goto block_0BD5;

  block_07B0:
    if (brain != 9) goto block_07DA;

  block_07B8:
    spawn class_0A1A_slot_37(pid, arg_06);
    suspend;
    goto block_0BD5;

  block_07DA:
    if (brain != 8) goto block_0808;

  block_07E2:
    spawn class_0A1A_slot_32(pid, target, arg_06);
    suspend;
    goto block_0BD5;

  block_0808:
    if (brain != 10) goto block_0836;

  block_0810:
    spawn class_0A1A_slot_33(pid, target, arg_06);
    suspend;
    goto block_0BD5;

  block_0836:
    if (brain != 11) goto block_0900;

  block_083E:
    if 1 goto block_08FD;

  block_0846:
    if (Item.pop() != 0) goto block_0864;

  block_0857:
    target = Item.pop();
    goto block_086B;

  block_0864:
    target = 1;

  block_086B:
    spawn class_0A1A_slot_3C(pid, brain, target, arg_06);
    suspend;
    spawn class_0A1A_slot_2F(pid, brain, target, arg_06);
    suspend;
    spawn class_0A0C_slot_32(pid, 3, 0x00000000);
    suspend;
    spawn class_0A1A_slot_26(pid, arg_06);
    suspend;
    goto block_083E;

  block_08FD:
    goto block_0BD5;

  block_0900:
    if (brain != 1) goto block_0955;

  block_0908:
    if (Item.pop() != 0) goto block_0926;

  block_0919:
    target = Item.pop();
    goto block_092D;

  block_0926:
    target = 1;

  block_092D:
    spawn class_0A1A_slot_3D(pid, brain, target, arg_06);
    suspend;
    goto block_0BD5;

  block_0955:
    if (brain != 2) goto block_0A04;

  block_095D:
    if 1 goto block_09DC;

  block_0965:
    if (Item.pop() != 0) goto block_0983;

  block_0976:
    target = Item.pop();
    goto block_098A;

  block_0983:
    target = 1;

  block_098A:
    spawn class_0A1A_slot_26(pid, arg_06);
    suspend;
    spawn class_0A1A_slot_31(pid, brain, target, arg_06);
    suspend;
    /* dword_to_word  */
    if process_result goto block_09D9;

  block_09D3:
    goto block_09DC;

  block_09D9:
    goto block_095D;

  block_09DC:
    spawn class_0A1A_slot_3D(pid, brain, target, arg_06);
    suspend;
    goto block_0BD5;

  block_0A04:
    if (brain != 5) goto block_0A35;

  block_0A0C:
    spawn class_0A0C_slot_32(pid, 60, 0x00000000);
    suspend;
    goto block_0BD5;

  block_0A35:
    if (brain != 12) goto block_0A63;

  block_0A3D:
    spawn class_0A1A_slot_38(pid, target, arg_06);
    suspend;
    goto block_0BD5;

  block_0A63:
    if (brain != 13) goto block_0A91;

  block_0A6B:
    spawn class_0A1A_slot_39(pid, target, arg_06);
    suspend;
    goto block_0BD5;

  block_0A91:
    if (brain != 14) goto block_0ABF;

  block_0A99:
    spawn class_0A1A_slot_3A(pid, target, arg_06);
    suspend;
    goto block_0BD5;

  block_0ABF:
    if (brain != 15) goto block_0AED;

  block_0AC7:
    spawn class_0A1A_slot_3B(pid, target, arg_06);
    suspend;
    goto block_0BD5;

  block_0AED:
    if (Item.pop() != 0) goto block_0B0B;

  block_0AFE:
    target = Item.pop();
    goto block_0B12;

  block_0B0B:
    target = 1;

  block_0B12:
    spawn class_0A1A_slot_31(pid, brain, target, arg_06);
    suspend;
    /* dword_to_word  */
    if process_result goto block_0B64;

  block_0B3C:
    spawn class_0A1A_slot_3D(pid, brain, target, arg_06);
    suspend;
    goto block_0BD5;

  block_0B64:
    class_0A1A_slot_20(arg_06);
    delay = retval;
    if (delay != 0) goto block_0B82;

  block_0B7E:
    delay = 3;

  block_0B82:
    if (delay > 5) goto block_0B91;

  block_0B8D:
    delay = 5;

  block_0B91:
    delay = (delay - 1);
    delay = (delay * 30);
    delay = (delay + 120);
    spawn class_0A0C_slot_32(pid, delay, 0x00000000);
    suspend;

  block_0BD5:
    spawn class_0A0C_slot_32(pid, 2, 0x00000000);
    suspend;
    goto block_075F;

  block_0BFE:
    return;

}
