#if 0
#ifndef	__DNN_Postfilter__
#define __DNN_Postfilter__

//#include"..\Lib\ECNS\samsungTxECNSInt.h"

#define	TRUE									1
#define	FALSE									0
#define FREQ_SIZE 257

#if 1
//FOR NB
#define         M_FRM_LEN_NB            160
#define         M_DELAY_NB              96 // max 96 for 256pointFFT
#define         M_FFT_LEN_NB            256
#define         M_NUM_CHAN_NB           127
#define         M_CHAN_150_NB            5
#define         M_CHAN_500_NB            18 //¾à 560Hz
#define         M_CHAN_1000_NB           32
#define         M_CHAN_1500_NB           48
#define         M_CHAN_2000_NB           64
#define         M_CHAN_2500_NB           80
#define         M_CHAN_3000_NB           96
#define         M_LTSD_FRM_NB             4 
#define         M_MS_NUM_SUBFRAME_NB      3 // >=2
#define         Nadfdelay_NB             20
#define         Nadf_NB                  64
//FOR WB
#define         M_FRM_LEN_WB           320//160
#define         M_DELAY_WB             192//96 
#define         M_FFT_LEN_WB           512//256
#define         M_NUM_CHAN_WB          40
#define         M_CHAN_150_WB            5
#define         M_CHAN_500_WB          18//560Hz
#define         M_CHAN_1000_WB         32//32
#define         M_CHAN_1500_WB         48//48
#define         M_CHAN_2000_WB         64//64
#define         M_CHAN_2500_WB         80//80
#define         M_CHAN_3000_WB         96//96
#define         M_CHAN_4000_WB         128
#define         M_CHAN_6000_WB         192//96
#define         M_LTSD_FRM_WB             4 
#define         M_MS_NUM_SUBFRAME_WB      3 // >=2
#define         Nadfdelay_WB             56//20
#define         Nadf_WB                  256//256//128//64
#define         Nadfshort_WB             32
#define         Ndlycomp_WB              20

/* Defines SWB*/
#define		FRM_LEN_SWB					320
#define		DELAY_SWB					96
#define		FFT_LEN_SWB					512

#define		NUM_CHAN_SWB				32
#define		LO_CHAN_SWB					0
#define		MID_CHAN_SWB				7	
#define		HI_CHAN_SWB					31

#define     UPDATE_THLD_SWB				78
#define     METRIC_THLD_SWB				87
#define     INDEX_THLD_SWB				20
#define     SETBACK_THLD_SWB			12
#define     SNR_THLD_SWB				6+3
#define     INDEX_CNT_THLD_SWB			20
#define     HYSTER_CNT_THLD_SWB			6
#define     UPDATE_CNT_THLD_SWB			50

#define     NOISE_FLOOR_CHAN_SWB		256
#define     MIN_CHAN_ENRG_SWB			16//16	// noise Ç®¸² ¹æÁö
#define     MIN_NOISE_ENRG_SWB			16//16
#define     INE_CHAN_SWB				4096
#define     INE_NOISE_SWB				4096

#define     HIGH_TCE_DB_SWB				1920
#define     LOW_TCE_DB_SWB				960

#define     TCE_RANGE_SWB					(HIGH_TCE_DB_SWB - LOW_TCE_DB_SWB)
#define     HIGH_ALPHA_S5_10_SWB			1023
#define     LOW_ALPHA_S5_10_SWB				511
#define     HIGH_ALPHA_SWB					32440
#define     LOW_ALPHA_SWB					16383

#define     ALPHA_RANGE_SWB						(HIGH_ALPHA_SWB - LOW_ALPHA_SWB)
#define     ALPHA_RAN_DIV_TCE_RAN_SWB		803
#define     DEV_THLD_SWB					100//896 (400±îÁö µ¿µî)
#define     PRE_EMP_FAC_SWB					-26214
#define     CEE_SM_FAC_SWB					1181116006
#define     ONE_MINUS_CEE_SM_FAC_SWB		(2147483648-CEE_SM_FAC_SWB)
#define     MIN_GAIN_SWB					-27262976
#define     GAIN_SLOPE_SWB					14879
#define     CNE_SM_FAC_SWB					3277

#define     ONE_MINUS_CNE_SM_FAC_SWB		(32767-CNE_SM_FAC_SWB)
#define     DE_EMP_FAC_SWB					26214
#define     LOG_OFFSET_SWB					626255212
#define     ONE_OVER_20_SWB					1638
#define     TEN_S5_10_SWB					10270
#define     CONST_0_1875_S10_21_SWB			393216
#define     CONST_2_667_S5_10_SWB			2731

#define     FFT_HEADROOM_SWB				1		// °í´ë¿ª À½Áú ¿Ü°î ¹ß»ý À½Áú °³¼±
#define     IFFT_HEADROOM_SWB				4
/* Defines WB*/
#define         FRM_LEN_WB                 M_FRM_LEN_WB
#define         DELAY_WB                   M_DELAY_WB
#define         FFT_LEN_WB                 M_FFT_LEN_WB
#define         NUM_CHAN_WB                M_NUM_CHAN_WB
#define         CHAN_150_WB                M_CHAN_150_WB
#define         CHAN_500_WB                M_CHAN_500_WB
#define         CHAN_1000_WB               M_CHAN_1000_WB
#define         CHAN_1500_WB               M_CHAN_1500_WB
#define         CHAN_2000_WB               M_CHAN_2000_WB
#define         CHAN_2500_WB               M_CHAN_2500_WB
#define         CHAN_3000_WB               M_CHAN_3000_WB
#define         CHAN_4000_WB               M_CHAN_4000_WB
#define         CHAN_6000_WB               M_CHAN_6000_WB
#define         CHAN_HIGH_WB               (NUM_CHAN_WB-1)
#define         LTSD_NFRM_WB               M_LTSD_FRM_WB
#define         FFT_HEADROOM_WB                1
#define         IFFT_HEADROOM_WB               4
#define         INI_SNR_SUM_THD_WB          5000
#define         DEV_THD_WB                  7000/* 28.0 scaled as 10,5 */
#define         NOISE_FLOOR_WB             50000  // smaler than this val --> SILENCE!!
#define         NOISE_CEIL_WB            3000000  // smaler than this val --> SILENCE!!
#define         MIN_CHAN_ENRG_WB                  1
#define         MIN_NOISE_ENRG_WB                 8
#define         MIN_Smin_NOISE_ENRG_WB            1
#define         NUM_FRM_MINIMUM_STATISTICS_WB     15

#define         Npsd_gain_min                   FLOAT2FIXED(0.2f, 15)    // filter Q
#define         noise_floor_offset_max          FLOAT2FIXED(0.2f, 15)    // filter Q

/* Defines NB*/
#define         FRM_LEN_NB                 M_FRM_LEN_NB
#define         DELAY_NB                   M_DELAY_NB
#define         FFT_LEN_NB                 M_FFT_LEN_NB
#define         NUM_CHAN_NB                M_NUM_CHAN_NB
#define         CHAN_150_NB                M_CHAN_150_NB
#define         CHAN_500_NB                M_CHAN_500_NB
#define         CHAN_1000_NB               M_CHAN_1000_NB
#define         CHAN_1500_NB               M_CHAN_1500_NB
#define         CHAN_2000_NB               M_CHAN_2000_NB
#define         CHAN_2500_NB               M_CHAN_2500_NB
#define         CHAN_3000_NB               M_CHAN_3000_NB
#define         CHAN_HIGH_NB               (NUM_CHAN_NB-1)
#define         LTSD_NFRM_NB               M_LTSD_FRM_NB
#define         FFT_HEADROOM_NB                1
#define         IFFT_HEADROOM_NB               4
#define         INI_SNR_SUM_THD_NB          5000
#define         DEV_THD_NB                  7000/* 28.0 scaled as 10,5 */
#define         NOISE_FLOOR_NB             50000  // smaler than this val --> SILENCE!!
#define         NOISE_CEIL_NB            3000000  // smaler than this val --> SILENCE!!
#define         MIN_CHAN_ENRG_NB                  1
#define         MIN_NOISE_ENRG_NB                 8
#define         MIN_Smin_NOISE_ENRG_NB            1
#define         NUM_FRM_MINIMUM_STATISTICS_NB     15

#define         THD_PwrLower_1kto4k               1000
#define         NUM_hangovercnt_noisefree         50


/* Defines WB&NB common*/
#define			macroMIN(a,b) (((a)<(b))?(a):(b))
#define			macroMAX(a,b) (((a)>(b))?(a):(b))
#define         WORD32_0_05             107374182  //0.2 2^31
#define         WORD32_0_95            2040109464 //0.8 2^31
#define         WORD32_0_2              429496729  //0.2 2^31
#define         WORD32_0_8             1717986918 //0.8 2^31
#define         WORD32_0_3              644245094  //0.2 2^31
#define         WORD32_0_7             1503238553 //0.8 2^31
#define         PRE_EMP_FAC                    -1//-26214 //  x(n)-ax(n-1) ¿¡¼­ a °ª, Å¬ ¼ö·Ï HPF È¿°ú
#define         DE_EMP_FAC                      1//26214



// AEC tunning parameters 
#define MIN(X, Y) (((X) < (Y)) ? (X) : (Y))
#define MAX(X, Y) (((X) > (Y)) ? (X) : (Y))
#define FIXED_ONE(qfrac)        ((unsigned long)      1 << (qfrac))
#define FIXED_ONELL(qfrac)      ((unsigned long long) 1 << (qfrac))
#define FLOAT2FIXED(R, qfrac)   ((long)((float)(R) * (float)FIXED_ONE(qfrac) + ((R >= 0) ? 0.5f : -0.5f)))
#define FIXED2FLOAT(x, qfrac)   ((float)(x)/(float)(FIXED_ONE(qfrac)))
#define FIXED2FLOATLL(x, qfrac) ((float)(x)/(float)(FIXED_ONELL(qfrac)))
#define FIXED_RECIP(D, qfrac) FLOAT2FIXED((float)1.f/(float)(D), (qfrac))
#define NadfRecip   FIXED_RECIP(Nadf_NB, 31) // 1/A*2^31
#define LOG10QFIX fnLog10(2)
#define LOG10FIX  fnLog10(1)

//AEC NB
#define  FLAG_ADF_UPDATE_NB       1
#define  ADFUPDATE_INTERVAL_NB    5
#define  ADF_mu_ini_NB            2147484 //FLOAT2FIXED(0.001f, 31)
#define  ADF_Xpwr_OFFSET_q_NB     25                     // 33 fit into Q25
#define  ADF_Xpwr_OFFSET_NB       FLOAT2FIXED(33.0f, ADF_Xpwr_OFFSET_q_NB) //(0.001 * 32767)
#define  ADF_Wvar_THD_NB          FLOAT2FIXED(0.00003f, 21)    // filter Q
#define  THD_Pwr_RX_AECIN_dB_NB   12800   //FLOAT2FIXED(50.f, 8)
#define  THD_Pwr_TX_dB_NB         3840    //FLOAT2FIXED(14.958f, 8) //before: FLOAT2FIXED(15.f, 8)
#define  Pwr_LowerTHD_ADF_IN_NB   15360 //FLOAT2FIXED(60.f, 8)
#define  Pwr_UpperTHD_ADF_IN_NB   20992 //FLOAT2FIXED(82.f, 8)
#define  THD_XECC_NB              4915 //FLOAT2FIXED(0.60f, 13)
#define  beta_corr_NB             31129 //FLOAT2FIXED(0.95f, 15)
#define  beta_stepsize_update_NB  29491 //FLOAT2FIXED(0.9f, 15)
#define  beta_psd_aecout_NB       22938 // FLOAT2FIXED(0.70f, 15)
#define  beta_psd_micsig_silence_NB  31129  //FLOAT2FIXED(0.95f, 15)
#define  OFFSET_P_resiecho_NB          2
#define  Gain_Pdd_to_Pee_NB       30
#define  NadfMinun1_NB            (Nadf_NB-1)

//AEC WB
#define  FLAG_ADF_UPDATE_WB       1
#define  ADFUPDATE_INTERVAL_WB    0 // 10
#define  ADF_Xpwr_OFFSET_q_WB     25                     // 33 fit into Q25
#define  ADF_Xpwr_OFFSET_WB       FLOAT2FIXED(33.0f, ADF_Xpwr_OFFSET_q_WB) //(0.001 * 32767)
#define  ADF_Wvar_THD_WB          FLOAT2FIXED(0.0001f, 21)    // filter Q
#define  THD_Pwr_RX_AECIN_dB_WB   12800   //FLOAT2FIXED(50.f, 8) -->50*2^8
#define  THD_Pwr_TX_dB_WB         3840    //FLOAT2FIXED(14.958f, 8) //before: FLOAT2FIXED(15.f, 8)
#define  THD_Pwr_TX_Loud_dB_WB    11520    //FLOAT2FIXED(45.0f, 8)
#define  Pwr_LowerTHD_ADF_IN_WB   15360 //FLOAT2FIXED(60.f, 8)
#define  Pwr_UpperTHD_ADF_IN_WB   20992 //FLOAT2FIXED(82.f, 8)
//#define  THD_XECC_WB              4915 //FLOAT2FIXED(0.60f, 13)
#define  THD_L_XECCmax_WB        1342177 //FLOAT2FIXED(0.8^2, 21)
#define  THD_L_XECCmin_WB          83886 //FLOAT2FIXED(0.2^2, 21)
#define  beta_corr_WB             31129 //FLOAT2FIXED(0.95f, 15)
#define  beta_stepsize_update_WB  32439 //FLOAT2FIXED(0.99f, 15)
#define  beta_psd_aecout_WB       22938 // FLOAT2FIXED(0.70f, 15)
#define  beta_psd_micsig_silence_WB  31129  //FLOAT2FIXED(0.95f, 15)
#define  OFFSET_P_resiecho_WB     2
#define  NadfMinun1_WB            (Nadf_WB-1)
#define  RxClipBound_WB			 3277
#define  ADF_refence_step         FLOAT2FIXED(0.00001f, 31)  






#define	FFT_SIZE_512							512
#define	FFT_SIZE_256							256
#define	FFT_SIZE_128							128
#define	FFT_SIZE_64								64
#define	FFT_SIZE_32								32

#endif
typedef struct Postfilter_buffer_struct
{
	//float priSNR[FREQ_SIZE], est_n_psd[FREQ_SIZE], priSNR_update[FREQ_SIZE];
	long E_ch1, E_ch2;
	short E_ch_q;
	short frame_vad, frame_vad_tmp, frame_vad_tmp2, frame_vad_hg_cnt, frame_vad_hg2_cnt;
	int fft_len;

	short noise_free_flag;
    short noise_free_flag_hg_cnt;
#if 1

	//WB
	short WINDOW_NSWB[M_DELAY_WB + M_FRM_LEN_WB];
	short OVERLAP_NSWB[M_FFT_LEN_WB - M_FRM_LEN_WB];
	short OVERLAP_RX_NSWB[M_FFT_LEN_WB - M_FRM_LEN_WB];
	short WINDOW_OVERLAP_NSWB[M_DELAY_WB];
	short WINDOW_OVERLAP_RX_NSWB[M_DELAY_WB];
	short Gbin_NSWB[M_FFT_LEN_WB / 2];

	short CHANINDEX_NSWB[M_NUM_CHAN_WB][2];
	short CHAN_NUMBIN_NSWB[M_NUM_CHAN_WB][2];
	long  L_Esqr_ravg_silence_NSWB[M_NUM_CHAN_WB];
	long  L_Dsqr_ravg_NSWB[M_NUM_CHAN_WB];
	long  L_Npsd_NSWB[M_NUM_CHAN_WB];
	long  L_Npsd_MMSE_ini_NSWB[M_NUM_CHAN_WB];
	long  L_Npsd_MMSE_TMP_NSWB[M_NUM_CHAN_WB];
	short P_H1_ravg_NSWB[M_NUM_CHAN_WB];
	long  L_SNRpost_prv_NSWB[M_NUM_CHAN_WB];
	long  L_SERpost_prv_NSWB[M_NUM_CHAN_WB];
	short Gmmse_NSWB[M_NUM_CHAN_WB];
	short Gres_NSWB[M_NUM_CHAN_WB];
	long  L_SNRMTX_NSWB[M_NUM_CHAN_WB][4];
	short spp_NSWB[M_NUM_CHAN_NB];
	long  L_SNRprio_avg[M_NUM_CHAN_NB];

	short INDEX_SNRMTX_NSWB;
	short noise_floor_NSWB;
	short FLAG_FIRST_FRM_NSWB;
	short PRE_EMP_NSWB;
	short PRE_EMP_RX_NSWB;
	short DE_EMP_NSWB;
	short DE_EMP_RX_NSWB;
	short NORM_PRV_NSWB;
	short NORM_PRV_RX_NSWB;
	short hov_tx_noisefree_cnt_NSWB;
	short noise_floor_offset_NSWB;
	short gain_Npsd_NSWB;




	//NB
	short WINDOW_NSNB[M_DELAY_NB + M_FRM_LEN_NB];
	short OVERLAP_NSNB[M_FFT_LEN_NB - M_FRM_LEN_NB];
	short OVERLAP_RX_NSNB[M_FFT_LEN_NB - M_FRM_LEN_NB];
	short WINDOW_OVERLAP_NSNB[M_DELAY_NB];
	short WINDOW_OVERLAP_RX_NSNB[M_DELAY_NB];
	short Gbin_NSNB[M_FFT_LEN_NB / 2];

	short CHANINDEX_NSNB[M_NUM_CHAN_NB][2];
	short CHAN_NUMBIN_NSNB[M_NUM_CHAN_NB][2];
	long  L_Esqr_ravg_NSNB[M_NUM_CHAN_NB];
	long  L_Esqr_ravg_silence_NSNB[M_NUM_CHAN_NB];
	long  L_Dsqr_ravg_NSNB[M_NUM_CHAN_NB];
	long  L_Npsd_NSNB[M_NUM_CHAN_NB];
	long  L_Npsd_LTSD_NSNB[M_NUM_CHAN_NB];
	long  L_Npsd_MMSE_NSNB[M_NUM_CHAN_NB];
	long  L_Npsd_MMSE_TMP_NSNB[M_NUM_CHAN_NB];
	short P_H1_ravg_NSNB[M_NUM_CHAN_NB];
	long  L_SNRpost_prv_NSNB[M_NUM_CHAN_NB];
	long  L_SERpost_prv_NSNB[M_NUM_CHAN_NB];
	short Gmmse_NSNB[M_NUM_CHAN_NB];
	short Gres_NSNB[M_NUM_CHAN_NB];
	long  L_MS_S_NSNB[M_NUM_CHAN_NB];
	long  L_MS_Smin_NSNB[M_NUM_CHAN_NB];
	long  L_MS_Stmp_NSNB[M_NUM_CHAN_NB];

	//for additional Npsd_mmse
	long  L_SNRMTX_NSNB[M_NUM_CHAN_NB][4];
	short INDEX_SNRMTX_NSNB;
	// for addiftional silence frame control
	short hov_sic_cnt_NSNB;
	short gain_Npsd_NSNB;
	short noise_floor_NSNB;

	long  L_LTSDmtx_NSNB[M_LTSD_FRM_NB][M_NUM_CHAN_NB];
	short LTSDmtx_INDX_NSNB;
	long  L_MSmtx_NSNB[M_MS_NUM_SUBFRAME_NB][M_NUM_CHAN_NB];
	short MSmtx_col_INDX_NSNB;
	short MS_FRM_INDX_NSNB;

	short FLAG_FIRST_FRM_NSNB;
	short PRE_EMP_NSNB;
	short PRE_EMP_RX_NSNB;
	short DE_EMP_NSNB;
	short DE_EMP_RX_NSNB;
	short NORM_PRV_NSNB;
	short NORM_PRV_RX_NSNB;
	long  FRMCNT_NSNB;
#endif
}PF_buffer;



#if 0
static short tx_phs_tbl_512_swb[] =
{
	32767, 0, 32766, -402, 32758, -804, 32746, -1206,
	32729, -1608, 32706, -2009, 32679, -2411, 32647, -2811,
	32610, -3212, 32568, -3612, 32522, -4011, 32470, -4410,
	32413, -4808, 32352, -5205, 32286, -5602, 32214, -5998,
	32138, -6393, 32058, -6787, 31972, -7180, 31881, -7571,
	31786, -7962, 31686, -8351, 31581, -8740, 31471, -9127,
	31357, -9512, 31238, -9896, 31114, -10279, 30986, -10660,
	30853, -11039, 30715, -11417, 30572, -11793, 30425, -12167,
	30274, -12540, 30118, -12910, 29957, -13279, 29792, -13646,
	29622, -14010, 29448, -14373, 29269, -14733, 29086, -15091,
	28899, -15447, 28707, -15800, 28511, -16151, 28311, -16500,
	28106, -16846, 27897, -17190, 27684, -17531, 27467, -17869,
	27246, -18205, 27020, -18538, 26791, -18868, 26557, -19195,
	26320, -19520, 26078, -19841, 25833, -20160, 25583, -20475,
	25330, -20788, 25073, -21097, 24812, -21403, 24548, -21706,
	24279, -22006, 24008, -22302, 23732, -22595, 23453, -22884,
	23170, -23170, 22884, -23453, 22595, -23732, 22302, -24008,
	22006, -24279, 21706, -24548, 21403, -24812, 21097, -25073,
	20788, -25330, 20475, -25583, 20160, -25833, 19841, -26078,
	19520, -26320, 19195, -26557, 18868, -26791, 18538, -27020,
	18205, -27246, 17869, -27467, 17531, -27684, 17190, -27897,
	16846, -28106, 16500, -28311, 16151, -28511, 15800, -28707,
	15447, -28899, 15091, -29086, 14733, -29269, 14373, -29448,
	14010, -29622, 13646, -29792, 13279, -29957, 12910, -30118,
	12540, -30274, 12167, -30425, 11793, -30572, 11417, -30715,
	11039, -30853, 10660, -30986, 10279, -31114, 9896, -31238,
	9512, -31357, 9127, -31471, 8740, -31581, 8351, -31686,
	7962, -31786, 7571, -31881, 7180, -31972, 6787, -32058,
	6393, -32138, 5998, -32214, 5602, -32286, 5205, -32352,
	4808, -32413, 4410, -32470, 4011, -32522, 3612, -32568,
	3212, -32610, 2811, -32647, 2411, -32679, 2009, -32706,
	1608, -32729, 1206, -32746, 804, -32758, 402, -32766,
	0, -32768, -402, -32766, -804, -32758, -1206, -32746,
	-1608, -32729, -2009, -32706, -2411, -32679, -2811, -32647,
	-3212, -32610, -3612, -32568, -4011, -32522, -4410, -32470,
	-4808, -32413, -5205, -32352, -5602, -32286, -5998, -32214,
	-6393, -32138, -6787, -32058, -7180, -31972, -7571, -31881,
	-7962, -31786, -8351, -31686, -8740, -31581, -9127, -31471,
	-9512, -31357, -9896, -31238, -10279, -31114, -10660, -30986,
	-11039, -30853, -11417, -30715, -11793, -30572, -12167, -30425,
	-12540, -30274, -12910, -30118, -13279, -29957, -13646, -29792,
	-14010, -29622, -14373, -29448, -14733, -29269, -15091, -29086,
	-15447, -28899, -15800, -28707, -16151, -28511, -16500, -28311,
	-16846, -28106, -17190, -27897, -17531, -27684, -17869, -27467,
	-18205, -27246, -18538, -27020, -18868, -26791, -19195, -26557,
	-19520, -26320, -19841, -26078, -20160, -25833, -20475, -25583,
	-20788, -25330, -21097, -25073, -21403, -24812, -21706, -24548,
	-22006, -24279, -22302, -24008, -22595, -23732, -22884, -23453,
	-23170, -23170, -23453, -22884, -23732, -22595, -24008, -22302,
	-24279, -22006, -24548, -21706, -24812, -21403, -25073, -21097,
	-25330, -20788, -25583, -20475, -25833, -20160, -26078, -19841,
	-26320, -19520, -26557, -19195, -26791, -18868, -27020, -18538,
	-27246, -18205, -27467, -17869, -27684, -17531, -27897, -17190,
	-28106, -16846, -28311, -16500, -28511, -16151, -28707, -15800,
	-28899, -15447, -29086, -15091, -29269, -14733, -29448, -14373,
	-29622, -14010, -29792, -13646, -29957, -13279, -30118, -12910,
	-30274, -12540, -30425, -12167, -30572, -11793, -30715, -11417,
	-30853, -11039, -30986, -10660, -31114, -10279, -31238, -9896,
	-31357, -9512, -31471, -9127, -31581, -8740, -31686, -8351,
	-31786, -7962, -31881, -7571, -31972, -7180, -32058, -6787,
	-32138, -6393, -32214, -5998, -32286, -5602, -32352, -5205,
	-32413, -4808, -32470, -4410, -32522, -4011, -32568, -3612,
	-32610, -3212, -32647, -2811, -32679, -2411, -32706, -2009,
	-32729, -1608, -32746, -1206, -32758, -804, -32766, -402
};
static short tx_phs_tbl_256_wb[] =
{
	32767, 0, 32758, -804, 32729, -1608, 32679, -2411,
	32610, -3212, 32522, -4011, 32413, -4808, 32286, -5602,
	32138, -6393, 31972, -7180, 31786, -7962, 31581, -8740,
	31357, -9512, 31114, -10279, 30853, -11039, 30572, -11793,
	30274, -12540, 29957, -13279, 29622, -14010, 29269, -14733,
	28899, -15447, 28511, -16151, 28106, -16846, 27684, -17531,
	27246, -18205, 26791, -18868, 26320, -19520, 25833, -20160,
	25330, -20788, 24812, -21403, 24279, -22006, 23732, -22595,
	23170, -23170, 22595, -23732, 22006, -24279, 21403, -24812,
	20788, -25330, 20160, -25833, 19520, -26320, 18868, -26791,
	18205, -27246, 17531, -27684, 16846, -28106, 16151, -28511,
	15447, -28899, 14733, -29269, 14010, -29622, 13279, -29957,
	12540, -30274, 11793, -30572, 11039, -30853, 10279, -31114,
	9512, -31357, 8740, -31581, 7962, -31786, 7180, -31972,
	6393, -32138, 5602, -32286, 4808, -32413, 4011, -32522,
	3212, -32610, 2411, -32679, 1608, -32729, 804, -32758,
	0, -32768, -804, -32758, -1608, -32729, -2411, -32679,
	-3212, -32610, -4011, -32522, -4808, -32413, -5602, -32286,
	-6393, -32138, -7180, -31972, -7962, -31786, -8740, -31581,
	-9512, -31357, -10279, -31114, -11039, -30853, -11793, -30572,
	-12540, -30274, -13279, -29957, -14010, -29622, -14733, -29269,
	-15447, -28899, -16151, -28511, -16846, -28106, -17531, -27684,
	-18205, -27246, -18868, -26791, -19520, -26320, -20160, -25833,
	-20788, -25330, -21403, -24812, -22006, -24279, -22595, -23732,
	-23170, -23170, -23732, -22595, -24279, -22006, -24812, -21403,
	-25330, -20788, -25833, -20160, -26320, -19520, -26791, -18868,
	-27246, -18205, -27684, -17531, -28106, -16846, -28511, -16151,
	-28899, -15447, -29269, -14733, -29622, -14010, -29957, -13279,
	-30274, -12540, -30572, -11793, -30853, -11039, -31114, -10279,
	-31357, -9512, -31581, -8740, -31786, -7962, -31972, -7180,
	-32138, -6393, -32286, -5602, -32413, -4808, -32522, -4011,
	-32610, -3212, -32679, -2411, -32729, -1608, -32758, -804
};
static short tx_phs_tbl_128[] =
{

	32767, 0, 32729, -1608, 32610, -3212, 32413, -4808,
	32138, -6393, 31786, -7962, 31357, -9512, 30853, -11039,
	30274, -12540, 29622, -14010, 28899, -15447, 28106, -16846,
	27246, -18205, 26320, -19520, 25330, -20788, 24279, -22006,
	23170, -23170, 22006, -24279, 20788, -25330, 19520, -26320,
	18205, -27246, 16846, -28106, 15447, -28899, 14010, -29622,
	12540, -30274, 11039, -30853, 9512, -31357, 7962, -31786,
	6393, -32138, 4808, -32413, 3212, -32610, 1608, -32729,
	0, -32768, -1608, -32729, -3212, -32610, -4808, -32413,
	-6393, -32138, -7962, -31786, -9512, -31357, -11039, -30853,
	-12540, -30274, -14010, -29622, -15447, -28899, -16846, -28106,
	-18205, -27246, -19520, -26320, -20788, -25330, -22006, -24279,
	-23170, -23170, -24279, -22006, -25330, -20788, -26320, -19520,
	-27246, -18205, -28106, -16846, -28899, -15447, -29622, -14010,
	-30274, -12540, -30853, -11039, -31357, -9512, -31786, -7962,
	-32138, -6393, -32413, -4808, -32610, -3212, -32729, -1608

};

//SWB TABLE
static short tx_ch_tbl_nsswb[NUM_CHAN_SWB][2] =
{
	{ 1, 1 },		// index  0   63 -   63 Hz  
	{ 2, 2 },		// index  1  125 -  125 Hz  
	{ 3, 4 },		// index  2  186 -  248 Hz  
	{ 5, 6 },		// index  3  313 -  375 Hz  
	{ 7, 10 },		// index  4  438 -  625 Hz  
	{ 11, 14 },		// index  5  688 -  875 Hz  
	{ 15, 18 },		// index  6  930 - 1116 Hz  
	{ 19, 22 },		// index  7 1178 - 1364 Hz  
	{ 23, 26 },		// index  8 1426 - 1612 Hz  
	{ 27, 30 },		// index  9 1674 - 1860 Hz  
	{ 31, 34 },		// index 10 1922 - 2108 Hz  
	{ 35, 38 },		// index 11 2170 - 2356 Hz  
	{ 39, 42 },		// index 12 2418 - 2604 Hz  
	{ 43, 46 },		// index 13 2666 - 2852 Hz  
	{ 47, 50 },		// index 14 2914 - 3100 Hz  
	{ 51, 54 },		// index 15 3162 - 3348 Hz  
	{ 55, 58 },		// index 16 3410 - 3596 Hz  
	{ 59, 64 },		// index 17 3658 - 3968 Hz  
	{ 65, 70 },		// index 18 4030 - 4340 Hz  
	{ 71, 76 },		// index 19 4402 - 4712 Hz  
	{ 77, 83 },		// index 20 4774 - 5146 Hz  
	{ 84, 91 },		// index 21 5208 - 5642 Hz  
	{ 92, 99 },		// index 22 5704 - 6138 Hz  
	{ 100, 109 },	// index 23 6200 - 6758 Hz  
	{ 110, 120 },	// index 24 6820 - 7440 Hz  
	{ 121, 132 },	// index 25 7502 - 8184 Hz  
	{ 133, 148 },	// index 26 8246 - 9176 Hz  
	{ 149, 165 },	// index 27 9238 - 10230 Hz 
	{ 166, 185 },	// index 28 10292 - 11470 Hz
	{ 186, 208 },	// index 29 11532 - 12896 Hz
	{ 209, 234 },	// index 30 12958 - 14508 Hz
	{ 235, 252 }	// index 31 14570 - 15686 Hz
};

static short tx_ch_tbl_sh_swb[NUM_CHAN_SWB][2] =
{
	{ TRUE, 0 },     	// index  0 : 1  
	{ TRUE, 0 },     	// index  1 : 1  
	{ TRUE, 1 },     	// index  2 : 2  
	{ TRUE, 1 },     	// index  3 : 2  
	{ TRUE, 2 },     	// index  4 : 4  
	{ TRUE, 2 },     	// index  5 : 4  
	{ TRUE, 2 },     	// index  6 : 4  
	{ TRUE, 2 },     	// index  7 : 4  
	{ TRUE, 2 },     	// index  8 : 4  
	{ TRUE, 2 },     	// index  9 : 4  
	{ TRUE, 2 },     	// index 10 : 4  
	{ TRUE, 2 },     	// index 11 : 4  
	{ TRUE, 2 },     	// index 12 : 4  
	{ TRUE, 2 },     	// index 13 : 4  
	{ TRUE, 2 },     	// index 14 : 4  
	{ TRUE, 2 },     	// index 15 : 4  
	{ TRUE, 2 },     	// index 16 : 4  
	{ FALSE, 5462 },	// index 17 : 6  
	{ FALSE, 5462 },	// index 18 : 6  
	{ FALSE, 5462 },	// index 19 : 6  
	{ FALSE, 4681 },	// index 20 : 7  
	{ TRUE, 3 },     	// index 21 : 8  
	{ TRUE, 3 },     	// index 22 : 8  
	{ FALSE, 3277 },	// index 23 : 10 
	{ FALSE, 2979 },	// index 24 : 11 
	{ FALSE, 2731 },	// index 25 : 12 
	{ TRUE, 4 },     	// index 26 : 16 
	{ FALSE, 1928 },	// index 27 : 17 
	{ FALSE, 1638 },	// index 28 : 20 
	{ FALSE, 1425 },	// index 29 : 23 
	{ FALSE, 1260 },	// index 30 : 26 
	{ FALSE, 1820 }		// index 31 : 18 
};


static int tx_vm_tbl_swb[90] =
{
	2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
	3, 3, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 7, 7, 7,
	8, 8, 9, 9, 10, 10, 11, 12, 12, 13, 13, 14, 15,
	15, 16, 17, 17, 18, 19, 20, 20, 21, 22, 23, 24,
	24, 25, 26, 27, 28, 28, 29, 30, 31, 32, 33, 34,
	35, 36, 37, 37, 38, 39, 40, 41, 42, 43, 44, 45,
	46, 47, 48, 49, 50, 50, 50, 50, 50, 50, 50, 50,
	50, 50
};

static short tx_window_swb[DELAY_SWB + FRM_LEN_SWB] =
{
	2, 20, 55, 107, 177, 265, 369, 491, 630, 785,
	958, 1147, 1352, 1573, 1810, 2063, 2331, 2614, 2912, 3224,
	3551, 3891, 4244, 4611, 4990, 5381, 5784, 6199, 6624, 7060,
	7506, 7961, 8425, 8898, 9379, 9867, 10363, 10864, 11372, 11885,
	12403, 12925, 13451, 13980, 14512, 15045, 15580, 16116, 16652, 17188,
	17723, 18256, 18788, 19317, 19843, 20365, 20883, 21396, 21904, 22405,
	22901, 23389, 23870, 24343, 24807, 25262, 25708, 26144, 26569, 26984,
	27387, 27778, 28157, 28524, 28877, 29217, 29544, 29856, 30154, 30437,
	30705, 30958, 31195, 31416, 31621, 31810, 31983, 32138, 32277, 32399,
	32503, 32591, 32661, 32713, 32748, 32766, 32767, 32767, 32767, 32767,
	32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
	32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
	32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
	32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
	32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
	32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
	32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
	32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
	32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
	32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
	32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
	32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
	32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
	32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
	32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
	32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
	32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
	32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
	32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
	32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
	32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
	32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
	32766, 32748, 32713, 32661, 32591, 32503, 32399, 32277, 32138, 31983,
	31810, 31621, 31416, 31195, 30958, 30705, 30437, 30154, 29856, 29544,
	29217, 28877, 28524, 28157, 27778, 27387, 26984, 26569, 26144, 25708,
	25262, 24807, 24343, 23870, 23389, 22901, 22405, 21904, 21396, 20883,
	20365, 19843, 19317, 18788, 18256, 17723, 17188, 16652, 16116, 15580,
	15045, 14512, 13980, 13451, 12925, 12403, 11885, 11372, 10864, 10363,
	9867, 9379, 8898, 8425, 7961, 7506, 7060, 6624, 6199, 5784,
	5381, 4990, 4611, 4244, 3891, 3551, 3224, 2912, 2614, 2331,
	2063, 1810, 1573, 1352, 1147, 958, 785, 630, 491, 369,
	265, 177, 107, 55, 20, 2
};

//WB TABLE
static short tx_ch_tbl_nswb[NUM_CHAN_WB][2] =
{
	{ 1, 1 },
	{ 2, 2 },
	{ 3, 3 },
	{ 4, 5 },
	{ 6, 7 },
	{ 8, 10 },
	{ 11, 13 },
	{ 14, 16 },
	{ 17, 20 },
	{ 21, 24 },
	{ 25, 28 },
	{ 29, 32 },
	{ 33, 37 },
	{ 38, 42 },
	{ 43, 47 },
	{ 48, 52 },
	{ 53, 57 },
	{ 58, 63 },
	{ 64, 69 },
	{ 70, 75 },
	{ 76, 81 },
	{ 82, 87 },
	{ 88, 93 },
	{ 94, 99 },
	{ 100, 106 },
	{ 107, 113 },
	{ 114, 120 },
	{ 121, 127 },
	{ 128, 134 },
	{ 135, 142 },
	{ 143, 150 },
	{ 151, 160 },
	{ 161, 170 },
	{ 171, 182 },
	{ 183, 194 },
	{ 195, 206 },
	{ 207, 218 },
	{ 219, 230 },
	{ 231, 242 },
	{ 243, 255 }
};

static short tx_ch_tbl_sh_wb[NUM_CHAN_WB][2] =
{
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 1 },
	{ TRUE, 1 },
	{ FALSE, 10922 },
	{ FALSE, 10922 },
	{ FALSE, 10922 },
	{ TRUE, 2 },
	{ TRUE, 2 },
	{ TRUE, 2 },
	{ TRUE, 2 },
	{ FALSE, 6553 },
	{ FALSE, 6553 },
	{ FALSE, 6553 },
	{ FALSE, 6553 },
	{ FALSE, 6553 },
	{ FALSE, 5461 },
	{ FALSE, 5461 },
	{ FALSE, 5461 },
	{ FALSE, 5461 },
	{ FALSE, 5461 },
	{ FALSE, 5461 },
	{ FALSE, 5461 },
	{ FALSE, 4681 },
	{ FALSE, 4681 },
	{ FALSE, 4681 },
	{ FALSE, 4681 },
	{ FALSE, 4681 },
	{ TRUE, 3 },
	{ TRUE, 3 },
	{ FALSE, 3277 },
	{ FALSE, 3277 },
	{ FALSE, 2731 },
	{ FALSE, 2731 },
	{ FALSE, 2731 },
	{ FALSE, 2731 },
	{ FALSE, 2731 },
	{ FALSE, 2731 },
	{ FALSE, 2521 }


};

static short TRZ_WIN_512_WB[DELAY_WB + FRM_LEN_WB] =
{
	134, 402, 670, 938, 1206, 1474, 1742, 2009, 2277, 2544, 2811, 3078, 3345, 3612, 3878, 4144, 4410, 4675, 4940, 5205, 5470, 5734, 5998, 6261, 6524, 6786, 7048, 7310, 7571, 7832, 8092, 8351, 8610, 8868, 9126, 9383, 9640, 9896, 10151, 10406, 10659, 10913, 11165, 11417, 11668, 11918, 12167, 12415, 12663, 12910, 13156, 13401, 13645, 13888, 14131, 14372, 14613, 14852, 15090, 15328, 15564, 15800, 16034, 16267, 16499, 16730, 16960, 17189, 17417, 17643, 17869, 18093, 18316, 18537, 18758, 18977, 19195, 19411, 19627, 19841, 20053, 20265, 20475, 20683, 20891, 21096, 21301, 21504, 21705, 21905, 22104, 22301, 22497, 22691, 22884, 23075, 23264, 23452, 23639, 23824, 24007, 24189, 24369, 24547, 24724, 24899, 25072, 25244, 25414, 25582, 25749, 25914, 26077, 26239, 26398, 26556, 26712, 26867, 27019, 27170, 27319, 27466, 27611, 27755, 27896, 28036, 28174, 28310, 28444, 28576, 28706, 28834, 28961, 29085, 29208, 29328, 29447, 29563, 29678, 29791, 29901, 30010, 30117, 30221, 30324, 30424, 30523, 30619, 30714, 30806, 30896, 30985, 31071, 31155, 31237, 31317, 31395, 31470, 31544, 31616, 31685, 31752, 31817, 31880, 31941, 32000, 32057, 32111, 32163, 32213, 32261, 32307, 32351, 32392, 32432, 32469, 32504, 32537, 32567, 32596, 32622, 32646, 32668, 32688, 32705, 32721, 32734, 32745, 32754, 32760, 32765, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32765, 32760, 32754, 32745, 32734, 32721, 32705, 32688, 32668, 32646, 32622, 32596, 32567, 32537, 32504, 32469, 32432, 32392, 32351, 32307, 32261, 32213, 32163, 32111, 32057, 32000, 31941, 31880, 31817, 31752, 31685, 31616, 31544, 31470, 31395, 31317, 31237, 31155, 31071, 30985, 30896, 30806, 30714, 30619, 30523, 30424, 30324, 30221, 30117, 30010, 29901, 29791, 29678, 29563, 29447, 29328, 29208, 29085, 28961, 28834, 28706, 28576, 28444, 28310, 28174, 28036, 27896, 27755, 27611, 27466, 27319, 27170, 27019, 26867, 26712, 26556, 26398, 26239, 26077, 25914, 25749, 25582, 25414, 25244, 25072, 24899, 24724, 24547, 24369, 24189, 24007, 23824, 23639, 23452, 23264, 23075, 22884, 22691, 22497, 22301, 22104, 21905, 21705, 21504, 21301, 21096, 20891, 20683, 20475, 20265, 20053, 19841, 19627, 19411, 19195, 18977, 18758, 18537, 18316, 18093, 17869, 17643, 17417, 17189, 16960, 16730, 16499, 16267, 16034, 15800, 15564, 15328, 15090, 14852, 14613, 14372, 14131, 13888, 13645, 13401, 13156, 12910, 12663, 12415, 12167, 11918, 11668, 11417, 11165, 10913, 10659, 10406, 10151, 9896, 9640, 9383, 9126, 8868, 8610, 8351, 8092, 7832, 7571, 7310, 7048, 6786, 6524, 6261, 5998, 5734, 5470, 5205, 4940, 4675, 4410, 4144, 3878, 3612, 3345, 3078, 2811, 2544, 2277, 2009, 1742, 1474, 1206, 938, 670, 402, 134
};


static short tx_ch_tbl_nsnb[NUM_CHAN_NB][2] =
{
	{ 1, 1 },
	{ 2, 2 },
	{ 3, 3 },
	{ 4, 4 },
	{ 5, 5 },
	{ 6, 6 },
	{ 7, 7 },
	{ 8, 8 },
	{ 9, 9 },
	{ 10, 10 },
	{ 11, 11 },
	{ 12, 12 },
	{ 13, 13 },
	{ 14, 14 },
	{ 15, 15 },
	{ 16, 16 },
	{ 17, 17 },
	{ 18, 18 },
	{ 19, 19 },
	{ 20, 20 },
	{ 21, 21 },
	{ 22, 22 },
	{ 23, 23 },
	{ 24, 24 },
	{ 25, 25 },
	{ 26, 26 },
	{ 27, 27 },
	{ 28, 28 },
	{ 29, 29 },
	{ 30, 30 },
	{ 31, 31 },
	{ 32, 32 },
	{ 33, 33 },
	{ 34, 34 },
	{ 35, 35 },
	{ 36, 36 },
	{ 37, 37 },
	{ 38, 38 },
	{ 39, 39 },
	{ 40, 40 },
	{ 41, 41 },
	{ 42, 42 },
	{ 43, 43 },
	{ 44, 44 },
	{ 45, 45 },
	{ 46, 46 },
	{ 47, 47 },
	{ 48, 48 },
	{ 49, 49 },
	{ 50, 50 },
	{ 51, 51 },
	{ 52, 52 },
	{ 53, 53 },
	{ 54, 54 },
	{ 55, 55 },
	{ 56, 56 },
	{ 57, 57 },
	{ 58, 58 },
	{ 59, 59 },
	{ 60, 60 },
	{ 61, 61 },
	{ 62, 62 },
	{ 63, 63 },
	{ 64, 64 },
	{ 65, 65 },
	{ 66, 66 },
	{ 67, 67 },
	{ 68, 68 },
	{ 69, 69 },
	{ 70, 70 },
	{ 71, 71 },
	{ 72, 72 },
	{ 73, 73 },
	{ 74, 74 },
	{ 75, 75 },
	{ 76, 76 },
	{ 77, 77 },
	{ 78, 78 },
	{ 79, 79 },
	{ 80, 80 },
	{ 81, 81 },
	{ 82, 82 },
	{ 83, 83 },
	{ 84, 84 },
	{ 85, 85 },
	{ 86, 86 },
	{ 87, 87 },
	{ 88, 88 },
	{ 89, 89 },
	{ 90, 90 },
	{ 91, 91 },
	{ 92, 92 },
	{ 93, 93 },
	{ 94, 94 },
	{ 95, 95 },
	{ 96, 96 },
	{ 97, 97 },
	{ 98, 98 },
	{ 99, 99 },
	{ 100, 100 },
	{ 101, 101 },
	{ 102, 102 },
	{ 103, 103 },
	{ 104, 104 },
	{ 105, 105 },
	{ 106, 106 },
	{ 107, 107 },
	{ 108, 108 },
	{ 109, 109 },
	{ 110, 110 },
	{ 111, 111 },
	{ 112, 112 },
	{ 113, 113 },
	{ 114, 114 },
	{ 115, 115 },
	{ 116, 116 },
	{ 117, 117 },
	{ 118, 118 },
	{ 119, 119 },
	{ 120, 120 },
	{ 121, 121 },
	{ 122, 122 },
	{ 123, 123 },
	{ 124, 124 },
	{ 125, 125 },
	{ 126, 126 },
	{ 127, 127 },

};

static short tx_ch_tbl_sh_nb[NUM_CHAN_NB][2] =
{
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },
	{ TRUE, 0 },

};

// tx_window is changed from sine^2 to sine window, additional windowing should be applied when systhesis the frame
static short TRZ_WIN_256_NB[DELAY_NB + FRM_LEN_NB] =
{
	268, 804, 1340, 1875, 2410, 2945, 3478, 4011, 4543, 5073, 5602, 6129, 6655, 7179, 7701, 8222, 8739, 9255, 9768, 10278, 10786, 11291, 11793, 12291, 12787, 13279, 13767, 14252, 14732, 15209, 15682, 16151, 16615, 17075, 17530, 17981, 18427, 18868, 19303, 19734, 20159, 20579, 20994, 21403, 21806, 22203, 22594, 22979, 23359, 23731, 24098, 24458, 24811, 25158, 25498, 25832, 26158, 26478, 26790, 27095, 27393, 27683, 27966, 28242, 28510, 28771, 29023, 29268, 29505, 29735, 29956, 30169, 30374, 30571, 30760, 30941, 31113, 31277, 31433, 31580, 31719, 31849, 31971, 32084, 32189, 32285, 32372, 32451, 32521, 32582, 32634, 32678, 32713, 32740, 32757, 32766, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32766, 32757, 32740, 32713, 32678, 32634, 32582, 32521, 32451, 32372, 32285, 32189, 32084, 31971, 31849, 31719, 31580, 31433, 31277, 31113, 30941, 30760, 30571, 30374, 30169, 29956, 29735, 29505, 29268, 29023, 28771, 28510, 28242, 27966, 27683, 27393, 27095, 26790, 26478, 26158, 25832, 25498, 25158, 24811, 24458, 24098, 23731, 23359, 22979, 22594, 22203, 21806, 21403, 20994, 20579, 20159, 19734, 19303, 18868, 18427, 17981, 17530, 17075, 16615, 16151, 15682, 15209, 14732, 14252, 13767, 13279, 12787, 12291, 11793, 11291, 10786, 10278, 9768, 9255, 8739, 8222, 7701, 7179, 6655, 6129, 5602, 5073, 4543, 4011, 3478, 2945, 2410, 1875, 1340, 804, 268
};

static short Tx_ECNS_Level[] = {
	0, 6, 12, 18, 24, 30, 36, 42, 48, 54,
	-1			// NS OFF
};

// sqrt() table, 32 steps for 0 to 32767
static short sqrt_0_to_1_table[1025] =
{
	// manual gain talble
	//1, 64, 128, 192, 256, 320, 384, 448, 512, 576, 640, 704, 768, 832, 896, 960, 1024, 1088, 1152, 1216, 1280, 1344, 1408, 1472, 1536, 1600, 1664, 1728, 1792, 1856, 1920, 1984, 2048, 2112, 2176, 2240, 2304, 2368, 2432, 2496, 2560, 2624, 2688, 2752, 2816, 2880, 2944, 3008, 3072, 3136, 3200, 3264, 3310, 3351, 3392, 3433, 3474, 3515, 3556, 3598, 3639, 3680, 3721, 3762, 3803, 3844, 3886, 3927, 3968, 4009, 4050, 4091, 4132, 4174, 4215, 4256, 4297, 4338, 4379, 4420, 4462, 4503, 4544, 4585, 4626, 4667, 4708, 4750, 4791, 4832, 4873, 4914, 4955, 4996, 5038, 5079, 5120, 5161, 5202, 5243, 5284, 5326, 5367, 5408, 5449, 5490, 5531, 5572, 5614, 5655, 5696, 5737, 5778, 5819, 5860, 5902, 5943, 5984, 6025, 6066, 6107, 6148, 6190, 6231, 6272, 6313, 6354, 6395, 6436, 6478, 6519, 6560, 6601, 6642, 6683, 6724, 6766, 6807, 6848, 6889, 6930, 6971, 7012, 7053, 7095, 7136, 7177, 7218, 7259, 7300, 7341, 7383, 7424, 7465, 7506, 7547, 7588, 7629, 7671, 7712, 7753, 7794, 7835, 7876, 7917, 7959, 8000, 8041, 8082, 8123, 8164, 8205, 8247, 8288, 8329, 8370, 8411, 8452, 8493, 8535, 8576, 8617, 8658, 8699, 8740, 8781, 8823, 8864, 8905, 8946, 8987, 9028, 9069, 9111, 9152, 9193, 9234, 9275, 9316, 9357, 9399, 9440, 9481, 9522, 9563, 9604, 9645, 9687, 9728, 9769, 9810, 9851, 9892, 9933, 9975, 10016, 10057, 10098, 10139, 10180, 10221, 10263, 10304, 10345, 10386, 10427, 10468, 10509, 10551, 10592, 10633, 10674, 10715, 10756, 10797, 10839, 10880, 10921, 10962, 11003, 11044, 11085, 11127, 11168, 11209, 11250, 11291, 11332, 11373, 11415, 11456, 11497, 11538, 11579, 11620, 11661, 11703, 11744, 11785, 11826, 11867, 11908, 11949, 11990, 12032, 12073, 12114, 12155, 12196, 12237, 12278, 12320, 12361, 12402, 12443, 12484, 12525, 12566, 12608, 12649, 12690, 12731, 12772, 12813, 12854, 12896, 12937, 12978, 13019, 13060, 13101, 13142, 13184, 13225, 13266, 13307, 13348, 13389, 13430, 13472, 13513, 13554, 13595, 13636, 13677, 13718, 13760, 13801, 13842, 13883, 13924, 13965, 14006, 14048, 14089, 14130, 14171, 14212, 14253, 14294, 14336, 14377, 14418, 14459, 14500, 14541, 14582, 14624, 14665, 14706, 14747, 14788, 14829, 14870, 14912, 14953, 14994, 15035, 15076, 15117, 15158, 15200, 15241, 15282, 15323, 15364, 15405, 15446, 15488, 15529, 15570, 15611, 15652, 15693, 15734, 15776, 15817, 15858, 15899, 15940, 15981, 16022, 16064, 16105, 16146, 16187, 16228, 16269, 16310, 16352, 16393, 16434, 16475, 16516, 16557, 16598, 16639, 16681, 16722, 16763, 16804, 16845, 16886, 16927, 16969, 17010, 17051, 17092, 17133, 17174, 17215, 17257, 17298, 17339, 17380, 17421, 17462, 17503, 17545, 17586, 17627, 17668, 17709, 17750, 17791, 17833, 17874, 17915, 17956, 17997, 18033, 18062, 18091, 18120, 18149, 18177, 18206, 18235, 18264, 18293, 18321, 18350, 18379, 18408, 18437, 18465, 18494, 18523, 18552, 18581, 18609, 18638, 18667, 18696, 18725, 18753, 18782, 18811, 18840, 18869, 18897, 18926, 18955, 18984, 19013, 19041, 19070, 19099, 19128, 19157, 19185, 19214, 19243, 19272, 19301, 19329, 19358, 19387, 19416, 19445, 19473, 19502, 19531, 19560, 19589, 19617, 19646, 19675, 19704, 19733, 19761, 19790, 19819, 19848, 19877, 19905, 19934, 19963, 19992, 20021, 20049, 20078, 20107, 20136, 20165, 20193, 20222, 20251, 20280, 20309, 20337, 20366, 20395, 20424, 20452, 20481, 20510, 20539, 20568, 20596, 20625, 20654, 20683, 20712, 20740, 20769, 20798, 20827, 20856, 20884, 20913, 20942, 20971, 21000, 21028, 21057, 21086, 21115, 21144, 21172, 21201, 21230, 21259, 21288, 21316, 21345, 21374, 21403, 21432, 21460, 21489, 21518, 21547, 21576, 21604, 21633, 21662, 21691, 21720, 21748, 21777, 21806, 21835, 21864, 21892, 21921, 21950, 21979, 22008, 22036, 22065, 22094, 22123, 22152, 22180, 22209, 22238, 22267, 22296, 22324, 22353, 22382, 22411, 22440, 22468, 22497, 22526, 22555, 22584, 22612, 22641, 22670, 22699, 22728, 22756, 22785, 22814, 22843, 22872, 22900, 22929, 22958, 22987, 23016, 23044, 23073, 23102, 23131, 23160, 23188, 23217, 23246, 23275, 23304, 23332, 23361, 23390, 23419, 23448, 23476, 23505, 23534, 23563, 23592, 23620, 23649, 23678, 23707, 23736, 23764, 23793, 23822, 23851, 23880, 23908, 23937, 23966, 23995,	24024, 24052, 24081, 24110, 24139, 24168, 24196, 24225, 24254, 24283, 24312, 24340, 24369, 24398, 24427, 24456, 24484, 24513, 24542, 24571, 24600, 24628, 24657, 24686, 24715, 24744, 24772, 24801, 24830, 24859, 24888, 24916, 24945, 24974, 25003, 25032, 25060, 25089, 25118, 25147, 25176, 25204, 25233, 25262, 25291, 25320, 25348, 25377, 25406, 25435, 25464, 25492, 25521, 25550, 25579, 25608, 25636, 25665, 25694, 25723, 25752, 25780, 25809, 25838, 25867, 25896, 25924, 25953, 25982, 26011, 26040, 26068, 26097, 26126, 26155, 26184, 26212, 26241, 26270, 26299, 26328, 26356, 26385, 26414, 26443, 26472, 26500, 26529, 26558, 26587, 26616, 26644, 26673, 26702, 26731, 26760, 26788, 26817, 26846, 26875, 26903, 26932, 26961, 26990, 27019, 27047, 27076, 27105, 27134, 27163, 27191, 27220, 27249, 27278, 27307, 27335, 27364, 27393, 27422, 27451, 27479, 27508, 27537, 27566, 27595, 27623, 27652, 27681, 27710, 27739, 27767, 27796, 27825, 27854, 27883, 27911, 27940, 27969, 27998, 28027, 28055, 28084, 28113, 28142, 28171, 28199, 28228, 28257, 28286, 28315, 28343, 28372, 28401, 28430, 28459, 28487, 28516, 28545, 28574, 28603, 28631, 28660, 28689, 28718, 28747, 28775, 28804, 28833, 28862, 28891, 28919, 28948, 28977, 29006, 29035, 29063, 29092, 29121, 29150, 29179, 29207, 29236, 29265, 29294, 29323, 29351, 29380, 29409, 29438, 29467, 29495, 29524, 29553, 29582, 29611, 29639, 29668, 29697, 29726, 29755, 29783, 29812, 29841, 29870, 29899, 29927, 29956, 29985, 30014, 30043, 30071, 30100, 30129, 30158, 30187, 30215, 30244, 30273, 30302, 30331, 30359, 30388, 30417, 30446, 30475, 30503, 30532, 30561, 30590, 30619, 30647, 30676, 30705, 30734, 30763, 30791, 30820, 30849, 30878, 30907, 30935, 30964, 30993, 31022, 31051, 31079, 31108, 31137, 31166, 31195, 31223, 31252, 31281, 31310, 31339, 31367, 31396, 31425, 31454, 31483, 31511, 31540, 31569, 31598, 31627, 31655, 31684, 31713, 31742, 31771, 31799, 31828, 31857, 31886, 31915, 31943, 31972, 32001, 32030, 32059, 32087, 32116, 32145, 32174, 32203, 32231, 32260, 32289, 32318, 32347, 32375, 32404, 32433, 32462, 32491, 32519, 32548, 32577, 32606, 32635, 32663, 32692, 32721, 32750, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
	// sqrt gain table
	//1, 1024, 1448, 1774, 2048, 2290, 2508, 2709, 2896, 3072, 3238, 3396, 3547, 3692, 3831, 3966, 4096, 4222, 4344, 4463, 4579, 4692, 4803, 4911, 5016, 5120, 5221, 5321, 5418, 5514, 5609, 5701, 5793, 5882, 5971, 6058, 6144, 6229, 6312, 6395, 6476, 6557, 6636, 6715, 6792, 6869, 6945, 7020, 7094, 7168, 7241, 7313, 7384, 7455, 7525, 7594, 7663, 7731, 7798, 7865, 7932, 7998, 8063, 8128, 8192, 8256, 8319, 8382, 8444, 8506, 8567, 8628, 8689, 8749, 8809, 8868, 8927, 8985, 9044, 9101, 9159, 9216, 9273, 9329, 9385, 9441, 9496, 9551, 9606, 9660, 9714, 9768, 9822, 9875, 9928, 9981, 10033, 10085, 10137, 10189, 10240, 10291, 10342, 10392, 10443, 10493, 10543, 10592, 10642, 10691, 10740, 10788, 10837, 10885, 10933, 10981, 11029, 11076, 11123, 11170, 11217, 11264, 11310, 11357, 11403, 11448, 11494, 11540, 11585, 11630, 11675, 11720, 11765, 11809, 11853, 11898, 11942, 11985, 12029, 12073, 12116, 12159, 12202, 12245, 12288, 12330, 12373, 12415, 12457, 12499, 12541, 12583, 12625, 12666, 12707, 12749, 12790, 12830, 12871, 12912, 12952, 12993, 13033, 13073, 13113, 13153, 13193, 13233, 13272, 13312, 13351, 13390, 13429, 13468, 13507, 13546, 13585, 13623, 13662, 13700, 13738, 13776, 13814, 13852, 13890, 13928, 13965, 14003, 14040, 14077, 14115, 14152, 14189, 14226, 14262, 14299, 14336, 14372, 14409, 14445, 14481, 14517, 14554, 14590, 14625, 14661, 14697, 14733, 14768, 14804, 14839, 14874, 14909, 14945, 14980, 15015, 15049, 15084, 15119, 15154, 15188, 15223, 15257, 15291, 15326, 15360, 15394, 15428, 15462, 15496, 15529, 15563, 15597, 15630, 15664, 15697, 15731, 15764, 15797, 15830, 15863, 15897, 15929, 15962, 15995, 16028, 16061, 16093, 16126, 16158, 16191, 16223, 16255, 16287, 16320, 16352, 16384, 16416, 16448, 16479, 16511, 16543, 16575, 16606, 16638, 16669, 16701, 16732, 16763, 16795, 16826, 16857, 16888, 16919, 16950, 16981, 17012, 17042, 17073, 17104, 17135, 17165, 17196, 17226, 17256, 17287, 17317, 17347, 17378, 17408, 17438, 17468, 17498, 17528, 17558, 17588, 17617, 17647, 17677, 17706, 17736, 17765, 17795, 17824, 17854, 17883, 17912, 17942, 17971, 18000, 18029, 18058, 18087, 18116, 18145, 18174, 18203, 18232, 18260, 18289, 18318, 18346, 18375, 18403, 18432, 18460, 18489, 18517, 18545, 18573, 18602, 18630, 18658, 18686, 18714, 18742, 18770, 18798, 18826, 18854, 18881, 18909, 18937, 18964, 18992, 19020, 19047, 19075, 19102, 19130, 19157, 19184, 19212, 19239, 19266, 19293, 19320, 19348, 19375, 19402, 19429, 19456, 19483, 19510, 19536, 19563, 19590, 19617, 19643, 19670, 19697, 19723, 19750, 19776, 19803, 19829, 19856, 19882, 19909, 19935, 19961, 19987, 20014, 20040, 20066, 20092, 20118, 20144, 20170, 20196, 20222, 20248, 20274, 20300, 20326, 20351, 20377, 20403, 20428, 20454, 20480, 20505, 20531, 20556, 20582, 20607, 20633, 20658, 20683, 20709, 20734, 20759, 20785, 20810, 20835, 20860, 20885, 20910, 20935, 20960, 20985, 21010, 21035, 21060, 21085, 21110, 21135, 21160, 21184, 21209, 21234, 21258, 21283, 21308, 21332, 21357, 21381, 21406, 21430, 21455, 21479, 21504, 21528, 21552, 21577, 21601, 21625, 21649, 21674, 21698, 21722, 21746, 21770, 21794, 21818, 21842, 21866, 21890, 21914, 21938, 21962, 21986, 22010, 22034, 22057, 22081, 22105, 22128, 22152, 22176, 22199, 22223, 22247, 22270, 22294, 22317, 22341, 22364, 22388, 22411, 22434, 22458, 22481, 22504, 22528, 22551, 22574, 22597, 22621, 22644, 22667, 22690, 22713, 22736, 22759, 22782, 22805, 22828, 22851, 22874, 22897, 22920, 22943, 22966, 22988, 23011, 23034, 23057, 23079, 23102, 23125, 23147, 23170, 23193, 23215, 23238, 23260, 23283, 23305, 23328, 23350, 23373, 23395, 23418, 23440, 23462, 23485, 23507, 23529, 23552, 23574, 23596, 23618, 23641, 23663, 23685, 23707, 23729, 23751, 23773, 23795, 23817, 23839, 23861, 23883, 23905, 23927, 23949, 23971, 23993, 24015, 24036, 24058, 24080, 24102, 24123, 24145, 24167, 24189, 24210, 24232, 24254, 24275, 24297, 24318, 24340, 24361, 24383, 24404, 24426, 24447, 24469, 24490, 24512, 24533, 24554, 24576, 24597, 24618, 24640, 24661, 24682, 24703, 24725, 24746, 24767, 24788, 24809, 24830, 24851, 24872, 24894, 24915, 24936, 24957, 24978, 24999, 25020, 25041, 25061, 25082, 25103, 25124, 25145, 25166, 25187, 25207, 25228, 25249, 25270, 25291, 25311, 25332, 25353, 25373, 25394, 25415, 25435, 25456, 25476, 25497, 25518, 25538, 25559, 25579, 25600, 25620, 25641, 25661, 25681, 25702, 25722, 25743, 25763, 25783, 25804, 25824, 25844, 25864, 25885, 25905, 25925, 25945, 25966, 25986, 26006, 26026, 26046, 26066, 26086, 26107, 26127, 26147, 26167, 26187, 26207, 26227, 26247, 26267, 26287, 26307, 26327, 26346, 26366, 26386, 26406, 26426, 26446, 26466, 26485, 26505, 26525, 26545, 26564, 26584, 26604, 26624, 26643, 26663, 26683, 26702, 26722, 26741, 26761, 26781, 26800, 26820, 26839, 26859, 26878, 26898, 26917, 26937, 26956, 26976, 26995, 27015, 27034, 27053, 27073, 27092, 27111, 27131, 27150, 27169, 27189, 27208, 27227, 27246, 27266, 27285, 27304, 27323, 27342, 27362, 27381, 27400, 27419, 27438, 27457, 27476, 27495, 27515, 27534, 27553, 27572, 27591, 27610, 27629, 27648, 27667, 27685, 27704, 27723, 27742, 27761, 27780, 27799, 27818, 27837, 27855, 27874, 27893, 27912, 27931, 27949, 27968, 27987, 28006, 28024, 28043, 28062, 28080, 28099, 28118, 28136, 28155, 28174, 28192, 28211, 28229, 28248, 28266, 28285, 28303, 28322, 28341, 28359, 28377, 28396, 28414, 28433, 28451, 28470, 28488, 28507, 28525, 28543, 28562, 28580, 28598, 28617, 28635, 28653, 28672, 28690, 28708, 28726, 28745, 28763, 28781, 28799, 28817, 28836, 28854, 28872, 28890, 28908, 28926, 28945, 28963, 28981, 28999, 29017, 29035, 29053, 29071, 29089, 29107, 29125, 29143, 29161, 29179, 29197, 29215, 29233, 29251, 29269, 29287, 29305, 29322, 29340, 29358, 29376, 29394, 29412, 29430, 29447, 29465, 29483, 29501, 29518, 29536, 29554, 29572, 29589, 29607, 29625, 29643, 29660, 29678, 29696, 29713, 29731, 29748, 29766, 29784, 29801, 29819, 29836, 29854, 29872, 29889, 29907, 29924, 29942, 29959, 29977, 29994, 30012, 30029, 30047, 30064, 30081, 30099, 30116, 30134, 30151, 30168, 30186, 30203, 30221, 30238, 30255, 30273, 30290, 30307, 30324, 30342, 30359, 30376, 30394, 30411, 30428, 30445, 30462, 30480, 30497, 30514, 30531, 30548, 30566, 30583, 30600, 30617, 30634, 30651, 30668, 30685, 30702, 30720, 30737, 30754, 30771, 30788, 30805, 30822, 30839, 30856, 30873, 30890, 30907, 30924, 30941, 30958, 30974, 30991, 31008, 31025, 31042, 31059, 31076, 31093, 31110, 31126, 31143, 31160, 31177, 31194, 31211, 31227, 31244, 31261, 31278, 31294, 31311, 31328, 31345, 31361, 31378, 31395, 31411, 31428, 31445, 31461, 31478, 31495, 31511, 31528, 31545, 31561, 31578, 31595, 31611, 31628, 31644, 31661, 31677, 31694, 31710, 31727, 31744, 31760, 31777, 31793, 31810, 31826, 31842, 31859, 31875, 31892, 31908, 31925, 31941, 31958, 31974, 31990, 32007, 32023, 32039, 32056, 32072, 32088, 32105, 32121, 32137, 32154, 32170, 32186, 32203, 32219, 32235, 32251, 32268, 32284, 32300, 32316, 32333, 32349, 32365, 32381, 32397, 32414, 32430, 32446, 32462, 32478, 32494, 32510, 32527, 32543, 32559, 32575, 32591, 32607, 32623, 32639, 32655, 32671, 32687, 32703, 32719, 32735, 32751, 32767
	//^0.25 gain table
	1, 5792, 6888, 7623, 8192, 8662, 9066, 9422, 9742, 10033, 10301, 10549, 10781, 10999, 11205, 11400, 11585, 11762, 11931, 12094, 12250, 12400, 12545, 12685, 12821, 12952, 13080, 13204, 13325, 13442, 13556, 13668, 13777, 13883, 13987, 14089, 14189, 14286, 14382, 14475, 14567, 14658, 14746, 14833, 14919, 15003, 15085, 15167, 15247, 15325, 15403, 15480, 15555, 15629, 15702, 15775, 15846, 15916, 15985, 16054, 16121, 16188, 16254, 16319, 16384, 16447, 16510, 16572, 16634, 16695, 16755, 16814, 16873, 16932, 16989, 17046, 17103, 17159, 17214, 17269, 17324, 17377, 17431, 17484, 17536, 17588, 17640, 17691, 17741, 17791, 17841, 17891, 17940, 17988, 18036, 18084, 18131, 18178, 18225, 18271, 18317, 18363, 18408, 18453, 18498, 18542, 18586, 18630, 18673, 18716, 18759, 18802, 18844, 18886, 18927, 18969, 19010, 19051, 19091, 19132, 19172, 19212, 19251, 19290, 19329, 19368, 19407, 19445, 19484, 19521, 19559, 19597, 19634, 19671, 19708, 19745, 19781, 19817, 19853, 19889, 19925, 19960, 19996, 20031, 20066, 20101, 20135, 20169, 20204, 20238, 20272, 20305, 20339, 20372, 20405, 20438, 20471, 20504, 20537, 20569, 20601, 20633, 20665, 20697, 20729, 20760, 20792, 20823, 20854, 20885, 20916, 20947, 20977, 21008, 21038, 21068, 21098, 21128, 21158, 21187, 21217, 21246, 21276, 21305, 21334, 21363, 21392, 21420, 21449, 21477, 21506, 21534, 21562, 21590, 21618, 21646, 21673, 21701, 21729, 21756, 21783, 21810, 21837, 21864, 21891, 21918, 21945, 21971, 21998, 22024, 22051, 22077, 22103, 22129, 22155, 22181, 22206, 22232, 22258, 22283, 22309, 22334, 22359, 22384, 22409, 22434, 22459, 22484, 22509, 22533, 22558, 22582, 22607, 22631, 22655, 22679, 22704, 22728, 22751, 22775, 22799, 22823, 22846, 22870, 22894, 22917, 22940, 22964, 22987, 23010, 23033, 23056, 23079, 23102, 23125, 23147, 23170, 23193, 23215, 23238, 23260, 23282, 23305, 23327, 23349, 23371, 23393, 23415, 23437, 23459, 23480, 23502, 23524, 23545, 23567, 23588, 23610, 23631, 23652, 23674, 23695, 23716, 23737, 23758, 23779, 23800, 23821, 23842, 23862, 23883, 23904, 23924, 23945, 23965, 23986, 24006, 24026, 24047, 24067, 24087, 24107, 24127, 24147, 24167, 24187, 24207, 24227, 24247, 24266, 24286, 24306, 24325, 24345, 24364, 24384, 24403, 24422, 24442, 24461, 24480, 24499, 24518, 24537, 24556, 24575, 24594, 24613, 24632, 24651, 24670, 24688, 24707, 24726, 24744, 24763, 24781, 24800, 24818, 24837, 24855, 24873, 24892, 24910, 24928, 24946, 24964, 24982, 25000, 25018, 25036, 25054, 25072, 25090, 25108, 25126, 25143, 25161, 25179, 25196, 25214, 25231, 25249, 25266, 25284, 25301, 25319, 25336, 25353, 25370, 25388, 25405, 25422, 25439, 25456, 25473, 25490, 25507, 25524, 25541, 25558, 25575, 25592, 25608, 25625, 25642, 25658, 25675, 25692, 25708, 25725, 25741, 25758, 25774, 25791, 25807, 25823, 25840, 25856, 25872, 25889, 25905, 25921, 25937, 25953, 25969, 25985, 26001, 26017, 26033, 26049, 26065, 26081, 26097, 26113, 26129, 26144, 26160, 26176, 26191, 26207, 26223, 26238, 26254, 26269, 26285, 26300, 26316, 26331, 26347, 26362, 26377, 26393, 26408, 26423, 26439, 26454, 26469, 26484, 26499, 26514, 26529, 26545, 26560, 26575, 26590, 26604, 26619, 26634, 26649, 26664, 26679, 26694, 26709, 26723, 26738, 26753, 26767, 26782, 26797, 26811, 26826, 26840, 26855, 26870, 26884, 26899, 26913, 26927, 26942, 26956, 26971, 26985, 26999, 27013, 27028, 27042, 27056, 27070, 27085, 27099, 27113, 27127, 27141, 27155, 27169, 27183, 27197, 27211, 27225, 27239, 27253, 27267, 27281, 27295, 27308, 27322, 27336, 27350, 27364, 27377, 27391, 27405, 27418, 27432, 27446, 27459, 27473, 27486, 27500, 27513, 27527, 27540, 27554, 27567, 27581, 27594, 27608, 27621, 27634, 27648, 27661, 27674, 27687, 27701, 27714, 27727, 27740, 27753, 27767, 27780, 27793, 27806, 27819, 27832, 27845, 27858, 27871, 27884, 27897, 27910, 27923, 27936, 27949, 27962, 27975, 27988, 28000, 28013, 28026, 28039, 28051, 28064, 28077, 28090, 28102, 28115, 28128, 28140, 28153, 28166, 28178, 28191, 28203, 28216, 28228, 28241, 28253, 28266, 28278, 28291, 28303, 28315, 28328, 28340, 28353, 28365, 28377, 28390, 28402, 28414, 28426, 28439, 28451, 28463, 28475, 28487, 28500, 28512, 28524, 28536, 28548, 28560, 28572, 28584, 28596, 28608, 28620, 28632, 28644, 28656, 28668, 28680, 28692, 28704, 28716, 28728, 28740, 28752, 28763, 28775, 28787, 28799, 28811, 28822, 28834, 28846, 28858, 28869, 28881, 28893, 28904, 28916, 28928, 28939, 28951, 28962, 28974, 28986, 28997, 29009, 29020, 29032, 29043, 29055, 29066, 29078, 29089, 29100, 29112, 29123, 29135, 29146, 29157, 29169, 29180, 29191, 29203, 29214, 29225, 29237, 29248, 29259, 29270, 29281, 29293, 29304, 29315, 29326, 29337, 29349, 29360, 29371, 29382, 29393, 29404, 29415, 29426, 29437, 29448, 29459, 29470, 29481, 29492, 29503, 29514, 29525, 29536, 29547, 29558, 29569, 29580, 29590, 29601, 29612, 2962, 29634, 29645, 29655, 29666, 29677, 29688, 29699, 29709, 29720, 29731, 29741, 29752, 29763, 29773, 29784, 29795, 29805, 29816, 29827, 29837, 29848, 29858, 29869, 29879, 29890, 29901, 29911, 29922, 29932, 29943, 29953, 29964, 29974, 29984, 29995, 30005, 30016, 30026, 30037, 30047, 30057, 30068, 30078, 30088, 30099, 30109, 30119, 30130, 30140, 30150, 30160, 30171, 30181, 30191, 30201, 30212, 30222, 30232, 30242, 30252, 30262, 30273, 30283, 30293, 30303, 30313, 30323, 30333, 30343, 30353, 30363, 30374, 30384, 30394, 30404, 30414, 30424, 30434, 30444, 30454, 30464, 30473, 30483, 30493, 30503, 30513, 30523, 30533, 30543, 30553, 30563, 30572, 30582, 30592, 30602, 30612, 30622, 30631, 30641, 30651, 30661, 30670, 30680, 30690, 30700, 30709, 30719, 30729, 30739, 30748, 30758, 30768, 30777, 30787, 30797, 30806, 30816, 30825, 30835, 30845, 30854, 30864, 30873, 30883, 30892, 30902, 30912, 30921, 30931, 30940, 30950, 30959, 30969, 30978, 30987, 30997, 31006, 31016, 31025, 31035, 31044, 31053, 31063, 31072, 31082, 31091, 31100, 31110, 31119, 31128, 31138, 31147, 31156, 31166, 31175, 31184, 31193, 31203, 31212, 31221, 31231, 31240, 31249, 31258, 31267, 31277, 31286, 31295, 31304, 31313, 31323, 31332, 31341, 31350, 31359, 31368, 31377, 31386, 31396, 31405, 31414, 31423, 31432, 31441, 31450, 31459, 31468, 31477, 31486, 31495, 31504, 31513, 31522, 31531, 31540, 31549, 31558, 31567, 31576, 31585, 31594, 31603, 31612, 31620, 31629, 31638, 31647, 31656, 31665, 31674, 31683, 31691, 31700, 31709, 31718, 31727, 31736, 31744, 31753, 31762, 31771, 31779, 31788, 31797, 31806, 31815, 31823, 31832, 31841, 31849, 31858, 31867, 31876, 31884, 31893, 31902, 31910, 31919, 31928, 31936, 31945, 31953, 31962, 31971, 31979, 31988, 31996, 32005, 32014, 32022, 32031, 32039, 32048, 32056, 32065, 32074, 32082, 32091, 32099, 32108, 32116, 32125, 32133, 32142, 32150, 32159, 32167, 32175, 32184, 32192, 32201, 32209, 32218, 32226, 32234, 32243, 32251, 32260, 32268, 32276, 32285, 32293, 32301, 32310, 32318, 32326, 32335, 32343, 32351, 32360, 32368, 32376, 32385, 32393, 32401, 32409, 32418, 32426, 32434, 32442, 32451, 32459, 32467, 32475, 32484, 32492, 32500, 32508, 32516, 32525, 32533, 32541, 32549, 32557, 32565, 32574, 32582, 32590, 32598, 32606, 32614, 32622, 32630, 32638, 32647, 32655, 32663, 32671, 32679, 32687, 32695, 32703, 32711, 32719, 32727, 32735, 32743, 32751, 32759, 32767
};

// P_H1_exp2_increase_Q15[0][]:xi = 0dB
// P_H1_exp2_increase_Q15[1][]:xi = 1dB
// P_H1_exp2_increase_Q15[15][]:xi = 15dB
static short P_H1_exp2_increase_Q15[16][129] =
{
	{ 26224, 26308, 26395, 26485, 26578, 26674, 26773, 26875, 26979, 27087, 27197, 27310, 27425, 27542, 27661, 27782, 27905, 28029, 28155, 28281, 28408, 28536, 28664, 28792, 28920, 29047, 29173, 29299, 29423, 29546, 29668, 29787, 29905, 30020, 30133, 30243, 30351, 30456, 30558, 30658, 30754, 30847, 30938, 31025, 31109, 31190, 31268, 31343, 31415, 31484, 31551, 31614, 31674, 31732, 31788, 31840, 31890, 31938, 31983, 32027, 32068, 32107, 32144, 32179, 32212, 32243, 32273, 32301, 32328, 32353, 32377, 32400, 32421, 32441, 32460, 32478, 32495, 32511, 32526, 32540, 32554, 32566, 32578, 32589, 32600, 32610, 32619, 32628, 32636, 32644, 32651, 32658, 32665, 32671, 32677, 32682, 32687, 32692, 32696, 32701, 32705, 32708, 32712, 32715, 32718, 32721, 32724, 32727, 32729, 32731, 32734, 32736, 32737, 32739, 32741, 32742, 32744, 32745, 32747, 32748, 32749, 32750, 32751, 32752, 32753, 32754, 32755, 32755, 32756 },
	{ 25927, 26008, 26092, 26180, 26272, 26367, 26467, 26570, 26677, 26788, 26902, 27020, 27141, 27265, 27393, 27523, 27656, 27791, 27928, 28066, 28207, 28348, 28490, 28633, 28775, 28918, 29059, 29200, 29340, 29478, 29614, 29748, 29880, 30008, 30134, 30257, 30377, 30493, 30606, 30715, 30820, 30922, 31019, 31113, 31203, 31289, 31372, 31451, 31526, 31597, 31666, 31730, 31792, 31850, 31905, 31958, 32007, 32054, 32098, 32139, 32179, 32215, 32250, 32283, 32314, 32343, 32370, 32395, 32419, 32442, 32463, 32483, 32501, 32518, 32535, 32550, 32564, 32577, 32590, 32602, 32613, 32623, 32632, 32641, 32650, 32657, 32665, 32671, 32678, 32684, 32689, 32694, 32699, 32704, 32708, 32712, 32716, 32719, 32722, 32725, 32728, 32731, 32733, 32735, 32738, 32740, 32741, 32743, 32745, 32746, 32748, 32749, 32750, 32751, 32752, 32753, 32754, 32755, 32756, 32757, 32757, 32758, 32759, 32759, 32760, 32760, 32761, 32761, 32761 },
	{ 25651, 25724, 25802, 25884, 25971, 26062, 26157, 26257, 26362, 26471, 26585, 26704, 26827, 26954, 27086, 27221, 27360, 27503, 27648, 27797, 27948, 28101, 28255, 28411, 28568, 28725, 28882, 29038, 29193, 29347, 29498, 29648, 29794, 29938, 30078, 30215, 30347, 30476, 30600, 30720, 30835, 30946, 31053, 31154, 31251, 31343, 31431, 31515, 31594, 31669, 31740, 31807, 31870, 31929, 31985, 32038, 32087, 32133, 32177, 32217, 32255, 32291, 32324, 32355, 32384, 32411, 32436, 32460, 32482, 32502, 32521, 32539, 32555, 32570, 32585, 32598, 32610, 32621, 32632, 32642, 32651, 32659, 32667, 32674, 32681, 32687, 32693, 32699, 32704, 32708, 32713, 32717, 32720, 32724, 32727, 32730, 32733, 32735, 32737, 32740, 32742, 32744, 32745, 32747, 32748, 32750, 32751, 32752, 32753, 32754, 32755, 32756, 32757, 32758, 32758, 32759, 32760, 32760, 32761, 32761, 32762, 32762, 32762, 32763, 32763, 32763, 32764, 32764, 32764 },
	{ 25404, 25469, 25537, 25610, 25688, 25770, 25858, 25950, 26048, 26152, 26260, 26375, 26494, 26619, 26750, 26885, 27026, 27171, 27321, 27475, 27633, 27794, 27958, 28125, 28293, 28462, 28633, 28803, 28973, 29142, 29310, 29475, 29637, 29797, 29953, 30104, 30252, 30395, 30532, 30665, 30793, 30915, 31031, 31142, 31248, 31348, 31444, 31533, 31618, 31698, 31773, 31843, 31909, 31971, 32029, 32083, 32134, 32181, 32224, 32265, 32303, 32338, 32371, 32401, 32429, 32455, 32479, 32501, 32522, 32541, 32558, 32575, 32590, 32604, 32616, 32628, 32639, 32649, 32659, 32667, 32675, 32682, 32689, 32695, 32701, 32706, 32711, 32715, 32719, 32723, 32727, 32730, 32733, 32736, 32738, 32740, 32743, 32744, 32746, 32748, 32749, 32751, 32752, 32753, 32754, 32755, 32756, 32757, 32758, 32759, 32759, 32760, 32761, 32761, 32762, 32762, 32762, 32763, 32763, 32763, 32764, 32764, 32764, 32764, 32765, 32765, 32765, 32765, 32765 },
	{ 25196, 25249, 25307, 25368, 25435, 25506, 25583, 25664, 25751, 25844, 25943, 26048, 26159, 26277, 26400, 26530, 26666, 26809, 26957, 27111, 27270, 27434, 27602, 27775, 27951, 28130, 28310, 28493, 28676, 28859, 29041, 29222, 29400, 29576, 29748, 29917, 30081, 30239, 30393, 30541, 30683, 30819, 30948, 31072, 31189, 31300, 31404, 31503, 31595, 31682, 31764, 31840, 31911, 31977, 32039, 32096, 32149, 32198, 32244, 32286, 32325, 32361, 32394, 32424, 32453, 32478, 32502, 32524, 32545, 32563, 32580, 32596, 32610, 32623, 32635, 32646, 32657, 32666, 32675, 32682, 32690, 32696, 32702, 32708, 32713, 32717, 32722, 32725, 32729, 32732, 32735, 32738, 32740, 32743, 32745, 32747, 32748, 32750, 32751, 32753, 32754, 32755, 32756, 32757, 32758, 32759, 32759, 32760, 32761, 32761, 32762, 32762, 32763, 32763, 32763, 32764, 32764, 32764, 32764, 32765, 32765, 32765, 32765, 32765, 32765, 32766, 32766, 32766, 32766 },
	{ 25027, 25070, 25116, 25166, 25220, 25278, 25342, 25411, 25485, 25564, 25650, 25742, 25840, 25945, 26057, 26175, 26301, 26434, 26574, 26721, 26875, 27035, 27202, 27374, 27551, 27734, 27920, 28109, 28301, 28495, 28689, 28883, 29077, 29268, 29457, 29643, 29824, 30001, 30172, 30337, 30496, 30649, 30795, 30933, 31065, 31189, 31307, 31417, 31521, 31618, 31709, 31793, 31872, 31945, 32012, 32075, 32133, 32186, 32235, 32281, 32322, 32361, 32396, 32428, 32458, 32485, 32509, 32532, 32553, 32572, 32589, 32605, 32619, 32632, 32644, 32655, 32665, 32674, 32683, 32690, 32697, 32704, 32709, 32714, 32719, 32723, 32727, 32731, 32734, 32737, 32740, 32742, 32745, 32747, 32748, 32750, 32752, 32753, 32754, 32755, 32756, 32757, 32758, 32759, 32760, 32760, 32761, 32762, 32762, 32763, 32763, 32763, 32764, 32764, 32764, 32764, 32765, 32765, 32765, 32765, 32765, 32766, 32766, 32766, 32766, 32766, 32766, 32766, 32766 },
	{ 24896, 24929, 24964, 25003, 25045, 25091, 25142, 25197, 25257, 25322, 25393, 25469, 25552, 25641, 25737, 25840, 25951, 26069, 26195, 26329, 26470, 26620, 26777, 26941, 27113, 27291, 27476, 27665, 27860, 28058, 28260, 28463, 28667, 28872, 29075, 29277, 29475, 29670, 29860, 30044, 30223, 30395, 30559, 30717, 30866, 31008, 31142, 31269, 31387, 31498, 31601, 31698, 31787, 31870, 31947, 32018, 32083, 32143, 32198, 32249, 32295, 32338, 32377, 32412, 32445, 32474, 32501, 32526, 32548, 32568, 32587, 32604, 32619, 32633, 32645, 32657, 32667, 32676, 32685, 32693, 32700, 32706, 32712, 32717, 32722, 32726, 32730, 32733, 32737, 32739, 32742, 32744, 32747, 32749, 32750, 32752, 32753, 32755, 32756, 32757, 32758, 32759, 32759, 32760, 32761, 32761, 32762, 32762, 32763, 32763, 32764, 32764, 32764, 32764, 32765, 32765, 32765, 32765, 32765, 32766, 32766, 32766, 32766, 32766, 32766, 32766, 32766, 32766, 32766 },
	{ 24799, 24822, 24849, 24878, 24909, 24944, 24983, 25025, 25072, 25123, 25178, 25239, 25306, 25378, 25457, 25542, 25634, 25734, 25842, 25958, 26082, 26214, 26355, 26504, 26662, 26828, 27002, 27184, 27373, 27568, 27768, 27973, 28182, 28394, 28607, 28820, 29033, 29243, 29451, 29654, 29853, 30045, 30231, 30410, 30581, 30744, 30899, 31045, 31182, 31311, 31432, 31544, 31649, 31745, 31835, 31918, 31994, 32064, 32128, 32187, 32240, 32289, 32334, 32375, 32412, 32446, 32477, 32504, 32530, 32552, 32573, 32592, 32609, 32624, 32638, 32651, 32662, 32672, 32682, 32690, 32698, 32704, 32711, 32716, 32721, 32726, 32730, 32733, 32737, 32740, 32742, 32745, 32747, 32749, 32751, 32752, 32754, 32755, 32756, 32757, 32758, 32759, 32760, 32761, 32761, 32762, 32762, 32763, 32763, 32764, 32764, 32764, 32765, 32765, 32765, 32765, 32765, 32766, 32766, 32766, 32766, 32766, 32766, 32766, 32766, 32766, 32766, 32766, 32767 },
	{ 24728, 24745, 24764, 24785, 24808, 24833, 24862, 24893, 24928, 24966, 25008, 25055, 25106, 25162, 25223, 25291, 25364, 25445, 25532, 25627, 25730, 25842, 25962, 26090, 26228, 26375, 26531, 26696, 26870, 27053, 27243, 27441, 27645, 27854, 28069, 28286, 28506, 28727, 28948, 29167, 29383, 29595, 29802, 30003, 30197, 30383, 30561, 30731, 30892, 31043, 31185, 31318, 31443, 31558, 31665, 31764, 31855, 31939, 32016, 32086, 32151, 32210, 32263, 32312, 32356, 32396, 32432, 32465, 32495, 32522, 32547, 32569, 32588, 32606, 32622, 32637, 32650, 32662, 32673, 32682, 32691, 32698, 32705, 32712, 32717, 32722, 32727, 32731, 32735, 32738, 32741, 32744, 32746, 32748, 32750, 32752, 32753, 32755, 32756, 32757, 32758, 32759, 32760, 32761, 32761, 32762, 32762, 32763, 32763, 32764, 32764, 32764, 32765, 32765, 32765, 32765, 32765, 32766, 32766, 32766, 32766, 32766, 32766, 32766, 32766, 32766, 32766, 32767, 32767 },
	{ 24678, 24690, 24703, 24718, 24734, 24752, 24773, 24795, 24820, 24848, 24879, 24913, 24951, 24993, 25039, 25090, 25146, 25208, 25276, 25350, 25432, 25521, 25618, 25723, 25837, 25960, 26093, 26235, 26386, 26548, 26719, 26899, 27088, 27286, 27491, 27702, 27920, 28141, 28366, 28593, 28821, 29047, 29271, 29491, 29707, 29917, 30119, 30314, 30501, 30678, 30846, 31005, 31153, 31292, 31422, 31542, 31653, 31756, 31850, 31937, 32016, 32088, 32154, 32214, 32269, 32318, 32363, 32404, 32440, 32474, 32503, 32530, 32555, 32576, 32596, 32614, 32629, 32644, 32656, 32668, 32678, 32687, 32696, 32703, 32710, 32716, 32721, 32726, 32730, 32734, 32738, 32741, 32743, 32746, 32748, 32750, 32752, 32753, 32755, 32756, 32757, 32758, 32759, 32760, 32761, 32761, 32762, 32763, 32763, 32763, 32764, 32764, 32764, 32765, 32765, 32765, 32765, 32766, 32766, 32766, 32766, 32766, 32766, 32766, 32766, 32766, 32766, 32767, 32767 },
	{ 24643, 24651, 24661, 24671, 24682, 24695, 24709, 24725, 24742, 24762, 24784, 24808, 24835, 24865, 24899, 24936, 24978, 25023, 25074, 25130, 25192, 25260, 25334, 25416, 25506, 25604, 25711, 25826, 25952, 26087, 26232, 26387, 26552, 26728, 26913, 27107, 27310, 27521, 27739, 27962, 28190, 28421, 28653, 28886, 29117, 29345, 29569, 29788, 30000, 30204, 30400, 30586, 30763, 30930, 31087, 31234, 31370, 31497, 31614, 31722, 31822, 31913, 31996, 32071, 32140, 32203, 32260, 32311, 32358, 32400, 32438, 32472, 32503, 32530, 32555, 32577, 32597, 32615, 32631, 32645, 32658, 32670, 32680, 32689, 32698, 32705, 32712, 32718, 32723, 32728, 32732, 32736, 32739, 32742, 32745, 32747, 32749, 32751, 32753, 32754, 32756, 32757, 32758, 32759, 32760, 32761, 32761, 32762, 32762, 32763, 32763, 32764, 32764, 32764, 32765, 32765, 32765, 32765, 32766, 32766, 32766, 32766, 32766, 32766, 32766, 32766, 32766, 32766, 32767 },
	{ 24620, 24625, 24632, 24638, 24646, 24655, 24664, 24675, 24687, 24701, 24716, 24733, 24752, 24773, 24797, 24823, 24853, 24885, 24922, 24962, 25007, 25057, 25113, 25174, 25241, 25316, 25397, 25487, 25585, 25692, 25809, 25935, 26072, 26218, 26376, 26544, 26722, 26911, 27109, 27316, 27531, 27753, 27981, 28213, 28448, 28685, 28922, 29157, 29389, 29617, 29838, 30052, 30258, 30455, 30642, 30819, 30986, 31142, 31288, 31423, 31548, 31663, 31769, 31866, 31955, 32036, 32110, 32176, 32237, 32291, 32341, 32385, 32425, 32461, 32493, 32522, 32548, 32572, 32593, 32611, 32628, 32643, 32656, 32668, 32679, 32689, 32697, 32705, 32711, 32717, 32723, 32728, 32732, 32736, 32739, 32742, 32745, 32747, 32749, 32751, 32753, 32755, 32756, 32757, 32758, 32759, 32760, 32761, 32761, 32762, 32763, 32763, 32764, 32764, 32764, 32765, 32765, 32765, 32765, 32765, 32766, 32766, 32766, 32766, 32766, 32766, 32766, 32766, 32766 },
	{ 24604, 24608, 24612, 24617, 24622, 24628, 24634, 24641, 24650, 24659, 24669, 24681, 24694, 24708, 24724, 24743, 24763, 24786, 24811, 24840, 24872, 24907, 24947, 24991, 25040, 25094, 25154, 25221, 25294, 25375, 25464, 25561, 25668, 25784, 25910, 26047, 26194, 26353, 26522, 26702, 26892, 27092, 27302, 27520, 27745, 27976, 28212, 28451, 28692, 28932, 29171, 29406, 29636, 29860, 30077, 30285, 30484, 30672, 30850, 31017, 31174, 31319, 31454, 31579, 31693, 31798, 31894, 31982, 32061, 32134, 32199, 32258, 32311, 32359, 32403, 32441, 32476, 32507, 32535, 32560, 32583, 32603, 32621, 32637, 32651, 32664, 32675, 32685, 32694, 32702, 32709, 32716, 32721, 32726, 32731, 32735, 32738, 32742, 32744, 32747, 32749, 32751, 32753, 32754, 32756, 32757, 32758, 32759, 32760, 32761, 32761, 32762, 32763, 32763, 32764, 32764, 32764, 32765, 32765, 32765, 32765, 32765, 32766, 32766, 32766, 32766, 32766, 32766, 32766 },
	{ 24594, 24597, 24599, 24602, 24606, 24609, 24614, 24619, 24624, 24630, 24637, 24645, 24654, 24663, 24674, 24687, 24701, 24716, 24734, 24753, 24775, 24800, 24827, 24858, 24892, 24930, 24973, 25021, 25074, 25132, 25197, 25269, 25349, 25436, 25533, 25638, 25753, 25878, 26014, 26160, 26318, 26487, 26667, 26858, 27059, 27270, 27489, 27716, 27950, 28188, 28430, 28673, 28917, 29159, 29397, 29630, 29857, 30077, 30287, 30488, 30679, 30858, 31027, 31185, 31331, 31467, 31592, 31706, 31812, 31908, 31995, 32074, 32146, 32211, 32270, 32322, 32370, 32413, 32451, 32485, 32516, 32543, 32568, 32590, 32609, 32626, 32642, 32656, 32668, 32679, 32689, 32698, 32705, 32712, 32718, 32724, 32729, 32733, 32737, 32740, 32743, 32746, 32748, 32750, 32752, 32754, 32755, 32757, 32758, 32759, 32760, 32761, 32761, 32762, 32762, 32763, 32763, 32764, 32764, 32765, 32765, 32765, 32765, 32765, 32766, 32766, 32766, 32766, 32766 },
	{ 24587, 24589, 24591, 24593, 24595, 24597, 24600, 24603, 24607, 24611, 24616, 24621, 24627, 24633, 24640, 24649, 24658, 24668, 24680, 24693, 24708, 24725, 24743, 24764, 24788, 24814, 24844, 24877, 24914, 24955, 25001, 25052, 25109, 25172, 25242, 25320, 25405, 25499, 25603, 25716, 25839, 25973, 26118, 26274, 26441, 26620, 26810, 27011, 27221, 27441, 27669, 27903, 28143, 28387, 28633, 28879, 29123, 29365, 29601, 29831, 30054, 30267, 30471, 30664, 30847, 31018, 31177, 31326, 31463, 31589, 31706, 31812, 31909, 31997, 32077, 32149, 32214, 32273, 32326, 32374, 32416, 32454, 32489, 32519, 32547, 32571, 32593, 32612, 32629, 32645, 32658, 32670, 32681, 32691, 32699, 32707, 32714, 32720, 32725, 32730, 32734, 32738, 32741, 32744, 32747, 32749, 32751, 32753, 32754, 32756, 32757, 32758, 32759, 32760, 32761, 32762, 32762, 32763, 32763, 32764, 32764, 32764, 32765, 32765, 32765, 32765, 32766, 32766, 32766 },
	{ 24583, 24584, 24585, 24586, 24588, 24590, 24591, 24593, 24596, 24598, 24601, 24605, 24609, 24613, 24618, 24623, 24629, 24636, 24644, 24653, 24662, 24674, 24686, 24700, 24716, 24734, 24754, 24776, 24801, 24830, 24861, 24896, 24936, 24980, 25030, 25084, 25145, 25213, 25288, 25371, 25462, 25563, 25673, 25794, 25925, 26067, 26220, 26385, 26562, 26750, 26949, 27158, 27377, 27605, 27840, 28080, 28325, 28572, 28820, 29067, 29311, 29551, 29784, 30010, 30227, 30434, 30631, 30817, 30991, 31154, 31305, 31445, 31574, 31692, 31800, 31899, 31989, 32070, 32143, 32210, 32269, 32323, 32371, 32415, 32453, 32488, 32519, 32546, 32571, 32593, 32612, 32630, 32645, 32659, 32671, 32682, 32691, 32700, 32708, 32714, 32720, 32726, 32730, 32734, 32738, 32741, 32744, 32747, 32749, 32751, 32753, 32755, 32756, 32757, 32758, 32759, 32760, 32761, 32762, 32762, 32763, 32763, 32764, 32764, 32764, 32765, 32765, 32765, 32765 }
};
static short P_H1_exp2_Q15[16][129] =
{
	{ 6594, 6930, 7277, 7637, 8010, 8394, 8790, 9198, 9617, 10047, 10488, 10938, 11398, 11867, 12344, 12829, 13320, 13816, 14318, 14824, 15332, 15843, 16355, 16867, 17378, 17887, 18393, 18895, 19392, 19884, 20369, 20847, 21317, 21778, 22230, 22671, 23103, 23523, 23932, 24330, 24715, 25089, 25450, 25799, 26136, 26460, 26772, 27073, 27361, 27637, 27902, 28155, 28397, 28628, 28849, 29060, 29260, 29451, 29633, 29806, 29970, 30125, 30273, 30414, 30547, 30672, 30792, 30905, 31011, 31112, 31208, 31298, 31383, 31464, 31540, 31612, 31679, 31743, 31803, 31860, 31914, 31964, 32012, 32056, 32098, 32138, 32176, 32211, 32244, 32275, 32305, 32332, 32358, 32383, 32406, 32427, 32448, 32467, 32485, 32502, 32518, 32533, 32547, 32560, 32573, 32584, 32595, 32606, 32615, 32625, 32633, 32641, 32649, 32656, 32663, 32669, 32675, 32680, 32686, 32691, 32695, 32700, 32704, 32707, 32711, 32714, 32718, 32721, 32723 },
	{ 5408, 5730, 6067, 6419, 6786, 7169, 7567, 7980, 8408, 8850, 9308, 9779, 10263, 10761, 11270, 11790, 12321, 12861, 13409, 13965, 14526, 15091, 15659, 16230, 16800, 17370, 17937, 18500, 19059, 19611, 20155, 20691, 21217, 21733, 22237, 22728, 23207, 23672, 24122, 24558, 24979, 25385, 25776, 26151, 26512, 26857, 27187, 27502, 27802, 28089, 28361, 28620, 28866, 29099, 29320, 29529, 29727, 29914, 30090, 30256, 30413, 30561, 30700, 30831, 30954, 31070, 31178, 31280, 31376, 31466, 31550, 31629, 31703, 31773, 31838, 31899, 31956, 32009, 32059, 32106, 32149, 32190, 32228, 32264, 32297, 32329, 32358, 32385, 32410, 32434, 32456, 32477, 32496, 32514, 32531, 32547, 32562, 32575, 32588, 32600, 32611, 32622, 32632, 32641, 32649, 32657, 32664, 32671, 32678, 32684, 32689, 32695, 32699, 32704, 32708, 32712, 32716, 32719, 32722, 32725, 32728, 32731, 32733, 32736, 32738, 32740, 32741, 32743, 32745 },
	{ 4301, 4596, 4907, 5236, 5582, 5945, 6328, 6728, 7147, 7585, 8041, 8515, 9006, 9516, 10041, 10583, 11139, 11709, 12292, 12886, 13490, 14102, 14721, 15344, 15971, 16599, 17226, 17850, 18471, 19085, 19692, 20289, 20876, 21450, 22011, 22557, 23088, 23602, 24100, 24579, 25041, 25484, 25909, 26315, 26703, 27073, 27425, 27758, 28075, 28375, 28658, 28926, 29178, 29416, 29640, 29850, 30047, 30232, 30406, 30568, 30720, 30863, 30996, 31120, 31235, 31344, 31444, 31538, 31626, 31707, 31783, 31854, 31919, 31980, 32037, 32090, 32139, 32184, 32227, 32266, 32302, 32336, 32368, 32397, 32424, 32449, 32472, 32494, 32514, 32532, 32549, 32565, 32580, 32594, 32607, 32618, 32629, 32639, 32649, 32657, 32666, 32673, 32680, 32686, 32692, 32698, 32703, 32708, 32712, 32716, 32720, 32723, 32726, 32729, 32732, 32735, 32737, 32739, 32741, 32743, 32745, 32747, 32748, 32750, 32751, 32752, 32753, 32754, 32755 },
	{ 3317, 3574, 3847, 4139, 4450, 4780, 5130, 5501, 5892, 6306, 6741, 7197, 7676, 8176, 8697, 9240, 9802, 10383, 10983, 11599, 12230, 12875, 13531, 14197, 14870, 15549, 16230, 16912, 17592, 18268, 18938, 19599, 20249, 20886, 21509, 22116, 22706, 23277, 23828, 24359, 24869, 25357, 25824, 26269, 26692, 27093, 27473, 27832, 28171, 28491, 28791, 29073, 29337, 29584, 29816, 30032, 30233, 30421, 30596, 30759, 30910, 31051, 31182, 31303, 31415, 31519, 31615, 31704, 31786, 31862, 31933, 31998, 32058, 32114, 32165, 32212, 32256, 32296, 32333, 32367, 32399, 32428, 32455, 32480, 32502, 32523, 32543, 32561, 32577, 32592, 32606, 32619, 32631, 32641, 32651, 32661, 32669, 32677, 32684, 32691, 32697, 32702, 32708, 32712, 32717, 32721, 32724, 32728, 32731, 32734, 32736, 32739, 32741, 32743, 32745, 32747, 32748, 32750, 32751, 32753, 32754, 32755, 32756, 32757, 32757, 32758, 32759, 32760, 32760 },
	{ 2483, 2696, 2926, 3173, 3439, 3724, 4029, 4356, 4705, 5076, 5472, 5892, 6336, 6806, 7300, 7820, 8365, 8934, 9527, 10142, 10778, 11435, 12109, 12799, 13503, 14218, 14941, 15670, 16402, 17134, 17863, 18586, 19300, 20003, 20693, 21366, 22021, 22657, 23271, 23862, 24430, 24974, 25492, 25986, 26454, 26897, 27316, 27710, 28080, 28428, 28754, 29058, 29342, 29607, 29853, 30082, 30294, 30491, 30673, 30842, 30998, 31141, 31274, 31396, 31509, 31613, 31708, 31796, 31877, 31951, 32019, 32082, 32140, 32192, 32241, 32285, 32326, 32363, 32397, 32428, 32457, 32483, 32507, 32529, 32550, 32568, 32585, 32601, 32615, 32628, 32640, 32650, 32660, 32669, 32678, 32685, 32692, 32699, 32705, 32710, 32715, 32719, 32723, 32727, 32730, 32734, 32736, 32739, 32741, 32744, 32746, 32747, 32749, 32751, 32752, 32753, 32754, 32756, 32757, 32757, 32758, 32759, 32760, 32760, 32761, 32761, 32762, 32762, 32763 },
	{ 1808, 1978, 2162, 2361, 2578, 2813, 3067, 3341, 3637, 3956, 4298, 4666, 5059, 5478, 5925, 6400, 6904, 7435, 7995, 8583, 9198, 9840, 10506, 11195, 11905, 12633, 13378, 14136, 14904, 15678, 16456, 17233, 18006, 18772, 19528, 20270, 20995, 21702, 22387, 23048, 23685, 24295, 24877, 25432, 25959, 26457, 26926, 27368, 27783, 28171, 28534, 28872, 29186, 29478, 29749, 29999, 30230, 30444, 30641, 30822, 30989, 31142, 31282, 31411, 31529, 31638, 31737, 31827, 31910, 31986, 32055, 32118, 32176, 32229, 32277, 32321, 32361, 32397, 32430, 32460, 32488, 32513, 32536, 32557, 32576, 32593, 32609, 32623, 32636, 32648, 32658, 32668, 32677, 32685, 32693, 32699, 32706, 32711, 32716, 32721, 32725, 32729, 32732, 32735, 32738, 32741, 32743, 32745, 32747, 32749, 32751, 32752, 32754, 32755, 32756, 32757, 32758, 32759, 32759, 32760, 32761, 32761, 32762, 32762, 32763, 32763, 32763, 32764, 32764 },
	{ 1285, 1414, 1555, 1710, 1880, 2065, 2267, 2487, 2726, 2987, 3269, 3575, 3906, 4263, 4648, 5060, 5503, 5975, 6479, 7014, 7581, 8178, 8807, 9465, 10151, 10864, 11601, 12360, 13138, 13932, 14737, 15551, 16368, 17186, 18000, 18806, 19600, 20378, 21138, 21876, 22590, 23278, 23937, 24566, 25165, 25732, 26269, 26773, 27247, 27691, 28105, 28490, 28848, 29180, 29487, 29770, 30031, 30272, 30492, 30695, 30881, 31051, 31206, 31348, 31478, 31596, 31704, 31802, 31891, 31972, 32046, 32113, 32174, 32230, 32280, 32326, 32367, 32405, 32439, 32470, 32498, 32523, 32546, 32567, 32586, 32603, 32619, 32633, 32645, 32657, 32667, 32677, 32685, 32693, 32700, 32706, 32712, 32717, 32722, 32726, 32730, 32734, 32737, 32740, 32742, 32745, 32747, 32749, 32750, 32752, 32753, 32755, 32756, 32757, 32758, 32759, 32760, 32760, 32761, 32761, 32762, 32762, 32763, 32763, 32764, 32764, 32764, 32765, 32765 },
	{ 893, 989, 1094, 1209, 1337, 1477, 1631, 1800, 1986, 2190, 2412, 2656, 2921, 3211, 3526, 3867, 4237, 4636, 5067, 5529, 6025, 6555, 7118, 7716, 8347, 9012, 9708, 10435, 11190, 11970, 12772, 13593, 14429, 15274, 16126, 16980, 17830, 18672, 19502, 20316, 21110, 21881, 22624, 23339, 24023, 24675, 25293, 25877, 26427, 26943, 27425, 27875, 28293, 28681, 29039, 29370, 29674, 29954, 30211, 30446, 30661, 30857, 31036, 31199, 31348, 31482, 31605, 31716, 31817, 31909, 31992, 32067, 32135, 32196, 32252, 32302, 32348, 32389, 32426, 32459, 32489, 32517, 32541, 32563, 32583, 32602, 32618, 32633, 32646, 32658, 32669, 32678, 32687, 32695, 32702, 32708, 32714, 32719, 32724, 32728, 32732, 32736, 32739, 32742, 32744, 32746, 32748, 32750, 32752, 32753, 32755, 32756, 32757, 32758, 32759, 32760, 32760, 32761, 32762, 32762, 32763, 32763, 32763, 32764, 32764, 32764, 32765, 32765, 32765 },
	{ 610, 678, 754, 837, 930, 1033, 1146, 1272, 1410, 1563, 1732, 1918, 2122, 2346, 2593, 2862, 3157, 3478, 3829, 4209, 4621, 5066, 5545, 6060, 6611, 7199, 7823, 8484, 9180, 9909, 10671, 11461, 12278, 13117, 13974, 14845, 15724, 16608, 17490, 18366, 19230, 20079, 20907, 21711, 22487, 23232, 23945, 24623, 25265, 25871, 26440, 26973, 27470, 27932, 28360, 28755, 29120, 29455, 29763, 30045, 30302, 30537, 30751, 30946, 31123, 31283, 31429, 31561, 31680, 31788, 31885, 31973, 32053, 32124, 32189, 32247, 32300, 32347, 32389, 32427, 32462, 32493, 32521, 32546, 32568, 32588, 32607, 32623, 32638, 32651, 32663, 32673, 32683, 32691, 32699, 32706, 32712, 32718, 32723, 32727, 32731, 32735, 32738, 32741, 32744, 32746, 32748, 32750, 32752, 32754, 32755, 32756, 32757, 32758, 32759, 32760, 32761, 32761, 32762, 32762, 32763, 32763, 32764, 32764, 32764, 32765, 32765, 32765, 32765 },
	{ 410, 458, 511, 570, 635, 708, 789, 879, 980, 1091, 1214, 1351, 1502, 1669, 1854, 2058, 2283, 2531, 2802, 3100, 3426, 3782, 4170, 4591, 5047, 5539, 6069, 6638, 7245, 7891, 8575, 9296, 10052, 10842, 11662, 12509, 13378, 14265, 15165, 16072, 16981, 17887, 18783, 19665, 20527, 21366, 22177, 22957, 23702, 24412, 25084, 25718, 26313, 26869, 27387, 27868, 28312, 28723, 29100, 29446, 29763, 30053, 30317, 30557, 30775, 30973, 31152, 31314, 31461, 31593, 31713, 31820, 31917, 32004, 32083, 32153, 32217, 32274, 32325, 32371, 32412, 32449, 32482, 32512, 32538, 32562, 32584, 32603, 32620, 32635, 32649, 32661, 32673, 32682, 32691, 32699, 32706, 32713, 32718, 32724, 32728, 32732, 32736, 32739, 32742, 32745, 32747, 32749, 32751, 32753, 32754, 32756, 32757, 32758, 32759, 32760, 32760, 32761, 32762, 32762, 32763, 32763, 32764, 32764, 32764, 32765, 32765, 32765, 32765 },
	{ 272, 305, 341, 382, 427, 478, 534, 597, 668, 746, 834, 931, 1040, 1161, 1295, 1444, 1609, 1792, 1995, 2218, 2465, 2737, 3036, 3364, 3723, 4115, 4541, 5004, 5505, 6046, 6626, 7247, 7909, 8610, 9351, 10128, 10940, 11783, 12654, 13547, 14458, 15381, 16311, 17241, 18166, 19079, 19975, 20850, 21697, 22514, 23297, 24044, 24751, 25419, 26047, 26634, 27180, 27687, 28156, 28588, 28985, 29349, 29682, 29985, 30261, 30512, 30739, 30945, 31131, 31298, 31450, 31586, 31709, 31819, 31919, 32008, 32087, 32159, 32223, 32281, 32332, 32379, 32420, 32457, 32490, 32519, 32546, 32569, 32590, 32609, 32626, 32641, 32655, 32667, 32678, 32687, 32696, 32703, 32710, 32716, 32722, 32727, 32731, 32735, 32738, 32741, 32744, 32747, 32749, 32751, 32752, 32754, 32755, 32757, 32758, 32759, 32760, 32760, 32761, 32762, 32762, 32763, 32763, 32764, 32764, 32764, 32765, 32765, 32765 },
	{ 179, 201, 225, 253, 284, 318, 357, 400, 448, 503, 563, 631, 707, 792, 886, 992, 1109, 1240, 1386, 1548, 1728, 1928, 2149, 2394, 2664, 2961, 3288, 3647, 4040, 4468, 4934, 5439, 5985, 6573, 7202, 7874, 8587, 9341, 10133, 10961, 11821, 12710, 13622, 14551, 15493, 16441, 17388, 18329, 19257, 20166, 21051, 21908, 22731, 23519, 24268, 24976, 25643, 26267, 26850, 27391, 27891, 28352, 28776, 29165, 29520, 29843, 30137, 30404, 30646, 30864, 31061, 31239, 31399, 31543, 31673, 31789, 31893, 31986, 32070, 32144, 32211, 32271, 32325, 32373, 32415, 32453, 32487, 32518, 32545, 32569, 32590, 32610, 32627, 32642, 32656, 32668, 32679, 32688, 32697, 32705, 32711, 32717, 32723, 32728, 32732, 32736, 32739, 32742, 32745, 32747, 32749, 32751, 32753, 32755, 32756, 32757, 32758, 32759, 32760, 32761, 32761, 32762, 32763, 32763, 32764, 32764, 32764, 32765, 32765 },
	{ 117, 131, 148, 166, 186, 210, 235, 265, 297, 334, 375, 421, 473, 531, 596, 669, 751, 842, 944, 1058, 1186, 1328, 1486, 1662, 1857, 2074, 2315, 2581, 2875, 3199, 3554, 3944, 4371, 4836, 5341, 5887, 6477, 7110, 7786, 8505, 9266, 10067, 10905, 11777, 12678, 13603, 14547, 15503, 16466, 17427, 18382, 19323, 20244, 21141, 22007, 22839, 23633, 24387, 25099, 25768, 26394, 26976, 27515, 28013, 28471, 28892, 29276, 29626, 29944, 30233, 30495, 30731, 30944, 31137, 31309, 31465, 31604, 31729, 31841, 31941, 32031, 32111, 32182, 32246, 32303, 32354, 32399, 32440, 32476, 32508, 32536, 32562, 32584, 32604, 32622, 32638, 32653, 32665, 32677, 32687, 32695, 32703, 32710, 32717, 32722, 32727, 32732, 32736, 32739, 32742, 32745, 32747, 32750, 32751, 32753, 32755, 32756, 32757, 32758, 32759, 32760, 32761, 32762, 32762, 32763, 32763, 32764, 32764, 32764 },
	{ 76, 85, 96, 108, 122, 137, 154, 173, 195, 220, 247, 278, 313, 352, 396, 446, 501, 563, 633, 711, 799, 897, 1007, 1130, 1268, 1421, 1592, 1782, 1994, 2229, 2489, 2777, 3095, 3445, 3829, 4250, 4711, 5211, 5754, 6341, 6972, 7648, 8367, 9130, 9935, 10777, 11655, 12564, 13498, 14451, 15418, 16392, 17366, 18333, 19287, 20220, 21128, 22005, 22847, 23651, 24413, 25132, 25807, 26437, 27023, 27565, 28065, 28525, 28945, 29329, 29679, 29996, 30283, 30543, 30777, 30989, 31179, 31349, 31502, 31639, 31762, 31872, 31970, 32057, 32135, 32205, 32267, 32322, 32372, 32416, 32455, 32489, 32520, 32548, 32572, 32594, 32613, 32630, 32646, 32659, 32671, 32682, 32692, 32700, 32708, 32714, 32720, 32725, 32730, 32734, 32738, 32741, 32744, 32747, 32749, 32751, 32753, 32754, 32756, 32757, 32758, 32759, 32760, 32761, 32761, 32762, 32763, 32763, 32764 },
	{ 49, 55, 62, 70, 79, 89, 100, 113, 127, 143, 161, 182, 205, 231, 260, 293, 330, 372, 419, 472, 531, 598, 672, 756, 850, 956, 1074, 1206, 1354, 1519, 1703, 1908, 2135, 2388, 2668, 2978, 3320, 3696, 4109, 4561, 5054, 5589, 6169, 6794, 7464, 8179, 8939, 9741, 10584, 11463, 12374, 13313, 14272, 15247, 16230, 17214, 18192, 19157, 20103, 21024, 21913, 22767, 23583, 24356, 25085, 25769, 26408, 27002, 27551, 28057, 28521, 28946, 29333, 29686, 30005, 30295, 30556, 30791, 31003, 31193, 31364, 31517, 31653, 31776, 31885, 31983, 32069, 32147, 32216, 32278, 32332, 32381, 32424, 32463, 32497, 32527, 32554, 32578, 32599, 32618, 32635, 32650, 32663, 32675, 32685, 32695, 32703, 32710, 32716, 32722, 32727, 32732, 32736, 32739, 32742, 32745, 32748, 32750, 32752, 32754, 32755, 32756, 32758, 32759, 32760, 32760, 32761, 32762, 32762 },
	{ 31, 35, 40, 45, 51, 57, 65, 73, 82, 93, 105, 118, 133, 150, 170, 191, 216, 243, 274, 310, 349, 393, 443, 500, 563, 634, 714, 804, 904, 1017, 1143, 1285, 1443, 1620, 1817, 2037, 2281, 2552, 2852, 3183, 3549, 3951, 4392, 4873, 5398, 5966, 6581, 7241, 7947, 8699, 9495, 10333, 11208, 12118, 13057, 14019, 14999, 15988, 16980, 17968, 18945, 19903, 20836, 21739, 22608, 23437, 24224, 24967, 25664, 26315, 26920, 27479, 27995, 28468, 28901, 29295, 29654, 29979, 30273, 30538, 30777, 30992, 31185, 31357, 31512, 31650, 31774, 31884, 31983, 32070, 32148, 32218, 32279, 32334, 32383, 32426, 32465, 32499, 32529, 32556, 32580, 32601, 32620, 32637, 32652, 32665, 32676, 32687, 32696, 32704, 32711, 32718, 32723, 32728, 32733, 32737, 32740, 32743, 32746, 32748, 32750, 32752, 32754, 32755, 32757, 32758, 32759, 32760, 32761 }
};
static short P_H1_exp5_Q15[16][129] =
{
	{ 1012, 1177, 1368, 1588, 1841, 2132, 2466, 2846, 3280, 3771, 4324, 4945, 5637, 6404, 7248, 8168, 9163, 10229, 11359, 12545, 13775, 15035, 16312, 17590, 18853, 20087, 21278, 22415, 23488, 24492, 25420, 26272, 27048, 27748, 28377, 28938, 29436, 29875, 30261, 30600, 30895, 31153, 31376, 31570, 31738, 31883, 32008, 32115, 32208, 32288, 32356, 32415, 32465, 32509, 32546, 32578, 32605, 32628, 32648, 32665, 32680, 32693, 32703, 32713, 32720, 32727, 32733, 32738, 32742, 32746, 32749, 32751, 32754, 32756, 32757, 32759, 32760, 32761, 32762, 32763, 32763, 32764, 32764, 32765, 32765, 32765, 32765, 32766, 32766, 32766, 32766, 32766, 32766, 32766, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767 },
	{ 560, 664, 787, 933, 1104, 1306, 1543, 1820, 2143, 2520, 2956, 3459, 4036, 4694, 5438, 6275, 7206, 8233, 9352, 10558, 11841, 13187, 14579, 15999, 17424, 18833, 20207, 21526, 22774, 23941, 25019, 26001, 26889, 27682, 28387, 29006, 29548, 30020, 30427, 30779, 31080, 31338, 31558, 31745, 31904, 32039, 32153, 32250, 32331, 32400, 32458, 32507, 32548, 32583, 32612, 32637, 32658, 32675, 32690, 32702, 32712, 32721, 32728, 32735, 32740, 32744, 32748, 32751, 32753, 32756, 32757, 32759, 32760, 32761, 32762, 32763, 32764, 32764, 32765, 32765, 32765, 32766, 32766, 32766, 32766, 32766, 32766, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767 },
	{ 288, 348, 421, 509, 614, 741, 893, 1076, 1294, 1554, 1863, 2230, 2663, 3171, 3764, 4451, 5240, 6140, 7153, 8282, 9523, 10867, 12300, 13804, 15353, 16921, 18479, 20000, 21458, 22832, 24106, 25271, 26321, 27256, 28079, 28798, 29419, 29953, 30408, 30795, 31121, 31396, 31627, 31820, 31981, 32115, 32227, 32320, 32397, 32461, 32514, 32558, 32594, 32624, 32649, 32669, 32686, 32700, 32712, 32722, 32730, 32736, 32741, 32746, 32750, 32753, 32755, 32757, 32759, 32760, 32761, 32762, 32763, 32764, 32764, 32765, 32765, 32766, 32766, 32766, 32766, 32766, 32766, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767 },
	{ 139, 171, 210, 258, 318, 390, 479, 588, 721, 884, 1082, 1322, 1613, 1963, 2385, 2888, 3485, 4189, 5010, 5958, 7041, 8260, 9610, 11082, 12656, 14306, 16001, 17703, 19377, 20989, 22509, 23916, 25195, 26339, 27347, 28225, 28980, 29623, 30167, 30624, 31005, 31321, 31583, 31799, 31977, 32122, 32241, 32339, 32419, 32483, 32536, 32579, 32615, 32643, 32666, 32685, 32701, 32713, 32723, 32731, 32738, 32743, 32748, 32751, 32754, 32757, 32759, 32760, 32762, 32763, 32763, 32764, 32765, 32765, 32765, 32766, 32766, 32766, 32766, 32766, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767 },
	{ 63, 79, 98, 123, 154, 192, 239, 299, 373, 465, 579, 721, 897, 1114, 1381, 1709, 2109, 2596, 3183, 3885, 4718, 5695, 6824, 8110, 9549, 11129, 12825, 14606, 16430, 18252, 20030, 21721, 23294, 24725, 26004, 27125, 28094, 28920, 29617, 30198, 30680, 31076, 31401, 31665, 31880, 32054, 32194, 32307, 32398, 32472, 32530, 32577, 32615, 32645, 32670, 32689, 32705, 32717, 32727, 32735, 32742, 32747, 32751, 32754, 32757, 32759, 32760, 32762, 32763, 32764, 32764, 32765, 32765, 32766, 32766, 32766, 32766, 32766, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767 },
	{ 27, 34, 43, 55, 70, 88, 112, 142, 180, 227, 288, 364, 460, 581, 733, 924, 1163, 1461, 1831, 2287, 2847, 3528, 4348, 5324, 6469, 7790, 9286, 10943, 12736, 14626, 16564, 18497, 20372, 22142, 23771, 25235, 26524, 27637, 28582, 29375, 30032, 30571, 31011, 31366, 31652, 31881, 32064, 32210, 32326, 32419, 32492, 32549, 32595, 32631, 32660, 32682, 32700, 32714, 32725, 32734, 32741, 32747, 32751, 32754, 32757, 32759, 32761, 32762, 32763, 32764, 32765, 32765, 32766, 32766, 32766, 32766, 32766, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767 },
	{ 11, 14, 18, 23, 30, 38, 49, 63, 81, 104, 133, 171, 219, 281, 360, 461, 589, 752, 959, 1221, 1551, 1965, 2481, 3117, 3897, 4839, 5962, 7278, 8789, 10485, 12339, 14311, 16346, 18382, 20357, 22217, 23919, 25437, 26760, 27890, 28839, 29624, 30265, 30785, 31202, 31535, 31799, 32008, 32173, 32302, 32404, 32483, 32546, 32594, 32632, 32662, 32685, 32703, 32717, 32728, 32737, 32743, 32749, 32753, 32756, 32758, 32760, 32762, 32763, 32764, 32765, 32765, 32765, 32766, 32766, 32766, 32766, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767 },
	{ 4, 6, 7, 9, 12, 16, 21, 27, 35, 45, 58, 76, 98, 127, 165, 213, 276, 357, 462, 597, 771, 993, 1278, 1639, 2095, 2668, 3380, 4256, 5316, 6581, 8058, 9743, 11615, 13633, 15741, 17871, 19951, 21917, 23718, 25322, 26714, 27896, 28881, 29688, 30342, 30866, 31282, 31611, 31869, 32070, 32227, 32350, 32444, 32518, 32575, 32619, 32652, 32679, 32699, 32714, 32727, 32736, 32743, 32748, 32753, 32756, 32759, 32760, 32762, 32763, 32764, 32765, 32765, 32766, 32766, 32766, 32766, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767 },
	{ 2, 2, 3, 4, 5, 6, 8, 11, 14, 18, 24, 32, 41, 54, 71, 93, 121, 159, 207, 271, 354, 462, 602, 784, 1020, 1323, 1711, 2205, 2829, 3608, 4570, 5737, 7127, 8745, 10578, 12595, 14740, 16944, 19128, 21216, 23145, 24872, 26374, 27650, 28710, 29575, 30273, 30827, 31265, 31608, 31874, 32081, 32240, 32363, 32458, 32530, 32586, 32629, 32661, 32686, 32705, 32720, 32731, 32739, 32746, 32751, 32755, 32758, 32760, 32762, 32763, 32764, 32765, 32765, 32766, 32766, 32766, 32766, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767 },
	{ 1, 1, 1, 1, 2, 2, 3, 4, 5, 7, 10, 13, 17, 22, 29, 38, 50, 66, 87, 115, 152, 200, 264, 347, 457, 601, 788, 1032, 1349, 1757, 2280, 2944, 3777, 4808, 6062, 7554, 9286, 11237, 13366, 15605, 17874, 20087, 22166, 24052, 25709, 27125, 28306, 29272, 30049, 30666, 31150, 31527, 31819, 32043, 32216, 32348, 32448, 32525, 32583, 32628, 32661, 32687, 32706, 32721, 32732, 32741, 32747, 32752, 32755, 32758, 32760, 32762, 32763, 32764, 32765, 32765, 32766, 32766, 32766, 32766, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767 },
	{ 0, 0, 0, 0, 1, 1, 1, 2, 2, 3, 4, 5, 6, 8, 11, 15, 20, 26, 35, 47, 62, 82, 109, 144, 192, 254, 337, 446, 590, 779, 1027, 1350, 1770, 2310, 3000, 3869, 4948, 6263, 7829, 9644, 11683, 13894, 16202, 18517, 20749, 22818, 24671, 26276, 27630, 28744, 29644, 30360, 30922, 31358, 31695, 31954, 32151, 32301, 32415, 32501, 32567, 32616, 32653, 32681, 32702, 32718, 32730, 32739, 32746, 32751, 32755, 32758, 32760, 32762, 32763, 32764, 32765, 32765, 32766, 32766, 32766, 32766, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767 },
	{ 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 3, 4, 6, 8, 10, 13, 18, 24, 32, 43, 57, 76, 102, 136, 181, 241, 321, 428, 569, 756, 1002, 1325, 1746, 2291, 2990, 3875, 4978, 6327, 7937, 9804, 11901, 14169, 16527, 18879, 21130, 23201, 25038, 26616, 27934, 29010, 29871, 30550, 31078, 31486, 31799, 32037, 32217, 32354, 32457, 32534, 32592, 32636, 32669, 32693, 32712, 32726, 32736, 32744, 32750, 32754, 32757, 32760, 32762, 32763, 32764, 32765, 32765, 32766, 32766, 32766, 32766, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767 },
	{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 3, 4, 5, 7, 9, 12, 16, 22, 29, 39, 52, 70, 94, 126, 168, 225, 302, 404, 539, 720, 958, 1273, 1686, 2223, 2914, 3795, 4898, 6252, 7876, 9765, 11891, 14194, 16589, 18975, 21253, 23342, 25187, 26764, 28074, 29137, 29983, 30646, 31160, 31554, 31854, 32082, 32254, 32383, 32480, 32552, 32607, 32647, 32678, 32701, 32717, 32730, 32739, 32746, 32752, 32756, 32758, 32761, 32762, 32763, 32764, 32765, 32766, 32766, 32766, 32766, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767 },
	{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 3, 4, 6, 8, 11, 14, 19, 26, 35, 47, 63, 85, 115, 154, 207, 279, 374, 502, 672, 899, 1199, 1594, 2111, 2781, 3638, 4717, 6050, 7657, 9539, 11668, 13986, 16406, 18825, 21141, 23265, 25142, 26744, 28072, 29147, 30000, 30667, 31181, 31574, 31873, 32098, 32268, 32395, 32490, 32561, 32614, 32653, 32682, 32704, 32720, 32732, 32741, 32748, 32753, 32756, 32759, 32761, 32763, 32764, 32765, 32765, 32766, 32766, 32766, 32766, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767 },
	{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 3, 4, 5, 7, 9, 13, 17, 23, 31, 42, 57, 77, 103, 139, 188, 253, 341, 459, 617, 827, 1108, 1479, 1966, 2600, 3417, 4452, 5739, 7303, 9149, 11254, 13566, 16000, 18451, 20811, 22988, 24919, 26571, 27942, 29053, 29934, 30621, 31150, 31555, 31861, 32091, 32264, 32393, 32489, 32561, 32614, 32654, 32683, 32705, 32721, 32733, 32742, 32748, 32753, 32757, 32759, 32761, 32763, 32764, 32765, 32765, 32766, 32766, 32766, 32766, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767 },
	{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 3, 4, 6, 8, 11, 15, 20, 27, 37, 50, 68, 92, 124, 168, 227, 306, 413, 556, 749, 1005, 1347, 1797, 2386, 3149, 4123, 5344, 6841, 8624, 10681, 12964, 15396, 17872, 20281, 22525, 24528, 26253, 27692, 28860, 29788, 30513, 31072, 31498, 31820, 32062, 32243, 32379, 32479, 32554, 32609, 32650, 32681, 32703, 32720, 32732, 32741, 32748, 32753, 32757, 32759, 32761, 32763, 32764, 32765, 32765, 32766, 32766, 32766, 32766, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767 }
};
static short P_H1_exp1_Q15[16][129] =
{
	{ 10951, 11180, 11411, 11645, 11880, 12118, 12357, 12599, 12842, 13087, 13333, 13581, 13830, 14081, 14332, 14585, 14838, 15092, 15347, 15602, 15857, 16113, 16369, 16625, 16881, 17137, 17392, 17647, 17901, 18154, 18407, 18658, 18909, 19158, 19406, 19653, 19898, 20141, 20383, 20623, 20860, 21096, 21330, 21562, 21791, 22018, 22242, 22464, 22684, 22900, 23115, 23326, 23535, 23740, 23943, 24143, 24340, 24535, 24726, 24914, 25099, 25281, 25460, 25636, 25809, 25978, 26145, 26309, 26469, 26627, 26781, 26932, 27081, 27226, 27368, 27508, 27644, 27778, 27909, 28037, 28162, 28284, 28404, 28520, 28635, 28746, 28855, 28961, 29065, 29167, 29266, 29362, 29456, 29548, 29638, 29725, 29810, 29893, 29974, 30053, 30130, 30205, 30277, 30348, 30417, 30485, 30550, 30614, 30676, 30736, 30795, 30852, 30908, 30962, 31014, 31065, 31115, 31163, 31210, 31256, 31301, 31344, 31386, 31426, 31466, 31504, 31542, 31578, 31613 },
	{ 10085, 10330, 10578, 10829, 11083, 11340, 11599, 11862, 12126, 12394, 12663, 12935, 13208, 13484, 13761, 14040, 14320, 14602, 14884, 15167, 15452, 15736, 16021, 16307, 16592, 16877, 17162, 17446, 17730, 18013, 18295, 18576, 18855, 19134, 19410, 19685, 19957, 20228, 20497, 20763, 21027, 21288, 21546, 21802, 22054, 22304, 22550, 22794, 23034, 23270, 23503, 23733, 23959, 24182, 24401, 24616, 24827, 25035, 25239, 25439, 25635, 25828, 26016, 26201, 26382, 26559, 26732, 26902, 27068, 27230, 27388, 27543, 27694, 27842, 27986, 28126, 28263, 28397, 28527, 28654, 28778, 28898, 29016, 29130, 29241, 29349, 29454, 29556, 29656, 29753, 29847, 29938, 30027, 30113, 30197, 30278, 30357, 30433, 30508, 30580, 30650, 30718, 30784, 30848, 30910, 30970, 31028, 31085, 31139, 31192, 31244, 31294, 31342, 31389, 31434, 31478, 31520, 31561, 31601, 31640, 31677, 31713, 31748, 31782, 31815, 31846, 31877, 31907, 31935 },
	{ 9172, 9427, 9687, 9950, 10218, 10489, 10764, 11043, 11325, 11611, 11900, 12191, 12486, 12784, 13084, 13386, 13690, 13997, 14305, 14615, 14925, 15237, 15550, 15863, 16177, 16491, 16805, 17118, 17431, 17744, 18055, 18365, 18673, 18980, 19285, 19588, 19889, 20187, 20483, 20776, 21066, 21352, 21636, 21916, 22192, 22465, 22733, 22998, 23259, 23515, 23768, 24016, 24259, 24498, 24733, 24963, 25189, 25410, 25626, 25838, 26045, 26247, 26445, 26638, 26827, 27011, 27190, 27366, 27536, 27702, 27864, 28022, 28175, 28325, 28470, 28611, 28748, 28881, 29010, 29136, 29258, 29376, 29491, 29602, 29710, 29815, 29916, 30014, 30109, 30201, 30291, 30377, 30460, 30541, 30619, 30695, 30768, 30839, 30907, 30973, 31037, 31099, 31159, 31216, 31272, 31326, 31377, 31428, 31476, 31523, 31568, 31611, 31653, 31694, 31733, 31770, 31807, 31842, 31876, 31908, 31940, 31970, 31999, 32028, 32055, 32081, 32106, 32131, 32154 },
	{ 8234, 8493, 8757, 9027, 9302, 9582, 9866, 10156, 10450, 10748, 11051, 11358, 11669, 11984, 12302, 12623, 12948, 13276, 13606, 13938, 14272, 14609, 14946, 15285, 15625, 15966, 16307, 16648, 16989, 17329, 17668, 18007, 18344, 18679, 19012, 19344, 19672, 19998, 20321, 20641, 20957, 21270, 21578, 21883, 22184, 22480, 22771, 23058, 23340, 23617, 23889, 24156, 24418, 24674, 24925, 25171, 25411, 25646, 25875, 26099, 26317, 26530, 26738, 26940, 27137, 27328, 27514, 27695, 27871, 28042, 28208, 28369, 28525, 28677, 28823, 28965, 29103, 29236, 29365, 29490, 29611, 29728, 29841, 29950, 30055, 30157, 30255, 30350, 30442, 30530, 30615, 30697, 30777, 30853, 30927, 30998, 31066, 31132, 31196, 31257, 31316, 31372, 31427, 31479, 31530, 31578, 31625, 31670, 31713, 31755, 31795, 31834, 31871, 31906, 31940, 31973, 32005, 32035, 32065, 32093, 32120, 32145, 32170, 32194, 32217, 32239, 32260, 32281, 32300 },
	{ 7294, 7551, 7814, 8083, 8358, 8639, 8927, 9220, 9519, 9824, 10134, 10449, 10770, 11096, 11426, 11761, 12100, 12443, 12790, 13140, 13494, 13850, 14208, 14569, 14932, 15296, 15661, 16027, 16393, 16759, 17125, 17490, 17854, 18216, 18577, 18935, 19291, 19644, 19994, 20341, 20684, 21023, 21358, 21688, 22013, 22334, 22649, 22959, 23263, 23562, 23855, 24142, 24423, 24698, 24967, 25229, 25486, 25736, 25980, 26217, 26448, 26673, 26892, 27104, 27310, 27511, 27705, 27893, 28076, 28253, 28424, 28590, 28750, 28905, 29055, 29199, 29339, 29474, 29604, 29729, 29850, 29967, 30079, 30187, 30292, 30392, 30489, 30582, 30671, 30757, 30840, 30919, 30996, 31069, 31140, 31207, 31273, 31335, 31395, 31453, 31508, 31561, 31612, 31661, 31707, 31752, 31795, 31837, 31876, 31914, 31950, 31985, 32019, 32051, 32081, 32111, 32139, 32166, 32192, 32216, 32240, 32263, 32284, 32305, 32325, 32344, 32362, 32380, 32397 },
	{ 6378, 6625, 6880, 7141, 7410, 7686, 7969, 8259, 8555, 8859, 9169, 9486, 9809, 10139, 10474, 10815, 11162, 11514, 11871, 12233, 12599, 12969, 13343, 13721, 14101, 14483, 14868, 15254, 15642, 16031, 16420, 16808, 17197, 17584, 17970, 18355, 18737, 19117, 19493, 19866, 20236, 20601, 20962, 21318, 21669, 22015, 22355, 22690, 23018, 23340, 23656, 23965, 24267, 24562, 24851, 25133, 25407, 25675, 25935, 26188, 26434, 26673, 26905, 27130, 27349, 27560, 27765, 27963, 28154, 28339, 28518, 28690, 28857, 29017, 29172, 29321, 29465, 29603, 29736, 29865, 29988, 30106, 30220, 30329, 30434, 30535, 30632, 30725, 30814, 30899, 30981, 31060, 31135, 31207, 31276, 31342, 31405, 31466, 31524, 31580, 31633, 31684, 31732, 31779, 31823, 31866, 31907, 31946, 31983, 32018, 32052, 32085, 32116, 32145, 32174, 32201, 32226, 32251, 32275, 32297, 32319, 32339, 32359, 32378, 32395, 32412, 32429, 32444, 32459 },
	{ 5507, 5740, 5980, 6228, 6484, 6748, 7019, 7299, 7586, 7881, 8184, 8495, 8813, 9138, 9471, 9811, 10157, 10511, 10871, 11236, 11608, 11985, 12367, 12754, 13146, 13541, 13939, 14341, 14745, 15151, 15558, 15967, 16376, 16785, 17194, 17601, 18007, 18411, 18813, 19212, 19607, 19998, 20385, 20768, 21145, 21517, 21883, 22243, 22597, 22944, 23284, 23617, 23943, 24261, 24572, 24875, 25170, 25458, 25738, 26009, 26273, 26530, 26778, 27019, 27252, 27477, 27695, 27905, 28108, 28305, 28494, 28676, 28851, 29020, 29183, 29339, 29490, 29634, 29773, 29906, 30034, 30156, 30274, 30386, 30494, 30598, 30697, 30792, 30882, 30969, 31052, 31132, 31207, 31280, 31349, 31416, 31479, 31539, 31597, 31652, 31705, 31755, 31803, 31848, 31892, 31933, 31973, 32011, 32047, 32081, 32114, 32145, 32175, 32203, 32230, 32256, 32281, 32304, 32326, 32347, 32368, 32387, 32405, 32423, 32439, 32455, 32470, 32484, 32498 },
	{ 4699, 4913, 5134, 5364, 5602, 5848, 6103, 6366, 6637, 6917, 7206, 7503, 7809, 8123, 8445, 8776, 9115, 9462, 9816, 10178, 10547, 10923, 11306, 11695, 12089, 12489, 12895, 13304, 13718, 14135, 14555, 14978, 15402, 15828, 16255, 16682, 17108, 17534, 17957, 18379, 18798, 19214, 19626, 20034, 20437, 20835, 21228, 21614, 21994, 22368, 22734, 23093, 23444, 23788, 24124, 24451, 24770, 25081, 25383, 25677, 25962, 26239, 26507, 26767, 27018, 27261, 27495, 27722, 27940, 28151, 28353, 28549, 28736, 28917, 29091, 29257, 29417, 29571, 29718, 29859, 29994, 30123, 30247, 30366, 30479, 30588, 30691, 30790, 30885, 30975, 31062, 31144, 31222, 31297, 31369, 31437, 31502, 31564, 31623, 31679, 31732, 31783, 31832, 31878, 31922, 31964, 32004, 32041, 32078, 32112, 32144, 32176, 32205, 32233, 32260, 32285, 32309, 32332, 32354, 32375, 32394, 32413, 32431, 32448, 32464, 32479, 32494, 32507, 32520 },
	{ 3967, 4159, 4359, 4567, 4783, 5007, 5240, 5482, 5733, 5993, 6261, 6539, 6826, 7122, 7428, 7742, 8066, 8398, 8739, 9090, 9448, 9815, 10190, 10572, 10962, 11359, 11763, 12173, 12588, 13009, 13435, 13864, 14297, 14734, 15172, 15612, 16054, 16496, 16937, 17378, 17818, 18255, 18690, 19121, 19549, 19972, 20390, 20803, 21210, 21610, 22003, 22390, 22768, 23139, 23502, 23856, 24202, 24539, 24867, 25186, 25495, 25796, 26088, 26370, 26643, 26907, 27162, 27409, 27646, 27875, 28095, 28307, 28511, 28707, 28895, 29075, 29248, 29414, 29573, 29725, 29871, 30010, 30143, 30271, 30392, 30508, 30619, 30725, 30826, 30922, 31014, 31101, 31185, 31264, 31339, 31411, 31480, 31545, 31607, 31666, 31722, 31775, 31825, 31873, 31919, 31963, 32004, 32043, 32080, 32116, 32149, 32181, 32211, 32240, 32267, 32293, 32318, 32341, 32363, 32384, 32404, 32423, 32441, 32458, 32474, 32489, 32504, 32517, 32530 },
	{ 3316, 3485, 3662, 3846, 4039, 4240, 4449, 4666, 4893, 5129, 5373, 5627, 5891, 6164, 6447, 6739, 7041, 7353, 7674, 8005, 8346, 8696, 9055, 9423, 9800, 10185, 10579, 10981, 11390, 11805, 12228, 12656, 13090, 13529, 13972, 14418, 14868, 15320, 15773, 16228, 16682, 17137, 17590, 18041, 18490, 18935, 19377, 19814, 20246, 20673, 21093, 21507, 21914, 22313, 22704, 23087, 23461, 23826, 24183, 24530, 24867, 25195, 25514, 25822, 26121, 26411, 26690, 26960, 27221, 27472, 27714, 27946, 28170, 28385, 28592, 28790, 28980, 29162, 29336, 29503, 29662, 29815, 29961, 30100, 30233, 30359, 30480, 30596, 30706, 30810, 30910, 31005, 31095, 31181, 31263, 31340, 31414, 31484, 31551, 31614, 31675, 31732, 31786, 31837, 31886, 31933, 31977, 32018, 32058, 32095, 32131, 32165, 32197, 32227, 32256, 32283, 32309, 32333, 32356, 32378, 32399, 32419, 32437, 32455, 32472, 32487, 32502, 32516, 32530 },
	{ 2748, 2895, 3048, 3209, 3377, 3553, 3738, 3930, 4131, 4340, 4559, 4786, 5023, 5270, 5526, 5792, 6067, 6353, 6649, 6956, 7272, 7599, 7935, 8282, 8639, 9005, 9381, 9766, 10159, 10562, 10973, 11391, 11817, 12250, 12688, 13133, 13582, 14036, 14494, 14955, 15417, 15882, 16347, 16813, 17277, 17740, 18201, 18660, 19114, 19564, 20010, 20449, 20883, 21310, 21730, 22142, 22545, 22941, 23327, 23704, 24072, 24430, 24778, 25116, 25445, 25763, 26070, 26368, 26656, 26933, 27201, 27458, 27706, 27945, 28174, 28393, 28604, 28806, 29000, 29185, 29363, 29532, 29694, 29849, 29996, 30137, 30271, 30399, 30521, 30637, 30747, 30852, 30952, 31047, 31137, 31223, 31305, 31382, 31455, 31525, 31591, 31654, 31714, 31770, 31823, 31874, 31922, 31968, 32011, 32052, 32090, 32127, 32162, 32195, 32226, 32255, 32283, 32309, 32334, 32358, 32380, 32401, 32421, 32440, 32458, 32475, 32491, 32506, 32520 },
	{ 2261, 2386, 2517, 2655, 2800, 2952, 3111, 3278, 3453, 3636, 3827, 4027, 4237, 4455, 4682, 4920, 5167, 5424, 5691, 5968, 6256, 6554, 6863, 7183, 7513, 7853, 8204, 8565, 8937, 9318, 9709, 10109, 10518, 10936, 11362, 11795, 12236, 12683, 13136, 13594, 14056, 14523, 14993, 15464, 15938, 16412, 16886, 17360, 17831, 18301, 18767, 19229, 19686, 20139, 20585, 21025, 21457, 21882, 22299, 22707, 23106, 23496, 23876, 24246, 24606, 24956, 25295, 25624, 25942, 26249, 26546, 26833, 27109, 27375, 27631, 27877, 28113, 28339, 28556, 28764, 28963, 29154, 29336, 29509, 29675, 29834, 29985, 30129, 30266, 30396, 30521, 30639, 30751, 30858, 30959, 31056, 31147, 31234, 31316, 31395, 31469, 31539, 31606, 31669, 31729, 31785, 31839, 31890, 31938, 31983, 32027, 32067, 32106, 32142, 32177, 32209, 32240, 32270, 32297, 32323, 32348, 32371, 32393, 32414, 32434, 32452, 32470, 32486, 32502 },
	{ 1849, 1954, 2065, 2181, 2304, 2433, 2569, 2712, 2862, 3019, 3184, 3357, 3538, 3728, 3927, 4135, 4352, 4579, 4815, 5062, 5318, 5586, 5863, 6152, 6451, 6761, 7082, 7414, 7756, 8110, 8474, 8848, 9233, 9628, 10032, 10446, 10869, 11300, 11739, 12186, 12639, 13098, 13563, 14033, 14506, 14983, 15462, 15943, 16425, 16906, 17386, 17865, 18342, 18814, 19283, 19747, 20206, 20658, 21103, 21541, 21971, 22392, 22804, 23207, 23600, 23983, 24356, 24718, 25070, 25411, 25741, 26060, 26368, 26665, 26952, 27228, 27493, 27748, 27993, 28228, 28453, 28668, 28874, 29072, 29260, 29440, 29612, 29775, 29931, 30080, 30221, 30356, 30484, 30606, 30722, 30831, 30936, 31035, 31129, 31218, 31302, 31382, 31458, 31530, 31598, 31663, 31724, 31782, 31836, 31888, 31937, 31983, 32027, 32068, 32107, 32144, 32179, 32212, 32243, 32273, 32301, 32327, 32352, 32375, 32397, 32418, 32438, 32456, 32474 },
	{ 1503, 1591, 1684, 1781, 1884, 1993, 2107, 2227, 2354, 2488, 2628, 2775, 2930, 3093, 3264, 3443, 3631, 3827, 4033, 4248, 4473, 4708, 4953, 5209, 5475, 5752, 6039, 6338, 6648, 6969, 7301, 7644, 7999, 8364, 8740, 9127, 9524, 9931, 10348, 10773, 11208, 11651, 12102, 12559, 13023, 13493, 13968, 14447, 14929, 15414, 15901, 16388, 16875, 17362, 17847, 18329, 18808, 19282, 19752, 20216, 20674, 21124, 21567, 22001, 22427, 22844, 23251, 23647, 24034, 24410, 24775, 25129, 25472, 25804, 26125, 26434, 26733, 27020, 27297, 27563, 27818, 28063, 28298, 28523, 28738, 28943, 29140, 29327, 29506, 29677, 29840, 29994, 30142, 30282, 30415, 30542, 30662, 30776, 30885, 30988, 31085, 31178, 31265, 31348, 31427, 31501, 31572, 31639, 31702, 31761, 31818, 31871, 31921, 31969, 32014, 32057, 32097, 32135, 32171, 32205, 32237, 32267, 32295, 32322, 32348, 32371, 32394, 32415, 32435 },
	{ 1217, 1289, 1366, 1447, 1532, 1623, 1718, 1818, 1924, 2036, 2154, 2278, 2409, 2547, 2691, 2844, 3004, 3172, 3348, 3533, 3727, 3930, 4143, 4366, 4598, 4841, 5094, 5358, 5633, 5919, 6216, 6524, 6844, 7175, 7518, 7872, 8237, 8613, 9000, 9398, 9806, 10224, 10651, 11088, 11533, 11986, 12446, 12913, 13387, 13865, 14348, 14834, 15324, 15815, 16307, 16799, 17291, 17781, 18268, 18752, 19232, 19707, 20176, 20639, 21094, 21542, 21981, 22411, 22832, 23243, 23644, 24035, 24414, 24783, 25140, 25486, 25821, 26144, 26456, 26757, 27046, 27324, 27592, 27848, 28094, 28330, 28556, 28771, 28977, 29174, 29362, 29541, 29712, 29874, 30029, 30176, 30316, 30449, 30575, 30695, 30808, 30916, 31018, 31115, 31207, 31294, 31376, 31454, 31528, 31598, 31663, 31726, 31785, 31840, 31893, 31943, 31990, 32034, 32076, 32115, 32153, 32188, 32221, 32252, 32282, 32310, 32336, 32361, 32384 },
	{ 982, 1041, 1104, 1170, 1241, 1315, 1394, 1477, 1565, 1658, 1756, 1859, 1968, 2083, 2205, 2332, 2467, 2609, 2758, 2915, 3080, 3253, 3435, 3626, 3826, 4036, 4255, 4484, 4724, 4974, 5235, 5507, 5791, 6085, 6391, 6708, 7037, 7378, 7730, 8094, 8468, 8854, 9251, 9659, 10077, 10504, 10941, 11387, 11841, 12303, 12772, 13247, 13728, 14213, 14703, 15195, 15690, 16186, 16682, 17178, 17672, 18164, 18653, 19137, 19617, 20091, 20558, 21019, 21471, 21915, 22350, 22776, 23192, 23597, 23992, 24376, 24748, 25109, 25459, 25797, 26124, 26439, 26743, 27035, 27316, 27586, 27844, 28093, 28330, 28557, 28775, 28982, 29180, 29369, 29550, 29721, 29884, 30040, 30187, 30328, 30461, 30588, 30708, 30822, 30930, 31032, 31129, 31220, 31307, 31390, 31467, 31541, 31610, 31676, 31738, 31797, 31852, 31905, 31954, 32001, 32045, 32086, 32126, 32163, 32198, 32230, 32262, 32291, 32318 }
};

/**
W_initial array converted to Q21
*/
static short W_initial_fx16_NB[Nadf_NB] =
{
	-42, 63, -56, 45, -92, 70, -187, 151, -382, 630, -1659, -26159, 10736, 5478, 6681, 3344, 3594, 2833, 1384, 314, 795, -171, -265, -918, -442, -950, -746, -1044, -654, -899, -643, -836, -159, -896, -177, -616, -10, -460, -50, -175, 7, -198, -24, -27, 25, -177, 151, -197, 305, -191, 109, -86, 85, -133, 85, -82, 118, -159, 103, -147, 89, 30, 26, -74
};

//Nadf_WB
static short W_initial_fx16_WB[256] =
{
	148, -292, 441, -372, 230, -715, 777, -227, 809, 14521, -15374, -5250, 1925, 4148, -6860, -1716, 4530, 1864, -1777, 3040, 3145, 714, -987, -1496, 5211, -5831, 879, -864, 173, -460, -1311, -566, 1425, -950, 1318, -106, 44, 2714, -2226, 555, -94, 845, -510, -1451, 1336, 1371, -4272, 1981, -472, -646, 204, 2737, -2855, 563, 707, 1375, -662, -3962, 2156, 1382, -1640, 956, 871, 5, 926, -2333, 1009, 352, -539, -918, 602, 840, -944, -829, 1321, -268, -556, 121, 1051, -812, 165, 427, -74, -539, 119, -312, 81, 88, -173, -496, 870, -540, -254, 196, 409, -469, 1130, -766, -632, 260, 260, -576, -460, 149, 581, -199, -442, 579, 162, -193, -115, -20, 20, -253, 21, 144, -658, 493, -195, 119, -143, 259, -352, -162, 613, -86, -910, 555, -199, -179, -253, 417, -319, 3, -57, 88, 142, 108, -454, 284, -36, 92, -489, -140, 215, -199, 88, 113, -527, 303, -64, -182, -58, 235, -46, -1, 112, -24, 82, 79, -266, -200, 448, -426, -455, 303, 415, -288, -435, 48, 589, -466, -292, 580, 111, -323, 370, 303, -178, -158, -33, 186, -35, -228, -88, -121, 500, -355, 8, 354, 180, -397, 379, -311, 199, 433, -31, -63, -205, -27, 490, 177, -451, -15, 418, -97, 85, -190, 404, -230, 38, 206, -99, 478, -75, 104, 256, 335, -299, -54, 186, 147, -86, -167, 499, -198, -10, 41, 87, -5, 145, 149, 116, 303, 113, 21, -64, -106, 8, 243, -517, 581, -261, 548, -300, 373, -351, 715, -281, 217, -180, 412, -118, -134, -204, 355
};//Q17

//FFT_LEN_WB / 2
static short Wregres_ini_WB[256] =
{
	0, 23, 23, 26, 30, 31, 26, 20, 15, 11, 9, 7, 10, 5, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 16, 22, 9, 9, 10, 9, 12, 10, 10, 13, 11, 15, 12, 10, 8, 6, 5, 7, 10, 18, 16, 13, 25, 23, 13, 9, 11, 11, 11, 15, 17, 16, 11, 11, 5, 4, 7, 6, 6, 7, 7, 7, 10, 6, 5, 6, 5, 5, 10, 4, 4, 10, 8, 7, 6, 7, 9, 6, 5, 7, 5, 7, 9, 6, 6, 5, 6, 10, 9, 8, 13, 10, 14, 15, 26, 25, 20, 10, 14, 21, 21, 23, 51, 111, 295, 88, 74, 88, 69, 62, 74, 49, 43, 79, 164, 168, 230, 308, 338, 282, 247, 208, 256, 537, 526, 432, 459, 611, 548, 490, 253, 194, 138, 195, 335, 328, 324, 350, 473, 421, 300, 499, 275, 390, 352, 273, 187, 108, 153, 314, 243, 242, 168, 142, 163, 71, 78, 120, 106, 141, 74, 60, 121, 110, 79, 103, 56, 71, 73, 77, 89, 78, 76, 71, 51, 71, 65, 179, 103, 155, 109, 92, 68, 68, 59, 61, 69, 52, 39, 45, 59, 64, 54, 57, 43, 39, 31, 51, 39, 45, 56, 48, 50, 46, 42, 60, 81, 92, 83, 97, 108, 174, 166, 220, 229, 227, 390, 225, 427, 306, 328, 442, 329, 360, 348, 346, 278, 356, 242, 247, 341, 259, 379, 354, 381, 391, 581, 520, 384, 431, 393, 356, 398, 361, 426, 403, 189, 51, 95, 61
};//Q10

//Q17
static short Gain_Echo_PSD_HF_WB[NUM_CHAN_WB] =
{
	500,  //	63	Hz
	500,  //	94	Hz
	500,  //	125	Hz
	500,  //	188	Hz
	200,   //	250	Hz
	200,   //	344	Hz
	200,   //	438	Hz
	200,  //	531	Hz
	200,  //	656	Hz
	200,  //	781	Hz
	2000,  //	906	Hz
	2000,  //	1031Hz
	2000,  //	1188Hz
	2000,  //	1344Hz
	2000,  //	1500Hz
	2000,  //	1656Hz
	4000,  //	1813Hz
	4000,  //	2000Hz
	4000,  //	2188Hz
	4000,  //	2375Hz
	4000,  //	2563Hz
	4000,  //	2750Hz
	4000,  //	2938Hz
	31000,  //	3125Hz
	31000,  //	3313Hz
	31000,  //	3531Hz
	31000,  //	3750Hz
	31000,  //	3969Hz
	31000,  //	4219Hz
	31000,  //	4469Hz
	18000,  //	4719Hz
	18000,  //	5031Hz
	18000,  //	5344Hz
	18000,  //	5719Hz
	18000,  //	6094Hz
	5000,  //	6469Hz
	5000,  //	6844Hz
	5000,  //	7219Hz
	5000,  //	7594Hz
	5000,  //	7969Hz
};

// Fixed a priori SNR 0~15dB for each band
static short FixedXi[NUM_CHAN_WB][3] =
{
	{ 2, 5, 5 },//	31	~	31
	{ 2, 5, 5 },//	63	~	63
	{ 2, 5, 5 },//	94	~	94
	{ 2, 5, 5 },//	125	~	156
	{ 2, 5, 5 },//	188	~	219
	{ 2, 5, 5 },//	250	~	313
	{ 2, 5, 5 },//	344	~	406
	{ 2, 5, 5 },//	438	~	500
	{ 2, 5, 5 },//	531	~	625
	{ 2, 5, 5 },//	656	~	750
	{ 2, 5, 5 },//	781	~	875
	{ 2, 5, 5 },//	906	~	1000
	{ 2, 5, 5 },//	1031	~	1156
	{ 2, 5, 5 },//	1188	~	1313
	{ 2, 5, 5 },//	1344	~	1469
	{ 2, 5, 5 },//	1500	~	1625
	{ 2, 5, 5 },//	1656	~	1781
	{ 2, 5, 5 },//	1813	~	1969
	{ 2, 5, 5 },//	2000	~	2156
	{ 1, 1, 1 },//	2188	~	2344
	{ 1, 1, 1 },//	2375	~	2531
	{ 1, 1, 1 },//	2563	~	2719
	{ 1, 1, 1 },//	2750	~	2906
	{ 1, 1, 1 },//	2938	~	3094
	{ 1, 1, 1 },//	3125	~	3281
	{ 1, 1, 1 },//	3313	~	3500
	{ 1, 1, 1 },//	3531	~	3719
	{ 1, 1, 1 },//	3750	~	3938
	{ 1, 1, 1 },//	3969	~	4188
	{ 1, 1, 1 },//	4219	~	4438
	{ 1, 1, 1 },//	4469	~	4688
	{ 1, 1, 1 },//	4719	~	5000
	{ 1, 1, 1 },//	5031	~	5313
	{ 2, 5, 5 },//	5344	~	5688
	{ 2, 5, 5 },//	5719	~	6063
	{ 2, 5, 5 },//	6094	~	6438
	{ 2, 5, 5 },//	6469	~	6813
	{ 2, 5, 5 },//	6844	~	7188
	{ 2, 5, 5 },//	7219	~	7563
	{ 2, 5, 5 },//	7594	~	7969
};
#endif

#endif
#else
#if 0
typedef struct Postfilter_buffer_struct
{
	int i;
}PF_buffer;
#endif
#endif