static int decode_pulses(Pulse *pulse, GetBitContext *gb,

                         const uint16_t *swb_offset, int num_swb)

{

    int i, pulse_swb;

    pulse->num_pulse = get_bits(gb, 2) + 1;

    pulse_swb        = get_bits(gb, 6);

    if (pulse_swb >= num_swb)

        return -1;

    pulse->pos[0]    = swb_offset[pulse_swb];

    pulse->pos[0]   += get_bits(gb, 5);

    if (pulse->pos[0] > 1023)

        return -1;

    pulse->amp[0]    = get_bits(gb, 4);

    for (i = 1; i < pulse->num_pulse; i++) {

        pulse->pos[i] = get_bits(gb, 5) + pulse->pos[i - 1];

        if (pulse->pos[i] > 1023)

            return -1;

        pulse->amp[i] = get_bits(gb, 4);

    }

    return 0;

}

static int decode_pulses(Pulse *pulse, GetBitContext *gb,

                         const uint16_t *swb_offset, int num_swb)

{

    int i, pulse_swb;

    pulse->num_pulse = get_bits(gb, 2) + 1;

    pulse_swb        = get_bits(gb, 6);

    if (pulse_swb >= num_swb)

        return -1;

    pulse->pos[0]    = swb_offset[pulse_swb];

    pulse->pos[0]   += get_bits(gb, 5);

    if (pulse->pos[0] > 1023)

        return -1;

    pulse->amp[0]    = get_bits(gb, 4);

    for (i = 1; i < pulse->num_pulse; i++) {

        pulse->pos[i] = get_bits(gb, 5) + pulse->pos[i - 1];

        if (pulse->pos[i] > 1023)

            return -1;

        pulse->amp[i] = get_bits(gb, 4);

    }

    return 0;

}

static int FUNC_0(Pulse *VAR_0, GetBitContext *VAR_1,

                         const uint16_t *VAR_2, int VAR_3)

{

    int VAR_4, VAR_5;

    VAR_0->num_pulse = get_bits(VAR_1, 2) + 1;

    VAR_5        = get_bits(VAR_1, 6);

    if (VAR_5 >= VAR_3)

        return -1;

    VAR_0->pos[0]    = VAR_2[VAR_5];

    VAR_0->pos[0]   += get_bits(VAR_1, 5);

    if (VAR_0->pos[0] > 1023)

        return -1;

    VAR_0->amp[0]    = get_bits(VAR_1, 4);

    for (VAR_4 = 1; VAR_4 < VAR_0->num_pulse; VAR_4++) {

        VAR_0->pos[VAR_4] = get_bits(VAR_1, 5) + VAR_0->pos[VAR_4 - 1];

        if (VAR_0->pos[VAR_4] > 1023)

            return -1;

        VAR_0->amp[VAR_4] = get_bits(VAR_1, 4);

    }

    return 0;

}

static int FUNC_0(Pulse *VAR_0, GetBitContext *VAR_1,
const uint16_t *VAR_2, int VAR_3)
{ int VAR_4, VAR_5; VAR_0->num_pulse = get_bits(VAR_1, 2) + 1; VAR_5        = get_bits(VAR_1, 6); if (VAR_5 >= VAR_3)
return -1; VAR_0->pos[0]    = VAR_2[VAR_5]; VAR_0->pos[0]   += get_bits(VAR_1, 5); if (VAR_0->pos[0] > 1023)
return -1; VAR_0->amp[0]    = get_bits(VAR_1, 4); for (VAR_4 = 1; VAR_4 < VAR_0->num_pulse; VAR_4++) { VAR_0->pos[VAR_4] = get_bits(VAR_1, 5) + VAR_0->pos[VAR_4 - 1]; if (VAR_0->pos[VAR_4] > 1023)
return -1; VAR_0->amp[VAR_4] = get_bits(VAR_1, 4); } return 0; }