function wallgun_slot_31() /* entry=471 class_id=0x0A19 slot=0x31 */
{
  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_0C65;

  block_0C56:
    local_06 = 1;
    local_02 = 0;
    local_04 = 15;
    goto block_0C8D;

  block_0C65:
    WALLGUN.slot_2B(arg_06);
    if retval goto block_0C81;

  block_0C72:
    local_06 = 1;
    local_02 = 0;
    local_04 = 8;
    goto block_0C8D;

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

  block_0C8D:
    WALLGUN.slot_2E(arg_0A, arg_06);
    if retval goto block_0CCC;

  block_0C9C:
    if (arg_0C != 4) goto block_0CAE;

  block_0CA4:
    /* word_to_dword  */
    /* pop_result  */
    goto block_0E2A;

  block_0CAB:
    goto block_0CCC;

  block_0CAE:
    FREE.slot_32(arg_0A, *(arg_06));
    if (retval <= 20) goto block_0CCC;

  block_0CC2:
    /* word_to_dword  */
    /* pop_result  */
    goto block_0E2A;

  block_0CC9:
    goto block_0CCC;

  block_0CCC:
    if 1 goto block_0E2A;

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

  block_0CF4:
    if (local_08 > 19) goto block_0D16;

  block_0CFC:
    spawn FREE.slot_3B(pid, 10, 0x00000000);
    suspend;
    goto block_0CCC;

  block_0D16:
    goto block_0D3E;

  block_0D19:
    if (local_08 > 8) goto block_0D3E;

  block_0D21:
    spawn FREE.slot_3B(pid, 10, 0x00000000);
    suspend;
    goto block_0CCC;

  block_0D3B:
    goto block_0D3E;

  block_0D3E:
    if local_09 goto block_0D5F;

  block_0D43:
    if (local_08 != local_04) goto block_0D55;

  block_0D4B:
    local_09 = 0;
    goto block_0CCC;

  block_0D52:
    goto block_0D5C;

  block_0D55:
    local_08 = (local_08 + local_06);

  block_0D5C:
    goto block_0DBE;

  block_0D5F:
    if ((local_0A != 1) && (local_0B != 0)) goto block_0D89;

  block_0D6D:
    if (local_08 != local_02) goto block_0D7F;

  block_0D75:
    local_0A = 0;
    goto block_0CCC;

  block_0D7C:
    goto block_0D86;

  block_0D7F:
    local_08 = (local_08 - local_06);

  block_0D86:
    goto block_0DBE;

  block_0D89:
    if (local_0B != 1) goto block_0DA5;

  block_0D91:
    /* word_to_dword  */
    /* pop_result  */
    goto block_0E2A;

  block_0DA2:
    goto block_0DBE;

  block_0DA5:
    if (local_08 != 4) goto block_0DB7;

  block_0DAD:
    /* word_to_dword  */
    /* pop_result  */
    goto block_0E2A;

  block_0DB4:
    goto block_0DBE;

  block_0DB7:
    local_08 = (local_08 + local_06);

  block_0DBE:
    spawn WALLGUN.slot_2F(pid, arg_0C, arg_0A, arg_06);
    suspend;
    WALLGUN.slot_2E(arg_0A, arg_06);
    if retval goto block_0E27;

  block_0DF7:
    if (arg_0C != 4) goto block_0E09;

  block_0DFF:
    /* word_to_dword  */
    /* pop_result  */
    goto block_0E2A;

  block_0E06:
    goto block_0E27;

  block_0E09:
    FREE.slot_32(arg_0A, *(arg_06));
    if (retval <= 20) goto block_0E27;

  block_0E1D:
    /* word_to_dword  */
    /* pop_result  */
    goto block_0E2A;

  block_0E24:
    goto block_0E27;

  block_0E27:
    goto block_0CCC;

  block_0E2A:
    return;

}
