function wallgun_slot_3A() /* entry=396 class_id=0x0A1A slot=0x3A */
{
  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_2C91;

  block_2C79:
    inc = 1;
    left = 8;
    right = 12;
    goto block_2CCE;

  block_2C91:
    class_0A1A_slot_2B(arg_06);
    if retval goto block_2CB9;

  block_2CA1:
    inc = 1;
    left = 0;
    right = 8;
    goto block_2CCE;

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

  block_2CCE:
    class_0A1A_slot_20(arg_06);
    delay = (retval * 15);

  block_2CE0:
    if 1 goto block_2EEA;

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

  block_2D20:
    if (f > 19) goto block_2D57;

  block_2D2B:
    spawn class_0A0C_slot_32(pid, 10, 0x00000000);
    suspend;
    goto block_2CE0;

  block_2D57:
    goto block_2D94;

  block_2D5A:
    if (f > 8) goto block_2D94;

  block_2D65:
    spawn class_0A0C_slot_32(pid, 10, 0x00000000);
    suspend;
    goto block_2CE0;

  block_2D91:
    goto block_2D94;

  block_2D94:
    if panRight goto block_2DF0;

  block_2D9C:
    if (f != right) goto block_2DE3;

  block_2DAD:
    panRight = 0;
    spawn class_0A0C_slot_32(pid, 20, 0x00000000);
    suspend;
    goto block_2CE0;

  block_2DE0:
    goto block_2DED;

  block_2DE3:
    f = (f + inc);

  block_2DED:
    goto block_2E72;

  block_2DF0:
    if (panLeft != 1) goto block_2E4F;

  block_2DFB:
    if (f != left) goto block_2E42;

  block_2E0C:
    panLeft = 0;
    spawn class_0A0C_slot_32(pid, 20, 0x00000000);
    suspend;
    goto block_2CE0;

  block_2E3F:
    goto block_2E4C;

  block_2E42:
    f = (f - inc);

  block_2E4C:
    goto block_2E72;

  block_2E4F:
    if (f != 4) goto block_2E64;

  block_2E5A:
    f = (f + inc);

  block_2E64:
    panRight = 1;
    panLeft = 1;

  block_2E72:
    spawn class_0A0C_slot_32(pid, delay, 0x00000000);
    suspend;
    class_0A1A_slot_2E(target, arg_06);
    if retval goto block_2EE7;

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

  block_2EE7:
    goto block_2CE0;

  block_2EEA:
    return;

}
