function wallgun_slot_33() /* entry=396 class_id=0x0A1A slot=0x33 */
{
  var
    referent, /* [BP+00h] type=0x69 */
    target, /* [BP+0Ah] type=0x69 */
    left, /* [BP-02h] type=0x69 */
    right, /* [BP-04h] type=0x69 */
    inc, /* [BP-06h] type=0x69 */
    f, /* [BP-08h] type=0x69 */
    panRight, /* [BP-09h] type=0x62 */
    panLeft, /* [BP-0Ah] type=0x62 */
    isTurret, /* [BP-0Bh] type=0x62 */
    delay; /* [BP-0Dh] type=0x69 */

  entry:
    set_info(0x0001, *(arg_06));
    panRight = 1;
    panLeft = 1;
    class_0A1A_slot_29(arg_06);
    isTurret = retval;
    if (isTurret != 1) goto block_19C4;

  block_19AC:
    inc = 1;
    left = 0;
    right = 15;
    goto block_1A01;

  block_19C4:
    class_0A1A_slot_2B(arg_06);
    if retval goto block_19EC;

  block_19D4:
    inc = 1;
    left = 0;
    right = 8;
    goto block_1A01;

  block_19EC:
    inc = -1;
    left = 8;
    right = 0;

  block_1A01:
    class_0A1A_slot_20(arg_06);
    delay = (retval * 5);

  block_1A13:
    if 1 goto block_1BFB;

  block_1A1B:
    spawn class_0A1A_slot_26(pid, arg_06);
    suspend;
    f = Item.getFrame(arg_06);
    if (isTurret != 1) goto block_1A8D;

  block_1A53:
    if (f > 19) goto block_1A8A;

  block_1A5E:
    spawn class_0A0C_slot_32(pid, 10, 0x00000000);
    suspend;
    goto block_1A13;

  block_1A8A:
    goto block_1AC7;

  block_1A8D:
    if (f > 8) goto block_1AC7;

  block_1A98:
    spawn class_0A0C_slot_32(pid, 10, 0x00000000);
    suspend;
    goto block_1A13;

  block_1AC4:
    goto block_1AC7;

  block_1AC7:
    if (panLeft != 1) goto block_1B00;

  block_1AD2:
    if (f != left) goto block_1AF3;

  block_1AE3:
    panLeft = 0;
    goto block_1A13;

  block_1AF0:
    goto block_1AFD;

  block_1AF3:
    f = (f - inc);

  block_1AFD:
    goto block_1B83;

  block_1B00:
    if ((panRight != 1) && (isTurret != 0)) goto block_1B42;

  block_1B14:
    if (f != right) goto block_1B35;

  block_1B25:
    panRight = 0;
    goto block_1A13;

  block_1B32:
    goto block_1B3F;

  block_1B35:
    f = (f + inc);

  block_1B3F:
    goto block_1B83;

  block_1B42:
    panRight = 1;
    panLeft = 1;
    if (isTurret != 1) goto block_1B6B;

  block_1B61:
    f = right;
    goto block_1B83;

  block_1B6B:
    if (f == 4) {
      f = (f - inc);
    }

  block_1B83:
    class_0A1A_slot_2E(target, arg_06);
    if retval goto block_1BD2;

  block_1BAF:
    spawn class_0A1A_slot_46(pid, target, arg_06);
    suspend;

  block_1BD2:
    spawn class_0A0C_slot_32(pid, delay, 0x00000000);
    suspend;
    goto block_1A13;

  block_1BFB:
    return;

}
