function wallgun_slot_37() /* entry=396 class_id=0x0A1A slot=0x37 */
{
  var
    referent, /* [BP+00h] 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;
    WALLGUN.slot_29(arg_06);
    isTurret = retval;
    if (isTurret != 1) goto block_241F;

  block_2407:
    inc = 1;
    left = 0;
    right = 15;
    goto block_245C;

  block_241F:
    WALLGUN.slot_2B(arg_06);
    if retval goto block_2447;

  block_242F:
    inc = 1;
    left = 0;
    right = 8;
    goto block_245C;

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

  block_245C:
    WALLGUN.slot_20(arg_06);
    delay = (retval * 5);

  block_246E:
    if 1 goto block_2621;

  block_2476:
    spawn WALLGUN.slot_26(pid, arg_06);
    suspend;
    f = Item.getFrame(arg_06);
    if (isTurret != 1) goto block_24E8;

  block_24AE:
    if (f > 19) goto block_24E5;

  block_24B9:
    spawn FREE.waitNTimerTicks(pid, 10, 0x00000000);
    suspend;
    goto block_246E;

  block_24E5:
    goto block_2522;

  block_24E8:
    if (f > 8) goto block_2522;

  block_24F3:
    spawn FREE.waitNTimerTicks(pid, 10, 0x00000000);
    suspend;
    goto block_246E;

  block_251F:
    goto block_2522;

  block_2522:
    if (panLeft != 1) goto block_255B;

  block_252D:
    if (f != left) goto block_254E;

  block_253E:
    panLeft = 0;
    goto block_246E;

  block_254B:
    goto block_2558;

  block_254E:
    f = (f - inc);

  block_2558:
    goto block_25DE;

  block_255B:
    if ((panRight != 1) && (isTurret != 0)) goto block_259D;

  block_256F:
    if (f != right) goto block_2590;

  block_2580:
    panRight = 0;
    goto block_246E;

  block_258D:
    goto block_259A;

  block_2590:
    f = (f + inc);

  block_259A:
    goto block_25DE;

  block_259D:
    panRight = 1;
    panLeft = 1;
    if (isTurret != 1) goto block_25C6;

  block_25BC:
    f = right;
    goto block_25DE;

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

  block_25DE:
    spawn FREE.waitNTimerTicks(pid, delay, 0x00000000);
    suspend;
    goto block_246E;

  block_2621:
    return;

}
