function wallgun_slot_37() /* entry=471 class_id=0x0A19 slot=0x37 */
{
  entry:
    set_info(0x0001, *(arg_06));
    local_09 = 1;
    local_0A = 1;
    WALLGUN.slot_29(arg_06);
    local_0B = retval;
    if (local_0B != 1) goto block_15BD;

  block_15AE:
    local_06 = 1;
    local_02 = 0;
    local_04 = 15;
    goto block_15E5;

  block_15BD:
    WALLGUN.slot_2B(arg_06);
    if retval goto block_15D9;

  block_15CA:
    local_06 = 1;
    local_02 = 0;
    local_04 = 8;
    goto block_15E5;

  block_15D9:
    local_06 = -1;
    local_02 = 8;
    local_04 = 0;

  block_15E5:
    WALLGUN.slot_20(arg_06);
    local_0D = (retval * 5);

  block_15F4:
    if 1 goto block_170B;

  block_15F9:
    spawn WALLGUN.slot_26(pid, arg_06);
    suspend;
    local_08 = Item.getFrame(arg_06);
    if (local_0B != 1) goto block_1641;

  block_161C:
    if (local_08 > 19) goto block_163E;

  block_1624:
    spawn FREE.slot_3B(pid, 10, 0x00000000);
    suspend;
    goto block_15F4;

  block_163E:
    goto block_1666;

  block_1641:
    if (local_08 > 8) goto block_1666;

  block_1649:
    spawn FREE.slot_3B(pid, 10, 0x00000000);
    suspend;
    goto block_15F4;

  block_1663:
    goto block_1666;

  block_1666:
    if (local_0A != 1) goto block_168A;

  block_166E:
    if (local_08 != local_02) goto block_1680;

  block_1676:
    local_0A = 0;
    goto block_15F4;

  block_167D:
    goto block_1687;

  block_1680:
    local_08 = (local_08 - local_06);

  block_1687:
    goto block_16DD;

  block_168A:
    if ((local_09 != 1) && (local_0B != 0)) goto block_16B4;

  block_1698:
    if (local_08 != local_04) goto block_16AA;

  block_16A0:
    local_09 = 0;
    goto block_15F4;

  block_16A7:
    goto block_16B1;

  block_16AA:
    local_08 = (local_08 + local_06);

  block_16B1:
    goto block_16DD;

  block_16B4:
    local_09 = 1;
    local_0A = 1;
    if (local_0B != 1) goto block_16CB;

  block_16C4:
    local_08 = local_04;
    goto block_16DD;

  block_16CB:
    if (local_08 == 4) {
      local_08 = (local_08 - local_06);
    }

  block_16DD:
    spawn FREE.slot_3B(pid, local_0D, 0x00000000);
    suspend;
    goto block_15F4;

  block_170B:
    return;

}
