static void hb_synthesis(AMRWBContext *ctx, int subframe, float *samples,

                         const float *exc, const float *isf, const float *isf_past)

{

    float hb_lpc[LP_ORDER_16k];

    enum Mode mode = ctx->fr_cur_mode;



    if (mode == MODE_6k60) {

        float e_isf[LP_ORDER_16k]; // ISF vector for extrapolation

        double e_isp[LP_ORDER_16k];



        ff_weighted_vector_sumf(e_isf, isf_past, isf, isfp_inter[subframe],

                                1.0 - isfp_inter[subframe], LP_ORDER);



        extrapolate_isf(e_isf, e_isf);



        e_isf[LP_ORDER_16k - 1] *= 2.0;

        ff_acelp_lsf2lspd(e_isp, e_isf, LP_ORDER_16k);

        ff_amrwb_lsp2lpc(e_isp, hb_lpc, LP_ORDER_16k);



        lpc_weighting(hb_lpc, hb_lpc, 0.9, LP_ORDER_16k);

    } else {

        lpc_weighting(hb_lpc, ctx->lp_coef[subframe], 0.6, LP_ORDER);

    }



    ff_celp_lp_synthesis_filterf(samples, hb_lpc, exc, AMRWB_SFR_SIZE_16k,

                                 (mode == MODE_6k60) ? LP_ORDER_16k : LP_ORDER);

}

static void hb_synthesis(AMRWBContext *ctx, int subframe, float *samples,

                         const float *exc, const float *isf, const float *isf_past)

{

    float hb_lpc[LP_ORDER_16k];

    enum Mode mode = ctx->fr_cur_mode;



    if (mode == MODE_6k60) {

        float e_isf[LP_ORDER_16k]; 

        double e_isp[LP_ORDER_16k];



        ff_weighted_vector_sumf(e_isf, isf_past, isf, isfp_inter[subframe],

                                1.0 - isfp_inter[subframe], LP_ORDER);



        extrapolate_isf(e_isf, e_isf);



        e_isf[LP_ORDER_16k - 1] *= 2.0;

        ff_acelp_lsf2lspd(e_isp, e_isf, LP_ORDER_16k);

        ff_amrwb_lsp2lpc(e_isp, hb_lpc, LP_ORDER_16k);



        lpc_weighting(hb_lpc, hb_lpc, 0.9, LP_ORDER_16k);

    } else {

        lpc_weighting(hb_lpc, ctx->lp_coef[subframe], 0.6, LP_ORDER);

    }



    ff_celp_lp_synthesis_filterf(samples, hb_lpc, exc, AMRWB_SFR_SIZE_16k,

                                 (mode == MODE_6k60) ? LP_ORDER_16k : LP_ORDER);

}

static void FUNC_0(AMRWBContext *VAR_0, int VAR_1, float *VAR_2,

                         const float *VAR_3, const float *VAR_4, const float *VAR_5)

{

    float VAR_6[LP_ORDER_16k];

    enum Mode VAR_7 = VAR_0->fr_cur_mode;



    if (VAR_7 == MODE_6k60) {

        float VAR_8[LP_ORDER_16k]; 

        double VAR_9[LP_ORDER_16k];



        ff_weighted_vector_sumf(VAR_8, VAR_5, VAR_4, isfp_inter[VAR_1],

                                1.0 - isfp_inter[VAR_1], LP_ORDER);



        extrapolate_isf(VAR_8, VAR_8);



        VAR_8[LP_ORDER_16k - 1] *= 2.0;

        ff_acelp_lsf2lspd(VAR_9, VAR_8, LP_ORDER_16k);

        ff_amrwb_lsp2lpc(VAR_9, VAR_6, LP_ORDER_16k);



        lpc_weighting(VAR_6, VAR_6, 0.9, LP_ORDER_16k);

    } else {

        lpc_weighting(VAR_6, VAR_0->lp_coef[VAR_1], 0.6, LP_ORDER);

    }



    ff_celp_lp_synthesis_filterf(VAR_2, VAR_6, VAR_3, AMRWB_SFR_SIZE_16k,

                                 (VAR_7 == MODE_6k60) ? LP_ORDER_16k : LP_ORDER);

}

static void FUNC_0(AMRWBContext *VAR_0, int VAR_1, float *VAR_2,
const float *VAR_3, const float *VAR_4, const float *VAR_5)
{ float VAR_6[LP_ORDER_16k]; enum Mode VAR_7 = VAR_0->fr_cur_mode; if (VAR_7 == MODE_6k60) { float VAR_8[LP_ORDER_16k]; double VAR_9[LP_ORDER_16k]; ff_weighted_vector_sumf(VAR_8, VAR_5, VAR_4, isfp_inter[VAR_1],
1.0 - isfp_inter[VAR_1], LP_ORDER); extrapolate_isf(VAR_8, VAR_8); VAR_8[LP_ORDER_16k - 1] *= 2.0; ff_acelp_lsf2lspd(VAR_9, VAR_8, LP_ORDER_16k); ff_amrwb_lsp2lpc(VAR_9, VAR_6, LP_ORDER_16k); lpc_weighting(VAR_6, VAR_6, 0.9, LP_ORDER_16k); } else { lpc_weighting(VAR_6, VAR_0->lp_coef[VAR_1], 0.6, LP_ORDER); } ff_celp_lp_synthesis_filterf(VAR_2, VAR_6, VAR_3, AMRWB_SFR_SIZE_16k,
(VAR_7 == MODE_6k60) ? LP_ORDER_16k : LP_ORDER); }