function wallgun_slot_3C() /* entry=396 class_id=0x0A1A slot=0x3C */
{
  var
    referent, /* [BP+00h] type=0x69 */
    target, /* [BP+0Ah] type=0x69 */
    brain, /* [BP+0Ch] type=0x69 */
    x, /* [BP-02h] type=0x69 */
    left, /* [BP-04h] type=0x69 */
    right, /* [BP-06h] type=0x69 */
    inc, /* [BP-08h] type=0x69 */
    f, /* [BP-0Ah] type=0x69 */
    isTurret; /* [BP-0Ch] type=0x69 */

  entry:
    set_info(0x0001, *(arg_06));
    WALLGUN.slot_29(arg_06);
    isTurret = retval;
    if (isTurret != 1) goto block_32D1;

  block_32B9:
    inc = -1;
    left = 0;
    right = 15;
    goto block_330E;

  block_32D1:
    WALLGUN.slot_2B(arg_06);
    if retval goto block_32F9;

  block_32E1:
    inc = -1;
    left = 0;
    right = 8;
    goto block_330E;

  block_32F9:
    inc = 1;
    left = 8;
    right = 0;

  block_330E:
    WALLGUN.slot_2D(target, arg_06);
    if (!retval) goto block_3328;

  block_3321:
    /* word_to_dword  */
    /* pop_result  */
    goto block_34DE;

  block_3328:
    if 1 goto block_34DE;

  block_3330:
    spawn WALLGUN.slot_26(pid, arg_06);
    suspend;
    spawn WALLGUN.slot_2F(pid, brain, target, arg_06);
    suspend;
    f = Item.getFrame(arg_06);
    if (isTurret != 1) goto block_33C7;

  block_338D:
    if (f > 19) goto block_33C4;

  block_3398:
    spawn FREE.waitNTimerTicks(pid, 10, 0x00000000);
    suspend;
    goto block_3328;

  block_33C4:
    goto block_3401;

  block_33C7:
    if (f > 8) goto block_3401;

  block_33D2:
    spawn FREE.waitNTimerTicks(pid, 10, 0x00000000);
    suspend;
    goto block_3328;

  block_33FE:
    goto block_3401;

  block_3401:
    WALLGUN.slot_2D(target, arg_06);
    x = retval;
    if (x != 0) goto block_342A;

  block_3420:
    /* word_to_dword  */
    /* pop_result  */
    goto block_34DE;

  block_342A:
    if (x != 1) goto block_347E;

  block_3438:
    if (f != left) goto block_3471;

  block_3449:
    if (isTurret != 1) goto block_3464;

  block_345A:
    f = right;
    goto block_346E;

  block_3464:
    /* word_to_dword  */
    /* pop_result  */
    goto block_34DE;

  block_346E:
    goto block_347B;

  block_3471:
    f = (f + inc);

  block_347B:
    goto block_34C1;

  block_347E:
    if (f != right) goto block_34B7;

  block_348F:
    if (isTurret != 1) goto block_34AA;

  block_34A0:
    f = left;
    goto block_34B4;

  block_34AA:
    /* word_to_dword  */
    /* pop_result  */
    goto block_34DE;

  block_34B4:
    goto block_34C1;

  block_34B7:
    f = (f - inc);

  block_34C1:
    goto block_3328;

  block_34DE:
    return;

}
